Browse Source

添加注册接口

zq940222 2 weeks ago
parent
commit
6e0634e73d

+ 3 - 1
jeecg-boot-base-core/src/main/java/org/jeecg/config/security/SecurityConfig.java

@@ -6,8 +6,10 @@ import com.nimbusds.jose.jwk.JWKSet;
 import com.nimbusds.jose.jwk.source.ImmutableJWKSet;
 import com.nimbusds.jose.jwk.source.JWKSource;
 import com.nimbusds.jose.proc.SecurityContext;
+
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
+
 import org.jeecg.config.security.app.AppGrantAuthenticationConvert;
 import org.jeecg.config.security.app.AppGrantAuthenticationProvider;
 import org.jeecg.config.security.password.PasswordGrantAuthenticationConvert;
@@ -36,7 +38,6 @@ import org.springframework.security.oauth2.server.authorization.client.JdbcRegis
 import org.springframework.security.oauth2.server.authorization.client.RegisteredClientRepository;
 import org.springframework.security.oauth2.server.authorization.config.annotation.web.configuration.OAuth2AuthorizationServerConfiguration;
 import org.springframework.security.oauth2.server.authorization.config.annotation.web.configurers.OAuth2AuthorizationServerConfigurer;
-import org.springframework.security.oauth2.server.authorization.settings.AuthorizationServerSettings;
 import org.springframework.security.oauth2.server.authorization.token.*;
 import org.springframework.security.web.SecurityFilterChain;
 import org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint;
@@ -114,6 +115,7 @@ public class SecurityConfig {
                         .requestMatchers(AntPathRequestMatcher.antMatcher("/sys/phoneLogin")).permitAll()
                         .requestMatchers(AntPathRequestMatcher.antMatcher("/sys/user/checkOnlyUser")).permitAll()
                         .requestMatchers(AntPathRequestMatcher.antMatcher("/sys/user/register")).permitAll()
+                        .requestMatchers(AntPathRequestMatcher.antMatcher("/sys/user/registerNew")).permitAll()
                         .requestMatchers(AntPathRequestMatcher.antMatcher("/sys/user/phoneVerification")).permitAll()
                         .requestMatchers(AntPathRequestMatcher.antMatcher("/sys/user/passwordChange")).permitAll()
                         .requestMatchers(AntPathRequestMatcher.antMatcher("/auth/2step-code")).permitAll()

+ 101 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java

@@ -74,6 +74,9 @@ public class SysUserController {
     private ISysUserRoleService sysUserRoleService;
 
     @Autowired
+    private ISysRoleService sysRoleService;
+
+    @Autowired
     private ISysUserDepartService sysUserDepartService;
 
     @Autowired
@@ -1028,6 +1031,104 @@ public class SysUserController {
         }
         return result;
     }
+    /**
+     * 用户注册接口
+     *
+     * @param jsonObject 包含用户名、企业全称、邮箱、手机号(选填)和密码的 JSON 对象
+     * @return 注册结果
+     */
+    @PostMapping("/registerNew")
+    public Result<JSONObject> registerNew(@RequestBody JSONObject jsonObject) {
+        Result<JSONObject> result = new Result<>();
+        String username = jsonObject.getString("username");
+        String companyName = jsonObject.getString("companyName");
+        String email = jsonObject.getString("email");
+        String phone = jsonObject.getString("phone"); // 可选
+        String password = jsonObject.getString("password");
+
+        // 验证输入参数
+        if (oConvertUtils.isEmpty(username) || oConvertUtils.isEmpty(companyName) || oConvertUtils.isEmpty(email) || oConvertUtils.isEmpty(password)) {
+            result.setMessage("用户名、企业全称、邮箱和密码不能为空");
+            result.setSuccess(false);
+            return result;
+        }
+
+        // 检查用户是否存在
+        SysUser sysUser1 = sysUserService.getUserByName(username);
+        if (sysUser1 != null) {
+            result.setMessage("用户名已注册");
+            result.setSuccess(false);
+            return result;
+        }
+
+        SysUser sysUser2 = sysUserService.getUserByEmail(email);
+        if (sysUser2 != null) {
+            result.setMessage("该邮箱已注册");
+            result.setSuccess(false);
+            return result;
+        }
+
+        if (oConvertUtils.isNotEmpty(phone)) {
+            SysUser sysUser3 = sysUserService.getUserByPhone(phone);
+            if (sysUser3 != null) {
+                result.setMessage("该手机号已注册");
+                result.setSuccess(false);
+                return result;
+            }
+        }
+
+        try {
+            // 设置默认租户为“苏豪” (tenant_id 为 1003)
+            Integer tenantId = 1003; // “苏豪”的租户ID是 1003
+
+            SysUser user = new SysUser();
+            user.setCreateTime(new Date()); // 设置创建时间
+            String salt = oConvertUtils.randomGen(8);
+            String passwordEncode = PasswordUtil.encrypt(username, password, salt);
+            user.setSalt(salt);
+            user.setUsername(username);
+            user.setRealname(companyName);
+            user.setCompanyName(companyName);
+            user.setPassword(passwordEncode);
+            user.setEmail(email);
+            user.setPhone(phone);
+            user.setLoginTenantId(tenantId);
+            user.setStatus(CommonConstant.USER_UNFREEZE);
+            user.setDelFlag(CommonConstant.DEL_FLAG_0);
+            user.setActivitiSync(CommonConstant.ACT_SYNC_1);
+
+            // 保存用户
+            sysUserService.save(user);
+
+            // 查询 "third_role" 角色的 ID
+            LambdaQueryWrapper<SysRole> roleQuery = new LambdaQueryWrapper<>();
+            roleQuery.eq(SysRole::getRoleCode, "third_role");
+            SysRole thirdRole = sysRoleService.getOne(roleQuery);
+            if (thirdRole == null) {
+                log.error("third_role not found in database");
+                result.error500("注册失败: third_role 未找到");
+                return result;
+            }
+
+            // 设置用户角色为 “第三方登陆角色”
+            SysUserRole sysUserRole = new SysUserRole(user.getId(), thirdRole.getId());
+            sysUserRoleService.save(sysUserRole);
+
+
+            SysUserTenant sysUserTenant = new SysUserTenant();
+            sysUserTenant.setUserId(user.getId());
+            sysUserTenant.setTenantId(tenantId);
+            sysUserTenant.setStatus(CommonConstant.USER_TENANT_NORMAL);
+            userTenantService.save(sysUserTenant);
+
+            result.success("注册成功");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("注册失败");
+        }
+        return result;
+    }
+
 
 //	/**
 //	 * 根据用户名或手机号查询用户信息

+ 6 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java

@@ -242,4 +242,10 @@ public class SysUser implements Serializable {
      */
     @TableField(exist = false)
     private transient String roleNames;
+
+    /**
+     * 企业全称
+     */
+    @TableField("company_name")
+    private String companyName;
 }