资源,角色,角色绑定资源,用户绑定角色
Some checks failed
local-test分支构建docker并发布运行 / Docker-Build (push) Has been cancelled
Some checks failed
local-test分支构建docker并发布运行 / Docker-Build (push) Has been cancelled
This commit is contained in:
parent
8867818832
commit
f25a536d55
@ -0,0 +1,82 @@
|
|||||||
|
package club.joylink.xiannccda.controller;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.dto.LoginInfoDTO;
|
||||||
|
import club.joylink.xiannccda.dto.auth.AuthApiPathQueryDTO;
|
||||||
|
import club.joylink.xiannccda.dto.auth.AuthRoleDTO;
|
||||||
|
import club.joylink.xiannccda.dto.auth.AuthRoleQueryDTO;
|
||||||
|
import club.joylink.xiannccda.dto.record.AlertRecordQueryDTO;
|
||||||
|
import club.joylink.xiannccda.entity.AlertRecord;
|
||||||
|
import club.joylink.xiannccda.entity.AuthApiPath;
|
||||||
|
import club.joylink.xiannccda.entity.AuthApiPath.AuthApi;
|
||||||
|
import club.joylink.xiannccda.entity.AuthRole;
|
||||||
|
import club.joylink.xiannccda.entity.User;
|
||||||
|
import club.joylink.xiannccda.entity.User.Register;
|
||||||
|
import club.joylink.xiannccda.repository.IAuthApiPathRepository;
|
||||||
|
import club.joylink.xiannccda.repository.IAuthRoleRepository;
|
||||||
|
import club.joylink.xiannccda.service.AuthService;
|
||||||
|
import club.joylink.xiannccda.service.UserService;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||||
|
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户管理接口
|
||||||
|
*
|
||||||
|
* @author walker-sheng
|
||||||
|
* @since 2023-06-01
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/role")
|
||||||
|
@Tag(name = "角色权限资源")
|
||||||
|
public class RoleAuthController {
|
||||||
|
|
||||||
|
private IAuthApiPathRepository authPathRepository;
|
||||||
|
private IAuthRoleRepository authRoleRepository;
|
||||||
|
private AuthService authService;
|
||||||
|
|
||||||
|
public RoleAuthController(IAuthApiPathRepository authPathRepository, IAuthRoleRepository authRoleRepository, AuthService authService) {
|
||||||
|
this.authPathRepository = authPathRepository;
|
||||||
|
this.authRoleRepository = authRoleRepository;
|
||||||
|
this.authService = authService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/res/page")
|
||||||
|
@SecurityRequirement(name = "jwt")
|
||||||
|
@Operation(summary = "分页api资源")
|
||||||
|
@ApiResponse(description = "api资源")
|
||||||
|
public Page<AuthApiPath> pageQuery(AuthApiPathQueryDTO queryDTO) {
|
||||||
|
return authPathRepository.page(queryDTO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/res/saveOrUpdate")
|
||||||
|
@Operation(summary = "保存编辑资源")
|
||||||
|
@ApiResponse(description = "保存编辑资源")
|
||||||
|
public void saveOrUpdate(@RequestBody @Validated(AuthApi.class) AuthApiPath apiPath) {
|
||||||
|
this.authPathRepository.saveOrUpdate(apiPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/role/page")
|
||||||
|
@SecurityRequirement(name = "jwt")
|
||||||
|
@Operation(summary = "角色分页")
|
||||||
|
@ApiResponse(description = "角色分页")
|
||||||
|
public Page<AuthRoleDTO> rulePage(AuthRoleQueryDTO queryDTO) {
|
||||||
|
return this.authRoleRepository.roleApiPage(queryDTO);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/role/saveOrUpdate")
|
||||||
|
@Operation(summary = "角色编辑")
|
||||||
|
@ApiResponse(description = "角色编辑")
|
||||||
|
public void roleSaveOrUpdate(@RequestBody AuthRoleDTO dto) {
|
||||||
|
this.authService.saveOrUpdate(dto);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,8 +1,12 @@
|
|||||||
package club.joylink.xiannccda.controller;
|
package club.joylink.xiannccda.controller;
|
||||||
|
|
||||||
import club.joylink.xiannccda.dto.LoginInfoDTO;
|
import club.joylink.xiannccda.dto.LoginInfoDTO;
|
||||||
|
import club.joylink.xiannccda.dto.user.UserDetailDTO;
|
||||||
|
import club.joylink.xiannccda.dto.user.UserEditDTO;
|
||||||
|
import club.joylink.xiannccda.dto.user.UserQueryDTO;
|
||||||
import club.joylink.xiannccda.entity.User;
|
import club.joylink.xiannccda.entity.User;
|
||||||
import club.joylink.xiannccda.entity.User.Register;
|
import club.joylink.xiannccda.entity.User.Register;
|
||||||
|
import club.joylink.xiannccda.repository.IUserRepository;
|
||||||
import club.joylink.xiannccda.service.UserService;
|
import club.joylink.xiannccda.service.UserService;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
@ -28,9 +32,11 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
public class UserController {
|
public class UserController {
|
||||||
|
|
||||||
private UserService userService;
|
private UserService userService;
|
||||||
|
private IUserRepository userRepository;
|
||||||
|
|
||||||
public UserController(UserService userService) {
|
public UserController(UserService userService, IUserRepository userRepository) {
|
||||||
this.userService = userService;
|
this.userService = userService;
|
||||||
|
this.userRepository = userRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/register")
|
@PostMapping("/register")
|
||||||
@ -47,12 +53,21 @@ public class UserController {
|
|||||||
return this.userService.login(loginInfo);
|
return this.userService.login(loginInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/edit")
|
||||||
|
@Operation(summary = "用户修改")
|
||||||
|
@ApiResponse(description = "用户修改")
|
||||||
|
public void editUser(@RequestBody UserEditDTO dto) {
|
||||||
|
this.userService.editUser(dto);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/paging")
|
@GetMapping("/paging")
|
||||||
@SecurityRequirement(name = "jwt")
|
@SecurityRequirement(name = "jwt")
|
||||||
@Operation(summary = "分页查询用户")
|
@Operation(summary = "分页查询用户")
|
||||||
@ApiResponse(description = "用户列表")
|
@ApiResponse(description = "用户列表")
|
||||||
public Page<User> pageQuery() {
|
public Page<UserDetailDTO> pageQuery(UserQueryDTO dto) {
|
||||||
return this.userService.pageQuery();
|
return this.userRepository.userRolePage(dto);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
package club.joylink.xiannccda.dto.auth;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.entity.AuthApiPath;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AuthApiPathQueryDTO extends PageDTO<AuthApiPath> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package club.joylink.xiannccda.dto.auth;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.entity.AuthRole;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AuthRoleDTO {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
private String name;
|
||||||
|
private List<Long> resList;
|
||||||
|
private String apiIds;
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package club.joylink.xiannccda.dto.auth;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.entity.AuthApiPath;
|
||||||
|
import club.joylink.xiannccda.entity.AuthRole;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AuthRoleQueryDTO extends PageDTO<AuthRole> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
package club.joylink.xiannccda.dto.user;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UserDetailDTO {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
private String name;
|
||||||
|
private String mobile;
|
||||||
|
private LocalDateTime registerTime;
|
||||||
|
private List<UserRoleDetail> roleList;
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
private String userRoles;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class UserRoleDetail {
|
||||||
|
|
||||||
|
public UserRoleDetail() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserRoleDetail(Long roleId, String roleName) {
|
||||||
|
this.roleId = roleId;
|
||||||
|
this.roleName = roleName;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Long roleId;
|
||||||
|
private String roleName;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package club.joylink.xiannccda.dto.user;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UserEditDTO {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private List<Long> roleList;
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
package club.joylink.xiannccda.dto.user;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.dto.protos.AlertConstProto.AlertType;
|
||||||
|
import club.joylink.xiannccda.entity.AlertRecord;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UserQueryDTO extends PageDTO<UserQueryDTO> {
|
||||||
|
|
||||||
|
}
|
47
src/main/java/club/joylink/xiannccda/entity/AuthApiPath.java
Normal file
47
src/main/java/club/joylink/xiannccda/entity/AuthApiPath.java
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
package club.joylink.xiannccda.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("auth_api_path")
|
||||||
|
@Schema(name = "authApiPath", description = "资源api")
|
||||||
|
public class AuthApiPath {
|
||||||
|
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
@Schema(description = "名字")
|
||||||
|
@NotBlank(message = "名字不能为空", groups = {AuthApi.class})
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Schema(description = "路径")
|
||||||
|
@NotBlank(message = "路径不能为空", groups = {AuthApi.class})
|
||||||
|
private String path;
|
||||||
|
|
||||||
|
@Schema(description = "method模式")
|
||||||
|
@NotBlank(message = "method模式不能为空", groups = {AuthApi.class})
|
||||||
|
private String method;
|
||||||
|
|
||||||
|
|
||||||
|
public static final String ID = "id";
|
||||||
|
|
||||||
|
public static final String NAME = "name";
|
||||||
|
|
||||||
|
public static final String PATH = "path";
|
||||||
|
|
||||||
|
public static final String METHOD = "method";
|
||||||
|
|
||||||
|
|
||||||
|
public interface AuthApi {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
30
src/main/java/club/joylink/xiannccda/entity/AuthRole.java
Normal file
30
src/main/java/club/joylink/xiannccda/entity/AuthRole.java
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package club.joylink.xiannccda.entity;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.entity.AuthApiPath.AuthApi;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("auth_role")
|
||||||
|
@Schema(name = "authRole", description = "用户角色")
|
||||||
|
public class AuthRole {
|
||||||
|
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "名字")
|
||||||
|
@NotBlank(message = "名字不能为空", groups = {AuthApi.class})
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public static final String ID = "id";
|
||||||
|
|
||||||
|
public static final String NAME = "name";
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
package club.joylink.xiannccda.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("auth_role_api_ref")
|
||||||
|
@Schema(name = "authRoleApiRef", description = "角色资源关联")
|
||||||
|
public class AuthRoleApiPathRef {
|
||||||
|
|
||||||
|
public AuthRoleApiPathRef(Long id, Long roleId, Long apiId) {
|
||||||
|
this.id = id;
|
||||||
|
this.roleId = roleId;
|
||||||
|
this.apiId = apiId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AuthRoleApiPathRef(Long roleId, Long apiId) {
|
||||||
|
this.roleId = roleId;
|
||||||
|
this.apiId = apiId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AuthRoleApiPathRef() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
@Schema(description = "名字")
|
||||||
|
private Long roleId;
|
||||||
|
@Schema(description = "名字")
|
||||||
|
private Long apiId;
|
||||||
|
|
||||||
|
public static final String ID = "id";
|
||||||
|
|
||||||
|
public static final String ROLEID = "role_id";
|
||||||
|
public static final String APIID = "api_id";
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
package club.joylink.xiannccda.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("auth_role_user_ref")
|
||||||
|
@Schema(name = "authRoleUserRef", description = "用户角色关联")
|
||||||
|
public class AuthRoleUserRef {
|
||||||
|
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
@Schema(description = "角色id")
|
||||||
|
private Long roleId;
|
||||||
|
@Schema(description = "用户id")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
public AuthRoleUserRef(Long roleId, Long userId) {
|
||||||
|
this.roleId = roleId;
|
||||||
|
this.userId = userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AuthRoleUserRef() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final String ID = "id";
|
||||||
|
|
||||||
|
public static final String ROLEID = "role_id";
|
||||||
|
public static final String APIID = "user_id";
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package club.joylink.xiannccda.mapper;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.entity.AuthApiPath;
|
||||||
|
import club.joylink.xiannccda.entity.RelieveTimeShere;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author walker-sheng
|
||||||
|
* @since 2023-10-19
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface AuthApiPathMapper extends BaseMapper<AuthApiPath> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package club.joylink.xiannccda.mapper;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.entity.AuthRole;
|
||||||
|
import club.joylink.xiannccda.entity.AuthRoleApiPathRef;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author walker-sheng
|
||||||
|
* @since 2023-10-19
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface AuthRoleApiRefMapper extends BaseMapper<AuthRoleApiPathRef> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package club.joylink.xiannccda.mapper;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.dto.auth.AuthRoleDTO;
|
||||||
|
import club.joylink.xiannccda.dto.auth.AuthRoleQueryDTO;
|
||||||
|
import club.joylink.xiannccda.entity.AuthApiPath;
|
||||||
|
import club.joylink.xiannccda.entity.AuthRole;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author walker-sheng
|
||||||
|
* @since 2023-10-19
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface AuthRoleMapper extends BaseMapper<AuthRole> {
|
||||||
|
|
||||||
|
Page<AuthRoleDTO> queryRole(AuthRoleQueryDTO dto);
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package club.joylink.xiannccda.mapper;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.entity.AuthRoleApiPathRef;
|
||||||
|
import club.joylink.xiannccda.entity.AuthRoleUserRef;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author walker-sheng
|
||||||
|
* @since 2023-10-19
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface AuthRoleUserRefMapper extends BaseMapper<AuthRoleUserRef> {
|
||||||
|
|
||||||
|
}
|
@ -1,7 +1,10 @@
|
|||||||
package club.joylink.xiannccda.mapper;
|
package club.joylink.xiannccda.mapper;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.dto.user.UserDetailDTO;
|
||||||
|
import club.joylink.xiannccda.dto.user.UserQueryDTO;
|
||||||
import club.joylink.xiannccda.entity.User;
|
import club.joylink.xiannccda.entity.User;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -15,4 +18,5 @@ import org.apache.ibatis.annotations.Mapper;
|
|||||||
@Mapper
|
@Mapper
|
||||||
public interface UserMapper extends BaseMapper<User> {
|
public interface UserMapper extends BaseMapper<User> {
|
||||||
|
|
||||||
|
Page<UserDetailDTO> detailQuery(UserQueryDTO dto);
|
||||||
}
|
}
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
||||||
<mapper namespace="club.joylink.xiannccda.mapper.UserMapper">
|
|
||||||
|
|
||||||
<!-- 通用查询映射结果 -->
|
|
||||||
<resultMap id="BaseResultMap" type="club.joylink.xiannccda.entity.User">
|
|
||||||
<id column="id" property="id" />
|
|
||||||
<result column="name" property="name" />
|
|
||||||
<result column="mobile" property="mobile" />
|
|
||||||
<result column="password" property="password" />
|
|
||||||
<result column="register_time" property="registerTime" />
|
|
||||||
</resultMap>
|
|
||||||
|
|
||||||
<!-- 通用查询结果列 -->
|
|
||||||
<sql id="Base_Column_List">
|
|
||||||
id, name, mobile, password, register_time
|
|
||||||
</sql>
|
|
||||||
|
|
||||||
</mapper>
|
|
@ -0,0 +1,21 @@
|
|||||||
|
package club.joylink.xiannccda.repository;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.dto.auth.AuthApiPathQueryDTO;
|
||||||
|
import club.joylink.xiannccda.entity.AuthApiPath;
|
||||||
|
import club.joylink.xiannccda.entity.User;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 用户 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author walker-sheng
|
||||||
|
* @since 2023-06-01
|
||||||
|
*/
|
||||||
|
public interface IAuthApiPathRepository extends IService<AuthApiPath> {
|
||||||
|
|
||||||
|
Page<AuthApiPath> page(AuthApiPathQueryDTO dto);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package club.joylink.xiannccda.repository;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.entity.AuthRole;
|
||||||
|
import club.joylink.xiannccda.entity.AuthRoleApiPathRef;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 用户 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author walker-sheng
|
||||||
|
* @since 2023-06-01
|
||||||
|
*/
|
||||||
|
public interface IAuthRoleApiRefRepository extends IService<AuthRoleApiPathRef> {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package club.joylink.xiannccda.repository;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.dto.auth.AuthApiPathQueryDTO;
|
||||||
|
import club.joylink.xiannccda.dto.auth.AuthRoleDTO;
|
||||||
|
import club.joylink.xiannccda.dto.auth.AuthRoleQueryDTO;
|
||||||
|
import club.joylink.xiannccda.entity.AuthApiPath;
|
||||||
|
import club.joylink.xiannccda.entity.AuthRole;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 用户 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author walker-sheng
|
||||||
|
* @since 2023-06-01
|
||||||
|
*/
|
||||||
|
public interface IAuthRoleRepository extends IService<AuthRole> {
|
||||||
|
|
||||||
|
Page<AuthRoleDTO> roleApiPage(AuthRoleQueryDTO role);
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package club.joylink.xiannccda.repository;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.entity.AuthRoleApiPathRef;
|
||||||
|
import club.joylink.xiannccda.entity.AuthRoleUserRef;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 用户 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author walker-sheng
|
||||||
|
* @since 2023-06-01
|
||||||
|
*/
|
||||||
|
public interface IAuthRoleUserRefRepository extends IService<AuthRoleUserRef> {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,6 +1,9 @@
|
|||||||
package club.joylink.xiannccda.repository;
|
package club.joylink.xiannccda.repository;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.dto.user.UserDetailDTO;
|
||||||
|
import club.joylink.xiannccda.dto.user.UserQueryDTO;
|
||||||
import club.joylink.xiannccda.entity.User;
|
import club.joylink.xiannccda.entity.User;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
*/
|
*/
|
||||||
public interface IUserRepository extends IService<User> {
|
public interface IUserRepository extends IService<User> {
|
||||||
|
|
||||||
|
Page<UserDetailDTO> userRolePage(UserQueryDTO dto);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
package club.joylink.xiannccda.repository.impl;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.dto.auth.AuthApiPathQueryDTO;
|
||||||
|
import club.joylink.xiannccda.entity.AlertRecord;
|
||||||
|
import club.joylink.xiannccda.entity.AuthApiPath;
|
||||||
|
import club.joylink.xiannccda.mapper.AuthApiPathMapper;
|
||||||
|
import club.joylink.xiannccda.repository.IAuthApiPathRepository;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 用户 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author walker-sheng
|
||||||
|
* @since 2023-06-01
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class AuthApiPathRepository extends ServiceImpl<AuthApiPathMapper, AuthApiPath> implements IAuthApiPathRepository {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<AuthApiPath> page(AuthApiPathQueryDTO dto) {
|
||||||
|
LambdaQueryWrapper<AuthApiPath> queryWrapper = Wrappers.lambdaQuery(AuthApiPath.class);
|
||||||
|
return this.page(dto, queryWrapper);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package club.joylink.xiannccda.repository.impl;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.entity.AuthRole;
|
||||||
|
import club.joylink.xiannccda.entity.AuthRoleApiPathRef;
|
||||||
|
import club.joylink.xiannccda.mapper.AuthRoleApiRefMapper;
|
||||||
|
import club.joylink.xiannccda.mapper.AuthRoleMapper;
|
||||||
|
import club.joylink.xiannccda.repository.IAuthRoleApiRefRepository;
|
||||||
|
import club.joylink.xiannccda.repository.IAuthRoleRepository;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 用户 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author walker-sheng
|
||||||
|
* @since 2023-06-01
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class AuthRoleApiRefRepository extends ServiceImpl<AuthRoleApiRefMapper, AuthRoleApiPathRef> implements IAuthRoleApiRefRepository {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package club.joylink.xiannccda.repository.impl;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.dto.auth.AuthRoleDTO;
|
||||||
|
import club.joylink.xiannccda.dto.auth.AuthRoleQueryDTO;
|
||||||
|
import club.joylink.xiannccda.entity.AuthRole;
|
||||||
|
import club.joylink.xiannccda.mapper.AuthRoleMapper;
|
||||||
|
import club.joylink.xiannccda.repository.IAuthRoleRepository;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 用户 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author walker-sheng
|
||||||
|
* @since 2023-06-01
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class AuthRoleRepository extends ServiceImpl<AuthRoleMapper, AuthRole> implements IAuthRoleRepository {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<AuthRoleDTO> roleApiPage(AuthRoleQueryDTO role) {
|
||||||
|
Page<AuthRoleDTO> page = this.baseMapper.queryRole(role);
|
||||||
|
page.getRecords().forEach(d -> {
|
||||||
|
if (StringUtils.isNotEmpty(d.getApiIds())) {
|
||||||
|
List<Long> refList = Arrays.stream(d.getApiIds().split(",")).map(Long::valueOf).toList();
|
||||||
|
d.setResList(refList);
|
||||||
|
d.setApiIds(null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return page;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package club.joylink.xiannccda.repository.impl;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.entity.AuthRoleApiPathRef;
|
||||||
|
import club.joylink.xiannccda.entity.AuthRoleUserRef;
|
||||||
|
import club.joylink.xiannccda.mapper.AuthRoleApiRefMapper;
|
||||||
|
import club.joylink.xiannccda.mapper.AuthRoleUserRefMapper;
|
||||||
|
import club.joylink.xiannccda.repository.IAuthRoleApiRefRepository;
|
||||||
|
import club.joylink.xiannccda.repository.IAuthRoleUserRefRepository;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 用户 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author walker-sheng
|
||||||
|
* @since 2023-06-01
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class AuthRoleUserRefRepository extends ServiceImpl<AuthRoleUserRefMapper, AuthRoleUserRef> implements IAuthRoleUserRefRepository {
|
||||||
|
|
||||||
|
}
|
@ -1,9 +1,17 @@
|
|||||||
package club.joylink.xiannccda.repository.impl;
|
package club.joylink.xiannccda.repository.impl;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.dto.user.UserDetailDTO;
|
||||||
|
import club.joylink.xiannccda.dto.user.UserDetailDTO.UserRoleDetail;
|
||||||
|
import club.joylink.xiannccda.dto.user.UserQueryDTO;
|
||||||
import club.joylink.xiannccda.entity.User;
|
import club.joylink.xiannccda.entity.User;
|
||||||
import club.joylink.xiannccda.mapper.UserMapper;
|
import club.joylink.xiannccda.mapper.UserMapper;
|
||||||
import club.joylink.xiannccda.repository.IUserRepository;
|
import club.joylink.xiannccda.repository.IUserRepository;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -17,4 +25,18 @@ import org.springframework.stereotype.Service;
|
|||||||
@Service
|
@Service
|
||||||
public class UserRepository extends ServiceImpl<UserMapper, User> implements IUserRepository {
|
public class UserRepository extends ServiceImpl<UserMapper, User> implements IUserRepository {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<UserDetailDTO> userRolePage(UserQueryDTO dto) {
|
||||||
|
Page<UserDetailDTO> page = this.baseMapper.detailQuery(dto);
|
||||||
|
for (UserDetailDTO record : page.getRecords()) {
|
||||||
|
List<UserRoleDetail> userRoleList = Lists.newArrayList();
|
||||||
|
Arrays.stream(StringUtils.split(record.getUserRoles(), ',')).forEach(d -> {
|
||||||
|
String[] idName = StringUtils.split(d, '|');
|
||||||
|
userRoleList.add(new UserRoleDetail(Long.valueOf(idName[0]), idName[1]));
|
||||||
|
});
|
||||||
|
record.setRoleList(userRoleList);
|
||||||
|
record.setUserRoles(null);
|
||||||
|
}
|
||||||
|
return page;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,67 @@
|
|||||||
|
package club.joylink.xiannccda.service;
|
||||||
|
|
||||||
|
import club.joylink.xiannccda.dto.LoginInfoDTO;
|
||||||
|
import club.joylink.xiannccda.dto.auth.AuthRoleDTO;
|
||||||
|
import club.joylink.xiannccda.entity.AuthRole;
|
||||||
|
import club.joylink.xiannccda.entity.AuthRoleApiPathRef;
|
||||||
|
import club.joylink.xiannccda.entity.User;
|
||||||
|
import club.joylink.xiannccda.exception.BusinessExceptionAssertEnum;
|
||||||
|
import club.joylink.xiannccda.repository.IAuthApiPathRepository;
|
||||||
|
import club.joylink.xiannccda.repository.IAuthRoleApiRefRepository;
|
||||||
|
import club.joylink.xiannccda.repository.IAuthRoleRepository;
|
||||||
|
import club.joylink.xiannccda.repository.IUserRepository;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import org.springframework.security.oauth2.jwt.JwtClaimsSet;
|
||||||
|
import org.springframework.security.oauth2.jwt.JwtEncoder;
|
||||||
|
import org.springframework.security.oauth2.jwt.JwtEncoderParameters;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class AuthService {
|
||||||
|
|
||||||
|
IAuthRoleRepository authRoleRepository;
|
||||||
|
IAuthRoleApiRefRepository authRoleApiRefRepository;
|
||||||
|
|
||||||
|
public AuthService(IAuthRoleRepository authRoleRepository, IAuthRoleApiRefRepository authRoleApiRefRepository) {
|
||||||
|
this.authRoleRepository = authRoleRepository;
|
||||||
|
this.authRoleApiRefRepository = authRoleApiRefRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void saveOrUpdate(AuthRoleDTO dto) {
|
||||||
|
if (Objects.isNull(dto.getId())) {
|
||||||
|
AuthRole r = new AuthRole();
|
||||||
|
r.setName(dto.getName());
|
||||||
|
this.authRoleRepository.save(r);
|
||||||
|
this.batchSave(dto.getResList(), dto.getId());
|
||||||
|
} else {
|
||||||
|
AuthRole r = this.authRoleRepository.getById(dto.getId());
|
||||||
|
BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertTrue(Objects.nonNull(r));
|
||||||
|
r.setName(dto.getName());
|
||||||
|
this.authRoleRepository.updateById(r);
|
||||||
|
this.batchSave(dto.getResList(), dto.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void batchSave(List<Long> apiList, Long roleId) {
|
||||||
|
if (Objects.nonNull(roleId)) {
|
||||||
|
LambdaQueryWrapper<AuthRoleApiPathRef> wrapper = Wrappers.lambdaQuery(AuthRoleApiPathRef.class);
|
||||||
|
wrapper.eq(AuthRoleApiPathRef::getRoleId, roleId);
|
||||||
|
this.authRoleApiRefRepository.remove(wrapper);
|
||||||
|
}
|
||||||
|
if (CollectionUtils.isNotEmpty(apiList)) {
|
||||||
|
List<AuthRoleApiPathRef> refList = apiList.stream().map(d -> new AuthRoleApiPathRef(roleId, d)).collect(Collectors.toList());
|
||||||
|
this.authRoleApiRefRepository.saveBatch(refList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,28 +1,39 @@
|
|||||||
package club.joylink.xiannccda.service;
|
package club.joylink.xiannccda.service;
|
||||||
|
|
||||||
import club.joylink.xiannccda.dto.LoginInfoDTO;
|
import club.joylink.xiannccda.dto.LoginInfoDTO;
|
||||||
|
import club.joylink.xiannccda.dto.user.UserEditDTO;
|
||||||
|
import club.joylink.xiannccda.dto.user.UserQueryDTO;
|
||||||
|
import club.joylink.xiannccda.entity.AuthRoleUserRef;
|
||||||
import club.joylink.xiannccda.entity.User;
|
import club.joylink.xiannccda.entity.User;
|
||||||
import club.joylink.xiannccda.exception.BusinessExceptionAssertEnum;
|
import club.joylink.xiannccda.exception.BusinessExceptionAssertEnum;
|
||||||
|
import club.joylink.xiannccda.repository.IAuthRoleUserRefRepository;
|
||||||
import club.joylink.xiannccda.repository.IUserRepository;
|
import club.joylink.xiannccda.repository.IUserRepository;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import org.springframework.security.oauth2.jwt.JwtClaimsSet;
|
import org.springframework.security.oauth2.jwt.JwtClaimsSet;
|
||||||
import org.springframework.security.oauth2.jwt.JwtEncoder;
|
import org.springframework.security.oauth2.jwt.JwtEncoder;
|
||||||
import org.springframework.security.oauth2.jwt.JwtEncoderParameters;
|
import org.springframework.security.oauth2.jwt.JwtEncoderParameters;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class UserService {
|
public class UserService {
|
||||||
|
|
||||||
final IUserRepository userRepository;
|
final IUserRepository userRepository;
|
||||||
final JwtEncoder jwtEncoder;
|
final JwtEncoder jwtEncoder;
|
||||||
|
final IAuthRoleUserRefRepository authRoleUserRefRepository;
|
||||||
|
|
||||||
public UserService(IUserRepository userRepository, JwtEncoder jwtEncoder) {
|
public UserService(IUserRepository userRepository, JwtEncoder jwtEncoder, IAuthRoleUserRefRepository authRoleUserRefRepository) {
|
||||||
this.userRepository = userRepository;
|
this.userRepository = userRepository;
|
||||||
this.jwtEncoder = jwtEncoder;
|
this.jwtEncoder = jwtEncoder;
|
||||||
|
this.authRoleUserRefRepository = authRoleUserRefRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String register(User user) {
|
public String register(User user) {
|
||||||
@ -55,9 +66,16 @@ public class UserService {
|
|||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Page<User> pageQuery() {
|
@Transactional
|
||||||
Page<User> page = PageDTO.of(1, 10);
|
public void editUser(UserEditDTO dto) {
|
||||||
Page<User> userPage = this.userRepository.page(page, Wrappers.lambdaQuery());
|
User user = this.userRepository.getById(dto.getId());
|
||||||
return userPage;
|
BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertTrue(Objects.nonNull(user));
|
||||||
|
LambdaQueryWrapper<AuthRoleUserRef> q = Wrappers.lambdaQuery(AuthRoleUserRef.class);
|
||||||
|
q.eq(AuthRoleUserRef::getUserId, dto.getId());
|
||||||
|
this.authRoleUserRefRepository.remove(q);
|
||||||
|
if (CollectionUtils.isNotEmpty(dto.getRoleList())) {
|
||||||
|
List<AuthRoleUserRef> refList = dto.getRoleList().stream().map(d -> new AuthRoleUserRef(d, dto.getId())).toList();
|
||||||
|
this.authRoleUserRefRepository.saveBatch(refList);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
21
src/main/resources/mybatis/mapper/AuthRole.xml
Normal file
21
src/main/resources/mybatis/mapper/AuthRole.xml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="club.joylink.xiannccda.mapper.AuthRoleMapper">
|
||||||
|
|
||||||
|
<!-- 通用查询映射结果 -->
|
||||||
|
<resultMap id="BaseResultMap" type="club.joylink.xiannccda.entity.AuthRole">
|
||||||
|
<id column="id" property="id"/>
|
||||||
|
<result column="name" property="name"/>
|
||||||
|
</resultMap>
|
||||||
|
<!-- 通用查询结果列 -->
|
||||||
|
<sql id="Base_Column_List">
|
||||||
|
id
|
||||||
|
, name
|
||||||
|
</sql>
|
||||||
|
<select id="queryRole" resultType="club.joylink.xiannccda.dto.auth.AuthRoleDTO">
|
||||||
|
select a.id, A.name, B.api_ids
|
||||||
|
from auth_role A
|
||||||
|
left join (select role_id, group_concat(api_id) as api_ids from auth_role_api_ref GROUP BY role_id) B
|
||||||
|
on A.id = B.role_id
|
||||||
|
</select>
|
||||||
|
</mapper>
|
29
src/main/resources/mybatis/mapper/UserMapper.xml
Normal file
29
src/main/resources/mybatis/mapper/UserMapper.xml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="club.joylink.xiannccda.mapper.UserMapper">
|
||||||
|
|
||||||
|
<!-- 通用查询映射结果 -->
|
||||||
|
<resultMap id="BaseResultMap" type="club.joylink.xiannccda.entity.User">
|
||||||
|
<id column="id" property="id"/>
|
||||||
|
<result column="name" property="name"/>
|
||||||
|
<result column="mobile" property="mobile"/>
|
||||||
|
<result column="password" property="password"/>
|
||||||
|
<result column="register_time" property="registerTime"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<!-- 通用查询结果列 -->
|
||||||
|
<sql id="Base_Column_List">
|
||||||
|
id
|
||||||
|
, name, mobile, password, register_time
|
||||||
|
</sql>
|
||||||
|
<select id="detailQuery" resultType="club.joylink.xiannccda.dto.user.UserDetailDTO">
|
||||||
|
select A.id, A.name, A.mobile, A.register_time, B.user_roles
|
||||||
|
from user A
|
||||||
|
left join (select A.user_id, GROUP_CONCAT(A.role_id, '|', B.`name`) as user_roles
|
||||||
|
from auth_role_user_ref A
|
||||||
|
left join auth_role B on A.role_id = B.id
|
||||||
|
GROUP BY user_id) B
|
||||||
|
on A.id = B.user_id
|
||||||
|
where 1 = 1
|
||||||
|
</select>
|
||||||
|
</mapper>
|
@ -48,7 +48,7 @@ public class BigDataReq extends MessageRequest {
|
|||||||
* <p>
|
* <p>
|
||||||
* 实际数据 发送 0 = 开始,1=传输中,2=结束
|
* 实际数据 发送 0 = 开始,1=传输中,2=结束
|
||||||
*/
|
*/
|
||||||
private ScheduleSubIdType subId = ScheduleSubIdType.RUNING;
|
private ScheduleSubIdType subId = ScheduleSubIdType.HISTORY_RUN;
|
||||||
/**
|
/**
|
||||||
* 表号(9)
|
* 表号(9)
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user