Commit d462fea8 by zhangxingmin

租户接口

parent e80fef88
# Java
*.class
*.jar
target/
build/
out/
# Maven
pom.xml.versionsBackup
dependency-reduced-pom.xml
pom.properties
# IDE
.idea/
*.iml
*.ipr
*.iws
.vscode/
bin/
.settings/
.project
.classpath
.factorypath
# System
.DS_Store
Thumbs.db
# Logs
*.log
logs/
# Backup files
*~
*.bak
*.orig
*.swp
# 您的自定义文件
*.lst
ProjectStorage.xml
spring:
profiles:
active: test
# active: '@spring.profiles.active@'
---
spring:
profiles: dev
main:
allow-bean-definition-overriding: true
allow-circular-references: true
cloud:
nacos:
# 配置中心
config:
# 命名空间id(此处不用public,因public初始化的空间, id为空) 4e237601-cea8-414d-b7b9-d7adc8cbcf95
namespace: 22f9d61e-9011-4d45-88cb-24f9857e3eec
# nacos的ip地址和端口 120.79.64.17:10848
server-addr: 127.0.0.1:8848
# 这个就表示 在我们nacos命名空间id为 dev中 有一个data-id 为 demo-service.yml 的配置文件 读取这个里面的配置
file-extension: yml
config-retry-time: 300000
# 共享配置, 可以把公共配置放在同个命名空间下,然后创建一个 common.yml 文件 ,里面可以放共用的配置
shared-configs[0]:
dataId: linkwe-common.yml
refresh: true
# 发布到注册中心 (如果没有使用可以不配)
discovery:
# 命名空间id(此处不用public,因public初始化的空间, id为空)
namespace: ${spring.cloud.nacos.config.namespace}
# nacos的ip地址和端口
server-addr: ${spring.cloud.nacos.config.server-addr}
---
spring:
profiles: test
main:
allow-bean-definition-overriding: true
allow-circular-references: true
cloud:
nacos:
# 配置中心
config:
# 命名空间id(此处不用public,因public初始化的空间, id为空)
namespace: d2446fdc-2683-4c82-aa86-61242c61b5cd
# nacos的ip地址和端口
server-addr: 139.224.145.34:8848
# 这个就表示 在我们nacos命名空间id为 dev中 有一个data-id 为 demo-service.yml 的配置文件 读取这个里面的配置
file-extension: yml
config-retry-time: 300000
# 共享配置, 可以把公共配置放在同个命名空间下,然后创建一个 common.yml 文件 ,里面可以放共用的配置
shared-configs[0]:
dataId: yd-common.yml
refresh: true
# 发布到注册中心 (如果没有使用可以不配)
discovery:
# 命名空间id(此处不用public,因public初始化的空间, id为空)
namespace: ${spring.cloud.nacos.config.namespace}
# nacos的ip地址和端口
server-addr: ${spring.cloud.nacos.config.server-addr}
---
spring:
profiles: prod
main:
allow-bean-definition-overriding: true
allow-circular-references: true
cloud:
nacos:
# 配置中心
config:
# 命名空间id(此处不用public,因public初始化的空间, id为空)
namespace: ewscrm
# nacos的ip地址和端口
server-addr: 127.0.0.1:8848
# 这个就表示 在我们nacos命名空间id为 dev中 有一个data-id 为 demo-service.yml 的配置文件 读取这个里面的配置
file-extension: yml
config-retry-time: 300000
# 共享配置, 可以把公共配置放在同个命名空间下,然后创建一个 common.yml 文件 ,里面可以放共用的配置
shared-configs[0]:
dataId: yd-common.yml
refresh: true
# 发布到注册中心 (如果没有使用可以不配)
discovery:
# 命名空间id(此处不用public,因public初始化的空间, id为空)
namespace: ${spring.cloud.nacos.config.namespace}
# nacos的ip地址和端口
server-addr: ${spring.cloud.nacos.config.server-addr}
......@@ -19,6 +19,7 @@
<modules>
<module>yd-user-api</module>
<module>yd-user-service</module>
<module>yd-user-feign</module>
</modules>
<dependencyManagement>
......@@ -29,6 +30,11 @@
<artifactId>yd-user-service</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-user-feign</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
......
......@@ -39,34 +39,24 @@
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- 阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<!-- 实体类模块 -->
<!--对于bootstrap.properties/bootstrap.yaml配置文件(我们合起来成为Bootstrap配置文件)的支持,需要导入如下的依赖 -->
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-user-service</artifactId>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!-- 认证模块 -->
<!-- 实体类模块 -->
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-auth-core</artifactId>
<version>${project.version}</version>
<artifactId>yd-user-service</artifactId>
</dependency>
</dependencies>
</project>
......@@ -6,14 +6,14 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@MapperScan("com.yd.**.mapper")
@EnableFeignClients(basePackages = "com.yd.user.api.**")
@SpringBootApplication(scanBasePackages = "com.yd")
@MapperScan("com.yd.user.service.dao")
@EnableFeignClients(basePackages = "com.yd")
public class UserApiApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(UserApiApplication.class)
.properties("spring.config.name:bootstrap", "config/bootstrap.yml")
// .properties("spring.config.name:bootstrap", "config/bootstrap.yml")
.properties("spring.application.name="+ ServerNameConstants.ydUserApi)
.build().run(args);
System.out.println("(♥◠‿◠)ノ゙ yd-user-api启动成功 ლ(´ڡ`ლ)゙ ");
......
package com.yd.user.api.controller;
import com.yd.common.result.Result;
import com.yd.user.feign.client.sysproject.ApiSysProjectFeignClient;
import com.yd.user.feign.request.sysproject.ApiSysProjectAddRequest;
import com.yd.user.feign.request.sysproject.ApiSysProjectEditRequest;
import com.yd.user.feign.request.sysproject.ApiSysProjectPageRequest;
import com.yd.user.feign.response.sysproject.ApiSysProjectDetailResponse;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 项目信息
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/ydSysProject")
public class ApiSysProjectController implements ApiSysProjectFeignClient {
/**
* 项目分页查询
* @param request
* @return
*/
@Override
public Result page(ApiSysProjectPageRequest request) {
return null;
}
/**
* 获取项目详情
* @param projectUid 项目唯一标识(业务ID)
* @return
*/
@Override
public Result<ApiSysProjectDetailResponse> detail(String projectUid) {
return null;
}
/**
* 添加项目
* @param request
* @return
*/
@Override
public Result add(ApiSysProjectAddRequest request) {
return null;
}
/**
* 编辑项目
* @param request
* @return
*/
@Override
public Result edit(ApiSysProjectEditRequest request) {
return null;
}
/**
* 删除项目(逻辑删除)
* @param projectUid 项目唯一标识(业务ID)
* @return
*/
@Override
public Result del(String projectUid) {
return null;
}
/**
* 编辑项目状态
* @param projectUid 项目唯一标识(业务ID)
* @param status 状态(0:禁用 1:启用)
* @return
*/
@Override
public Result editStatus(String projectUid, Integer status) {
return null;
}
}
package com.yd.user.api.controller;
import com.yd.common.result.Result;
import com.yd.user.feign.client.sysrole.ApiSysRoleFeignClient;
import com.yd.user.feign.request.sysrole.ApiSysRoleAddRequest;
import com.yd.user.feign.request.sysrole.ApiSysRoleEditRequest;
import com.yd.user.feign.request.sysrole.ApiSysRolePageRequest;
import com.yd.user.feign.response.sysrole.ApiSysRoleDetailResponse;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 角色信息
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/sysRole")
public class ApiSysRoleController implements ApiSysRoleFeignClient {
/**
* 角色分页查询
* @param request
* @return
*/
@Override
public Result page(ApiSysRolePageRequest request) {
return null;
}
/**
* 获取角色详情
* @param roleUid 角色唯一标识(业务ID)
* @return
*/
@Override
public Result<ApiSysRoleDetailResponse> detail(String roleUid) {
return null;
}
/**
* 添加角色
* @param request
* @return
*/
@Override
public Result add(ApiSysRoleAddRequest request) {
return null;
}
/**
* 编辑角色
* @param request
* @return
*/
@Override
public Result edit(ApiSysRoleEditRequest request) {
return null;
}
/**
* 删除角色(逻辑删除)
* @param roleUid 角色唯一标识(业务ID)
* @return
*/
@Override
public Result del(String roleUid) {
return null;
}
/**
* 编辑角色状态
* @param roleUid 角色唯一标识(业务ID)
* @param status 状态(0:禁用 1:启用)
* @return
*/
@Override
public Result editStatus(String roleUid, Integer status) {
return null;
}
}
package com.yd.user.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiSysTenantService;
import com.yd.user.feign.client.systenant.ApiSysTenantFeignClient;
import com.yd.user.feign.request.systenant.ApiSysTenantAddRequest;
import com.yd.user.feign.request.systenant.ApiSysTenantEditRequest;
import com.yd.user.feign.request.systenant.ApiSysTenantPageRequest;
import com.yd.user.feign.response.systenant.ApiSysTenantDetailResponse;
import com.yd.user.feign.response.systenant.ApiSysTenantPageResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 租户信息
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/sysTenant")
@Validated
public class ApiSysTenantController implements ApiSysTenantFeignClient {
@Autowired
private ApiSysTenantService apiSysTenantService;
/**
* 租户分页查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiSysTenantPageResponse>> page(ApiSysTenantPageRequest request) {
return apiSysTenantService.page(request);
}
/**
* 获取租户详情
* @param tenantUid 租户唯一标识(业务ID)
* @return
*/
@Override
public Result<ApiSysTenantDetailResponse> detail(String tenantUid) {
return apiSysTenantService.detail(tenantUid);
}
/**
* 添加租户
* @param request
* @return
*/
@Override
public Result add(ApiSysTenantAddRequest request) {
return apiSysTenantService.add(request);
}
/**
* 编辑租户
* @param request
* @return
*/
@Override
public Result edit(ApiSysTenantEditRequest request) {
return apiSysTenantService.edit(request);
}
/**
* 删除租户(逻辑删除)
* @param tenantUid 租户唯一标识(业务ID)
* @return
*/
@Override
public Result del(String tenantUid) {
return null;
}
/**
* 编辑租户状态
* @param tenantUid 租户唯一标识(业务ID)
* @param status 状态(0:禁用 1:启用)
* @return
*/
@Override
public Result editStatus(String tenantUid, Integer status) {
return null;
}
}
package com.yd.user.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiSysUserService;
import com.yd.user.feign.client.sysuser.ApiSysUserFeignClient;
import com.yd.user.feign.request.sysuser.ApiSysUserAddRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserEditRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 用户信息
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/sysUser")
public class ApiSysUserController implements ApiSysUserFeignClient {
@Autowired
private ApiSysUserService apiSysUserService;
/**
* 用户分页查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiSysUserPageResponse>> page(ApiSysUserPageRequest request) {
return apiSysUserService.page(request);
}
/**
* 添加用户
* @param request
* @return
*/
@Override
public Result add(ApiSysUserAddRequest request) {
return apiSysUserService.add(request);
}
/**
* 编辑用户
* @param request
* @return
*/
@Override
public Result edit(ApiSysUserEditRequest request) {
return apiSysUserService.edit(request);
}
/**
* 获取用户详情
* @param userUid 用户业务唯一标识id
* @return
*/
public Result<ApiSysUserDetailResponse> detail(String userUid) {
return apiSysUserService.detail(userUid);
}
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 部门-用户关系表(多对多关系) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relDeptUser")
public class RelDeptUserController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 用户组-角色关系表(多对多关系) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relGroupRole")
public class RelGroupRoleController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 用户组-用户关系表(多对多关系) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relGroupUser")
public class RelGroupUserController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 项目-菜单关系表(正常来说一对多,加关系表方便扩展) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relProjectMenu")
public class RelProjectMenuController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 项目-角色关系表(正常来说一对多,加关系表方便扩展) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relProjectRole")
public class RelProjectRoleController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 项目-用户关系表(多对多关系) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relProjectUser")
public class RelProjectUserController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 项目-用户组关系表(正常来说一对多,加关系表方便扩展) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relProjectUserGroup")
public class RelProjectUserGroupController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 角色-菜单关系表(多对多关系) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relRoleMenu")
public class RelRoleMenuController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 租户-部门关系表(正常来说一对多,加关系表方便扩展) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relTenantDept")
public class RelTenantDeptController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 租户-菜单关系表(正常来说一对多,加关系表方便扩展) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relTenantMenu")
public class RelTenantMenuController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 租户-项目关系表(正常来说一对多,加关系表方便扩展) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relTenantProject")
public class RelTenantProjectController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 租户-角色关系表(正常来说一对多,加关系表方便扩展) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relTenantRole")
public class RelTenantRoleController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 租户-用户关系表(多对多关系) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relTenantUser")
public class RelTenantUserController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 租户-用户组关系表(正常来说一对多,加关系表方便扩展) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relTenantUserGroup")
public class RelTenantUserGroupController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 用户-角色关系表(多对多关系) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relUserRole")
public class RelUserRoleController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 部门表 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/sysDept")
public class SysDeptController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 字典类型表 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/sysDict")
public class SysDictController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 字典数据表 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/sysDictItem")
public class SysDictItemController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 登录日志表 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/sysLoginLog")
public class SysLoginLogController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 菜单权限表 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/sysMenu")
public class SysMenuController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 操作日志表 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/sysOperLog")
public class SysOperLogController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 岗位信息表 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/sysPost")
public class SysPostController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 用户组表 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/sysUserGroup")
public class SysUserGroupController {
}
package com.yd.user.api.controller;
import com.yd.common.result.Result;
import com.yd.user.service.entity.User;
import com.yd.user.service.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{username}")
public Result<User> getUserByUsername(@PathVariable String username) {
try {
User user = userService.findByUsername(username);
return Result.success(user);
} catch (Exception e) {
return Result.fail(e.getMessage());
}
}
@PostMapping("/register")
public Result<User> registerUser(@RequestBody User user) {
try {
User registeredUser = userService.register(user);
return Result.success(registeredUser);
} catch (Exception e) {
return Result.fail(e.getMessage());
}
}
@GetMapping("/info")
public Result<User> getCurrentUserInfo() {
try {
User currentUser = userService.getCurrentUser();
return Result.success(currentUser);
} catch (Exception e) {
return Result.fail(e.getMessage());
}
}
}
package com.yd.user.api.dto;
import java.util.List;
public class UserDTO {
private Long id;
private String username;
private String password;
private List<String> roles;
// 需要Getter和Setter
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
public List<String> getRoles() { return roles; }
public void setRoles(List<String> roles) { this.roles = roles; }
}
package com.yd.user.api.feign;
import com.yd.user.api.dto.UserDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(name = "yd-user-api", contextId = "userFeignClient")
public interface UserFeignClient {
@GetMapping("/internal/user/findByUsername")
UserDTO findByUsername(@RequestParam("username") String username);
}
package com.yd.user.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.user.feign.request.systenant.ApiSysTenantAddRequest;
import com.yd.user.feign.request.systenant.ApiSysTenantEditRequest;
import com.yd.user.feign.request.systenant.ApiSysTenantPageRequest;
import com.yd.user.feign.response.systenant.ApiSysTenantDetailResponse;
import com.yd.user.feign.response.systenant.ApiSysTenantPageResponse;
public interface ApiSysTenantService {
Result<IPage<ApiSysTenantPageResponse>> page(ApiSysTenantPageRequest request);
Result<ApiSysTenantDetailResponse> detail(String tenantUid);
Result add(ApiSysTenantAddRequest request);
Result edit(ApiSysTenantEditRequest request);
}
package com.yd.user.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.user.feign.request.sysuser.ApiSysUserAddRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserEditRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
public interface ApiSysUserService {
Result<IPage<ApiSysUserPageResponse>> page(ApiSysUserPageRequest request);
Result add(ApiSysUserAddRequest request);
Result edit(ApiSysUserEditRequest request);
Result<ApiSysUserDetailResponse> detail(String userUid);
}
package com.yd.user.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.user.api.service.ApiSysTenantService;
import com.yd.user.feign.request.systenant.ApiSysTenantAddRequest;
import com.yd.user.feign.request.systenant.ApiSysTenantEditRequest;
import com.yd.user.feign.request.systenant.ApiSysTenantPageRequest;
import com.yd.user.feign.response.systenant.ApiSysTenantDetailResponse;
import com.yd.user.feign.response.systenant.ApiSysTenantPageResponse;
import com.yd.user.service.dto.SysTenantDto;
import com.yd.user.service.model.SysTenant;
import com.yd.user.service.service.ISysTenantService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
@Service
public class ApiSysTenantServiceImpl implements ApiSysTenantService {
@Autowired
private ISysTenantService iSysTenantService;
/**
* 租户分页查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiSysTenantPageResponse>> page(ApiSysTenantPageRequest request) {
Page<ApiSysTenantPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiSysTenantPageResponse> iPage = iSysTenantService.page(page, request);
return Result.success(iPage);
}
/**
* 获取租户详情
* @param tenantUid 租户唯一标识(业务ID)
* @return
*/
@Override
public Result<ApiSysTenantDetailResponse> detail(String tenantUid) {
SysTenant sysTenant = iSysTenantService.queryOne(tenantUid);
ApiSysTenantDetailResponse response = null;
if (!Objects.isNull(sysTenant)) {
response = new ApiSysTenantDetailResponse();
BeanUtils.copyProperties(sysTenant,response);
}
return Result.success(response);
}
/**
* 添加租户
* @param request
* @return
*/
@Override
public Result add(ApiSysTenantAddRequest request) {
List<SysTenant> list = iSysTenantService.queryList(SysTenantDto.builder()
.tenantName(request.getTenantName())
.build());
if (!CollectionUtils.isEmpty(list)) {
//租户名称已存在
throw new BusinessException(ResultCode.TENANT_NAME_EXISTS.getCode(),ResultCode.TENANT_NAME_EXISTS.getMessage());
}
//新增
SysTenant sysTenant = new SysTenant();
BeanUtils.copyProperties(request,sysTenant);
sysTenant.setTenantUid(RandomStringGenerator.generateUid16(CommonEnum.UID_TYPE_TENANT.getCode()));
iSysTenantService.save(sysTenant);
return Result.success();
}
/**
* 编辑租户
* @param request
* @return
*/
@Override
public Result edit(ApiSysTenantEditRequest request) {
return Result.success();
}
}
package com.yd.user.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiSysUserService;
import com.yd.user.feign.request.sysuser.ApiSysUserAddRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserEditRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
import com.yd.user.service.model.SysUser;
import com.yd.user.service.service.ISysUserService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
@Service
public class ApiSysUserServiceImpl implements ApiSysUserService {
@Autowired
private ISysUserService iSysUserService;
/**
* 用户分页查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiSysUserPageResponse>> page(ApiSysUserPageRequest request) {
Page<ApiSysUserPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiSysUserPageResponse> iPage = iSysUserService.page(page, request);
return Result.success(iPage);
}
/**
* 添加用户
* @param request
* @return
*/
@Override
public Result add(ApiSysUserAddRequest request) {
return null;
}
/**
* 编辑用户
* @param request
* @return
*/
@Override
public Result edit(ApiSysUserEditRequest request) {
return null;
}
/**
* 获取用户详情
* @param userUid
* @return
*/
@Override
public Result<ApiSysUserDetailResponse> detail(String userUid) {
SysUser sysUser = iSysUserService.queryOne(userUid);
ApiSysUserDetailResponse response = null;
if (!Objects.isNull(sysUser)) {
response = new ApiSysUserDetailResponse();
BeanUtils.copyProperties(sysUser,response);
}
return Result.success(response);
}
}
......@@ -52,7 +52,7 @@ spring:
group: YD_GROUP
refresh: true
extension-configs: # 扩展配置
- data-id: yd-scrm-api.yml
- data-id: yd-user-api.yml
group: YD_GROUP
refresh: true
# 发布到注册中心 (如果没有使用可以不配)
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>yd-user</artifactId>
<groupId>com.yd</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>yd-user-feign</artifactId>
<dependencies>
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-feign</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-common</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
package com.yd.user.feign.client.sysproject;
import com.yd.common.result.Result;
import com.yd.user.feign.fallback.sysproject.ApiSysProjectFeignFallbackFactory;
import com.yd.user.feign.request.sysproject.ApiSysProjectAddRequest;
import com.yd.user.feign.request.sysproject.ApiSysProjectEditRequest;
import com.yd.user.feign.request.sysproject.ApiSysProjectPageRequest;
import com.yd.user.feign.response.sysproject.ApiSysProjectDetailResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
/**
* 用户服务-系统项目信息Feign客户端
*/
@FeignClient(name = "yd-user-api", fallbackFactory = ApiSysProjectFeignFallbackFactory.class)
public interface ApiSysProjectFeignClient {
/**
* 项目分页查询
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiSysProjectPageRequest request);
/**
* 获取项目详情
* @param projectUid 项目唯一标识(业务ID)
* @return
*/
@GetMapping("/detail")
Result<ApiSysProjectDetailResponse> detail(@RequestParam(value = "projectUid") String projectUid);
/**
* 添加项目
* @param request
* @return
*/
@PostMapping("/add")
Result add(@RequestBody ApiSysProjectAddRequest request);
/**
* 编辑项目
* @param request
* @return
*/
@PostMapping("/edit")
Result edit(@RequestBody ApiSysProjectEditRequest request);
/**
* 删除项目(逻辑删除)
* @param projectUid 项目唯一标识(业务ID)
* @return
*/
@DeleteMapping("/del")
Result del(@RequestParam(value = "projectUid") String projectUid);
/**
* 编辑项目状态
* @param projectUid 项目唯一标识(业务ID)
* @param status 状态(0:禁用 1:启用)
* @return
*/
@DeleteMapping("/edit/status")
Result editStatus(@RequestParam(value = "projectUid") String projectUid,
@RequestParam(value = "status") Integer status);
}
package com.yd.user.feign.client.sysrole;
import com.yd.common.result.Result;
import com.yd.user.feign.fallback.sysrole.ApiSysRoleFeignFallbackFactory;
import com.yd.user.feign.request.sysrole.ApiSysRoleAddRequest;
import com.yd.user.feign.request.sysrole.ApiSysRoleEditRequest;
import com.yd.user.feign.request.sysrole.ApiSysRolePageRequest;
import com.yd.user.feign.response.sysrole.ApiSysRoleDetailResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
/**
* 用户服务-系统角色信息Feign客户端
*/
@FeignClient(name = "yd-user-api", fallbackFactory = ApiSysRoleFeignFallbackFactory.class)
public interface ApiSysRoleFeignClient {
/**
* 角色分页查询
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiSysRolePageRequest request);
/**
* 获取角色详情
* @param roleUid 角色唯一标识(业务ID)
* @return
*/
@GetMapping("/detail")
Result<ApiSysRoleDetailResponse> detail(@RequestParam(value = "roleUid") String roleUid);
/**
* 添加角色
* @param request
* @return
*/
@PostMapping("/add")
Result add(@RequestBody ApiSysRoleAddRequest request);
/**
* 编辑角色
* @param request
* @return
*/
@PostMapping("/edit")
Result edit(@RequestBody ApiSysRoleEditRequest request);
/**
* 删除角色(逻辑删除)
* @param roleUid 角色唯一标识(业务ID)
* @return
*/
@DeleteMapping("/del")
Result del(@RequestParam(value = "roleUid") String roleUid);
/**
* 编辑角色状态
* @param roleUid 角色唯一标识(业务ID)
* @param status 状态(0:禁用 1:启用)
* @return
*/
@DeleteMapping("/edit/status")
Result editStatus(@RequestParam(value = "roleUid") String roleUid,
@RequestParam(value = "status") Integer status);
}
package com.yd.user.feign.client.systenant;
import com.yd.common.result.Result;
import com.yd.user.feign.fallback.systenant.ApiSysTenantFeignFallbackFactory;
import com.yd.user.feign.request.systenant.ApiSysTenantAddRequest;
import com.yd.user.feign.request.systenant.ApiSysTenantEditRequest;
import com.yd.user.feign.request.systenant.ApiSysTenantPageRequest;
import com.yd.user.feign.response.systenant.ApiSysTenantDetailResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
/**
* 用户服务-系统租户信息Feign客户端
*/
@FeignClient(name = "yd-user-api", fallbackFactory = ApiSysTenantFeignFallbackFactory.class)
public interface ApiSysTenantFeignClient {
/**
* 租户分页查询
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiSysTenantPageRequest request);
/**
* 获取租户详情
* @param tenantUid 租户唯一标识(业务ID)
* @return
*/
@GetMapping("/detail")
Result<ApiSysTenantDetailResponse> detail(@NotBlank(message = "租户唯一标识(业务ID)不能为空") @RequestParam(value = "tenantUid") String tenantUid);
/**
* 添加租户
* @param request
* @return
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiSysTenantAddRequest request);
/**
* 编辑租户
* @param request
* @return
*/
@PostMapping("/edit")
Result edit(@RequestBody ApiSysTenantEditRequest request);
/**
* 删除租户(逻辑删除)
* @param tenantUid 租户唯一标识(业务ID)
* @return
*/
@DeleteMapping("/del")
Result del(@RequestParam(value = "tenantUid") String tenantUid);
/**
* 编辑租户状态
* @param tenantUid 租户唯一标识(业务ID)
* @param status 状态(0:禁用 1:启用)
* @return
*/
@DeleteMapping("/edit/status")
Result editStatus(@RequestParam(value = "tenantUid") String tenantUid,
@RequestParam(value = "status") Integer status);
}
package com.yd.user.feign.client.sysuser;
import com.yd.common.result.Result;
import com.yd.user.feign.fallback.sysuser.ApiSysUserFeignFallbackFactory;
import com.yd.user.feign.request.sysuser.ApiSysUserAddRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserEditRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse;
import org.springframework.cloud.openfeign.FeignClient;
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.RequestParam;
/**
* 用户服务-系统用户信息Feign客户端
*/
@FeignClient(name = "yd-user-api", fallbackFactory = ApiSysUserFeignFallbackFactory.class)
public interface ApiSysUserFeignClient {
/**
* 用户分页查询
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiSysUserPageRequest request);
/**
* 添加用户
* @param request
* @return
*/
@PostMapping("/add")
Result add(@RequestBody ApiSysUserAddRequest request);
/**
* 编辑用户
* @param request
* @return
*/
@PostMapping("/edit")
Result edit(@RequestBody ApiSysUserEditRequest request);
/**
* 获取用户详情
* @param userUid 用户业务唯一标识id
* @return
*/
@GetMapping("/detail")
Result<ApiSysUserDetailResponse> detail(@RequestParam(value = "userUid") String userUid);
}
package com.yd.user.feign.fallback.sysproject;
import com.yd.common.result.Result;
import com.yd.user.feign.client.sysproject.ApiSysProjectFeignClient;
import com.yd.user.feign.request.sysproject.ApiSysProjectAddRequest;
import com.yd.user.feign.request.sysproject.ApiSysProjectEditRequest;
import com.yd.user.feign.request.sysproject.ApiSysProjectPageRequest;
import com.yd.user.feign.response.sysproject.ApiSysProjectDetailResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 用户服务-系统项目信息Feign降级处理
*/
@Slf4j
@Component
public class ApiSysProjectFeignFallbackFactory implements FallbackFactory<ApiSysProjectFeignClient> {
@Override
public ApiSysProjectFeignClient create(Throwable cause) {
return new ApiSysProjectFeignClient() {
@Override
public Result page(ApiSysProjectPageRequest request) {
return null;
}
@Override
public Result<ApiSysProjectDetailResponse> detail(String projectUid) {
return null;
}
@Override
public Result add(ApiSysProjectAddRequest request) {
return null;
}
@Override
public Result edit(ApiSysProjectEditRequest request) {
return null;
}
@Override
public Result del(String projectUid) {
return null;
}
@Override
public Result editStatus(String projectUid, Integer status) {
return null;
}
};
}
}
package com.yd.user.feign.fallback.sysrole;
import com.yd.common.result.Result;
import com.yd.user.feign.client.sysrole.ApiSysRoleFeignClient;
import com.yd.user.feign.request.sysrole.ApiSysRoleAddRequest;
import com.yd.user.feign.request.sysrole.ApiSysRoleEditRequest;
import com.yd.user.feign.request.sysrole.ApiSysRolePageRequest;
import com.yd.user.feign.response.sysrole.ApiSysRoleDetailResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 用户服务-系统角色信息Feign降级处理
*/
@Slf4j
@Component
public class ApiSysRoleFeignFallbackFactory implements FallbackFactory<ApiSysRoleFeignClient> {
@Override
public ApiSysRoleFeignClient create(Throwable cause) {
return new ApiSysRoleFeignClient() {
@Override
public Result page(ApiSysRolePageRequest request) {
return null;
}
@Override
public Result<ApiSysRoleDetailResponse> detail(String roleUid) {
return null;
}
@Override
public Result add(ApiSysRoleAddRequest request) {
return null;
}
@Override
public Result edit(ApiSysRoleEditRequest request) {
return null;
}
@Override
public Result del(String roleUid) {
return null;
}
@Override
public Result editStatus(String roleUid, Integer status) {
return null;
}
};
}
}
package com.yd.user.feign.fallback.systenant;
import com.yd.common.result.Result;
import com.yd.user.feign.client.systenant.ApiSysTenantFeignClient;
import com.yd.user.feign.request.systenant.ApiSysTenantAddRequest;
import com.yd.user.feign.request.systenant.ApiSysTenantEditRequest;
import com.yd.user.feign.request.systenant.ApiSysTenantPageRequest;
import com.yd.user.feign.response.systenant.ApiSysTenantDetailResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 用户服务-系统租户信息Feign降级处理
*/
@Slf4j
@Component
public class ApiSysTenantFeignFallbackFactory implements FallbackFactory<ApiSysTenantFeignClient> {
@Override
public ApiSysTenantFeignClient create(Throwable cause) {
return new ApiSysTenantFeignClient() {
@Override
public Result page(ApiSysTenantPageRequest request) {
return null;
}
@Override
public Result<ApiSysTenantDetailResponse> detail(String tenantUid) {
return null;
}
@Override
public Result add(ApiSysTenantAddRequest request) {
return null;
}
@Override
public Result edit(ApiSysTenantEditRequest request) {
return null;
}
@Override
public Result del(String tenantUid) {
return null;
}
@Override
public Result editStatus(String tenantUid, Integer status) {
return null;
}
};
}
}
package com.yd.user.feign.fallback.sysuser;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.user.feign.client.sysuser.ApiSysUserFeignClient;
import com.yd.user.feign.request.sysuser.ApiSysUserAddRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserEditRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 用户服务-系统用户信息Feign降级处理
*/
@Slf4j
@Component
public class ApiSysUserFeignFallbackFactory implements FallbackFactory<ApiSysUserFeignClient> {
public ApiSysUserFeignClient create(final Throwable cause) {
return new ApiSysUserFeignClient() {
@Override
public Result page(ApiSysUserPageRequest request) {
log.error("分页查询失败: {}", cause.getMessage());
throw new BusinessException("分页查询失败,请稍后重试");
}
@Override
public Result add(ApiSysUserAddRequest request) {
log.error("添加用户信息失败: {}", cause.getMessage());
throw new BusinessException("添加用户信息失败,请稍后重试");
}
@Override
public Result edit(ApiSysUserEditRequest request) {
log.error("编辑用户信息失败: {}", cause.getMessage());
throw new BusinessException("编辑用户信息失败,请稍后重试");
}
@Override
public Result<ApiSysUserDetailResponse> detail(String userUid) {
log.error("获取用户信息失败: {}", cause.getMessage());
throw new BusinessException("获取用户信息失败,请稍后重试");
}
};
}
}
package com.yd.user.feign.request.sysproject;
import lombok.Data;
/**
* 添加项目-入参
*/
@Data
public class ApiSysProjectAddRequest {
}
package com.yd.user.feign.request.sysproject;
import lombok.Data;
/**
* 编辑项目-入参
*/
@Data
public class ApiSysProjectEditRequest {
}
package com.yd.user.feign.request.sysproject;
import lombok.Data;
/**
* 项目分页查询-入参
*/
@Data
public class ApiSysProjectPageRequest {
}
package com.yd.user.feign.request.sysrole;
import lombok.Data;
/**
* 添加角色-入参
*/
@Data
public class ApiSysRoleAddRequest {
}
package com.yd.user.feign.request.sysrole;
import lombok.Data;
/**
* 编辑角色-入参
*/
@Data
public class ApiSysRoleEditRequest {
}
package com.yd.user.feign.request.sysrole;
import lombok.Data;
/**
* 角色分页查询-入参
*/
@Data
public class ApiSysRolePageRequest {
}
package com.yd.user.feign.request.systenant;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
/**
* 添加租户-入参
*/
@Data
public class ApiSysTenantAddRequest {
/**
* 租户名称
*/
@NotBlank(message = "租户名称不能为空")
private String tenantName;
/**
* 租户LOGO
*/
private String logoUrl;
/**
* 联系人姓名
*/
private String contactName;
/**
* 联系电话
*/
private String contactPhone;
/**
* 联系邮箱
*/
private String contactEmail;
/**
* 所属行业
*/
private String industry;
/**
* 联系地址
*/
private String address;
/**
* 状态(0:禁用 1:启用)
*/
@NotNull(message = "状态不能为空")
private Integer status;
/**
* 服务到期时间
*/
private LocalDateTime expireTime;
/**
* 最大项目数
*/
private Integer maxProject;
/**
* 最大用户数
*/
private Integer maxUser;
}
package com.yd.user.feign.request.systenant;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
/**
* 编辑租户-入参
*/
@Data
public class ApiSysTenantEditRequest {
/**
* 租户主键id
*/
@NotNull(message = "租户主键id不能为空")
private Long id;
/**
* 租户唯一标识(业务ID)
*/
@NotBlank(message = "租户唯一标识(业务ID)不能为空")
private String tenantUid;
/**
* 租户名称
*/
@NotBlank(message = "租户名称不能为空")
private String tenantName;
/**
* 租户LOGO
*/
private String logoUrl;
/**
* 联系人姓名
*/
private String contactName;
/**
* 联系电话
*/
private String contactPhone;
/**
* 联系邮箱
*/
private String contactEmail;
/**
* 所属行业
*/
private String industry;
/**
* 联系地址
*/
private String address;
/**
* 状态(0:禁用 1:启用)
*/
@NotNull(message = "状态不能为空")
private Integer status;
/**
* 服务到期时间
*/
private LocalDateTime expireTime;
/**
* 最大项目数
*/
private Integer maxProject;
/**
* 最大用户数
*/
private Integer maxUser;
}
package com.yd.user.feign.request.systenant;
import com.yd.common.dto.PageDto;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 租户分页查询-入参
*/
@Data
public class ApiSysTenantPageRequest extends PageDto {
/**
* 租户名称
*/
private String tenantName;
/**
* 联系人姓名
*/
private String contactName;
/**
* 联系电话
*/
private String contactPhone;
/**
* 状态(0:禁用 1:启用)
*/
private Integer status;
/**
* 开始时间(创建时间)
*/
private LocalDateTime startTime;
/**
* 结束时间(创建时间)
*/
private LocalDateTime endTime;
}
package com.yd.user.feign.request.sysuser;
import lombok.Data;
/**
* 添加用户-入参
*/
@Data
public class ApiSysUserAddRequest {
}
package com.yd.user.feign.request.sysuser;
import lombok.Data;
/**
* 编辑用户-入参
*/
@Data
public class ApiSysUserEditRequest {
}
package com.yd.user.feign.request.sysuser;
import com.yd.common.dto.PageDto;
import lombok.Data;
/**
* 用户分页查询-入参
*/
@Data
public class ApiSysUserPageRequest extends PageDto {
/**
* 登录账号
*/
private String username;
}
package com.yd.user.feign.response.sysproject;
import lombok.Data;
/**
* 获取项目详情-出参
*/
@Data
public class ApiSysProjectDetailResponse {
}
package com.yd.user.feign.response.sysrole;
import lombok.Data;
/**
* 获取角色详情-出参
*/
@Data
public class ApiSysRoleDetailResponse {
}
package com.yd.user.feign.response.systenant;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 获取租户详情-出参
*/
@Data
public class ApiSysTenantDetailResponse {
/**
* 租户ID
*/
private Long id;
/**
* 租户唯一标识(业务ID)
*/
private String tenantUid;
/**
* 租户名称
*/
private String tenantName;
/**
* 租户编码(用于API标识)
*/
private String tenantCode;
/**
* 租户LOGO
*/
private String logoUrl;
/**
* 联系人姓名
*/
private String contactName;
/**
* 联系电话
*/
private String contactPhone;
/**
* 联系邮箱
*/
private String contactEmail;
/**
* 所属行业
*/
private String industry;
/**
* 联系地址
*/
private String address;
/**
* 状态(0:禁用 1:启用)
*/
private Integer status;
/**
* 是否系统内置租户(0:否 1:是)
*/
private Integer isSystem;
/**
* 服务到期时间
*/
private LocalDateTime expireTime;
/**
* 最大项目数
*/
private Integer maxProject;
/**
* 最大用户数
*/
private Integer maxUser;
/**
* 最大存储空间(字节)
*/
private Long maxStorage;
/**
* 租户级配置(JSON格式)
*/
private String configJson;
/**
* 通用备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Boolean isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package com.yd.user.feign.response.systenant;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 租户分页查询-出参
*/
@Data
public class ApiSysTenantPageResponse {
/**
* 租户ID
*/
private Long id;
/**
* 租户唯一标识(业务ID)
*/
private String tenantUid;
/**
* 租户名称
*/
private String tenantName;
/**
* 租户LOGO
*/
private String logoUrl;
/**
* 联系人姓名
*/
private String contactName;
/**
* 联系电话
*/
private String contactPhone;
/**
* 状态(0:禁用 1:启用)
*/
private Integer status;
/**
* 服务到期时间
*/
private LocalDateTime expireTime;
/**
* 最大项目数
*/
private Integer maxProject;
/**
* 最大用户数
*/
private Integer maxUser;
/**
* 创建时间
*/
private LocalDateTime createTime;
}
package com.yd.user.feign.response.sysuser;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 获取用户详情-出参
*/
@Data
public class ApiSysUserDetailResponse {
/**
* 用户ID
*/
private Long id;
/**
* 用户唯一标识(业务ID)
*/
private String userUid;
/**
* 登录账号
*/
private String username;
/**
* 加密密码
*/
private String password;
/**
* 密码盐值
*/
private String passwordSalt;
/**
* 真实姓名
*/
private String realName;
/**
* 昵称
*/
private String nickName;
/**
* 头像URL
*/
private String avatar;
/**
* 邮箱
*/
private String email;
/**
* 手机号
*/
private String mobile;
/**
* 性别(0:未知 1:男 2:女)
*/
private Byte gender;
/**
* 状态(0:禁用 1:正常 2:锁定)
*/
private Byte status;
/**
* 是否超级管理员(0:否 1:是)
*/
private Byte isSuperadmin;
/**
* 最后登录IP
*/
private String lastLoginIp;
/**
* 最后登录时间
*/
private LocalDateTime lastLoginTime;
/**
* 最后修改密码时间
*/
private LocalDateTime lastPasswordTime;
/**
* 用户来源(1:系统创建...)
*/
private Byte sourceType;
/**
* 通用备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Boolean isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package com.yd.user.feign.response.sysuser;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ApiSysUserPageResponse {
/**
* 用户ID
*/
private Long id;
/**
* 用户唯一标识(业务ID)
*/
private String userUid;
/**
* 登录账号
*/
private String username;
/**
* 加密密码
*/
private String password;
/**
* 密码盐值
*/
private String passwordSalt;
/**
* 真实姓名
*/
private String realName;
/**
* 昵称
*/
private String nickName;
/**
* 头像URL
*/
private String avatar;
/**
* 邮箱
*/
private String email;
/**
* 手机号
*/
private String mobile;
/**
* 性别(0:未知 1:男 2:女)
*/
private Byte gender;
/**
* 状态(0:禁用 1:正常 2:锁定)
*/
private Byte status;
/**
* 是否超级管理员(0:否 1:是)
*/
private Byte isSuperadmin;
/**
* 最后登录IP
*/
private String lastLoginIp;
/**
* 最后登录时间
*/
private LocalDateTime lastLoginTime;
/**
* 最后修改密码时间
*/
private LocalDateTime lastPasswordTime;
/**
* 用户来源(1:系统创建...)
*/
private Byte sourceType;
/**
* 通用备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Boolean isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
......@@ -12,9 +12,32 @@
<artifactId>yd-user-service</artifactId>
<dependencies>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-security</artifactId>-->
<!-- </dependency>-->
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
</dependency>
<!-- MyBatis Plus 扩展功能 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
</dependency>
<!-- 阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
<dependency>
......@@ -22,17 +45,33 @@
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-common</artifactId>
<version>${project.version}</version>
<artifactId>yd-user-feign</artifactId>
</dependency>
<!-- &lt;!&ndash; 认证模块 &ndash;&gt;-->
<!-- <dependency>-->
<!-- <groupId>com.yd</groupId>-->
<!-- <artifactId>yd-auth-core</artifactId>-->
<!-- <version>${project.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.yd</groupId>-->
<!-- <artifactId>yd-common</artifactId>-->
<!-- <version>${project.version}</version>-->
<!-- </dependency>-->
</dependencies>
</project>
package com.yd.user.service.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.LocalDateTime;
@Configuration
@MapperScan("com.yd.user.mapper")
public class MyBatisPlusConfig {
public class MybatisPlusConfig {
/**
* 分页插件
* 分页插件配置(必须)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 使用正确的枚举值 DbType.MYSQL
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
/**
* 自动填充字段配置(如创建时间、更新时间)
*/
@Bean
public MetaObjectHandler metaObjectHandler() {
return new MetaObjectHandler() {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
}
};
}
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.RelDeptUser;
/**
* <p>
* 部门-用户关系表(多对多关系) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface RelDeptUserMapper extends BaseMapper<RelDeptUser> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.RelGroupRole;
/**
* <p>
* 用户组-角色关系表(多对多关系) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface RelGroupRoleMapper extends BaseMapper<RelGroupRole> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.RelGroupUser;
/**
* <p>
* 用户组-用户关系表(多对多关系) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface RelGroupUserMapper extends BaseMapper<RelGroupUser> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.RelProjectMenu;
/**
* <p>
* 项目-菜单关系表(正常来说一对多,加关系表方便扩展) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface RelProjectMenuMapper extends BaseMapper<RelProjectMenu> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.RelProjectRole;
/**
* <p>
* 项目-角色关系表(正常来说一对多,加关系表方便扩展) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface RelProjectRoleMapper extends BaseMapper<RelProjectRole> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.RelProjectUserGroup;
/**
* <p>
* 项目-用户组关系表(正常来说一对多,加关系表方便扩展) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface RelProjectUserGroupMapper extends BaseMapper<RelProjectUserGroup> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.RelProjectUser;
/**
* <p>
* 项目-用户关系表(多对多关系) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface RelProjectUserMapper extends BaseMapper<RelProjectUser> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.RelRoleMenu;
/**
* <p>
* 角色-菜单关系表(多对多关系) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface RelRoleMenuMapper extends BaseMapper<RelRoleMenu> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.RelTenantDept;
/**
* <p>
* 租户-部门关系表(正常来说一对多,加关系表方便扩展) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface RelTenantDeptMapper extends BaseMapper<RelTenantDept> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.RelTenantMenu;
/**
* <p>
* 租户-菜单关系表(正常来说一对多,加关系表方便扩展) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface RelTenantMenuMapper extends BaseMapper<RelTenantMenu> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.RelTenantProject;
/**
* <p>
* 租户-项目关系表(正常来说一对多,加关系表方便扩展) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface RelTenantProjectMapper extends BaseMapper<RelTenantProject> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.RelTenantRole;
/**
* <p>
* 租户-角色关系表(正常来说一对多,加关系表方便扩展) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface RelTenantRoleMapper extends BaseMapper<RelTenantRole> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.RelTenantUserGroup;
/**
* <p>
* 租户-用户组关系表(正常来说一对多,加关系表方便扩展) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface RelTenantUserGroupMapper extends BaseMapper<RelTenantUserGroup> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.RelTenantUser;
/**
* <p>
* 租户-用户关系表(多对多关系) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface RelTenantUserMapper extends BaseMapper<RelTenantUser> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.RelUserRole;
/**
* <p>
* 用户-角色关系表(多对多关系) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface RelUserRoleMapper extends BaseMapper<RelUserRole> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.SysDept;
/**
* <p>
* 部门表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface SysDeptMapper extends BaseMapper<SysDept> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.SysDictItem;
/**
* <p>
* 字典数据表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface SysDictItemMapper extends BaseMapper<SysDictItem> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.SysDict;
/**
* <p>
* 字典类型表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface SysDictMapper extends BaseMapper<SysDict> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.SysLoginLog;
/**
* <p>
* 登录日志表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface SysLoginLogMapper extends BaseMapper<SysLoginLog> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.SysMenu;
/**
* <p>
* 菜单权限表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface SysMenuMapper extends BaseMapper<SysMenu> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.SysOperLog;
/**
* <p>
* 操作日志表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface SysOperLogMapper extends BaseMapper<SysOperLog> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.SysPost;
/**
* <p>
* 岗位信息表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface SysPostMapper extends BaseMapper<SysPost> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.SysProject;
/**
* <p>
* 项目信息表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface SysProjectMapper extends BaseMapper<SysProject> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.SysRole;
/**
* <p>
* 角色表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface SysRoleMapper extends BaseMapper<SysRole> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.user.feign.request.systenant.ApiSysTenantPageRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.response.systenant.ApiSysTenantPageResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
import com.yd.user.service.model.SysTenant;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 租户信息表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface SysTenantMapper extends BaseMapper<SysTenant> {
IPage<ApiSysTenantPageResponse> page(@Param("page") IPage<ApiSysTenantPageResponse> page, @Param("request") ApiSysTenantPageRequest request);
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.model.SysUserGroup;
/**
* <p>
* 用户组表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface SysUserGroupMapper extends BaseMapper<SysUserGroup> {
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
import com.yd.user.service.model.SysUser;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 系统用户表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface SysUserMapper extends BaseMapper<SysUser> {
IPage<ApiSysUserPageResponse> page(@Param("page") IPage<ApiSysUserPageResponse> page, @Param("request") ApiSysUserPageRequest request);
}
package com.yd.user.service.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 租户公共参数对象
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SysTenantDto {
/**
* 租户ID
*/
private Long id;
/**
* 租户唯一标识(业务ID)
*/
private String tenantUid;
/**
* 租户名称
*/
private String tenantName;
/**
* 状态(0:禁用 1:启用)
*/
private Integer status;
/**
* 查询是否排除当前租户唯一标识数据,默认false不排除,true的话tenantUid必传
*/
private Boolean isExcludeMy = false;
}
package com.yd.user.service.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("sys_permission")
public class Permission {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private String description;
private String url;
private String method;
}
package com.yd.user.service.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("sys_role")
public class Role {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private String description;
}
package com.yd.user.service.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 lombok.Data;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@Data
@TableName("sys_user")
public class User implements UserDetails {
@TableId(type = IdType.AUTO)
private Long id;
private String username;
private String password;
private Boolean enabled = true;
private Boolean accountNonExpired = true;
private Boolean credentialsNonExpired = true;
private Boolean accountNonLocked = true;
@TableField(exist = false)
private List<Role> roles;
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
if (roles != null && !roles.isEmpty()) {
for (Role role : roles) {
authorities.add(new SimpleGrantedAuthority("ROLE_" + role.getName()));
}
}
return authorities;
}
@Override
public boolean isAccountNonExpired() {
return accountNonExpired;
}
@Override
public boolean isAccountNonLocked() {
return accountNonLocked;
}
@Override
public boolean isCredentialsNonExpired() {
return credentialsNonExpired;
}
@Override
public boolean isEnabled() {
return enabled;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment