From 286214d9c30c1271d99786eae77267a530abe9aa Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 24 Jan 2022 16:50:42 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=BE=AE=E4=BF=A1APP=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E7=AD=BE=E5=90=8D=E9=97=AE=E9=A2=98=E7=9A=84?= =?UTF-8?q?=E6=83=85=E5=86=B5=EF=BC=8C=E6=8F=90=E4=BE=9B=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=96=B9=E6=A1=88=EF=BC=8C=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E6=97=A0=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../payment/kit/core/kit/WxPayKit.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/core/kit/WxPayKit.java b/framework/src/main/java/cn/lili/modules/payment/kit/core/kit/WxPayKit.java index 45181ecf..3e3f3c62 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/core/kit/WxPayKit.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/core/kit/WxPayKit.java @@ -5,6 +5,8 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import cn.lili.common.enums.ResultCode; +import cn.lili.common.exception.ServiceException; import cn.lili.modules.payment.kit.core.PaymentHttpResponse; import cn.lili.modules.payment.kit.core.enums.RequestMethodEnums; import cn.lili.modules.payment.kit.core.enums.SignType; @@ -114,6 +116,30 @@ public class WxPayKit { } } + /** + * APP 单独生成签名 + * app 支付环境中,如果遇到签名错误,百思不得其解,则可以使用这个方法调用签名尝试解决 + * + * @param params 需要签名的参数 + * @return 签名后的数据 + */ + public static String createAppSign(Map params, String privateKey) { + + String appid = params.get("appid"); + String timestamp = params.get("timestamp"); + String noncestr = params.get("noncestr"); + String prepayid = params.get("prepayid"); + + String encrypt = appid + "\n" + timestamp + "\n" + noncestr + "\n" + prepayid + "\n"; + + try { + return PayKit.createSign(encrypt, privateKey); + } catch (Exception e) { + throw new ServiceException(ResultCode.ERROR); + } + } + + /** * 生成签名 * @@ -351,6 +377,8 @@ public class WxPayKit { signType = SignType.MD5; } String packageSign = createSign(packageParams, partnerKey, signType); + // 部分微信APP支付 提示签名错误 解开下方注释 替换上边的代码就好。 + // String packageSign = createAppSign(packageParams, partnerKey); packageParams.put("sign", packageSign); return packageParams; } From 23ddca6f82bd3ced7761458d3c787ab3819128ef Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 24 Jan 2022 17:30:52 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E7=AD=BE=E5=88=B0=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E4=BA=8B=E5=8A=A1=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86=E3=80=82?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=BF=99=E5=9D=97=E9=80=BB=E8=BE=91=E7=9B=B8?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DB/version4.2.3toMASTER.sql | 8 ++++++++ .../serviceimpl/MemberSignServiceImpl.java | 19 +++++++------------ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/DB/version4.2.3toMASTER.sql b/DB/version4.2.3toMASTER.sql index a9eeb7ee..c34d6097 100644 --- a/DB/version4.2.3toMASTER.sql +++ b/DB/version4.2.3toMASTER.sql @@ -54,3 +54,11 @@ ALTER TABLE li_goods RENAME COLUMN is_auth TO auth_flag; ALTER TABLE li_goods_sku RENAME COLUMN is_promotion TO promotion_flag; ALTER TABLE li_goods_sku RENAME COLUMN is_auth TO auth_flag; + + +-- 增加会员表索引 +ALTER TABLE li_member ADD INDEX query_mobile (`mobile`) COMMENT 'query_member'; +-- 会员签到唯一索引 惠券查询索引 +ALTER TABLE li_member_sign ADD INDEX query_create_time (`create_time`) COMMENT 'query_create_time'; +ALTER TABLE li_member_sign ADD INDEX query_member_id (`member_id`) COMMENT 'query_member_id'; +ALTER TABLE li_member_sign add unique uk_member_day (member_id, create_time) COMMENT 'uk_member_day'; \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberSignServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberSignServiceImpl.java index 25dd0ea0..f5821133 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberSignServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberSignServiceImpl.java @@ -67,14 +67,6 @@ public class MemberSignServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("member_id", authUser.getId()); - queryWrapper.between("create_time", new Date(DateUtil.startOfTodDay() * 1000), DateUtil.getCurrentDayEndTime()); - //校验今天是否已经签到 - List todaySigns = this.baseMapper.getTodayMemberSign(queryWrapper); - if (todaySigns.size() > 0) { - throw new ServiceException(ResultCode.MEMBER_SIGN_REPEAT); - } //当前签到天数的前一天日期 List signs = this.baseMapper.getBeforeMemberSign(authUser.getId()); //构建参数 @@ -89,14 +81,17 @@ public class MemberSignServiceImpl extends ServiceImpl 0) { + //手动写入创建时间,以保证唯一索引生效 + memberSign.setCreateTime(DateUtil.getCurrentDayEndTime()); + try { + this.baseMapper.insert(memberSign); + //签到成功后发送消息赠送积分 String destination = rocketmqCustomProperties.getMemberTopic() + ":" + MemberTagsEnum.MEMBER_SING.name(); rocketMQTemplate.asyncSend(destination, memberSign, RocketmqSendCallbackBuilder.commonCallback()); return true; + } catch (Exception e) { + throw new ServiceException(ResultCode.MEMBER_SIGN_REPEAT); } - return false; } throw new ServiceException(ResultCode.USER_NOT_LOGIN); } From 936397c59f884e3975540f72281641bd7c19db0d Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 24 Jan 2022 18:11:10 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=A5=BD=E8=AF=84?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E4=B8=80=E4=B8=AA=E5=85=A8=E7=BA=BF=E5=88=A4?= =?UTF-8?q?=E5=AE=9A=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/member/MemberEvaluationBuyerController.java | 2 +- .../handler/impl/order/OrderEveryDayTaskExecute.java | 2 +- .../modules/member/service/MemberEvaluationService.java | 3 ++- .../member/serviceimpl/MemberEvaluationServiceImpl.java | 6 ++++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/buyer-api/src/main/java/cn/lili/controller/member/MemberEvaluationBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/member/MemberEvaluationBuyerController.java index acf5b34d..16b5be8a 100644 --- a/buyer-api/src/main/java/cn/lili/controller/member/MemberEvaluationBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/member/MemberEvaluationBuyerController.java @@ -40,7 +40,7 @@ public class MemberEvaluationBuyerController { @ApiOperation(value = "添加会员评价") @PostMapping public ResultMessage save(@Valid MemberEvaluationDTO memberEvaluationDTO) { - return ResultUtil.data(memberEvaluationService.addMemberEvaluation(memberEvaluationDTO)); + return ResultUtil.data(memberEvaluationService.addMemberEvaluation(memberEvaluationDTO, true)); } @ApiOperation(value = "查看会员评价详情") 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 bfe509b3..f0b8a077 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 @@ -146,7 +146,7 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute { memberEvaluationDTO.setDescriptionScore(5); memberEvaluationDTO.setServiceScore(5); - memberEvaluationService.addMemberEvaluation(memberEvaluationDTO); + memberEvaluationService.addMemberEvaluation(memberEvaluationDTO, false); } } } diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberEvaluationService.java b/framework/src/main/java/cn/lili/modules/member/service/MemberEvaluationService.java index 1b600ce9..860018be 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/MemberEvaluationService.java +++ b/framework/src/main/java/cn/lili/modules/member/service/MemberEvaluationService.java @@ -41,9 +41,10 @@ public interface MemberEvaluationService extends IService { * 4.发送用户评价消息修改商品的评价数量以及好评率 * * @param memberEvaluationDTO 评论 + * @param isSelf 是否自己操作(true:买家操作/false 系统操作) * @return 操作状态 */ - MemberEvaluationDTO addMemberEvaluation(MemberEvaluationDTO memberEvaluationDTO); + MemberEvaluationDTO addMemberEvaluation(MemberEvaluationDTO memberEvaluationDTO, Boolean isSelf); /** * 根据ID查询会员评价 diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java index 4b6e1d91..bce3490f 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberEvaluationServiceImpl.java @@ -106,13 +106,15 @@ public class MemberEvaluationServiceImpl extends ServiceImpl Date: Mon, 24 Jan 2022 11:30:35 +0000 Subject: [PATCH 4/5] update config/application.yml. --- config/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/application.yml b/config/application.yml index 0753c11f..f18e5ee9 100644 --- a/config/application.yml +++ b/config/application.yml @@ -183,7 +183,7 @@ mybatis-plus: logging: # 输出级别 level: - root: error + root: info # org.hibernate: debug # org.springframework: debug # org.springframework.data.mongodb.core: debug From 3972e0231ca0da754f935530336d9f19ce1fb9ac Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 25 Jan 2022 10:22:45 +0800 Subject: [PATCH 5/5] =?UTF-8?q?api=E7=AB=AF=E9=98=B2=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DistributionCashBuyerController.java | 2 + .../DistributionGoodsBuyerController.java | 2 + .../MemberEvaluationBuyerController.java | 2 + .../member/MemberSignBuyerController.java | 3 + .../order/AfterSaleBuyerController.java | 3 + .../lili/controller/order/CartController.java | 2 + .../order/OrderBuyerController.java | 5 ++ .../order/OrderComplaintBuyerController.java | 3 + .../order/ReceiptBuyerController.java | 2 + .../order/RechargeTradeBuyerController.java | 2 + .../other/FeedbackBuyerController.java | 2 + .../purchase/PurchaseBuyerController.java | 4 ++ .../wallet/MemberReceiptController.java | 2 + .../wallet/MemberWalletBuyerController.java | 2 + .../common/SliderImageController.java | 1 + .../limit/interceptor/LimitInterceptor.java | 30 ++------- .../lili/common/aop/annotation/DemoSite.java | 2 + .../PreventDuplicateSubmissions.java | 25 +++++++ ...reventDuplicateSubmissionsInterceptor.java | 67 +++++++++++++++++++ .../DistributionCashManagerController.java | 2 + .../DistributionManagerController.java | 4 ++ .../goods/GoodsManagerController.java | 4 ++ .../MemberAddressManagerController.java | 3 + .../MemberEvaluationManagerController.java | 3 + .../member/MemberManagerController.java | 7 +- .../order/AfterSaleManagerController.java | 2 + .../OrderComplaintManagerController.java | 3 + .../order/OrderManagerController.java | 5 ++ .../IndexStatisticsManagerController.java | 2 + .../MemberWithdrawApplyManagerController.java | 2 + .../order/AfterSaleStoreController.java | 3 + .../order/OrderComplaintStoreController.java | 3 + .../order/OrderStoreController.java | 5 ++ 33 files changed, 181 insertions(+), 28 deletions(-) create mode 100644 framework/src/main/java/cn/lili/common/aop/annotation/PreventDuplicateSubmissions.java create mode 100644 framework/src/main/java/cn/lili/common/aop/interceptor/PreventDuplicateSubmissionsInterceptor.java diff --git a/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionCashBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionCashBuyerController.java index ceaef297..28994aad 100644 --- a/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionCashBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionCashBuyerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.distribution; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; @@ -49,6 +50,7 @@ public class DistributionCashBuyerController { private DistributionCashService distributorCashService; + @PreventDuplicateSubmissions @ApiOperation(value = "分销员提现") @ApiImplicitParams({ @ApiImplicitParam(name = "price", value = "申请金额", required = true, paramType = "query", dataType = "double") diff --git a/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionGoodsBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionGoodsBuyerController.java index e4497dc9..a8314cff 100644 --- a/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionGoodsBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/distribution/DistributionGoodsBuyerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.distribution; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; @@ -50,6 +51,7 @@ public class DistributionGoodsBuyerController { return ResultUtil.data(distributionGoodsService.goodsPage(distributionGoodsSearchParams)); } + @PreventDuplicateSubmissions @ApiOperation(value = "选择分销商品") @ApiImplicitParams({ @ApiImplicitParam(name = "distributionGoodsId", value = "分销ID", required = true, dataType = "String", paramType = "path"), diff --git a/buyer-api/src/main/java/cn/lili/controller/member/MemberEvaluationBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/member/MemberEvaluationBuyerController.java index 16b5be8a..d8e90076 100644 --- a/buyer-api/src/main/java/cn/lili/controller/member/MemberEvaluationBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/member/MemberEvaluationBuyerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.member; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.enums.SwitchEnum; import cn.lili.common.security.context.UserContext; @@ -37,6 +38,7 @@ public class MemberEvaluationBuyerController { @Autowired private MemberEvaluationService memberEvaluationService; + @PreventDuplicateSubmissions @ApiOperation(value = "添加会员评价") @PostMapping public ResultMessage save(@Valid MemberEvaluationDTO memberEvaluationDTO) { diff --git a/buyer-api/src/main/java/cn/lili/controller/member/MemberSignBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/member/MemberSignBuyerController.java index 2bd82c61..758f60cf 100644 --- a/buyer-api/src/main/java/cn/lili/controller/member/MemberSignBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/member/MemberSignBuyerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.member; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.member.entity.dos.MemberSign; @@ -27,6 +28,8 @@ public class MemberSignBuyerController { @Autowired private MemberSignService memberSignService; + + @PreventDuplicateSubmissions @PostMapping @ApiOperation(value = "会员签到") public ResultMessage memberSign() { diff --git a/buyer-api/src/main/java/cn/lili/controller/order/AfterSaleBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/order/AfterSaleBuyerController.java index 26e495fd..f5d68e9c 100644 --- a/buyer-api/src/main/java/cn/lili/controller/order/AfterSaleBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/AfterSaleBuyerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.order; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.OperationalJudgment; import cn.lili.common.vo.ResultMessage; @@ -77,6 +78,7 @@ public class AfterSaleBuyerController { return ResultUtil.data(afterSaleService.getAfterSaleVO(sn)); } + @PreventDuplicateSubmissions @PostMapping(value = "/save/{orderItemSn}") @ApiImplicitParam(name = "orderItemSn", value = "订单货物编号", required = true, paramType = "query") @ApiOperation(value = "申请售后") @@ -101,6 +103,7 @@ public class AfterSaleBuyerController { return ResultUtil.data(afterSaleService.buyerDelivery(afterSaleSn, logisticsNo, logisticsId, mDeliverTime)); } + @PreventDuplicateSubmissions @ApiOperation(value = "售后,取消售后") @ApiImplicitParams({ @ApiImplicitParam(name = "afterSaleSn", value = "售后sn", required = true, dataType = "String", paramType = "path") diff --git a/buyer-api/src/main/java/cn/lili/controller/order/CartController.java b/buyer-api/src/main/java/cn/lili/controller/order/CartController.java index c2a4508a..f78e4d78 100644 --- a/buyer-api/src/main/java/cn/lili/controller/order/CartController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/CartController.java @@ -1,5 +1,6 @@ package cn.lili.controller.order; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; @@ -235,6 +236,7 @@ public class CartController { } + @PreventDuplicateSubmissions @ApiOperation(value = "创建交易") @PostMapping(value = "/create/trade", consumes = "application/json", produces = "application/json") public ResultMessage crateTrade(@RequestBody TradeParams tradeParams) { diff --git a/buyer-api/src/main/java/cn/lili/controller/order/OrderBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/order/OrderBuyerController.java index d5501ff8..f08e6c17 100644 --- a/buyer-api/src/main/java/cn/lili/controller/order/OrderBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/OrderBuyerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.order; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; @@ -62,6 +63,7 @@ public class OrderBuyerController { return ResultUtil.data(orderDetailVO); } + @PreventDuplicateSubmissions @ApiOperation(value = "确认收货") @ApiImplicitParams({ @ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, paramType = "path") @@ -80,6 +82,7 @@ public class OrderBuyerController { return ResultUtil.success(); } + @PreventDuplicateSubmissions @ApiOperation(value = "取消订单") @ApiImplicitParams({ @ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path"), @@ -91,6 +94,7 @@ public class OrderBuyerController { return ResultUtil.success(); } + @PreventDuplicateSubmissions @ApiOperation(value = "删除订单") @ApiImplicitParams({ @ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path") @@ -113,6 +117,7 @@ public class OrderBuyerController { } + @PreventDuplicateSubmissions @ApiOperation(value = "开票") @ApiImplicitParams({ @ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path") diff --git a/buyer-api/src/main/java/cn/lili/controller/order/OrderComplaintBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/order/OrderComplaintBuyerController.java index 63f21431..29987dd2 100644 --- a/buyer-api/src/main/java/cn/lili/controller/order/OrderComplaintBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/OrderComplaintBuyerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.order; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.AuthUser; import cn.lili.common.security.OperationalJudgment; @@ -66,6 +67,7 @@ public class OrderComplaintBuyerController { } + @PreventDuplicateSubmissions @ApiOperation(value = "添加交易投诉") @PostMapping public ResultMessage add(@Valid OrderComplaintDTO orderComplaintDTO) { @@ -85,6 +87,7 @@ public class OrderComplaintBuyerController { return ResultUtil.data(communicationVO); } + @PreventDuplicateSubmissions @ApiOperation(value = "取消售后") @ApiImplicitParam(name = "id", value = "投诉单ID", required = true, paramType = "path") @PutMapping(value = "/status/{id}") diff --git a/buyer-api/src/main/java/cn/lili/controller/order/ReceiptBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/order/ReceiptBuyerController.java index c707c2ea..66253078 100644 --- a/buyer-api/src/main/java/cn/lili/controller/order/ReceiptBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/ReceiptBuyerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.order; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; @@ -41,6 +42,7 @@ public class ReceiptBuyerController { return ResultUtil.data(this.receiptService.getReceiptData(searchParams, pageVO)); } + @PreventDuplicateSubmissions @ApiOperation(value = "保存发票信息") @PostMapping public ResultMessage save(@Valid Receipt receipt) { diff --git a/buyer-api/src/main/java/cn/lili/controller/order/RechargeTradeBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/order/RechargeTradeBuyerController.java index 6071e61b..d8d04eeb 100644 --- a/buyer-api/src/main/java/cn/lili/controller/order/RechargeTradeBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/RechargeTradeBuyerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.order; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.wallet.entity.dos.Recharge; @@ -31,6 +32,7 @@ public class RechargeTradeBuyerController { @Autowired private RechargeService rechargeService; + @PreventDuplicateSubmissions @PostMapping @ApiOperation(value = "创建余额充值订单") @ApiImplicitParams({ diff --git a/buyer-api/src/main/java/cn/lili/controller/other/FeedbackBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/other/FeedbackBuyerController.java index 83f0ac04..263e54d9 100644 --- a/buyer-api/src/main/java/cn/lili/controller/other/FeedbackBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/other/FeedbackBuyerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.other; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.ResultMessage; @@ -31,6 +32,7 @@ public class FeedbackBuyerController { @Autowired private FeedbackService feedbackService; + @PreventDuplicateSubmissions @ApiOperation(value = "添加意见反馈") @PostMapping() public ResultMessage save(@Valid Feedback feedback) { diff --git a/buyer-api/src/main/java/cn/lili/controller/other/purchase/PurchaseBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/other/purchase/PurchaseBuyerController.java index 1f7db028..6bf2105b 100644 --- a/buyer-api/src/main/java/cn/lili/controller/other/purchase/PurchaseBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/other/purchase/PurchaseBuyerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.other.purchase; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; @@ -48,6 +49,8 @@ public class PurchaseBuyerController { return ResultUtil.data(goodsUnitService.page(PageUtil.initPage(pageVO))); } + + @PreventDuplicateSubmissions @ApiOperation(value = "添加采购单") @PostMapping public ResultMessage addPurchaseOrderVO(@RequestBody PurchaseOrderVO purchaseOrderVO) { @@ -74,6 +77,7 @@ public class PurchaseBuyerController { return ResultUtil.data(purchaseOrderService.page(purchaseOrderSearchParams)); } + @PreventDuplicateSubmissions @ApiOperation(value = "关闭采购单") @ApiImplicitParam(name = "id", value = "采购单ID", required = true, dataType = "Long", paramType = "path") @PutMapping("/{id}") diff --git a/buyer-api/src/main/java/cn/lili/controller/wallet/MemberReceiptController.java b/buyer-api/src/main/java/cn/lili/controller/wallet/MemberReceiptController.java index 63e2c6c4..daee4a35 100644 --- a/buyer-api/src/main/java/cn/lili/controller/wallet/MemberReceiptController.java +++ b/buyer-api/src/main/java/cn/lili/controller/wallet/MemberReceiptController.java @@ -1,6 +1,7 @@ package cn.lili.controller.wallet; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; @@ -35,6 +36,7 @@ public class MemberReceiptController { return ResultUtil.data(memberReceiptService.getPage(memberReceiptVO, page)); } + @PreventDuplicateSubmissions @ApiOperation(value = "新增会员发票") @PostMapping public ResultMessage add(MemberReceiptAddVO memberReceiptAddVO) { diff --git a/buyer-api/src/main/java/cn/lili/controller/wallet/MemberWalletBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/wallet/MemberWalletBuyerController.java index 59d8a579..33ba19fd 100644 --- a/buyer-api/src/main/java/cn/lili/controller/wallet/MemberWalletBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/wallet/MemberWalletBuyerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.wallet; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; @@ -120,6 +121,7 @@ public class MemberWalletBuyerController { } + @PreventDuplicateSubmissions @PostMapping(value = "/withdrawal") @ApiOperation(value = "会员中心余额提现") @ApiImplicitParams({ 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 bb22429f..ce4f9e5a 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 @@ -1,6 +1,7 @@ package cn.lili.controller.common; import cn.lili.cache.limit.annotation.LimitPoint; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.verification.entity.enums.VerificationEnums; diff --git a/framework/src/main/java/cn/lili/cache/limit/interceptor/LimitInterceptor.java b/framework/src/main/java/cn/lili/cache/limit/interceptor/LimitInterceptor.java index 6b840fbb..d3c01b1f 100644 --- a/framework/src/main/java/cn/lili/cache/limit/interceptor/LimitInterceptor.java +++ b/framework/src/main/java/cn/lili/cache/limit/interceptor/LimitInterceptor.java @@ -4,6 +4,7 @@ import cn.lili.cache.limit.enums.LimitTypeEnums; import cn.lili.cache.limit.annotation.LimitPoint; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; +import cn.lili.common.utils.IpUtils; import com.google.common.collect.ImmutableList; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -54,7 +55,8 @@ public class LimitInterceptor { key = limitPointAnnotation.key(); break; default: - key = limitPointAnnotation.key() + getIpAddress(); + key = limitPointAnnotation.key() + IpUtils + .getIpAddress(((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); } ImmutableList keys = ImmutableList.of(StringUtils.join(limitPointAnnotation.prefix(), key)); try { @@ -71,32 +73,8 @@ public class LimitInterceptor { } catch (ServiceException e) { throw e; } catch (Exception e) { - throw new RuntimeException("服务器异常,请稍后再试"); + throw new ServiceException(ResultCode.ERROR); } } - - /** - * 默认unknown常量值 - */ - private static final String UNKNOWN = "unknown"; - - /** - * 获取ip - * @return ip - */ - public String getIpAddress() { - HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - String ip = request.getHeader("x-forwarded-for"); - if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { - ip = request.getHeader("Proxy-Client-IP"); - } - if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { - ip = request.getHeader("WL-Proxy-Client-IP"); - } - if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { - ip = request.getRemoteAddr(); - } - return ip; - } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/common/aop/annotation/DemoSite.java b/framework/src/main/java/cn/lili/common/aop/annotation/DemoSite.java index 48facbd3..8d119f17 100644 --- a/framework/src/main/java/cn/lili/common/aop/annotation/DemoSite.java +++ b/framework/src/main/java/cn/lili/common/aop/annotation/DemoSite.java @@ -4,6 +4,8 @@ import java.lang.annotation.*; /** * 演示站点注解 + *

+ * PS 此注解需要用户登录之后才可以使用 * * @author Bulbasaur * @since 2021/7/9 1:40 上午 diff --git a/framework/src/main/java/cn/lili/common/aop/annotation/PreventDuplicateSubmissions.java b/framework/src/main/java/cn/lili/common/aop/annotation/PreventDuplicateSubmissions.java new file mode 100644 index 00000000..910906b4 --- /dev/null +++ b/framework/src/main/java/cn/lili/common/aop/annotation/PreventDuplicateSubmissions.java @@ -0,0 +1,25 @@ +package cn.lili.common.aop.annotation; + +import java.lang.annotation.*; +import java.util.concurrent.TimeUnit; + +/** + * 防止重复提交注解 + * + * @author liushuai(liushuai711 @ gmail.com) + * @version v4.0 + * @Description: + * @since 2022/1/25 09:17 + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Inherited +public @interface PreventDuplicateSubmissions { + + + /** + * 过期时间 + */ + long expire() default 3; +} diff --git a/framework/src/main/java/cn/lili/common/aop/interceptor/PreventDuplicateSubmissionsInterceptor.java b/framework/src/main/java/cn/lili/common/aop/interceptor/PreventDuplicateSubmissionsInterceptor.java new file mode 100644 index 00000000..263cf18f --- /dev/null +++ b/framework/src/main/java/cn/lili/common/aop/interceptor/PreventDuplicateSubmissionsInterceptor.java @@ -0,0 +1,67 @@ +package cn.lili.common.aop.interceptor; + +/** + * 防重复提交业务 + * + * @author Chopper + * @version v1.0 + * 2022-01-25 09:20 + */ + +import cn.lili.cache.Cache; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; +import cn.lili.common.enums.ResultCode; +import cn.lili.common.exception.ServiceException; +import cn.lili.common.security.context.UserContext; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; + +@Aspect +@Component +@Slf4j +public class PreventDuplicateSubmissionsInterceptor { + + @Autowired + private Cache cache; + + + @Before("@annotation(preventDuplicateSubmissions)") + public void interceptor(PreventDuplicateSubmissions preventDuplicateSubmissions) { + + try { + Long count = cache.incr(getParams(), preventDuplicateSubmissions.expire()); + //如果超过1或者设置的参数,则表示重复提交了 + if (count.intValue() >= preventDuplicateSubmissions.expire()) { + throw new ServiceException(ResultCode.LIMIT_ERROR); + } + } + //如果参数为空,则表示用户未登录,直接略过,不做处理 + catch (NullPointerException e) { + return; + } catch (ServiceException e) { + throw e; + } catch (Exception e) { + throw new ServiceException(ResultCode.ERROR); + } + } + + /** + * 获取表单参数 + * + * @return + */ + private String getParams() { + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + //请求地址 + return request.getRequestURI() + UserContext.getCurrentUser().getId() + UserContext.getCurrentUser().getUsername(); + } + + +} diff --git a/manager-api/src/main/java/cn/lili/controller/distribution/DistributionCashManagerController.java b/manager-api/src/main/java/cn/lili/controller/distribution/DistributionCashManagerController.java index ef0fde1c..2c470682 100644 --- a/manager-api/src/main/java/cn/lili/controller/distribution/DistributionCashManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/distribution/DistributionCashManagerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.distribution; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.distribution.entity.dos.DistributionCash; @@ -43,6 +44,7 @@ public class DistributionCashManagerController { } + @PreventDuplicateSubmissions @ApiOperation(value = "审核") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "分销佣金ID", required = true, paramType = "path", dataType = "String"), diff --git a/manager-api/src/main/java/cn/lili/controller/distribution/DistributionManagerController.java b/manager-api/src/main/java/cn/lili/controller/distribution/DistributionManagerController.java index 0a98a672..22eed41c 100644 --- a/manager-api/src/main/java/cn/lili/controller/distribution/DistributionManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/distribution/DistributionManagerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.distribution; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; @@ -39,6 +40,7 @@ public class DistributionManagerController { } + @PreventDuplicateSubmissions @ApiOperation(value = "清退分销商") @PutMapping(value = "/retreat/{id}") @ApiImplicitParams({ @@ -53,6 +55,7 @@ public class DistributionManagerController { } + @PreventDuplicateSubmissions @ApiOperation(value = "恢复分销商") @PutMapping(value = "/resume/{id}") @ApiImplicitParams({ @@ -67,6 +70,7 @@ public class DistributionManagerController { } + @PreventDuplicateSubmissions @ApiOperation(value = "审核分销商") @PutMapping(value = "/audit/{id}") @ApiImplicitParams({ diff --git a/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java b/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java index f015822e..d8660c04 100644 --- a/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.goods; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; @@ -65,6 +66,7 @@ public class GoodsManagerController { return goodsService.queryByParams(goodsSearchParams); } + @PreventDuplicateSubmissions @ApiOperation(value = "管理员下架商品", notes = "管理员下架商品时使用") @ApiImplicitParams({ @ApiImplicitParam(name = "goodsId", value = "商品ID", required = true, paramType = "query", allowMultiple = true), @@ -79,6 +81,7 @@ public class GoodsManagerController { throw new ServiceException(ResultCode.GOODS_UNDER_ERROR); } + @PreventDuplicateSubmissions @ApiOperation(value = "管理员审核商品", notes = "管理员审核商品") @ApiImplicitParams({ @ApiImplicitParam(name = "goodsIds", value = "商品ID", required = true, paramType = "path", allowMultiple = true, dataType = "int"), @@ -94,6 +97,7 @@ public class GoodsManagerController { } + @PreventDuplicateSubmissions @ApiOperation(value = "管理员上架商品", notes = "管理员上架商品时使用") @PutMapping(value = "/{goodsId}/up") @ApiImplicitParams({ diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberAddressManagerController.java b/manager-api/src/main/java/cn/lili/controller/member/MemberAddressManagerController.java index d75effd5..4896d99b 100644 --- a/manager-api/src/main/java/cn/lili/controller/member/MemberAddressManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/member/MemberAddressManagerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.member; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; @@ -33,6 +34,7 @@ public class MemberAddressManagerController { return ResultUtil.data(memberAddressService.getAddressByMember(page, memberId)); } + @PreventDuplicateSubmissions @ApiOperation(value = "删除会员收件地址") @ApiImplicitParam(name = "id", value = "会员地址ID", dataType = "String", paramType = "path") @DeleteMapping(value = "/delById/{id}") @@ -48,6 +50,7 @@ public class MemberAddressManagerController { return ResultUtil.data(memberAddressService.updateMemberAddress(shippingAddress)); } + @PreventDuplicateSubmissions @ApiOperation(value = "新增会员收件地址") @PostMapping public ResultMessage addShippingAddress(@Valid MemberAddress shippingAddress) { diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberEvaluationManagerController.java b/manager-api/src/main/java/cn/lili/controller/member/MemberEvaluationManagerController.java index e1d3d241..d880de06 100644 --- a/manager-api/src/main/java/cn/lili/controller/member/MemberEvaluationManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/member/MemberEvaluationManagerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.member; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; @@ -30,6 +31,7 @@ public class MemberEvaluationManagerController { @Autowired private MemberEvaluationService memberEvaluationService; + @PreventDuplicateSubmissions @ApiOperation(value = "通过id获取评论") @ApiImplicitParam(name = "id", value = "评价ID", required = true, dataType = "String", paramType = "path") @GetMapping(value = "/get/{id}") @@ -45,6 +47,7 @@ public class MemberEvaluationManagerController { return ResultUtil.data(memberEvaluationService.queryPage(evaluationQueryParams)); } + @PreventDuplicateSubmissions @ApiOperation(value = "修改评价状态") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "评价ID", required = true, paramType = "path"), diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberManagerController.java b/manager-api/src/main/java/cn/lili/controller/member/MemberManagerController.java index 307306d4..d8a55e90 100644 --- a/manager-api/src/main/java/cn/lili/controller/member/MemberManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/member/MemberManagerController.java @@ -1,6 +1,7 @@ package cn.lili.controller.member; import cn.lili.common.aop.annotation.DemoSite; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; @@ -56,20 +57,22 @@ public class MemberManagerController { return ResultUtil.data(memberService.addMember(member)); } + @DemoSite + @PreventDuplicateSubmissions @ApiOperation(value = "修改会员基本信息") @PutMapping - @DemoSite public ResultMessage update(@Valid ManagerMemberEditDTO managerMemberEditDTO) { return ResultUtil.data(memberService.updateMember(managerMemberEditDTO)); } + @DemoSite + @PreventDuplicateSubmissions @ApiOperation(value = "修改会员状态,开启关闭会员") @ApiImplicitParams({ @ApiImplicitParam(name = "memberIds", value = "会员ID", required = true, dataType = "String", allowMultiple = true, paramType = "query"), @ApiImplicitParam(name = "disabled", required = true, dataType = "boolean", paramType = "query") }) @PutMapping("/updateMemberStatus") - @DemoSite public ResultMessage updateMemberStatus(@RequestParam List memberIds, @RequestParam Boolean disabled) { memberService.updateMemberStatus(memberIds, disabled); return ResultUtil.success(); diff --git a/manager-api/src/main/java/cn/lili/controller/order/AfterSaleManagerController.java b/manager-api/src/main/java/cn/lili/controller/order/AfterSaleManagerController.java index 42a16ecd..bcf6999c 100644 --- a/manager-api/src/main/java/cn/lili/controller/order/AfterSaleManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/order/AfterSaleManagerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.order; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.order.aftersale.entity.dos.AfterSale; @@ -74,6 +75,7 @@ public class AfterSaleManagerController { return ResultUtil.data(afterSaleService.refund(afterSaleSn, remark)); } + @PreventDuplicateSubmissions @ApiOperation(value = "审核售后申请") @ApiImplicitParams({ @ApiImplicitParam(name = "afterSaleSn", value = "售后sn", required = true, paramType = "path"), diff --git a/manager-api/src/main/java/cn/lili/controller/order/OrderComplaintManagerController.java b/manager-api/src/main/java/cn/lili/controller/order/OrderComplaintManagerController.java index a2a64ecc..c95a7be5 100644 --- a/manager-api/src/main/java/cn/lili/controller/order/OrderComplaintManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/order/OrderComplaintManagerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.order; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; @@ -79,6 +80,7 @@ public class OrderComplaintManagerController { return ResultUtil.data(communicationVO); } + @PreventDuplicateSubmissions @ApiOperation(value = "修改状态") @PutMapping(value = "/status") public ResultMessage updateStatus(OrderComplaintOperationParams orderComplainVO) { @@ -87,6 +89,7 @@ public class OrderComplaintManagerController { } + @PreventDuplicateSubmissions @ApiOperation(value = "仲裁") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "投诉单ID", required = true, paramType = "path"), diff --git a/manager-api/src/main/java/cn/lili/controller/order/OrderManagerController.java b/manager-api/src/main/java/cn/lili/controller/order/OrderManagerController.java index 2f7dedfc..4c6b0c4b 100644 --- a/manager-api/src/main/java/cn/lili/controller/order/OrderManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/order/OrderManagerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.order; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.member.entity.dto.MemberAddressDTO; @@ -68,6 +69,7 @@ public class OrderManagerController { } + @PreventDuplicateSubmissions @ApiOperation(value = "确认收款") @ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path") @PostMapping(value = "/{orderSn}/pay") @@ -76,6 +78,7 @@ public class OrderManagerController { return ResultUtil.success(); } + @PreventDuplicateSubmissions @ApiOperation(value = "修改收货人信息") @ApiImplicitParam(name = "orderSn", value = "订单sn", required = true, dataType = "String", paramType = "path") @PostMapping(value = "/update/{orderSn}/consignee") @@ -84,6 +87,7 @@ public class OrderManagerController { return ResultUtil.data(orderService.updateConsignee(orderSn, memberAddressDTO)); } + @PreventDuplicateSubmissions @ApiOperation(value = "修改订单价格") @ApiImplicitParams({ @ApiImplicitParam(name = "orderSn", value = "订单sn", required = true, dataType = "String", paramType = "path"), @@ -96,6 +100,7 @@ public class OrderManagerController { } + @PreventDuplicateSubmissions @ApiOperation(value = "取消订单") @ApiImplicitParams({ @ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path"), diff --git a/manager-api/src/main/java/cn/lili/controller/statistics/IndexStatisticsManagerController.java b/manager-api/src/main/java/cn/lili/controller/statistics/IndexStatisticsManagerController.java index 7ee8eef8..9647b8d1 100644 --- a/manager-api/src/main/java/cn/lili/controller/statistics/IndexStatisticsManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/statistics/IndexStatisticsManagerController.java @@ -1,5 +1,6 @@ package cn.lili.controller.statistics; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.statistics.entity.dto.GoodsStatisticsQueryParam; @@ -40,6 +41,7 @@ public class IndexStatisticsManagerController { @ApiOperation(value = "获取首页查询数据") @GetMapping + @PreventDuplicateSubmissions public ResultMessage index() { try { return ResultUtil.data(indexStatisticsService.indexStatistics()); diff --git a/manager-api/src/main/java/cn/lili/controller/wallet/MemberWithdrawApplyManagerController.java b/manager-api/src/main/java/cn/lili/controller/wallet/MemberWithdrawApplyManagerController.java index efc4c3bf..c5c5acc1 100644 --- a/manager-api/src/main/java/cn/lili/controller/wallet/MemberWithdrawApplyManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/wallet/MemberWithdrawApplyManagerController.java @@ -1,6 +1,7 @@ package cn.lili.controller.wallet; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; @@ -43,6 +44,7 @@ public class MemberWithdrawApplyManagerController { } + @PreventDuplicateSubmissions @ApiOperation(value = "提现申请审核") @PostMapping @ApiImplicitParams({ diff --git a/seller-api/src/main/java/cn/lili/controller/order/AfterSaleStoreController.java b/seller-api/src/main/java/cn/lili/controller/order/AfterSaleStoreController.java index c50ad0df..e643fcdd 100644 --- a/seller-api/src/main/java/cn/lili/controller/order/AfterSaleStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/order/AfterSaleStoreController.java @@ -1,5 +1,6 @@ package cn.lili.controller.order; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.OperationalJudgment; import cn.lili.common.security.context.UserContext; @@ -60,6 +61,7 @@ public class AfterSaleStoreController { return ResultUtil.data(afterSaleService.exportAfterSaleOrder(searchParams)); } + @PreventDuplicateSubmissions @ApiOperation(value = "审核售后申请") @ApiImplicitParams({ @ApiImplicitParam(name = "afterSaleSn", value = "售后sn", required = true, paramType = "path"), @@ -76,6 +78,7 @@ public class AfterSaleStoreController { return ResultUtil.data(afterSaleService.review(afterSaleSn, serviceStatus, remark,actualRefundPrice)); } + @PreventDuplicateSubmissions @ApiOperation(value = "卖家确认收货") @ApiImplicitParams({ @ApiImplicitParam(name = "afterSaleSn", value = "售后sn", required = true, paramType = "path"), diff --git a/seller-api/src/main/java/cn/lili/controller/order/OrderComplaintStoreController.java b/seller-api/src/main/java/cn/lili/controller/order/OrderComplaintStoreController.java index e2879831..afe5321d 100644 --- a/seller-api/src/main/java/cn/lili/controller/order/OrderComplaintStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/order/OrderComplaintStoreController.java @@ -1,5 +1,6 @@ package cn.lili.controller.order; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.AuthUser; import cn.lili.common.security.OperationalJudgment; @@ -81,6 +82,7 @@ public class OrderComplaintStoreController { return ResultUtil.data(orderComplainVO); } + @PreventDuplicateSubmissions @ApiOperation(value = "申诉") @PutMapping("/appeal") public ResultMessage appeal(StoreAppealVO storeAppealVO) { @@ -88,6 +90,7 @@ public class OrderComplaintStoreController { return ResultUtil.data(orderComplaintService.getOrderComplainById(storeAppealVO.getOrderComplaintId())); } + @PreventDuplicateSubmissions @ApiOperation(value = "修改状态") @PutMapping(value = "/status") public ResultMessage updateStatus(OrderComplaintOperationParams orderComplainVO) { diff --git a/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java b/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java index f0cb92e5..65330ba4 100644 --- a/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java @@ -1,5 +1,6 @@ package cn.lili.controller.order; +import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.context.ThreadContextHolder; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; @@ -86,6 +87,7 @@ public class OrderStoreController { return ResultUtil.data(orderService.updateConsignee(orderSn, memberAddressDTO)); } + @PreventDuplicateSubmissions @ApiOperation(value = "修改订单价格") @ApiImplicitParams({ @ApiImplicitParam(name = "orderSn", value = "订单sn", required = true, dataType = "String", paramType = "path"), @@ -97,6 +99,7 @@ public class OrderStoreController { return ResultUtil.data(orderPriceService.updatePrice(orderSn, orderPrice)); } + @PreventDuplicateSubmissions @ApiOperation(value = "订单发货") @ApiImplicitParams({ @ApiImplicitParam(name = "orderSn", value = "订单sn", required = true, dataType = "String", paramType = "path"), @@ -110,6 +113,7 @@ public class OrderStoreController { return ResultUtil.data(orderService.delivery(orderSn, logisticsNo, logisticsId)); } + @PreventDuplicateSubmissions @ApiOperation(value = "取消订单") @ApiImplicitParams({ @ApiImplicitParam(name = "orderSn", value = "订单编号", required = true, dataType = "String", paramType = "path"), @@ -127,6 +131,7 @@ public class OrderStoreController { return ResultUtil.data(orderService.getOrderByVerificationCode(verificationCode)); } + @PreventDuplicateSubmissions @ApiOperation(value = "订单核验") @ApiImplicitParams({ @ApiImplicitParam(name = "orderSn", value = "订单号", required = true, paramType = "path"),