From 1be7538b48403b362186bf3c9c73686c04e7bdfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Mon, 16 Jun 2025 22:30:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9AuserRole=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/UserRoleController.java | 152 +++++++++++++----- .../common/system/entity/UserRole.java | 51 +++--- .../common/system/mapper/UserRoleMapper.java | 70 +++++--- .../system/mapper/xml/UserRoleMapper.xml | 89 ++++++---- .../common/system/param/UserRoleParam.java | 37 +++++ .../system/service/UserRoleService.java | 77 ++++++--- .../service/impl/UserRoleServiceImpl.java | 65 +++++--- .../com/gxwebsoft/generator/SysGenerator.java | 1 + 8 files changed, 383 insertions(+), 159 deletions(-) create mode 100644 src/main/java/com/gxwebsoft/common/system/param/UserRoleParam.java diff --git a/src/main/java/com/gxwebsoft/common/system/controller/UserRoleController.java b/src/main/java/com/gxwebsoft/common/system/controller/UserRoleController.java index 534a617..9385ece 100644 --- a/src/main/java/com/gxwebsoft/common/system/controller/UserRoleController.java +++ b/src/main/java/com/gxwebsoft/common/system/controller/UserRoleController.java @@ -1,57 +1,135 @@ package com.gxwebsoft.common.system.controller; -import cn.afterturn.easypoi.excel.ExcelImportUtil; -import cn.afterturn.easypoi.excel.entity.ImportParams; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserRoleService; +import com.gxwebsoft.common.system.entity.UserRole; +import com.gxwebsoft.common.system.param.UserRoleParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; import com.gxwebsoft.common.core.annotation.OperationLog; -import com.gxwebsoft.common.core.config.ConfigProperties; -import com.gxwebsoft.common.core.security.JwtSubject; -import com.gxwebsoft.common.core.security.JwtUtil; -import com.gxwebsoft.common.core.utils.CommonUtil; -import com.gxwebsoft.common.core.web.*; -import com.gxwebsoft.common.system.entity.*; -import com.gxwebsoft.common.system.param.UserImportParam; -import com.gxwebsoft.common.system.param.UserParam; -import com.gxwebsoft.common.system.result.LoginResult; -import com.gxwebsoft.common.system.service.*; import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import io.swagger.models.auth.In; -import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; -import java.math.BigDecimal; -import java.util.*; -import java.util.stream.Collectors; +import java.util.List; /** - * 用户控制器 + * 用户角色控制器 * - * @author WebSoft - * @since 2018-12-24 16:10:41 + * @author 科技小王子 + * @since 2025-06-16 20:39:53 */ -@Slf4j -@Api(tags = "用户角色") +@Api(tags = "用户角色管理") @RestController @RequestMapping("/api/system/user-role") public class UserRoleController extends BaseController { - @Resource - private UserRoleService userRoleService; + @Resource + private UserRoleService userRoleService; - @ApiOperation("查询角色下的用户") - @GetMapping("/user-list-in-role/{id}") - public ApiResult> userListInRole(@PathVariable Integer id) { - return success(userRoleService.listByRoleId(id)); + @ApiOperation("查询角色下的用户") + @GetMapping("/user-list-in-role/{id}") + public ApiResult> userListInRole(@PathVariable Integer id) { + return success(userRoleService.listByRoleId(id)); + } + + @ApiOperation("分页查询用户角色") + @GetMapping("/page") + public ApiResult> page(UserRoleParam param) { + // 使用关联查询 + return success(userRoleService.pageRel(param)); + } + + @ApiOperation("查询全部用户角色") + @GetMapping() + public ApiResult> list(UserRoleParam param) { + // 使用关联查询 + return success(userRoleService.listRel(param)); + } + + + @ApiOperation("根据id查询用户角色") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(userRoleService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:userRole:save')") + @OperationLog + @ApiOperation("添加用户角色") + @PostMapping() + public ApiResult save(@RequestBody UserRole userRole) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + userRole.setUserId(loginUser.getUserId()); } + if (userRoleService.save(userRole)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改用户角色") + @PutMapping() + public ApiResult update(@RequestBody UserRole userRole) { + final User loginUser = getLoginUser(); + if (loginUser == null) { + return fail("请先登录"); + } + if (userRoleService.updateById(userRole)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:userRole:remove')") + @OperationLog + @ApiOperation("删除用户角色") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userRoleService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:userRole:save')") + @OperationLog + @ApiOperation("批量添加用户角色") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userRoleService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:userRole:update')") + @OperationLog + @ApiOperation("批量修改用户角色") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userRoleService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:userRole:remove')") + @OperationLog + @ApiOperation("批量删除用户角色") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userRoleService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } } diff --git a/src/main/java/com/gxwebsoft/common/system/entity/UserRole.java b/src/main/java/com/gxwebsoft/common/system/entity/UserRole.java index ca12165..21632f4 100644 --- a/src/main/java/com/gxwebsoft/common/system/entity/UserRole.java +++ b/src/main/java/com/gxwebsoft/common/system/entity/UserRole.java @@ -1,49 +1,52 @@ package com.gxwebsoft.common.system.entity; -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 com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.time.LocalDateTime; +import java.io.Serializable; +import java.util.Date; + import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; - -import java.io.Serializable; -import java.util.Date; +import lombok.EqualsAndHashCode; /** * 用户角色 * - * @author WebSoft - * @since 2018-12-24 16:10:23 + * @author 科技小王子 + * @since 2025-06-16 20:39:53 */ @Data @ApiModel(description = "用户角色") @TableName("sys_user_role") public class UserRole implements Serializable { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - @ApiModelProperty("主键id") - @TableId(type = IdType.AUTO) - private Integer id; + @ApiModelProperty("主键id") + @TableId(type = IdType.AUTO) + private Integer id; - @ApiModelProperty("用户id") - private Integer userId; + @ApiModelProperty("用户id") + private Integer userId; - @ApiModelProperty("角色id") - private Integer roleId; + @ApiModelProperty("角色id") + private Integer roleId; - @ApiModelProperty("创建时间") - private Date createTime; + @ApiModelProperty("创建时间") + private Date createTime; - @ApiModelProperty("修改时间") - private Date updateTime; + @ApiModelProperty("修改时间") + private Date updateTime; - @ApiModelProperty("角色名称") - @TableField(exist = false) - private String roleName; + @ApiModelProperty("角色名称") + @TableField(exist = false) + private String roleName; - @ApiModelProperty("租户ID") - private Integer tenantId; + @ApiModelProperty("租户ID") + private Integer tenantId; } diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/UserRoleMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/UserRoleMapper.java index 51b38c8..71efd86 100644 --- a/src/main/java/com/gxwebsoft/common/system/mapper/UserRoleMapper.java +++ b/src/main/java/com/gxwebsoft/common/system/mapper/UserRoleMapper.java @@ -2,8 +2,10 @@ package com.gxwebsoft.common.system.mapper; import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.gxwebsoft.common.system.entity.Role; import com.gxwebsoft.common.system.entity.UserRole; +import com.gxwebsoft.common.system.param.UserRoleParam; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -11,35 +13,53 @@ import java.util.List; /** * 用户角色Mapper * - * @author WebSoft - * @since 2018-12-24 16:10:02 + * @author 科技小王子 + * @since 2025-06-16 20:39:53 */ public interface UserRoleMapper extends BaseMapper { - /** - * 批量添加用户角色 - * - * @param userId 用户id - * @param roleIds 角色id集合 - * @return int - */ - int insertBatch(@Param("userId") Integer userId, @Param("roleIds") List roleIds); + /** + * 批量添加用户角色 + * + * @param userId 用户id + * @param roleIds 角色id集合 + * @return int + */ + int insertBatch(@Param("userId") Integer userId, @Param("roleIds") List roleIds); - /** - * 根据用户id查询角色 - * - * @param userId 用户id - * @return List - */ - @InterceptorIgnore(tenantLine = "true") - List selectByUserId(@Param("userId") Integer userId); + /** + * 根据用户id查询角色 + * + * @param userId 用户id + * @return List + */ + @InterceptorIgnore(tenantLine = "true") + List selectByUserId(@Param("userId") Integer userId); - /** - * 批量根据用户id查询角色 - * - * @param userIds 用户id集合 - * @return List - */ - List selectByUserIds(@Param("userIds") List userIds); + /** + * 批量根据用户id查询角色 + * + * @param userIds 用户id集合 + * @return List + */ + List selectByUserIds(@Param("userIds") List userIds); + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserRoleParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserRoleParam param); } diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserRoleMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserRoleMapper.xml index 6b1c3e2..a5184a8 100644 --- a/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserRoleMapper.xml +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserRoleMapper.xml @@ -1,35 +1,66 @@ - - + + - - INSERT INTO sys_user_role(user_id, role_id) VALUES - - (#{userId}, #{roleId}) - - + + INSERT INTO sys_user_role(user_id, role_id) VALUES + + (#{userId}, #{roleId}) + + - + - + + + + + SELECT a.* + FROM sys_user_role a + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.role_id = #{param.roleId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/param/UserRoleParam.java b/src/main/java/com/gxwebsoft/common/system/param/UserRoleParam.java new file mode 100644 index 0000000..24f30dc --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/UserRoleParam.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户角色查询参数 + * + * @author 科技小王子 + * @since 2025-06-16 20:39:53 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserRoleParam对象", description = "用户角色查询参数") +public class UserRoleParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键id") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "用户id") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "角色id") + @QueryField(type = QueryType.EQ) + private Integer roleId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/UserRoleService.java b/src/main/java/com/gxwebsoft/common/system/service/UserRoleService.java index 49c37ff..4fecd69 100644 --- a/src/main/java/com/gxwebsoft/common/system/service/UserRoleService.java +++ b/src/main/java/com/gxwebsoft/common/system/service/UserRoleService.java @@ -1,43 +1,70 @@ package com.gxwebsoft.common.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; import com.gxwebsoft.common.system.entity.Role; import com.gxwebsoft.common.system.entity.UserRole; +import com.gxwebsoft.common.system.param.UserRoleParam; import java.util.List; /** * 用户角色Service * - * @author WebSoft - * @since 2018-12-24 16:10:35 + * @author 科技小王子 + * @since 2025-06-16 20:39:53 */ public interface UserRoleService extends IService { - /** - * 批量添加用户角色 - * - * @param userId 用户id - * @param roleIds 角色id集合 - * @return int - */ - int saveBatch(Integer userId, List roleIds); + /** + * 批量添加用户角色 + * + * @param userId 用户id + * @param roleIds 角色id集合 + * @return int + */ + int saveBatch(Integer userId, List roleIds); - /** - * 根据用户id查询角色 - * - * @param userId 用户id - * @return List - */ - List listByUserId(Integer userId); + /** + * 根据用户id查询角色 + * + * @param userId 用户id + * @return List + */ + List listByUserId(Integer userId); - /** - * 批量根据用户id查询角色 - * - * @param userIds 用户id集合 - * @return List - */ - List listByUserIds(List userIds); + /** + * 批量根据用户id查询角色 + * + * @param userIds 用户id集合 + * @return List + */ + List listByUserIds(List userIds); + + List listByRoleId(Integer roleId); + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserRoleParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserRoleParam param); + + /** + * 根据id查询 + * + * @param id 主键id + * @return UserRole + */ + UserRole getByIdRel(Integer id); - List listByRoleId(Integer roleId); } diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/UserRoleServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/UserRoleServiceImpl.java index df574dc..d7220c3 100644 --- a/src/main/java/com/gxwebsoft/common/system/service/impl/UserRoleServiceImpl.java +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/UserRoleServiceImpl.java @@ -3,9 +3,12 @@ package com.gxwebsoft.common.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gxwebsoft.common.system.entity.Role; -import com.gxwebsoft.common.system.entity.UserRole; import com.gxwebsoft.common.system.mapper.UserRoleMapper; import com.gxwebsoft.common.system.service.UserRoleService; +import com.gxwebsoft.common.system.entity.UserRole; +import com.gxwebsoft.common.system.param.UserRoleParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; import org.springframework.stereotype.Service; import java.util.List; @@ -13,30 +16,54 @@ import java.util.List; /** * 用户角色Service实现 * - * @author WebSoft - * @since 2018-12-24 16:10:36 + * @author 科技小王子 + * @since 2025-06-16 20:39:53 */ @Service public class UserRoleServiceImpl extends ServiceImpl implements UserRoleService { + @Override + public int saveBatch(Integer userId, List roleIds) { + return baseMapper.insertBatch(userId, roleIds); + } - @Override - public int saveBatch(Integer userId, List roleIds) { - return baseMapper.insertBatch(userId, roleIds); - } + @Override + public List listByUserId(Integer userId) { + return baseMapper.selectByUserId(userId); + } - @Override - public List listByUserId(Integer userId) { - return baseMapper.selectByUserId(userId); - } + @Override + public List listByUserIds(List userIds) { + return baseMapper.selectByUserIds(userIds); + } - @Override - public List listByUserIds(List userIds) { - return baseMapper.selectByUserIds(userIds); - } + @Override + public List listByRoleId(Integer roleId) { + return list(new LambdaQueryWrapper().eq(UserRole::getRoleId, roleId)); + } + + @Override + public PageResult pageRel(UserRoleParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(UserRoleParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserRole getByIdRel(Integer id) { + UserRoleParam param = new UserRoleParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } - @Override - public List listByRoleId(Integer roleId) { - return list(new LambdaQueryWrapper().eq(UserRole::getRoleId, roleId)); - } } diff --git a/src/test/java/com/gxwebsoft/generator/SysGenerator.java b/src/test/java/com/gxwebsoft/generator/SysGenerator.java index dedabe2..4b66085 100644 --- a/src/test/java/com/gxwebsoft/generator/SysGenerator.java +++ b/src/test/java/com/gxwebsoft/generator/SysGenerator.java @@ -52,6 +52,7 @@ public class SysGenerator { // "sys_domain", // "sys_company", // "sys_user_verify" +// "sys_user_role" }; // 需要去除的表前缀 private static final String[] TABLE_PREFIX = new String[]{