소스 검색

加入mq账号登录

wangliang 2 년 전
부모
커밋
3148a0b57d

+ 15 - 10
cas/src/main/java/com/qmth/teachcloud/cas/api/OpenApiController.java

@@ -156,17 +156,22 @@ public class OpenApiController {
         }
     }
 
-    @ApiOperation(value = "测试")
-    @RequestMapping(value = "/{schoolCode}/test", method = RequestMethod.POST)
+    @ApiOperation(value = "cas_mq鉴权接口")
     @ApiResponses({@ApiResponse(code = 200, message = "返回消息", response = Result.class)})
+    @RequestMapping(value = "/{schoolCode}/mq/account", method = RequestMethod.GET)
     @Aac(auth = BOOL.FALSE)
-    public Result gdpuTest(@ApiParam(value = "学校编码") @PathVariable("schoolCode") String schoolCode,
-                           @ApiParam(value = "appid", required = true) @RequestHeader String appid,
-                           @ApiParam(value = "secret", required = true) @RequestHeader String secret,
-                           @ApiParam(value = "docunId", required = true) @RequestParam String docunId,
-                           @ApiParam(value = "sysAppId", required = true) @RequestParam String sysAppId) throws IOException {
-        log.info("gdpuTest is come in");
-        log.info("appid:{},secret:{},docunId:{},sysAppId:{}", appid, secret, docunId, sysAppId);
-        return ResultUtil.ok(true);
+    public void maAccount(@ApiParam(value = "学校编码") @PathVariable("schoolCode") String schoolCode,
+                          @ApiParam(value = "员工工号") @RequestParam(required = false) String employeeNo) throws IOException {
+        RedirectParams redirectParams = null;
+        switch (SchoolCodeEnum.valueOf(schoolCode.toUpperCase())) {
+            case GDPU:
+                redirectParams = gdpuCasUtil.mqAccount(schoolCode, employeeNo);
+                break;
+            default:
+                break;
+        }
+        if (Objects.nonNull(redirectParams)) {
+            commonService.redirectLogic(redirectParams.getEmployeeNo(), redirectParams.getSchoolCode(), redirectParams.getReturnUrl(), Objects.nonNull(redirectParams.getOpenParams()) ? JacksonUtil.parseJson(redirectParams.getOpenParams()) : null);
+        }
     }
 }

+ 16 - 12
cas/src/main/java/com/qmth/teachcloud/cas/mq/gdpu/api/GdpuMqController.java

@@ -15,6 +15,7 @@ import com.qmth.teachcloud.exchange.common.bean.dto.flow.StandardFlowWorkMsg;
 import com.qmth.teachcloud.exchange.common.bean.dto.flow.ToDoTaskDto;
 import com.qmth.teachcloud.exchange.common.bean.dto.syssetting.SimpleObject;
 import com.qmth.teachcloud.exchange.common.contant.SystemConstant;
+import com.qmth.teachcloud.exchange.common.entity.BasicSchool;
 import com.qmth.teachcloud.exchange.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.exchange.common.service.CommonCacheService;
 import com.qmth.teachcloud.exchange.common.util.ResultUtil;
@@ -65,6 +66,9 @@ public class GdpuMqController {
         Long schoolId = Long.parseLong((String) FlowMqCacheUtil.getSchoolId(flowId));
         Map<String, SimpleObject> mapSetting = commonCacheService.getSysSetting(schoolId);
 
+        BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
+        Objects.requireNonNull(basicSchool, "学校信息不存在");
+
         String appId = null, appSecret = null, sysAppId = null;
         if (!CollectionUtils.isEmpty(mapSetting)) {
             SimpleObject simpleObjectAppId = mapSetting.get(SystemConstant.GDPU_APP_ID_PARAM);
@@ -99,7 +103,7 @@ public class GdpuMqController {
             ProcessInfoDTO processInfoDTO = new ProcessInfoDTO();
             processInfoDTO.setSysAppId(sysAppId);
             processInfoDTO.setOrunId(sysAppId + flowId);
-            setProcessInfoDTO(processInfoDTO, toDoTaskDto);
+            setProcessInfoDTO(processInfoDTO, toDoTaskDto, basicSchool.getCode());
             processInfo.add(processInfoDTO);
         }
         data.put("processInfo", processInfo);
@@ -110,7 +114,7 @@ public class GdpuMqController {
             if (!CollectionUtils.isEmpty(todoTaskList)) {
                 for (StandardFlowWorkMsg s : todoTaskList) {
                     TodoInfoDTO todoInfoDTO = new TodoInfoDTO();
-                    setTodoInfoDTO(todoInfoDTO, s);
+                    setTodoInfoDTO(todoInfoDTO, s, basicSchool.getCode());
                     todoInfo.add(todoInfoDTO);
                 }
                 data.put("todoInfo", todoInfo);
@@ -127,7 +131,7 @@ public class GdpuMqController {
         if (Objects.nonNull(doneTaskDto)) {
             JSONArray remarkInfo = new JSONArray(); //已办信息
             RemarkInfoDTO remarkInfoDTO = new RemarkInfoDTO();
-            setRemarkInfoDTO(remarkInfoDTO, doneTaskDto);
+            setRemarkInfoDTO(remarkInfoDTO, doneTaskDto, basicSchool.getCode());
             remarkInfo.add(remarkInfoDTO);
             data.put("remarkInfo", remarkInfo);
         }
@@ -152,7 +156,7 @@ public class GdpuMqController {
         return result;
     }
 
-    private void setProcessInfoDTO(ProcessInfoDTO processInfoDTO, ToDoTaskDto toDoTaskDto) {
+    private void setProcessInfoDTO(ProcessInfoDTO processInfoDTO, ToDoTaskDto toDoTaskDto, String schoolCode) {
 //        processInfoDTO.setSysAppId("LYOA");
 //        processInfoDTO.setOrunId("LYOA79ec0af89702d641d839d5bbb5e9073b0e4b");
         if (Objects.nonNull(toDoTaskDto)) {
@@ -179,27 +183,27 @@ public class GdpuMqController {
             processInfoDTO.setUserName(toDoTaskDto.getFlowData().getUpdateName()); //申请人名称
             processInfoDTO.setAuthor(StringUtils.join(userIdList, ",")); //当前审批人的账户ID(多个使用逗号分隔(示例:2007112, admin))
             processInfoDTO.setAuthorCn(StringUtils.join(userNameList, ",")); //当前审批人的账户名称(多个使用逗号分隔(示例:2007112, admin))
-            processInfoDTO.setUrl(SystemConstant.GDPU_CAS_URL);
-            processInfoDTO.setMobileUrl(SystemConstant.GDPU_CAS_URL);
+            processInfoDTO.setUrl(SystemConstant.GDPU_CAS_MQ_URL + "?schoolCode=" + schoolCode + "&employeeNo=" + StringUtils.join(userIdList, ","));
+            processInfoDTO.setMobileUrl(SystemConstant.GDPU_CAS_MQ_URL + "?schoolCode=" + schoolCode + "&employeeNo=" + StringUtils.join(userIdList, ","));
             processInfoDTO.setDocAddTime(new Date());// "2022-07-25 02:36:00"
             processInfoDTO.setDesc(toDoTaskDto.getFlowData().getName());
         }
     }
 
-    private void setTodoInfoDTO(TodoInfoDTO todoInfoDTO, StandardFlowWorkMsg standardFlowWorkMsg) {
+    private void setTodoInfoDTO(TodoInfoDTO todoInfoDTO, StandardFlowWorkMsg standardFlowWorkMsg, String schoolCode) {
         todoInfoDTO.setUserId(standardFlowWorkMsg.getLoginName());
         todoInfoDTO.setUserName(standardFlowWorkMsg.getUserName());
         todoInfoDTO.setStartTime(DateUtil.format(new Date(standardFlowWorkMsg.getCreateTime()), SystemConstant.DEFAULT_DATE_PATTERN));
         todoInfoDTO.setOrunId(String.valueOf(standardFlowWorkMsg.getExecutionId()));
         todoInfoDTO.setNodeId(String.valueOf(standardFlowWorkMsg.getTaskId()));
         todoInfoDTO.setNodeName(standardFlowWorkMsg.getTaskName());
-        todoInfoDTO.setUrl(SystemConstant.GDPU_CAS_URL);
-        todoInfoDTO.setMobileUrl(SystemConstant.GDPU_CAS_URL);
+        todoInfoDTO.setUrl(SystemConstant.GDPU_CAS_MQ_URL + "?schoolCode=" + schoolCode + "&employeeNo=" + standardFlowWorkMsg.getLoginName());
+        todoInfoDTO.setMobileUrl(SystemConstant.GDPU_CAS_MQ_URL + "?schoolCode=" + schoolCode + "&employeeNo=" + standardFlowWorkMsg.getLoginName());
         todoInfoDTO.setStatus("Current"); //当出现或签、抢占流程时,需要将其他未办理用户设置为Pause状态。
     }
 
     //以审批通过为例,给出办理记录DTO的数据填充demo
-    private void setRemarkInfoDTO(RemarkInfoDTO remarkInfoDTO, DoneTaskDto doneTaskDto) {
+    private void setRemarkInfoDTO(RemarkInfoDTO remarkInfoDTO, DoneTaskDto doneTaskDto, String schoolCode) {
         remarkInfoDTO.setNodeId(String.valueOf(doneTaskDto.getTaskId()));
         remarkInfoDTO.setNodeName(doneTaskDto.getHistoricName());
         remarkInfoDTO.setStartTime(DateUtil.format(new Date(doneTaskDto.getCreateTime()), SystemConstant.DEFAULT_DATE_PATTERN));
@@ -209,8 +213,8 @@ public class GdpuMqController {
         remarkInfoDTO.setUserName(doneTaskDto.getRealName());
         remarkInfoDTO.setOrunId(String.valueOf(doneTaskDto.getId()));
         remarkInfoDTO.setRemark(doneTaskDto.getApproveRemark());
-        remarkInfoDTO.setUrl(SystemConstant.GDPU_CAS_URL);
-        remarkInfoDTO.setMobileUrl(SystemConstant.GDPU_CAS_URL);
+        remarkInfoDTO.setUrl(SystemConstant.GDPU_CAS_MQ_URL + "?schoolCode=" + schoolCode + "&employeeNo=" + doneTaskDto.getApproveUserName());
+        remarkInfoDTO.setMobileUrl(SystemConstant.GDPU_CAS_MQ_URL + "?schoolCode=" + schoolCode + "&employeeNo=" + doneTaskDto.getApproveUserName());
     }
 
 //    private void setToReadInfoDTO(ToReadInfoDTO toReadInfoDTO) {

+ 25 - 8
cas/src/main/java/com/qmth/teachcloud/cas/util/GdpuCasUtil.java

@@ -43,14 +43,31 @@ public class GdpuCasUtil {
     @Resource
     CommonCacheService commonCacheService;
 
-    //    @Value("${cas.config.logoutUrl}")
-//    String logoutUrl;
-//
-//    @Value("${cas.config.returnUrl}")
-//    String returnUrl;
-//
-//    @Value("${cas.config.teachcloudPrintLoginUrl}")
-//    String teachcloudLoginUrl;
+    /**
+     * 广东药科大学mq登录逻辑
+     *
+     * @param schoolCode
+     * @param employeeNo
+     * @return
+     * @throws IOException
+     */
+    public RedirectParams mqAccount(String schoolCode, String employeeNo) {
+        log.info("mqAccount schoolCode:{},employeeNo:{}", schoolCode, employeeNo);
+        BasicSchool basicSchool = commonCacheService.schoolCache(schoolCode);
+        Objects.requireNonNull(basicSchool, "学校信息不存在");
+
+        String gdpuServiceAddress = null;
+        Map<String, SimpleObject> mapSetting = commonCacheService.getSysSetting(basicSchool.getId());
+        if (!CollectionUtils.isEmpty(mapSetting)) {
+            SimpleObject simpleObject = mapSetting.get(Constants.GDPU_SERVICE_ADDRESS);
+            Objects.requireNonNull(simpleObject, "未配置服务中台地址");
+            gdpuServiceAddress = simpleObject.getValue();
+            if (Objects.nonNull(gdpuServiceAddress) && !Objects.equals(gdpuServiceAddress.trim(), "")) {
+                gdpuServiceAddress = gdpuServiceAddress.substring(0, gdpuServiceAddress.indexOf("/mq"));
+            }
+        }
+        return new RedirectParams(employeeNo, schoolCode, gdpuServiceAddress, null);
+    }
 
     /**
      * 广东药科大学登录逻辑

+ 1 - 0
cas/src/main/java/com/qmth/teachcloud/cas/util/gdpu/Constants.java

@@ -28,4 +28,5 @@ public interface Constants {
 
     String SCHOOL_SERVICE_ADDRESS = "schoolServiceAddress";
 
+    String GDPU_SERVICE_ADDRESS = "gdpuServiceAddress";
 }

+ 1 - 1
teachcloud-exchange-common/src/main/java/com/qmth/teachcloud/exchange/common/contant/SystemConstant.java

@@ -36,7 +36,7 @@ public class SystemConstant {
     public static final String GDPU_DOCUN_ID = "docunId";
     public static final String GDPU_HEADER_APP_ID = "appid";
     public static final String GDPU_HEADER_APP_SECRET = "secret";
-    public static final String GDPU_CAS_URL = "http://examsso.gdpu.edu.cn/api/open/gdpu/authentication";
+    public static final String GDPU_CAS_MQ_URL = "http://examsso.gdpu.edu.cn/api/open/gdpu/mq/account";
 
     /**
      * api前缀