栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

项目实现-2

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

项目实现-2

1.实现3级菜单查询 1.1创建实体层pojo存放Java对象
package com.jt.pojo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.List;

@Data
@Accessors(chain = true)
@TableName("item_cat")
public class ItemCat extends basePojo{

    private Integer id;
    public Integer parentId;
    private String name;        //分类名称
    private Boolean status;     //分类状态 0 停用 1 正常
    private Integer level;      //商品分类等级  1 2 3
    @TableField(exist = false)
    //用于存放2.3级菜单
    private List children;

}
1.2创建持久层接口实现baseMapper方便使用MP
package com.jt.mapper;

import com.baomidou.mybatisplus.core.mapper.baseMapper;
import com.jt.pojo.ItemCat;

public interface ItemCatMapper extends baseMapper {
}
1.3创建业务层Service
package com.jt.service;

import com.jt.pojo.ItemCat;

import java.util.List;

public interface ItemCatService {
    List findAll();


    List findItemCatList(Integer level);
}
1.4创建接口实现类实现具体业务逻辑
package com.jt.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jt.mapper.ItemCatMapper;
import com.jt.pojo.ItemCat;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class ItemCatServiceImpl implements ItemCatService{
    @Autowired
    private ItemCatMapper itemCatMapper;

    @Override
    public List findAll() {
        return itemCatMapper.selectList(null);
    }

    
    @Override
    public List findItemCatList(Integer level) {
        //将所有数据封装在集合中
        Map> map = map();
        //如果level=1 只获取一级.
        if(level==1) return map.get(0);
        //如果level=2 获取一级,一级嵌套二级
        if (level==2)return getTwoList(map);
        //如果level=3 获取一级,一级嵌套二级,二级嵌套三级.
        List list = getThreeList(map);
        return list;
    }
    
    
    private List getThreeList(Map> map) {

        //获取一级和二级菜单
        List twoList = getTwoList(map);
        //遍历一级菜单
        for (ItemCat itemCat : twoList) {
            //获取一级菜单中有二级的菜单
            List children = itemCat.getChildren();
            //判断有没有二级没有的话需要退出本次循环进行下一次循环
            if(children.size()==0||children==null){
                continue;
            }
            //遍历二级菜单
            for (ItemCat child : children) {
                int parentId = child.getId();
                //获取3级菜单
                List threeList = map.get(parentId);
                //将3级菜单封装在二级中
                child.setChildren(threeList);
            }
        }
        return twoList;

    }

    private List getTwoList(Map> map) {
        //获取一级
        List itemCatList = map.get(0);
        //遍历一级
        for (ItemCat itemCat : itemCatList) {
            //获取一级菜单的ID
            int Id = itemCat.getId();
            //查询二级
            List itemCatList2 = map.get(Id);
            //将二级封装在一级菜单的集合中
            itemCat.setChildren(itemCatList2);
        }
        //返回一级
        return itemCatList;
    }

    //获取整张表的数据将其封装在集合中
    private Map> map() {
        //创建封装容器
        Map> map = new HashMap<>();
        //获取所有数据
        List itemCatList = itemCatMapper.selectList(null);
        //遍历数据
        for (ItemCat itemCat : itemCatList) {
            //获取parentId
            int parentId= itemCat.getParentId();
            //判断parentId是否已经存在集合中,如果存在,将其追加在集合后面
            if(map.containsKey(parentId)){

                map.get(parentId).add(itemCat);
               //如果不存在需要创建一个集合存放 
            }else {
                //创建集合
                ArrayList childrenList = new ArrayList<>();
                //将数据存放
                childrenList.add(itemCat);
                //将ID和集合放入Map中
                map.put(parentId,childrenList);
            }
        }
        //返回具体数据
      return map;
    }


}

1.5创建ItemCatController类
package com.jt.controller;

import com.jt.pojo.ItemCat;
import com.jt.service.ItemCatService;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin
@RequestMapping("/itemCat")
public class ItemCatController {


    @Autowired
    private ItemCatService itemCatService;
    @GetMapping("/findAll")
    public List findAll(){
        return itemCatService.findAll();
    }

    
    @GetMapping("/findItemCatList/{level}")
    public SysResult findItemCatList(@PathVariable Integer level){

        //使用List集合接收参数
        List itemCatList = itemCatService.findItemCatList(level);
        return SysResult.success(itemCatList);
    }
}
1.6实现效果

 2.实现商品状态的修改

2.1在ItemCatController类中创建修改状态的控制层

    @PutMapping("/status/{id}/{status}")
    public SysResult updateStatus(ItemCat itemCat){

        itemCatService.updateStatus(itemCat);
        return SysResult.success();
    }

2.2在ItemCatServiceImpl实现类中实现具体业务

@Override
    @Transactional //事务控制
    public void updateStatus(ItemCat itemCat) {

        itemCatMapper.updateById(itemCat);
    }
3.实现商品的新增

3.1在ItemCatController类中控制层

    @PostMapping("/saveItemCat")
    public SysResult saveItemCat(@RequestBody ItemCat itemCat){

        itemCatService.saveItemCat(itemCat);
        return SysResult.success();
    }

3.2在ItemCatServiceImpl实现类中实现具体业务

@Override
    @Transactional
    public void saveItemCat(ItemCat itemCat) {
        itemCat.setStatus(true) ;
        itemCatMapper.insert(itemCat);
    }
4.实现商品分类的修改

4.1在ItemCatController类中控制层

    @PutMapping("/updateItemCat")
    public SysResult updateItemCat(@RequestBody ItemCat itemCat){

        itemCatService.updateItemCat(itemCat);
        return SysResult.success();
    }

4.2在ItemCatServiceImpl实现类中实现具体业务

@Override
    @Transactional
    public void updateItemCat(ItemCat itemCat) {

        itemCatMapper.updateById(itemCat);
    }
5.删除菜单

5.1在ItemCatController类中控制层

 
    @DeleteMapping("/deleteItemCat")
    public SysResult deleteItemCats(ItemCat itemCat){

        itemCatService.deleteItemCats(itemCat);
        return SysResult.success();
    }

5.2在ItemCatServiceImpl实现类中实现具体业务

    @Override
    @Transactional
    public void deleteItemCats(ItemCat itemCat) {
        int level = itemCat.getLevel();
        if(level == 3){
            //表示需要删除的数据是三级菜单,可以直接删除
            itemCatMapper.deleteById(itemCat.getId());
        }

        if(level == 2){
            QueryWrapper queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("parent_id",itemCat.getId())
                        .or()
                        .eq("id",itemCat.getId());
            itemCatMapper.delete(queryWrapper);
        }

        if(level == 1){
            //1.必须获取二级ID
            QueryWrapper queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("parent_id",itemCat.getId());
            //2获取结果的第一列字段(主键)  二级Id
            List twoIdsList = itemCatMapper.selectObjs(queryWrapper);

            //3.删除三级的数据
            queryWrapper.clear();
            //删除parent_id中包含二级Id的数据,实则删除的是三级数据
            queryWrapper.in(twoIdsList.size()>0,"parent_id",twoIdsList)
                        .or()
                        //删除parent_id 等于一级ID的,实则删除的是二级数据
                        .eq("parent_id",itemCat.getId())
                        .or()
                        //删除id=一级Id  则删除一级数据.
                        .eq("id",itemCat.getId() );
            itemCatMapper.delete(queryWrapper);
        }
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/287683.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号