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