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"),