From c793c47d45e9843e0c2d66b30c62e58d1886e983 Mon Sep 17 00:00:00 2001 From: misworga831 Date: Tue, 14 Mar 2023 19:37:22 +0800 Subject: [PATCH 01/12] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=90=9C=E7=B4=A2=EF=BC=8C=E5=85=B3=E9=97=AD=E5=95=86?= =?UTF-8?q?=E5=93=81=E5=88=A0=E9=99=A4=E7=B4=A2=E5=BC=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../goods/serviceimpl/GoodsServiceImpl.java | 2 +- .../serviceimpl/SystemLogServiceImpl.java | 20 +++++++++---------- .../store/serviceimpl/StoreServiceImpl.java | 11 +++++++--- 3 files changed, 18 insertions(+), 15 deletions(-) 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 e56898cb4..c1ae964b3 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 @@ -133,7 +133,7 @@ public class GoodsServiceImpl extends ServiceImpl implements //获取商品ID列表 List list = this.baseMapper.getGoodsIdByStoreId(storeId); //下架店铺下的商品 - updateGoodsMarketAble(list, GoodsStatusEnum.DOWN, "店铺关闭"); + this.updateGoodsMarketAbleByStoreId(storeId, GoodsStatusEnum.DOWN, "店铺关闭"); applicationEventPublisher.publishEvent(new TransactionCommitSendMQEvent("下架商品", rocketmqCustomProperties.getGoodsTopic(), GoodsTagsEnum.DOWN.name(), JSONUtil.toJsonStr(list))); diff --git a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java index 693794c04..bd8f63869 100644 --- a/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/permission/serviceimpl/SystemLogServiceImpl.java @@ -1,6 +1,5 @@ package cn.lili.modules.permission.serviceimpl; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.SearchVO; @@ -9,7 +8,9 @@ import cn.lili.modules.permission.repository.SystemLogRepository; import cn.lili.modules.permission.service.SystemLogService; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.elasticsearch.common.unit.Fuzziness; import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.MultiMatchQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.sort.SortBuilders; import org.elasticsearch.search.sort.SortOrder; @@ -82,25 +83,22 @@ public class SystemLogServiceImpl implements SystemLogService { } if (CharSequenceUtil.isNotEmpty(operatorName)) { - nativeSearchQueryBuilder.withFilter(QueryBuilders.wildcardQuery("username", "*" + operatorName + "*")); + nativeSearchQueryBuilder.withQuery(QueryBuilders.matchQuery("username", operatorName)); } if (CharSequenceUtil.isNotEmpty(key)) { - BoolQueryBuilder filterBuilder = new BoolQueryBuilder(); - filterBuilder.should(QueryBuilders.wildcardQuery("requestUrl", "*" + key + "*")) - .should(QueryBuilders.wildcardQuery("requestParam", "*" + key + "*")) - .should(QueryBuilders.wildcardQuery("responseBody", "*" + key + "*")) - .should(QueryBuilders.wildcardQuery("name", "*" + key + "*")); - nativeSearchQueryBuilder.withFilter(filterBuilder); + MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery(key, "requestUrl", "requestParam", "responseBody", "name"); + multiMatchQueryBuilder.fuzziness(Fuzziness.AUTO); + nativeSearchQueryBuilder.withFilter(multiMatchQueryBuilder); } //时间有效性判定 if (searchVo.getConvertStartDate() != null && searchVo.getConvertEndDate() != null) { BoolQueryBuilder filterBuilder = new BoolQueryBuilder(); //大于方法 - filterBuilder.must( + filterBuilder.filter( QueryBuilders.rangeQuery("createTime") - .gte(DateUtil.format(searchVo.getConvertStartDate(), "dd/MM/yyyy")) - .lte(DateUtil.format(searchVo.getConvertEndDate(), "dd/MM/yyyy")).format("dd/MM/yyyy||yyyy")); + .gte(searchVo.getConvertStartDate().getTime()) + .lte(searchVo.getConvertEndDate().getTime())); nativeSearchQueryBuilder.withFilter(filterBuilder); } diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java index 4c6931c99..e7928cf44 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java @@ -235,11 +235,16 @@ public class StoreServiceImpl extends ServiceImpl implements public boolean disable(String id) { Store store = this.getById(id); if (store != null) { - store.setStoreDisable(StoreStatusEnum.CLOSED.value()); + LambdaUpdateWrapper storeLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + storeLambdaUpdateWrapper.eq(Store::getId, id); + storeLambdaUpdateWrapper.set(Store::getStoreDisable, StoreStatusEnum.CLOSED.value()); + boolean update = this.update(storeLambdaUpdateWrapper); //下架所有此店铺商品 - goodsService.underStoreGoods(id); - return this.updateById(store); + if (update) { + goodsService.underStoreGoods(id); + } + return update; } throw new ServiceException(ResultCode.STORE_NOT_EXIST); From c2abc4e2e4ecd8c9267dac1dc26940127bd76a20 Mon Sep 17 00:00:00 2001 From: chc <1501738723@qq.com> Date: Mon, 20 Mar 2023 12:03:34 +0800 Subject: [PATCH 02/12] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DIM=E6=96=B0?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=B8=8E=E8=87=AA=E5=B7=B1=E5=AF=B9=E8=AF=9D?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/im/service/ImTalkService.java | 7 +++ .../im/serviceimpl/ImTalkServiceImpl.java | 44 +++++++++++++++++++ .../lili/controller/im/ImTalkController.java | 2 +- 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/im/service/ImTalkService.java b/framework/src/main/java/cn/lili/modules/im/service/ImTalkService.java index 3b6f92eab..b648a393f 100644 --- a/framework/src/main/java/cn/lili/modules/im/service/ImTalkService.java +++ b/framework/src/main/java/cn/lili/modules/im/service/ImTalkService.java @@ -21,6 +21,13 @@ public interface ImTalkService extends IService { */ ImTalk getTalkByUser(String userId1); + /** + * 获取与某人的聊天 + * @param userId + * @return + */ + ImTalkVO getTalkByUserId(String userId); + /** * 置顶消息 * diff --git a/framework/src/main/java/cn/lili/modules/im/serviceimpl/ImTalkServiceImpl.java b/framework/src/main/java/cn/lili/modules/im/serviceimpl/ImTalkServiceImpl.java index c03f4c017..b5a4b17f3 100644 --- a/framework/src/main/java/cn/lili/modules/im/serviceimpl/ImTalkServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/im/serviceimpl/ImTalkServiceImpl.java @@ -88,6 +88,50 @@ public class ImTalkServiceImpl extends ServiceImpl impleme return imTalk; } + @Override + public ImTalkVO getTalkByUserId(String userId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); + //登录用户的Id + String selfId = ""; + //查看当前用户角色对Id进行赋值 + if(UserEnums.STORE.equals(currentUser.getRole())){ + selfId = currentUser.getStoreId(); + }else if(UserEnums.MEMBER.equals(currentUser.getRole())){ + selfId = currentUser.getId(); + } + //小数在前保证永远是同一个对话 + String finalSelfId = selfId; + queryWrapper.and(wq-> wq.eq(ImTalk::getUserId2, userId).eq(ImTalk::getUserId1, finalSelfId).or().eq(ImTalk::getUserId2, finalSelfId).eq(ImTalk::getUserId1, userId)); + ImTalk imTalk = this.getOne(queryWrapper); + //如果没有聊天,则创建聊天 + if (imTalk == null) { + //当自己为店铺时 + if(UserEnums.STORE.equals(currentUser.getRole())){ + Store selfStore = storeService.getById(selfId); + //没有这个用户信息 + Member other = memberService.getById(userId); + if(other == null){ + return null; + } + //自己为店铺其他人必定为用户 + imTalk = new ImTalk(other,selfStore); + }else if(UserEnums.MEMBER.equals(currentUser.getRole())){ + //没有这个店铺信息 + Member self = memberService.getById(selfId); + Member otherMember = memberService.getById(userId); + Store otherStore = storeService.getById(userId); + if(otherStore != null){ + imTalk = new ImTalk(self, otherStore); + }else if (otherMember != null){ + imTalk = new ImTalk(self, otherMember); + } + } + this.save(imTalk); + } + return new ImTalkVO(imTalk,currentUser.getId()); + } + /** * 发起聊天后,如果聊天不可见为true,则需要修正 * diff --git a/im-api/src/main/java/cn/lili/controller/im/ImTalkController.java b/im-api/src/main/java/cn/lili/controller/im/ImTalkController.java index 3ecbcd355..eee31a4a7 100644 --- a/im-api/src/main/java/cn/lili/controller/im/ImTalkController.java +++ b/im-api/src/main/java/cn/lili/controller/im/ImTalkController.java @@ -46,7 +46,7 @@ public class ImTalkController { @GetMapping(value = "/by/user/{userId}") @ApiOperation(value = "查看与某人聊天详情") public ResultMessage getByUser(@PathVariable String userId) { - return ResultUtil.data(new ImTalkVO(imTalkService.getTalkByUser(userId),userId)); + return ResultUtil.data(imTalkService.getTalkByUserId(userId)); } @GetMapping(value = "/top") From 3fef3307078bf60fe109e9afddccba0daa39d71e Mon Sep 17 00:00:00 2001 From: Chopper711 <1814994716@qq.com> Date: Tue, 21 Mar 2023 06:26:02 +0000 Subject: [PATCH 03/12] update README.md. Signed-off-by: Chopper711 <1814994716@qq.com> --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c781f7f8d..41d30105d 100644 --- a/README.md +++ b/README.md @@ -165,8 +165,8 @@ PS:手机验证码为 ‘111111’ ##### 交流 qq 1群 961316482(已满) ##### 交流 qq 2群 875294241(已满) ##### 交流 qq 3群 263785057(已满) -##### 交流 qq 4群 674617534 - +##### 交流 qq 4群 674617534(已满) +##### 交流 qq 5群 594675235 ### 附录 有人有自己的学习视频、学习记录文档、希望宣传关联开源项目等均可以私聊仓库所有者。 From 0c652eac6379cf686711974c6e7283fcd5787452 Mon Sep 17 00:00:00 2001 From: misworga831 Date: Tue, 21 Mar 2023 14:39:53 +0800 Subject: [PATCH 04/12] =?UTF-8?q?fix:=20hutool=20=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E6=9B=B4=E6=96=B0,=E4=BE=9D=E8=B5=96=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E8=8E=B7=E5=8F=96=E5=95=86=E5=93=81=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- framework/pom.xml | 4 ---- .../lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java | 5 ++--- im-api/pom.xml | 5 +++++ pom.xml | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/framework/pom.xml b/framework/pom.xml index 3003fb452..c14cf3710 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -51,10 +51,6 @@ - - org.springframework.boot - spring-boot-starter-websocket - org.springframework.boot spring-boot-starter-web diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index 2cc364b10..c516b6c23 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -312,9 +312,8 @@ public class GoodsSkuServiceImpl extends ServiceImpl i map.put("data", goodsSkuDetail); //获取分类 - String[] split = goodsSkuDetail.getCategoryPath().split(","); - map.put("wholesaleList", wholesaleService.findByGoodsId(goodsSkuDetail.getGoodsId())); - map.put("categoryName", categoryService.getCategoryNameByIds(Arrays.asList(split))); + map.put("wholesaleList", GoodsSalesModeEnum.WHOLESALE.name().equals(goodsVO.getSalesModel()) ? wholesaleService.findByGoodsId(goodsSkuDetail.getGoodsId()) : Collections.emptyList()); + map.put("categoryName", CharSequenceUtil.isNotEmpty(goodsIndex.getCategoryNamePath()) ? goodsIndex.getCategoryNamePath().split(",") : null); //获取规格信息 map.put("specs", this.groupBySkuAndSpec(goodsVO.getSkuList())); diff --git a/im-api/pom.xml b/im-api/pom.xml index 7f823cf47..8f6efc474 100644 --- a/im-api/pom.xml +++ b/im-api/pom.xml @@ -19,6 +19,11 @@ framework ${revision} + + + org.springframework.boot + spring-boot-starter-websocket + diff --git a/pom.xml b/pom.xml index 1d30464c3..e47063660 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ 1 4.22.32.ALL 3.5.1 - 5.8.0 + 5.8.14 2.0.3.RELEASE 3.0.4 2.9.10 From a21f4800abb9594706414b4fe1bc4c80edeb9e26 Mon Sep 17 00:00:00 2001 From: Chopper711 Date: Wed, 22 Mar 2023 17:34:57 +0800 Subject: [PATCH 05/12] =?UTF-8?q?>=20feat:=20=E6=96=B0=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=88feature=EF=BC=89=E7=83=AD=E8=AF=8D=E8=BF=87=E6=BB=A4sq?= =?UTF-8?q?l=E6=B3=A8=E5=85=A5=E5=85=B3=E9=94=AE=E5=AD=97=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/EsGoodsSearchServiceImpl.java | 6 +- .../lili/modules/search/utils/SqlFilter.java | 59 +++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 framework/src/main/java/cn/lili/modules/search/utils/SqlFilter.java 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 330f17edd..6b0cb37aa 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 @@ -15,6 +15,7 @@ import cn.lili.modules.search.entity.dto.EsGoodsSearchDTO; import cn.lili.modules.search.entity.dto.ParamOptions; import cn.lili.modules.search.entity.dto.SelectorOptions; import cn.lili.modules.search.service.EsGoodsSearchService; +import cn.lili.modules.search.utils.SqlFilter; import com.alibaba.druid.util.StringUtils; import lombok.extern.slf4j.Slf4j; import org.apache.lucene.search.join.ScoreMode; @@ -81,7 +82,10 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService { @Override public SearchPage searchGoods(EsGoodsSearchDTO searchDTO, PageVO pageVo) { - if (CharSequenceUtil.isNotBlank(searchDTO.getKeyword())) { + + //如果搜索词不为空,且明显不是sql注入,那么就将搜索词加入热搜词 + //PS:线上环境运行很多客户反馈被sql攻击,写在了搜索热词里,这里控制命中关键字就不做热词统计,如果线上比较严格可以调用关键词替换,不过不建议这么做 + if (CharSequenceUtil.isNotBlank(searchDTO.getKeyword()) && !SqlFilter.hit(searchDTO.getKeyword())) { cache.incrementScore(CachePrefix.HOT_WORD.getPrefix(), searchDTO.getKeyword()); } NativeSearchQueryBuilder searchQueryBuilder = createSearchQueryBuilder(searchDTO, pageVo); diff --git a/framework/src/main/java/cn/lili/modules/search/utils/SqlFilter.java b/framework/src/main/java/cn/lili/modules/search/utils/SqlFilter.java new file mode 100644 index 000000000..f1a2d374b --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/search/utils/SqlFilter.java @@ -0,0 +1,59 @@ +package cn.lili.modules.search.utils; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** + * sql 关键字过滤 + * + * @author liushuai(liushuai711 @ gmail.com) + * @version v4.0 + * @Description: + * @since 2023/3/22 17:27 + */ + +public class SqlFilter { + + private static final Set SQL_KEYWORDS = new HashSet<>(Arrays.asList( + "SELECT", "FROM", "WHERE", "AND", "OR", "NOT", "INSERT", "UPDATE", "DELETE", "CREATE", + "TABLE", "INDEX", "VIEW", "DROP", "ALTER", "COLUMN", "ADD", "SET", "GROUP", "BY", + "HAVING", "ORDER", "ASC", "DESC", "LIKE", "IN", "BETWEEN", "IS", "NULL", "TRUE", "FALSE", + "JOIN", "LEFT", "RIGHT", "INNER", "OUTER", "FULL", "ON", "AS", "DISTINCT", "COUNT", + "MAX", "MIN", "SUM", "AVG" + )); + + + /** + * 关键字命中 + * + * @param sql + * @return + */ + public static Boolean hit(String sql) { + String[] tokens = sql.split("\\s+"); + for (String token : tokens) { + if (!SQL_KEYWORDS.contains(token.toUpperCase())) { + return true; + } + } + return false; + } + + /** + * 关键字替换 + * + * @param sql + * @return + */ + public static String filterSql(String sql) { + String[] tokens = sql.split("\\s+"); + StringBuilder filteredSql = new StringBuilder(); + for (String token : tokens) { + if (!SQL_KEYWORDS.contains(token.toUpperCase())) { + filteredSql.append(token).append(" "); + } + } + return filteredSql.toString().trim(); + } +} From fae4dcaae26d818d223946567a5657f0202025ea Mon Sep 17 00:00:00 2001 From: misworga831 Date: Thu, 23 Mar 2023 09:59:35 +0800 Subject: [PATCH 06/12] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E4=BC=9A?= =?UTF-8?q?=E5=91=98=E4=BC=98=E6=83=A0=E5=88=B8=E9=80=80=E8=BF=98=E5=90=8E?= =?UTF-8?q?=EF=BC=8C=E5=8F=AF=E8=83=BD=E6=97=A0=E6=B3=95=E5=86=8D=E6=AC=A1?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E9=97=AE=E9=A2=98=E3=80=82=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=95=86=E5=93=81=E7=B4=A2=E5=BC=95=EF=BC=8C?= =?UTF-8?q?=E5=8F=AF=E8=83=BD=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/promotion/serviceimpl/MemberCouponServiceImpl.java | 1 + .../modules/search/serviceimpl/EsGoodsIndexServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java index 1e130dc2c..467d48622 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java @@ -293,6 +293,7 @@ public class MemberCouponServiceImpl extends ServiceImpl updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.in(MemberCoupon::getId, memberCouponIds); updateWrapper.set(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.NEW.name()); + updateWrapper.set(MemberCoupon::getConsumptionTime, null); return this.update(updateWrapper); } diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index 562116603..3c12ceefe 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -455,7 +455,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements public void deleteIndex(Map queryFields) { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); for (Map.Entry entry : queryFields.entrySet()) { - boolQueryBuilder.filter(QueryBuilders.termsQuery(entry.getKey(), entry.getValue())); + boolQueryBuilder.filter(QueryBuilders.termsQuery(entry.getKey(), entry.getValue().toString())); } DeleteByQueryRequest deleteByQueryRequest = new DeleteByQueryRequest(); From 917d9437b666aabec71f5668a9cb1f070c867470 Mon Sep 17 00:00:00 2001 From: 17600048398 <277692624@qq.com> Date: Thu, 23 Mar 2023 11:31:30 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E5=88=86=E9=94=80=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E4=BD=A3=E9=87=91=E7=BB=93=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/impl/DistributionOrderExecute.java | 27 ++- .../impl/order/OrderEveryDayTaskExecute.java | 15 ++ .../entity/dos/DistributionOrder.java | 2 +- .../enums/DistributionOrderStatusEnum.java | 2 + .../service/DistributionOrderService.java | 17 ++ .../DistributionOrderServiceImpl.java | 158 ++++++++++++++++-- 6 files changed, 195 insertions(+), 26 deletions(-) diff --git a/consumer/src/main/java/cn/lili/event/impl/DistributionOrderExecute.java b/consumer/src/main/java/cn/lili/event/impl/DistributionOrderExecute.java index 4edd7f41d..53812919a 100644 --- a/consumer/src/main/java/cn/lili/event/impl/DistributionOrderExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/DistributionOrderExecute.java @@ -1,6 +1,8 @@ package cn.lili.event.impl; +import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; +import cn.hutool.json.JSONUtil; import cn.lili.event.AfterSaleStatusChangeEvent; import cn.lili.event.OrderStatusChangeEvent; import cn.lili.modules.distribution.entity.dos.DistributionOrder; @@ -10,6 +12,10 @@ import cn.lili.modules.distribution.service.DistributionOrderService; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; import cn.lili.modules.order.order.entity.dto.OrderMessage; import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum; +import cn.lili.modules.system.entity.dos.Setting; +import cn.lili.modules.system.entity.dto.DistributionSetting; +import cn.lili.modules.system.entity.enums.SettingEnum; +import cn.lili.modules.system.service.SettingService; import cn.lili.timetask.handler.EveryDayExecute; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.extern.slf4j.Slf4j; @@ -39,6 +45,9 @@ public class DistributionOrderExecute implements OrderStatusChangeEvent, EveryDa @Resource private DistributionOrderMapper distributionOrderMapper; + @Autowired + private SettingService settingService; + @Override public void orderChange(OrderMessage orderMessage) { @@ -65,14 +74,16 @@ public class DistributionOrderExecute implements OrderStatusChangeEvent, EveryDa @Override public void execute() { - //计算分销提佣 - distributionOrderMapper.rebate(DistributionOrderStatusEnum.WAIT_BILL.name(), new DateTime()); - - //修改分销订单状态 - distributionOrderService.update(new LambdaUpdateWrapper() - .eq(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_BILL.name()) - .le(DistributionOrder::getSettleCycle, new DateTime()) - .set(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_CASH.name())); + log.info("分销订单定时开始执行"); + //设置结算天数(解冻日期) + Setting setting = settingService.get(SettingEnum.DISTRIBUTION_SETTING.name()); + DistributionSetting distributionSetting = JSONUtil.toBean(setting.getSettingValue(), DistributionSetting.class); + //解冻时间 + DateTime dateTime = new DateTime(); + //当前时间-结算天数=最终结算时间 + dateTime = dateTime.offsetNew(DateField.DAY_OF_MONTH, -distributionSetting.getCashDay()); + //分销人员订单结算 + distributionOrderService.updateRebate(dateTime,DistributionOrderStatusEnum.WAIT_BILL.name()); } diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/order/OrderEveryDayTaskExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/order/OrderEveryDayTaskExecute.java index ade5ea906..6370b2603 100644 --- a/consumer/src/main/java/cn/lili/timetask/handler/impl/order/OrderEveryDayTaskExecute.java +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/order/OrderEveryDayTaskExecute.java @@ -2,9 +2,12 @@ package cn.lili.timetask.handler.impl.order; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; +import cn.lili.modules.distribution.service.DistributionOrderService; import cn.lili.modules.member.entity.dto.MemberEvaluationDTO; import cn.lili.modules.member.entity.enums.EvaluationGradeEnum; import cn.lili.modules.member.service.MemberEvaluationService; @@ -69,6 +72,9 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute { @Autowired private AfterSaleService afterSaleService; + @Autowired + private DistributionOrderService distributionOrderService; + /** * 执行每日任务 */ @@ -179,6 +185,15 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute { .set(OrderItem::getAfterSaleStatus, OrderItemAfterSaleStatusEnum.EXPIRED.name()) .in(OrderItem::getId, orderItemIdList); orderItemService.update(lambdaUpdateWrapper); + //修改订售后状态 + List orderItemsList = orderItems.stream() + .map((orderItem)->{ + orderItem.setAfterSaleStatus(OrderItemAfterSaleStatusEnum.EXPIRED.name()); + return orderItem; + }) + .collect(Collectors.toList()); + //修改对应分销订单状态 + distributionOrderService.updateDistributionOrderStatus(orderItemsList); } } diff --git a/framework/src/main/java/cn/lili/modules/distribution/entity/dos/DistributionOrder.java b/framework/src/main/java/cn/lili/modules/distribution/entity/dos/DistributionOrder.java index fc760ac4f..f29b99878 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/entity/dos/DistributionOrder.java +++ b/framework/src/main/java/cn/lili/modules/distribution/entity/dos/DistributionOrder.java @@ -81,7 +81,7 @@ public class DistributionOrder extends BaseIdEntity { private Integer num; public DistributionOrder(StoreFlow storeFlow) { - distributionOrderStatus = DistributionOrderStatusEnum.WAIT_BILL.name(); + distributionOrderStatus = DistributionOrderStatusEnum.NO_COMPLETED.name(); memberId = storeFlow.getMemberId(); memberName = storeFlow.getMemberName(); rebate = storeFlow.getDistributionRebate(); diff --git a/framework/src/main/java/cn/lili/modules/distribution/entity/enums/DistributionOrderStatusEnum.java b/framework/src/main/java/cn/lili/modules/distribution/entity/enums/DistributionOrderStatusEnum.java index 16c6fdc0b..240b97521 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/entity/enums/DistributionOrderStatusEnum.java +++ b/framework/src/main/java/cn/lili/modules/distribution/entity/enums/DistributionOrderStatusEnum.java @@ -6,6 +6,8 @@ package cn.lili.modules.distribution.entity.enums; * @author pikachu */ public enum DistributionOrderStatusEnum { + //未完成 + NO_COMPLETED("未完成"), //待结算(冻结) WAIT_BILL("待结算"), //待提现 diff --git a/framework/src/main/java/cn/lili/modules/distribution/service/DistributionOrderService.java b/framework/src/main/java/cn/lili/modules/distribution/service/DistributionOrderService.java index 122ba134f..7b52cf369 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/service/DistributionOrderService.java +++ b/framework/src/main/java/cn/lili/modules/distribution/service/DistributionOrderService.java @@ -1,10 +1,14 @@ package cn.lili.modules.distribution.service; +import cn.hutool.core.date.DateTime; import cn.lili.modules.distribution.entity.dos.DistributionOrder; import cn.lili.modules.distribution.entity.vos.DistributionOrderSearchParams; +import cn.lili.modules.order.order.entity.dos.OrderItem; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * 分销订单业务层 @@ -45,4 +49,17 @@ public interface DistributionOrderService extends IService { */ void refundOrder(String afterSaleSn); + /** + * 分销订单状态修改 + * + * @param orderItems + */ + void updateDistributionOrderStatus(List orderItems); + + /** + * 分销订单结算 + * @param dateTime + * @param distributionOrderStatus + */ + void updateRebate(DateTime dateTime, String distributionOrderStatus); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionOrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionOrderServiceImpl.java index 6fb74ad72..c44efde82 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionOrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionOrderServiceImpl.java @@ -1,19 +1,26 @@ package cn.lili.modules.distribution.serviceimpl; +import cn.hutool.core.collection.ListUtil; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import cn.lili.common.utils.CurrencyUtil; +import cn.lili.common.utils.SpringContextUtil; import cn.lili.modules.distribution.entity.dos.Distribution; import cn.lili.modules.distribution.entity.dos.DistributionOrder; import cn.lili.modules.distribution.entity.enums.DistributionOrderStatusEnum; +import cn.lili.modules.distribution.entity.enums.DistributionStatusEnum; import cn.lili.modules.distribution.entity.vos.DistributionOrderSearchParams; import cn.lili.modules.distribution.mapper.DistributionOrderMapper; import cn.lili.modules.distribution.service.DistributionOrderService; import cn.lili.modules.distribution.service.DistributionService; import cn.lili.modules.order.order.entity.dos.Order; +import cn.lili.modules.order.order.entity.dos.OrderItem; import cn.lili.modules.order.order.entity.dos.StoreFlow; import cn.lili.modules.order.order.entity.dto.StoreFlowQueryDTO; +import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum; import cn.lili.modules.order.order.entity.enums.PayStatusEnum; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.StoreFlowService; @@ -31,7 +38,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -107,14 +118,7 @@ public class DistributionOrderServiceImpl extends ServiceImpl() - .eq(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_BILL.name()) - .le(DistributionOrder::getSettleCycle, dateTime) - .set(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.WAIT_CASH.name())); + dateTime = dateTime.offsetNew(DateField.DAY_OF_MONTH, -distributionSetting.getCashDay()); + //防止事务失效,采用上下文获取bean + DistributionOrderService bean = SpringContextUtil.getBean(DistributionOrderService.class); + //分销订单结算 + bean.updateRebate(dateTime, DistributionOrderStatusEnum.WAIT_BILL.name()); } } @@ -214,4 +214,128 @@ public class DistributionOrderServiceImpl extends ServiceImpl orderItems) { + if (orderItems.isEmpty()) { + return; + } + + //获取未完成分销订单 + List distributionOrderList = this.list(new LambdaQueryWrapper() + .eq(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.NO_COMPLETED.name())); + + if (distributionOrderList.isEmpty()) { + return; + } + + List list = ListUtil.list(false); + + orderItems.stream().forEach(orderItem -> { + //订单售后状态为已失效并且投诉状态为已失效 + if (StrUtil.equals(OrderItemAfterSaleStatusEnum.EXPIRED.name(), orderItem.getAfterSaleStatus())) { + + + List collect = distributionOrderList.stream() + .filter(distributionOrder -> StrUtil.equals(distributionOrder.getOrderItemSn(), orderItem.getSn())) + .map((distributionOrder) -> { + distributionOrder.setDistributionOrderStatus(DistributionOrderStatusEnum.WAIT_BILL.name()); + distributionOrder.setSettleCycle(new Date()); + return distributionOrder; + }) + .collect(Collectors.toList()); + + list.addAll(collect); + } + + }); + + if (!list.isEmpty()) { + //批量修改分销订单结算状态 + this.updateBatchById(list); + } + } + + @Override + public void updateRebate(DateTime dateTime, String distributionOrderStatus) { + //结算时间延后五分钟 + dateTime = dateTime.offsetNew(DateField.MINUTE, 5); + //获取待结算订单 + List distributionOrderList = this.list(new LambdaQueryWrapper() + .eq(DistributionOrder::getDistributionOrderStatus, distributionOrderStatus) + .isNotNull(DistributionOrder::getSettleCycle) + .le(DistributionOrder::getSettleCycle, dateTime)); + //校验待结算订单 + if (ObjectUtil.isNotNull(distributionOrderList) && distributionOrderList.size() > 0) { + //结算分销人员信息列表 + List distributionUpdateList = new ArrayList<>(); + //获取分销员信息 + List distributionList = distributionService.list(new LambdaQueryWrapper() + .eq(Distribution::getDistributionStatus, DistributionStatusEnum.PASS.name())); + //根据销人员获取对应分销订单 + Map> distributionOrderList1 = distributionOrderList.stream() + .collect(Collectors.groupingBy(DistributionOrder::getDistributionId)); + + //校验分销订单不为空 + if (ObjectUtil.isNotNull(distributionOrderList1) && distributionOrderList1.size() > 0) { + //遍历分销订单map + distributionOrderList1.forEach((key, value) -> { + //计算分销结算金额 + distributionUpdateList.add(checkDistribution(key, value, distributionList)); + }); + } + + //校验分销信息列表不为空 + if (ObjectUtil.isNotNull(distributionUpdateList) && !distributionUpdateList.isEmpty()) { + //修改分销员收益 + distributionService.updateBatchById(distributionUpdateList); + distributionOrderList.stream().forEach(distributionOrder -> { + //修改分销订单状态为待提现 + distributionOrder.setDistributionOrderStatus(DistributionOrderStatusEnum.WAIT_CASH.name()); + }); + } + + //修改分销订单状态 + this.updateBatchById(distributionOrderList); + } + + + } + + + /** + * 计算分销结算金额 + * + * @param distributionId 分销ID + * @param list 分销订单 + * @param distributionList 分销列表 + * @return + */ + public Distribution checkDistribution(String distributionId, List list, List distributionList) { + //获取所有待结算订单分销人员信息 + Distribution distribution = distributionList.parallelStream().filter(a -> StrUtil.equals(a.getId(), distributionId)).collect(Collectors.toList()).get(0); + + //获取分销订单总金额 + double rebate = list.stream().mapToDouble(DistributionOrder::getRebate).sum(); + + //检验单分销人员冻结金额为负数时.扣除负数冻结金额后再结算 + if (distribution.getCommissionFrozen() < 0) { + rebate = CurrencyUtil.add(distribution.getCommissionFrozen() == null ? 0.0 : distribution.getCommissionFrozen(), rebate); + } + //结算订单总金额+分销可提现金额 + Double canRebate = CurrencyUtil.add(rebate, distribution.getCanRebate() == null ? 0.0 : distribution.getCanRebate()); + //结算金额小于0 + if (canRebate < 0) { + //结算订单总金额+分销可提现金额 + distribution.setCanRebate(0.0); + //冻结金额 + distribution.setCommissionFrozen(canRebate); + } else { + //结算订单总金额+分销可提现金额 + distribution.setCanRebate(canRebate); + //冻结金额 + distribution.setCommissionFrozen(0.0); + } + + return distribution; + } } \ No newline at end of file From b95712aef33d827d81298c85985de165a8d2460e Mon Sep 17 00:00:00 2001 From: Chopper711 Date: Thu, 23 Mar 2023 16:45:14 +0800 Subject: [PATCH 08/12] =?UTF-8?q?fix:=20=E5=BA=97=E9=93=BA=E8=A2=AB?= =?UTF-8?q?=E6=8B=92=E7=BB=9D=E5=90=8E=E6=97=A0=E6=B3=95=E5=86=8D=E6=AC=A1?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E5=BA=97=E9=93=BA=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E3=80=82=E4=BF=AE=E6=94=B9=E4=B8=BA=E5=BA=97=E9=93=BA?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=9C=A8=E7=94=B3=E8=AF=B7=E4=B8=AD=E3=80=81?= =?UTF-8?q?=E5=BC=80=E5=90=AF=E3=80=81=E5=85=B3=E9=97=AD=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=97=B6=E6=97=A0=E6=B3=95=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/store/serviceimpl/StoreServiceImpl.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java index 4c6931c99..ea77b45bb 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java @@ -342,10 +342,11 @@ public class StoreServiceImpl extends ServiceImpl implements */ private void checkStoreStatus(Store store) { - //如果店铺状态为申请中或者已申请,则正常走流程,否则抛出异常 - if (store.getStoreDisable().equals(StoreStatusEnum.APPLY.name()) || store.getStoreDisable().equals(StoreStatusEnum.APPLYING.name())) { - return; - } else { + //如果店铺状态为已开启、已关闭、申请中,则抛出异常 + if (store.getStoreDisable().equals(StoreStatusEnum.OPEN.name()) + || store.getStoreDisable().equals(StoreStatusEnum.CLOSED.name()) + || store.getStoreDisable().equals(StoreStatusEnum.APPLYING.name()) + ) { throw new ServiceException(ResultCode.STORE_STATUS_ERROR); } @@ -381,7 +382,7 @@ public class StoreServiceImpl extends ServiceImpl implements AuthUser currentUser = UserContext.getCurrentUser(); List skuIdList = new ArrayList<>(); for (FootPrint footPrint : footprintService.list(new LambdaUpdateWrapper().eq(FootPrint::getStoreId, currentUser.getStoreId()).eq(FootPrint::getMemberId, memberId))) { - if(footPrint.getSkuId() != null){ + if (footPrint.getSkuId() != null) { skuIdList.add(footPrint.getSkuId()); } } From 25f8b103bfe471d1861979feba52825bc12c792c Mon Sep 17 00:00:00 2001 From: Chopper711 Date: Thu, 23 Mar 2023 16:54:28 +0800 Subject: [PATCH 09/12] =?UTF-8?q?fix:=E4=BB=A3=E7=A0=81=E4=B8=AD=E4=B8=A4?= =?UTF-8?q?=E6=AC=A1=E5=AF=B9=E5=BA=97=E9=93=BA=E8=BF=9B=E8=A1=8C=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86=EF=BC=8C=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E5=BA=97=E9=93=BA=E5=86=99=E5=85=A5=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E7=9A=84=E6=97=A0=E6=95=88=E4=BB=A3=E7=A0=81=E5=8E=BB=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/modules/store/serviceimpl/StoreServiceImpl.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java index b0e9422a3..5490043dd 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java @@ -320,7 +320,6 @@ public class StoreServiceImpl extends ServiceImpl implements //校验迪纳普状态 checkStoreStatus(store); BeanUtil.copyProperties(storeOtherInfoDTO, store); - this.updateById(store); StoreDetail storeDetail = storeDetailService.getStoreDetail(store.getId()); //设置店铺的其他信息 @@ -332,11 +331,7 @@ public class StoreServiceImpl extends ServiceImpl implements //修改店铺详细信息 storeDetailService.updateById(storeDetail); //设置店铺名称,修改店铺信息 - store.setStoreName(storeOtherInfoDTO.getStoreName()); store.setStoreDisable(StoreStatusEnum.APPLYING.name()); - store.setStoreCenter(storeOtherInfoDTO.getStoreCenter()); - store.setStoreDesc(storeOtherInfoDTO.getStoreDesc()); - store.setStoreLogo(storeOtherInfoDTO.getStoreLogo()); return this.updateById(store); } From da2885939897bf3c52950ee9b11744a0ffa1d7db Mon Sep 17 00:00:00 2001 From: chc <1501738723@qq.com> Date: Fri, 24 Mar 2023 16:27:20 +0800 Subject: [PATCH 10/12] =?UTF-8?q?fix:=20=E5=85=B3=E9=97=AD=E7=89=A9?= =?UTF-8?q?=E6=B5=81=E5=85=AC=E5=8F=B8=E6=97=A0=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lili/controller/other/LogisticsStoreController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/seller-api/src/main/java/cn/lili/controller/other/LogisticsStoreController.java b/seller-api/src/main/java/cn/lili/controller/other/LogisticsStoreController.java index 40c0f7836..3219474fd 100644 --- a/seller-api/src/main/java/cn/lili/controller/other/LogisticsStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/other/LogisticsStoreController.java @@ -82,7 +82,7 @@ public class LogisticsStoreController { @DeleteMapping(value = "/{id}") public ResultMessage cancel(@PathVariable String id) { String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId(); - boolean remove = storeLogisticsService.remove(new LambdaQueryWrapper().eq(StoreLogistics::getId, id).eq(StoreLogistics::getStoreId, storeId)); + boolean remove = storeLogisticsService.remove(new LambdaQueryWrapper().eq(StoreLogistics::getLogisticsId, id).eq(StoreLogistics::getStoreId, storeId)); return ResultUtil.data(remove); } From 5c164f89cc0134f7a3c15b6928847a4e3ce2d6e3 Mon Sep 17 00:00:00 2001 From: chc <1501738723@qq.com> Date: Fri, 24 Mar 2023 17:39:43 +0800 Subject: [PATCH 11/12] =?UTF-8?q?fix:=20config/application.yml=20=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E6=9B=B4=E6=94=B9127?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/application.yml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/config/application.yml b/config/application.yml index 4e5c9dac3..ff9ed60e2 100644 --- a/config/application.yml +++ b/config/application.yml @@ -24,13 +24,13 @@ spring: boot: admin: client: - url: http://192.168.0.108:8000 + url: http://127.0.0.1:8000 cache: type: redis # Redis redis: - host: 192.168.0.108 - port: 30379 + host: 127.0.0.1 + port: 6379 password: lilishop lettuce: pool: @@ -60,7 +60,7 @@ spring: default-datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://192.168.0.108:30306/kuaidi100?useUnicode=true&characterEncoding=utf-8&useSSL=false&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + url: jdbc:mysql://127.0.0.1:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root password: lilishop maxActive: 50 @@ -241,16 +241,16 @@ lili: sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6 #域名 domain: - pc: http://192.168.0.108:8888 - wap: http://192.168.0.108:8888 - seller: http://192.168.0.108:8888 - admin: http://192.168.0.108:8888 + pc: http://127.0.0.1:8888 + wap: http://127.0.0.1:8888 + seller: http://127.0.0.1:8888 + admin: http://127.0.0.1:8888 #api地址 api: buyer: https://z171l91606.51mypc.cn - base: http://192.168.0.108:8888 - manager: http://192.168.0.108:8888 - seller: http://192.168.0.108:8888 + base: http://127.0.0.1:8888 + manager: http://127.0.0.1:8888 + seller: http://127.0.0.1:8888 # jwt 细节设定 jwt-setting: @@ -269,7 +269,7 @@ lili: data: elasticsearch: cluster-name: elasticsearch - cluster-nodes: 192.168.0.108:30920 + cluster-nodes: 127.0.0.1:9200 index: number-of-replicas: 0 number-of-shards: 3 @@ -301,7 +301,7 @@ lili: after-sale-topic: lili_after_sale_topic after-sale-group: lili_after_sale_group rocketmq: - name-server: 192.168.0.108:30876 + name-server: 127.0.0.1:9876 isVIPChannel: false producer: group: lili_group @@ -310,7 +310,7 @@ rocketmq: xxl: job: admin: - addresses: http://192.168.0.108:9001/xxl-job-admin + addresses: http://127.0.0.1:9001/xxl-job-admin executor: appname: xxl-job-executor-lilishop address: From 8f516f7be71da09894e99f0f6e72a4893bc9596c Mon Sep 17 00:00:00 2001 From: chc <1501738723@qq.com> Date: Fri, 24 Mar 2023 18:30:55 +0800 Subject: [PATCH 12/12] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E5=95=86?= =?UTF-8?q?=E5=93=81=E5=90=8E=E6=B8=85=E9=99=A4=E5=95=86=E5=93=81=E7=BC=93?= =?UTF-8?q?=E5=AD=98=EF=BC=8C=E4=BF=AE=E6=94=B9Store=E3=80=81StoreServiceI?= =?UTF-8?q?mpl=E7=9A=84=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/event/impl/GoodsSkuExecute.java | 25 ++++++++++++++++++- .../lili/modules/store/entity/dos/Store.java | 2 +- .../store/serviceimpl/StoreServiceImpl.java | 6 ++--- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/consumer/src/main/java/cn/lili/event/impl/GoodsSkuExecute.java b/consumer/src/main/java/cn/lili/event/impl/GoodsSkuExecute.java index 6d91e9e73..47b77d6f4 100644 --- a/consumer/src/main/java/cn/lili/event/impl/GoodsSkuExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/GoodsSkuExecute.java @@ -1,12 +1,21 @@ package cn.lili.event.impl; +import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; import cn.lili.event.GoodsCommentCompleteEvent; +import cn.lili.event.StoreSettingChangeEvent; +import cn.lili.modules.goods.entity.dos.GoodsSku; +import cn.lili.modules.goods.entity.dto.GoodsSearchParams; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.member.entity.dos.MemberEvaluation; +import cn.lili.modules.store.entity.dos.Store; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** * 商品SKU变化 * @@ -14,7 +23,7 @@ import org.springframework.stereotype.Service; * @since 2020-07-03 11:20 */ @Service -public class GoodsSkuExecute implements GoodsCommentCompleteEvent { +public class GoodsSkuExecute implements GoodsCommentCompleteEvent, StoreSettingChangeEvent { /** * 商品 @@ -22,9 +31,23 @@ public class GoodsSkuExecute implements GoodsCommentCompleteEvent { @Autowired private GoodsSkuService goodsSkuService; + @Autowired + private Cache cache; @Override public void goodsComment(MemberEvaluation memberEvaluation) { goodsSkuService.updateGoodsSkuCommentNum(memberEvaluation.getSkuId()); } + + @Override + public void storeSettingChange(Store store) { + //修改数据后,清除商品索引 + GoodsSearchParams goodsSearchParams = new GoodsSearchParams(); + goodsSearchParams.setStoreId(store.getId()); + List goodsSkuKeys = new ArrayList<>(); + for (GoodsSku goodsSku : goodsSkuService.getGoodsSkuByList(goodsSearchParams)) { + goodsSkuKeys.add(CachePrefix.GOODS_SKU.getPrefix()+goodsSku.getId()); + } + cache.multiDel(goodsSkuKeys); + } } diff --git a/framework/src/main/java/cn/lili/modules/store/entity/dos/Store.java b/framework/src/main/java/cn/lili/modules/store/entity/dos/Store.java index 0c478eca7..ba05c5dc9 100644 --- a/framework/src/main/java/cn/lili/modules/store/entity/dos/Store.java +++ b/framework/src/main/java/cn/lili/modules/store/entity/dos/Store.java @@ -82,7 +82,7 @@ public class Store extends BaseEntity { @ApiModelProperty(value = "服务评分") private Double serviceScore; - @ApiModelProperty(value = "物流描述") + @ApiModelProperty(value = "物流评分") private Double deliveryScore; @ApiModelProperty(value = "商品数量") diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java index 5490043dd..a45ef8a61 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java @@ -189,7 +189,7 @@ public class StoreServiceImpl extends ServiceImpl implements } /** - * 修改店铺详细细腻 + * 修改店铺详细信息 * * @param storeEditDTO 修改店铺信息 */ @@ -304,7 +304,7 @@ public class StoreServiceImpl extends ServiceImpl implements //获取当前操作的店铺 Store store = getStoreByMember(); - //校验迪纳普状态 + //校验店铺状态 checkStoreStatus(store); StoreDetail storeDetail = storeDetailService.getStoreDetail(store.getId()); //设置店铺的银行信息 @@ -317,7 +317,7 @@ public class StoreServiceImpl extends ServiceImpl implements //获取当前操作的店铺 Store store = getStoreByMember(); - //校验迪纳普状态 + //校验店铺状态 checkStoreStatus(store); BeanUtil.copyProperties(storeOtherInfoDTO, store);