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