Browse Source

feat: bc总负责人查询权限/新增编辑用户

lixuesong 1 year ago
parent
commit
14b54a5bca

+ 11 - 0
db/v2.0/20240229.sql

@@ -0,0 +1,11 @@
+alter table sys_dept_csm
+    add user_id int null comment '用户id' after csm_name;
+
+
+create table sys_csm_user_relation
+(
+    user_id   int not null comment 'csm用户id',
+    parent_id int not null comment '父级用户id',
+    primary key (user_id, parent_id)
+)
+    comment 'csm用户关系表' charset = utf8mb4;

+ 5 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/UserDTO.java

@@ -53,4 +53,9 @@ public class UserDTO extends SysUser {
 	 */
 	private List<Integer> userIdList;
 
+	/**
+	 * 上级主管
+	 */
+	private List<Integer> parentIdList;
+
 }

+ 5 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SysDeptCsm.java

@@ -48,4 +48,9 @@ public class SysDeptCsm implements Serializable {
 	 * 客户成功姓名
 	 */
 	private String csmName;
+
+	/**
+	 * 用户id
+	 */
+	private Integer userId;
 }

+ 4 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysRoleController.java

@@ -174,6 +174,7 @@ public class SysRoleController {
 			List<Integer> CROAdmin = Stream.of(7,9,10).collect(Collectors.toList());
 			List<Integer> HCPAdmin = Stream.of(7,11,13).collect(Collectors.toList());
 			List<Integer> CFOAdmin = Stream.of(7).collect(Collectors.toList());
+			List<Integer> bcLeaderAdmin = Stream.of(3, 4, 5, 6, 7, 9, 10, 11, 13, 19, 31, 35).collect(Collectors.toList());
 
 			Set<Integer> queryRoleIdSet = new HashSet<>();
 
@@ -194,6 +195,9 @@ public class SysRoleController {
 					case 11:
 						queryRoleIdSet.addAll(HCPAdmin);
 						break;
+					case 35:
+						queryRoleIdSet.addAll(bcLeaderAdmin);
+						break;
 				}
 			});
 			if (CollUtil.isEmpty(queryRoleIdSet)) {

+ 3 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysUserController.java

@@ -96,7 +96,7 @@ public class SysUserController {
 		}
 
 		// 1-管理员,2-平台管理员,3-药企管理员,4-CSO管理员,7-财务管理员,9-CRO管理员,11-患教管理员,19-CMS,27-平台财务管理员,33-行政人员,
-		// 34-财务复核
+		// 34-财务复核, 35-BC总负责人
 		return Arrays.asList(roles).contains(1)
 				|| Arrays.asList(roles).contains(2)
 				|| Arrays.asList(roles).contains(3)
@@ -107,7 +107,8 @@ public class SysUserController {
 				|| Arrays.asList(roles).contains(19)
 				|| Arrays.asList(roles).contains(27)
 				|| Arrays.asList(roles).contains(33)
-				|| Arrays.asList(roles).contains(34);
+				|| Arrays.asList(roles).contains(34)
+				|| Arrays.asList(roles).contains(35);
 	}
 
 	/**

+ 27 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/SysCsmUserRelation.java

@@ -0,0 +1,27 @@
+package com.qunzhixinxi.hnqz.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+/**
+ * csm用户关系表
+ * @TableName sys_csm_user_relation
+ */
+@TableName(value ="sys_csm_user_relation")
+@Data
+public class SysCsmUserRelation extends Model<SysCsmUserRelation> {
+    /**
+     * csm用户id
+     */
+    @TableId(type = IdType.INPUT)
+    private Integer userId;
+
+    /**
+     * 父级用户id
+     */
+	@TableId(type = IdType.INPUT)
+    private Integer parentId;
+}

+ 20 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/SysCsmUserRelationMapper.java

@@ -0,0 +1,20 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.admin.entity.SysCsmUserRelation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author li312
+* @description 针对表【sys_csm_user_relation(csm用户关系表)】的数据库操作Mapper
+* @createDate 2024-03-04 10:08:51
+* @Entity com.qunzhixinxi.hnqz.admin.entity.SysCsmUserRelation
+*/
+@Mapper
+public interface SysCsmUserRelationMapper extends BaseMapper<SysCsmUserRelation> {
+
+}
+
+
+
+

+ 13 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SysCsmUserRelationService.java

@@ -0,0 +1,13 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.qunzhixinxi.hnqz.admin.entity.SysCsmUserRelation;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author li312
+* @description 针对表【sys_csm_user_relation(csm用户关系表)】的数据库操作Service
+* @createDate 2024-03-04 10:08:51
+*/
+public interface SysCsmUserRelationService extends IService<SysCsmUserRelation> {
+
+}

+ 22 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysCsmUserRelationServiceImpl.java

@@ -0,0 +1,22 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.entity.SysCsmUserRelation;
+import com.qunzhixinxi.hnqz.admin.mapper.SysCsmUserRelationMapper;
+import com.qunzhixinxi.hnqz.admin.service.SysCsmUserRelationService;
+import org.springframework.stereotype.Service;
+
+/**
+* @author li312
+* @description 针对表【sys_csm_user_relation(csm用户关系表)】的数据库操作Service实现
+* @createDate 2024-03-04 10:08:51
+*/
+@Service
+public class SysCsmUserRelationServiceImpl extends ServiceImpl<SysCsmUserRelationMapper, SysCsmUserRelation>
+    implements SysCsmUserRelationService {
+
+}
+
+
+
+

+ 43 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysUserServiceImpl.java

@@ -21,6 +21,7 @@ import com.qunzhixinxi.hnqz.admin.api.entity.*;
 import com.qunzhixinxi.hnqz.admin.api.vo.MenuVO;
 import com.qunzhixinxi.hnqz.admin.api.vo.UserVO;
 import com.qunzhixinxi.hnqz.admin.entity.SysCertResultRecord;
+import com.qunzhixinxi.hnqz.admin.entity.SysCsmUserRelation;
 import com.qunzhixinxi.hnqz.admin.entity.SysDeptSub;
 import com.qunzhixinxi.hnqz.admin.entity.SysUserSub;
 import com.qunzhixinxi.hnqz.admin.entity.dto.CommonUserDTO;
@@ -72,6 +73,7 @@ import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * @author hnqz
@@ -112,6 +114,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
 	private final SysUserSubMapper sysUserSubMapper;
 
+	private final SysCsmUserRelationMapper sysCsmUserRelationMapper;
+
 	/**
 	 * @Modify: start
 	 * @Version: v2021.4.16
@@ -1033,7 +1037,19 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 		}).collect(Collectors.toList());
 		System.out.println("-----" + userRoleList.size());
 		System.out.println("-------" + userRoleList.toString());
-		return sysUserRoleService.saveBatch(userRoleList);
+		sysUserRoleService.saveBatch(userRoleList);
+
+		// 关联上级主管
+		if (CollUtil.isNotEmpty(userDto.getParentIdList())) {
+			userDto.getParentIdList().forEach(pId -> {
+				SysCsmUserRelation csmUserRelation = new SysCsmUserRelation();
+				csmUserRelation.setUserId(sysUser.getUserId());
+				csmUserRelation.setParentId(pId);
+				sysCsmUserRelationMapper.insert(csmUserRelation);
+			});
+		}
+
+		return Boolean.TRUE;
 	}
 
 	/**
@@ -1114,6 +1130,19 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 			return baseMapper.getUserVosPage(page, userDTO, new DataScope());
 		} else if (SecurityUtils.getRoles().contains(19)) {
 			return baseMapper.getUserVosPage(page, userDTO, new DataScope());
+		} else if (SecurityUtils.getRoles().contains(35)) {
+			// BC总负责人数据权限
+			List<Integer> bcRoles = Stream.of(3, 4, 5, 6, 7, 9, 10, 11, 13, 19, 31, 35).collect(Collectors.toList());
+			if (CollUtil.isNotEmpty(userDTO.getRole())) {
+				Collection<Integer> intersection = CollUtil.intersectionDistinct(bcRoles, userDTO.getRole());
+				if (CollUtil.isEmpty(intersection)) {
+					return page;
+				}
+				userDTO.setRole(new ArrayList<>(intersection));
+			} else {
+				userDTO.setRole(bcRoles);
+			}
+			return baseMapper.getUserVosPage(page, userDTO, new DataScope());
 		}
 		Integer deptId = userDTO.getDeptId();
 //		if (null != userDTO.getDeptId()) {
@@ -1315,6 +1344,19 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 			userRole.setRoleId(roleId);
 			userRole.insert();
 		});
+
+		// 关联上级主管
+		if (CollUtil.isNotEmpty(userDto.getParentIdList())) {
+			sysCsmUserRelationMapper.delete(Wrappers.<SysCsmUserRelation>lambdaUpdate()
+					.eq(SysCsmUserRelation::getUserId, sysUser.getUserId()));
+			userDto.getParentIdList().forEach(pId -> {
+				SysCsmUserRelation csmUserRelation = new SysCsmUserRelation();
+				csmUserRelation.setUserId(sysUser.getUserId());
+				csmUserRelation.setParentId(pId);
+				sysCsmUserRelationMapper.insert(csmUserRelation);
+			});
+		}
+
 		return Boolean.TRUE;
 	}