Browse Source

议题转项目加分布式锁

dev
sunyuchao 4 years ago
parent
commit
781c3d93be
  1. 3
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueManageController.java
  2. 3
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java
  3. 19
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java

3
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueManageController.java

@ -182,8 +182,7 @@ public class IssueManageController {
public Result shiftProjectV2(@LoginUser TokenDto tokenDTO, @RequestBody ShiftProjectFormDTO formDTO) {
formDTO.setStaffId(tokenDTO.getUserId());
ValidatorUtils.validateEntity(formDTO);
issueService.shiftProjectV2(formDTO);
return new Result();
return issueService.shiftProjectV2(formDTO);
}
/**

3
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java

@ -3,6 +3,7 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IssueDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
@ -219,7 +220,7 @@ public interface IssueService extends BaseService<IssueEntity> {
* @param formDTO
* @return void
*/
void shiftProjectV2(ShiftProjectFormDTO formDTO);
Result shiftProjectV2(ShiftProjectFormDTO formDTO);
/**
* @Description 已关闭列表 政府端

19
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java

@ -9,7 +9,9 @@ import com.epmet.commons.rocketmq.messages.GroupAchievementMQMsg;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.enums.AchievementTypeEnum;
import com.epmet.commons.tools.enums.EventEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
@ -41,7 +43,6 @@ import com.epmet.entity.IssueEntity;
import com.epmet.entity.IssueProcessEntity;
import com.epmet.entity.IssueProjectRelationEntity;
import com.epmet.feign.*;
import com.epmet.commons.tools.enums.AchievementTypeEnum;
import com.epmet.redis.GovIssueRedis;
import com.epmet.redis.IssueVoteDetailRedis;
import com.epmet.resi.group.dto.group.form.AllIssueFormDTO;
@ -62,6 +63,7 @@ import com.epmet.utils.ModuleConstants;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.collections4.CollectionUtils;
import org.redisson.api.RLock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -136,6 +138,8 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
private GovProjectOpenFeignClient govProjectOpenFeignClient;
@Autowired
private IssueVoteDetailService issueVoteDetailService;
@Autowired
private DistributedLock distributedLock;
@Value("${openapi.scan.server.url}")
@ -957,7 +961,11 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
* @date 2020/12/9 10:01
*/
@Override
public void shiftProjectV2(ShiftProjectFormDTO formDTO) {
public Result shiftProjectV2(ShiftProjectFormDTO formDTO) {
RLock lock = null;
try {
// 锁持有10分钟,等待10s
lock = distributedLock.tryLock(formDTO.getIssueId());
//1:查询议题数据
IssueEntity entity = baseDao.selectById(formDTO.getIssueId());
if (null == entity) {
@ -1078,6 +1086,13 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
//8.记录日志
//SendMqMsgUtil.build().openFeignClient(messageOpenFeignClient).sendProjectChangedMqMsg();
return new Result();
} catch (Exception e) {
return new Result().error("议题数据正在处理中,请勿重复提交!");
} finally {
distributedLock.unLock(lock);
}
}
/**

Loading…
Cancel
Save