Bladeren bron

更新!

TRX 1 jaar geleden
bovenliggende
commit
ab6402b590

+ 21 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/projectCommon/BuildDefaultPasswordParam.java

@@ -0,0 +1,21 @@
+package com.zhongshu.card.client.model.projectAbout.projectCommon;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ *
+ * @author TRX
+ * @date 2025/3/17
+ */
+@Builder
+@Data
+public class BuildDefaultPasswordParam {
+
+    @Schema(name = "身份证号")
+    private String cardNumber;
+
+    @Schema(description = "手机号码")
+    private String phone;
+}

+ 32 - 9
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationUserServiceImpl.java

@@ -19,6 +19,7 @@ import com.zhongshu.card.client.model.org.orgUser.OrganizationUserSimpleModel;
 import com.zhongshu.card.client.model.org.register.UserCountRegisterParam;
 import com.zhongshu.card.client.model.orgModel.OrgBindUserAllParam;
 import com.zhongshu.card.client.model.paySetting.paySetting.OrgPayShowSettingModel;
+import com.zhongshu.card.client.model.projectAbout.projectCommon.BuildDefaultPasswordParam;
 import com.zhongshu.card.client.model.projectAbout.projectCommon.ProjectCommonConfigModel;
 import com.zhongshu.card.client.model.school.ExcelUserParam;
 import com.zhongshu.card.client.model.school.ImportResultModel;
@@ -29,9 +30,10 @@ import com.zhongshu.card.client.type.user.OrgAddType;
 import com.zhongshu.card.client.type.user.OrgUserState;
 import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.card.server.core.dao.org.*;
+import com.zhongshu.card.server.core.dao.projectAbout.ProjectCommonConfigDao;
 import com.zhongshu.card.server.core.dao.school.DictInfoDao;
-import com.zhongshu.card.server.core.dataConfig.CardSystemDefault;
 import com.zhongshu.card.server.core.domain.org.*;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectCommonConfig;
 import com.zhongshu.card.server.core.domain.school.DictInfo;
 import com.zhongshu.card.server.core.event.OrgUserBindUpdateSyncEvent;
 import com.zhongshu.card.server.core.model.org.OrgBindUserParam;
@@ -139,6 +141,9 @@ public class OrganizationUserServiceImpl extends SuperService {
     @Autowired
     private ProjectCommonConfigService projectCommonConfigService;
 
+    @Autowired
+    private ProjectCommonConfigDao commonConfigDao;
+
     /**
      * 添加编辑用户 添加机构用户 (包括角色 部门 职位等信息)
      * 用户可能不存在
@@ -179,33 +184,45 @@ public class OrganizationUserServiceImpl extends SuperService {
         String projectOid = param.getProjectOid();
         Organization projectInfo = organizationDao.findTopByOid(projectOid);
         if (ObjectUtils.isEmpty(projectInfo)) {
-            return ResultContent.buildFail("项目不存在");
+            return ResultContent.buildFail(String.format("项目不存在:%s", projectOid));
         }
         if (projectInfo.getAuthType() != AuthType.Project) {
             return ResultContent.buildFail("projectOid机构类型不属于项目,请检查参数");
         }
+        ResultContent<ProjectCommonConfig> resultContent = projectCommonConfigService.checkCommonConfig(projectOid);
+        if (resultContent.isFailed()) {
+            return ResultContent.buildFail(resultContent.getMsg());
+        }
+        ProjectCommonConfig projectCommonConfig = resultContent.getContent();
+
         // 判断是否存在
         UserAccount userAccount = userCountDao.findTopByLoginName(loginName);
 
         if (ObjectUtils.isNotEmpty(userAccount)) {
             // 判断是否存在
-            OrganizationUser tempOrgUser = organizationUserDao.findTopByUserAndProjectOidAndIsOrg(userAccount, projectOid, Boolean.TRUE);
+            OrganizationUser tempOrgUser = organizationUserDao.findTopByUserAndProjectOidOrderByCreateTimeDesc(userAccount, projectOid);
             if (ObjectUtils.isNotEmpty(tempOrgUser)) {
                 if (ObjectUtils.isEmpty(temp) || !temp.getId().equals(tempOrgUser.getId())) {
                     return ResultContent.buildFail(String.format("用户已加入该项目:%s", loginName));
                 }
             }
         }
+        String passWord = projectCommonConfigService.buildUserDefaultPassWord(
+                projectOid,
+                BuildDefaultPasswordParam.builder().cardNumber(param.getCardNumber()).build(),
+                projectCommonConfig
+        );
 
         // 用户基本信息维护 电话号码为登录名
         RegisterUserAccountParam userAccountParam = new RegisterUserAccountParam();
         userAccountParam.setLoginName(loginName);
-        userAccountParam.setPassword(param.getPassWord());
+        userAccountParam.setPassword(passWord);
         userAccountParam.setPhone(param.getPhone());
         userAccountParam.setName(param.getName());
         userAccountParam.setCardNumber(param.getCardNumber());
         userAccountParam.setSex(param.getSex());
         userAccountParam.setProfilePic(param.getProfilePic());
+        userAccountParam.setState(param.getState());
         ResultContent<String> userAccountContent = userAccountService.registerUserAccount(userAccountParam);
         if (userAccountContent.isFailed()) {
             return ResultContent.buildFail(userAccountContent.getMsg());
@@ -861,6 +878,11 @@ public class OrganizationUserServiceImpl extends SuperService {
     public ResultContent<ImportResultModel> importProjectUsers(HttpServletRequest request, HttpServletResponse response, MultipartFile file, ProjectOidParam proParam) {
         String projectOid = proParam.getProjectOid();
         Assert.hasText(projectOid, "projectOid不能为空");
+        ResultContent<ProjectCommonConfig> _resultContent = projectCommonConfigService.checkCommonConfig(projectOid);
+        if (_resultContent.isFailed()) {
+            return ResultContent.buildFail(_resultContent.getMsg());
+        }
+        ProjectCommonConfig projectCommonConfig = _resultContent.getContent();
 
         ImportResultModel model = new ImportResultModel();
         try {
@@ -981,11 +1003,12 @@ public class OrganizationUserServiceImpl extends SuperService {
                         if (StringUtils.isNotBlank(excelUserParam.getSexStr())) {
                             addParam.setSex(CommonUtil.getSexByStr(excelUserParam.getSexStr()));
                         }
-                        String passWord = CardSystemDefault.DEFAULT_PASSWORD;
-                        if (StringUtils.isNotEmpty(excelUserParam.getCardNumber())) {
-                            excelUserParam.getCardNumber().substring(12, 18);
-                            passWord = passWord.toLowerCase().replace("x", "0");
-                        }
+
+                        String passWord = projectCommonConfigService.buildUserDefaultPassWord(
+                                projectOid,
+                                BuildDefaultPasswordParam.builder().cardNumber(excelUserParam.getCardNumber()).build(),
+                                projectCommonConfig
+                        );
                         addParam.setPassWord(passWord);
                         userList.add(addParam);
                     }

+ 53 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/ProjectCommonConfigService.java

@@ -1,20 +1,23 @@
 package com.zhongshu.card.server.core.service.projectAbout;
 
 import com.github.microservice.net.ResultContent;
-import com.zhongshu.card.client.model.org.role.RoleModel;
 import com.zhongshu.card.client.model.org.role.RoleSimpleModel;
+import com.zhongshu.card.client.model.projectAbout.projectCommon.BuildDefaultPasswordParam;
 import com.zhongshu.card.client.model.projectAbout.projectCommon.ProjectCommonConfigModel;
 import com.zhongshu.card.client.model.projectAbout.projectCommon.ProjectCommonConfigParam;
 import com.zhongshu.card.client.model.projectAbout.projectCommon.ProjectCommonSuperParam;
+import com.zhongshu.card.client.type.PassWordDefaultType;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.dao.org.RoleDao;
 import com.zhongshu.card.server.core.dao.projectAbout.ProjectCommonConfigDao;
+import com.zhongshu.card.server.core.dataConfig.CardSystemDefault;
 import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.org.Role;
 import com.zhongshu.card.server.core.domain.projectAbout.ProjectCommonConfig;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.service.user.RoleServiceImpl;
 import com.zhongshu.card.server.core.util.BeanUtils;
+import com.zhongshu.card.server.core.util.ValidateUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -182,6 +185,55 @@ public class ProjectCommonConfigService extends SuperService {
         return false;
     }
 
+    /**
+     * 检查并返回 项目是否有通用配置
+     * @param projectOid
+     * @return
+     */
+    public ResultContent<ProjectCommonConfig> checkCommonConfig(String projectOid) {
+        ProjectCommonConfig entity = commonConfigDao.findTopByProjectOid(projectOid);
+        if (ObjectUtils.isEmpty(entity)) {
+            return ResultContent.buildFail("项目通用配置未配");
+        }
+        return ResultContent.buildSuccess(entity);
+    }
+
+    /**
+     * 得到项目用户默认密码
+     * 1. 第一步按照项目设置得到密码
+     * 2. 如果密码为空,则取系统的默认密码
+     * @param projectOid
+     * @param param
+     * @param projectCommonConfig
+     * @return
+     */
+    public String buildUserDefaultPassWord(String projectOid, BuildDefaultPasswordParam param, ProjectCommonConfig projectCommonConfig) {
+        String passWord = "";
+        if (StringUtils.isNotEmpty(projectOid)) {
+            if (ObjectUtils.isEmpty(projectCommonConfig)) {
+                projectCommonConfig = commonConfigDao.findTopByProjectOid(projectOid);
+            }
+            if (ObjectUtils.isNotEmpty(projectCommonConfig)) {
+                PassWordDefaultType passWordDefaultType = projectCommonConfig.getPassWordDefaultType();
+                if (passWordDefaultType == PassWordDefaultType.CardNumberLast6) {
+                    // 身份证后6位
+                    String cardNumber = param.getCardNumber();
+                    if (ValidateUtils.isIDCardSimple(cardNumber)) {
+                        passWord = cardNumber.substring(12, 18);
+                        passWord = passWord.toLowerCase().replace("x", "0");
+                    }
+                } else if (passWordDefaultType == PassWordDefaultType.Cosuom) {
+                    // 自定义密码
+                    passWord = projectCommonConfig.getDefaultPassWord();
+                }
+            }
+        }
+        if (StringUtils.isEmpty(passWord)) {
+            passWord = CardSystemDefault.DEFAULT_PASSWORD;
+        }
+        return passWord;
+    }
+
     public ProjectCommonConfigModel toModel(ProjectCommonConfig entity) {
         ProjectCommonConfigModel model = null;
         if (ObjectUtils.isNotEmpty(entity)) {

+ 2 - 7
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/user/UserAccountServiceImpl.java

@@ -113,20 +113,15 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
         if (StringUtils.isEmpty(param.getLoginName())) {
             return ResultContent.buildFail(String.format("loginName不能为空"));
         }
+
         // 电话号码为登录名
         String loginName = param.getLoginName();
         UserAccount userAccount = userCountDao.findTopByLoginName(loginName);
         if (ObjectUtils.isEmpty(userAccount)) {
-            String cardNumber = param.getCardNumber();
             String passWord = param.getPassword();
 
             if (StringUtils.isEmpty(passWord)) {
-                if (ValidateUtils.isIDCard(cardNumber)) {
-                    passWord = cardNumber.substring(12, 18);
-                    passWord = passWord.toLowerCase().replace("x", "0");
-                } else {
-                    passWord = CardSystemDefault.DEFAULT_PASSWORD;
-                }
+                passWord = CardSystemDefault.DEFAULT_PASSWORD;
             }
 
             String userId = "";

+ 13 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/util/ValidateUtils.java

@@ -37,7 +37,7 @@ public class ValidateUtils {
     }
 
     /**
-     * 判断是否是身份证号码
+     * 判断是否是身份证号码 (复杂的,长度和是否通过格式校验)
      *
      * @param idCard
      * @return
@@ -80,6 +80,18 @@ public class ValidateUtils {
         return false;
     }
 
+    /**
+     * 验证是否是身份证 (只长度验证)
+     * @param idCard
+     * @return
+     */
+    public static boolean isIDCardSimple(String idCard) {
+        if (StringUtils.isNotEmpty(idCard) && idCard.trim().length() != 18) {
+            return true;
+        }
+        return false;
+    }
+
     /**
      * 验证是否有特殊支付 (有一个就是true)
      *