Java商品树形图商品数量_67-JT项目05(商品分类树结构显示)

完成商品分类名称展现

业务分析

说明:当用户展现商品列表信息时,里边的商品类目应该展现的是具体商品分类的名称,而不是ID.所以需要再次发起ajax请求根据id获取商品分类的名称.

be0152d224a0785e4aa4907c1ab04338.png

页面JS分析

d5a0b47b55304aa08a2397e89dd74a23.png

编辑ItemCatController

package com.jt.controller;

@RestController

@RequestMapping("/item/cat")

public class ItemCatController {

@Autowired

private ItemCatService itemCatService;

/**

* url:"/item/cat/queryItemName", //按照业务需要自己定义

请求参数:{itemCatId:val}, //请求参数 k-v结构

返回值结果 返回商品分类名称

* 基于商品分类id查询商品分类名称

* @param itemCatId

* @return

*/

@RequestMapping("/queryItemName")

public String findItemCatNameById(Long itemCatId) {

ItemCat itemCat=itemCatService.findItemCatById(itemCatId);

return itemCat.getName();

}

}

编辑ItemCatService

@Service

public class ItemCatServiceImpl implements ItemCatService {

@Autowired

private ItemCatMapper itemCatMapper;

@Override

public ItemCat findItemCatById(Long itemCatId) {

//利用MP机制查询数据库数据.

return itemCatMapper.selectById(itemCatId);

}

}

编辑ItemCatMapper

package com.jt.mapper;

public interface ItemCatMapper extends BaseMapper {

//可以不写

@Select("select * from tb_item_cat where id =#{itemCatId}")

ItemCat selectById(Long itemCatId);

}

页面效果展现

30e81c1f808af1d7d7bfccc18374d358.png

关于ajax嵌套问题

说明:将ajax请求改为异步操作时,导致页面中的数据显示不正常.

f0035b7bb1d040135c83abb19da63737.png

改为异步之后的效果

aae57083553a47efeae0f6e5394ef913.png

原因如下:

124fb1ff173a1f8dd5454addb9fad15c.png

原因:由于ajax嵌套执行时,可能会导致内层ajax数据没有办法刷新.所以一般的解决的方案就是将异步改为同步调用.按照如下的路线执行,即可

32aaa41ace679f22eec5151e997af5af.png

完成商品分类树形结构展现

EasyUI中弹出框效果

$(function(){

$("#btn1").bind("click",function(){

//选择指定位置进行弹出框操作 .window EasyUI提供的操作

$("#win1").window({

title:"弹出框",

width:400,

height:400,

modal:true //这是一个模式窗口,只能点击弹出框,不允许点击别处

})

})

$("#btn3").click(function(){

alert("关闭");

$("#win2").window("close");

});

/*定义退出消息框 */

$("#btn4").click(function(){

//消息确认框

$.messager.confirm('退出','你确定要退出吗',function(r){

if (r){

alert("确认退出");

}else{

alert("哈哈哈 你手残点错了!!!!!")

}

});

})

/*定义消息提示框 */

$.messager.show({

title:'My Title',

msg:'郑哥你都胖成一个球了,圆的',

timeout:5000,

height:200,

width:300,

showType:'slide'

});

})

Easy-弹出窗口

搜索

我是一个窗口

关闭

商品分类弹出框效果展现

说明:通过框架的.window事件进行弹框展示

9d9f052d37b4d92f1be116022e836949.png

商品分类目录数据结构分析

说明:一般电商网站的商品分类信息,都是3级标题.

划分: 1级标题-2级标题-3级标题 标题是有所属关系的.

/*1.查询一级商品分类信息*/

SELECT * FROM tb_item_cat WHERE parent_id = 0

/*2.查询二级商品分类信息*/

SELECT * FROM tb_item_cat WHERE parent_id = 1

/*3.查询三级商品分类信息*/

SELECT * FROM tb_item_cat WHERE parent_id = 7

EasyUI中树形结构说明

树形结构页面JS

$("#tree").tree({

url:"tree.json",//加载远程JSON数据,可以是任何的路径

method:"get",//请求方式 POST

animate:true,//表示显示折叠端口动画效果

checkbox:true,//表述复选框

lines:false,//表示显示连接线

dnd:true,//是否拖拽

onClick:function(node){//添加点击事件

//控制台

console.info(node);

}

});

树形JSON串数据结构类型

说明:根据分析tree.json 得到的结果如下

[

{"id":"3",

"text":"吃鸡游戏",

"state":"closed/open"

}

]

#其中的id text state是框架定义的key值,必须按照其值进行传值,构建vo对象的时候需要按照这三个值

树形结构的VO对象-EasyUITree

package com.jt.vo;

@Data

@Accessors(chain = true)

@NoArgsConstructor

@AllArgsConstructor

public class EasyUITree implements Serializable{

private static final long serialVersionUID = 1L;

//如果对象涉及到网络传输 就必须序列号和反序列化.

//{"id":"3","text":"吃鸡游戏","state":"closed/open"}

private Long id;//数据库中的类型是Long

private String text;//定义节点名称

private String state;//控制节点打开/关闭

}

树形结构展现商品分类信息实现

页面JS展示

2d30af43f54ee910789110911d2efe47.png

编辑ItemCatController

/**

* 业务需求: 查询一级商品分类信息

* Sql语句: SELECT * FROM tb_item_cat WHERE parent_id = 0

* url地址: /item/cat/list

* 返回值: List

*/

@RequestMapping("/list")

public List findItemCatList(){

Long parentId = 0L; //根据parentId=0 查询一级商品分类信息

return itemCatService.findItemCatListByParentId(parentId);

}

编辑ItemCatService

/**思路: 先将所有的商品分类信息查询出来,存到一个list集合中,

* 然后创建一个新的list,类型为EasyUITree,

* 用来封装需要的信息(id ,text(name),state,),然后返回该list

* 据接口添加实现类的方法

* 业务思路:

* 1.用户传递的数据parentId

* 2.可以查询List数据库对象信息.

* 3.动态的将ItemCat对象转化为EasyUITree对象

* 3.但是返回值要求 返回List

*/

public List findItemCatListByParentId(Long parentId){

QueryWrapper queryWrapper = new QueryWrapper<>();

queryWrapper.eq("parent_id",parentId);

List itemCatList = itemCatMapper.selectList(queryWrapper);

List treeList = new ArrayList<>(); //先准备一个空集合.

//需要将数据一个一个的格式转化.

for(ItemCat itemcat :itemCatList){

Long id = itemcat.getId();//获取ID

String text = itemcat.getName();//获取文本

//如果是父级,则默认应该处于关闭状态 closed, 如果不是父级 则应该处于打开状态. open

String state = itemcat.getIsParent()?"closed":"open";

//利用构造方法 为VO对象赋值 至此已经实现了数据的转化

EasyUITree tree = new EasyUITree(id,text,state);

treeList.add(tree);

}

//用户需要返回List

return treeList;

}

页面展现情况

3f69275487e1d3828b6b915438b01168.png

树形控件的加载规则--异步树加载

树控件读取URL。子节点的加载依赖于父节点的状态。当展开一个封闭的节点,如果节点没有加载子节点,它将会把节点id的值作为http请求参数并命名为’id’,通过URL发送到服务器上面检索子节点。

前提条件: 1.这棵树必须初始化完成.

2.当点击节点按钮时,才会发起id的请求

当点击查询子级目录时,会传递当前节点的ID.

8f95cbdef188987c224be887bd81f15d.png

动态获取商品分类的ID

/**

* 实现异步树加载: id: xxxx

* 说明: 当展开一个封闭的节点,才会发起id的参数请求.前提条件是树必须先初始化.

* 也就是说应该先展现一级商品分类信息.完成树的初始化

* 判断依据: id是否为null.如果为null则表示第一 次查询需要初始化ID 查询一 级商品分类目录

* @param id

* @return

*/

@RequestMapping("/list")

public List findEasyUITree(Long id){

Long parentId =id==null?0l:id;//根据parentId=0,查询一级商品分类的信息

List trees =itemCatService.findEasyUITree( parentId);

return trees;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值