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