Mure 9 luni în urmă
părinte
comite
94e190c398

+ 5 - 4
src/main/java/com/backendsys/mapper/System/SysUserMapper.xml

@@ -7,7 +7,6 @@
         COALESCE(u.username, '') username,
         COALESCE(u.phone, '') phone,
         COALESCE(u.phone_area_code, '') phone_area_code,
-
         uf.user_id user_id,
         COALESCE(uf.nickname, '') nickname,
         COALESCE(uf.email, '') email,
@@ -54,6 +53,7 @@
             <id property="role_id" column="role_id" />
         </collection>
     </resultMap>
+
     <resultMap id="resultMapUserDetail" type="java.util.LinkedHashMap">
         <id property="id" column="id" jdbcType="BIGINT" />
         <result property="user_id" column="user_id" />
@@ -142,9 +142,10 @@
             <include refid="includeUser" />,
             urr.role_id role_id
         FROM sys_user u
-            LEFT JOIN sys_user_info uf ON u.id = uf.user_id
-            LEFT JOIN sys_user_role_relation urr ON uf.user_id = urr.user_id
+        LEFT JOIN sys_user_info uf ON u.id = uf.user_id
+        LEFT JOIN sys_user_role_relation urr ON uf.user_id = urr.user_id
         <where>
+            AND uf.id != 1
             AND uf.del_flag != 1
             <if test="username != null and username != ''">
                 AND u.username LIKE CONCAT('%', #{username}, '%')
@@ -176,7 +177,7 @@
             <if test="is_super != null and is_super != ''">
                 AND uf.is_super = #{is_super}
             </if>
-            AND uf.id != 1
+
         </where>
         ORDER BY uf.create_time DESC
     </select>

+ 4 - 2
src/main/java/com/backendsys/modules/system/controller/SysUserV2Controller.java

@@ -5,6 +5,7 @@ import com.backendsys.exception.CustException;
 import com.backendsys.modules.common.config.security.enums.SecurityEnum;
 import com.backendsys.modules.common.config.security.utils.SecurityUtil;
 import com.backendsys.modules.common.utils.Result;
+import com.backendsys.modules.system.entity.SysUser.SysUserDTO;
 import com.backendsys.modules.system.entity.SysUser.SysUserInfo;
 import com.backendsys.modules.system.service.SysUserV2Service;
 import com.backendsys.service.System.SysUserService;
@@ -31,8 +32,8 @@ public class SysUserV2Controller {
     @Operation(summary = "获得系统用户列表")
     @PreAuthorize("@sr.hasPermission('3.2')")
     @GetMapping("/api/v2/system/user/getUserList")
-    public Result getUserList(SysUserInfo sysUserInfo) {
-        return Result.success().put("data", sysUserV2Service.selectUserList(sysUserInfo));
+    public Result getUserList(SysUserDTO sysUserDTO) {
+        return Result.success().put("data", sysUserV2Service.selectUserList(sysUserDTO));
     }
 
     /**
@@ -56,6 +57,7 @@ public class SysUserV2Controller {
         }
 
         return Result.success().put("data", sysUserV2Service.selectUserInfo(user_id));
+//        return Result.success().put("data", sysUserV2Service.selectUserDetail(user_id));
     }
 
     /**

+ 4 - 1
src/main/java/com/backendsys/modules/system/dao/SysUserInfoDao.java

@@ -1,5 +1,6 @@
 package com.backendsys.modules.system.dao;
 
+import com.backendsys.modules.system.entity.SysUser.SysUserDTO;
 import com.backendsys.modules.system.entity.SysUser.SysUserInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
@@ -9,6 +10,8 @@ import java.util.List;
 @Mapper
 public interface SysUserInfoDao extends BaseMapper<SysUserInfo> {
 
-    List<SysUserInfo> selectUserList(SysUserInfo sysUserInfo);
+    List<SysUserInfo> selectUserList(SysUserDTO sysUserDTO);
+
+//    SysUserDTO selectUserDetail(Long user_id);
 
 }

+ 107 - 0
src/main/java/com/backendsys/modules/system/entity/SysUser/SysUserDTO.java

@@ -0,0 +1,107 @@
+package com.backendsys.modules.system.entity.SysUser;
+
+import com.backendsys.entity.validator.Phone;
+import com.backendsys.entity.validator.RangeArray;
+import jakarta.validation.constraints.*;
+import lombok.Data;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+
+@Data
+public class SysUserDTO {
+  public static interface Detail{}
+  public static interface Login{}
+  public static interface LoginWithPhone{}
+  public static interface ForgotPassword{}
+  public static interface Create{}
+  public static interface Register{}
+  public static interface Update{}
+  public static interface UpdatePasswordSelf{}
+  public static interface Audit{}
+  public static interface ResetPassword{}
+  public static interface Delete{}
+
+  /**
+   * sys_user
+   */
+  private Long id;
+
+  @NotEmpty(message="用户名不能为空", groups = { Login.class, Create.class, Register.class })
+  @Size(min = 2, max = 20, message = "用户名长度在 {min}-{max} 字符", groups = { Login.class, Create.class, Register.class })
+  private String username;
+  @NotEmpty(message="密码不能为空", groups = { Login.class, Create.class, Register.class, UpdatePasswordSelf.class, ForgotPassword.class })
+  private String password;
+
+  private Boolean is_remember;
+
+  @NotEmpty(message="原密码不能为空", groups = { UpdatePasswordSelf.class })
+  private String old_password;
+  @NotEmpty(message="验证码不能为空", groups = { Login.class, Register.class })
+  private String captcha;
+
+  /**
+   * sys_user_info
+   */
+  @NotNull(message="user_id 不能为空", groups = { Update.class, Detail.class, Audit.class, ResetPassword.class })
+  //@Min(value = 1, message = "user_id 必须大于等于 0", groups = {Update.class, Delete.class})
+  private Long user_id;
+  private List<Long> user_ids;
+
+  
+
+  private String role_ids;
+
+  @Size(min = 2, max = 20, message = "昵称长度在 {min}-{max} 字符", groups = { Create.class, Update.class })
+  private String nickname;
+  @Email(message="邮箱格式不正确", groups = { Create.class, Update.class })
+  private String email;
+
+  @NotEmpty(message="手机号码不能为空", groups = { Create.class, Register.class, LoginWithPhone.class, ForgotPassword.class })
+  @Phone(message="手机号码格式不正确", groups = { Create.class, Update.class, LoginWithPhone.class, ForgotPassword.class })
+  @Size(min = 9, max = 20, message = "手机号码长度在 {min}-{max} 字符", groups = { Create.class, Update.class, LoginWithPhone.class, ForgotPassword.class })
+  private String phone;
+
+  @NotNull(message="验证码不能为空", groups = { Register.class, LoginWithPhone.class, ForgotPassword.class })
+  @Min(value = 100000, message = "验证码长度是 6 位字符", groups = { Register.class })
+  @Max(value = 999999, message = "验证码长度是 6 位字符", groups = { Register.class })
+  private Integer phone_valid_code;
+
+  @NotNull(message="区号/国家码不能为空", groups = { Register.class, LoginWithPhone.class, ForgotPassword.class })
+  @Max(value = 999999, message = "区号/国家码长度不超过 {value} 字符", groups = { Register.class })
+  private Integer phone_area_code;
+
+  @RangeArray(message="性别取值有误,范围应是(1男, 2女, 3保密)", value = {"1", "2", "3"}, groups = { Create.class })
+  private Integer gender;
+  @Size(max = 1000, message = "头像路径长度不超过 {max} 字符", groups = { Create.class, Update.class })
+  private String avatar;
+  @RangeArray(message="是否管理员取值有误,范围应是(-1否, 1是)", value = {"-1", "1"}, groups = { Create.class, Update.class })
+  private Integer is_super;
+  @RangeArray(message="状态取值有误,范围应是(-1禁用, 1启用)", value = {"-1", "1"}, groups = { Create.class, Update.class })
+  private Integer status;
+
+  @RangeArray(message="审核状态取值有误,范围应是(-1审核拒绝, 1待审核, 2审核通过)", value = {"-1", "1", "2"}, groups = { Audit.class })
+  private Integer audit_status;
+  @Size(max = 1000, message = "审核备注长度不超过 {max} 字符", groups = { Audit.class })
+  private String audit_note;
+
+  private String last_login_ip;
+  private String last_login_uuid;
+  private String last_login_time;
+  private String create_time;
+  private String update_time;
+  private Integer del_flag;
+
+
+  private Float point_balance;
+
+  @Size(max = 50, message = "密钥长度不超过 {max} 字符", groups = { Register.class })
+//  @NotEmpty(message="密钥不能为空", groups = { Register.class })
+  private String invite_code;
+
+  @NotEmpty(message="角色不能为空", groups = { Create.class, Update.class })
+  private List<Long> role_id;
+  private List<LinkedHashMap<String, Object>> roles;
+  private List<String> modules;
+
+}

+ 5 - 0
src/main/java/com/backendsys/modules/system/entity/SysUser/SysUserInfo.java

@@ -1,12 +1,16 @@
 package com.backendsys.modules.system.entity.SysUser;
 
+import com.backendsys.entity.System.SysUserDTO;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import jakarta.validation.constraints.NotEmpty;
 import lombok.Data;
 
 import jakarta.validation.constraints.NotNull;
+
+import java.util.LinkedHashMap;
 import java.util.List;
 
 @Data
@@ -34,6 +38,7 @@ public class SysUserInfo {
     private String last_login_time;
     private Integer is_super;
     private Double point_balance;
+    private String invite_code;
     private Integer status;
     private Integer audit_status;
     private String audit_note;

+ 3 - 1
src/main/java/com/backendsys/modules/system/service/SysUserV2Service.java

@@ -1,6 +1,7 @@
 package com.backendsys.modules.system.service;
 
 import com.backendsys.modules.system.entity.SysUser.SysUser;
+import com.backendsys.modules.system.entity.SysUser.SysUserDTO;
 import com.backendsys.modules.system.entity.SysUser.SysUserInfo;
 import com.backendsys.utils.response.PageEntity;
 import com.backendsys.utils.response.PageInfoResult;
@@ -11,10 +12,11 @@ import java.util.List;
 public interface SysUserV2Service extends IService<SysUser> {
 
     // 获得系统用户列表
-    PageEntity selectUserList(SysUserInfo sysUserInfo);
+    PageEntity selectUserList(SysUserDTO sysUserDTO);
 
     // 获得系统用户详情
     SysUserInfo selectUserInfo(Long user_id);
+//    SysUserDTO selectUserDetail(Long user_id);
 
     // 获得系统用户权限
     List<String> selectUserModule(Long user_id);

+ 8 - 2
src/main/java/com/backendsys/modules/system/service/impl/SysUserV2ServiceImpl.java

@@ -3,6 +3,7 @@ package com.backendsys.modules.system.service.impl;
 import com.backendsys.exception.CustException;
 import com.backendsys.modules.system.dao.*;
 import com.backendsys.modules.system.entity.SysUser.SysUser;
+import com.backendsys.modules.system.entity.SysUser.SysUserDTO;
 import com.backendsys.modules.system.entity.SysUser.SysUserInfo;
 import com.backendsys.modules.system.entity.SysUser.SysUserRole;
 import com.backendsys.modules.system.service.SysUserV2Service;
@@ -39,10 +40,10 @@ public class SysUserV2ServiceImpl extends ServiceImpl<SysUserDao, SysUser> imple
      * 获得系统用户列表
      */
     @Override
-    public PageEntity selectUserList(SysUserInfo sysUserInfo) {
+    public PageEntity selectUserList(SysUserDTO sysUserDTO) {
         // 分页
         PageUtils.startPage();
-        List<SysUserInfo> list = sysUserInfoDao.selectUserList(sysUserInfo);
+        List<SysUserInfo> list = sysUserInfoDao.selectUserList(sysUserDTO);
         return new PageInfoResult(list).toEntity();
     }
 
@@ -70,6 +71,11 @@ public class SysUserV2ServiceImpl extends ServiceImpl<SysUserDao, SysUser> imple
         return sysUserInfo;
     }
 
+//    @Override
+//    public SysUserDTO selectUserDetail(Long user_id) {
+//        return sysUserInfoDao.selectUserDetail(user_id);
+//    }
+
     /**
      * 获得系统用户权限
      */

+ 81 - 4
src/main/resources/mapper/system/SysUserInfoDao.xml

@@ -48,29 +48,106 @@
         <result property="create_time" column="create_time" />
         <result property="update_time" column="update_time" />
         <result property="del_flag" column="del_flag" javaType="java.lang.Integer" />
+        <collection property="role_ids" javaType="java.util.List" ofType="java.lang.Long" column="role_id">
+            <id property="role_id" column="role_id" />
+        </collection>
     </resultMap>
 
     <select id="selectUserList" resultMap="resultMapUserList">
-        SELECT <include refid="includeUser" />
+        SELECT <include refid="includeUser" />, urr.role_id role_id
         FROM sys_user_info uf
         LEFT JOIN sys_user u ON u.id = uf.user_id
+        LEFT JOIN sys_user_role_relation urr ON uf.user_id = urr.user_id
         <where>
+            AND u.id != 1
+            AND uf.del_flag != 1
             <if test="username != null and username != ''">
                 AND u.username LIKE CONCAT('%', #{username}, '%')
             </if>
-            <if test="nickname != null and nickname != ''">
-                AND uf.nickname LIKE CONCAT('%', #{nickname}, '%')
-            </if>
             <if test="phone != null and phone != ''">
                 AND u.phone LIKE CONCAT('%', #{phone}, '%')
             </if>
+            <if test="phone_area_code != null and phone_area_code != ''">
+                AND u.phone_area_code = #{phone_area_code}
+            </if>
+            <if test="nickname != null and nickname != ''">
+                AND uf.nickname LIKE CONCAT('%', #{nickname}, '%')
+            </if>
             <if test="email != null and email != ''">
                 AND uf.email LIKE CONCAT('%', #{email}, '%')
             </if>
             <if test="status != null and status != ''">
                 AND uf.status = #{status}
             </if>
+            <if test="audit_status != null and audit_status != ''">
+                AND uf.audit_status = #{audit_status}
+            </if>
+            <if test="role_id != null and role_id != ''">
+                AND urr.role_id IN
+                <foreach collection="role_id" item="role" open="(" separator="," close=")">
+                    #{role}
+                </foreach>
+            </if>
+            <if test="is_super != null and is_super != ''">
+                AND uf.is_super = #{is_super}
+            </if>
         </where>
+        ORDER BY uf.create_time DESC
     </select>
 
+<!--    <resultMap id="resultMapUserDetail" type="java.util.LinkedHashMap">-->
+<!--    <resultMap id="resultMapUserDetail" type="com.backendsys.modules.system.entity.SysUser.SysUserDTO">-->
+<!--        <id property="id" column="id" jdbcType="BIGINT" />-->
+<!--        <result property="user_id" column="user_id" />-->
+<!--        <result property="username" column="username" />-->
+<!--        <result property="phone" column="phone" />-->
+<!--        <result property="phone_area_code" column="phone_area_code" />-->
+<!--        <result property="nickname" column="nickname" />-->
+<!--        <result property="email" column="email" />-->
+<!--        <result property="gender" column="gender" javaType="java.lang.Integer"/>-->
+<!--        <result property="avatar" column="avatar" />-->
+<!--        <result property="last_login_ip" column="last_login_ip" />-->
+<!--        <result property="last_login_uuid" column="last_login_uuid" />-->
+<!--        <result property="last_login_time" column="last_login_time" />-->
+<!--        <result property="is_super" column="is_super" javaType="java.lang.Integer"/>-->
+<!--        <result property="point_balance" column="point_balance" javaType="java.lang.Float"/>-->
+<!--        <result property="invite_code" column="invite_code" />-->
+<!--        <result property="status" column="status" javaType="java.lang.Integer"/>-->
+<!--        <result property="audit_status" column="audit_status" javaType="java.lang.Integer"/>-->
+<!--        <result property="audit_note" column="audit_note" />-->
+<!--        <result property="create_time" column="create_time" />-->
+<!--        <result property="update_time" column="update_time" />-->
+<!--        <result property="del_flag" column="del_flag" javaType="java.lang.Integer"/>-->
+<!--        <collection property="roles" javaType="java.util.List" ofType="java.util.LinkedHashMap"-->
+<!--            select="queryRoleById" column="id">-->
+<!--            <id property="id" column="id" />-->
+<!--            <result property="role_name" column="role_name" />-->
+<!--            <result property="sort" column="sort" />-->
+<!--        </collection>-->
+<!--    </resultMap>-->
+
+    <!-- [多对多,使用子查询] -->
+    <!-- [嵌套查询] 用户角色 / 角色模块 -->
+<!--    <select id="queryRoleById" resultType="java.util.LinkedHashMap">-->
+<!--        SELECT ur.id, ur.role_name,-->
+<!--               GROUP_CONCAT(m.id) AS module_ids-->
+<!--        FROM sys_user_role_relation urr-->
+<!--                 LEFT JOIN sys_user_role ur ON urr.role_id = ur.id-->
+<!--                 LEFT JOIN sys_user_role_module_relation mr ON urr.role_id = mr.role_id-->
+<!--                 LEFT JOIN sys_user_role_module m ON mr.module_id = m.id-->
+<!--        WHERE urr.user_id = #{userId}-->
+<!--        GROUP BY ur.id-->
+<!--        ORDER BY ur.sort ASC-->
+<!--    </select>-->
+
+    <!-- 查询 用户详情 -->
+<!--    <select id="selectUserDetail" resultMap="resultMapUserDetail">-->
+<!--        SELECT-->
+<!--        <include refid="includeUser" />-->
+<!--        FROM sys_user u-->
+<!--        LEFT JOIN sys_user_info uf ON u.id = uf.user_id-->
+<!--        WHERE u.id = #{user_id}-->
+<!--        AND uf.del_flag = -1-->
+<!--    </select>-->
+
 </mapper>