提交便利店商品分类代码

This commit is contained in:
liujinfeng@rd.sdtwxx.com 2023-10-19 12:59:24 +08:00
parent c828a46a79
commit 1331e02754
7 changed files with 404 additions and 0 deletions

View File

@ -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<CvsGoodsVo> list = cvsGoodsService.selectTree(page,goods);
return getSuccessResult(list);
}
//查询一级菜单
@PostMapping("/list")
public ResponseObject list(CvsGoods goods)
{
List<CvsGoods> list = cvsGoodsService.selectCvsGoodsList(goods);
return getSuccessResult(list);
}
//根据id查询一级菜单
@GetMapping("/{id}")
public ResponseObject selectParentById(@PathVariable Integer id)
{
CvsGoods cvsGoods = cvsGoodsService.selectParentById(id);
return getSuccessResult(cvsGoods);
}
}

View File

@ -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;
}

View File

@ -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<CvsGoods> {
//查找一级菜单
IPage<CvsGoodsVo> selectCvsGoodsList(Page page , @Param("goods") CvsGoods goods);
//查找二级菜单
List<CvsGoodsVo> selectCvsGoodsTreeList(CvsGoods goods);
//根据id和name查找
List<CvsGoods> selectGoodsList(CvsGoods goods);
}

View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fuint.business.convenienceSore.mapper.CvsGoodsMapper">
<sql id="selectCvsGoods">
select id,pid,category_name,code,sorted, status, create_time, create_by, update_time, update_by from cvs_goods
</sql>
<!--判断新增是否重复 -->
<select id="selectGoodsList" parameterType="com.fuint.business.convenienceSore.entity.CvsGoods" resultType="com.fuint.business.convenienceSore.entity.CvsGoods" >
<include refid="selectCvsGoods"></include>
<where>
<if test="pid != null">
and pid = #{pid}
</if>
<if test="categoryName != null and categoryName != ''">
and category_name = #{categoryName}
</if>
<if test="sorted != null and sorted != ''">
and sorted = #{sorted}
</if>
</where>
order by sorted
</select>
<!--查询一级分类列表 -->
<select id="selectCvsGoodsList" parameterType="com.fuint.business.convenienceSore.entity.CvsGoods" resultType="com.fuint.business.convenienceSore.vo.CvsGoodsVo">
SELECT
DISTINCT
pTable.id,
pTable.pid,
pTable.category_name,
pTable.`CODE`,
pTable.sorted,
pTable.`STATUS`,
pTable.create_time,
pTable.create_by,
pTable.update_time,
pTable.update_by
FROM
(SELECT * from cvs_goods WHERE pid = 0) pTable
left join
(SELECT * from cvs_goods WHERE pid != 0) cTable on pTable.id = cTable.pid
<where>
<if test="goods.status != null and goods.status != ''">
and pTable.status = #{goods.status}
</if>
<if test="goods.categoryName != null and goods.categoryName!= ''">
and pTable.category_name like concat('%',#{goods.categoryName},'%')
or cTable.category_name like concat('%',#{goods.categoryName},'%')
</if>
</where>
group by pTable.id
order by sorted
</select>
<!--查找二级分类-->
<select id="selectCvsGoodsTreeList" parameterType="com.fuint.business.convenienceSore.entity.CvsGoods" resultType="com.fuint.business.convenienceSore.vo.CvsGoodsVo">
SELECT
id,
pid,
category_name,
`CODE`,
sorted,
`STATUS`,
create_time,
create_by,
update_time,
update_by
FROM
cvs_goods
<where >
<if test="pid != null ">
and pid = #{pid}
</if>
<if test="categoryName != null and categoryName != ''">
and category_name like CONCAT('%',#{categoryName},'%')
</if>
<if test="status != null and status != ''">
and status = #{status}
</if>
</where>
order by sorted
</select>
</mapper>

View File

@ -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<CvsGoodsVo> selectTree(Page page, CvsGoods goods);
List<CvsGoods> selectCvsGoodsList(CvsGoods goods);
CvsGoods selectParentById(Integer id);
}

View File

@ -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<CvsGoodsMapper,CvsGoods> implements CvsGoodsService {
/**添加商品信息*/
@Transactional
public int insertCvsGoods( CvsGoods cvsGoods){
//查找分类名称是否存在
List<CvsGoods> 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<CvsGoodsVo> selectTree(Page page, CvsGoods g){
// 查询全部数据
IPage<CvsGoodsVo> cvsGoodsPage= baseMapper.selectCvsGoodsList(page,g);//一节点
List<CvsGoodsVo> cvsGoodsList = cvsGoodsPage.getRecords();
if(CollectionUtil.isNotEmpty(cvsGoodsList)){
List<CvsGoodsVo> resList = new ArrayList<>();
resList.addAll(cvsGoodsList);
for (CvsGoodsVo cvsGoods : cvsGoodsList) {
g.setPid(cvsGoods.getId());
List<CvsGoodsVo> treeList = baseMapper.selectCvsGoodsTreeList(g);//二级节点
resList.addAll(treeList);//一级和二级合并
}
// cvsGoodsList转换为cvsGoodsVoList
List<CvsGoodsVo> 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<CvsGoodsVo> 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<CvsGoodsVo> getChildrenData(CvsGoodsVo root, List<CvsGoodsVo> all) {
List<CvsGoodsVo> 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<CvsGoods> selectCvsGoodsList(CvsGoods goods){
LambdaQueryWrapper<CvsGoods> 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);
}
}

View File

@ -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<CvsGoodsVo> children;
}