lyhzzz 2 bulan lalu
induk
melakukan
fe3cc3cd34

+ 2 - 0
src/main/java/com/fdkankan/ucenter/common/RedisKeyUtil.java

@@ -18,4 +18,6 @@ public class RedisKeyUtil {
 
     public static final String laserCopyLock = "ucenter:laser:copy:lock:";
     public static String copySpaceLock =  "ucenter:scene:copy:lock:%s";
+
+    public static String downE57Key =  "ucenter:down:e57:lock:%s";
 }

+ 10 - 3
src/main/java/com/fdkankan/ucenter/service/impl/DownService.java

@@ -6,6 +6,7 @@ import com.fdkankan.common.constant.SceneConstant;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.redis.constant.RedisKey;
+import com.fdkankan.redis.util.RedisLockUtil;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.ucenter.common.DownloadStatusEnum;
 import com.fdkankan.ucenter.common.RedisKeyUtil;
@@ -44,6 +45,8 @@ public class DownService implements IDownService {
     @Autowired
     RedisUtil redisUtil;
     @Autowired
+    RedisLockUtil redisLockUtil;
+    @Autowired
     ISceneEditInfoService sceneEditInfoService;
     @Autowired
     IUserService userService;
@@ -407,15 +410,19 @@ public class DownService implements IDownService {
     }
 
     @Override
-    public DownVo downE57(String num,String userName) {
-        checkPerm(num,userName);
+    public synchronized DownVo downE57(String num,String userName) {
         DownVo downVo = new DownVo();
+        downVo.setDownloadStatus(1);
+        if(redisUtil.hasKey(String.format(RedisKeyUtil.downE57Key,num))){
+            return downVo;
+        }
+        checkPerm(num,userName);
         //status :0:正在生成 1,初次生成  2,已经生成直接下载 3,重新生成
         SSDownSceneVo vo = laserService.downE57(num);
         if(vo == null){
             throw new BusinessException(ResultCodeMsg.FAILURE_CODE_400003, ResultCodeMsg.FAILURE_MSG_400003);
         }
-        downVo.setDownloadStatus(1);
+        redisUtil.set(String.format(RedisKeyUtil.downE57Key,num),"1",60);
         return downVo;
     }