Bläddra i källkod

feat(user): 增加用户列表查询功能

- 在 UserMapper.xml 中添加了三个新的 SQL 查询语句
- 在 UserServiceImpl.java 中实现了新的查询方法
- 在 UserVo.java 中添加了新的字段用于显示用户姓名和状态描述
fugui001 6 månader sedan
förälder
incheckning
026ae2b03d

+ 14 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/business/domain/vo/UserVo.java

@@ -23,6 +23,8 @@ import java.io.Serializable;
 @AutoMapper(target = User.class)
 @AutoMapper(target = User.class)
 public class UserVo implements Serializable {
 public class UserVo implements Serializable {
 
 
+
+
     @Serial
     @Serial
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;
 
 
@@ -159,4 +161,16 @@ public class UserVo implements Serializable {
     private String lastLoginIp;
     private String lastLoginIp;
 
 
 
 
+    /**
+     * 用户姓名
+     */
+    @ExcelProperty(value = "用户姓名")
+    private String realName;
+
+    /**
+     * 状态描述
+     */
+    private String statusText;
+
+
 }
 }

+ 108 - 26
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/business/service/impl/UserServiceImpl.java

@@ -1,5 +1,7 @@
 package org.dromara.business.service.impl;
 package org.dromara.business.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.dromara.business.domain.User;
 import org.dromara.business.domain.User;
 import org.dromara.business.domain.bo.UserBo;
 import org.dromara.business.domain.bo.UserBo;
 import org.dromara.business.domain.vo.UserVo;
 import org.dromara.business.domain.vo.UserVo;
@@ -54,7 +56,7 @@ public class UserServiceImpl implements IUserService {
      */
      */
     @Override
     @Override
     public TableDataInfo<UserVo> queryPageList(UserBo bo, PageQuery pageQuery) {
     public TableDataInfo<UserVo> queryPageList(UserBo bo, PageQuery pageQuery) {
-        LambdaQueryWrapper<User> lqw = buildQueryWrapper(bo);
+        Wrapper<User> lqw = buildQueryWrapper(bo);
         Page<UserVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         Page<UserVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         return TableDataInfo.build(result);
         return TableDataInfo.build(result);
     }
     }
@@ -67,35 +69,115 @@ public class UserServiceImpl implements IUserService {
      */
      */
     @Override
     @Override
     public List<UserVo> queryList(UserBo bo) {
     public List<UserVo> queryList(UserBo bo) {
-        LambdaQueryWrapper<User> lqw = buildQueryWrapper(bo);
+        Wrapper<User> lqw = buildQueryWrapper(bo);
         return baseMapper.selectUserList(lqw);
         return baseMapper.selectUserList(lqw);
     }
     }
 
 
-    private LambdaQueryWrapper<User> buildQueryWrapper(UserBo bo) {
+    private Wrapper<User> buildQueryWrapper(UserBo bo) {
         Map<String, Object> params = bo.getParams();
         Map<String, Object> params = bo.getParams();
-        LambdaQueryWrapper<User> lqw = Wrappers.lambdaQuery();
-        lqw.orderByAsc(User::getId);
-        lqw.like(StringUtils.isNotBlank(bo.getLoginName()), User::getLoginName, bo.getLoginName());
-        lqw.eq(StringUtils.isNotBlank(bo.getLoginPass()), User::getLoginPass, bo.getLoginPass());
-        lqw.eq(StringUtils.isNotBlank(bo.getPhone()), User::getPhone, bo.getPhone());
-        lqw.eq(bo.getCreateAt() != null, User::getCreateAt, bo.getCreateAt());
-        lqw.eq(bo.getUpdateAt() != null, User::getUpdateAt, bo.getUpdateAt());
-        lqw.eq(bo.getSex() != null, User::getSex, bo.getSex());
-        lqw.eq(StringUtils.isNotBlank(bo.getEmail()), User::getEmail, bo.getEmail());
-        lqw.like(StringUtils.isNotBlank(bo.getNickName()), User::getNickName, bo.getNickName());
-        lqw.eq(StringUtils.isNotBlank(bo.getCaptcha()), User::getCaptcha, bo.getCaptcha());
-        lqw.eq(StringUtils.isNotBlank(bo.getAvatar()), User::getAvatar, bo.getAvatar());
-        lqw.eq(StringUtils.isNotBlank(bo.getProvince()), User::getProvince, bo.getProvince());
-        lqw.eq(StringUtils.isNotBlank(bo.getCity()), User::getCity, bo.getCity());
-        lqw.eq(StringUtils.isNotBlank(bo.getArea()), User::getArea, bo.getArea());
-        lqw.eq(StringUtils.isNotBlank(bo.getPlaceDetail()), User::getPlaceDetail, bo.getPlaceDetail());
-        lqw.eq(StringUtils.isNotBlank(bo.getRegisterIp()), User::getRegisterIp, bo.getRegisterIp());
-        lqw.eq(StringUtils.isNotBlank(bo.getRegisterDevice()), User::getRegisterDevice, bo.getRegisterDevice());
-        lqw.eq(bo.getStatus() != null, User::getStatus, bo.getStatus());
-        lqw.eq(bo.getIsLocked() != null, User::getIsLocked, bo.getIsLocked());
-        lqw.eq(bo.getLastLoginTime() != null, User::getLastLoginTime, bo.getLastLoginTime());
-        lqw.eq(StringUtils.isNotBlank(bo.getLastLoginIp()), User::getLastLoginIp, bo.getLastLoginIp());
-        return lqw;
+        QueryWrapper<User> wrapper = new QueryWrapper<>();
+
+        // a.login_name
+        if (StringUtils.isNotBlank(bo.getLoginName())) {
+            wrapper.like("a.login_name", bo.getLoginName());
+        }
+
+        // a.login_pass
+        if (StringUtils.isNotBlank(bo.getLoginPass())) {
+            wrapper.eq("a.login_pass", bo.getLoginPass());
+        }
+
+        // a.phone
+        if (StringUtils.isNotBlank(bo.getPhone())) {
+            wrapper.eq("a.phone", bo.getPhone());
+        }
+
+        // a.create_at
+        if (bo.getCreateAt() != null) {
+            wrapper.eq("a.create_at", bo.getCreateAt());
+        }
+
+        // a.update_at
+        if (bo.getUpdateAt() != null) {
+            wrapper.eq("a.update_at", bo.getUpdateAt());
+        }
+
+        // a.sex
+        if (bo.getSex() != null) {
+            wrapper.eq("a.sex", bo.getSex());
+        }
+
+        // a.email
+        if (StringUtils.isNotBlank(bo.getEmail())) {
+            wrapper.eq("a.email", bo.getEmail());
+        }
+
+        // a.nick_name
+        if (StringUtils.isNotBlank(bo.getNickName())) {
+            wrapper.like("a.nick_name", bo.getNickName());
+        }
+
+        // a.captcha
+        if (StringUtils.isNotBlank(bo.getCaptcha())) {
+            wrapper.eq("a.captcha", bo.getCaptcha());
+        }
+
+        // a.avatar
+        if (StringUtils.isNotBlank(bo.getAvatar())) {
+            wrapper.eq("a.avatar", bo.getAvatar());
+        }
+
+        // a.province
+        if (StringUtils.isNotBlank(bo.getProvince())) {
+            wrapper.eq("a.province", bo.getProvince());
+        }
+
+        // a.city
+        if (StringUtils.isNotBlank(bo.getCity())) {
+            wrapper.eq("a.city", bo.getCity());
+        }
+
+        // a.area
+        if (StringUtils.isNotBlank(bo.getArea())) {
+            wrapper.eq("a.area", bo.getArea());
+        }
+
+        // a.place_detail
+        if (StringUtils.isNotBlank(bo.getPlaceDetail())) {
+            wrapper.eq("a.place_detail", bo.getPlaceDetail());
+        }
+
+        // a.register_ip
+        if (StringUtils.isNotBlank(bo.getRegisterIp())) {
+            wrapper.eq("a.register_ip", bo.getRegisterIp());
+        }
+
+        // a.register_device
+        if (StringUtils.isNotBlank(bo.getRegisterDevice())) {
+            wrapper.eq("a.register_device", bo.getRegisterDevice());
+        }
+
+        // a.status
+        if (bo.getStatus() != null) {
+            wrapper.eq("a.status", bo.getStatus());
+        }
+
+        // a.is_locked
+        if (bo.getIsLocked() != null) {
+            wrapper.eq("a.is_locked", bo.getIsLocked());
+        }
+
+        // a.last_login_time
+        if (bo.getLastLoginTime() != null) {
+            wrapper.eq("a.last_login_time", bo.getLastLoginTime());
+        }
+
+        // a.last_login_ip
+        if (StringUtils.isNotBlank(bo.getLastLoginIp())) {
+            wrapper.eq("a.last_login_ip", bo.getLastLoginIp());
+        }
+        wrapper.eq("a.del_flag", 0);
+        return wrapper;
     }
     }
 
 
     /**
     /**

+ 107 - 71
ruoyi-modules/ruoyi-system/src/main/resources/mapper/business/UserMapper.xml

@@ -7,84 +7,120 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
 
 
     <select id="selectVoPage" resultType="org.dromara.business.domain.vo.UserVo">
     <select id="selectVoPage" resultType="org.dromara.business.domain.vo.UserVo">
-        SELECT  id,
-                login_name,
-                login_pass,
-                phone,
-                create_at,
-                update_at,
-                sex,
-                email,
-                nick_name,
-                remark,
-                captcha,
-                avatar,
-                province,
-                city,
-                area,
-                place_detail,
-                register_ip,
-                register_device,
-                status,
-                is_locked,
-                last_login_time,
-                last_login_ip,
-                del_flag
-        FROM user ${ew.customSqlSegment}
+        SELECT
+        a.id,
+        a.login_name,
+        a.login_pass,
+        a.phone,
+        a.create_at,
+        a.update_at,
+        a.sex,
+        a.email,
+        a.nick_name,
+        a.remark,
+        a.captcha,
+        a.avatar,
+        a.province,
+        a.city,
+        a.area,
+        a.place_detail,
+        a.register_ip,
+        a.register_device,
+        a.status,
+
+        CASE
+        WHEN a.status = 0 THEN '禁用'
+        WHEN a.status = 1 THEN '启用'
+        ELSE ''
+        END AS statusText,
+
+        a.is_locked,
+        a.last_login_time,
+        a.last_login_ip,
+        a.del_flag,
+        b.real_name
+        FROM user a
+        LEFT JOIN user_real_info b ON a.id = b.user_id
+        ${ew.customSqlSegment}
+        order by a.create_at DESC
     </select>
     </select>
 
 
 
 
     <select id="selectUserList" resultType="org.dromara.business.domain.vo.UserVo">
     <select id="selectUserList" resultType="org.dromara.business.domain.vo.UserVo">
-        SELECT  id,
-                login_name,
-                login_pass,
-                phone,
-                create_at,
-                update_at,
-                sex,
-                email,
-                nick_name,
-                remark,
-                captcha,
-                avatar,
-                province,
-                city,
-                area,
-                place_detail,
-                register_ip,
-                register_device,
-                status,
-                is_locked,
-                last_login_time,
-                last_login_ip,
-                del_flag FROM user  ${ew.customSqlSegment}
+       SELECT
+        a.id,
+        a.login_name,
+        a.login_pass,
+        a.phone,
+        a.create_at,
+        a.update_at,
+        a.sex,
+        a.email,
+        a.nick_name,
+        a.remark,
+        a.captcha,
+        a.avatar,
+        a.province,
+        a.city,
+        a.area,
+        a.place_detail,
+        a.register_ip,
+        a.register_device,
+        a.status,
+
+        CASE
+        WHEN a.status = 0 THEN '禁用'
+        WHEN a.status = 1 THEN '启用'
+        ELSE ''
+        END AS statusText,
+
+        a.is_locked,
+        a.last_login_time,
+        a.last_login_ip,
+        a.del_flag,
+        b.real_name
+        FROM user a
+        LEFT JOIN user_real_info b ON a.id = b.user_id
+        ${ew.customSqlSegment}
+        order by a.create_at DESC
     </select>
     </select>
 
 
     <select id="selectVoByIdInfo" resultType="org.dromara.business.domain.vo.UserVo">
     <select id="selectVoByIdInfo" resultType="org.dromara.business.domain.vo.UserVo">
-        SELECT  id,
-                login_name,
-                login_pass,
-                phone,
-                create_at,
-                update_at,
-                sex,
-                email,
-                nick_name,
-                remark,
-                captcha,
-                avatar,
-                province,
-                city,
-                area,
-                place_detail,
-                register_ip,
-                register_device,
-                status,
-                is_locked,
-                last_login_time,
-                last_login_ip,
-                del_flag FROM user WHERE id =  #{id}
-    </select>
+       SELECT
+            a.id,
+            a.login_name,
+            a.login_pass,
+            a.phone,
+            a.create_at,
+            a.update_at,
+            a.sex,
+            a.email,
+            a.nick_name,
+            a.remark,
+            a.captcha,
+            a.avatar,
+            a.province,
+            a.city,
+            a.area,
+            a.place_detail,
+            a.register_ip,
+            a.register_device,
+            a.status,
+
+            CASE
+                WHEN a.status = 0 THEN '禁用'
+                WHEN a.status = 1 THEN '启用'
+                ELSE ''
+                END AS statusText,
+
+            a.is_locked,
+            a.last_login_time,
+            a.last_login_ip,
+            a.del_flag,
+            b.real_name
+        FROM user a
+        LEFT JOIN user_real_info b ON a.id = b.user_id WHERE  a.id =  #{id}  and a.del_flag=0
+   </select>
 
 
     <update id="updateUserById">
     <update id="updateUserById">
         UPDATE user
         UPDATE user