From 1aeb2be4330eb8119845b10bffca5ddaf272c2c4 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 24 Jun 2021 17:35:20 +0800 Subject: [PATCH] add xzx goods category List and goodsList --- gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailSkuVo.java | 34 ++++++ gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailStyleVo.java | 21 ++++ gc-shop/src/main/resources/mapper/shop/ScoreGoodsMapper.xml | 18 +++ gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsCategoryMapper.java | 3 gc-shop/src/main/java/com/xzx/gc/shop/vo/GoodsCategoryVo.java | 21 ++++ gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsListVo.java | 31 ++++++ gc-shop/src/main/java/com/xzx/gc/shop/controller/ApiGoodsController.java | 50 ++++++++++ gc-shop/src/main/java/com/xzx/gc/shop/dto/XcxGoodsListDto.java | 29 +++++ gc-shop/src/main/resources/mapper/shop/ScoreGoodsCategoryMapper.xml | 15 +++ gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsMapper.java | 6 + gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java | 13 ++ gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailVo.java | 44 ++++++++ 12 files changed, 285 insertions(+), 0 deletions(-) diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/controller/ApiGoodsController.java b/gc-shop/src/main/java/com/xzx/gc/shop/controller/ApiGoodsController.java new file mode 100644 index 0000000..9adebb7 --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/controller/ApiGoodsController.java @@ -0,0 +1,50 @@ +package com.xzx.gc.shop.controller; + + +import com.github.pagehelper.PageInfo; +import com.xzx.gc.model.JsonResult; +import com.xzx.gc.shop.dto.XcxGoodsListDto; +import com.xzx.gc.shop.service.GoodsService; +import com.xzx.gc.shop.vo.GoodsCategoryVo; +import com.xzx.gc.shop.vo.XcxGoodsListVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@RestController +@Api(tags = {"积分商城--API商品管理"}) +@Slf4j +public class ApiGoodsController { + + @Autowired + private GoodsService goodsService; + + @ApiOperation("分类列表") + @ApiResponses( + @ApiResponse(code = 200, message = "success", response = GoodsCategoryVo.class) + ) + @GetMapping(value = "/goods/goodsCategory") + public JsonResult<List<GoodsCategoryVo>> goodsCategory() { + return JsonResult.success(goodsService.findCategoryWithChildren()); + } + + @ApiOperation("商品列表") + @ApiResponses( + @ApiResponse(code = 200, message = "success", response = XcxGoodsListVo.class) + ) + @PostMapping(value = "/goods/goodsList") + public JsonResult<PageInfo<XcxGoodsListVo>> goodsList(@RequestBody XcxGoodsListDto xcxGoodsListDto, HttpServletRequest request) { + return JsonResult.success(goodsService.findGoodsListInPage(xcxGoodsListDto)); + } + +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/dto/XcxGoodsListDto.java b/gc-shop/src/main/java/com/xzx/gc/shop/dto/XcxGoodsListDto.java new file mode 100644 index 0000000..2e6267f --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/dto/XcxGoodsListDto.java @@ -0,0 +1,29 @@ +package com.xzx.gc.shop.dto; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "XcxGoodsListDto", description = "小程序商品列表参数接受类") +public class XcxGoodsListDto { + + @ApiModelProperty(value = "名称搜索") + private String name; + + @ApiModelProperty(value = "积分") + private String score; + + @ApiModelProperty(value = "分类ID") + private Long cateId; + + @ApiModelProperty(value="页码") + private int pageNo=1; + + @ApiModelProperty(value="每页显示记录数") + private int pageSize=10; + +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsCategoryMapper.java b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsCategoryMapper.java index fb4f34d..eb5b37b 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsCategoryMapper.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsCategoryMapper.java @@ -2,6 +2,7 @@ import com.xzx.gc.entity.ScoreGoodsCategory; import com.xzx.gc.model.admin.GoodsCategoryModel; +import com.xzx.gc.shop.vo.GoodsCategoryVo; import com.xzx.gc.shop.vo.QueryGoodsCategoryListVo; import com.xzx.gc.shop.vo.ViewGoodsCategoryListVo; import com.xzx.gc.util.GcMapper; @@ -11,6 +12,8 @@ public interface ScoreGoodsCategoryMapper extends GcMapper<ScoreGoodsCategory> { + List<GoodsCategoryVo> selectCategoryWithChildren(); + List<QueryGoodsCategoryListVo> queryGoodsCategoryList(@Param("record") GoodsCategoryModel goodsCategoryModel); List<ViewGoodsCategoryListVo> viewGoodsCategoryOneList(@Param("parentId")Long parentId); diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsMapper.java b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsMapper.java index 05c091f..0319ae0 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsMapper.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/mapper/ScoreGoodsMapper.java @@ -1,7 +1,11 @@ package com.xzx.gc.shop.mapper; +import com.github.pagehelper.PageInfo; import com.xzx.gc.entity.ScoreGoods; +import com.xzx.gc.model.order.OrderInfoVo; +import com.xzx.gc.shop.dto.XcxGoodsListDto; import com.xzx.gc.shop.vo.QueryGoodsListVo; +import com.xzx.gc.shop.vo.XcxGoodsListVo; import com.xzx.gc.util.GcMapper; import org.apache.ibatis.annotations.Param; @@ -14,4 +18,6 @@ ScoreGoods selectById(long id); List<QueryGoodsListVo> queryGoodsList(@Param("name")String name, @Param("delFlag")int delFlag); + + List<XcxGoodsListVo> selectXcxGoodsList(@Param("record") XcxGoodsListDto xcxGoodsListDto); } diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java b/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java index 30c6201..58b7316 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/service/GoodsService.java @@ -11,6 +11,7 @@ import com.xzx.gc.common.utils.MqUtil; import com.xzx.gc.entity.*; import com.xzx.gc.model.admin.GoodsCategoryModel; +import com.xzx.gc.model.order.OrderInfoVo; import com.xzx.gc.shop.dto.*; import com.xzx.gc.shop.mapper.*; import com.xzx.gc.shop.vo.*; @@ -287,4 +288,16 @@ } return maps; } + + public List<GoodsCategoryVo> findCategoryWithChildren() { + return scoreGoodsCategoryMapper.selectCategoryWithChildren(); + } + + public PageInfo<XcxGoodsListVo> findGoodsListInPage(XcxGoodsListDto xcxGoodsListDto) { + + PageHelper.startPage(xcxGoodsListDto.getPageNo(), xcxGoodsListDto.getPageSize()); + List<XcxGoodsListVo> data = scoreGoodsMapper.selectXcxGoodsList(xcxGoodsListDto); + + return new PageInfo<>(data); + } } diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/vo/GoodsCategoryVo.java b/gc-shop/src/main/java/com/xzx/gc/shop/vo/GoodsCategoryVo.java new file mode 100644 index 0000000..84faf22 --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/vo/GoodsCategoryVo.java @@ -0,0 +1,21 @@ +package com.xzx.gc.shop.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(value = "GoodsCategoryVo", description = "小程序分类接口返回参数类") +public class GoodsCategoryVo { + + @ApiModelProperty(value = "分类ID") + private Long id; + + @ApiModelProperty(value = "分类名称") + private String name; + + @ApiModelProperty(value = "子类") + private List<GoodsCategoryVo> children; +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailSkuVo.java b/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailSkuVo.java new file mode 100644 index 0000000..e955ee8 --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailSkuVo.java @@ -0,0 +1,34 @@ +package com.xzx.gc.shop.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author wzy + * @date 2021-06-24 + **/ +@Data +@ApiModel(value = "XcxGoodsDetailSkuVo", description = "小程序商品详情规格参数类") +public class XcxGoodsDetailSkuVo { + + @ApiModelProperty(value = "规格ID") + private Long id; + + @ApiModelProperty(value = "规格名称") + private String name; + + @ApiModelProperty(value = "现价") + private BigDecimal presentPrice; + + @ApiModelProperty(value = "原价") + private BigDecimal originalPrice; + + @ApiModelProperty(value = "销量") + private Integer quantity; + + @ApiModelProperty(value = "库存") + private Integer stock; +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailStyleVo.java b/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailStyleVo.java new file mode 100644 index 0000000..acada8e --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailStyleVo.java @@ -0,0 +1,21 @@ +package com.xzx.gc.shop.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(value = "XcxGoodsDetailStyleVo", description = "小程序商品详情样式参数类") +public class XcxGoodsDetailStyleVo { + + @ApiModelProperty(value = "样式ID") + private Long id; + + @ApiModelProperty(value = "样式名称") + private String name; + + @ApiModelProperty(value = "规格") + private List<XcxGoodsDetailSkuVo> skus; +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailVo.java b/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailVo.java new file mode 100644 index 0000000..6e02c2a --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsDetailVo.java @@ -0,0 +1,44 @@ +package com.xzx.gc.shop.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author wzy + * @date 2021-06-24 + **/ +@Data +@ApiModel(value = "XcxGoodsDetailVo", description = "小程序商品详情返回参数类") +public class XcxGoodsDetailVo { + + @ApiModelProperty(value = "商品名称") + private String name; + + @ApiModelProperty(value = "列表缩略图") + private String image; + + @ApiModelProperty(value = "现价") + private String presentPrice; + + @ApiModelProperty(value = "原价") + private String originalPrice; + + @ApiModelProperty(value = "销量") + private Integer quantity; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "商品详情") + private String details; + + @ApiModelProperty(value = "轮播图") + private List<String> images; + + @ApiModelProperty(value = "样式") + private List<XcxGoodsDetailStyleVo> styles; + +} diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsListVo.java b/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsListVo.java new file mode 100644 index 0000000..b939f1b --- /dev/null +++ b/gc-shop/src/main/java/com/xzx/gc/shop/vo/XcxGoodsListVo.java @@ -0,0 +1,31 @@ +package com.xzx.gc.shop.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "XcxGoodsListVo", description = "小程序商品列表返回参数类") +public class XcxGoodsListVo { + + @ApiModelProperty(value = "商品ID") + private Long id; + + @ApiModelProperty(value = "商品名称") + private String name; + + @ApiModelProperty(value = "图片") + private String image; + + @ApiModelProperty(value = "现价") + private String presentPrice; + + @ApiModelProperty(value = "原价") + private String originalPrice; + + @ApiModelProperty(value = "销量") + private Integer quantity; + + @ApiModelProperty(value = "库存") + private Integer stock; +} diff --git a/gc-shop/src/main/resources/mapper/shop/ScoreGoodsCategoryMapper.xml b/gc-shop/src/main/resources/mapper/shop/ScoreGoodsCategoryMapper.xml index 8c67f58..100a7f7 100644 --- a/gc-shop/src/main/resources/mapper/shop/ScoreGoodsCategoryMapper.xml +++ b/gc-shop/src/main/resources/mapper/shop/ScoreGoodsCategoryMapper.xml @@ -2,6 +2,21 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xzx.gc.shop.mapper.ScoreGoodsCategoryMapper"> + <resultMap id="goodsCategoryMap" type="com.xzx.gc.shop.vo.GoodsCategoryVo"> + <id column="id" property="id" /> + <result column="name" property="name" /> + <collection property="children" ofType="com.xzx.gc.shop.vo.GoodsCategoryVo"> + <id column="c_id" property="id" /> + <result column="c_name" property="name" /> + </collection> + </resultMap> + + <select id="selectCategoryWithChildren" resultMap="goodsCategoryMap"> + select a.id id, a.name name, b.id c_id, b.name c_name + from xzx_score_goods_category a + left join xzx_score_goods_category b on a.id=b.parent_id + </select> + <select id="queryGoodsCategoryList" resultType="com.xzx.gc.shop.vo.QueryGoodsCategoryListVo"> SELECT * diff --git a/gc-shop/src/main/resources/mapper/shop/ScoreGoodsMapper.xml b/gc-shop/src/main/resources/mapper/shop/ScoreGoodsMapper.xml index 793f3a9..776eeb4 100644 --- a/gc-shop/src/main/resources/mapper/shop/ScoreGoodsMapper.xml +++ b/gc-shop/src/main/resources/mapper/shop/ScoreGoodsMapper.xml @@ -35,4 +35,22 @@ where id=#{id} </update> + <select id="selectXcxGoodsList" resultType="com.xzx.gc.shop.vo.XcxGoodsListVo"> + select + a.*, + sum(b.quantity) quantity, + sum(b.stock) stock + from xzx_score_goods a + inner join xzx_score_goods_sku b on a.id=b.goods_id and b.del_flag=0 + <where> + a.del_flag=0 + <if test="record.name != null and record.name != ''"> + and a.name like CONCAT(CONCAT(#{record.name}, "%"), "%") + </if> + <if test="record.cateId != null and record.cateId != ''"> + and (a.category_id = #{record.cateId} or a.category in (select id from xzx_score_goods_category where parent_id=#{record.cateId})) + </if> + </where> + order by a.CREATED_TIME desc + </select> </mapper> -- Gitblit v1.9.1