diff --git a/common/src/main/java/com/ccsens/common/bean/dto/CMemberDto.java b/common/src/main/java/com/ccsens/common/bean/dto/CMemberDto.java index 4845a238..0b248896 100644 --- a/common/src/main/java/com/ccsens/common/bean/dto/CMemberDto.java +++ b/common/src/main/java/com/ccsens/common/bean/dto/CMemberDto.java @@ -17,4 +17,13 @@ public class CMemberDto { private Long newUserId; } + + @Data + public static class SaveMember{ + private Long projectId; + private String roleName; + private String name; + private String phone; + private Long userId; + } } diff --git a/common/src/main/java/com/ccsens/common/service/IMemberService.java b/common/src/main/java/com/ccsens/common/service/IMemberService.java index 7ef13c1f..253f41cd 100644 --- a/common/src/main/java/com/ccsens/common/service/IMemberService.java +++ b/common/src/main/java/com/ccsens/common/service/IMemberService.java @@ -15,4 +15,10 @@ public interface IMemberService { * @param param 新userId和旧userId */ void mergeUser(CMemberDto.MergeUser param); + + /** + * 添加成员并绑定角色 + * @param param 项目id/角色名称 + */ + void addMemberForProject(CMemberDto.SaveMember param); } diff --git a/common/src/main/java/com/ccsens/common/service/MemberService.java b/common/src/main/java/com/ccsens/common/service/MemberService.java index 3991b2ee..d9b0639e 100644 --- a/common/src/main/java/com/ccsens/common/service/MemberService.java +++ b/common/src/main/java/com/ccsens/common/service/MemberService.java @@ -1,10 +1,19 @@ package com.ccsens.common.service; +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.ObjectUtil; import com.ccsens.cloudutil.bean.tall.dto.ProjectDto; import com.ccsens.cloudutil.feign.Tall3FeignClient; import com.ccsens.common.bean.dto.CMemberDto; +import com.ccsens.common.bean.po.ProMember; +import com.ccsens.common.bean.po.ProRole; +import com.ccsens.common.bean.po.ProRoleMember; import com.ccsens.common.persist.dao.ProMemberDao; +import com.ccsens.common.persist.dao.ProRoleDao; +import com.ccsens.common.persist.dao.ProRoleMemberDao; import com.ccsens.common.persist.dao.RelevanceDao; +import com.ccsens.common.util.CommonCodeError; +import com.ccsens.util.exception.BaseException; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -27,6 +36,12 @@ public class MemberService implements IMemberService{ private RelevanceDao relevanceDao; @Resource private Tall3FeignClient tall3FeignClient; + @Resource + private ProRoleDao roleDao; + @Resource + private Snowflake snowflake; + @Resource + private ProRoleMemberDao roleMemberDao; @Override public void relevancePhone(CMemberDto.PhoneAndUserId param) { @@ -64,4 +79,38 @@ public class MemberService implements IMemberService{ //任务状态记录表 relevanceDao.mergeStatusRecord(param.getOldUserId(),param.getNewUserId()); } + + @Override + public void addMemberForProject(CMemberDto.SaveMember param) { + ProRole role = roleDao.findByNameAndProjectId(param.getRoleName(), param.getProjectId()); + if (ObjectUtil.isNull(role)) { + throw new BaseException(CommonCodeError.ROLE_ERROR); + } + Long userOfMemberId = proMemberDao.findUserOfMemberId(param.getProjectId(), param.getUserId()); + if (ObjectUtil.isNull(userOfMemberId)) { + ProMember member = new ProMember(); + member.setId(snowflake.nextId()); + member.setUserId(param.getUserId()); + member.setProjectId(param.getProjectId()); + member.setPhone(param.getPhone()); + member.setName(param.getName()); + proMemberDao.insertSelective(member); + ProRoleMember roleMember = new ProRoleMember(); + roleMember.setId(snowflake.nextId()); + roleMember.setMemberId(member.getId()); + roleMember.setRoleId(role.getId()); + roleMemberDao.insertSelective(roleMember); + }else { + List memberOfRoleIds = roleMemberDao.findMemberOfRoleIds(userOfMemberId); + if (memberOfRoleIds.contains(role.getId())){ + return; + } + ProRoleMember roleMember = new ProRoleMember(); + roleMember.setId(snowflake.nextId()); + roleMember.setMemberId(userOfMemberId); + roleMember.setRoleId(role.getId()); + roleMemberDao.insertSelective(roleMember); + } + + } }