zoujiajian 3 年之前
父節點
當前提交
327fc352e7

+ 1 - 0
netflix-service/src/main/java/com/cyksj/redis/RedisService.java

@@ -622,6 +622,7 @@ public class RedisService {
         //企业微信欢迎语 临时素材 mediaId
         CORP_WECLOME_MEDIA("corp:%s:weclome:media:","临时素材 mediaId",60*60*24*3 - 60*60*1L),
         CORP_UPLOAD_ATTACHMENTS("corp:%s:upload:attachments:","临时附件",60*60*24*3 - 60*60*1L),
+        CORP_DYNAMIC_RULE_TAG_KEY("corp_dynamic_rule_tag_key:", "企业微信动态标签key", 60 * 60L),
         ;
 
         private String name;

+ 7 - 0
netflix-service/src/main/java/com/cyksj/service/corp/impl/CorpMsgBulkTaskServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.Assert;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.common.util.StringUtil;
@@ -22,6 +23,7 @@ import com.cyksj.model.request.corp.Attachments;
 import com.cyksj.model.request.corp.CorpMsgTemplate;
 import com.cyksj.model.request.corp.Text;
 import com.cyksj.model.response.corp.CorpMsgTemplateAddResult;
+import com.cyksj.redis.RedisService;
 import com.cyksj.service.corp.CorpMsgBulkTaskService;
 import com.cyksj.service.corp.CorpService;
 import com.cyksj.service.corp.CorpUserSendRecordService;
@@ -72,6 +74,8 @@ public class CorpMsgBulkTaskServiceImpl extends ServiceImpl<CorpMsgBulkTaskMappe
 
 	private final CorpMsgBulkTaskTagRelationMapper corpMsgBulkTaskTagRelationMapper;
 
+	private final RedisService redisService;
+
 	private final int LIMIT = 10000;
 
 	private static final GlobalThreadPoolTaskExecutor TASK_EXECUTOR = GlobalThreadPoolTaskExecutor.getInstance();
@@ -136,6 +140,9 @@ public class CorpMsgBulkTaskServiceImpl extends ServiceImpl<CorpMsgBulkTaskMappe
 		}
 		//执行动态标签标记任务id
 		int taskId = 100;
+		if (!redisService.setNx(RedisService.key.CORP_DYNAMIC_RULE_TAG_KEY.getName() + tagId, tagId, RedisService.key.CORP_DYNAMIC_RULE_TAG_KEY.getTimeout())) {
+			throw BusinessRuntimeException.getInstance("该动态标签标记正在执行中..");
+		}
 		XxlJobResult xxlJobResult = XxlJobUtil.executeMarkDynamicRuleTagJob(XxlJobInfo.getExecuteTaskInstance(taskId, String.valueOf(tagId)).toString());
 	}