Преглед изворни кода

fix: 创建执行包(大包)加redis锁防止并发写入

lixuesong пре 1 недеља
родитељ
комит
33db97fe71

+ 5 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/constant/CacheConstants.java

@@ -207,6 +207,11 @@ public interface CacheConstants {
      */
     String TERMINATE_PACKAGE_KEY = "TERMINATE:PACKAGE:KEY:";
 
+    /**
+     * 创建积分包key
+     */
+    String CREATE_PACKAGE_KEY = "CREATE:PACKAGE:KEY:";
+
     /**
      * 企业任务类型缓存key
      */

+ 5 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/pkg/WmScorePackageController.java

@@ -1589,6 +1589,11 @@ public class WmScorePackageController {
 
         log.info("新增积分包(大包)入参:{}", wmScorePackage);
 
+        String cacheKey = CacheConstants.CREATE_PACKAGE_KEY + wmScorePackage.getId() + "_" + SecurityUtils.getUser().getDeptId();
+        Boolean absent = redisTemplate.opsForValue().setIfAbsent(cacheKey, JSONUtil.toJsonStr(wmScorePackage), 3L, TimeUnit.SECONDS);
+        if (Boolean.FALSE.equals(absent)) {
+            return R.failed("正在处理");
+        }
 
         PackageContractEvent contractEvent = wmScorePackageService.saveEntPkg(wmScorePackage);
 

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackaeServiceImpl.java

@@ -4095,7 +4095,7 @@ public class WmScorePackaeServiceImpl extends ServiceImpl<WmScorePackageMapper,
             int existed = this.count(Wrappers.<WmScorePackage>lambdaQuery()
                     .eq(WmScorePackage::getDelFlag, "0")
                     .eq(WmScorePackage::getScorePackageName, wmScorePackage.getScorePackageName())
-                    .and(wrapper -> wrapper.eq(WmScorePackage::getDeptId, wmScorePackage.getAcceptSug())
+                    .and(wrapper -> wrapper.eq(WmScorePackage::getDeptId, wmScorePackage.getDeptId())
                             .or()
                             .eq(WmScorePackage::getAcceptSug, wmScorePackage.getAcceptSug()))
             );