diff --git a/README.md b/README.md index 986587c1a..0741c391e 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,7 @@ ![image-20210511171611793](https://pickmall.cn/assets/imgs/h5-qrcode.png) [![star](https://gitee.com/beijing_hongye_huicheng/lilishop/badge/star.svg?theme=dark)](https://gitee.com/beijing_hongye_huicheng/lilishop/stargazers) - -![github](https://img.shields.io/github/stars/hongyehuicheng/lilishop.svg?style=social&logo=#181717) +  ![github](https://img.shields.io/github/stars/hongyehuicheng/lilishop.svg?style=social&logo=#181717) ### 介绍 diff --git a/buyer-api/src/main/java/cn/lili/controller/member/MemberCollectionController.java b/buyer-api/src/main/java/cn/lili/controller/member/MemberCollectionController.java index 7e6d102b7..22a43a037 100644 --- a/buyer-api/src/main/java/cn/lili/controller/member/MemberCollectionController.java +++ b/buyer-api/src/main/java/cn/lili/controller/member/MemberCollectionController.java @@ -36,11 +36,16 @@ public class MemberCollectionController { @Autowired private StoreCollectionService storeCollectionService; + /** + * 商品收藏关键字 + */ + private String goods="GOODS"; + @ApiOperation(value = "查询会员收藏列表") @ApiImplicitParam(name = "type", value = "类型", dataType = "String", paramType = "path", example = "GOODS:商品,STORE:店铺") @GetMapping("/{type}") public ResultMessage goodsList(@PathVariable String type, PageVO page) { - if (type.equals("GOODS")) { + if (goods.equals(type)) { return ResultUtil.data(goodsCollectionService.goodsCollection(page)); } return ResultUtil.data(storeCollectionService.storeCollection(page)); @@ -54,7 +59,7 @@ public class MemberCollectionController { @PostMapping("/add/{type}/{id}") public ResultMessage addGoodsCollection(@PathVariable String type, @NotNull(message = "值不能为空") @PathVariable String id) { - if (type.equals("GOODS")) { + if (goods.equals(type)) { return ResultUtil.data(goodsCollectionService.addGoodsCollection(id)); } return ResultUtil.data(storeCollectionService.addStoreCollection(id)); @@ -69,7 +74,7 @@ public class MemberCollectionController { @DeleteMapping(value = "/delete/{type}/{id}") public ResultMessage deleteGoodsCollection(@PathVariable String type, @NotNull(message = "值不能为空") @PathVariable String id) { - if (type.equals("GOODS")) { + if (goods.equals(type)) { return ResultUtil.data(goodsCollectionService.deleteGoodsCollection(id)); } return ResultUtil.data(storeCollectionService.deleteStoreCollection(id)); @@ -83,7 +88,7 @@ public class MemberCollectionController { @GetMapping(value = "/isCollection/{type}/{id}") public ResultMessage isCollection(@PathVariable String type, @NotNull(message = "值不能为空") @PathVariable String id) { - if (type.equals("GOODS")) { + if (goods.equals(type)) { return ResultUtil.data(this.goodsCollectionService.isCollection(id)); } return ResultUtil.data(this.storeCollectionService.isCollection(id)); diff --git a/buyer-api/src/main/java/cn/lili/controller/member/MemberWithdrawApplyBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/member/MemberWithdrawApplyBuyerController.java index a78f8b8d8..059485f5c 100644 --- a/buyer-api/src/main/java/cn/lili/controller/member/MemberWithdrawApplyBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/member/MemberWithdrawApplyBuyerController.java @@ -38,8 +38,8 @@ public class MemberWithdrawApplyBuyerController { public ResultMessage> getByPage(PageVO page, MemberWithdrawApplyQueryVO memberWithdrawApplyQueryVO) { memberWithdrawApplyQueryVO.setMemberId(UserContext.getCurrentUser().getId()); //构建查询 返回数据 - IPage memberWithdrawApplyIPage = memberWithdrawApplyService.getMemberWithdrawPage(page, memberWithdrawApplyQueryVO); - return ResultUtil.data(memberWithdrawApplyIPage); + IPage memberWithdrawApplyPage = memberWithdrawApplyService.getMemberWithdrawPage(page, memberWithdrawApplyQueryVO); + return ResultUtil.data(memberWithdrawApplyPage); } } diff --git a/buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionBuyerController.java index b8c97954d..edc3d3f05 100644 --- a/buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/other/distribution/DistributionBuyerController.java @@ -40,7 +40,6 @@ public class DistributionBuyerController { @Autowired private DistributionOrderService distributionOrderService; - //申请分销员 @ApiOperation(value = "申请分销员") @PostMapping public ResultMessage applyDistribution(DistributionApplyDTO distributionApplyDTO) { @@ -63,7 +62,6 @@ public class DistributionBuyerController { return ResultUtil.data(distributionService.getDistribution()); } - //申请分销员 @ApiOperation(value = "绑定分销员") @ApiImplicitParam(name = "distributionId", value = "分销员ID", required = true, paramType = "path") @GetMapping("/bindingDistribution/{distributionId}") diff --git a/buyer-api/src/main/java/cn/lili/controller/passport/connect/MiniProgramBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/passport/connect/MiniProgramBuyerController.java index 99e59561e..bd3db44d4 100644 --- a/buyer-api/src/main/java/cn/lili/controller/passport/connect/MiniProgramBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/passport/connect/MiniProgramBuyerController.java @@ -34,6 +34,7 @@ public class MiniProgramBuyerController { public ConnectService connectService; @Autowired public WechatMpCodeUtil wechatMpCodeUtil; + @SuppressWarnings("AlibabaLowerCamelCaseVariableNaming") @Autowired public WechatMPMessageService wechatMPMessageService; @Autowired diff --git a/common-api/src/main/java/cn/lili/controller/common/FileController.java b/common-api/src/main/java/cn/lili/controller/common/FileController.java index cc056c0d6..20e33256c 100644 --- a/common-api/src/main/java/cn/lili/controller/common/FileController.java +++ b/common-api/src/main/java/cn/lili/controller/common/FileController.java @@ -81,6 +81,7 @@ public class FileController { if (file.getUserEnums().equals(authUser.getRole().name())) { break; } + default: throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR); } fileService.updateById(file); diff --git a/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java b/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java index ff8dbef58..b41d0ace4 100644 --- a/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java +++ b/common-api/src/main/java/cn/lili/controller/common/SliderImageController.java @@ -28,10 +28,9 @@ public class SliderImageController { @Autowired private VerificationService verificationService; - //一分钟同一个ip请求10次 @LimitPoint(name = "slider_image", key = "verification") @GetMapping("/{verificationEnums}") - @ApiOperation(value = "获取校验接口") + @ApiOperation(value = "获取校验接口,一分钟同一个ip请求10次") public ResultMessage getSliderImage(@RequestHeader String uuid, @PathVariable VerificationEnums verificationEnums) { try { return ResultUtil.data(verificationService.createVerification(verificationEnums, uuid)); diff --git a/common-api/src/main/java/cn/lili/controller/common/SmsController.java b/common-api/src/main/java/cn/lili/controller/common/SmsController.java index e69664a4e..cfec27ab8 100644 --- a/common-api/src/main/java/cn/lili/controller/common/SmsController.java +++ b/common-api/src/main/java/cn/lili/controller/common/SmsController.java @@ -31,14 +31,13 @@ public class SmsController { @Autowired private VerificationService verificationService; - //一分钟同一个ip请求1次 @LimitPoint(name = "sms_send", key = "sms") @ApiImplicitParams({ @ApiImplicitParam(paramType = "path", dataType = "String", name = "mobile", value = "手机号"), @ApiImplicitParam(paramType = "header", dataType = "String", name = "uuid", value = "uuid"), }) @GetMapping("/{verificationEnums}/{mobile}") - @ApiOperation(value = "发送短信验证码") + @ApiOperation(value = "发送短信验证码,一分钟同一个ip请求1次") public ResultMessage getSmsCode( @RequestHeader String uuid, @PathVariable String mobile, diff --git a/config/application.yml b/config/application.yml index 0e645d6bb..2193b51fe 100644 --- a/config/application.yml +++ b/config/application.yml @@ -121,7 +121,7 @@ spring: props: #是否打印逻辑SQL语句和实际SQL语句,建议调试时打印,在生产环境关闭 sql: - show: false + show: true # 忽略鉴权url ignored: @@ -144,6 +144,7 @@ ignored: - /buyer/promotion/pintuan/** - /buyer/promotion/seckill/** - /buyer/promotion/pointsGoods/** + - /buyer/promotion/coupon - /buyer/memberEvaluation/**/goodsEvaluation - /buyer/memberEvaluation/**/evaluationNumber - /buyer/appVersion/** @@ -163,6 +164,7 @@ ignored: - /v2/api-docs - /configuration/ui - /boot-admin + - /manager/promotion/seckill/init statics: - /**/*.js - /**/*.css @@ -194,9 +196,9 @@ logging: # 输出级别 level: cn.lili: info - org.hibernate: debug - org.springframework: debug - org.springframework.data.mongodb.core: debug +# org.hibernate: debug +# org.springframework: debug +# org.springframework.data.mongodb.core: debug file: # 指定路径 path: lili-logs @@ -295,6 +297,8 @@ lili: notice-send-group: lili_send_notice_group rocketmq: name-server: 192.168.0.116:9876 + namesrvAddr: 192.168.0.116:9876 + isVIPChannel: false producer: group: lili_group send-message-timeout: 30000 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 fefac0470..21fe71f12 100644 --- a/consumer/src/main/java/cn/lili/event/impl/DistributionOrderExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/DistributionOrderExecute.java @@ -12,6 +12,7 @@ import cn.lili.modules.order.order.entity.dto.OrderMessage; import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum; import cn.lili.timetask.handler.EveryDayExecute; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -23,13 +24,18 @@ import javax.annotation.Resource; * @author Chopper * @date 2020-07-03 11:20 */ +@Slf4j @Service public class DistributionOrderExecute implements OrderStatusChangeEvent, EveryDayExecute, AfterSaleStatusChangeEvent { - //分销订单 + /** + * 分销订单 + */ @Autowired private DistributionOrderService distributionOrderService; - //分销订单持久层 + /** + * 分销订单持久层 + */ @Resource private DistributionOrderMapper distributionOrderMapper; @@ -48,6 +54,9 @@ public class DistributionOrderExecute implements OrderStatusChangeEvent, EveryDa distributionOrderService.cancelOrder(orderMessage.getOrderSn()); break; } + default: + log.error("分销订单执行异常:", orderMessage.getOrderSn()); + break; } } 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 224f1f526..1d465dac5 100644 --- a/consumer/src/main/java/cn/lili/event/impl/GoodsSkuExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/GoodsSkuExecute.java @@ -14,9 +14,11 @@ import org.springframework.stereotype.Service; * @date 2020-07-03 11:20 */ @Service -public class GoodsSkuExecute implements GoodsCommentCompleteEvent { +public class GoodsSkuExecute implements GoodsCommentCompleteEvent { - //商品 + /** + * 商品 + */ @Autowired private GoodsSkuService goodsSkuService; diff --git a/consumer/src/main/java/cn/lili/event/impl/MemberExperienceExecute.java b/consumer/src/main/java/cn/lili/event/impl/MemberExperienceExecute.java index 7c514764b..7fa3318ab 100644 --- a/consumer/src/main/java/cn/lili/event/impl/MemberExperienceExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/MemberExperienceExecute.java @@ -29,18 +29,25 @@ import org.springframework.stereotype.Service; @Service public class MemberExperienceExecute implements MemberRegisterEvent, GoodsCommentCompleteEvent, OrderStatusChangeEvent { - //配置 + /** + * 配置 + */ @Autowired private SettingService settingService; - //会员 + /** + * 会员 + */ @Autowired private MemberService memberService; - //订单 + /** + * 订单 + */ @Autowired private OrderService orderService; /** * 会员注册赠送经验值 + * * @param member 会员 */ @Override @@ -53,6 +60,7 @@ public class MemberExperienceExecute implements MemberRegisterEvent, GoodsCommen /** * 商品评价赠送经验值 + * * @param memberEvaluation 会员评价 */ @Override @@ -65,17 +73,18 @@ public class MemberExperienceExecute implements MemberRegisterEvent, GoodsCommen /** * 完成订单赠送经验值 + * * @param orderMessage 订单消息 */ @Override public void orderChange(OrderMessage orderMessage) { - if(orderMessage.getNewStatus().equals(OrderStatusEnum.COMPLETED)){ + if (orderMessage.getNewStatus().equals(OrderStatusEnum.COMPLETED)) { //获取经验值设置 ExperienceSetting experienceSetting = getExperienceSetting(); //获取订单信息 Order order = orderService.getBySn(orderMessage.getOrderSn()); //计算赠送经验值数量 - Double point= CurrencyUtil.mul(experienceSetting.getMoney(),order.getFlowPrice(),0); + Double point = CurrencyUtil.mul(experienceSetting.getMoney(), order.getFlowPrice(), 0); //赠送会员经验值 memberService.updateMemberExperience(point.longValue(), true, order.getMemberId(), "会员下单,赠送经验值" + point + "分"); } @@ -83,9 +92,10 @@ public class MemberExperienceExecute implements MemberRegisterEvent, GoodsCommen /** * 获取经验值设置 + * * @return 经验值设置 */ - private ExperienceSetting getExperienceSetting(){ + private ExperienceSetting getExperienceSetting() { Setting setting = settingService.get(SettingEnum.EXPERIENCE_SETTING.name()); return new Gson().fromJson(setting.getSettingValue(), ExperienceSetting.class); } diff --git a/consumer/src/main/java/cn/lili/event/impl/MemberPointExecute.java b/consumer/src/main/java/cn/lili/event/impl/MemberPointExecute.java index e4ce6de01..6891833d3 100644 --- a/consumer/src/main/java/cn/lili/event/impl/MemberPointExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/MemberPointExecute.java @@ -33,57 +33,66 @@ import org.springframework.stereotype.Service; @Service public class MemberPointExecute implements MemberRegisterEvent, GoodsCommentCompleteEvent, OrderStatusChangeEvent, AfterSaleStatusChangeEvent { - //配置 + /** + * 配置 + */ @Autowired private SettingService settingService; - //会员 + /** + * 会员 + */ @Autowired private MemberService memberService; - //订单 + /** + * 订单 + */ @Autowired private OrderService orderService; /** * 会员注册赠送积分 + * * @param member 会员 */ @Override public void memberRegister(Member member) { //获取积分设置 - PointSetting pointSetting=getPointSetting(); + PointSetting pointSetting = getPointSetting(); //赠送会员积分 memberService.updateMemberPoint(Long.valueOf(pointSetting.getRegister().longValue()), true, member.getId(), "会员注册,赠送积分" + pointSetting.getRegister() + "分"); } /** * 会员评价赠送积分 + * * @param memberEvaluation 会员评价 */ @Override public void goodsComment(MemberEvaluation memberEvaluation) { //获取积分设置 - PointSetting pointSetting=getPointSetting(); + PointSetting pointSetting = getPointSetting(); //赠送会员积分 memberService.updateMemberPoint(Long.valueOf(pointSetting.getComment().longValue()), true, memberEvaluation.getMemberId(), "会员评价,赠送积分" + pointSetting.getComment() + "分"); } /** * 非积分订单订单完成后赠送积分 + * * @param orderMessage 订单消息 */ @Override public void orderChange(OrderMessage orderMessage) { - if(orderMessage.getNewStatus().equals(OrderStatusEnum.COMPLETED)){ + if (orderMessage.getNewStatus().equals(OrderStatusEnum.COMPLETED)) { //根据订单编号获取订单数据,如果为积分订单则跳回 Order order = orderService.getBySn(orderMessage.getOrderSn()); - if(order.getOrderPromotionType().equals(OrderPromotionTypeEnum.POINT.name())){ + if (order.getOrderPromotionType().equals(OrderPromotionTypeEnum.POINT.name())) { return; } //获取积分设置 - PointSetting pointSetting=getPointSetting(); + PointSetting pointSetting = getPointSetting(); //计算赠送积分数量 - Double point=CurrencyUtil.mul(pointSetting.getMoney(),order.getFlowPrice(),0); + Double point = CurrencyUtil.mul(pointSetting.getMoney(), order.getFlowPrice(), 0); //赠送会员积分 memberService.updateMemberPoint(point.longValue(), true, order.getMemberId(), "会员下单,赠送积分" + point + "分"); @@ -92,15 +101,16 @@ public class MemberPointExecute implements MemberRegisterEvent, GoodsCommentComp /** * 提交售后后扣除积分 + * * @param afterSale 售后 */ @Override public void afterSaleStatusChange(AfterSale afterSale) { if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) { //获取积分设置 - PointSetting pointSetting=getPointSetting(); + PointSetting pointSetting = getPointSetting(); //计算扣除积分数量 - Double point=CurrencyUtil.mul(pointSetting.getMoney(), afterSale.getActualRefundPrice(),0); + Double point = CurrencyUtil.mul(pointSetting.getMoney(), afterSale.getActualRefundPrice(), 0); //扣除会员积分 memberService.updateMemberPoint(point.longValue(), false, afterSale.getMemberId(), "会员退款,扣除积分" + point + "分"); @@ -109,9 +119,10 @@ public class MemberPointExecute implements MemberRegisterEvent, GoodsCommentComp /** * 获取积分设置 + * * @return 积分设置 */ - private PointSetting getPointSetting(){ + private PointSetting getPointSetting() { Setting setting = settingService.get(SettingEnum.POINT_SETTING.name()); return new Gson().fromJson(setting.getSettingValue(), PointSetting.class); } diff --git a/consumer/src/main/java/cn/lili/event/impl/NoticeMessageExecute.java b/consumer/src/main/java/cn/lili/event/impl/NoticeMessageExecute.java index e33461367..29bbec5a9 100644 --- a/consumer/src/main/java/cn/lili/event/impl/NoticeMessageExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/NoticeMessageExecute.java @@ -44,7 +44,7 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent, NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO(); noticeMessageDTO.setMemberId(tradeDTO.getMemberId()); noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.ORDER_CREATE_SUCCESS); - Map params = new HashMap<>(); + Map params = new HashMap<>(2); params.put("goods", tradeDTO.getSkuList().get(0).getGoodsSku().getGoodsName()); noticeMessageDTO.setParameter(params); //保存站内信 @@ -58,7 +58,7 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent, NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO(); //如果订单状态不为空 if (orderDetailVO != null) { - Map params = new HashMap<>(); + Map params = new HashMap<>(2); switch (orderMessage.getNewStatus()) { //如果订单新的状态为已取消 则发送取消订单站内信 case CANCELLED: @@ -103,7 +103,7 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent, public void afterSaleStatusChange(AfterSale afterSale) { NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO(); noticeMessageDTO.setMemberId(afterSale.getMemberId()); - Map params = new HashMap<>(); + Map params = new HashMap<>(2); params.put("goods", afterSale.getGoodsName()); params.put("refuse", afterSale.getAuditRemark()); noticeMessageDTO.setParameter(params); @@ -154,7 +154,7 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent, //组织站内信参数 NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO(); noticeMessageDTO.setMemberId(memberPointMessage.getMemberId()); - Map params = new HashMap<>(); + Map params = new HashMap<>(2); if (memberPointMessage.getType()) { params.put("expenditure_points", "0"); params.put("income_points", memberPointMessage.getPoint().toString()); @@ -178,7 +178,7 @@ public class NoticeMessageExecute implements TradeEvent, OrderStatusChangeEvent, //组织参数 NoticeMessageDTO noticeMessageDTO = new NoticeMessageDTO(); noticeMessageDTO.setMemberId(memberWithdrawalMessage.getMemberId()); - Map params = new HashMap<>(); + Map params = new HashMap<>(2); params.put("income", memberWithdrawalMessage.getPrice().toString()); noticeMessageDTO.setParameter(params); noticeMessageDTO.setNoticeMessageNodeEnum(NoticeMessageNodeEnum.WALLET_WITHDRAWAL_SUCCESS); diff --git a/consumer/src/main/java/cn/lili/event/impl/PaymentExecute.java b/consumer/src/main/java/cn/lili/event/impl/PaymentExecute.java index c51b180d2..029c16970 100644 --- a/consumer/src/main/java/cn/lili/event/impl/PaymentExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/PaymentExecute.java @@ -10,6 +10,7 @@ import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.payment.entity.RefundLog; import cn.lili.modules.payment.kit.Payment; import cn.lili.modules.payment.kit.enums.PaymentMethodEnum; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -19,10 +20,13 @@ import org.springframework.stereotype.Service; * @author Chopper * @date 2021-03-13 16:58 */ +@Slf4j @Service public class PaymentExecute implements OrderStatusChangeEvent { - //订单 + /** + * 订单 + */ @Autowired private OrderService orderService; @@ -64,6 +68,9 @@ public class PaymentExecute implements OrderStatusChangeEvent { break; case BANK_TRANSFER: break; + default: + log.error("订单支付执行异常,订单编号:", orderMessage.getOrderSn()); + break; } break; default: diff --git a/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java b/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java index 216b4331f..402b74f09 100644 --- a/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java @@ -32,23 +32,35 @@ import java.util.List; @Service public class StockUpdateExecute implements OrderStatusChangeEvent { - //出库失败消息 + /** + * 出库失败消息 + */ static String outOfStockMessage = "库存不足,出库失败"; - //Redis + /** + * Redis + */ @Autowired private StringRedisTemplate stringRedisTemplate; @Autowired private DefaultRedisScript quantityScript; - //订单 + /** + * 订单 + */ @Autowired private OrderService orderService; - //规格商品 + /** + * 规格商品 + */ @Autowired private GoodsSkuService goodsSkuService; - //促销商品 + /** + * 促销商品 + */ @Autowired private PromotionGoodsService promotionGoodsService; - //缓存 + /** + * 缓存 + */ @Autowired private Cache cache; diff --git a/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java b/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java index 2db77d044..da5a5fa9e 100644 --- a/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java @@ -24,7 +24,9 @@ import java.util.List; @RocketMQMessageListener(topic = "${lili.data.rocketmq.after-sale-topic}", consumerGroup = "${lili.data.rocketmq.after-sale-group}") public class AfterSaleMessageListener implements RocketMQListener { - //售后订单状态 + /** + * 售后订单状态 + */ @Autowired private List afterSaleStatusChangeEvents; @@ -43,6 +45,8 @@ public class AfterSaleMessageListener implements RocketMQListener { e); } } + default: + log.error("售后状态修改事件执行异常:", new String(messageExt.getBody())); break; } diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 16dd44dc7..e0f24d7b0 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -20,7 +20,6 @@ import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.service.EsGoodsIndexService; import cn.lili.modules.store.service.StoreService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.common.message.MessageExt; @@ -42,31 +41,49 @@ import java.util.List; @RocketMQMessageListener(topic = "${lili.data.rocketmq.goods-topic}", consumerGroup = "${lili.data.rocketmq.goods-group}") public class GoodsMessageListener implements RocketMQListener { - //ES商品 + /** + * ES商品 + */ @Autowired private EsGoodsIndexService goodsIndexService; - //店铺 + /** + * 店铺 + */ @Autowired private StoreService storeService; - //商品 + /** + * 商品 + */ @Autowired private GoodsService goodsService; - //商品 + /** + * 商品Sku + */ @Autowired private GoodsSkuService goodsSkuService; - //用户足迹 + /** + * 用户足迹 + */ @Autowired private FootprintService footprintService; - //商品收藏 + /** + * 商品收藏 + */ @Autowired private GoodsCollectionService goodsCollectionService; - //商品评价 + /** + * 商品评价 + */ @Autowired private List goodsCommentCompleteEvents; - //分销商品 + /** + * 分销商品 + */ @Autowired private DistributionGoodsService distributionGoodsService; - //分销员-商品关联表 + /** + * 分销员-商品关联表 + */ @Autowired private DistributionSelectedGoodsService distributionSelectedGoodsService; @@ -123,6 +140,9 @@ public class GoodsMessageListener implements RocketMQListener { case BUY_GOODS_COMPLETE: this.goodsBuyComplete(messageExt); break; + default: + log.error("商品执行异常:", new String(messageExt.getBody())); + break; } } @@ -131,20 +151,21 @@ public class GoodsMessageListener implements RocketMQListener { * 1.更新店铺的商品数量 * 2.删除分销员-分销商品绑定关系 * 3.删除分销商品 + * * @param messageExt 消息 */ - private void deleteGoods(MessageExt messageExt){ - Goods goods=JSONUtil.toBean(new String(messageExt.getBody()),Goods.class); + private void deleteGoods(MessageExt messageExt) { + Goods goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class); //更新店铺商品数量 storeService.updateStoreGoodsNum(goods.getStoreId()); //删除获取分销商品 - DistributionGoods distributionGoods=distributionGoodsService.getOne(new LambdaQueryWrapper() - .eq(DistributionGoods::getGoodsId,goods.getId())); + DistributionGoods distributionGoods = distributionGoodsService.getOne(new LambdaQueryWrapper() + .eq(DistributionGoods::getGoodsId, goods.getId())); //删除分销商品绑定关系 distributionSelectedGoodsService.remove(new LambdaQueryWrapper() - .eq(DistributionSelectedGoods::getDistributionGoodsId,distributionGoods.getId())); + .eq(DistributionSelectedGoods::getDistributionGoodsId, distributionGoods.getId())); //删除分销商品 distributionGoodsService.removeById(distributionGoods.getId()); @@ -155,9 +176,10 @@ public class GoodsMessageListener implements RocketMQListener { * 1.更新商品购买数量 * 2.更新SKU购买数量 * 3.更新索引购买数量 + * * @param messageExt */ - private void goodsBuyComplete(MessageExt messageExt){ + private void goodsBuyComplete(MessageExt messageExt) { String goodsCompleteMessageStr = new String(messageExt.getBody()); List goodsCompleteMessageList = JSONUtil.toList(JSONUtil.parseArray(goodsCompleteMessageStr), GoodsCompleteMessage.class); for (GoodsCompleteMessage goodsCompleteMessage : goodsCompleteMessageList) { diff --git a/consumer/src/main/java/cn/lili/listener/MemberMessageListener.java b/consumer/src/main/java/cn/lili/listener/MemberMessageListener.java index 7f1357762..4cc3b8fa6 100644 --- a/consumer/src/main/java/cn/lili/listener/MemberMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/MemberMessageListener.java @@ -30,16 +30,24 @@ import java.util.List; @RocketMQMessageListener(topic = "${lili.data.rocketmq.member-topic}", consumerGroup = "${lili.data.rocketmq.member-group}") public class MemberMessageListener implements RocketMQListener { - //会员签到 + /** + * 会员签到 + */ @Autowired private MemberSignService memberSignService; - //会员积分变化 + /** + * 会员积分变化 + */ @Autowired private List memberPointChangeEvents; - //会员提现 + /** + * 会员提现 + */ @Autowired private List memberWithdrawalEvents; - //会员注册 + /** + * 会员注册 + */ @Autowired private List memberSignEvents; diff --git a/consumer/src/main/java/cn/lili/listener/NoticeMessageListener.java b/consumer/src/main/java/cn/lili/listener/NoticeMessageListener.java index 940eced25..98a894a6c 100644 --- a/consumer/src/main/java/cn/lili/listener/NoticeMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/NoticeMessageListener.java @@ -3,7 +3,6 @@ package cn.lili.listener; import cn.hutool.json.JSONUtil; import cn.lili.modules.message.entity.dto.NoticeMessageDTO; import cn.lili.modules.message.service.NoticeMessageService; -import lombok.RequiredArgsConstructor; import org.apache.rocketmq.common.message.MessageExt; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; @@ -20,7 +19,9 @@ import org.springframework.stereotype.Component; @RocketMQMessageListener(topic = "${lili.data.rocketmq.notice-topic}", consumerGroup = "${lili.data.rocketmq.notice-group}") public class NoticeMessageListener implements RocketMQListener { - //站内信 + /** + * 站内信 + */ @Autowired private NoticeMessageService noticeMessageService; diff --git a/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java b/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java index 659c1c53c..fe7a4a212 100644 --- a/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java @@ -28,6 +28,7 @@ import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @@ -41,22 +42,34 @@ import java.util.List; @RocketMQMessageListener(topic = "${lili.data.rocketmq.notice-send-topic}", consumerGroup = "${lili.data.rocketmq.notice-send-group}") public class NoticeSendMessageListener implements RocketMQListener { - //会员 - @Autowired + /** + * 会员 + */ + @Resource private MemberMapper memberMapper; - //短信 + /** + * 短信 + */ @Autowired private SmsUtil smsUtil; - //店铺消息 + /** + * 店铺消息 + */ @Autowired private StoreMessageService storeMessageService; - //会员消息 + /** + * 会员消息 + */ @Autowired private MemberMessageService memberMessageService; - //店铺 + /** + * 店铺 + */ @Autowired private StoreService storeService; - //会员 + /** + * 会员 + */ @Autowired private MemberService memberService; @@ -100,7 +113,7 @@ public class NoticeSendMessageListener implements RocketMQListener { private void saveStoreMessage(Message message) { List list = new ArrayList<>(); //发送全部商家情况 - if (message.getMessageRange().equals("ALL")) { + if ("ALL".equals(message.getMessageRange())) { List storeList = storeService.list(new QueryWrapper().eq("store_disable", "OPEN")); storeList.forEach(item -> { StoreMessage storeMessage = new StoreMessage(); @@ -141,7 +154,7 @@ public class NoticeSendMessageListener implements RocketMQListener { private void saveMemberMessage(Message message) { List list = new ArrayList<>(); //如果是给所有会员发送消息 - if (message.getMessageRange().equals("ALL")) { + if ("ALL".equals(message.getMessageRange())) { //查询所有会员总数,因为会员总数比较大 如果一次性查出来会占用数据库资源,所以要分页查询 MemberSearchVO memberSearchVO = new MemberSearchVO(); memberSearchVO.setDisabled(SwitchEnum.OPEN.name()); diff --git a/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java b/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java index 892139e59..508ec62cc 100644 --- a/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/OrderMessageListener.java @@ -27,13 +27,19 @@ import java.util.List; @RocketMQMessageListener(topic = "${lili.data.rocketmq.order-topic}", consumerGroup = "${lili.data.rocketmq.order-group}") public class OrderMessageListener implements RocketMQListener { - //交易 + /** + * 交易 + */ @Autowired private List tradeEvent; - //订单状态 + /** + * 订单状态 + */ @Autowired private List orderStatusChangeEvents; - //缓存 + /** + * 缓存 + */ @Autowired private Cache cache; diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/bill/BillExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/bill/BillExecute.java index 89b8bf35d..c32087ba9 100644 --- a/consumer/src/main/java/cn/lili/timetask/handler/impl/bill/BillExecute.java +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/bill/BillExecute.java @@ -21,10 +21,14 @@ import java.util.List; @Component public class BillExecute implements EveryDayExecute { - //结算单 + /** + * 结算单 + */ @Autowired private BillService billService; - //店铺详情 + /** + * 店铺详情 + */ @Resource private StoreDetailMapper storeDetailMapper; diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/goods/GoodsExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/goods/GoodsExecute.java index f9d92ea64..04a3bbcad 100644 --- a/consumer/src/main/java/cn/lili/timetask/handler/impl/goods/GoodsExecute.java +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/goods/GoodsExecute.java @@ -8,9 +8,9 @@ import cn.lili.modules.member.entity.dos.MemberEvaluation; import cn.lili.modules.member.mapper.MemberEvaluationMapper; import cn.lili.timetask.handler.EveryDayExecute; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.util.List; import java.util.Map; @@ -22,11 +22,15 @@ import java.util.Map; */ @Component public class GoodsExecute implements EveryDayExecute { - //会员评价 - @Autowired + /** + * 会员评价 + */ + @Resource private MemberEvaluationMapper memberEvaluationMapper; - //商品 - @Autowired + /** + * 商品 + */ + @Resource private GoodsMapper goodsMapper; /** diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/order/CancelOrderTaskExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/order/CancelOrderTaskExecute.java index 1202c4256..31c5e5877 100644 --- a/consumer/src/main/java/cn/lili/timetask/handler/impl/order/CancelOrderTaskExecute.java +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/order/CancelOrderTaskExecute.java @@ -12,7 +12,6 @@ import cn.lili.modules.system.entity.enums.SettingEnum; import cn.lili.modules.system.service.SettingService; import cn.lili.timetask.handler.EveryMinuteExecute; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -28,12 +27,15 @@ import java.util.stream.Collectors; **/ @Slf4j @Component - public class CancelOrderTaskExecute implements EveryMinuteExecute { - //订单 + /** + * 订单 + */ @Autowired private OrderService orderService; - //设置 + /** + * 设置 + */ @Autowired private SettingService settingService; 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 84c0cabc4..54f4007e2 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 @@ -37,16 +37,24 @@ import java.util.stream.Collectors; public class OrderEveryDayTaskExecute implements EveryDayExecute { - //订单 + /** + * 订单 + */ @Autowired private OrderService orderService; - //订单货物 + /** + * 订单货物 + */ @Autowired private OrderItemService orderItemService; - //设置 + /** + * 设置 + */ @Autowired private SettingService settingService; - //会员评价 + /** + * 会员评价 + */ @Autowired private MemberEvaluationService memberEvaluationService; diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/promotion/PromotionEverydayExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/promotion/PromotionEverydayExecute.java index eb43758da..482963fba 100644 --- a/consumer/src/main/java/cn/lili/timetask/handler/impl/promotion/PromotionEverydayExecute.java +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/promotion/PromotionEverydayExecute.java @@ -39,33 +39,49 @@ import java.util.List; @Component public class PromotionEverydayExecute implements EveryDayExecute { - //Mongo + /** + * Mongo + */ @Autowired private MongoTemplate mongoTemplate; - //es + /** + * ES商品索引 + */ @Autowired private EsGoodsIndexService esGoodsIndexService; - //满额活动 + /** + * 满额活动 + */ @Autowired private FullDiscountService fullDiscountService; - //拼团 + /** + * 拼团 + */ @Autowired private PintuanService pintuanService; - //优惠券 + /** + * 优惠券 + */ @Autowired private CouponService couponService; - //会员优惠券 + /** + * 会员优惠券 + */ @Autowired private MemberCouponService memberCouponService; - //促销商品 + /** + * 促销商品 + */ @Autowired private PromotionGoodsService promotionGoodsService; - - //系统设置 + /** + * 系统设置 + */ @Autowired private SettingService settingService; - - //秒杀活动 + /** + * 秒杀活动 + */ @Autowired private SeckillService seckillService; diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/MemberStatisticsExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/MemberStatisticsExecute.java index 73a3c9403..a7d766dcb 100644 --- a/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/MemberStatisticsExecute.java +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/MemberStatisticsExecute.java @@ -20,7 +20,9 @@ import java.util.Date; @Component public class MemberStatisticsExecute implements EveryDayExecute { - //会员统计 + /** + * 会员统计 + */ @Autowired private MemberStatisticsDataService memberStatisticsDataService; diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/OnlineMemberStatistics.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/OnlineMemberStatistics.java index 73979b978..2b80be56f 100644 --- a/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/OnlineMemberStatistics.java +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/statistics/OnlineMemberStatistics.java @@ -24,10 +24,14 @@ import java.util.stream.Collectors; @Component public class OnlineMemberStatistics implements EveryHourExecute { - //缓存 + /** + * 缓存 + */ @Autowired private Cache cache; - //统计小时 + /** + * 统计小时 + */ @Autowired private StatisticsProperties statisticsProperties; diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/storeRating/StoreRatingExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/storeRating/StoreRatingExecute.java index d6bfc93b7..963ae5440 100644 --- a/consumer/src/main/java/cn/lili/timetask/handler/impl/storeRating/StoreRatingExecute.java +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/storeRating/StoreRatingExecute.java @@ -11,10 +11,10 @@ import cn.lili.timetask.handler.EveryDayExecute; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.util.List; /** @@ -25,11 +25,15 @@ import java.util.List; */ @Component public class StoreRatingExecute implements EveryDayExecute { - //店铺 + /** + * 店铺 + */ @Autowired private StoreService storeService; - //会员评价 - @Autowired + /** + * 会员评价 + */ + @Resource private MemberEvaluationMapper memberEvaluationMapper; @@ -39,10 +43,10 @@ public class StoreRatingExecute implements EveryDayExecute { List storeList = storeService.list(new LambdaQueryWrapper().eq(Store::getStoreDisable, StoreStatusEnum.OPEN.name())); for (Store store : storeList) { //店铺所有开启的评价 - LambdaQueryWrapper QueryWrapper = Wrappers.lambdaQuery(); - QueryWrapper.eq(MemberEvaluation::getStoreId, store.getId()); - QueryWrapper.eq(MemberEvaluation::getStatus, SwitchEnum.OPEN.name()); - StoreRatingVO storeRatingVO = memberEvaluationMapper.getStoreRatingVO(QueryWrapper); + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(MemberEvaluation::getStoreId, store.getId()); + lambdaQueryWrapper.eq(MemberEvaluation::getStatus, SwitchEnum.OPEN.name()); + StoreRatingVO storeRatingVO = memberEvaluationMapper.getStoreRatingVO(lambdaQueryWrapper); if (storeRatingVO != null) { //保存评分 diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/view/PageViewStatisticsExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/view/PageViewStatisticsExecute.java index 2daf42561..b39e455f6 100644 --- a/consumer/src/main/java/cn/lili/timetask/handler/impl/view/PageViewStatisticsExecute.java +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/view/PageViewStatisticsExecute.java @@ -4,7 +4,6 @@ import cn.hutool.core.convert.Convert; import cn.lili.common.cache.Cache; import cn.lili.common.cache.CachePrefix; import cn.lili.common.utils.BeanUtil; -import cn.lili.common.utils.DateUtil; import cn.lili.modules.statistics.model.dos.PlatformViewData; import cn.lili.modules.statistics.service.PlatformViewDataService; import cn.lili.timetask.handler.EveryDayExecute; @@ -29,10 +28,14 @@ import java.util.List; @Slf4j @Component public class PageViewStatisticsExecute implements EveryDayExecute { - //缓存 + /** + * 缓存 + */ @Autowired private Cache cache; - //平台PV统计 + /** + * 平台PV统计 + */ @Autowired private PlatformViewDataService platformViewDataService; diff --git a/consumer/src/main/java/cn/lili/trigger/AbstractDelayQueueListen.java b/consumer/src/main/java/cn/lili/trigger/AbstractDelayQueueListen.java index d76fcdaae..9ddf24358 100644 --- a/consumer/src/main/java/cn/lili/trigger/AbstractDelayQueueListen.java +++ b/consumer/src/main/java/cn/lili/trigger/AbstractDelayQueueListen.java @@ -79,6 +79,7 @@ public abstract class AbstractDelayQueueListen { /** * 要实现延时队列的名字 + * @return 促销延时队列名称 */ public abstract String setDelayQueueName(); @@ -88,7 +89,7 @@ public abstract class AbstractDelayQueueListen { */ @PostConstruct public void init() { - new Thread(this::startDelayQueueMachine).start(); + ThreadPoolUtil.getPool().execute(this::startDelayQueueMachine); } } diff --git a/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java b/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java index 5abd9433f..ddb90e51e 100644 --- a/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java +++ b/consumer/src/main/java/cn/lili/trigger/executor/PromotionTimeTriggerExecutor.java @@ -25,16 +25,24 @@ import org.springframework.stereotype.Component; @Slf4j @Component(TimeExecuteConstant.PROMOTION_EXECUTOR) public class PromotionTimeTriggerExecutor implements TimeTriggerExecutor { - //促销 + /** + * 促销 + */ @Autowired private PromotionService promotionService; - //Rocketmq + /** + * RocketMQ + */ @Autowired private RocketmqCustomProperties rocketmqCustomProperties; - //延时任务 + /** + * 延时任务 + */ @Autowired private TimeTrigger timeTrigger; - //订单 + /** + * 订单 + */ @Autowired private OrderService orderService; diff --git a/framework/src/main/java/cn/lili/common/aop/limiter/LimitInterceptor.java b/framework/src/main/java/cn/lili/common/aop/limiter/LimitInterceptor.java index 2e625ef94..f6e5397da 100644 --- a/framework/src/main/java/cn/lili/common/aop/limiter/LimitInterceptor.java +++ b/framework/src/main/java/cn/lili/common/aop/limiter/LimitInterceptor.java @@ -75,10 +75,15 @@ public class LimitInterceptor { } - //默认unknown常量值 + /** + * 默认unknown常量值 + */ private static final String UNKNOWN = "unknown"; - //获取ip + /** + * 获取ip + * @return ip + */ public String getIpAddress() { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String ip = request.getHeader("x-forwarded-for"); diff --git a/framework/src/main/java/cn/lili/common/aop/syslog/interceptor/SystemLogAspect.java b/framework/src/main/java/cn/lili/common/aop/syslog/interceptor/SystemLogAspect.java index ea8149635..cf0b6d3e5 100644 --- a/framework/src/main/java/cn/lili/common/aop/syslog/interceptor/SystemLogAspect.java +++ b/framework/src/main/java/cn/lili/common/aop/syslog/interceptor/SystemLogAspect.java @@ -39,7 +39,7 @@ public class SystemLogAspect { /** * 启动线程异步记录日志 */ - private static final ThreadLocal beginTimeThreadLocal = new NamedThreadLocal<>("SYSTEM-LOG"); + private static final ThreadLocal BEGIN_TIME_THREAD_LOCAL = new NamedThreadLocal<>("SYSTEM-LOG"); @Autowired private SystemLogService systemLogService; @@ -61,7 +61,7 @@ public class SystemLogAspect { */ @Before("controllerAspect()") public void doBefore() { - beginTimeThreadLocal.set(new Date()); + BEGIN_TIME_THREAD_LOCAL.set(new Date()); } @@ -110,7 +110,7 @@ public class SystemLogAspect { //写入自定义日志内容 systemLogVO.setCustomerLog(customerLog); //请求开始时间 - long beginTime = beginTimeThreadLocal.get().getTime(); + long beginTime = BEGIN_TIME_THREAD_LOCAL.get().getTime(); long endTime = System.currentTimeMillis(); //请求耗时 Long usedTime = endTime - beginTime; @@ -157,7 +157,7 @@ public class SystemLogAspect { */ private static Map spelFormat(JoinPoint joinPoint, Object rvt) { - Map result = new HashMap<>(); + Map result = new HashMap<>(2); MethodSignature signature = (MethodSignature) joinPoint.getSignature(); SystemLogPoint systemLogPoint = signature.getMethod().getAnnotation(SystemLogPoint.class); String description = systemLogPoint.description(); diff --git a/framework/src/main/java/cn/lili/common/cache/Cache.java b/framework/src/main/java/cn/lili/common/cache/Cache.java index e2c86a7cc..25d919cef 100644 --- a/framework/src/main/java/cn/lili/common/cache/Cache.java +++ b/framework/src/main/java/cn/lili/common/cache/Cache.java @@ -164,6 +164,7 @@ public interface Cache { * 如需清零,按照普通key 移除即可 * * @param key + * @param value * @return */ Long cumulative(Object key, Object value); diff --git a/framework/src/main/java/cn/lili/common/cache/CachePrefix.java b/framework/src/main/java/cn/lili/common/cache/CachePrefix.java index e2734e35a..925766b11 100644 --- a/framework/src/main/java/cn/lili/common/cache/CachePrefix.java +++ b/framework/src/main/java/cn/lili/common/cache/CachePrefix.java @@ -454,25 +454,39 @@ public enum CachePrefix { /** * 店铺分类 */ - STORE_CATEGORY - ; + STORE_CATEGORY; public static String removePrefix(String str) { return str.substring(str.lastIndexOf("}_") + 2); } - //通用获取缓存key值 + /** + * 通用获取缓存key值 + * + * @return 缓存key值 + */ public String getPrefix() { return "{" + this.name() + "}_"; } - //通用获取缓存key值 + /** + * 通用获取缓存key值 + * + * @param typeEnum 促销枚举 + * @return 缓存key值 + */ public String getPrefix(PromotionTypeEnum typeEnum) { return "{" + this.name() + "_" + typeEnum.name() + "}_"; } - //获取缓存key值 + 用户端,例如:三端都有用户体系,需要分别登录,如果用户名一致,则redis中的权限可能会冲突出错 + /** + * 获取缓存key值 + 用户端 + * 例如:三端都有用户体系,需要分别登录,如果用户名一致,则redis中的权限可能会冲突出错 + * + * @param user 角色 + * @return 缓存key值 + 用户端 + */ public String getPrefix(UserEnums user) { return "{" + this.name() + "_" + user.name() + "}_"; } diff --git a/framework/src/main/java/cn/lili/common/cache/impl/RedisCache.java b/framework/src/main/java/cn/lili/common/cache/impl/RedisCache.java index 85ca4838a..ef3316659 100644 --- a/framework/src/main/java/cn/lili/common/cache/impl/RedisCache.java +++ b/framework/src/main/java/cn/lili/common/cache/impl/RedisCache.java @@ -160,7 +160,7 @@ public class RedisCache implements Cache { return null; } catch (IOException e) { - log.error("scan错误",e); + log.error("scan错误", e); throw new RuntimeException(e); } }); @@ -206,8 +206,8 @@ public class RedisCache implements Cache { public Long incr(String key, long liveTime) { RedisAtomicLong entityIdCounter = new RedisAtomicLong(key, redisTemplate.getConnectionFactory()); Long increment = entityIdCounter.getAndIncrement(); - - if ((null == increment || increment.longValue() == 0) && liveTime > 0) {//初始设置过期时间 + //初始设置过期时间 + if ((null == increment || increment.longValue() == 0) && liveTime > 0) { entityIdCounter.expire(liveTime, TimeUnit.SECONDS); } @@ -254,8 +254,7 @@ public class RedisCache implements Cache { */ @Override public boolean zAdd(String key, long score, String value) { - Boolean result = redisTemplate.opsForZSet().add(key, value, score); - return result; + return redisTemplate.opsForZSet().add(key, value, score); } diff --git a/framework/src/main/java/cn/lili/common/elasticsearch/BaseElasticsearchService.java b/framework/src/main/java/cn/lili/common/elasticsearch/BaseElasticsearchService.java index b5cbfe4ef..a133da670 100644 --- a/framework/src/main/java/cn/lili/common/elasticsearch/BaseElasticsearchService.java +++ b/framework/src/main/java/cn/lili/common/elasticsearch/BaseElasticsearchService.java @@ -308,13 +308,6 @@ public abstract class BaseElasticsearchService { PutMappingRequest request = new PutMappingRequest(index) .source(source, XContentType.JSON); -// AcknowledgedResponse putMappingResponse = client.indices().putMapping(request, -// RequestOptions.DEFAULT); -// -// boolean acknowledged = putMappingResponse.isAcknowledged(); -// if (acknowledged) { -// log.error("Succeed to put mapping"); -// } CountDownLatch latch = new CountDownLatch(1); AtomicReference response = new AtomicReference(); client.indices().putMappingAsync( diff --git a/framework/src/main/java/cn/lili/common/enums/ResultCode.java b/framework/src/main/java/cn/lili/common/enums/ResultCode.java index 0cab3e56f..166d70640 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -36,6 +36,7 @@ public enum ResultCode { VERIFICATION_EXIST(1002, "验证码服务异常"), LIMIT_ERROR(1003,"访问过于频繁,请稍后再试"), ILLEGAL_REQUEST_ERROR(1004, "非法请求,请重新刷新页面操作"), + IMAGE_FILE_EXT_ERROR(1005, "不支持图片格式"), /** * 分类 */ diff --git a/framework/src/main/java/cn/lili/common/enums/ResultUtil.java b/framework/src/main/java/cn/lili/common/enums/ResultUtil.java index 10f70a772..b4883e5a7 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultUtil.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultUtil.java @@ -56,7 +56,12 @@ public class ResultUtil { } - //抽象静态方法,返回结果集 + /** + * 抽象静态方法,返回结果集 + * @param t + * @param + * @return + */ public static ResultMessage data(T t) { return new ResultUtil().setData(t); } diff --git a/framework/src/main/java/cn/lili/common/exception/ServiceException.java b/framework/src/main/java/cn/lili/common/exception/ServiceException.java index 4f652afd1..20e856f06 100644 --- a/framework/src/main/java/cn/lili/common/exception/ServiceException.java +++ b/framework/src/main/java/cn/lili/common/exception/ServiceException.java @@ -13,10 +13,14 @@ public class ServiceException extends RuntimeException { public static String DEFAULT_MESSAGE = "网络错误,请稍后重试!"; - //异常消息 + /** + * 异常消息 + */ private String msg = DEFAULT_MESSAGE; - //错误码 + /** + * 错误码 + */ private ResultCode resultCode; public ServiceException(String msg) { diff --git a/framework/src/main/java/cn/lili/common/rocketmq/tags/AfterSaleTagsEnum.java b/framework/src/main/java/cn/lili/common/rocketmq/tags/AfterSaleTagsEnum.java index 983228128..b668ee793 100644 --- a/framework/src/main/java/cn/lili/common/rocketmq/tags/AfterSaleTagsEnum.java +++ b/framework/src/main/java/cn/lili/common/rocketmq/tags/AfterSaleTagsEnum.java @@ -1,12 +1,20 @@ package cn.lili.common.rocketmq.tags; /** + * 售后标签枚举 + * * @author paulG * @since 2020/12/9 **/ public enum AfterSaleTagsEnum { + /** + * "售后退款" + */ REFUND("售后退款"), + /** + * "售后单状态改变" + */ AFTER_SALE_STATUS_CHANGE("售后单状态改变"); private final String description; diff --git a/framework/src/main/java/cn/lili/common/rocketmq/tags/GoodsTagsEnum.java b/framework/src/main/java/cn/lili/common/rocketmq/tags/GoodsTagsEnum.java index 0a7f3a396..f4dbd25bf 100644 --- a/framework/src/main/java/cn/lili/common/rocketmq/tags/GoodsTagsEnum.java +++ b/framework/src/main/java/cn/lili/common/rocketmq/tags/GoodsTagsEnum.java @@ -6,13 +6,37 @@ package cn.lili.common.rocketmq.tags; **/ public enum GoodsTagsEnum { + /** + * "生成商品索引" + */ GENERATOR_GOODS_INDEX("生成商品索引"), + /** + * "删除商品" + */ GOODS_DELETE("删除商品"), + /** + * "审核商品" + */ GOODS_AUDIT("审核商品"), + /** + * "收藏商品" + */ GOODS_COLLECTION("收藏商品"), + /** + * "购买商品完成" + */ BUY_GOODS_COMPLETE("购买商品完成"), + /** + * "删除商品SKU" + */ SKU_DELETE("删除商品SKU"), + /** + * "查看商品" + */ VIEW_GOODS("查看商品"), + /** + * "商品评价" + */ GOODS_COMMENT_COMPLETE("商品评价"); private final String description; diff --git a/framework/src/main/java/cn/lili/common/rocketmq/tags/MemberTagsEnum.java b/framework/src/main/java/cn/lili/common/rocketmq/tags/MemberTagsEnum.java index 1b26b23b2..88fb01fe7 100644 --- a/framework/src/main/java/cn/lili/common/rocketmq/tags/MemberTagsEnum.java +++ b/framework/src/main/java/cn/lili/common/rocketmq/tags/MemberTagsEnum.java @@ -1,14 +1,27 @@ package cn.lili.common.rocketmq.tags; /** + * 会员操作枚举 + * * @author paulG * @since 2020/12/9 **/ public enum MemberTagsEnum { - + /** + * 会员注册 + */ MEMBER_REGISTER("会员注册"), + /** + * 会员签到 + */ MEMBER_SING("会员签到"), + /** + * 会员提现 + */ MEMBER_WITHDRAWAL("会员提现"), + /** + * 会员积分变动 + */ MEMBER_POINT_CHANGE("会员积分变动"); private final String description; diff --git a/framework/src/main/java/cn/lili/common/rocketmq/tags/MqOrderTagsEnum.java b/framework/src/main/java/cn/lili/common/rocketmq/tags/MqOrderTagsEnum.java index baf6bdf68..fde73145a 100644 --- a/framework/src/main/java/cn/lili/common/rocketmq/tags/MqOrderTagsEnum.java +++ b/framework/src/main/java/cn/lili/common/rocketmq/tags/MqOrderTagsEnum.java @@ -1,18 +1,23 @@ package cn.lili.common.rocketmq.tags; /** + * 订单操作枚举 + * * @author paulG * @since 2020/12/9 **/ public enum MqOrderTagsEnum { - + /** + * 订单创建 + */ ORDER_CREATE("订单创建"), + /** + * 订单状态改变 + */ STATUS_CHANGE("订单状态改变"); - - private final String description; MqOrderTagsEnum(String description) { diff --git a/framework/src/main/java/cn/lili/common/rocketmq/tags/OtherTagsEnum.java b/framework/src/main/java/cn/lili/common/rocketmq/tags/OtherTagsEnum.java index 91e9dcf33..6117c6365 100644 --- a/framework/src/main/java/cn/lili/common/rocketmq/tags/OtherTagsEnum.java +++ b/framework/src/main/java/cn/lili/common/rocketmq/tags/OtherTagsEnum.java @@ -1,12 +1,19 @@ package cn.lili.common.rocketmq.tags; /** + * 其他操作枚举 + * * @author paulG * @since 2020/12/9 **/ public enum OtherTagsEnum { - + /** + * 站内消息提醒 + */ MESSAGE("站内消息提醒"), + /** + * 短信消息提醒 + */ SMS("短信消息提醒"); private final String description; diff --git a/framework/src/main/java/cn/lili/common/security/context/UserContextInit.java b/framework/src/main/java/cn/lili/common/security/context/UserContextInit.java new file mode 100644 index 000000000..f6dbaa1df --- /dev/null +++ b/framework/src/main/java/cn/lili/common/security/context/UserContextInit.java @@ -0,0 +1,36 @@ +package cn.lili.common.security.context; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +/** + * 给予用户上下文,初始化参数 + * + * @author Chopper + * @version v4.0 + * @Description: + * @since 2020/11/14 20:30 + */ +@Component +public class UserContextInit implements ApplicationRunner { + + /** + * 用户信息holder,认证信息的获取者 + */ + @Autowired + private AuthenticationHandler authenticationHandler; + + /** + * 在项目加载时指定认证信息获取者 + * 默认是由spring 安全上下文中获取 + * + * @param args + * @throws Exception + */ + @Override + public void run(ApplicationArguments args) { + //UserContext.setHolder(authenticationHandler); + } +} diff --git a/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java b/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java index cdc533e40..ce6fbca2c 100644 --- a/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java +++ b/framework/src/main/java/cn/lili/common/security/filter/XssHttpServletRequestWrapper.java @@ -15,6 +15,10 @@ import java.util.regex.Pattern; public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { private HttpServletRequest request; + + + + public XssHttpServletRequestWrapper(HttpServletRequest request) { super(request); this.request = request; @@ -90,46 +94,38 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { return value; } + + private static final Pattern SCRIPT_PATTERN1 = Pattern.compile("", Pattern.CASE_INSENSITIVE); + private static final Pattern SCRIPT_PATTERN2 = Pattern.compile("", Pattern.CASE_INSENSITIVE); + private static final Pattern SCRIPT_PATTERN3 = Pattern.compile("", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL); + private static final Pattern SCRIPT_PATTERN4 = Pattern.compile("javascript:", Pattern.CASE_INSENSITIVE); + private static final Pattern SRC_PATTERN = Pattern.compile("src[\r\n]*=[\r\n]*\\\'(.*?)\\\'", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL); + private static final Pattern EVAL_PATTERN = Pattern.compile("eval\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL); + private static final Pattern E_­_XPRESSION_PATTERN = Pattern.compile("e­xpression\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL); + private static final Pattern VB_SCRIPT_PATTERN = Pattern.compile("vbscript:", Pattern.CASE_INSENSITIVE); + private static final Pattern ONLOAD_PATTERN = Pattern.compile("onload(.*?)=", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL); + private String cleanXSS(String value) { if (value != null) { //推荐使用ESAPI库来避免脚本攻击,value = ESAPI.encoder().canonicalize(value); -// //避免空字符串 -// value = value.replaceAll(" ", ""); //避免script 标签 - Pattern scriptPattern = Pattern.compile("", Pattern.CASE_INSENSITIVE); - value = scriptPattern.matcher(value).replaceAll(""); - //避免src形式的表达式 - scriptPattern = Pattern.compile("src[\r\n]*=[\r\n]*\\\'(.*?)\\\'", - Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL); - value = scriptPattern.matcher(value).replaceAll(""); - scriptPattern = Pattern.compile("src[\r\n]*=[\r\n]*\\\"(.*?)\\\"", - Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL); - value = scriptPattern.matcher(value).replaceAll(""); + value = SCRIPT_PATTERN1.matcher(value).replaceAll(""); //删除单个的 标签 - scriptPattern = Pattern.compile("", Pattern.CASE_INSENSITIVE); - value = scriptPattern.matcher(value).replaceAll(""); + value = SCRIPT_PATTERN2.matcher(value).replaceAll(""); //删除单个的