Commit 2cff963a16255c22e1b82c85b0ef43b304c6ce41

Authored by 颜惠青
1 parent e77e7a2d

接口后台提交 防抖动 幂等处理

urbanops-module-workorder/pom.xml
@@ -143,6 +143,10 @@ @@ -143,6 +143,10 @@
143 <version>${revision}</version> 143 <version>${revision}</version>
144 <scope>compile</scope> 144 <scope>compile</scope>
145 </dependency> 145 </dependency>
  146 + <dependency>
  147 + <groupId>com.zteits.boot</groupId>
  148 + <artifactId>urbanops-spring-boot-starter-protection</artifactId>
  149 + </dependency>
146 </dependencies> 150 </dependencies>
147 151
148 </project> 152 </project>
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderAIController.java
@@ -2,6 +2,8 @@ package com.zteits.urbanops.module.workorder.controller.app.garden; @@ -2,6 +2,8 @@ package com.zteits.urbanops.module.workorder.controller.app.garden;
2 2
3 import com.zteits.urbanops.framework.common.pojo.CommonResult; 3 import com.zteits.urbanops.framework.common.pojo.CommonResult;
4 import com.zteits.urbanops.framework.common.util.object.ObjectUtils; 4 import com.zteits.urbanops.framework.common.util.object.ObjectUtils;
  5 +import com.zteits.urbanops.framework.idempotent.core.annotation.Idempotent;
  6 +import com.zteits.urbanops.framework.idempotent.core.keyresolver.impl.DefaultIdempotentKeyResolver;
5 import com.zteits.urbanops.module.garden.api.road.RoadApi; 7 import com.zteits.urbanops.module.garden.api.road.RoadApi;
6 import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderAIBuzStatus; 8 import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderAIBuzStatus;
7 import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderInspectorBuzStatus; 9 import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderInspectorBuzStatus;
@@ -77,6 +79,11 @@ public class AppGardenWorkOrderAIController { @@ -77,6 +79,11 @@ public class AppGardenWorkOrderAIController {
77 @PostMapping("/universalApproval") 79 @PostMapping("/universalApproval")
78 @AutoUpdateWorkerOrderAIBuzStatus 80 @AutoUpdateWorkerOrderAIBuzStatus
79 @Transactional(rollbackFor = Exception.class) 81 @Transactional(rollbackFor = Exception.class)
  82 + @Idempotent(
  83 + timeout = 5,
  84 + message = "请勿重复提交!",
  85 + keyResolver = DefaultIdempotentKeyResolver.class
  86 + )
80 //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") 87 //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')")
81 public CommonResult<Boolean> universalApproval(@Valid @RequestBody AppUniversalApprovalReqVO reqVO) { 88 public CommonResult<Boolean> universalApproval(@Valid @RequestBody AppUniversalApprovalReqVO reqVO) {
82 89
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderController.java
@@ -4,6 +4,8 @@ import com.zteits.urbanops.framework.common.pojo.CommonResult; @@ -4,6 +4,8 @@ import com.zteits.urbanops.framework.common.pojo.CommonResult;
4 import com.zteits.urbanops.framework.common.pojo.PageResult; 4 import com.zteits.urbanops.framework.common.pojo.PageResult;
5 import com.zteits.urbanops.framework.common.util.object.BeanUtils; 5 import com.zteits.urbanops.framework.common.util.object.BeanUtils;
6 import com.zteits.urbanops.framework.common.util.object.ObjectUtils; 6 import com.zteits.urbanops.framework.common.util.object.ObjectUtils;
  7 +import com.zteits.urbanops.framework.idempotent.core.annotation.Idempotent;
  8 +import com.zteits.urbanops.framework.idempotent.core.keyresolver.impl.DefaultIdempotentKeyResolver;
7 import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; 9 import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils;
8 import com.zteits.urbanops.module.garden.api.road.RoadApi; 10 import com.zteits.urbanops.module.garden.api.road.RoadApi;
9 import com.zteits.urbanops.module.garden.dto.road.RoadReqDTO; 11 import com.zteits.urbanops.module.garden.dto.road.RoadReqDTO;
@@ -35,6 +37,7 @@ import org.springframework.transaction.annotation.Transactional; @@ -35,6 +37,7 @@ import org.springframework.transaction.annotation.Transactional;
35 import org.springframework.web.bind.annotation.*; 37 import org.springframework.web.bind.annotation.*;
36 38
37 import java.util.List; 39 import java.util.List;
  40 +import java.util.concurrent.TimeUnit;
38 41
39 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; 42 import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
40 import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; 43 import static com.zteits.urbanops.framework.common.pojo.CommonResult.success;
@@ -252,6 +255,11 @@ public class AppGardenWorkOrderController { @@ -252,6 +255,11 @@ public class AppGardenWorkOrderController {
252 @PostMapping("/universalApproval") 255 @PostMapping("/universalApproval")
253 @AutoUpdateWorkerOrderBuzStatus 256 @AutoUpdateWorkerOrderBuzStatus
254 @Transactional(rollbackFor = Exception.class) 257 @Transactional(rollbackFor = Exception.class)
  258 + @Idempotent(
  259 + timeout = 5,
  260 + message = "请勿重复提交!",
  261 + keyResolver = DefaultIdempotentKeyResolver.class
  262 + )
255 //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") 263 //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')")
256 public CommonResult<Boolean> universalApproval(@Valid @RequestBody AppUniversalApprovalReqVO reqVO) { 264 public CommonResult<Boolean> universalApproval(@Valid @RequestBody AppUniversalApprovalReqVO reqVO) {
257 265
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderInspectorController.java
@@ -2,6 +2,8 @@ package com.zteits.urbanops.module.workorder.controller.app.garden; @@ -2,6 +2,8 @@ package com.zteits.urbanops.module.workorder.controller.app.garden;
2 2
3 import com.zteits.urbanops.framework.common.pojo.CommonResult; 3 import com.zteits.urbanops.framework.common.pojo.CommonResult;
4 import com.zteits.urbanops.framework.common.util.object.ObjectUtils; 4 import com.zteits.urbanops.framework.common.util.object.ObjectUtils;
  5 +import com.zteits.urbanops.framework.idempotent.core.annotation.Idempotent;
  6 +import com.zteits.urbanops.framework.idempotent.core.keyresolver.impl.DefaultIdempotentKeyResolver;
5 import com.zteits.urbanops.module.garden.api.road.RoadApi; 7 import com.zteits.urbanops.module.garden.api.road.RoadApi;
6 import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderInspectorBuzStatus; 8 import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderInspectorBuzStatus;
7 import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderUniversalBuzStatus; 9 import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderUniversalBuzStatus;
@@ -78,6 +80,11 @@ public class AppGardenWorkOrderInspectorController { @@ -78,6 +80,11 @@ public class AppGardenWorkOrderInspectorController {
78 @PostMapping("/universalApproval") 80 @PostMapping("/universalApproval")
79 @AutoUpdateWorkerOrderInspectorBuzStatus 81 @AutoUpdateWorkerOrderInspectorBuzStatus
80 @Transactional(rollbackFor = Exception.class) 82 @Transactional(rollbackFor = Exception.class)
  83 + @Idempotent(
  84 + timeout = 5,
  85 + message = "请勿重复提交!",
  86 + keyResolver = DefaultIdempotentKeyResolver.class
  87 + )
81 //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") 88 //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')")
82 public CommonResult<Boolean> universalApproval(@Valid @RequestBody AppUniversalApprovalReqVO reqVO) { 89 public CommonResult<Boolean> universalApproval(@Valid @RequestBody AppUniversalApprovalReqVO reqVO) {
83 90
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderRegionMgrController.java
@@ -2,6 +2,8 @@ package com.zteits.urbanops.module.workorder.controller.app.garden; @@ -2,6 +2,8 @@ package com.zteits.urbanops.module.workorder.controller.app.garden;
2 2
3 import com.zteits.urbanops.framework.common.pojo.CommonResult; 3 import com.zteits.urbanops.framework.common.pojo.CommonResult;
4 import com.zteits.urbanops.framework.common.util.object.ObjectUtils; 4 import com.zteits.urbanops.framework.common.util.object.ObjectUtils;
  5 +import com.zteits.urbanops.framework.idempotent.core.annotation.Idempotent;
  6 +import com.zteits.urbanops.framework.idempotent.core.keyresolver.impl.DefaultIdempotentKeyResolver;
5 import com.zteits.urbanops.module.garden.api.road.RoadApi; 7 import com.zteits.urbanops.module.garden.api.road.RoadApi;
6 import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderBuzStatus; 8 import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderBuzStatus;
7 import com.zteits.urbanops.module.workorder.controller.app.garden.vo.common.AppUniversalApprovalReqVO; 9 import com.zteits.urbanops.module.workorder.controller.app.garden.vo.common.AppUniversalApprovalReqVO;
@@ -73,6 +75,11 @@ public class AppGardenWorkOrderRegionMgrController { @@ -73,6 +75,11 @@ public class AppGardenWorkOrderRegionMgrController {
73 @PostMapping("/universalApproval") 75 @PostMapping("/universalApproval")
74 @AutoUpdateWorkerOrderBuzStatus 76 @AutoUpdateWorkerOrderBuzStatus
75 @Transactional(rollbackFor = Exception.class) 77 @Transactional(rollbackFor = Exception.class)
  78 + @Idempotent(
  79 + timeout = 5,
  80 + message = "请勿重复提交!",
  81 + keyResolver = DefaultIdempotentKeyResolver.class
  82 + )
76 //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") 83 //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')")
77 public CommonResult<Boolean> universalApproval(@Valid @RequestBody AppUniversalApprovalReqVO reqVO) { 84 public CommonResult<Boolean> universalApproval(@Valid @RequestBody AppUniversalApprovalReqVO reqVO) {
78 85
urbanops-module-workorder/src/main/java/com/zteits/urbanops/module/workorder/controller/app/garden/AppGardenWorkOrderUniversalController.java
@@ -2,6 +2,8 @@ package com.zteits.urbanops.module.workorder.controller.app.garden; @@ -2,6 +2,8 @@ package com.zteits.urbanops.module.workorder.controller.app.garden;
2 2
3 import com.zteits.urbanops.framework.common.pojo.CommonResult; 3 import com.zteits.urbanops.framework.common.pojo.CommonResult;
4 import com.zteits.urbanops.framework.common.util.object.ObjectUtils; 4 import com.zteits.urbanops.framework.common.util.object.ObjectUtils;
  5 +import com.zteits.urbanops.framework.idempotent.core.annotation.Idempotent;
  6 +import com.zteits.urbanops.framework.idempotent.core.keyresolver.impl.DefaultIdempotentKeyResolver;
5 import com.zteits.urbanops.module.garden.api.road.RoadApi; 7 import com.zteits.urbanops.module.garden.api.road.RoadApi;
6 import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderBuzStatus; 8 import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderBuzStatus;
7 import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderUniversalBuzStatus; 9 import com.zteits.urbanops.module.workorder.annotation.AutoUpdateWorkerOrderUniversalBuzStatus;
@@ -74,6 +76,11 @@ public class AppGardenWorkOrderUniversalController { @@ -74,6 +76,11 @@ public class AppGardenWorkOrderUniversalController {
74 @PostMapping("/universalApproval") 76 @PostMapping("/universalApproval")
75 @AutoUpdateWorkerOrderUniversalBuzStatus 77 @AutoUpdateWorkerOrderUniversalBuzStatus
76 @Transactional(rollbackFor = Exception.class) 78 @Transactional(rollbackFor = Exception.class)
  79 + @Idempotent(
  80 + timeout = 5,
  81 + message = "请勿重复提交!",
  82 + keyResolver = DefaultIdempotentKeyResolver.class
  83 + )
77 //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')") 84 //@PreAuthorize("@ss.hasPermission('bpm:garden-workorder:update')")
78 public CommonResult<Boolean> universalApproval(@Valid @RequestBody AppUniversalApprovalReqVO reqVO) { 85 public CommonResult<Boolean> universalApproval(@Valid @RequestBody AppUniversalApprovalReqVO reqVO) {
79 86