|
@@ -11,11 +11,13 @@ import com.dragoninfo.dcuc.auth.auth.constance.zerotrust.approval.ApprovalConsta
|
|
|
import com.dragoninfo.dcuc.auth.auth.dto.zerotrust.approval.*;
|
|
|
import com.dragoninfo.dcuc.auth.auth.entity.RoleInfo;
|
|
|
import com.dragoninfo.dcuc.auth.auth.entity.zerotrust.ApprovalResult;
|
|
|
+import com.dragoninfo.dcuc.auth.auth.entity.zerotrust.RoleAuthApply;
|
|
|
import com.dragoninfo.dcuc.auth.auth.entity.zerotrust.RoleOperateContent;
|
|
|
import com.dragoninfo.dcuc.auth.auth.enumresources.YesNotEnum;
|
|
|
import com.dragoninfo.dcuc.auth.auth.enumresources.zerotrust.approval.*;
|
|
|
import com.dragoninfo.dcuc.auth.auth.service.IRoleInfoService;
|
|
|
import com.dragoninfo.dcuc.auth.auth.service.zerotrust.IApprovalResultService;
|
|
|
+import com.dragoninfo.dcuc.auth.auth.service.zerotrust.IRoleAuthApplyService;
|
|
|
import com.dragoninfo.dcuc.auth.auth.service.zerotrust.IRoleOperateApplyService;
|
|
|
import com.dragoninfo.dcuc.auth.auth.vo.zerotrust.approval.ApprovalCallBackReqVO;
|
|
|
import com.dragoninfo.dcuc.auth.business.zerotrust.IApprovalBusiness;
|
|
@@ -31,10 +33,12 @@ import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
|
|
|
import com.dragonsoft.duceap.base.enums.BooleanEnum;
|
|
|
import com.dragonsoft.duceap.base.utils.UserContextUtils;
|
|
|
import com.dragonsoft.duceap.commons.util.ObjectUtils;
|
|
|
+import com.dragonsoft.duceap.commons.util.collections.CollectionUtils;
|
|
|
import com.dragonsoft.duceap.commons.util.date.DateConst;
|
|
|
import com.dragonsoft.duceap.commons.util.date.DateUtils;
|
|
|
import com.dragonsoft.duceap.commons.util.enums.EnumUtils;
|
|
|
import com.dragonsoft.duceap.commons.util.string.StringUtils;
|
|
|
+import com.gentlyweb.utils.CollectionsUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
@@ -68,6 +72,12 @@ public class ApprovalBusinessImpl implements IApprovalBusiness {
|
|
|
|
|
|
private IApproveRemoteCallBusiness approveRemoteCallBusiness;
|
|
|
|
|
|
+ private IRoleAuthApplyService roleAuthApplyService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setRoleAuthApplyService(IRoleAuthApplyService roleAuthApplyService) {
|
|
|
+ this.roleAuthApplyService = roleAuthApplyService;
|
|
|
+ }
|
|
|
|
|
|
@Autowired
|
|
|
public void setApproveRemoteCallBusiness(IApproveRemoteCallBusiness approveRemoteCallBusiness) {
|
|
@@ -109,6 +119,8 @@ public class ApprovalBusinessImpl implements IApprovalBusiness {
|
|
|
String applyType = processDefId;
|
|
|
if (ApprovalApplyTypeEnum.ROLE_OPERATE.getValue().equals(processDefId)) {
|
|
|
processDefId = approvalProperties.getRoleOperateDefId();
|
|
|
+ } else if (ApprovalApplyTypeEnum.ROLE_AUTH_APPLY.getValue().equals(processDefId)) {
|
|
|
+ processDefId = approvalProperties.getRoleAuthApplyDefId();
|
|
|
} else {
|
|
|
return ResponseDTO.fail("未定义的流程类型", (Object) null);
|
|
|
}
|
|
@@ -285,6 +297,8 @@ public class ApprovalBusinessImpl implements IApprovalBusiness {
|
|
|
ApprovalBaseRespDto approvalBaseRespDto = new ApprovalBaseRespDto().success();
|
|
|
if (ApprovalApplyTypeEnum.ROLE_OPERATE.getValue().equals(applyType)) {
|
|
|
approvalBaseRespDto = roleOperateCallBackHandle(processInstId, type, endFlag);
|
|
|
+ } else if (ApprovalApplyTypeEnum.ROLE_AUTH_APPLY.getValue().equals(applyType)) {
|
|
|
+ approvalBaseRespDto = roleAuthCallBackHandle(processInstId, type, endFlag);
|
|
|
}
|
|
|
|
|
|
// 更新审批结果
|
|
@@ -299,6 +313,24 @@ public class ApprovalBusinessImpl implements IApprovalBusiness {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ private ApprovalBaseRespDto roleAuthCallBackHandle(String processInstId, String type, String endFlag) {
|
|
|
+ log.info("开始处理角色权限申请");
|
|
|
+ List<RoleAuthApply> authApplies = roleAuthApplyService.getByProcessInstId(processInstId);
|
|
|
+ if (CollectionUtils.isEmpty(authApplies)) {
|
|
|
+ log.info("查询不到权限申请内容");
|
|
|
+ return new ApprovalBaseRespDto().success();
|
|
|
+ }
|
|
|
+ // 回调修改流程状态
|
|
|
+ String approvalResult = getApplyStatus(type, endFlag);
|
|
|
+ roleAuthApplyService.updateApprovalResult(processInstId, approvalResult);
|
|
|
+
|
|
|
+ if (!AuthApplyStatusEnum.AGREE.getValue().equals(approvalResult)) {
|
|
|
+ return new ApprovalBaseRespDto().success();
|
|
|
+ }
|
|
|
+ // 角色授权暂时不做处理,只为演示审批风险。
|
|
|
+ return new ApprovalBaseRespDto().success();
|
|
|
+ }
|
|
|
+
|
|
|
private void updateApprovalResult(ApprovalResult approvalResult, ApprovalCallBackReqVO approvalCallBackReqVO) {
|
|
|
BeanUtil.copyProperties(approvalCallBackReqVO, approvalResult, "taskId", "businessKey");
|
|
|
approvalResult.setCallBack(BooleanEnum.TRUE.value);
|
|
@@ -308,6 +340,7 @@ public class ApprovalBusinessImpl implements IApprovalBusiness {
|
|
|
private ApprovalBaseRespDto roleOperateCallBackHandle(String processInstId, String type, String endFlag) {
|
|
|
RoleOperateContent roleOperateContent = roleOperateApplyService.getByProcessInstIdId(processInstId);
|
|
|
if (null == roleOperateContent) {
|
|
|
+ log.info("查询不到角色申请内容");
|
|
|
return new ApprovalBaseRespDto().success();
|
|
|
}
|
|
|
|
|
@@ -316,6 +349,7 @@ public class ApprovalBusinessImpl implements IApprovalBusiness {
|
|
|
}
|
|
|
|
|
|
private ApprovalBaseRespDto handleRoleOperateApproval(RoleOperateContent roleOperateContent, String type, String endFlag) {
|
|
|
+ log.info("开始处理角色申请");
|
|
|
String id = roleOperateContent.getId();
|
|
|
// 流程被删除对应删除本地申请
|
|
|
if (FlowCallBackTypeEnum.DELETE.getValue().equals(type)) {
|
|
@@ -334,13 +368,28 @@ public class ApprovalBusinessImpl implements IApprovalBusiness {
|
|
|
String operateType = roleOperateContent.getOperateType();
|
|
|
if (OperateTypeEnum.ADD.getValue().equals(operateType)) {
|
|
|
RoleInfo roleInfo = getNewRoleInfo(roleOperateContent);
|
|
|
- roleInfoService.save(roleInfo);
|
|
|
+ // 判断角色代码是否重复
|
|
|
+ RoleInfo roleInfoByCode = roleInfoService.getByAppIdAndCode(roleInfo.getAppId(), roleInfo.getCode());
|
|
|
+ if (null != roleInfoByCode) {
|
|
|
+ log.info("角色代码已存在:{}", roleInfo.getCode());
|
|
|
+ } else {
|
|
|
+ log.info("保存新增角色");
|
|
|
+ roleInfoService.save(roleInfo);
|
|
|
+ }
|
|
|
} else if (OperateTypeEnum.DELETE.getValue().equals(operateType)) {
|
|
|
+ log.info("删除角色:{}", roleOperateContent.getRoleId());
|
|
|
roleInfoService.deleteRole(roleOperateContent.getRoleId());
|
|
|
} else if (OperateTypeEnum.UPDATE.getValue().equals(operateType)) {
|
|
|
RoleInfo roleInfo = getNewRoleInfo(roleOperateContent);
|
|
|
roleInfo.setId(roleOperateContent.getRoleId());
|
|
|
- roleInfoService.update(roleInfo);
|
|
|
+ // 判断角色代码是否重复
|
|
|
+ RoleInfo roleInfoByCode = roleInfoService.getByAppIdAndCode(roleInfo.getAppId(), roleInfo.getCode());
|
|
|
+ if (null != roleInfoByCode && !roleInfoByCode.getId().equals(roleInfo.getId())) {
|
|
|
+ log.info("角色代码已存在");
|
|
|
+ } else {
|
|
|
+ log.info("更新角色:{}", roleInfo.getId());
|
|
|
+ roleInfoService.update(roleInfo);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return new ApprovalBaseRespDto().success();
|
|
@@ -356,11 +405,11 @@ public class ApprovalBusinessImpl implements IApprovalBusiness {
|
|
|
roleInfo.setRoleBusiness(roleOperateContent.getRoleBusiness());
|
|
|
roleInfo.setPoliceCategory(roleOperateContent.getPoliceCategory());
|
|
|
String limitCount = roleOperateContent.getLimitCount();
|
|
|
- if( StringUtils.isNotBlank(limitCount)){
|
|
|
+ if (StringUtils.isNotBlank(limitCount)) {
|
|
|
roleInfo.setIsNotLimitCount(
|
|
|
YesNotEnum.YES.getValue().equals(limitCount) ? "0" : "1");
|
|
|
}
|
|
|
- roleInfo.setIsActive("1");
|
|
|
+ roleInfo.setIsActive(BooleanEnum.TRUE.value);
|
|
|
return roleInfo;
|
|
|
}
|
|
|
|