Przeglądaj źródła

第三方登录修改 项目同步修改 项目成员判断添加

yangkaixuan 3 tygodni temu
rodzic
commit
71c523ef99

+ 3 - 1
takai-admin/src/main/java/com/takai/web/controller/system/SysLoginController.java

@@ -122,10 +122,12 @@ public class SysLoginController
         String workSpaceName = loginBody.getWorkspaceName();
         String clientId = loginBody.getClientId();
         String timestamp = loginBody.getTimestamp();
+        String workSpaceCode = loginBody.getWorkspaceCode();
         if(!org.springframework.util.StringUtils.hasText(username)
                 || !org.springframework.util.StringUtils.hasText(sign)
                 || !org.springframework.util.StringUtils.hasText(workSpaceId)
                 || !org.springframework.util.StringUtils.hasText(workSpaceName)
+                || !org.springframework.util.StringUtils.hasText(workSpaceCode)
                 || !StringUtils.hasText(clientId)
                 || timestamp == null) {
             return AjaxResult.error(HttpStatus.BAD_REQUEST.value(),"无效的参数");
@@ -145,7 +147,7 @@ public class SysLoginController
             return AjaxResult.error(HttpStatus.BAD_REQUEST.value(),"请求已过期,请重新发起请求");
         }
         if (sign != null) {
-            String dataInput  = clientId+timestamp+username+workSpaceId+workSpaceName;
+            String dataInput  = clientId+timestamp+username+workSpaceId+workSpaceName+workSpaceCode;
             String generatedHash = DigestUtil.sha256Hex(dataInput.toUpperCase()+client.getClientSecret());
             if(!StrUtil.equals(generatedHash, sign)) {
                 return AjaxResult.error(HttpStatus.UNAUTHORIZED.value(),"签名验证失败");

+ 5 - 0
takai-common/src/main/java/com/takai/common/core/domain/model/FrameLoginBody.java

@@ -20,6 +20,11 @@ public class FrameLoginBody
      */
     private String workspaceId;
 
+    /**
+     * 项目code
+     */
+    private String workspaceCode;
+
     /**
      * 项目名称
      */

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

@@ -113,9 +113,9 @@ public class FrameLoginService
         }
 
         //项目不存在则添加项目
-        SysProject sysProject = sysProjectService.selectSysProjectByProjectPid(loginBody.getWorkspaceId());
+        SysProject sysProject = sysProjectService.selectSysProjectByProjectPid(loginBody.getWorkspaceCode());
         if(sysProject == null) {
-            throw new ServiceException("项目"+loginBody.getWorkspaceId()+"不存在,请联系管理员");
+            throw new ServiceException("项目"+loginBody.getWorkspaceCode()+"不存在,请联系管理员");
 //            sysProject = new SysProject();
 //            sysProject.setProjectPid(loginBody.getWorkspaceId());
 //            sysProject.setProjectName(loginBody.getWorkspaceName());
@@ -127,12 +127,12 @@ public class FrameLoginService
 
         //项目用户不存在则添加项目用户
         SysProjectStaff sysProjectStaff = new SysProjectStaff();
-        sysProjectStaff.setProjectPid(loginBody.getWorkspaceId());
+        sysProjectStaff.setProjectPid(loginBody.getWorkspaceCode());
         sysProjectStaff.setUserName(loginBody.getUserName());
         sysProjectStaff.setUserId(sysUser.getUserId());
         SysProjectStaff staff =  sysProjectStaffService.selectSysProjectStaff(sysProjectStaff);
         if(staff == null) {
-            throw new ServiceException("用户"+loginBody.getUserName() +"不是项目"+loginBody.getWorkspaceId()+"的成员,请联系管理员");
+            throw new ServiceException("用户"+loginBody.getUserName() +"不是项目"+loginBody.getWorkspaceCode()+"的成员,请联系管理员");
             //sysProjectStaffService.insertSysProjectStaff(sysProjectStaff);
         }
         String username = "";

+ 2 - 1
takai-system/src/main/java/com/takai/system/domain/SysProject.java

@@ -37,8 +37,9 @@ public class SysProject extends BaseEntity
 
     private String[] name;
 
-    private Long projectType;
+    private String projectType;
 
+    private String productType;
 
     private String sourceFrom;
 

+ 2 - 0
takai-system/src/main/java/com/takai/system/domain/vo/ProjectWebApiBo.java

@@ -17,6 +17,8 @@ public class ProjectWebApiBo {
     private String projectManager;
     private String projectManagerId;
     private String projectManagerNo;
+    private String proId;
+    private String productType;
     // 成员列表(JSON子数组)
     private List<Member> memberList;
 }

+ 9 - 0
takai-system/src/main/java/com/takai/system/mapper/SysProjectStaffMapper.java

@@ -2,6 +2,7 @@ package com.takai.system.mapper;
 
 import com.takai.system.domain.SysProjectStaff;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 
@@ -71,4 +72,12 @@ public interface SysProjectStaffMapper
     public int deleteSysProjectStaffByIds(Long[] ids);
 
     public int deleteSysProjectStaffByProjectPids(@Param("projectPids") List<String> ids);
+
+    @Select("<script>" +
+            "select count(*)" +
+            " from sys_project_staff  " +
+            " where user_id = #{ew.userId} " +
+            " and  project_pid = #{projectPid}" +
+            "</script>")
+    public int checkExit(@Param("ew") SysProjectStaff sysProjectStaff);
 }

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

@@ -13,6 +13,7 @@ import com.takai.system.domain.SysProject;
 import com.takai.system.domain.SysProjectStaff;
 import com.takai.system.domain.vo.Member;
 import com.takai.system.domain.vo.ProjectWebApiBo;
+import com.takai.system.mapper.SysProjectStaffMapper;
 import com.takai.system.service.*;
 import com.takai.common.annotation.DataSource;
 import com.takai.common.config.JkConfig;
@@ -32,6 +33,7 @@ import org.springframework.stereotype.Service;
 import java.io.IOException;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 import com.auth0.jwt.JWT;
 
@@ -69,6 +71,9 @@ public class JkApiServiceImpl implements IJkApiService {
     @Autowired
     private ISysProjectStaffService projectStaffService;
 
+    @Autowired
+    private SysProjectStaffMapper projectStaffMapper;
+
     public static final String BEARER = "Bearer";
 
     public static final String PARAM_ST = "startTime";
@@ -248,6 +253,18 @@ public class JkApiServiceImpl implements IJkApiService {
         try {
             // ========== 核心解析:JSON数组 → List<Project> ==========
             List<ProjectWebApiBo> projectList = JSON.parseArray(String.valueOf(jsonArray), ProjectWebApiBo.class);
+            Set<String> allowedProductTypes = new HashSet<>();
+            allowedProductTypes.add("02");
+            allowedProductTypes.add("03");
+            allowedProductTypes.add("04");
+            allowedProductTypes.add("06");
+            projectList = projectList.stream()
+                    // 过滤条件:Member 非 null + productType 非 null + 在允许集合中
+                    .filter(projectWebApiBo -> projectWebApiBo != null
+                            && projectWebApiBo.getProductType() != null
+                            && allowedProductTypes.contains(projectWebApiBo.getProductType()))
+                    // 收集为新列表(不修改原 memberList,避免影响其他业务逻辑)
+                    .collect(Collectors.toList());
             int projectNum = 0;
             int projectStaffNum = 0;
             // 遍历解析结果,验证数据
@@ -256,6 +273,8 @@ public class JkApiServiceImpl implements IJkApiService {
                 sysProject.setProjectPid(project.getProCode());
                 sysProject.setProjectName(project.getProName());
                 sysProject.setSourceFrom(sourceFrom);
+                sysProject.setProjectType(project.getProType());
+                sysProject.setProductType(project.getProductType());
                 SysProject dbProject = projectService.selectSysProjectByProjectPid(project.getProCode());
                 if(null == dbProject) {
                     projectService.insertSysProject(sysProject);
@@ -270,7 +289,7 @@ public class JkApiServiceImpl implements IJkApiService {
                         sysProjectStaff.setProjectName(project.getProName());
                         sysProjectStaff.setUserId(null != sysUser ? sysUser.getUserId() : null);
                         sysProjectStaff.setRoleId(null != sysUser ? sysUser.getRoleId() : null);
-                        SysProjectStaff dbStaff = projectStaffService.selectSysProjectStaff(sysProjectStaff);
+                        SysProjectStaff dbStaff = projectStaffMapper.selectSysProjectStaff(sysProjectStaff);
                         if(null == dbStaff) {
                             projectStaffService.insertSysProjectStaff(sysProjectStaff);
                             projectStaffNum++;

+ 4 - 0
takai-system/src/main/java/com/takai/system/service/impl/SysProjectStaffServiceImpl.java

@@ -84,6 +84,10 @@ public class SysProjectStaffServiceImpl implements ISysProjectStaffService
     @Override
     public int insertSysProjectStaff(SysProjectStaff sysProjectStaff)
     {
+        int staffCount = sysProjectStaffMapper.checkExit(sysProjectStaff);
+        if(staffCount > 0) {
+            throw new RuntimeException("项目成员已存在 请勿重复添加!");
+        }
 //        List<String> approvers = sysProjectStaff.getApprovers();
 //        String userids = String.join(",", approvers);
         SnowflakeDigitGenerator snowflakeDigitGenerator = new SnowflakeDigitGenerator(1, 1);

+ 5 - 2
takai-system/src/main/resources/mapper/system/SysProjectMapper.xml

@@ -16,6 +16,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 <!--        <result property="name"    column="name"    />-->
         <result property="projectType"    column="project_type"    />
         <result property="sourceFrom"    column="source_from"    />
+        <result property="productType"    column="product_type"    />
     </resultMap>
 
     <sql id="selectSysProjectVo">
@@ -33,7 +34,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                /*ba.appId,
                ba.name*/
                sp.project_type,
-               sp.source_from
+               sp.source_from,
+               sp.product_type
         from sys_project as sp
         <where>
             <if test="projectPid != null  and projectPid != ''"> and sp.project_pid = #{projectPid}</if>
@@ -89,7 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="projectType != null">,project_type</if>
             <if test="createTime != null">,create_time</if>
             <if test="sourceFrom != null">,source_from</if>
-
+            <if test="productType != null">,product_type</if>
         )values(
             <if test="projectPid != null">#{projectPid}</if>
             <if test="projectName != null">,#{projectName}</if>
@@ -99,6 +101,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="projectType != null">,#{projectType}</if>
             <if test="createTime != null">,#{createTime}</if>
             <if test="sourceFrom != null">,#{sourceFrom}</if>
+            <if test="productType != null">,#{productType}</if>
         )
     </insert>