Browse Source

20211214成员角色相关接口

yanyuan
zy_Java 4 years ago
parent
commit
55d266b85f
  1. 69
      common/src/main/java/com/ccsens/common/bean/dto/CMemberDto.java
  2. 32
      common/src/main/java/com/ccsens/common/bean/dto/CRoleDto.java
  3. 14
      common/src/main/java/com/ccsens/common/bean/vo/CMemberVo.java
  4. 8
      common/src/main/java/com/ccsens/common/persist/dao/ProMemberDao.java
  5. 9
      common/src/main/java/com/ccsens/common/persist/dao/ProRoleMemberDao.java
  6. 47
      common/src/main/java/com/ccsens/common/service/IMemberService.java
  7. 29
      common/src/main/java/com/ccsens/common/service/IProRoleService.java
  8. 129
      common/src/main/java/com/ccsens/common/service/MemberService.java
  9. 97
      common/src/main/java/com/ccsens/common/service/ProRoleService.java
  10. 2
      common/src/main/java/com/ccsens/common/util/CommonCodeError.java
  11. 19
      common/src/main/resources/mapper_dao/ProMemberDao.xml
  12. 8
      common/src/main/resources/mapper_dao/ProRoleMemberDao.xml
  13. 1
      util/src/test/java/com/ccsens/util/OtherTest.java

69
common/src/main/java/com/ccsens/common/bean/dto/CMemberDto.java

@ -1,6 +1,16 @@
package com.ccsens.common.bean.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author
*/
@Data
public class CMemberDto {
@ -26,4 +36,63 @@ public class CMemberDto {
private String phone;
private Long userId;
}
@Data
@ApiModel("查询项目下的成员信息")
public static class QueryMemberByProject{
@NotNull(message = "项目id不能为空")
@ApiModelProperty("项目id")
private Long projectId;
@ApiModelProperty("成员名称")
private String memberName;
}
@Data
@ApiModel("成员id")
public static class GetMember{
@NotNull(message = "成员id不能为空")
@ApiModelProperty("成员id")
private Long memberId;
}
@Data
@ApiModel("添加成员信息")
public static class SaveMemberInfo{
@NotNull(message = "项目id不能为空")
@ApiModelProperty("项目id")
private Long projectId;
@NotBlank(message = "成员名不能为空")
@ApiModelProperty("成员名")
private String name;
@NotBlank(message = "手机号不能为空")
@ApiModelProperty("手机号")
private String phone;
@ApiModelProperty("头像")
private String avatarUrl;
}
@Data
@ApiModel("修改成员信息")
public static class UpdateMemberInfo{
@NotNull(message = "成员id不能为空")
@ApiModelProperty("成员id")
private Long memberId;
@ApiModelProperty("成员名")
private String name;
@ApiModelProperty("手机号")
private String phone;
@ApiModelProperty("头像")
private String avatarUrl;
}
@Data
@ApiModel("修改成员所属的角色信息")
public static class UpdateMemberRoles{
@NotNull(message = "成员id不能为空")
@ApiModelProperty("成员id")
private Long memberId;
@ApiModelProperty("角色id数组")
private List<Long> roleIdList;
}
}

32
common/src/main/java/com/ccsens/common/bean/dto/CRoleDto.java

@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
@ -36,4 +37,35 @@ public class CRoleDto {
@ApiModelProperty("角色id")
private Long roleId;
}
@Data
@ApiModel("添加角色")
public static class SaveRole {
@NotNull(message = "项目id不能为空")
@ApiModelProperty("项目id")
private Long projectId;
@NotBlank(message = "角色名不能为空")
@ApiModelProperty("角色名")
private String roleName;
}
@Data
@ApiModel("修改角色信息")
public static class UpdateRole {
@NotNull(message = "角色id不能为空")
@ApiModelProperty("角色id")
private Long roleId;
@ApiModelProperty("角色名")
private String roleName;
}
@Data
@ApiModel("修改角色下的成员")
public static class UpdateRoleMembers{
@NotNull(message = "角色id不能为空")
@ApiModelProperty("角色id")
private Long roleId;
@ApiModelProperty("成员id数组")
private List<Long> memberIdList;
}
}

14
common/src/main/java/com/ccsens/common/bean/vo/CMemberVo.java

@ -18,4 +18,18 @@ public class CMemberVo {
}
@Data
@ApiModel("成员信息列表")
public static class MemberInfo{
@ApiModelProperty("成员id")
private Long id;
@ApiModelProperty("成员名")
private String name;
@ApiModelProperty("手机号")
private String phone;
@ApiModelProperty("头像")
private String avatarUrl;
}
}

8
common/src/main/java/com/ccsens/common/persist/dao/ProMemberDao.java

@ -88,4 +88,12 @@ public interface ProMemberDao extends ProMemberMapper {
* @return 成员信息
*/
ProMember queryMemberOfRole(@Param("memberId") Long userOfMemberId,@Param("roleId") Long roleId);
/**
* 根据项目id和名字查找成员信息
* @param projectId 项目id
* @param memberName 成员名
* @return 返回成员列表
*/
List<CMemberVo.MemberInfo> queryByProject(@Param("projectId") Long projectId, @Param("memberName") String memberName);
}

9
common/src/main/java/com/ccsens/common/persist/dao/ProRoleMemberDao.java

@ -1,6 +1,7 @@
package com.ccsens.common.persist.dao;
import com.ccsens.common.bean.po.ProRoleMember;
import com.ccsens.common.bean.vo.CMemberVo;
import com.ccsens.common.persist.mapper.ProRoleMemberMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@ -27,4 +28,12 @@ public interface ProRoleMemberDao extends ProRoleMemberMapper {
* @return 角色成员信息
*/
ProRoleMember queryByRoleAndMember(@Param("memberId") Long userOfMemberId,@Param("roleId") Long roleId);
/**
* 删除该角色和成员的关联信息
* @param roleId 角色id
*/
void delByRoleId(@Param("roleId") Long roleId);
}

47
common/src/main/java/com/ccsens/common/service/IMemberService.java

@ -2,6 +2,9 @@ package com.ccsens.common.service;
import com.ccsens.common.bean.dto.CMemberDto;
import com.ccsens.common.bean.dto.CRoleDto;
import com.ccsens.common.bean.vo.CMemberVo;
import java.util.List;
public interface IMemberService {
/**
@ -21,4 +24,48 @@ public interface IMemberService {
* @param param 项目id/角色名称
*/
void addMemberForProject(CMemberDto.SaveMember param);
/**
* 根据手机号获取成员信息
* @param param 项目id和成员名
* @param userId userId
* @return 返回列表
*/
List<CMemberVo.MemberInfo> queryByProject(CMemberDto.QueryMemberByProject param, Long userId);
/**
* 根据id查找成员信息
* @param param 成员id
* @param userId userId
* @return 成员信息
*/
CMemberVo.MemberInfo getMemberById(CMemberDto.GetMember param, Long userId);
/**
* 添加成员
* @param param 项目id和成员信息
* @param userId userId
*/
void saveMember(CMemberDto.SaveMemberInfo param, Long userId);
/**
* 修改成员信息
* @param param 成员信息
* @param userId userId
*/
void updateMember(CMemberDto.UpdateMemberInfo param, Long userId);
/**
* 删除成员
* @param param 成员id
* @param userId userId
*/
void deleteMember(CMemberDto.GetMember param, Long userId);
/**
* 修改成员所属的角色
* @param param 成员id和角色信息
* @param userId userId
*/
void updateMemberRoles(CMemberDto.UpdateMemberRoles param,Long userId);
}

29
common/src/main/java/com/ccsens/common/service/IProRoleService.java

@ -32,4 +32,33 @@ public interface IProRoleService {
* @return 成员信息
*/
List<CRoleVo.MemberOfRoleInfo> queryMemberOfRole(CRoleDto.QueryMemberOfRole param, Long userId);
/**
* 添加角色
* @param param 角色信息
* @param userId userId
*/
void saveRole(CRoleDto.SaveRole param,Long userId);
/**
* 添加角色
* @param param 修改的角色信息
* @param userId userId
*/
void updateRole(CRoleDto.UpdateRole param,Long userId);
/**
* 删除角色
* @param param 角色id
* @param userId userId
*/
void delRole(CRoleDto.QueryMemberOfRole param,Long userId);
/**
* 修改角色下的成员(完全删除以前的成员角色关联信息)
* @param param 角色id和成员id
* @param userId userId
*/
void updateRoleMembers(CRoleDto.UpdateRoleMembers param,Long userId);
}

129
common/src/main/java/com/ccsens/common/service/MemberService.java

@ -1,18 +1,23 @@
package com.ccsens.common.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
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.ProMemberExample;
import com.ccsens.common.bean.po.ProRole;
import com.ccsens.common.bean.po.ProRoleMember;
import com.ccsens.common.bean.vo.CMemberVo;
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.JsonResponse;
import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -43,6 +48,7 @@ public class MemberService implements IMemberService{
@Resource
private ProRoleMemberDao roleMemberDao;
@Override
public void relevancePhone(CMemberDto.PhoneAndUserId param) {
//查找修改的成员所属的项目id
@ -113,4 +119,127 @@ public class MemberService implements IMemberService{
}
}
@Override
public List<CMemberVo.MemberInfo> queryByProject(CMemberDto.QueryMemberByProject param, Long userId) {
return proMemberDao.queryByProject(param.getProjectId(),param.getMemberName());
}
@Override
public CMemberVo.MemberInfo getMemberById(CMemberDto.GetMember param, Long userId) {
CMemberVo.MemberInfo memberInfo = new CMemberVo.MemberInfo();
ProMember member = proMemberDao.selectByPrimaryKey(param.getMemberId());
if(ObjectUtil.isNotNull(member)){
memberInfo.setId(member.getId());
memberInfo.setName(member.getName());
memberInfo.setAvatarUrl(member.getAvatarUrl());
memberInfo.setPhone(member.getPhone().substring(0, 3) + "****" + member.getPhone().substring(7));
}
return memberInfo;
}
@Override
public void saveMember(CMemberDto.SaveMemberInfo param, Long userId) {
//查找权限
Integer pm = roleDao.isPmByUserId(userId, param.getProjectId());
//只有负责人或者是项目经理才能操作
if (pm == null || pm < 1) {
throw new BaseException(CommonCodeError.NOT_PERMISSION);
}
//检查手机号是否存在
ProMemberExample memberExample = new ProMemberExample();
memberExample.createCriteria().andProjectIdEqualTo(param.getProjectId()).andPhoneEqualTo(param.getPhone());
List<ProMember> memberList = proMemberDao.selectByExample(memberExample);
if(CollectionUtil.isNotEmpty(memberList)){
throw new BaseException(CommonCodeError.PROJECT_MEMBER_PHONE);
}
//通过手机号获取userId
Long memberUserId = null;
JsonResponse<Long> userIdByPhone = tall3FeignClient.getUserIdByPhone(param.getPhone());
if(ObjectUtil.isNotNull(userIdByPhone) && userIdByPhone.getCode() == 200){
memberUserId = userIdByPhone.getData();
}
//添加成员信息
ProMember proMember = new ProMember();
proMember.setId(snowflake.nextId());
proMember.setName(param.getName());
proMember.setPhone(param.getPhone());
proMember.setProjectId(param.getProjectId());
proMember.setUserId(memberUserId);
proMemberDao.insertSelective(proMember);
}
@Override
public void updateMember(CMemberDto.UpdateMemberInfo param, Long userId) {
//查找成员信息
ProMember proMember = proMemberDao.selectByPrimaryKey(param.getMemberId());
if(ObjectUtil.isNull(proMember)){
throw new BaseException(CommonCodeError.MEMBER_ERROR);
}
//查找权限
Integer pm = roleDao.isPmByUserId(userId, proMember.getProjectId());
//只有负责人或者是项目经理才能操作
if (pm == null || pm < 1) {
throw new BaseException(CommonCodeError.NOT_PERMISSION);
}
//修改成员信息
if(StrUtil.isNotEmpty(param.getName())){
proMember.setName(param.getName());
}
if(StrUtil.isNotEmpty(param.getAvatarUrl())){
proMember.setAvatarUrl(param.getAvatarUrl());
}
if(StrUtil.isNotEmpty(param.getPhone())){
Long memberUserId = null;
JsonResponse<Long> userIdByPhone = tall3FeignClient.getUserIdByPhone(param.getPhone());
if(ObjectUtil.isNotNull(userIdByPhone) && userIdByPhone.getCode() == 200){
memberUserId = userIdByPhone.getData();
}
proMember.setUserId(memberUserId);
proMember.setPhone(param.getPhone());
}
proMemberDao.updateByPrimaryKeySelective(proMember);
}
@Override
public void deleteMember(CMemberDto.GetMember param, Long userId) {
//查找成员信息
ProMember proMember = proMemberDao.selectByPrimaryKey(param.getMemberId());
if(ObjectUtil.isNull(proMember)){
throw new BaseException(CommonCodeError.MEMBER_ERROR);
}
//查找权限
Integer pm = roleDao.isPmByUserId(userId, proMember.getProjectId());
//只有负责人或者是项目经理才能操作
if (pm == null || pm < 1) {
throw new BaseException(CommonCodeError.NOT_PERMISSION);
}
//删除成员信息
proMember.setRecStatus((byte) 2);
proMemberDao.updateByPrimaryKeySelective(proMember);
}
@Override
public void updateMemberRoles(CMemberDto.UpdateMemberRoles param, Long userId) {
ProMember proMember = proMemberDao.selectByPrimaryKey(param.getMemberId());
if(ObjectUtil.isNull(proMember)){
throw new BaseException(CommonCodeError.MEMBER_ERROR);
}
//查找权限
Integer pm = roleDao.isPmByUserId(userId, proMember.getProjectId());
//只有负责人或者是项目经理才能操作
if (pm == null || pm < 1) {
throw new BaseException(CommonCodeError.NOT_PERMISSION);
}
//分配角色
if(CollectionUtil.isNotEmpty(param.getRoleIdList())){
param.getRoleIdList().forEach(roleId -> {
ProRoleMember roleMember = new ProRoleMember();
roleMember.setId(snowflake.nextId());
roleMember.setRoleId(roleId);
roleMember.setMemberId(param.getMemberId());
roleMemberDao.insertSelective(roleMember);
});
}
}
}

97
common/src/main/java/com/ccsens/common/service/ProRoleService.java

@ -9,7 +9,9 @@ import com.ccsens.common.bean.po.*;
import com.ccsens.common.bean.vo.CRoleVo;
import com.ccsens.common.persist.dao.LabelDao;
import com.ccsens.common.persist.dao.ProRoleDao;
import com.ccsens.common.persist.dao.ProRoleMemberDao;
import com.ccsens.common.persist.mapper.*;
import com.ccsens.common.util.CommonCodeError;
import com.ccsens.common.util.Constant;
import com.ccsens.util.CodeEnum;
import com.ccsens.util.exception.BaseException;
@ -35,6 +37,8 @@ public class ProRoleService implements IProRoleService {
private ProRoleShowMapper proRoleShowMapper;
@Resource
private Snowflake snowflake;
@Resource
private ProRoleMemberDao proRoleMemberDao;
@Override
@ -53,15 +57,15 @@ public class ProRoleService implements IProRoleService {
proRoleShowMapper.updateByPrimaryKeySelective(proRoleShow);
}
}
List<Long> roleIds = param.getRoleIds(); //roleid
List<Long> roleIds = param.getRoleIds();
//去重重复的
List roleIdsList=(List) roleIds.stream().distinct().collect(Collectors.toList());
List<Long> roleIdsList = roleIds.stream().distinct().collect(Collectors.toList());
for (int i = 0; i < roleIdsList.size(); i++) {
ProRoleShow proRoleShow = new ProRoleShow();
proRoleShow.setId(snowflake.nextId());
proRoleShow.setUserId(userId);
proRoleShow.setProjectId(param.getProjectId());
proRoleShow.setRoleId((long)roleIdsList.get(i));
proRoleShow.setRoleId(roleIdsList.get(i));
proRoleShow.setOperator(userId);
proRoleShow.setSequence(i+1);
proRoleShowMapper.insertSelective(proRoleShow);
@ -160,8 +164,91 @@ public class ProRoleService implements IProRoleService {
@Override
public List<CRoleVo.MemberOfRoleInfo> queryMemberOfRole(CRoleDto.QueryMemberOfRole param, Long userId) {
List<CRoleVo.MemberOfRoleInfo> memberOfRoleInfos = proRoleDao.queryMemberOfRole(param);
return null;
return proRoleDao.queryMemberOfRole(param);
}
@Override
public void saveRole(CRoleDto.SaveRole param, Long userId) {
//查找权限
Integer pm = proRoleDao.isPmByUserId(userId, param.getProjectId());
//只有负责人或者是项目经理才能操作
if (pm == null || pm < 1) {
throw new BaseException(CommonCodeError.NOT_PERMISSION);
}
//添加角色
ProRole proRole = new ProRole();
proRole.setId(snowflake.nextId());
proRole.setName(param.getRoleName());
proRole.setProjectId(param.getProjectId());
proRole.setLabelId(32L);
proRoleDao.insertSelective(proRole);
}
@Override
public void updateRole(CRoleDto.UpdateRole param, Long userId) {
//查找角色
ProRole proRole = proRoleDao.selectByPrimaryKey(param.getRoleId());
if(ObjectUtil.isNull(proRole)){
throw new BaseException(CommonCodeError.ROLE_ERROR);
}
//查找权限
Integer pm = proRoleDao.isPmByUserId(userId, proRole.getProjectId());
//只有负责人或者是项目经理才能操作
if (pm == null || pm < 1) {
throw new BaseException(CommonCodeError.NOT_PERMISSION);
}
//修改角色信息
if(StrUtil.isNotBlank(param.getRoleName())){
proRole.setName(param.getRoleName());
proRoleDao.updateByPrimaryKeySelective(proRole);
}
}
@Override
public void delRole(CRoleDto.QueryMemberOfRole param, Long userId) {
//查找角色
ProRole proRole = proRoleDao.selectByPrimaryKey(param.getRoleId());
if(ObjectUtil.isNull(proRole)){
throw new BaseException(CommonCodeError.ROLE_ERROR);
}
//查找权限
Integer pm = proRoleDao.isPmByUserId(userId, proRole.getProjectId());
//只有负责人或者是项目经理才能操作
if (pm == null || pm < 1) {
throw new BaseException(CommonCodeError.NOT_PERMISSION);
}
//将角色状态改为删除
proRole.setRecStatus((byte) 2);
proRoleDao.updateByPrimaryKeySelective(proRole);
//删除角色成员关联信息
proRoleMemberDao.delByRoleId(param.getRoleId());
}
@Override
public void updateRoleMembers(CRoleDto.UpdateRoleMembers param, Long userId) {
//查找角色
ProRole proRole = proRoleDao.selectByPrimaryKey(param.getRoleId());
if(ObjectUtil.isNull(proRole)){
throw new BaseException(CommonCodeError.ROLE_ERROR);
}
//查找权限
Integer pm = proRoleDao.isPmByUserId(userId, proRole.getProjectId());
//只有负责人或者是项目经理才能操作
if (pm == null || pm < 1) {
throw new BaseException(CommonCodeError.NOT_PERMISSION);
}
//删除以前的成员角色关联信息
proRoleMemberDao.delByRoleId(param.getRoleId());
//添加新关联关系
if(CollectionUtil.isNotEmpty(param.getMemberIdList())){
param.getMemberIdList().forEach(memberId ->{
ProRoleMember roleMember = new ProRoleMember();
roleMember.setId(snowflake.nextId());
roleMember.setRoleId(param.getRoleId());
roleMember.setMemberId(memberId);
proRoleMemberDao.insertSelective(roleMember);
});
}
}
}

2
common/src/main/java/com/ccsens/common/util/CommonCodeError.java

@ -20,5 +20,7 @@ public class CommonCodeError extends CodeError {
public static final Code NO_POWER = new Code(10,"没有权限", true);
public static final Code MEMBER_NOT_MINE = new Code(11,"只能给自己打卡", true);
public static final Code DATE_ERROR = new Code(12,"请选择正确的打卡日期", true);
public static final Code PROJECT_MEMBER_PHONE = new Code(13,"该手机号对应的成员在项目中已存在", true);
public static final Code MEMBER_ERROR = new Code(14,"成员不存在", true);
}

19
common/src/main/resources/mapper_dao/ProMemberDao.xml

@ -124,4 +124,23 @@
AND m.id = #{memberId}
AND rm.role_id = #{roleId}
</select>
<select id="queryByProject" resultType="com.ccsens.common.bean.vo.CMemberVo$MemberInfo">
SELECT
id,
`name`,
phone,
CONCAT(LEFT(phone,3), '****',RIGHT(phone,4)),
avatar_url as avatarUrl
FROM
t_pro_member
WHERE
project_id = #{projectId}
and rec_status = 0
<if test="memberName != null and memberName != ''">
and `name` like
CONCAT('%',#{memberName},'%')
</if>
</select>
</mapper>

8
common/src/main/resources/mapper_dao/ProRoleMemberDao.xml

@ -1,6 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.common.persist.dao.ProRoleMemberDao">
<update id="delByRoleId">
update
t_pro_role_member
set
rec_status = 2
where
role_id = #{roleId}
</update>
<select id="findMemberOfRoleIds" resultType="java.lang.Long">
SELECT

1
util/src/test/java/com/ccsens/util/OtherTest.java

@ -30,6 +30,7 @@ public class OtherTest {
public static final String REGEX_PHONE = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,1-9]))\\d{8}$";
@Test
public void test17() {
List<String> stringList = new ArrayList<>();

Loading…
Cancel
Save