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;
}
}
package com.yd.user.service.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.entity.Permission;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface PermissionMapper extends BaseMapper<Permission> {
List<Permission> selectByRoleId(@Param("roleId") Long roleId);
}
package com.yd.user.service.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.entity.Role;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface RoleMapper extends BaseMapper<Role> {
List<Role> selectByUserId(@Param("userId") Long userId);
}
package com.yd.user.service.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.service.entity.User;
import org.apache.ibatis.annotations.Param;
public interface UserMapper extends BaseMapper<User> {
User selectByUsername(@Param("username") String username);
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 部门-用户关系表(多对多关系)
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("rel_dept_user")
public class RelDeptUser implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 部门ID(业务id)
*/
@TableField("dept_id")
private String deptId;
/**
* 用户ID(业务id)
*/
@TableField("user_id")
private String userId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 用户组-角色关系表(多对多关系)
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("rel_group_role")
public class RelGroupRole implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 用户组ID(业务id)
*/
@TableField("group_id")
private String groupId;
/**
* 角色ID(业务id)
*/
@TableField("role_id")
private String roleId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 用户组-用户关系表(多对多关系)
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("rel_group_user")
public class RelGroupUser implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 用户组ID(业务id)
*/
@TableField("group_id")
private String groupId;
/**
* 用户ID(业务id)
*/
@TableField("user_id")
private String userId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 项目-菜单关系表(正常来说一对多,加关系表方便扩展)
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("rel_project_menu")
public class RelProjectMenu implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 项目ID(业务id)
*/
@TableField("project_id")
private String projectId;
/**
* 菜单ID(业务id)
*/
@TableField("menu_id")
private String menuId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 项目-角色关系表(正常来说一对多,加关系表方便扩展)
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("rel_project_role")
public class RelProjectRole implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 项目ID(业务id)
*/
@TableField("project_id")
private String projectId;
/**
* 角色ID(业务id)
*/
@TableField("role_id")
private String roleId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 项目-用户关系表(多对多关系)
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("rel_project_user")
public class RelProjectUser implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 项目ID(业务id)
*/
@TableField("project_id")
private String projectId;
/**
* 用户ID(业务id)
*/
@TableField("user_id")
private String userId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 项目-用户组关系表(正常来说一对多,加关系表方便扩展)
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("rel_project_user_group")
public class RelProjectUserGroup implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 项目ID(业务id)
*/
@TableField("project_id")
private String projectId;
/**
* 用户组(业务id)
*/
@TableField("group_id")
private String groupId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 角色-菜单关系表(多对多关系)
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("rel_role_menu")
public class RelRoleMenu implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 租户ID(业务id)(冗余字段,目的当前关系是发生在哪个作用域下:租户级)
*/
@TableField("tenant_id")
private String tenantId;
/**
* 项目ID(业务id)(冗余字段,目的当前关系是发生在哪个作用域下:项目级)
*/
@TableField("project_id")
private String projectId;
/**
* 角色ID(业务id)
*/
@TableField("role_id")
private String roleId;
/**
* 菜单ID(业务id)
*/
@TableField("menu_id")
private String menuId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 租户-部门关系表(正常来说一对多,加关系表方便扩展)
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("rel_tenant_dept")
public class RelTenantDept implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 租户ID(业务id)
*/
@TableField("tenant_id")
private String tenantId;
/**
* 部门ID(业务id)
*/
@TableField("dept_id")
private String deptId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 租户-菜单关系表(正常来说一对多,加关系表方便扩展)
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("rel_tenant_menu")
public class RelTenantMenu implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 租户ID(业务id)
*/
@TableField("tenant_id")
private String tenantId;
/**
* 菜单ID(业务id)
*/
@TableField("menu_id")
private String menuId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 租户-项目关系表(正常来说一对多,加关系表方便扩展)
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("rel_tenant_project")
public class RelTenantProject implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 租户ID(业务id)
*/
@TableField("tenant_id")
private String tenantId;
/**
* 项目ID(业务id)
*/
@TableField("project_id")
private String projectId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 租户-角色关系表(正常来说一对多,加关系表方便扩展)
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("rel_tenant_role")
public class RelTenantRole implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 租户ID(业务id)
*/
@TableField("tenant_id")
private String tenantId;
/**
* 角色ID(业务id)
*/
@TableField("role_id")
private String roleId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 租户-用户关系表(多对多关系)
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("rel_tenant_user")
public class RelTenantUser implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 租户ID(业务id)
*/
@TableField("tenant_id")
private String tenantId;
/**
* 用户ID(业务id)
*/
@TableField("user_id")
private String userId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 租户-用户组关系表(正常来说一对多,加关系表方便扩展)
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("rel_tenant_user_group")
public class RelTenantUserGroup implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 租户ID(业务id)
*/
@TableField("tenant_id")
private String tenantId;
/**
* 用户组(业务id)
*/
@TableField("group_id")
private String groupId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 用户-角色关系表(多对多关系)
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("rel_user_role")
public class RelUserRole implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 租户ID(业务id)(冗余字段,目的当前关系是发生在哪个作用域下:租户级)
*/
@TableField("tenant_id")
private String tenantId;
/**
* 项目ID(业务id)(冗余字段,目的当前关系是发生在哪个作用域下:项目级)
*/
@TableField("project_id")
private String projectId;
/**
* 用户ID(业务id)
*/
@TableField("user_id")
private String userId;
/**
* 角色ID(业务id)
*/
@TableField("role_id")
private String roleId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 部门表
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("sys_dept")
public class SysDept implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 部门唯一标识(业务ID)
*/
@TableField("dept_uid")
private String deptUid;
/**
* 类型(1:部门 2:公司)
*/
@TableField("type")
private Integer type;
/**
* 部门名称
*/
@TableField("dept_name")
private String deptName;
/**
* 父部门ID
*/
@TableField("parent_id")
private Long parentId;
/**
* 父子级列表(点符号拼接)
*/
@TableField("ancestors")
private String ancestors;
/**
* 显示顺序
*/
@TableField("order_num")
private Integer orderNum;
/**
* 联系电话
*/
@TableField("phone")
private String phone;
/**
* 邮箱
*/
@TableField("email")
private String email;
/**
* 状态(0:停用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 字典类型表
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("sys_dict")
public class SysDict implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 字典唯一标识(业务ID)
*/
@TableField("dict_uid")
private String dictUid;
/**
* 字典名称
*/
@TableField("dict_name")
private String dictName;
/**
* 字典类型
*/
@TableField("dict_type")
private String dictType;
/**
* 状态(0:停用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 字典数据表
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("sys_dict_item")
public class SysDictItem implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 字典ID(字典类型表id)
*/
@TableField("dict_id")
private Long dictId;
/**
* 字典项标签(名称)
*/
@TableField("item_label")
private String itemLabel;
/**
* 字典项值(值)
*/
@TableField("item_value")
private String itemValue;
/**
* 是否默认(0:否 1:是)
*/
@TableField("is_default")
private Integer isDefault;
/**
* 排序
*/
@TableField("order_num")
private Integer orderNum;
/**
* 状态(0:停用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 登录日志表
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("sys_login_log")
public class SysLoginLog implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 来源
*/
@TableField("source")
private String source;
/**
* 登录账号
*/
@TableField("username")
private String username;
/**
* 登录IP
*/
@TableField("ip_address")
private String ipAddress;
/**
* 登录地点
*/
@TableField("login_location")
private String loginLocation;
/**
* 浏览器类型
*/
@TableField("browser")
private String browser;
/**
* 操作系统
*/
@TableField("os")
private String os;
/**
* 设备类型
*/
@TableField("device_type")
private String deviceType;
/**
* 登录状态(0:成功 1:失败)
*/
@TableField("status")
private Integer status;
/**
* 提示消息
*/
@TableField("msg")
private String msg;
/**
* 登录时间
*/
@TableField("login_time")
private LocalDateTime loginTime;
/**
* 所属租户ID
*/
@TableField("tenant_id")
private String tenantId;
/**
* 所属项目ID
*/
@TableField("project_id")
private String projectId;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 菜单权限表
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("sys_menu")
public class SysMenu implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 菜单唯一标识(业务ID)
*/
@TableField("menu_uid")
private String menuUid;
/**
* 父菜单ID
*/
@TableField("parent_id")
private Long parentId;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
@TableField("scope")
private Integer scope;
/**
* 菜单名称
*/
@TableField("menu_name")
private String menuName;
/**
* 类型(1:目录 2:菜单 3:按钮)
*/
@TableField("menu_type")
private Integer menuType;
/**
* 路由地址
*/
@TableField("path")
private String path;
/**
* 组件路径
*/
@TableField("component")
private String component;
/**
* 图标
*/
@TableField("icon")
private String icon;
/**
* 是否外链(0:否 1:是)
*/
@TableField("is_external")
private Integer isExternal;
/**
* 是否缓存(0:否 1:是)
*/
@TableField("is_cache")
private Integer isCache;
/**
* 是否显示(0:隐藏 1:显示)
*/
@TableField("is_visible")
private Integer isVisible;
/**
* 权限标识(如:user:add)
*/
@TableField("permission")
private String permission;
/**
* 显示顺序
*/
@TableField("order_num")
private Integer orderNum;
/**
* 状态(0:停用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 操作日志表
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("sys_oper_log")
public class SysOperLog implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 操作模块
*/
@TableField("title")
private String title;
/**
* 业务类型(1:新增 2:修改 3:删除 4:授权 5:导出 6:导入)
*/
@TableField("business_type")
private Integer businessType;
/**
* 请求方法
*/
@TableField("method")
private String method;
/**
* 请求方式
*/
@TableField("request_method")
private String requestMethod;
/**
* 操作类别(0:其它 1:后台用户)
*/
@TableField("operator_type")
private Integer operatorType;
/**
* 操作人员ID
*/
@TableField("oper_user_id")
private String operUserId;
/**
* 操作人员
*/
@TableField("oper_user_name")
private String operUserName;
/**
* 请求URL
*/
@TableField("oper_url")
private String operUrl;
/**
* 操作IP
*/
@TableField("oper_ip")
private String operIp;
/**
* 操作地点
*/
@TableField("oper_location")
private String operLocation;
/**
* 请求参数
*/
@TableField("oper_param")
private String operParam;
/**
* 返回参数
*/
@TableField("json_result")
private String jsonResult;
/**
* 操作状态(0:正常 1:异常)
*/
@TableField("status")
private Integer status;
/**
* 错误消息
*/
@TableField("error_msg")
private String errorMsg;
/**
* 操作时间
*/
@TableField("oper_time")
private LocalDateTime operTime;
/**
* 所属租户ID
*/
@TableField("tenant_id")
private String tenantId;
/**
* 所属项目ID
*/
@TableField("project_id")
private String projectId;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 岗位信息表
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("sys_post")
public class SysPost implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 岗位唯一标识(业务ID)
*/
@TableField("post_uid")
private String postUid;
/**
* 岗位名称
*/
@TableField("post_name")
private String postName;
/**
* 岗位编码
*/
@TableField("post_code")
private String postCode;
/**
* 显示顺序
*/
@TableField("order_num")
private Integer orderNum;
/**
* 状态(0:停用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 项目信息表
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("yd_sys_project")
public class SysProject implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 项目ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 项目唯一标识(业务ID)
*/
@TableField("project_uid")
private String projectUid;
/**
* 项目名称
*/
@TableField("project_name")
private String projectName;
/**
* 项目编码(租户内唯一)
*/
@TableField("project_code")
private String projectCode;
/**
* 项目描述
*/
@TableField("description")
private String description;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 项目开始时间
*/
@TableField("start_time")
private LocalDateTime startTime;
/**
* 项目结束时间
*/
@TableField("end_time")
private LocalDateTime endTime;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 角色表
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("sys_role")
public class SysRole implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 角色唯一标识(业务ID)
*/
@TableField("role_uid")
private String roleUid;
/**
* 角色名称
*/
@TableField("role_name")
private String roleName;
/**
* 角色权限字符串(用于安全认证访问控制)
*/
@TableField("role_key")
private String roleKey;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
@TableField("scope")
private Integer scope;
/**
* 角色类型(1:超级管理员 2:管理员 3:普通用户)
*/
@TableField("role_type")
private Integer roleType;
/**
* 描述
*/
@TableField("description")
private String description;
/**
* 状态(0:停用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 租户信息表
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("sys_tenant")
public class SysTenant implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 租户ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 租户唯一标识(业务ID)
*/
@TableField("tenant_uid")
private String tenantUid;
/**
* 租户名称
*/
@TableField("tenant_name")
private String tenantName;
/**
* 租户编码(用于API标识)
*/
@TableField("tenant_code")
private String tenantCode;
/**
* 租户LOGO
*/
@TableField("logo_url")
private String logoUrl;
/**
* 联系人姓名
*/
@TableField("contact_name")
private String contactName;
/**
* 联系电话
*/
@TableField("contact_phone")
private String contactPhone;
/**
* 联系邮箱
*/
@TableField("contact_email")
private String contactEmail;
/**
* 所属行业
*/
@TableField("industry")
private String industry;
/**
* 联系地址
*/
@TableField("address")
private String address;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 是否系统内置租户(0:否 1:是)
*/
@TableField("is_system")
private Integer isSystem;
/**
* 服务到期时间
*/
@TableField("expire_time")
private LocalDateTime expireTime;
/**
* 最大项目数
*/
@TableField("max_project")
private Integer maxProject;
/**
* 最大用户数
*/
@TableField("max_user")
private Integer maxUser;
/**
* 最大存储空间(字节)
*/
@TableField("max_storage")
private Long maxStorage;
/**
* 租户级配置(JSON格式)
*/
@TableField("config_json")
private String configJson;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 系统用户表
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("sys_user")
public class SysUser implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 用户唯一标识(业务ID)
*/
@TableField("user_uid")
private String userUid;
/**
* 登录账号
*/
@TableField("username")
private String username;
/**
* 加密密码
*/
@TableField("password")
private String password;
/**
* 密码盐值
*/
@TableField("password_salt")
private String passwordSalt;
/**
* 真实姓名
*/
@TableField("real_name")
private String realName;
/**
* 昵称
*/
@TableField("nick_name")
private String nickName;
/**
* 头像URL
*/
@TableField("avatar")
private String avatar;
/**
* 邮箱
*/
@TableField("email")
private String email;
/**
* 手机号
*/
@TableField("mobile")
private String mobile;
/**
* 性别(0:未知 1:男 2:女)
*/
@TableField("gender")
private Integer gender;
/**
* 状态(0:禁用 1:正常 2:锁定)
*/
@TableField("status")
private Integer status;
/**
* 是否超级管理员(0:否 1:是)
*/
@TableField("is_superadmin")
private Integer isSuperadmin;
/**
* 最后登录IP
*/
@TableField("last_login_ip")
private String lastLoginIp;
/**
* 最后登录时间
*/
@TableField("last_login_time")
private LocalDateTime lastLoginTime;
/**
* 最后修改密码时间
*/
@TableField("last_password_time")
private LocalDateTime lastPasswordTime;
/**
* 用户来源(1:系统创建...)
*/
@TableField("source_type")
private Integer sourceType;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.model;
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.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 用户组表
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Getter
@Setter
@ToString
@TableName("sys_user_group")
public class SysUserGroup implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 用户组唯一标识(业务ID)
*/
@TableField("group_uid")
private String groupUid;
/**
* 用户组名称
*/
@TableField("group_name")
private String groupName;
/**
* 父用户组ID
*/
@TableField("parent_id")
private Long parentId;
/**
* 父子级列表(点符号拼接)
*/
@TableField("ancestors")
private String ancestors;
/**
* 显示顺序
*/
@TableField("order_num")
private Integer orderNum;
/**
* 状态(0:停用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelDeptUser;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 部门-用户关系表(多对多关系) 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface IRelDeptUserService extends IService<RelDeptUser> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelGroupRole;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 用户组-角色关系表(多对多关系) 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface IRelGroupRoleService extends IService<RelGroupRole> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelGroupUser;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 用户组-用户关系表(多对多关系) 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface IRelGroupUserService extends IService<RelGroupUser> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelProjectMenu;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 项目-菜单关系表(正常来说一对多,加关系表方便扩展) 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface IRelProjectMenuService extends IService<RelProjectMenu> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelProjectRole;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 项目-角色关系表(正常来说一对多,加关系表方便扩展) 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface IRelProjectRoleService extends IService<RelProjectRole> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelProjectUserGroup;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 项目-用户组关系表(正常来说一对多,加关系表方便扩展) 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface IRelProjectUserGroupService extends IService<RelProjectUserGroup> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelProjectUser;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 项目-用户关系表(多对多关系) 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface IRelProjectUserService extends IService<RelProjectUser> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelRoleMenu;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 角色-菜单关系表(多对多关系) 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface IRelRoleMenuService extends IService<RelRoleMenu> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelTenantDept;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 租户-部门关系表(正常来说一对多,加关系表方便扩展) 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface IRelTenantDeptService extends IService<RelTenantDept> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelTenantMenu;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 租户-菜单关系表(正常来说一对多,加关系表方便扩展) 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface IRelTenantMenuService extends IService<RelTenantMenu> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelTenantProject;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 租户-项目关系表(正常来说一对多,加关系表方便扩展) 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface IRelTenantProjectService extends IService<RelTenantProject> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelTenantRole;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 租户-角色关系表(正常来说一对多,加关系表方便扩展) 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface IRelTenantRoleService extends IService<RelTenantRole> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelTenantUserGroup;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 租户-用户组关系表(正常来说一对多,加关系表方便扩展) 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface IRelTenantUserGroupService extends IService<RelTenantUserGroup> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelTenantUser;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 租户-用户关系表(多对多关系) 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface IRelTenantUserService extends IService<RelTenantUser> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelUserRole;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 用户-角色关系表(多对多关系) 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface IRelUserRoleService extends IService<RelUserRole> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.SysDept;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 部门表 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface ISysDeptService extends IService<SysDept> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.SysDictItem;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 字典数据表 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface ISysDictItemService extends IService<SysDictItem> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.SysDict;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 字典类型表 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface ISysDictService extends IService<SysDict> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.SysLoginLog;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 登录日志表 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface ISysLoginLogService extends IService<SysLoginLog> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.SysMenu;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 菜单权限表 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface ISysMenuService extends IService<SysMenu> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.SysOperLog;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 操作日志表 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface ISysOperLogService extends IService<SysOperLog> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.SysPost;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 岗位信息表 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface ISysPostService extends IService<SysPost> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.SysProject;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 项目信息表 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface ISysProjectService extends IService<SysProject> {
}
package com.yd.user.service.service;
import com.yd.user.service.model.SysRole;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 角色表 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface ISysRoleService extends IService<SysRole> {
}
package com.yd.user.service.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.dto.SysTenantDto;
import com.yd.user.service.model.SysTenant;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 租户信息表 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface ISysTenantService extends IService<SysTenant> {
IPage<ApiSysTenantPageResponse> page(Page<ApiSysTenantPageResponse> page, ApiSysTenantPageRequest request);
SysTenant queryOne(String tenantUid);
List<SysTenant> queryList(SysTenantDto dto);
}
package com.yd.user.service.service;
import com.yd.user.service.model.SysUserGroup;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 用户组表 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface ISysUserGroupService extends IService<SysUserGroup> {
}
package com.yd.user.service.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.result.Result;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
import com.yd.user.service.model.SysUser;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 系统用户表 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
public interface ISysUserService extends IService<SysUser> {
IPage<ApiSysUserPageResponse> page(Page<ApiSysUserPageResponse> page, ApiSysUserPageRequest request);
SysUser queryOne(String userUid);
}
package com.yd.user.service.service;
import com.yd.user.service.entity.User;
import org.springframework.security.core.userdetails.UserDetailsService;
public interface UserService extends UserDetailsService {
/**
* 根据用户名查找用户
*/
User findByUsername(String username);
/**
* 注册新用户
*/
User register(User user);
/**
* 获取当前登录用户信息
*/
User getCurrentUser();
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelDeptUser;
import com.yd.user.service.dao.RelDeptUserMapper;
import com.yd.user.service.service.IRelDeptUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 部门-用户关系表(多对多关系) 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class RelDeptUserServiceImpl extends ServiceImpl<RelDeptUserMapper, RelDeptUser> implements IRelDeptUserService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelGroupRole;
import com.yd.user.service.dao.RelGroupRoleMapper;
import com.yd.user.service.service.IRelGroupRoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 用户组-角色关系表(多对多关系) 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class RelGroupRoleServiceImpl extends ServiceImpl<RelGroupRoleMapper, RelGroupRole> implements IRelGroupRoleService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelGroupUser;
import com.yd.user.service.dao.RelGroupUserMapper;
import com.yd.user.service.service.IRelGroupUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 用户组-用户关系表(多对多关系) 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class RelGroupUserServiceImpl extends ServiceImpl<RelGroupUserMapper, RelGroupUser> implements IRelGroupUserService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelProjectMenu;
import com.yd.user.service.dao.RelProjectMenuMapper;
import com.yd.user.service.service.IRelProjectMenuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 项目-菜单关系表(正常来说一对多,加关系表方便扩展) 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class RelProjectMenuServiceImpl extends ServiceImpl<RelProjectMenuMapper, RelProjectMenu> implements IRelProjectMenuService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelProjectRole;
import com.yd.user.service.dao.RelProjectRoleMapper;
import com.yd.user.service.service.IRelProjectRoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 项目-角色关系表(正常来说一对多,加关系表方便扩展) 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class RelProjectRoleServiceImpl extends ServiceImpl<RelProjectRoleMapper, RelProjectRole> implements IRelProjectRoleService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelProjectUserGroup;
import com.yd.user.service.dao.RelProjectUserGroupMapper;
import com.yd.user.service.service.IRelProjectUserGroupService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 项目-用户组关系表(正常来说一对多,加关系表方便扩展) 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class RelProjectUserGroupServiceImpl extends ServiceImpl<RelProjectUserGroupMapper, RelProjectUserGroup> implements IRelProjectUserGroupService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelProjectUser;
import com.yd.user.service.dao.RelProjectUserMapper;
import com.yd.user.service.service.IRelProjectUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 项目-用户关系表(多对多关系) 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class RelProjectUserServiceImpl extends ServiceImpl<RelProjectUserMapper, RelProjectUser> implements IRelProjectUserService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelRoleMenu;
import com.yd.user.service.dao.RelRoleMenuMapper;
import com.yd.user.service.service.IRelRoleMenuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 角色-菜单关系表(多对多关系) 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class RelRoleMenuServiceImpl extends ServiceImpl<RelRoleMenuMapper, RelRoleMenu> implements IRelRoleMenuService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelTenantDept;
import com.yd.user.service.dao.RelTenantDeptMapper;
import com.yd.user.service.service.IRelTenantDeptService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 租户-部门关系表(正常来说一对多,加关系表方便扩展) 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class RelTenantDeptServiceImpl extends ServiceImpl<RelTenantDeptMapper, RelTenantDept> implements IRelTenantDeptService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelTenantMenu;
import com.yd.user.service.dao.RelTenantMenuMapper;
import com.yd.user.service.service.IRelTenantMenuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 租户-菜单关系表(正常来说一对多,加关系表方便扩展) 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class RelTenantMenuServiceImpl extends ServiceImpl<RelTenantMenuMapper, RelTenantMenu> implements IRelTenantMenuService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelTenantProject;
import com.yd.user.service.dao.RelTenantProjectMapper;
import com.yd.user.service.service.IRelTenantProjectService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 租户-项目关系表(正常来说一对多,加关系表方便扩展) 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class RelTenantProjectServiceImpl extends ServiceImpl<RelTenantProjectMapper, RelTenantProject> implements IRelTenantProjectService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelTenantRole;
import com.yd.user.service.dao.RelTenantRoleMapper;
import com.yd.user.service.service.IRelTenantRoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 租户-角色关系表(正常来说一对多,加关系表方便扩展) 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class RelTenantRoleServiceImpl extends ServiceImpl<RelTenantRoleMapper, RelTenantRole> implements IRelTenantRoleService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelTenantUserGroup;
import com.yd.user.service.dao.RelTenantUserGroupMapper;
import com.yd.user.service.service.IRelTenantUserGroupService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 租户-用户组关系表(正常来说一对多,加关系表方便扩展) 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class RelTenantUserGroupServiceImpl extends ServiceImpl<RelTenantUserGroupMapper, RelTenantUserGroup> implements IRelTenantUserGroupService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelTenantUser;
import com.yd.user.service.dao.RelTenantUserMapper;
import com.yd.user.service.service.IRelTenantUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 租户-用户关系表(多对多关系) 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class RelTenantUserServiceImpl extends ServiceImpl<RelTenantUserMapper, RelTenantUser> implements IRelTenantUserService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelUserRole;
import com.yd.user.service.dao.RelUserRoleMapper;
import com.yd.user.service.service.IRelUserRoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 用户-角色关系表(多对多关系) 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class RelUserRoleServiceImpl extends ServiceImpl<RelUserRoleMapper, RelUserRole> implements IRelUserRoleService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.SysDept;
import com.yd.user.service.dao.SysDeptMapper;
import com.yd.user.service.service.ISysDeptService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 部门表 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> implements ISysDeptService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.SysDictItem;
import com.yd.user.service.dao.SysDictItemMapper;
import com.yd.user.service.service.ISysDictItemService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 字典数据表 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class SysDictItemServiceImpl extends ServiceImpl<SysDictItemMapper, SysDictItem> implements ISysDictItemService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.SysDict;
import com.yd.user.service.dao.SysDictMapper;
import com.yd.user.service.service.ISysDictService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 字典类型表 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> implements ISysDictService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.SysLoginLog;
import com.yd.user.service.dao.SysLoginLogMapper;
import com.yd.user.service.service.ISysLoginLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 登录日志表 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class SysLoginLogServiceImpl extends ServiceImpl<SysLoginLogMapper, SysLoginLog> implements ISysLoginLogService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.SysMenu;
import com.yd.user.service.dao.SysMenuMapper;
import com.yd.user.service.service.ISysMenuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 菜单权限表 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements ISysMenuService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.SysOperLog;
import com.yd.user.service.dao.SysOperLogMapper;
import com.yd.user.service.service.ISysOperLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 操作日志表 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class SysOperLogServiceImpl extends ServiceImpl<SysOperLogMapper, SysOperLog> implements ISysOperLogService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.SysPost;
import com.yd.user.service.dao.SysPostMapper;
import com.yd.user.service.service.ISysPostService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 岗位信息表 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class SysPostServiceImpl extends ServiceImpl<SysPostMapper, SysPost> implements ISysPostService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.SysProject;
import com.yd.user.service.dao.SysProjectMapper;
import com.yd.user.service.service.ISysProjectService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 项目信息表 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class SysProjectServiceImpl extends ServiceImpl<SysProjectMapper, SysProject> implements ISysProjectService {
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.SysRole;
import com.yd.user.service.dao.SysRoleMapper;
import com.yd.user.service.service.ISysRoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 角色表 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements ISysRoleService {
}
package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.user.feign.request.systenant.ApiSysTenantPageRequest;
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.dao.SysTenantMapper;
import com.yd.user.service.service.ISysTenantService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* <p>
* 租户信息表 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant> implements ISysTenantService {
/**
* 租户分页查询
* @param request
* @return
*/
@Override
public IPage<ApiSysTenantPageResponse> page(Page<ApiSysTenantPageResponse> page, ApiSysTenantPageRequest request) {
return baseMapper.page(page,request);
}
/**
* 根据租户唯一标识查询单个对象
* @param tenantUid
* @return
*/
@Override
public SysTenant queryOne(String tenantUid) {
return this.getOne(new LambdaQueryWrapper<SysTenant>().eq(SysTenant::getTenantUid,tenantUid));
}
/**
* 查询租户列表信息
* @param dto
* @return
*/
@Override
public List<SysTenant> queryList(SysTenantDto dto) {
List<SysTenant> list = baseMapper.selectList(new LambdaQueryWrapper<SysTenant>()
.eq(!Objects.isNull(dto.getId()),SysTenant::getId,dto.getId())
.eq(StringUtils.isNotBlank(dto.getTenantUid()),SysTenant::getTenantUid,dto.getTenantUid())
.eq(StringUtils.isNotBlank(dto.getTenantName()),SysTenant::getTenantName,dto.getTenantName())
.eq(!Objects.isNull(dto.getStatus()),SysTenant::getStatus,dto.getStatus())
.ne(dto.getIsExcludeMy(),SysTenant::getTenantUid,dto.getTenantUid())
);
return list;
}
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.SysUserGroup;
import com.yd.user.service.dao.SysUserGroupMapper;
import com.yd.user.service.service.ISysUserGroupService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 用户组表 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class SysUserGroupServiceImpl extends ServiceImpl<SysUserGroupMapper, SysUserGroup> implements ISysUserGroupService {
}
package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
import com.yd.user.service.model.SysUser;
import com.yd.user.service.dao.SysUserMapper;
import com.yd.user.service.service.ISysUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 系统用户表 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@Service
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
@Override
public IPage<ApiSysUserPageResponse> page(Page<ApiSysUserPageResponse> page, ApiSysUserPageRequest request) {
return baseMapper.page(page,request);
}
@Override
public SysUser queryOne(String userUid) {
return this.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserUid,userUid));
}
}
package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yd.user.service.entity.Role;
import com.yd.user.service.entity.User;
import com.yd.user.service.mapper.RoleMapper;
import com.yd.user.service.mapper.UserMapper;
import com.yd.user.service.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Autowired
private RoleMapper roleMapper;
@Autowired
private PasswordEncoder passwordEncoder;
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userMapper.selectByUsername(username);
if (user == null) {
throw new UsernameNotFoundException("用户不存在: " + username);
}
// 查询用户角色
List<Role> roles = roleMapper.selectByUserId(user.getId());
user.setRoles(roles);
return user;
}
@Override
public User findByUsername(String username) {
User user = userMapper.selectByUsername(username);
if (user != null) {
user.setRoles(roleMapper.selectByUserId(user.getId()));
}
return user;
}
@Transactional
@Override
public User register(User user) {
// 检查用户名是否存在
User existUser = userMapper.selectOne(
new QueryWrapper<User>().eq("username", user.getUsername())
);
if (existUser != null) {
throw new RuntimeException("用户名已存在");
}
// 加密密码
user.setPassword(passwordEncoder.encode(user.getPassword()));
// 保存用户
userMapper.insert(user);
// TODO: 分配默认角色
return user;
}
@Override
public User getCurrentUser() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication == null) {
throw new RuntimeException("未找到当前登录用户");
}
Object principal = authentication.getPrincipal();
String username;
if (principal instanceof UserDetails) {
username = ((UserDetails) principal).getUsername();
} else {
username = principal.toString();
}
return findByUsername(username);
}
}
package com.yd.user.service.utils;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
public class MyBatisPlusCodeGenerator {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/yd?serverTimezone=GMT%2B8", "root", "123456")
.globalConfig(builder -> {
builder.author("zxm")
// .outputDir("D:/soft/ideaproject/v2/yd-user/src/main/java/com/yd/user/service");
.outputDir("D:/soft/ideaproject/v2/yd-user/yd-user-service/src/main/java");
})
.packageConfig(builder -> {
builder.parent("com.yd.user.service")
.entity("model")
.mapper("dao")
.service("service")
.serviceImpl("service.impl")
.xml("mappers");
})
.strategyConfig(builder -> {
builder.addInclude(
"rel_dept_user", "rel_group_role", "rel_group_user",
"rel_project_menu", "rel_project_role", "rel_project_user",
"rel_project_user_group", "rel_role_menu", "rel_tenant_dept",
"rel_tenant_menu", "rel_tenant_project", "rel_tenant_role",
"rel_tenant_user", "rel_tenant_user_group", "rel_user_role",
"sys_dept", "sys_dict", "sys_dict_item", "sys_login_log",
"sys_menu", "sys_oper_log", "sys_post", "sys_role",
"sys_tenant", "sys_user", "sys_user_group", "yd_sys_project"
)
.entityBuilder()
.enableLombok()
.enableTableFieldAnnotation()
.controllerBuilder()
.enableRestStyle();
})
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
}
<?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="com.yd.user.service.mapper.RoleMapper">
<select id="selectByUserId" resultType="com.yd.user.service.entity.Role">
SELECT r.* FROM sys_role r
LEFT JOIN sys_user_role ur ON r.id = ur.role_id
WHERE ur.user_id = #{userId}
</select>
</mapper>
<?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="com.yd.user.service.mapper.UserMapper">
<select id="selectByUsername" resultType="com.yd.user.service.entity.User">
SELECT * FROM sys_user WHERE username = #{username}
</select>
</mapper>
<?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="com.yd.user.service.dao.RelDeptUserMapper">
</mapper>
<?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="com.yd.user.service.dao.RelGroupRoleMapper">
</mapper>
<?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="com.yd.user.service.dao.RelGroupUserMapper">
</mapper>
<?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="com.yd.user.service.dao.RelProjectMenuMapper">
</mapper>
<?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="com.yd.user.service.dao.RelProjectRoleMapper">
</mapper>
<?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="com.yd.user.service.dao.RelProjectUserGroupMapper">
</mapper>
<?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="com.yd.user.service.dao.RelProjectUserMapper">
</mapper>
<?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="com.yd.user.service.dao.RelRoleMenuMapper">
</mapper>
<?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="com.yd.user.service.dao.RelTenantDeptMapper">
</mapper>
<?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="com.yd.user.service.dao.RelTenantMenuMapper">
</mapper>
<?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="com.yd.user.service.dao.RelTenantProjectMapper">
</mapper>
<?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="com.yd.user.service.dao.RelTenantRoleMapper">
</mapper>
<?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="com.yd.user.service.dao.RelTenantUserGroupMapper">
</mapper>
<?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="com.yd.user.service.dao.RelTenantUserMapper">
</mapper>
<?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="com.yd.user.service.dao.RelUserRoleMapper">
</mapper>
<?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="com.yd.user.service.dao.SysDeptMapper">
</mapper>
<?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="com.yd.user.service.dao.SysDictItemMapper">
</mapper>
<?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="com.yd.user.service.dao.SysDictMapper">
</mapper>
<?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="com.yd.user.service.dao.SysLoginLogMapper">
</mapper>
<?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="com.yd.user.service.dao.SysMenuMapper">
</mapper>
<?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="com.yd.user.service.dao.SysOperLogMapper">
</mapper>
<?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="com.yd.user.service.dao.SysPostMapper">
</mapper>
<?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="com.yd.user.service.dao.SysProjectMapper">
</mapper>
<?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="com.yd.user.service.dao.SysRoleMapper">
</mapper>
<?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="com.yd.user.service.dao.SysTenantMapper">
<select id="page" resultType="com.yd.user.feign.response.systenant.ApiSysTenantPageResponse">
select * from sys_tenant st
<where>
<if test="request.tenantName!= null and request.tenantName!= ''">
and st.tenant_name like CONCAT('%', #{request.tenantName}, '%')
</if>
<if test="request.contactName!= null and request.contactName!= ''">
and st.contact_name like CONCAT('%', #{request.contactName}, '%')
</if>
<if test="request.contactPhone!= null and request.contactPhone!= ''">
and st.contact_phone like CONCAT('%', #{request.contactPhone}, '%')
</if>
<if test="request.status!= null">
and st.status = #{request.status}
</if>
<if test="request.startTime!= null">
and st.create_time &gt;= #{request.startTime}
</if>
<if test="request.endTime!= null">
and st.create_time &lt;= #{request.endTime}
</if>
and st.is_deleted = 0
</where>
</select>
</mapper>
<?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="com.yd.user.service.dao.SysUserGroupMapper">
</mapper>
<?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="com.yd.user.service.dao.SysUserMapper">
<select id="page" resultType="com.yd.user.feign.response.sysuser.ApiSysUserPageResponse">
select * from sys_user su
<where>
<if test="request.username!= null and request.username!= ''">
and su.username like concat('%', #{request.username}, '%')
</if>
and su.is_deleted = 0
</where>
</select>
</mapper>
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