Эх сурвалжийг харах

feat:任务重复提交 添加锁

shc 6 сар өмнө
parent
commit
e0e0b95a81

+ 13 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -13,6 +13,7 @@ import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.digest.DigestUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -1334,6 +1335,17 @@ public class ApiController {
 
         String paramStr = JSONUtil.toJsonStr(wmTaskContent1);
 
+        // 计算参数md5
+        String paramMd5 = DigestUtil.md5Hex(paramStr);
+
+        String username = SecurityUtils.getUser().getUsername();
+
+        String cacheKey1 = "save:task:content:ide:key:" + username + ":" + paramMd5;
+
+        if (Boolean.FALSE.equals(redisTemplate.opsForValue().setIfAbsent(cacheKey1, paramStr, 90, TimeUnit.DAYS))) {
+            throw new BizException("存在相似数据的提交记录,请重新填写");
+        }
+
 
         WmTaskContent wmTaskContent = JSONUtil.toBean(paramStr, WmTaskContent.class);
 
@@ -1401,7 +1413,7 @@ public class ApiController {
         } finally {
 
             // 清除签到信息
-            if (r != null && r.getCode() == CommonConstants.SUCCESS){
+            if (r != null && r.getCode() == CommonConstants.SUCCESS) {
                 // 保存打卡记录
                 if ("51".equals(wmTaskContent.getTemp30()) || "52".equals(wmTaskContent.getTemp30()) || "53".equals(wmTaskContent.getTemp30())) {