Commit 6c2e4f9c by zhiwj

修改导购同步店长并发问题

parent 93b00bfc
......@@ -83,9 +83,29 @@ public class ClerkApiServiceImpl implements ClerkApiService {
if (StringUtils.isBlank(clerkDTO.getClerkCode())) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "门店下导购代码不能为空");
}
if (clerkService.isRepeatByClerkCode(clerkDTO.getStoreInfoId(), clerkDTO.getClerkCode(), clerkDTO.getClerkId())) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "门店下导购代码重复");
try {
RedisUtil.lock("enterprise:clerk:position:" + clerkDTO.getStoreInfoId(), 1L);
if (clerkService.isRepeatByClerkCode(clerkDTO.getStoreInfoId(), clerkDTO.getClerkCode(), clerkDTO.getClerkId())) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "门店下导购代码重复");
}
// 店长逻辑
// 如果门店下已经存在有导购是店长, 并且当前导购是店长 则做替换
// 如果门店下没有导购是店长,将当前导购设置成店长
// 这里并发会出错 加个锁
TabClerk clerkLeader = clerkService.getClerkLeaderByStoreInfoId(clerkDTO.getEnterpriseId(), clerkDTO.getStoreInfoId());
if (clerkLeader != null && com.gic.store.constant.Constants.CLERK_LEADER_POSITION_ID.equals(clerkDTO.getPositionId())) {
clerkLeader.setPositionId(com.gic.store.constant.Constants.CLERK_POSITION_ID);
clerkLeader.setPositionName("导购");
clerkService.update(clerkLeader);
clerkDTO.setPositionId(com.gic.store.constant.Constants.CLERK_LEADER_POSITION_ID);
} else if (clerkLeader == null) {
clerkDTO.setPositionId(com.gic.store.constant.Constants.CLERK_LEADER_POSITION_ID);
}
}finally {
RedisUtil.unlock("enterprise:clerk:position:" + clerkDTO.getStoreInfoId());
}
if (StringUtils.isNotBlank(clerkDTO.getPhoneNumber())) {
String nationcode = clerkDTO.getNationcode();
if (StringUtils.isBlank(nationcode)) {
......@@ -110,24 +130,6 @@ public class ClerkApiServiceImpl implements ClerkApiService {
if (clerkDTO.getPositionId() == null) {
clerkDTO.setPositionId(com.gic.store.constant.Constants.CLERK_POSITION_ID);
}
// 店长逻辑
// 如果门店下已经存在有导购是店长, 并且当前导购是店长 则做替换
// 如果门店下没有导购是店长,将当前导购设置成店长
// 这里并发会出错 加个锁
try {
RedisUtil.lock("enterprise:clerk:position:" + clerkDTO.getStoreInfoId(), 1L);
TabClerk clerkLeader = clerkService.getClerkLeaderByStoreInfoId(clerkDTO.getEnterpriseId(), clerkDTO.getStoreInfoId());
if (clerkLeader != null && com.gic.store.constant.Constants.CLERK_LEADER_POSITION_ID.equals(clerkDTO.getPositionId())) {
clerkLeader.setPositionId(com.gic.store.constant.Constants.CLERK_POSITION_ID);
clerkLeader.setPositionName("导购");
clerkService.update(clerkLeader);
clerkDTO.setPositionId(com.gic.store.constant.Constants.CLERK_LEADER_POSITION_ID);
} else if (clerkLeader == null) {
clerkDTO.setPositionId(com.gic.store.constant.Constants.CLERK_LEADER_POSITION_ID);
}
}finally {
RedisUtil.unlock("enterprise:clerk:position:" + clerkDTO.getStoreInfoId());
}
String positionName = this.clerkPositionService.getByClerkPositionId(clerkDTO.getPositionId()).getPositionName();
clerkDTO.setPositionName(positionName);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment