feat:add user role
This commit is contained in:
parent
294d26637b
commit
635495c64c
@ -0,0 +1,48 @@
|
||||
package com.ensign.crm.module.crm.job;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.ensign.crm.framework.common.enums.CommonStatusEnum;
|
||||
import com.ensign.crm.framework.quartz.core.handler.JobHandler;
|
||||
import com.ensign.crm.module.system.api.permission.PermissionApi;
|
||||
import com.ensign.crm.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import com.ensign.crm.module.system.dal.mysql.user.AdminUserMapper;
|
||||
import com.ensign.crm.module.system.service.permission.PermissionService;
|
||||
import com.ensign.crm.module.system.service.permission.RoleService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: TODO
|
||||
* @Date: 2024/10/15 11:38
|
||||
* @Created: by ZZSLL
|
||||
*/
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class UserAllocationTask implements JobHandler {
|
||||
|
||||
@Autowired
|
||||
private AdminUserMapper userMapper;
|
||||
|
||||
@Autowired
|
||||
private PermissionService permissionService;
|
||||
|
||||
|
||||
@Override
|
||||
public String execute(String param) {
|
||||
|
||||
LambdaQueryWrapper<AdminUserDO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(AdminUserDO::getStatus, CommonStatusEnum.ENABLE.getStatus())
|
||||
.eq(AdminUserDO::getIsSyncKingdee, CommonStatusEnum.ENABLE.getStatus());
|
||||
List<AdminUserDO> users = userMapper.selectList(queryWrapper);
|
||||
|
||||
for (AdminUserDO user : users) {
|
||||
permissionService.assignPermissions(user);
|
||||
}
|
||||
|
||||
return "success";
|
||||
}
|
||||
}
|
@ -45,5 +45,4 @@ public interface PermissionApi {
|
||||
* @return 部门数据权限
|
||||
*/
|
||||
DeptDataPermissionRespDTO getDeptDataPermission(Long userId);
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,69 @@
|
||||
package com.ensign.crm.module.system.constant;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Classname UserFunctionRoleEnum
|
||||
* @Description
|
||||
*
|
||||
* 1:厂家后台,
|
||||
* 2:区域经理,
|
||||
* 3:业务经理,
|
||||
* 4:经销商后台,
|
||||
* 5:经销商销售员
|
||||
*
|
||||
* @Date 2024/10/15 11:41
|
||||
* @Created by violet
|
||||
*/
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum UserFunctionRoleEnum {
|
||||
|
||||
FACTORY_BACKEND(1, "CRM_role_1"),
|
||||
REGIONAL_MANAGER(2, "CRM_role_2"),
|
||||
BUSINESS_MANAGER(3, "CRM_role_3"),
|
||||
DEALER_BACKEND(4, "CRM_role_4"),
|
||||
DEALER_SALESMAN(5, "CRM_role_5");
|
||||
|
||||
private final Integer userFunc;
|
||||
|
||||
private final String roleName;
|
||||
|
||||
|
||||
private static final Map<Integer, String> MAP = new HashMap<>();
|
||||
|
||||
private static final List<String> LIST = new ArrayList<>();
|
||||
|
||||
static {
|
||||
for (UserFunctionRoleEnum role : UserFunctionRoleEnum.values()) {
|
||||
MAP.put(role.getUserFunc(), role.getRoleName());
|
||||
LIST.add(role.getRoleName());
|
||||
}
|
||||
}
|
||||
|
||||
public static String getRoleName(Integer userFunc) {
|
||||
return MAP.get(userFunc);
|
||||
}
|
||||
|
||||
public static List<String> getAllRoleName() {
|
||||
return LIST;
|
||||
}
|
||||
|
||||
public static List<String> get(Integer... func) {
|
||||
List<String> roleNames = new ArrayList<>();
|
||||
for (Integer f : func) {
|
||||
String roleName = UserFunctionRoleEnum.getRoleName(f);
|
||||
if (roleName != null) {
|
||||
roleNames.add(roleName);
|
||||
}
|
||||
}
|
||||
return roleNames;
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package com.ensign.crm.module.system.service.permission;
|
||||
|
||||
import com.ensign.crm.module.system.api.permission.dto.DeptDataPermissionRespDTO;
|
||||
import com.ensign.crm.module.system.dal.dataobject.user.AdminUserDO;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
@ -143,4 +144,5 @@ public interface PermissionService {
|
||||
*/
|
||||
DeptDataPermissionRespDTO getDeptDataPermission(Long userId);
|
||||
|
||||
void assignPermissions(AdminUserDO user);
|
||||
}
|
||||
|
@ -7,11 +7,14 @@ import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.ensign.crm.framework.common.enums.CommonStatusEnum;
|
||||
import com.ensign.crm.framework.common.util.collection.CollectionUtils;
|
||||
import com.ensign.crm.framework.datapermission.core.annotation.DataPermission;
|
||||
import com.ensign.crm.module.system.api.permission.PermissionApi;
|
||||
import com.ensign.crm.module.system.api.permission.dto.DeptDataPermissionRespDTO;
|
||||
import com.ensign.crm.module.system.constant.UserFunctionRoleEnum;
|
||||
import com.ensign.crm.module.system.dal.dataobject.permission.MenuDO;
|
||||
import com.ensign.crm.module.system.dal.dataobject.permission.RoleDO;
|
||||
import com.ensign.crm.module.system.dal.dataobject.permission.RoleMenuDO;
|
||||
import com.ensign.crm.module.system.dal.dataobject.permission.UserRoleDO;
|
||||
import com.ensign.crm.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import com.ensign.crm.module.system.dal.mysql.permission.RoleMenuMapper;
|
||||
import com.ensign.crm.module.system.dal.mysql.permission.UserRoleMapper;
|
||||
import com.ensign.crm.module.system.dal.redis.RedisKeyConstants;
|
||||
@ -59,6 +62,9 @@ public class PermissionServiceImpl implements PermissionService {
|
||||
@Resource
|
||||
private AdminUserService userService;
|
||||
|
||||
@Resource
|
||||
private PermissionApi permissionApi;
|
||||
|
||||
@Override
|
||||
public boolean hasAnyPermissions(Long userId, String... permissions) {
|
||||
// 如果为空,说明已经有权限
|
||||
@ -86,7 +92,7 @@ public class PermissionServiceImpl implements PermissionService {
|
||||
/**
|
||||
* 判断指定角色,是否拥有该 permission 权限
|
||||
*
|
||||
* @param roles 指定角色数组
|
||||
* @param roles 指定角色数组
|
||||
* @param permission 权限标识
|
||||
* @return 是否拥有
|
||||
*/
|
||||
@ -334,4 +340,56 @@ public class PermissionServiceImpl implements PermissionService {
|
||||
return SpringUtil.getBean(getClass());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void assignPermissions(AdminUserDO user) {
|
||||
Integer userFunction = user.getCrmUserFunction();
|
||||
if (userFunction == null) {
|
||||
return;
|
||||
}
|
||||
if (!"12345".contains(userFunction.toString())) {
|
||||
return;
|
||||
}
|
||||
Long userId = user.getId();
|
||||
List<String> rules = getRoleList(userFunction);
|
||||
Set<String> noRoles = new HashSet<>();
|
||||
for (String rule : rules) {
|
||||
boolean hassed = permissionApi.hasAnyRoles(userId, rule);
|
||||
if (!hassed) {
|
||||
noRoles.add(rule);
|
||||
}
|
||||
}
|
||||
|
||||
if (!noRoles.isEmpty()) {
|
||||
doAssignPermissions(user, noRoles);
|
||||
}
|
||||
}
|
||||
|
||||
private void doAssignPermissions(AdminUserDO user, Set<String> noRoles) {
|
||||
Set<Long> ids = roleService.getRoleIds(noRoles);
|
||||
assignUserRole(user.getId(), ids);
|
||||
}
|
||||
|
||||
private List<String> getRoleList(Integer userFunction) {
|
||||
List<String> roles = new ArrayList<>();
|
||||
roles.add("crmuser");
|
||||
switch (userFunction) {
|
||||
case 1:
|
||||
roles.addAll(UserFunctionRoleEnum.get(1, 2, 3, 4, 5));
|
||||
break;
|
||||
case 2:
|
||||
roles.addAll(UserFunctionRoleEnum.get(1, 2, 3, 4));
|
||||
break;
|
||||
case 3:
|
||||
roles.addAll(UserFunctionRoleEnum.get(1, 2, 3));
|
||||
break;
|
||||
case 4:
|
||||
roles.addAll(UserFunctionRoleEnum.get(1, 2));
|
||||
break;
|
||||
case 5:
|
||||
roles.addAll(UserFunctionRoleEnum.get(1));
|
||||
break;
|
||||
}
|
||||
return roles;
|
||||
}
|
||||
}
|
||||
|
@ -121,4 +121,5 @@ public interface RoleService {
|
||||
*/
|
||||
void validateRoleList(Collection<Long> ids);
|
||||
|
||||
Set<Long> getRoleIds(Set<String> noRoles);
|
||||
}
|
||||
|
@ -4,10 +4,12 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.ensign.crm.framework.common.enums.CommonStatusEnum;
|
||||
import com.ensign.crm.framework.common.pojo.PageResult;
|
||||
import com.ensign.crm.framework.common.util.collection.CollectionUtils;
|
||||
import com.ensign.crm.framework.common.util.object.BeanUtils;
|
||||
import com.ensign.crm.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.ensign.crm.module.system.controller.admin.permission.vo.role.RolePageReqVO;
|
||||
import com.ensign.crm.module.system.controller.admin.permission.vo.role.RoleSaveReqVO;
|
||||
import com.ensign.crm.module.system.dal.dataobject.permission.RoleDO;
|
||||
@ -258,4 +260,17 @@ public class RoleServiceImpl implements RoleService {
|
||||
return SpringUtil.getBean(getClass());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Set<Long> getRoleIds(Set<String> noRoles) {
|
||||
LambdaQueryWrapperX<RoleDO> queryWrapperX = new LambdaQueryWrapperX<>();
|
||||
queryWrapperX.eq(RoleDO::getStatus, CommonStatusEnum.ENABLE.getStatus())
|
||||
.in(RoleDO::getCode, noRoles);
|
||||
List<RoleDO> roleDOS = roleMapper.selectList(queryWrapperX);
|
||||
Set<Long> roleIds = new HashSet<>();
|
||||
roleDOS.forEach(roleDO -> {
|
||||
roleIds.add(roleDO.getId());
|
||||
});
|
||||
return roleIds;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user