From 09d2eb87b8f690ea87bd4245b6aaa84e1f5573f4 Mon Sep 17 00:00:00 2001 From: xiang Date: Mon, 25 Aug 2025 23:54:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=A7=92=E8=89=B2=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=BC=80=E5=8F=91v1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/api/dto/req/role/RoleAddRequest.java | 30 +++++++++++++++- .../api/dto/req/role/RoleQueryRequest.java | 27 +++++++++++++++ .../api/dto/req/role/RoleUpdateRequest.java | 12 ++++++- .../dto/req/user/UserRoleUpdateRequest.java | 18 ++++++++++ .../auth/service/entity/XUserRole.java | 20 +++++++++++ .../repository/mapper/XRoleMapper.java | 1 + .../repository/mapper/XUserRoleMapper.java | 19 +++++++++++ .../service/impl/XRoleServiceImpl.java | 10 ++++-- .../service/impl/XUserServiceImpl.java | 23 ++++++++++++- .../resources/mapper/user/XRoleMapper.xml | 8 +++++ .../resources/mapper/user/XUserRoleMapper.xml | 34 +++++++++++++++++++ 11 files changed, 197 insertions(+), 5 deletions(-) create mode 100644 xs-service/src/main/java/com/xiang/xservice/auth/service/entity/XUserRole.java create mode 100644 xs-service/src/main/java/com/xiang/xservice/auth/service/repository/mapper/XUserRoleMapper.java create mode 100644 xs-service/src/main/resources/mapper/user/XUserRoleMapper.xml diff --git a/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/role/RoleAddRequest.java b/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/role/RoleAddRequest.java index 064f011..8363961 100644 --- a/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/role/RoleAddRequest.java +++ b/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/role/RoleAddRequest.java @@ -1,4 +1,32 @@ package com.xiang.xservice.auth.api.dto.req.role; -public class RoleAddRequest { +import com.xiang.xservice.basic.common.req.BaseRequest; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RoleAddRequest extends BaseRequest { + + /** + * 名称 + */ + private String name; + + /** + * 编码 + */ + private String code; + + /** + * 状态(0:禁用 1:启用) + */ + private Integer status; + + /** + * data_scope + */ + private Integer dataScope; } diff --git a/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/role/RoleQueryRequest.java b/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/role/RoleQueryRequest.java index 6620ad3..f31d5fb 100644 --- a/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/role/RoleQueryRequest.java +++ b/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/role/RoleQueryRequest.java @@ -1,4 +1,31 @@ package com.xiang.xservice.auth.api.dto.req.role; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor public class RoleQueryRequest { + /** + * 名称 + */ + private String name; + + /** + * 编码 + */ + private String code; + + /** + * 状态(0:禁用 1:启用) + */ + private Integer status; + + /** + * data_scope + */ + private Integer dataScope; } diff --git a/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/role/RoleUpdateRequest.java b/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/role/RoleUpdateRequest.java index a67f1f4..bb67e2b 100644 --- a/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/role/RoleUpdateRequest.java +++ b/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/role/RoleUpdateRequest.java @@ -1,4 +1,14 @@ package com.xiang.xservice.auth.api.dto.req.role; -public class RoleUpdateRequest { +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RoleUpdateRequest extends RoleAddRequest{ + private Long id; } diff --git a/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/user/UserRoleUpdateRequest.java b/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/user/UserRoleUpdateRequest.java index f40ff5d..de3dbb5 100644 --- a/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/user/UserRoleUpdateRequest.java +++ b/xs-api/src/main/java/com/xiang/xservice/auth/api/dto/req/user/UserRoleUpdateRequest.java @@ -1,4 +1,22 @@ package com.xiang.xservice.auth.api.dto.req.user; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor public class UserRoleUpdateRequest { + /** + * 用户id + */ + private Long userId; + + /** + * 角色id集合 + */ + private List roleIds; } diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/entity/XUserRole.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/entity/XUserRole.java new file mode 100644 index 0000000..ce3ac45 --- /dev/null +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/entity/XUserRole.java @@ -0,0 +1,20 @@ +package com.xiang.xservice.auth.service.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class XUserRole { + + /** + * 用户id + */ + private Long userId; + /** + * 角色id + */ + private Long roleId; +} diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/repository/mapper/XRoleMapper.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/repository/mapper/XRoleMapper.java index b111b11..a1dc582 100644 --- a/xs-service/src/main/java/com/xiang/xservice/auth/service/repository/mapper/XRoleMapper.java +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/repository/mapper/XRoleMapper.java @@ -17,5 +17,6 @@ public interface XRoleMapper { int delBatch(@Param("ids") List ids, @Param("time") LocalDateTime time, @Param("operator") String operator); List getRoleList(XRole record); XRole getRoleById(Long id); + List getRoleByIds(@Param("ids") List ids); } diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/repository/mapper/XUserRoleMapper.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/repository/mapper/XUserRoleMapper.java new file mode 100644 index 0000000..78a6644 --- /dev/null +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/repository/mapper/XUserRoleMapper.java @@ -0,0 +1,19 @@ +package com.xiang.xservice.auth.service.repository.mapper; + +import com.xiang.xservice.auth.service.entity.XUserRole; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +@Mapper +public interface XUserRoleMapper { + + int insertUserRole(@Param("list") List userRoles); + + int delByUserId(@Param("userId") Long userId); + + int delByRoleIds(@Param("list") List roleIds); +} diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/service/impl/XRoleServiceImpl.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/service/impl/XRoleServiceImpl.java index 1a9fa3d..748e825 100644 --- a/xs-service/src/main/java/com/xiang/xservice/auth/service/service/impl/XRoleServiceImpl.java +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/service/impl/XRoleServiceImpl.java @@ -40,12 +40,18 @@ public class XRoleServiceImpl implements RoleService { @Override public Boolean addRole(RoleAddRequest request) { - return roleMapper.insert(roleConvert.toDO(request)) > 0; + XRole role = roleConvert.toDO(request); + role.setCreateBy(request.getOperator()); + role.setUpdateBy(request.getOperator()); + return roleMapper.insert(role) > 0; } @Override public Boolean updateRole(RoleUpdateRequest request) { - return roleMapper.update(roleConvert.toDO(request)) > 0; + XRole role = roleConvert.toDO(request); + role.setCreateBy(request.getOperator()); + role.setUpdateBy(request.getOperator()); + return roleMapper.update(role) > 0; } @Override diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/service/impl/XUserServiceImpl.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/service/impl/XUserServiceImpl.java index 8b414f3..b7a09d6 100644 --- a/xs-service/src/main/java/com/xiang/xservice/auth/service/service/impl/XUserServiceImpl.java +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/service/impl/XUserServiceImpl.java @@ -14,8 +14,11 @@ import com.xiang.xservice.auth.api.dto.resp.RegisterResp; import com.xiang.xservice.auth.api.dto.resp.UserResp; import com.xiang.xservice.auth.service.convert.XUserConvert; import com.xiang.xservice.auth.service.entity.XUser; +import com.xiang.xservice.auth.service.entity.XUserRole; import com.xiang.xservice.auth.service.enums.UserStatusEnum; +import com.xiang.xservice.auth.service.repository.mapper.XRoleMapper; import com.xiang.xservice.auth.service.repository.mapper.XUserMapper; +import com.xiang.xservice.auth.service.repository.mapper.XUserRoleMapper; import com.xiang.xservice.auth.service.service.XUserService; import com.xiang.xservice.basic.enums.DelStatusEnum; import com.xiang.xservice.basic.exception.BusinessException; @@ -49,6 +52,8 @@ public class XUserServiceImpl implements XUserService { private final AuthenticationManager authenticationManager; private final PasswordEncoder passwordEncoder; private final XUserConvert userConvert; + private final XRoleMapper roleMapper; + private final XUserRoleMapper userRoleMapper; @Override public LoginResp login(LoginRequest request) { @@ -182,6 +187,22 @@ public class XUserServiceImpl implements XUserService { @Override public Boolean setUserRole(UserRoleUpdateRequest request) { - return null; + XUser user = userMapper.getUserById(request.getUserId()); + if (Objects.isNull(user)) { + log.error("查询用户信息不存在!用户id:{}", request.getUserId()); + throw new BusinessException(UserErrorCode.USER_NOT_EXISTS); + } + List params = Lists.newArrayList(); + for (Long roleId : request.getRoleIds()) { + XUserRole userRole = new XUserRole(); + userRole.setRoleId(roleId); + userRole.setUserId(request.getUserId()); + params.add(userRole); + } + if (CollectionUtils.isNotEmpty(params)) { + return userRoleMapper.insertUserRole(params) > 0; + + } + return Boolean.FALSE; } } diff --git a/xs-service/src/main/resources/mapper/user/XRoleMapper.xml b/xs-service/src/main/resources/mapper/user/XRoleMapper.xml index abfd071..49bb745 100644 --- a/xs-service/src/main/resources/mapper/user/XRoleMapper.xml +++ b/xs-service/src/main/resources/mapper/user/XRoleMapper.xml @@ -138,5 +138,13 @@ + \ No newline at end of file diff --git a/xs-service/src/main/resources/mapper/user/XUserRoleMapper.xml b/xs-service/src/main/resources/mapper/user/XUserRoleMapper.xml new file mode 100644 index 0000000..a35d674 --- /dev/null +++ b/xs-service/src/main/resources/mapper/user/XUserRoleMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + user_id, + role_id + + + insert into x_user_role(user_id, role_id) + values + + (#{item.userId}, #{item.roleId}) + + + + + delete from x_user_role where user_id = #{userId} + + + delete from x_user_role where role_id in + + #{id} + + + + + \ No newline at end of file