From 92c873eda099b869e15108a79bf5223d3f0264a6 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期三, 06 八月 2025 09:40:44 +0800
Subject: [PATCH] 调整商品可以进行排序

---
 framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java          |   17 +++++++++++++++++
 manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java           |   12 ++++++++++--
 framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java |    3 ++-
 framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java                      |    4 ++++
 framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java              |    3 ++-
 framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java              |    3 +++
 framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsOperationDTO.java          |    2 ++
 consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java                        |    3 ++-
 framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java                  |    6 ++++++
 9 files changed, 48 insertions(+), 5 deletions(-)

diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java
index 78a065f..ea86173 100644
--- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java
+++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java
@@ -124,7 +124,7 @@
     @Override
     @RetryOperation
     public void onMessage(MessageExt messageExt) {
-
+        log.info("鑾峰彇鍒扮殑淇℃伅涓簕},鑾峰彇鍒扮殑鏍囩涓簕}",new String(messageExt.getBody()), GoodsTagsEnum.valueOf(messageExt.getTags()).name());
         switch (GoodsTagsEnum.valueOf(messageExt.getTags())) {
             //鏌ョ湅鍟嗗搧
             case VIEW_GOODS:
@@ -408,6 +408,7 @@
         goodsIndex.setMarketEnable(goods.getMarketEnable());
         goodsIndex.setPreSaleBeginDate(goods.getPreSaleBeginDate());
         goodsIndex.setPreSaleEndDate(goods.getPreSaleEndDate());
+        goodsIndex.setGoodsSort(goods.getGoodsSort());
         this.settingUpGoodsIndexOtherParam(goodsIndex);
         return goodsIndex;
     }
diff --git a/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java b/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java
index 0b2d077..c9fed7c 100644
--- a/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java
+++ b/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java
@@ -202,6 +202,9 @@
                         "      \"skuSource\": {\n" +
                         "        \"type\": \"long\"\n" +
                         "      },\n" +
+                        "      \"goodsSort\": {\n" +
+                        "        \"type\": \"long\"\n" +
+                        "      },\n" +
                         "      \"goodsId\": {\n" +
                         "        \"type\": \"text\",\n" +
                         "        \"fields\": {\n" +
diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java
index f233523..2cda83b 100644
--- a/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java
+++ b/framework/src/main/java/cn/lili/modules/goods/entity/dos/Goods.java
@@ -172,6 +172,9 @@
     private Date preSaleBeginDate;
     @ApiModelProperty(value = "鎶芥垚姣斾緥")
     private BigDecimal commission;
+
+    @ApiModelProperty(value = "鍟嗗搧鎺掑簭")
+    private Integer goodsSort;
     public Goods() {
     }
 
@@ -192,6 +195,7 @@
         this.preSaleEndDate = goodsOperationDTO.getPreSaleEndDate();
         this.preSaleBeginDate = goodsOperationDTO.getPreSaleBeginDate();
         this.commission =  goodsOperationDTO.getCommission();
+        this.goodsSort = goodsOperationDTO.getGoodsSort();
         if (goodsOperationDTO.getGoodsParamsDTOList() != null && goodsOperationDTO.getGoodsParamsDTOList().isEmpty()) {
             this.params = JSONUtil.toJsonStr(goodsOperationDTO.getGoodsParamsDTOList());
         }
diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsOperationDTO.java b/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsOperationDTO.java
index d96d861..b47e599 100644
--- a/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsOperationDTO.java
+++ b/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsOperationDTO.java
@@ -156,6 +156,8 @@
     @DecimalMax(value = "100",message = "鎶芥垚姣斾緥蹇呴』灏忎簬100")
     @DecimalMin(value = "0",message = "鎶芥垚姣斾緥蹇呴』澶т簬0")
     private BigDecimal commission;
+    @ApiModelProperty(value = "鍟嗗搧鎺掑簭")
+    private Integer goodsSort;
 
     public String getGoodsName() {
         //瀵瑰晢鍝佸鍚嶇О鍋氫竴涓瀬闄愬鐞嗐�傝繖閲屾病鏈夌敤xss杩囨护鏄洜涓簒ss杩囨护涓哄叏灞�杩囨护锛屽奖鍝嶅緢澶с��
diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java
index ee92e1d..f3c9054 100644
--- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java
+++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java
@@ -1,15 +1,19 @@
 package cn.lili.modules.goods.service;
 
+import cn.lili.common.vo.ResultMessage;
 import cn.lili.modules.goods.entity.dos.Goods;
 import cn.lili.modules.goods.entity.dto.GoodsOperationDTO;
 import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
+import cn.lili.modules.goods.entity.dto.GoodsSortDTO;
 import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
 import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
 import cn.lili.modules.goods.entity.vos.GoodsVO;
 import cn.lili.modules.store.entity.dos.Store;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.bind.annotation.RequestBody;
 
+import javax.validation.Valid;
 import java.util.List;
 
 /**
@@ -132,6 +136,8 @@
      * @return 鏇存柊缁撴灉
      */
     Boolean managerUpdateGoodsMarketAble(List<String> goodsIds, GoodsStatusEnum goodsStatusEnum, String underReason);
+
+    Boolean goodsSort( GoodsSortDTO req);
     /**
      * 鍒犻櫎鍟嗗搧
      *
diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java
index 48a6b24..8fb237a 100644
--- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java
@@ -18,6 +18,7 @@
 import cn.lili.modules.goods.entity.dto.GoodsOperationDTO;
 import cn.lili.modules.goods.entity.dto.GoodsParamsDTO;
 import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
+import cn.lili.modules.goods.entity.dto.GoodsSortDTO;
 import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
 import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
 import cn.lili.modules.goods.entity.vos.GoodsSkuVO;
@@ -423,6 +424,22 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
+    public Boolean goodsSort(GoodsSortDTO req) {
+        boolean result;
+        //妫�娴嬬鐞嗗憳鏉冮檺
+        this.checkManagerAuthority();
+        LambdaUpdateWrapper<Goods> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.set(Goods::getGoodsSort,req.getSort());
+        updateWrapper.eq(Goods::getId, req.getGoodsId());
+        result = this.update(updateWrapper);
+        List<String> goodsIds = new ArrayList<>();
+        goodsIds.add(req.getGoodsId());
+        this.updateEsGoods(goodsIds);
+        return result;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
     @SystemLogPoint(description = "鍒犻櫎鍟嗗搧", customerLog = "'鎿嶄綔瀵硅薄:['+#goodsIds+']'")
     public Boolean deleteGoods(List<String> goodsIds) {
 
diff --git a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java
index acb53be..7924f31 100644
--- a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java
+++ b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java
@@ -296,7 +296,8 @@
     @Field(type = FieldType.Text)
     @ApiModelProperty("鍟嗗搧淇冮攢娲诲姩闆嗗悎JSON锛宬ey 涓� 淇冮攢娲诲姩绫诲瀷锛寁alue 涓� 淇冮攢娲诲姩瀹炰綋淇℃伅 ")
     private String promotionMapJson;
-
+    @ApiModelProperty(value = "鍟嗗搧鎺掑簭")
+    private Integer goodsSort;
 
     public EsGoodsIndex(GoodsSku sku) {
         if (sku != null) {
diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java
index 53454ff..b0a4a72 100644
--- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java
@@ -103,6 +103,7 @@
         NativeSearchQuery searchQuery = searchQueryBuilder.build();
         searchQuery.setTrackTotalHits(true);
         log.info("searchGoods DSL:{}", searchQuery.getQuery().toString());
+        log.info("searchGoods sort:{}", searchQuery.getElasticsearchSorts().toString());
         SearchHits<EsGoodsIndex> search = restTemplate.search(searchQuery, EsGoodsIndex.class);
         return SearchHitSupport.searchPageFor(search, searchQuery.getPageable());
     }
@@ -476,7 +477,7 @@
 
 
             if (pageVo != null && CharSequenceUtil.isNotEmpty(pageVo.getOrder()) && CharSequenceUtil.isNotEmpty(pageVo.getSort())) {
-                nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort(pageVo.getSort()).order(SortOrder.valueOf(pageVo.getOrder().toUpperCase())));
+                nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort(pageVo.getSort()).order(SortOrder.valueOf(pageVo.getOrder().toUpperCase())).missing("_last"));
             } else {
                 nativeSearchQueryBuilder.withSort(SortBuilders.scoreSort().order(SortOrder.DESC));
             }
diff --git a/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java b/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java
index c25f8a7..d73f452 100644
--- a/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java
+++ b/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java
@@ -10,6 +10,7 @@
 import cn.lili.modules.goods.entity.dos.Goods;
 import cn.lili.modules.goods.entity.dos.GoodsSku;
 import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
+import cn.lili.modules.goods.entity.dto.GoodsSortDTO;
 import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
 import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
 import cn.lili.modules.goods.entity.vos.GoodsSkuVO;
@@ -25,11 +26,10 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
 import javax.validation.constraints.NotEmpty;
 import java.util.Arrays;
 import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * 绠$悊绔�,鍟嗗搧绠$悊鎺ュ彛
@@ -115,6 +115,14 @@
         }
         throw new ServiceException(ResultCode.GOODS_UNDER_ERROR);
     }
+    @DemoSite
+    @PostMapping(value = "/goods/sort")
+    public ResultMessage<Object> goodsSort(@RequestBody @Valid GoodsSortDTO req) {
+        if (Boolean.TRUE.equals(goodsService.goodsSort(req))) {
+            return ResultUtil.success();
+        }
+        throw  new RuntimeException("淇敼鎺掑簭澶辫触");
+    }
 
     @PreventDuplicateSubmissions
     @ApiOperation(value = "绠$悊鍛樺鏍稿晢鍝�", notes = "绠$悊鍛樺鏍稿晢鍝�")

--
Gitblit v1.8.0