diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/controller/CvsGoodsController.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/controller/CvsGoodsController.java new file mode 100644 index 000000000..32a4560b0 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/controller/CvsGoodsController.java @@ -0,0 +1,62 @@ +package com.fuint.business.convenienceSore.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fuint.business.convenienceSore.entity.CvsGoods; +import com.fuint.business.convenienceSore.service.CvsGoodsService; +import com.fuint.business.convenienceSore.vo.CvsGoodsVo; +import com.fuint.framework.web.BaseController; +import com.fuint.framework.web.ResponseObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @author :admin + * @date : 2023/10/16 + * 便利店商品管理 + */ +@RestController +@RequestMapping("/business/cvsGoods") +public class CvsGoodsController extends BaseController { + + @Autowired + private CvsGoodsService cvsGoodsService; + + /**新增商品类别*/ + @PostMapping("/addCvsGoods") + public ResponseObject insertCvsGoods( @RequestBody CvsGoods goods){ + int i = cvsGoodsService.insertCvsGoods(goods); + if(i == -1){ + return getFailureResult("新增失败,数据已存在"); + }else { + return getSuccessResult(i); + } + } + + /**分页查询*/ + @PostMapping("/selectTree") + private ResponseObject selectTree(@RequestBody CvsGoods goods){ + Page page =new Page<>(goods.getPageNum(),goods.getPageSize()); + IPage list = cvsGoodsService.selectTree(page,goods); + return getSuccessResult(list); + } + + //查询一级菜单 + @PostMapping("/list") + public ResponseObject list(CvsGoods goods) + { + List list = cvsGoodsService.selectCvsGoodsList(goods); + return getSuccessResult(list); + } + + //根据id查询一级菜单 + @GetMapping("/{id}") + public ResponseObject selectParentById(@PathVariable Integer id) + { + CvsGoods cvsGoods = cvsGoodsService.selectParentById(id); + return getSuccessResult(cvsGoods); + } + + +} diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/entity/CvsGoods.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/entity/CvsGoods.java new file mode 100644 index 000000000..1469355f3 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/entity/CvsGoods.java @@ -0,0 +1,44 @@ +package com.fuint.business.convenienceSore.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fuint.framework.entity.BaseEntity; +import lombok.Data; + +/** + * @author :admin + * @date : 2023/10/16 + * 便利店商品分类表 + */ +@Data +@TableName("cvs_goods") +public class CvsGoods extends BaseEntity { + + //主键 + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + //父分类id + private Integer pid; + + //编码 + private String code; + + //商品分类 + private String categoryName; + + //商品排序 + private Integer sorted; + + //商品状态 + private String status; + + @TableField(exist = false) + private Integer pageNum; + + @TableField(exist = false) + private Integer pageSize; + +} diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/mapper/CvsGoodsMapper.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/mapper/CvsGoodsMapper.java new file mode 100644 index 000000000..c13057c7b --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/mapper/CvsGoodsMapper.java @@ -0,0 +1,30 @@ +package com.fuint.business.convenienceSore.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fuint.business.convenienceSore.entity.CvsGoods; +import com.fuint.business.convenienceSore.vo.CvsGoodsVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * @author :admin + * @date : 2023/10/16 + * 便利店商品管理接口 + */ +@Mapper +public interface CvsGoodsMapper extends BaseMapper { + //查找一级菜单 + IPage selectCvsGoodsList(Page page , @Param("goods") CvsGoods goods); + + //查找二级菜单 + List selectCvsGoodsTreeList(CvsGoods goods); + + //根据id和name查找 + List selectGoodsList(CvsGoods goods); + + + +} diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/mapper/xml/CvsGoodsMapper.xml b/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/mapper/xml/CvsGoodsMapper.xml new file mode 100644 index 000000000..94da26398 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/mapper/xml/CvsGoodsMapper.xml @@ -0,0 +1,86 @@ + + + + + + select id,pid,category_name,code,sorted, status, create_time, create_by, update_time, update_by from cvs_goods + + + + + + + + + + + + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/service/CvsGoodsService.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/service/CvsGoodsService.java new file mode 100644 index 000000000..a264d4035 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/service/CvsGoodsService.java @@ -0,0 +1,24 @@ +package com.fuint.business.convenienceSore.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fuint.business.convenienceSore.entity.CvsGoods; +import com.fuint.business.convenienceSore.vo.CvsGoodsVo; +import io.swagger.models.auth.In; + +import java.util.List; + +/** + * @author :admin + * @date : 2023/10/16 + */ +public interface CvsGoodsService { + + int insertCvsGoods(CvsGoods cvsGoods); + + IPage selectTree(Page page, CvsGoods goods); + + List selectCvsGoodsList(CvsGoods goods); + + CvsGoods selectParentById(Integer id); +} diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/service/impl/CvsGoodsServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/service/impl/CvsGoodsServiceImpl.java new file mode 100644 index 000000000..9ed214457 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/service/impl/CvsGoodsServiceImpl.java @@ -0,0 +1,112 @@ +package com.fuint.business.convenienceSore.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fuint.business.convenienceSore.entity.CvsGoods; +import com.fuint.business.convenienceSore.mapper.CvsGoodsMapper; +import com.fuint.business.convenienceSore.service.CvsGoodsService; +import com.fuint.business.convenienceSore.vo.CvsGoodsVo; +import com.fuint.common.dto.AccountInfo; +import com.fuint.common.util.TokenUtil; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author :admin + * @date : 2023/10/16 + */ +@Service +public class CvsGoodsServiceImpl extends ServiceImpl implements CvsGoodsService { + + /**添加商品信息*/ + @Transactional + public int insertCvsGoods( CvsGoods cvsGoods){ + //查找分类名称是否存在 + List cvsGoodsList = baseMapper.selectGoodsList(cvsGoods); + if(CollectionUtil.isNotEmpty(cvsGoodsList)){ + return -1; + }else { + int insertGoods = baseMapper.insert(cvsGoods); + cvsGoods.setCode(cvsGoods.getPid()+","+cvsGoods.getId()+","); + baseMapper.updateById(cvsGoods); + return insertGoods; + } + + } + + public IPage selectTree(Page page, CvsGoods g){ + // 查询全部数据 + IPage cvsGoodsPage= baseMapper.selectCvsGoodsList(page,g);//一节点 + List cvsGoodsList = cvsGoodsPage.getRecords(); + if(CollectionUtil.isNotEmpty(cvsGoodsList)){ + List resList = new ArrayList<>(); + resList.addAll(cvsGoodsList); + for (CvsGoodsVo cvsGoods : cvsGoodsList) { + g.setPid(cvsGoods.getId()); + List treeList = baseMapper.selectCvsGoodsTreeList(g);//二级节点 + resList.addAll(treeList);//一级和二级合并 + } + // cvsGoodsList转换为cvsGoodsVoList + List CvsGoodsVoList = resList.stream().map(goods -> { + CvsGoodsVo cvsGoodsVo = new CvsGoodsVo(); + cvsGoodsVo.setId(goods.getId()); + cvsGoodsVo.setCategoryName(goods.getCategoryName()); + cvsGoodsVo.setPid(goods.getPid()); + cvsGoodsVo.setStatus(goods.getStatus()); + cvsGoodsVo.setCreateTime(new Date()); + AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo(); + cvsGoodsVo.setCreateBy(nowAccountInfo.getId().toString()); + cvsGoodsVo.setSorted(goods.getSorted()); + return cvsGoodsVo; + }).collect(Collectors.toList()); + + //获取得所有parentId为0的数据,也就是一级目录 + //用于封装数据,取得他的孩子(也就是下级目录)的数据 + List CvsGoodsVoTree = CvsGoodsVoList.stream() + .filter(categoryVo -> categoryVo.getPid().equals(0)) + .map((cvsVoParent) -> { + cvsVoParent.setChildren(getChildrenData(cvsVoParent, CvsGoodsVoList)); + return cvsVoParent; + }).collect(Collectors.toList()); + cvsGoodsPage.setRecords(CvsGoodsVoTree); + return cvsGoodsPage; + }else { + return null; + } + + } + + /** + * 获取孩子(下级目录)的方法,递归实现 + * @return + */ + private List getChildrenData(CvsGoodsVo root, List all) { + List children = all.stream().filter(cvsVo -> + cvsVo.getPid().equals(root.getId()) + ).map(categoryVo -> { + categoryVo.setChildren(getChildrenData(categoryVo, all)); + return categoryVo; + }).collect(Collectors.toList()); + + return children; + } + + //查询一级节点 + public List selectCvsGoodsList(CvsGoods goods){ + LambdaQueryWrapper queryWrapper =new LambdaQueryWrapper<>(); + queryWrapper.eq(CvsGoods::getPid,"0").orderByAsc(CvsGoods::getSorted); + return baseMapper.selectList(queryWrapper); + } + + //根据id查找父级 + public CvsGoods selectParentById(Integer id){ + return baseMapper.selectById(id); + } +} diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/vo/CvsGoodsVo.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/vo/CvsGoodsVo.java new file mode 100644 index 000000000..cd2a47566 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/convenienceSore/vo/CvsGoodsVo.java @@ -0,0 +1,46 @@ +package com.fuint.business.convenienceSore.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fuint.business.convenienceSore.entity.CvsGoods; +import com.fuint.repository.model.base.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.beans.factory.parsing.BeanEntry; + +import java.util.List; + +/** + * @author :admin + * @date : 2023/10/17 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CvsGoodsVo extends BaseEntity { + //主键 + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + //父分类id + private Integer pid; + + //编码 + private String code; + + //商品分类 + private String categoryName; + + //商品排序 + private Integer sorted; + + //商品状态 + private String status; + + /** + * 子节点 + */ + private List children; + +}