فهرست منبع

慧监理,慧项管接口优化

huiqi 2 روز پیش
والد
کامیت
6fb31ffaeb

+ 42 - 4
takai-admin/src/main/java/com/takai/web/controller/system/SysLoginController.java

@@ -130,12 +130,14 @@ public class SysLoginController
                 || !org.springframework.util.StringUtils.hasText(workSpaceCode)
                 || !StringUtils.hasText(clientId)
                 || timestamp == null) {
+            log.info("无效的参数");
             return AjaxResult.error(HttpStatus.BAD_REQUEST.value(),"无效的参数");
         }
 
         //检查ClientId是否存在
         SysClient client = clientService.selectSysClientById(loginBody.getClientId());
         if(client == null) {
+            log.info("无效的client_id");
             return AjaxResult.error(HttpStatus.BAD_REQUEST.value(),"无效的client_id");
         }
 
@@ -144,15 +146,18 @@ public class SysLoginController
         // Step 3: Check if the difference is greater than 5 minutes
         boolean isMoreThanFiveMinutes = btwTime > 5 * 1000 * 60;
         if (isMoreThanFiveMinutes) {
+            log.info("请求已过期,请重新发起请求");
             return AjaxResult.error(HttpStatus.BAD_REQUEST.value(),"请求已过期,请重新发起请求");
         }
         if (sign != null) {
             String dataInput  = clientId+timestamp+username+workSpaceId+workSpaceName+workSpaceCode;
             String generatedHash = DigestUtil.sha256Hex(dataInput.toUpperCase()+client.getClientSecret());
             if(!StrUtil.equals(generatedHash, sign)) {
+                log.info("签名验证失败");
                 return AjaxResult.error(HttpStatus.UNAUTHORIZED.value(),"签名验证失败");
             }
         } else {
+            log.info("无效的签名");
             return AjaxResult.error(HttpStatus.UNAUTHORIZED.value(),"无效的签名");
         }
         Map<String, Object> map  = frameLoginService.login(loginBody);
@@ -161,11 +166,44 @@ public class SysLoginController
     }
 
     public static void main(String[] args) {
+//        FrameLoginBody(
+//                userName=zhangsurong,
+//                workspaceId=12f9e646-9f95-42f6-bb44-a5cdf2019a2c,
+//            workspaceCode=XM0272024000898,
+//            workspaceName=上海国际旅游度假区北片区01-06地块新建项目,
+//                clientId=a34851c530ee0d07d1154beb47bb93dd,
+//                timestamp=1770361996152,
+//                signature=683a7d8dc655612ef9dbd2729e0c081d1ef7226b176b5b43211301e1db8e6c40,
+//                userType=null)
         //String dataInput  = clientId+timestamp+username+workSpaceId+workSpaceName;
-        String timestamp = String.valueOf(System.currentTimeMillis());
-        System.out.println(timestamp);
-        String dataInput = "a34851c530ee0d07d1154beb47bb93dd" + timestamp + "admin" + "123456" + "测试项目";
-        String generatedHash = DigestUtil.sha256Hex(dataInput.toUpperCase()+"ac0cbba971ab11f089870250f2000002");
+        //String timestamp = String.valueOf(System.currentTimeMillis());
+        //System.out.println(timestamp);
+
+//        登录请求参数:FrameLoginBody(userName=zhangsurong,
+//                workspaceId=E227B32E1D8145F09EDE0FC9ECD4E554,
+//                workspaceCode=23206550,
+//                workspaceName=上海建科慧项管培训演示项目,
+//                clientId=f47ac10b58cc4372a5670e06f141669d,
+//                timestamp=1770622624358,
+//                signature=2df17a8d8f665f7f3fb6a85e10a138fbdfab639d492be05f180c1e4b13dca21a,
+//                userType=null)
+
+        //https://llm.jkec.info:11432?frame=Y&
+        // workspace_id=7C3C2B6B4E3A4CB8966285C167A386EB
+        // &workspace_name=建科咨询系统演示项目
+        // &username=zhangsurong
+        // &client_id=f47ac10b58cc4372a5670e06f141669d
+        // &timestamp=1770624770523
+        // &signature=5e16184cb489f33d25ebdb61681465b54cf77c1c39bc6af5af3ef8f8ef1635d9
+        // &workspace_code=28fe7c69
+        //clientId+timestamp+username+workSpaceId+workSpaceName+workSpaceCode;
+        String dataInput = "f47ac10b58cc4372a5670e06f141669d"
+                + "1770624770523"
+                + "zhangsurong"
+                + "7C3C2B6B4E3A4CB8966285C167A386EB"
+                + "建科咨询系统演示项目"
+                + "28fe7c69";
+        String generatedHash = DigestUtil.sha256Hex(dataInput.toUpperCase()+"8b26eaba75ea11f083b30250f2000001");
         System.out.println(generatedHash);
     }
 

+ 2 - 0
takai-framework/src/main/java/com/takai/framework/web/service/FrameLoginService.java

@@ -102,6 +102,7 @@ public class FrameLoginService
         //用户不存在或者非建科用户则添加用户
         SysUser sysUser = checkUserExist(loginBody);
         if (sysUser == null) {
+            log.info("用户不存在或者非建科用户则添加用户");
             sysUser = new SysUser();
             sysUser.setUserName(loginBody.getUserName());
             sysUser.setNickName(loginBody.getUserName());
@@ -149,6 +150,7 @@ public class FrameLoginService
         }
         catch (Exception e)
         {
+            log.error(e.getMessage(),e);
             if (e instanceof BadCredentialsException)
             {
                 AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));

+ 10 - 3
takai-quartz/src/main/java/com/takai/quartz/task/JkTask.java

@@ -50,12 +50,19 @@ public class JkTask
     public void rySynchronizationProject()
     {
         log.info("===================获取项目项目成员同步Job开始执行==============");
+        log.info("===================开始获取慧监理项目信息==============");
         try {
-            log.info("===================开始获取慧监理信息==============");
             jkApiService.getHjlProjectAndStaff();
-            log.info("===================开始获取慧项管信息==============");
+            log.info("===================获取慧监理项目信息结束==============");
+        } catch (Exception e) {
+            log.info("===================获取慧监理信息异常==============",e);
+            e.printStackTrace();
+        }
+        log.info("===================开始获取慧项管项目信息==============");
+        try {
             jkApiService.getHxgProjectAndStaff();
-        } catch (IOException e) {
+        } catch (Exception e) {
+            log.info("===================获取慧项管项目信息异常==============",e);
             e.printStackTrace();
         }
         log.info("===================获取项目项目成员同步Job执行结束==============");

+ 2 - 2
takai-system/src/main/java/com/takai/system/service/impl/JkApiServiceImpl.java

@@ -377,13 +377,13 @@ public class JkApiServiceImpl implements IJkApiService {
             OkHttpClient okHttpClient = buildOkHttpClient();
             Response response = okHttpClient.newCall(request).execute();
             String responseBody = response.body().string();
-            //logger.info("获取建科项目"+objectName+"返回:" + responseBody);
+            log.info("获取建科项目"+objectName+"返回:" + responseBody);
 
             if (!response.isSuccessful()) {
                 throw new IOException("获取建科项目"+objectName+"信息失败 " + responseBody);
             }
             JSONObject jsonObject =JSON.parseObject(responseBody);
-            //logger.info("获取建科项目"+objectName+"返回信息:" + jsonObject.toJSONString());
+            log.info("获取建科项目"+objectName+"返回信息:" + jsonObject.toJSONString());
             //“0”为成功其余均为失败
             String code = jsonObject.getString("code");
             if (code == null) {

+ 11 - 1
takai-system/src/main/java/com/takai/system/service/impl/SysProjectStaffServiceImpl.java

@@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 【请填写功能名称】Service业务层处理
@@ -46,7 +47,16 @@ public class SysProjectStaffServiceImpl implements ISysProjectStaffService
     @Override
     public List<SysProjectStaff> selectSysProjectStaffList(SysProjectStaff sysProjectStaff)
     {
-        List<SysProjectStaff> projectStaffs = sysProjectStaffMapper.selectSysProjectStaffList(sysProjectStaff);
+        List<SysProjectStaff> projectStaffsList = sysProjectStaffMapper.selectSysProjectStaffList(sysProjectStaff);
+        // 2. 使用 Stream 流按 projectPid + userName 去重
+        List<SysProjectStaff> projectStaffs = projectStaffsList.stream()
+                // 按唯一标识分组,key为 projectPid_userName,value为分组后的列表
+                .collect(Collectors.groupingBy(staff -> staff.getProjectPid() + "_" + staff.getUserName()))
+                // 遍历分组结果,取每个分组的第一个元素(即去重后的元素)
+                .values().stream()
+                .map(group -> group.get(0))
+                // 收集为最终的列表
+                .collect(Collectors.toList());
         for (SysProjectStaff sysProjects : projectStaffs) {
             if (sysProjects.getSourceFrom() != null) {
                 if (ProjectTypeEnum.HJL.getClientId().equals(sysProjects.getSourceFrom())) {

+ 2 - 0
takai-system/src/main/resources/mapper/system/SysProjectStaffMapper.xml

@@ -91,6 +91,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             sps.project_pid = #{projectPid}
             and su.user_name = #{userName}
         </where>
+        order by sps.create_time desc
+        limit 1
     </select>
 
     <select id="selectSysProjectStaffById" parameterType="Long" resultMap="SysProjectStaffResult">