From c680521b6a4759b0c43068e57a6e5cd2b0a90236 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期四, 01 六月 2023 19:08:11 +0800
Subject: [PATCH] 商品管理

---
 ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml                              |   47 +++++++++++
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java    |   15 +++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/goods/GoodsTotal.java              |    7 +
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java                |   13 ++-
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java                  |   55 +++++++++++++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtGoodsPageDto.java                |    6 +
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java         |   10 ++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java  |   16 ++-
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/goods/GoodsMapper.java                  |   10 ++
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java |    6 +
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MerGoodsPageDto.java                |    4 -
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java       |   29 ++++++-
 12 files changed, 198 insertions(+), 20 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java
index da52ea7..98577ce 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java
@@ -2,6 +2,7 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.system.api.domain.poji.config.Activeness;
+import com.ruoyi.system.api.domain.poji.config.SysClassification;
 import com.ruoyi.system.api.service.RemoteConfigService;
 import com.ruoyi.system.api.domain.poji.config.SysTag;
 import org.slf4j.Logger;
@@ -41,6 +42,11 @@
             public R<List<Activeness>> listActiveness() {
                 return R.fail("获取活跃度失败:" + throwable.getMessage());
             }
+
+            @Override
+            public R<SysClassification> getSysClassification(Long classId) {
+                return R.fail("获取分类失败:" + throwable.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java
index 35126fc..f09c2c6 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java
@@ -4,6 +4,7 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
 import com.ruoyi.system.api.domain.poji.config.Activeness;
+import com.ruoyi.system.api.domain.poji.config.SysClassification;
 import com.ruoyi.system.api.domain.poji.config.SysTag;
 import com.ruoyi.system.api.factory.RemoteActivityFallbackFactory;
 import com.ruoyi.system.api.factory.RemoteConfigFallbackFactory;
@@ -31,5 +32,12 @@
 
 
     @PostMapping("/config/listActiveness")
-    public  R<List<Activeness>> listActiveness();
+    public R<List<Activeness>> listActiveness();
+
+    /**
+     * 通过id获取分类
+     * @return
+     */
+    @PostMapping("/getSysClassification")
+    public R<SysClassification> getSysClassification(@RequestBody Long classId);
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java
index e039da1..c20e76b 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java
@@ -4,7 +4,9 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.goods.domain.dto.MerGoodsPageDto;
+import com.ruoyi.goods.domain.dto.MgtGoodsPageDto;
 import com.ruoyi.goods.domain.vo.MerGoodsPageVo;
+import com.ruoyi.goods.domain.vo.MgtGoodsPageVo;
 import com.ruoyi.goods.service.goods.GoodsService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -32,17 +34,17 @@
     @Resource
     private GoodsService goodsService;
 
-    /*@RequestMapping(value = "/pageMgtGoods", method = RequestMethod.POST)
+    @RequestMapping(value = "/pageMgtGoods", method = RequestMethod.POST)
     @ApiOperation(value = "分页获取商品列表")
-    public R<Page<MerGoodsPageVo>> pageMgtGoods(@RequestBody MerGoodsPageDto merGoodsPageDto) {
+    public R<Page<MgtGoodsPageVo>> pageMgtGoods(@RequestBody MgtGoodsPageDto mgtGoodsPageDto) {
         Long userId = SecurityUtils.getUserId();
-        Page<MerGoodsPageVo> page = new Page<>();
-        page.setSize(merGoodsPageDto.getPageSize());
-        page.setCurrent(merGoodsPageDto.getPageNum());
+        Page<MgtGoodsPageVo> page = new Page<>();
+        page.setSize(mgtGoodsPageDto.getPageSize());
+        page.setCurrent(mgtGoodsPageDto.getPageNum());
         page.setOptimizeCountSql(false);
-        List<MerGoodsPageVo> merGoodsPageVoList = goodsService.pageMgtGoods(page,merGoodsPageDto);
+        List<MgtGoodsPageVo> merGoodsPageVoList = goodsService.pageMgtGoods(page,mgtGoodsPageDto);
         return R.ok(page.setRecords(merGoodsPageVoList));
-    }*/
+    }
 
 
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MerGoodsPageDto.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MerGoodsPageDto.java
index 096a4e1..2211330 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MerGoodsPageDto.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MerGoodsPageDto.java
@@ -21,10 +21,6 @@
     @ApiModelProperty(value = "商品类型1周期2服务3体验4单品")
     private Integer goodsType;
 
-    @ApiModelProperty(value = "商品分类id")
-    private Long goodsClassId;
 
-    @ApiModelProperty(value = "创建时间")
-    private String createTime;
 
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtGoodsPageDto.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtGoodsPageDto.java
index 919fdf8..3d8dcc5 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtGoodsPageDto.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtGoodsPageDto.java
@@ -20,4 +20,10 @@
 
     @ApiModelProperty(value = "商品类型1周期2服务3体验4单品")
     private Integer goodsType;
+
+    @ApiModelProperty(value = "商品分类id")
+    private Long goodsClassId;
+
+    @ApiModelProperty(value = "创建时间")
+    private String createTime;
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/goods/GoodsTotal.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/goods/GoodsTotal.java
index af6d117..27a7719 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/goods/GoodsTotal.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/goods/GoodsTotal.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -44,6 +45,12 @@
     @TableField("buy_user_count")
     private Integer buyUserCount;
 
+    /**
+     * 购买人数统计
+     */
+    @TableField("buy_money_total")
+    private BigDecimal buyMoneyTotal;
+
 
     @Override
     protected Serializable pkVal() {
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java
index d0bab5a..c5fd4ae 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java
@@ -1,5 +1,13 @@
 package com.ruoyi.goods.domain.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
 /**
  * @author jqs34
  * @ClassName MgtGoodsPageVo
@@ -7,5 +15,52 @@
  * @date 2023年06月01日
  * @version: 1.0
  */
+@Data
 public class MgtGoodsPageVo {
+
+
+    @ApiModelProperty(value = "商品id")
+    private String goodsId;
+
+    @ApiModelProperty(value = "商品名称")
+    private String goodsName;
+
+    @ApiModelProperty(value = "商品简介")
+    private String goodsIntroduction;
+
+    @ApiModelProperty(value = "商品分类")
+    private String goodsClass;
+
+    @ApiModelProperty(value = "商品标签")
+    private String goodsTags;
+
+    @ApiModelProperty(value = "商品图片")
+    private String goodsPicture;
+
+    @ApiModelProperty(value = "商品类型1周期2服务3体验4单品")
+    private Integer goodsType;
+
+    @ApiModelProperty(value = "商品建议售价")
+    private BigDecimal suggestSalesPrice;;
+
+    @ApiModelProperty(value = "最低售价")
+    private BigDecimal mininumPrice;;
+
+    @ApiModelProperty(value = "销量")
+    private Integer buyNumCount;
+
+    @ApiModelProperty(value = "销售额")
+    private BigDecimal buyMoneyTotal;
+
+    @ApiModelProperty(value = "是否推荐")
+    private String recommendFlag;
+
+    @ApiModelProperty(value = "商品状态")
+    private String goodsStatus;
+
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/goods/GoodsMapper.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/goods/GoodsMapper.java
index a0f5c91..5954177 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/goods/GoodsMapper.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/goods/GoodsMapper.java
@@ -2,10 +2,12 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.goods.domain.dto.MerGoodsPageDto;
+import com.ruoyi.goods.domain.dto.MgtGoodsPageDto;
 import com.ruoyi.goods.domain.vo.AppSimpleActivityGoodsVo;
 import com.ruoyi.goods.domain.vo.AppSimpleGoodsVo;
 import com.ruoyi.goods.domain.dto.AppSearchGoodsPageDto;
 import com.ruoyi.goods.domain.dto.AppShopGoodsPageDto;
+import com.ruoyi.goods.domain.vo.MgtGoodsPageVo;
 import com.ruoyi.system.api.domain.poji.goods.Goods;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.goods.domain.vo.MerGoodsPageVo;
@@ -59,4 +61,12 @@
      * @return
      */
     List<MerGoodsPageVo> pageMerShopGoods(Page page, @Param("param")MerGoodsPageDto merGoodsPageDto);
+
+    /**
+     * 平台分页获取商品
+     * @param page
+     * @param mgtGoodsPageDto
+     * @return
+     */
+    List<MgtGoodsPageVo> pageMgtGoods(Page page, @Param("param")MgtGoodsPageDto mgtGoodsPageDto);
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java
index 6425a70..bfca945 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/goods/GoodsService.java
@@ -2,12 +2,9 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.goods.domain.dto.*;
-import com.ruoyi.goods.domain.vo.AppGoodsInfoVo;
-import com.ruoyi.goods.domain.vo.AppSimpleActivityGoodsVo;
-import com.ruoyi.goods.domain.vo.AppSimpleGoodsVo;
+import com.ruoyi.goods.domain.vo.*;
 import com.ruoyi.system.api.domain.poji.goods.Goods;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.goods.domain.vo.MerGoodsPageVo;
 
 import java.util.List;
 
@@ -70,4 +67,12 @@
      * @param merShopGoodsEditDto
      */
     void editMerShopGoods(MerShopGoodsEditDto merShopGoodsEditDto);
+
+    /**
+     * 平台分页获取商品
+     * @param page
+     * @param mgtGoodsPageDto
+     * @return
+     */
+    List<MgtGoodsPageVo> pageMgtGoods(Page page,MgtGoodsPageDto mgtGoodsPageDto);
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
index 052132e..0fd9e4a 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
@@ -7,13 +7,11 @@
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.goods.domain.dto.*;
+import com.ruoyi.goods.domain.vo.*;
+import com.ruoyi.system.api.domain.poji.config.SysClassification;
 import com.ruoyi.system.api.domain.poji.goods.Goods;
 import com.ruoyi.system.api.domain.poji.goods.GoodsFile;
 import com.ruoyi.system.api.domain.poji.goods.ShopGoods;
-import com.ruoyi.goods.domain.vo.AppGoodsInfoVo;
-import com.ruoyi.goods.domain.vo.AppSimpleActivityGoodsVo;
-import com.ruoyi.goods.domain.vo.AppSimpleGoodsVo;
-import com.ruoyi.goods.domain.vo.MerGoodsPageVo;
 import com.ruoyi.goods.mapper.goods.GoodsMapper;
 import com.ruoyi.goods.service.activity.ActivityGoodsService;
 import com.ruoyi.goods.service.goods.GoodsFileService;
@@ -21,6 +19,7 @@
 import com.ruoyi.goods.service.goods.ShopGoodsService;
 import com.ruoyi.system.api.constant.AppErrorConstant;
 import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
+import com.ruoyi.system.api.service.RemoteConfigService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
@@ -52,6 +51,9 @@
 
     @Resource
     private GoodsFileService goodsFileService;
+
+    @Resource
+    private RemoteConfigService remoteConfigService;
 
     /**
      * 获取推荐商品列表
@@ -209,4 +211,23 @@
         }
         shopGoodsService.saveOrUpdate(shopGoods);
     }
+
+    /**
+     * 平台分页获取商品
+     * @param page
+     * @param mgtGoodsPageDto
+     * @return
+     */
+    @Override
+    public List<MgtGoodsPageVo> pageMgtGoods(Page page, MgtGoodsPageDto mgtGoodsPageDto){
+        List<MgtGoodsPageVo> mgtGoodsPageVoList = goodsMapper.pageMgtGoods(page, mgtGoodsPageDto);
+        if(mgtGoodsPageVoList!=null && !mgtGoodsPageVoList.isEmpty()){
+            mgtGoodsPageVoList.stream()
+                    .forEach(mgtGoodsPageVo -> {
+                        SysClassification sysClassification = remoteConfigService.getSysClassification(Long.valueOf(mgtGoodsPageVo.getGoodsClass())).getData();
+                        mgtGoodsPageVo.setGoodsClass(sysClassification.getClassName());
+                    });
+        }
+        return mgtGoodsPageVoList;
+    }
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml
index 531fa74..d480a52 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml
+++ b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml
@@ -311,4 +311,51 @@
         </if>
         ORDER BY tg.create_time DESC
     </select>
+
+    <select id="pageMgtGoods" resultType="com.ruoyi.goods.domain.vo.MgtGoodsPageVo">
+        SELECT
+        tg.goods_id goodsId,
+        tg.goods_name goodsName,
+        tg.goods_introduction goodsIntroduction,
+        tg.goods_class_id goodsClass,
+        tg.goods_tags goodsTags,
+        tgf.file_url goodsPicture,
+        CASE tg.goods_type
+        WHEN 1 THEN "周期"
+        WHEN 2 THEN "服务"
+        WHEN 3 THEN "体验"
+        WHEN 4 THEN "单品"
+        END goodsType,
+        tg.sales_price suggestSalesPrice,
+        tg.mininum_price mininumPrice,
+        CASE tg.recommend_flag
+        WHEN 1 THEN "是"
+        WHEN 0 THEN "否"
+        ELSE "否"
+        END recommendFlag,
+        CASE tg.goods_status
+        WHEN 1 THEN "上架中"
+        WHEN 2 THEN "下架中"
+        ELSE "下架中"
+        END goodsStatus,
+        tg.create_time createTime,
+        tgt.buy_num_count buyNumCount,
+        tgt.buy_money_total buyMoneyTotal
+        FROM t_goods tg
+        INNER JOIN t_goods_total tgt ON tg.goods_id = tgt.goods_id
+        LEFT JOIN t_goods_file tgf ON tg.goods_id = tgf.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1
+        WHERE tg.del_flag = 0
+        <if test="param.goodsType != null">
+            AND tg.goods_type = #{param.goodsType}
+        </if>
+        <if test="param.goodsClassId != null and param.goodsClassId != ''">
+            AND tg.goods_class_id = #{param.goodsClassId}
+        </if>
+        <if test="param.createTime != null and param.createTime != ''">
+            AND DATEDIFF(tg.create_time, #{param.createTime})
+        </if>
+        <if test="param.goodsName != null and param.goodsName != ''">
+            AND tg.goods_name LIKE CONCAT('%',#{param.goodsName},'%')
+        </if>
+    </select>
 </mapper>
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java
index 8578504..93bfc4e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java
@@ -1,9 +1,11 @@
 package com.ruoyi.system.controller.conslole;
 
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.system.api.domain.poji.config.SysClassification;
 import com.ruoyi.system.api.domain.poji.config.SysTag;
 import com.ruoyi.system.api.domain.poji.config.Activeness;
 import com.ruoyi.system.service.config.ActivenessService;
+import com.ruoyi.system.service.config.SysClassificationService;
 import com.ruoyi.system.service.config.SysTagService;
 import org.springframework.web.bind.annotation.*;
 
@@ -26,6 +28,9 @@
 
     @Resource
     private ActivenessService activenessService;
+
+    @Resource
+    private SysClassificationService sysClassificationService;
 
     /**
      * 获取系统标签
@@ -62,4 +67,14 @@
         return R.ok(activenessList);
     }
 
+    /**
+     * 通过id获取分类
+     * @return
+     */
+    @PostMapping("/getSysClassification")
+    public R<SysClassification> getSysClassification(@RequestBody Long classId)
+    {
+        SysClassification sysClassification = sysClassificationService.getById(classId);
+        return R.ok(sysClassification);
+    }
 }

--
Gitblit v1.7.1