From 3b84f3d958a45858f74ba0f39fbfdbce4aa4cc2b Mon Sep 17 00:00:00 2001 From: James LIm Date: Tue, 8 Jul 2025 14:42:20 +0800 Subject: [PATCH] user perm list --- .../src/main/resources/application-dev.yml | 6 +-- .../src/main/resources/application.yml | 2 +- .../system/SysUsrPermController.java | 30 +++++++++++ .../org/dromara/system/domain/SysUsrPerm.java | 10 ++++ .../system/domain/bo/SysUsrPermBo.java | 14 +++++ .../system/domain/vo/SysUsrPermVo.java | 10 ++++ .../dromara/system/mapper/SysUserMapper.java | 6 +-- .../system/mapper/SysUsrPermMapper.java | 19 +++++++ .../system/service/ISysUserService.java | 2 + .../system/service/ISysUsrPermService.java | 14 +++++ .../service/impl/SysUserServiceImpl.java | 52 +++++++++++++------ .../service/impl/SysUsrPermServiceImpl.java | 40 ++++++++++++++ .../resources/mapper/system/SysUserMapper.xml | 33 +++++++----- .../mapper/system/SysUsrPermMapper.xml | 18 +++++++ 14 files changed, 221 insertions(+), 35 deletions(-) create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUsrPermController.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUsrPerm.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUsrPermBo.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUsrPermVo.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUsrPermMapper.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUsrPermService.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUsrPermServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUsrPermMapper.xml diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 5dd2e00fe..871b4ff31 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -49,7 +49,7 @@ spring: driverClassName: com.mysql.cj.jdbc.Driver # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562 # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) - url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://localhost:3306/ry_yue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true username: root password: root # # 从库数据源 @@ -98,13 +98,11 @@ spring: spring.data: redis: # 地址 - host: localhost + host: 127.0.0.1 # 端口,默认为6379 port: 6379 # 数据库索引 database: 0 - # redis 密码必须配置 - password: ruoyi123 # 连接超时时间 timeout: 10s # 是否开启ssl diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 03cb2f987..5a71f0347 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -1,7 +1,7 @@ # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 - port: 8080 + port: 8999 servlet: # 应用的访问路径 context-path: / diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUsrPermController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUsrPermController.java new file mode 100644 index 000000000..f51e66b3a --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUsrPermController.java @@ -0,0 +1,30 @@ +package org.dromara.system.controller.system; + + +import cn.dev33.satoken.annotation.SaCheckPermission; +import lombok.RequiredArgsConstructor; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.SysUserBo; +import org.dromara.system.domain.bo.SysUsrPermBo; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.domain.vo.SysUsrPermVo; +import org.dromara.system.service.ISysUsrPermService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/usrPerm") +public class SysUsrPermController extends BaseController { + private final ISysUsrPermService usrPerm; + @SaCheckPermission("system:user:list") + @GetMapping("/list") + public TableDataInfo list(SysUsrPermBo user, PageQuery pageQuery) { + return usrPerm.selectUsrPermList(user,pageQuery); + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUsrPerm.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUsrPerm.java new file mode 100644 index 000000000..9643be997 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUsrPerm.java @@ -0,0 +1,10 @@ +package org.dromara.system.domain; + + +import lombok.Data; + +@Data +public class SysUsrPerm { + private String userName; + private String userPerm; +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUsrPermBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUsrPermBo.java new file mode 100644 index 000000000..ade0ce498 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUsrPermBo.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + + +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.SysUsrPerm; + +@Data +@AutoMapper(target = SysUsrPerm.class, reverseConvertGenerate = false) +public class SysUsrPermBo { + private String userName; + private String userPerm; +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUsrPermVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUsrPermVo.java new file mode 100644 index 000000000..5b0b0162c --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUsrPermVo.java @@ -0,0 +1,10 @@ +package org.dromara.system.domain.vo; + +import lombok.Data; + +@Data +public class SysUsrPermVo { + private String userName; + private String userPerm; + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java index ddea2e2ac..bee793449 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java @@ -2,6 +2,7 @@ package org.dromara.system.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; @@ -32,9 +33,8 @@ public interface SysUserMapper extends BaseMapperPlus { @DataColumn(key = "deptName", value = "dept_id"), @DataColumn(key = "userName", value = "user_id") }) - default Page selectPageUserList(Page page, Wrapper queryWrapper) { - return this.selectVoPage(page, queryWrapper); - } + Page selectPageUserList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + /** * 查询用户列表,并进行数据权限控制 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUsrPermMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUsrPermMapper.java new file mode 100644 index 000000000..8b7695dff --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUsrPermMapper.java @@ -0,0 +1,19 @@ +package org.dromara.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.SysUsrPerm; +import org.dromara.system.domain.vo.SysUserExportVo; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.domain.vo.SysUsrPermVo; + +import java.util.List; + +public interface SysUsrPermMapper extends BaseMapperPlus { + Page selectUsrPermList(@Param("page") Page page,@Param(Constants.WRAPPER) Wrapper queryWrapper); +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java index 1fe554547..be50e1a1d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java @@ -3,8 +3,10 @@ package org.dromara.system.service; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.system.domain.bo.SysUserBo; +import org.dromara.system.domain.bo.SysUsrPermBo; import org.dromara.system.domain.vo.SysUserExportVo; import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.domain.vo.SysUsrPermVo; import java.util.List; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUsrPermService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUsrPermService.java new file mode 100644 index 000000000..37b75ecff --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUsrPermService.java @@ -0,0 +1,14 @@ +package org.dromara.system.service; + + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysUsrPermBo; +import org.dromara.system.domain.vo.SysUsrPermVo; + +import java.util.List; + +public interface ISysUsrPermService { + + TableDataInfo selectUsrPermList(SysUsrPermBo user, PageQuery pageQuery); +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index d673a2159..26e2239e1 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import jodd.util.StringUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.CacheNames; @@ -57,8 +58,12 @@ public class SysUserServiceImpl implements ISysUserService, UserService { @Override public TableDataInfo selectPageUserList(SysUserBo user, PageQuery pageQuery) { - Page page = baseMapper.selectPageUserList(pageQuery.build(), this.buildQueryWrapper(user)); - return TableDataInfo.build(page); + Wrapper wrapper = this.buildQueryWrapper(user, pageQuery); + + Page page = pageQuery.build(); + Page resultPage = baseMapper.selectPageUserList(page, wrapper); + + return TableDataInfo.build(resultPage); } /** @@ -87,30 +92,47 @@ public class SysUserServiceImpl implements ISysUserService, UserService { return baseMapper.selectUserExportList(wrapper); } - private Wrapper buildQueryWrapper(SysUserBo user) { + private Wrapper buildQueryWrapper(SysUserBo user, PageQuery pageQuery) { Map params = user.getParams(); - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.eq(SysUser::getDelFlag, SystemConstants.NORMAL) - .eq(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId()) - .in(StringUtils.isNotBlank(user.getUserIds()), SysUser::getUserId, StringUtils.splitTo(user.getUserIds(), Convert::toLong)) - .like(StringUtils.isNotBlank(user.getUserName()), SysUser::getUserName, user.getUserName()) - .like(StringUtils.isNotBlank(user.getNickName()), SysUser::getNickName, user.getNickName()) - .eq(StringUtils.isNotBlank(user.getStatus()), SysUser::getStatus, user.getStatus()) - .like(StringUtils.isNotBlank(user.getPhonenumber()), SysUser::getPhonenumber, user.getPhonenumber()) + QueryWrapper wrapper = Wrappers.query(); + + wrapper.eq("u.del_flag", SystemConstants.NORMAL) + .eq(ObjectUtil.isNotNull(user.getUserId()), "u.user_id", user.getUserId()) + .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) + .like(StringUtils.isNotBlank(user.getNickName()), "u.nick_name", user.getNickName()) + .eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus()) + .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber()) .between(params.get("beginTime") != null && params.get("endTime") != null, - SysUser::getCreateTime, params.get("beginTime"), params.get("endTime")) + "u.create_time", params.get("beginTime"), params.get("endTime")) .and(ObjectUtil.isNotNull(user.getDeptId()), w -> { List deptList = deptMapper.selectListByParentId(user.getDeptId()); List ids = StreamUtils.toList(deptList, SysDept::getDeptId); ids.add(user.getDeptId()); - w.in(SysUser::getDeptId, ids); - }).orderByAsc(SysUser::getUserId); + w.in("u.dept_id", ids); + }); + if (StringUtils.isNotBlank(user.getExcludeUserIds())) { - wrapper.notIn(SysUser::getUserId, StringUtils.splitList(user.getExcludeUserIds())); + wrapper.notIn("u.user_id", StringUtils.splitList(user.getExcludeUserIds())); + } + + if(StringUtils.isNotBlank(pageQuery.getOrderByColumn())) + { + String sortingDirection = StringUtils.equals("asc",pageQuery.getIsAsc()) ? "ASC": "DESC"; + String sortingFieldName = getFieldWithTableName(pageQuery.getOrderByColumn()); + wrapper.last("ORDER BY " + sortingFieldName + " " + sortingDirection); } return wrapper; } + private String getFieldWithTableName(String fieldName) { + String fieldTargetTableName = "u."; + if(StringUtil.equals(fieldName,"dept_name")) + { + fieldTargetTableName = "d."; + } + return fieldTargetTableName + fieldName; + } + /** * 根据条件分页查询已分配用户角色列表 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUsrPermServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUsrPermServiceImpl.java new file mode 100644 index 000000000..c6d3d61dd --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUsrPermServiceImpl.java @@ -0,0 +1,40 @@ +package org.dromara.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.SysUsrPerm; +import org.dromara.system.domain.bo.SysUsrPermBo; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.domain.vo.SysUsrPermVo; +import org.dromara.system.mapper.SysUserMapper; +import org.dromara.system.mapper.SysUsrPermMapper; +import org.dromara.system.service.ISysUsrPermService; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@RequiredArgsConstructor +@Service +public class SysUsrPermServiceImpl implements ISysUsrPermService { + + private final SysUsrPermMapper baseMapper; + @Override + public TableDataInfo selectUsrPermList(SysUsrPermBo user, PageQuery pageQuery){ + + QueryWrapper wrapper = Wrappers.query(); + wrapper.like(StringUtils.isNotBlank(user.getUserName()), "user_name", user.getUserName()) + .like(StringUtils.isNotBlank(user.getUserPerm()), "user_perm", user.getUserPerm() ); + + Page page = baseMapper.selectUsrPermList(pageQuery.build(), wrapper); + return TableDataInfo.build(page); + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 475c65952..d1f94c577 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -1,7 +1,7 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> @@ -11,31 +11,40 @@ + + diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUsrPermMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUsrPermMapper.xml new file mode 100644 index 000000000..2cf275547 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUsrPermMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + +