|
@@ -6,10 +6,7 @@ import cn.cslg.permission.common.model.dto.EncryptionLoginDTO;
|
|
|
import cn.cslg.permission.common.model.vo.*;
|
|
|
import cn.cslg.permission.common.utils.*;
|
|
|
import cn.cslg.permission.common.utils.message.MessageUtils;
|
|
|
-import cn.cslg.permission.domain.Function;
|
|
|
-import cn.cslg.permission.domain.Personnel;
|
|
|
-import cn.cslg.permission.domain.ReSetPasswordDTO;
|
|
|
-import cn.cslg.permission.domain.Tenant;
|
|
|
+import cn.cslg.permission.domain.*;
|
|
|
import cn.cslg.permission.domain.associate.AssoFunctionModule;
|
|
|
import cn.cslg.permission.domain.associate.AssoPersonnelMachine;
|
|
|
import cn.cslg.permission.mapper.FunctionMapper;
|
|
@@ -18,6 +15,7 @@ import cn.cslg.permission.mapper.associate.AssoFunctionModuleMapper;
|
|
|
import cn.cslg.permission.mapper.associate.AssoPersonnelMachineMapper;
|
|
|
import cn.cslg.permission.service.associate.PerDpService;
|
|
|
import cn.cslg.permission.service.associate.PersonRoleService;
|
|
|
+import cn.cslg.permission.service.associate.RoleFunctionDataService;
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.captcha.CaptchaUtil;
|
|
|
import cn.hutool.captcha.CircleCaptcha;
|
|
@@ -39,6 +37,9 @@ import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+
|
|
|
+import java.lang.System;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
@@ -61,6 +62,9 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
|
|
|
private final SystemService systemService;
|
|
|
private final LoginRecordService loginRecordService;
|
|
|
private final HttpServletRequest request;
|
|
|
+ private final RoleFunctionDataService roleFunctionDataService;
|
|
|
+ private final FunctionService functionService;
|
|
|
+ private final ApplicationService applicationService;
|
|
|
@Autowired
|
|
|
private PersonnelMapper personnelMapper;
|
|
|
@Autowired
|
|
@@ -466,7 +470,36 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
|
|
|
return Response.error(ResponseEnum.THE_TOKEN_IS_INVALID);
|
|
|
}
|
|
|
final String publicKey = personnel.getPublicKey();
|
|
|
- final List<String> permissions = vo.getPermissions();
|
|
|
+ List<EncryptionFunctionVO> functionVOS = new ArrayList<>();
|
|
|
+
|
|
|
+ List<String> permissions = new ArrayList<>();
|
|
|
+ //1.获取该人员角色下权限id
|
|
|
+ List<Integer> functionIds = roleFunctionDataService.getPermission(StpUtil.getLoginIdAsInt());
|
|
|
+ if (!CollectionUtils.isEmpty(functionIds)) {
|
|
|
+ //2.用IDList在功能表中查出对应功能信息
|
|
|
+ List<Function> functionList = functionService.listByIds(functionIds);
|
|
|
+ //3.获取该人员角色所有权限
|
|
|
+ functionList.forEach(i -> {
|
|
|
+ permissions.add(i.getFunctionPath());
|
|
|
+ });
|
|
|
+ }
|
|
|
+ List<EncryptionFunctionVO> list = this.loadFunctionVOS(permissions, 2, publicKey);
|
|
|
+ functionVOS.addAll(list);
|
|
|
+
|
|
|
+ List<String> permissions1 = new ArrayList<>();
|
|
|
+ //获取所有权限
|
|
|
+ List<Function> functionList1 = functionService.list();
|
|
|
+
|
|
|
+ functionList1.forEach(i -> {
|
|
|
+ permissions1.add(i.getFunctionPath());
|
|
|
+ });
|
|
|
+ permissions1.removeAll(permissions);
|
|
|
+ List<EncryptionFunctionVO> list1 = this.loadFunctionVOS(permissions1, 1, publicKey);
|
|
|
+ functionVOS.addAll(list1);
|
|
|
+ return Response.success(functionVOS);
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<EncryptionFunctionVO> loadFunctionVOS(List<String> permissions, Integer type, String publicKey) throws Exception {
|
|
|
List<EncryptionFunctionVO> functionVOS = new ArrayList<>();
|
|
|
List<Function> functions = functionMapper.selectList(new LambdaQueryWrapper<Function>()
|
|
|
.in(Function::getFunctionPath, permissions));
|
|
@@ -474,9 +507,10 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
|
|
|
final Integer functionId = function.getId();
|
|
|
final String functionPath = function.getFunctionPath();
|
|
|
final AssoFunctionModule functionModule = assoFunctionModuleMapper.selectOne(new LambdaQueryWrapper<AssoFunctionModule>()
|
|
|
- .eq(AssoFunctionModule::getFunctionId, functionId));
|
|
|
- final String moduleCode = functionModule.getCode();
|
|
|
- if (StringUtils.isNotEmpty(moduleCode)) {
|
|
|
+ .eq(AssoFunctionModule::getFunctionId, functionId)
|
|
|
+ .eq(AssoFunctionModule::getAuthType, type));
|
|
|
+ if (ObjectUtils.isNotEmpty(functionModule) && StringUtils.isNotEmpty(functionModule.getCode())) {
|
|
|
+ final String moduleCode = functionModule.getCode();
|
|
|
final String encryptInfo = RSAUtils.encryptByPublicKey(moduleCode, publicKey);
|
|
|
EncryptionFunctionVO functionVO = new EncryptionFunctionVO();
|
|
|
functionVO.setPermission(functionPath);
|
|
@@ -484,6 +518,6 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
|
|
|
functionVOS.add(functionVO);
|
|
|
}
|
|
|
}
|
|
|
- return Response.success(functionVOS);
|
|
|
+ return functionVOS;
|
|
|
}
|
|
|
}
|