diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSaleGroupController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSaleGroupController.java new file mode 100644 index 00000000..10c48a9e --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSaleGroupController.java @@ -0,0 +1,116 @@ +package com.qs.serve.modules.goods.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.common.util.StringUtils; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import com.qs.serve.modules.goods.entity.GoodsSaleGroup; +import com.qs.serve.modules.goods.service.GoodsSaleGroupService; + +import javax.validation.Valid; +import java.util.List; + +/** + * 商品 商品销售分组 + * @author YenHex + * @since 2023-08-21 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("goods/saleGroup") +public class GoodsSaleGroupController { + + private GoodsSaleGroupService goodsSaleGroupService; + + /** + * 列表 + * @param param + * @return + */ + //@GetMapping("/list") + public R> getList(GoodsSaleGroup param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + lqw.orderByDesc(GoodsSaleGroup::getSort); + List list = goodsSaleGroupService.list(lqw); + return R.ok(list); + } + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + public R> getPage(GoodsSaleGroup param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + PageUtil.startPage(); + lqw.orderByDesc(GoodsSaleGroup::getSort); + List list = goodsSaleGroupService.list(lqw); + return R.byPageHelperList(list); + } + + /** + * ID查询 + * @param id + * @return + */ + @GetMapping("/getById/{id}") + @SysLog(module = SystemModule.GOODS, title = "商品销售分组", biz = BizType.QUERY) + @PreAuthorize("hasRole('goods:saleGroup:query')") + public R getById(@PathVariable("id") String id){ + GoodsSaleGroup goodsSaleGroup = goodsSaleGroupService.getById(id); + return R.ok(goodsSaleGroup); + } + + + + /** + * 更新 + * @param param + * @return + */ + @PostMapping("/updateById") + @SysLog(module = SystemModule.GOODS, title = "商品销售分组", biz = BizType.UPDATE) + public R updateById(@RequestBody @Valid GoodsSaleGroup param){ + boolean result = goodsSaleGroupService.updateById(param); + return R.isTrue(result); + } + + /** + * 新增 + * @param param + * @return + */ + @PostMapping("/save") + @SysLog(module = SystemModule.GOODS, title = "商品销售分组", biz = BizType.INSERT) + public R save(@RequestBody @Valid GoodsSaleGroup param){ + boolean result = goodsSaleGroupService.save(param); + return R.isTrue(result); + } + + /** + * 删除 + * @param ids + * @return + */ + @DeleteMapping("/deleteById/{ids}") + @SysLog(module = SystemModule.GOODS, title = "商品销售分组", biz = BizType.DELETE) + public R deleteById(@PathVariable("ids") String ids){ + List idsLong = StringUtils.splitIdLong(ids); + boolean result = goodsSaleGroupService.removeByIds(idsLong); + return R.isTrue(result); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsBrandApi.java b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsBrandApi.java index 98943678..8c783a18 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsBrandApi.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsBrandApi.java @@ -27,7 +27,7 @@ import java.util.List; @Slf4j @AllArgsConstructor @RestController -@RequestMapping("api/brand") +@RequestMapping("my/brand") public class GoodsBrandApi { private GoodsBrandService goodsBrandService; diff --git a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsCategoryApi.java b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsCategoryApi.java index a57443a0..dbc0dcb4 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsCategoryApi.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsCategoryApi.java @@ -1,9 +1,11 @@ package com.qs.serve.modules.goods.controller.api; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.dto.TreeNode; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.CopierUtil; @@ -18,6 +20,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -29,7 +32,7 @@ import java.util.stream.Collectors; @Slf4j @AllArgsConstructor @RestController -@RequestMapping("/api/category") +@RequestMapping("/my/category") public class GoodsCategoryApi { private GoodsCategoryService goodsCategoryService; @@ -50,7 +53,24 @@ public class GoodsCategoryApi { treeNode.setSort(0); return treeNode; }).collect(Collectors.toList()); + treeVoList.sort((o1,o2) -> (o2.getSort()-o1.getSort())); treeVoList = TreeUtil.buildByRecursive(treeVoList,TreeUtil.DEFAULT_PID_STRING); + for (GoodsCategoryTreeVo treeVo : treeVoList) { + //第二级为空,补充第二,三级 + if(CollUtil.isEmpty(treeVo.getChildren())){ + GoodsCategoryTreeVo treeVoLv2 = CopierUtil.copy(treeVo,new GoodsCategoryTreeVo()); + treeVoLv2.getChildren().add(CopierUtil.copy(treeVo,new GoodsCategoryTreeVo())); + treeVo.getChildren().add(treeVoLv2); + }else { + for (TreeNode object : treeVo.getChildren()) { + //第三级为空,补充第三级 + if(CollUtil.isEmpty(object.getChildren())){ + GoodsCategoryTreeVo child2 = (GoodsCategoryTreeVo)object; + treeVo.getChildren().add(CopierUtil.copy(child2,new GoodsCategoryTreeVo())); + } + } + } + } return R.ok(treeVoList); } diff --git a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSaleGroupApi.java b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSaleGroupApi.java new file mode 100644 index 00000000..111ea9e9 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSaleGroupApi.java @@ -0,0 +1,48 @@ +package com.qs.serve.modules.goods.controller.api; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.goods.entity.GoodsSaleGroup; +import com.qs.serve.modules.goods.service.GoodsSaleGroupService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +/** + * API商品销售分组 + * @author YenHex + * @since 2023-08-21 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("my/saleGroup") +public class GoodsSaleGroupApi { + + private GoodsSaleGroupService goodsSaleGroupService; + + /** + * 列表 + * @return + */ + @GetMapping("/list") + public R> getList(){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(GoodsSaleGroup::getShowFlag,1); + lqw.orderByDesc(GoodsSaleGroup::getSort); + List list = goodsSaleGroupService.list(lqw); + return R.ok(list); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSeriesApi.java b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSeriesApi.java index 546159e9..157344c4 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSeriesApi.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSeriesApi.java @@ -24,8 +24,8 @@ import java.util.List; */ @Slf4j @AllArgsConstructor -@RestController -@RequestMapping("/api/series") +//@RestController +//@RequestMapping("/my/series") public class GoodsSeriesApi { private GoodsSeriesService goodsSeriesService; diff --git a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java index b9a3ddae..e47fd01c 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java @@ -7,6 +7,7 @@ import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.StringUtils; import com.qs.serve.modules.goods.entity.GoodsSpu; import com.qs.serve.modules.goods.entity.bo.GoodsSpuBatchTasteBo; import com.qs.serve.modules.goods.entity.vo.GoodsSpuVo; @@ -27,7 +28,7 @@ import java.util.List; @Slf4j @AllArgsConstructor @RestController -@RequestMapping("/api/spu") +@RequestMapping("/my/spu") public class GoodsSpuApi { private GoodsSpuService goodsSpuService; @@ -41,7 +42,27 @@ public class GoodsSpuApi { public R> getPage(GoodsSpu param){ PageUtil.startPage(); LambdaQueryWrapper spuWrapper = new LambdaQueryWrapper<>(param); + //销售分组id(默认0,表所有 不进行条件过滤) + if(param.getGoodsSaleGroupId().equals(0L)){ + param.setGoodsSaleGroupId(null); + } + if(StringUtils.hasText(param.getSearchValue())){ + spuWrapper.like(GoodsSpu::getSpuCode,param.getSearchValue()); + spuWrapper.like(GoodsSpu::getName,param.getSearchValue()); + } + Long selectCateId = param.getSelectCategoryId(); + if(selectCateId!=null){ + spuWrapper.and(qw->{ + qw.eq(GoodsSpu::getCategoryFirst,selectCateId) + .or().eq(GoodsSpu::getCategoryLast,selectCateId) + .or().eq(GoodsSpu::getCategorySecond,selectCateId) + .or().eq(GoodsSpu::getCategoryThird,selectCateId); + }); + } + spuWrapper.eq(GoodsSpu::getShelf,1); + spuWrapper.orderByDesc(GoodsSpu::getSort); List list = goodsSpuService.list(spuWrapper); + //TODO 获取价格 return R.byPageHelperList(list); } @@ -53,6 +74,7 @@ public class GoodsSpuApi { @GetMapping("/getById/{id}") public R getById(@PathVariable("id") Long id){ GoodsSpuVo goodsSpu = goodsSpuService.getVoById(id); + //TODO 获取价格 return R.ok(goodsSpu); } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSaleGroup.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSaleGroup.java new file mode 100644 index 00000000..361262c0 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSaleGroup.java @@ -0,0 +1,91 @@ +package com.qs.serve.modules.goods.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 商品销售分组 实体类 + * @author YenHex + * @since 2023-08-21 + */ +@Data +@TableName("goods_sale_group") +public class GoodsSaleGroup implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 标题 */ + @Length(max = 255,message = "标题长度不能超过255字") + private String label; + + /** 显示在页面标识 */ + private Integer showFlag; + + /** 排序 */ + private Integer sort; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 最后更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + + public static GoodsSaleGroup toNewObject(GoodsSaleGroup source){ + GoodsSaleGroup saleGroup = new GoodsSaleGroup(); + saleGroup.setId(source.getId()); + saleGroup.setLabel(source.getLabel()); + saleGroup.setShowFlag(source.getShowFlag()); + saleGroup.setSort(source.getSort()); + saleGroup.setCreateTime(source.getCreateTime()); + saleGroup.setUpdateTime(source.getUpdateTime()); + saleGroup.setTenantId(source.getTenantId()); + saleGroup.setDelFlag(source.getDelFlag()); + saleGroup.setCreateBy(source.getCreateBy()); + saleGroup.setUpdateBy(source.getUpdateBy()); + return saleGroup; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java index 52a17fb9..98f55e48 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java @@ -107,6 +107,16 @@ public class GoodsSpu implements Serializable { private String belong; + /** 销售分组id(默认0,表所有) */ + private Long goodsSaleGroupId; + + /** 商品销售类型:0-普通商品;1-赠品 */ + private Integer goodsSaleType; + + /** 选中的类目ID */ + @TableField(exist = false) + private Long selectCategoryId; + /** 一级类目:品牌名称 */ @TableField(exist = false) private String cateFirstLabel; diff --git a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSaleGroupMapper.java b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSaleGroupMapper.java new file mode 100644 index 00000000..c001ab18 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSaleGroupMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.goods.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.goods.entity.GoodsSaleGroup; + +/** + * 商品销售分组 Mapper + * @author YenHex + * @date 2023-08-21 + */ +public interface GoodsSaleGroupMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/goods/service/GoodsSaleGroupService.java b/src/main/java/com/qs/serve/modules/goods/service/GoodsSaleGroupService.java new file mode 100644 index 00000000..c3ab78c9 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/service/GoodsSaleGroupService.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.goods.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.goods.entity.GoodsSaleGroup; + +/** + * 商品销售分组 服务接口 + * @author YenHex + * @date 2023-08-21 + */ +public interface GoodsSaleGroupService extends IService { + +} + diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSaleGroupServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSaleGroupServiceImpl.java new file mode 100644 index 00000000..7a4ccca1 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSaleGroupServiceImpl.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.goods.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.goods.entity.GoodsSaleGroup; +import com.qs.serve.modules.goods.service.GoodsSaleGroupService; +import com.qs.serve.modules.goods.mapper.GoodsSaleGroupMapper; + +/** + * 商品销售分组 服务实现类 + * @author YenHex + * @since 2023-08-21 + */ +@Slf4j +@Service +@AllArgsConstructor +public class GoodsSaleGroupServiceImpl extends ServiceImpl implements GoodsSaleGroupService { + +} +