add(feature/REQ-3714) 增加删除工种redis锁

This commit is contained in:
zhangran 2025-03-21 10:30:23 +08:00
parent 818247a5cd
commit 00d124580f

View File

@ -3,6 +3,7 @@ package cn.axzo.orgmanax.server.workerprofession.foundation.impl;
import cn.axzo.orgmanax.infra.dao.workerprofession.entity.WorkerProfessionTag;
import cn.axzo.orgmanax.infra.dao.workerprofession.repository.WorkerProfessionTagRepository;
import cn.axzo.orgmanax.server.util.AssertUtil;
import cn.axzo.orgmanax.server.util.RedisLockUtil;
import cn.axzo.orgmanax.server.workerprofession.foundation.OrgProjectWorkerProfessionFoundationService;
import cn.axzo.orgmanax.server.workerprofession.foundation.OrgWorkerHistoryFoundationService;
import cn.axzo.orgmanax.server.workerprofession.foundation.OrgWorkerSkillTagFoundationService;
@ -29,15 +30,21 @@ public class OrgProjectWorkerProfessionFoundationServiceImpl implements OrgProje
private final OrgWorkerHistoryFoundationService historyFoundationService;
private final OrgWorkerSkillTagFoundationService skillTagFoundationService;
private static final String CONFIGURE_REDIS_LOCK_PRE = "WORKER_PROFESSION_CONFIGURE";
private static final long PROFESSION_CONFIGURE_RETRY_TIMEOUT = 1000L;
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(DeleteWorkerProfession req) {
AssertUtil.isFalse(req.isInvalid(), String.format("无效的参数%s", req));
// 记录工人当前的工种&技能标签历史
historyFoundationService.recordHistory(req);
// 删除本身工种和技能标签
doUpdateValid(req);
String redisKey = RedisLockUtil.formatKey(CONFIGURE_REDIS_LOCK_PRE, req.getOrgNodeId());
RedisLockUtil.tryLock(redisKey, PROFESSION_CONFIGURE_RETRY_TIMEOUT, () -> {
// 记录工人当前的工种&技能标签历史
historyFoundationService.recordHistory(req);
// 删除本身工种和技能标签
doUpdateValid(req);
});
}