|
@@ -1,21 +1,40 @@
|
|
|
package com.dragonsoft.dcuc.approve.business.api.impl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.dragoninfo.dcuc.common.Constants;
|
|
|
import com.dragoninfo.dcuc.common.utils.LangUtil;
|
|
|
+import com.dragoninfo.dcuc.common.utils.ResponseUtil;
|
|
|
import com.dragonsoft.dcuc.approve.business.api.IApiV3ApproveBusiness;
|
|
|
-import com.dragonsoft.dcuc.approve.enumresources.ReqBizDataEnum;
|
|
|
+import com.dragonsoft.dcuc.approve.business.external.IDcucBusiness;
|
|
|
+import com.dragonsoft.dcuc.approve.enumresources.*;
|
|
|
+import com.dragonsoft.dcuc.approve.model.req.ApprovalInfoReqVO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.req.ResourceInfoReqVO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.req.v3.ZeroTrustApproveAuthInfoVO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.req.v3.ZeroTrustApproveCreateReqV3VO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.resp.bim.ZeroTrustAppItemUserTokenInfoRespVO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.resp.bim.ZeroTrustAppTokenInfoRespVO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.vo.dcuc.OauthUserVO;
|
|
|
+import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
|
|
|
import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
|
|
|
+import com.dragonsoft.duceap.base.entity.security.SecurityUser;
|
|
|
+import com.dragonsoft.duceap.base.utils.UserContextUtils;
|
|
|
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.json.JsonUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.text.ParseException;
|
|
|
import java.util.Collections;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
@@ -30,6 +49,13 @@ import java.util.Map;
|
|
|
@Component
|
|
|
public class ApiV3ApproveBusinessImpl implements IApiV3ApproveBusiness {
|
|
|
|
|
|
+ private IDcucBusiness dcucBusiness;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setDcucBusiness(IDcucBusiness dcucBusiness) {
|
|
|
+ this.dcucBusiness = dcucBusiness;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public ResponseStatus checkBizData(Map<String, Object> bizDataMap) {
|
|
|
if (CollUtil.isEmpty(bizDataMap)) {
|
|
@@ -83,4 +109,117 @@ public class ApiV3ApproveBusinessImpl implements IApiV3ApproveBusiness {
|
|
|
return (T) object;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResponseDTO<ApprovalInfoReqVO> parseToReqVO(ZeroTrustApproveCreateReqV3VO zeroTrustApproveCreateReqV3VO,
|
|
|
+ ZeroTrustAppTokenInfoRespVO appTokenInfo, String processType) {
|
|
|
+ final Map<String, Object> bizData = zeroTrustApproveCreateReqV3VO.getBizData();
|
|
|
+ ResourceInfoReqVO resourceInfoReqVO = new ResourceInfoReqVO();
|
|
|
+ if (MapUtil.isNotEmpty(bizData)) {
|
|
|
+ BeanUtil.copyProperties(bizData, resourceInfoReqVO);
|
|
|
+ }
|
|
|
+ String otherApplyContext = "";
|
|
|
+ if (MapUtil.isNotEmpty(bizData)) {
|
|
|
+ otherApplyContext = JsonUtils.toJSONString(bizData);
|
|
|
+ }
|
|
|
+ String title = zeroTrustApproveCreateReqV3VO.getTitle();
|
|
|
+ String processDefId = zeroTrustApproveCreateReqV3VO.getProcessDefId();
|
|
|
+ String approveTaskId = zeroTrustApproveCreateReqV3VO.getTaskId();
|
|
|
+ String callbackUrl = zeroTrustApproveCreateReqV3VO.getCallbackUrl();
|
|
|
+ Map<String, List<Map<String, Object>>> bo = zeroTrustApproveCreateReqV3VO.getBo();
|
|
|
+ String approveTaskClassCode = zeroTrustApproveCreateReqV3VO.getTaskClass();
|
|
|
+ String appTokenId = zeroTrustApproveCreateReqV3VO.getAppTokenId();
|
|
|
+
|
|
|
+ ZeroTrustAppItemUserTokenInfoRespVO userToken = appTokenInfo.getUserToken();
|
|
|
+ String appCode = appTokenInfo.getAppId();
|
|
|
+ String applicantIdcard = userToken.getPid();
|
|
|
+ String applicantName = userToken.getName();
|
|
|
+ String applicantIp = userToken.getIp();
|
|
|
+ String orgCode = userToken.getOrgCode();
|
|
|
+ String content = "";
|
|
|
+ if (MapUtil.isNotEmpty(bo)) {
|
|
|
+ content = JsonUtils.toJSONString(bo);
|
|
|
+ }
|
|
|
+ final SecurityUser securityUser = UserContextUtils.getCurrentUser();
|
|
|
+ String applicantOrgName = securityUser.getSecurityOrgName();
|
|
|
+ String applicantPhoneNo = "";
|
|
|
+
|
|
|
+ ApprovalInfoReqVO approvalInfoReqVO = new ApprovalInfoReqVO();
|
|
|
+ approvalInfoReqVO.setProcessTitle(title);
|
|
|
+ approvalInfoReqVO.setProcessType(processType);
|
|
|
+ approvalInfoReqVO.setBusinessCode(processDefId);
|
|
|
+ approvalInfoReqVO.setAppCode(appCode);
|
|
|
+ approvalInfoReqVO.setApplyContent(content);
|
|
|
+ approvalInfoReqVO.setApplyReason(title + "申请");
|
|
|
+ approvalInfoReqVO.setApplicantIdcard(applicantIdcard);
|
|
|
+ approvalInfoReqVO.setApplicantName(applicantName);
|
|
|
+ approvalInfoReqVO.setApplicantOrgCode(orgCode);
|
|
|
+ approvalInfoReqVO.setApplicantOrgName(applicantOrgName);
|
|
|
+ approvalInfoReqVO.setApplicantPhoneNo(applicantPhoneNo);
|
|
|
+ approvalInfoReqVO.setPermissionValidType(PermissionValidTypeEnum.CUSTOM.getValue());
|
|
|
+ approvalInfoReqVO.setOperateType(CommitTypeEnum.APPLY_COMMIT.getValue());
|
|
|
+ approvalInfoReqVO.setResourceInfoDTO(resourceInfoReqVO);
|
|
|
+ approvalInfoReqVO.setCallbackUrl(callbackUrl);
|
|
|
+ approvalInfoReqVO.setApproveTaskClass(approveTaskClassCode);
|
|
|
+ approvalInfoReqVO.setApproveTaskId(approveTaskId);
|
|
|
+ approvalInfoReqVO.setFlowType(FlowTypeEnum.OTHER.getValue());
|
|
|
+ approvalInfoReqVO.setApplicantIp(applicantIp);
|
|
|
+ approvalInfoReqVO.setApplicantAppToken(appTokenId);
|
|
|
+
|
|
|
+ approvalInfoReqVO.setOtherApplyContext(otherApplyContext);
|
|
|
+ final ResponseDTO<ApprovalInfoReqVO> addBizDataStatus = addBizData(approvalInfoReqVO, bizData);
|
|
|
+ if (ResponseUtil.isFail(addBizDataStatus)) {
|
|
|
+ return ResponseUtil.dtoFail(addBizDataStatus.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ return ResponseUtil.newInstance(approvalInfoReqVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResponseDTO<ApprovalInfoReqVO> addBizData(ApprovalInfoReqVO approvalInfoReqVO, final Map<String, Object> bizData) {
|
|
|
+ Assert.notNull(approvalInfoReqVO);
|
|
|
+ Assert.notEmpty(bizData);
|
|
|
+ Date startTime = getBizData(bizData, ReqBizDataEnum.BIZ_TERM_START);
|
|
|
+ Date startEnd = getBizData(bizData, ReqBizDataEnum.BIZ_TERM_END);
|
|
|
+ approvalInfoReqVO.setStartTime(startTime);
|
|
|
+ approvalInfoReqVO.setEndTime(startEnd);
|
|
|
+
|
|
|
+ BizTypeEnum bizTypeEnum = null;
|
|
|
+ final Object bizTypeObject = getBizData(bizData, ReqBizDataEnum.BIZ_TYPE);
|
|
|
+ if (ObjectUtil.isNotNull(bizTypeObject)) {
|
|
|
+ bizTypeEnum = EnumUtils.enumOf(BizTypeEnum.class, bizTypeObject.toString());
|
|
|
+ }
|
|
|
+ if (bizTypeEnum == null) {
|
|
|
+ return ResponseUtil.dtoFail("请传入业务类型");
|
|
|
+ }
|
|
|
+ if (!bizTypeEnum.equals(BizTypeEnum.AUTH)) {
|
|
|
+ return ResponseUtil.dtoFail(String.format("暂不支持该业务类型:%s", bizTypeObject));
|
|
|
+ }
|
|
|
+
|
|
|
+ final Object content = bizData.get("content");
|
|
|
+ final ZeroTrustApproveAuthInfoVO zeroTrustApproveAuthInfoVO = new ZeroTrustApproveAuthInfoVO();
|
|
|
+ BeanUtil.copyProperties(content, zeroTrustApproveAuthInfoVO);
|
|
|
+ final String flowType = zeroTrustApproveAuthInfoVO.getFlowType();
|
|
|
+ approvalInfoReqVO.setFlowType(flowType);
|
|
|
+ final String currentApplicantIdcard = approvalInfoReqVO.getApplicantIdcard();
|
|
|
+ final String applicantIdcard = zeroTrustApproveAuthInfoVO.getApplicantIdcard();
|
|
|
+
|
|
|
+ if (!currentApplicantIdcard.equals(applicantIdcard)) {
|
|
|
+ approvalInfoReqVO.setApplicantIdcard(applicantIdcard);
|
|
|
+ // 获取用户信息
|
|
|
+ final OauthUserVO oauthUserVO = dcucBusiness.getOauthUserInfoByIdcard(applicantIdcard);
|
|
|
+ if (ObjectUtil.isNull(oauthUserVO)) {
|
|
|
+ return ResponseUtil.dtoFail(String.format("申请人:%s 信息不存在", applicantIdcard));
|
|
|
+ }
|
|
|
+ approvalInfoReqVO.setApplicantName(oauthUserVO.getName());
|
|
|
+ approvalInfoReqVO.setApplicantOrgCode(oauthUserVO.getOrgCode());
|
|
|
+ approvalInfoReqVO.setApplicantOrgName(oauthUserVO.getOrgName());
|
|
|
+ // todo 获取联系方式
|
|
|
+ approvalInfoReqVO.setApplicantPhoneNo("");
|
|
|
+ }
|
|
|
+ final ResourceInfoReqVO resourceInfo = zeroTrustApproveAuthInfoVO.getResourceInfo();
|
|
|
+ approvalInfoReqVO.setResourceInfoDTO(resourceInfo);
|
|
|
+ return ResponseUtil.newInstance(approvalInfoReqVO);
|
|
|
+ }
|
|
|
+
|
|
|
}
|