精简 system-service-project 项目

This commit is contained in:
YunaiV 2022-06-12 00:14:09 +08:00
parent b1149279c0
commit 8174916c92
148 changed files with 0 additions and 8055 deletions

View File

@ -1,41 +0,0 @@
<?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>system-service-project</artifactId>
<groupId>cn.iocoder.mall</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>system-service-api</artifactId>
<dependencies>
<dependency>
<groupId>cn.iocoder.mall</groupId>
<artifactId>common-framework</artifactId>
</dependency>
<!-- 工具类相关 -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>RELEASE</version>
</dependency>
</dependencies>
</project>

View File

@ -1,83 +0,0 @@
package cn.iocoder.mall.systemservice.enums;
import cn.iocoder.common.framework.exception.ErrorCode;
/**
* 错误码枚举类
*
* system 系统使用 1-002-000-000
*/
public interface SystemErrorCodeConstants {
// ========== OAUTH2 模块 ==========
ErrorCode OAUTH2_UNKNOWN = new ErrorCode(1001001000, "未知错误"); // 预留
// 预留 1001001001 ~ 1001001099 错误码方便前端
ErrorCode OAUTH2_ACCESS_TOKEN_NOT_FOUND = new ErrorCode(1001001001, "访问令牌不存在");
ErrorCode OAUTH2_ACCESS_TOKEN_TOKEN_EXPIRED = new ErrorCode(1001001002, "访问令牌已过期");
ErrorCode OAUTH2_ACCESS_TOKEN_INVALID = new ErrorCode(1001001003, "访问令牌已失效");
ErrorCode OAUTH2_REFRESH_TOKEN_NOT_FOUND = new ErrorCode(1001001005, "刷新令牌不存在");
ErrorCode OAUTH_REFRESH_TOKEN_EXPIRED = new ErrorCode(1001001006, "访问令牌已过期");
ErrorCode OAUTH_REFRESH_TOKEN_INVALID = new ErrorCode(1001001007, "刷新令牌已失效");
// 其它 1001001100 开始
ErrorCode OAUTH_USER_TYPE_ERROR = new ErrorCode(1001001101, "用户类型并不正确");
// ========== 管理员模块 1002002000 ==========
ErrorCode ADMIN_NOT_FOUND = new ErrorCode(1002002000, "管理员不存在");
ErrorCode ADMIN_PASSWORD_ERROR = new ErrorCode(1002002001, "密码不正确");
ErrorCode ADMIN_IS_DISABLE = new ErrorCode(1002002002, "账号被禁用");
ErrorCode ADMIN_USERNAME_EXISTS = new ErrorCode(1002002003, "账号已经存在");
ErrorCode ADMIN_STATUS_EQUALS = new ErrorCode(1002002004, "账号已经是该状态");
ErrorCode ADMIN_ADMIN_STATUS_CAN_NOT_UPDATE = new ErrorCode(1002002005, "管理员的账号状态不允许变更");
ErrorCode ADMIN_ASSIGN_ROLE_NOT_EXISTS = new ErrorCode(1002002006, "分配员工角色时,有角色不存在");
ErrorCode ADMIN_ADMIN_CAN_NOT_UPDATE = new ErrorCode(1002002008, "管理员的账号不允许变更");
ErrorCode ADMIN_USERNAME_NOT_EXISTS = new ErrorCode(1002002009, "账号不存在");
// ========== 资源模块 1002003000 ==========
ErrorCode RESOURCE_NAME_DUPLICATE = new ErrorCode(1002003000, "已经存在该名字的资源");
ErrorCode RESOURCE_PARENT_NOT_EXISTS = new ErrorCode(1002003001, "父资源不存在");
ErrorCode RESOURCE_PARENT_ERROR = new ErrorCode(1002003002, "不能设置自己为父资源");
ErrorCode RESOURCE_NOT_EXISTS = new ErrorCode(1002003003, "资源不存在");
ErrorCode RESOURCE_EXISTS_CHILDREN = new ErrorCode(1002003004, "存在子资源,无法删除");
ErrorCode RESOURCE_PARENT_NOT_MENU = new ErrorCode(1002003005, "父资源的类型必须是菜单");
// ========== 角色模块 1002004000 ==========
ErrorCode ROLE_NOT_EXISTS = new ErrorCode(1002004000, "角色不存在");
ErrorCode ROLE_NAME_DUPLICATE = new ErrorCode(1002004001, "已经存在名为【{}}】的角色");
ErrorCode ROLE_CODE_DUPLICATE = new ErrorCode(1002004002, "已经存在编码为【{}}】的角色");
ErrorCode ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE = new ErrorCode(1002004004, "不能修改类型为系统内置的角色");
ErrorCode ROLE_CAN_NOT_DELETE_SYSTEM_TYPE_ROLE = new ErrorCode(1002004005, "不能删除类型为系统内置的角色");
// ========== 数据字典模块 1002005000 ==========
ErrorCode DATA_DICT_EXISTS = new ErrorCode(1002005000, "数据字典已经存在");
ErrorCode DATA_DICT_NOT_EXISTS = new ErrorCode(1002005001, "数据字典不存在");
// ========== 短信模板 1002006000 ==========
ErrorCode SMS_PLATFORM_FAIL = new ErrorCode(1002006000, "短信平台调用失败【具体错误会动态替换】");
ErrorCode SMS_SIGN_NOT_EXISTENT = new ErrorCode(1002006001, "短信签名不存在");
ErrorCode SMS_SIGN_IS_EXISTENT = new ErrorCode(1002006002, "短信签名已存在");
ErrorCode SMS_TEMPLATE_NOT_EXISTENT = new ErrorCode(1002006020, "短信签名不存在");
ErrorCode SMS_TEMPLATE_IS_EXISTENT = new ErrorCode(1002006021, "短信签名不存在");
ErrorCode SMS_NOT_SEND_CLIENT = new ErrorCode(1002006030, "短信没有发送的client");
// ========== 部门模块 1002007000 ==========
ErrorCode DEPARTMENT_NAME_DUPLICATE = new ErrorCode(1002007001, "已经存在该名字的部门");
ErrorCode DEPARTMENT_PARENT_NOT_EXITS = new ErrorCode(1002007002,"父级部门不存在");
ErrorCode DEPARTMENT_NOT_FOUND = new ErrorCode(1002007003, "当前部门不存在");
ErrorCode DEPARTMENT_EXITS_CHILDREN = new ErrorCode(1002007004, "存在子部门,无法删除");
ErrorCode DEPARTMENT_PARENT_ERROR = new ErrorCode(1002007005, "不能设置自己为父资源");
ErrorCode DEPARTMENT_EXISTS_ADMIN = new ErrorCode(1002007006, "部门中存在员工,无法删除");
// ========== 权限模块 1002008000 ==========
ErrorCode PERMISSION_DEMO_PERMISSION_DENY = new ErrorCode(1002008002, "演示账号暂不允许写操作。欢迎加入我们的交流群http://t.cn/EKEr5WE");
ErrorCode PERMISSION_ROLE_ASSIGN_RESOURCE_NOT_EXISTS = new ErrorCode(1002008004, "分配角色资源时,有资源不存在");
// ========== 错误码模块 1002009000 ==========
ErrorCode ERROR_CODE_NOT_EXISTS = new ErrorCode(1002009000, "错误码不存在");
ErrorCode ERROR_CODE_DUPLICATE = new ErrorCode(1002009001, "已经存在编码为【{}}】的错误码");
ErrorCode ERROR_CAN_NOT_UPDATE_SYSTEM_TYPE_ERROR = new ErrorCode(1002004003, "不能修改类型为系统内置的错误码");
// ========== 系统异常日志模块 1002010000 ==========
ErrorCode SYSTEM_EXCEPTION_LOG_NOT_FOUND = new ErrorCode(1002010000, "系统异常日志不存在");
ErrorCode SYSTEM_EXCEPTION_LOG_PROCESSED = new ErrorCode(1002010001, "系统异常日志已处理");
}

View File

@ -1,44 +0,0 @@
package cn.iocoder.mall.systemservice.enums.admin;
import cn.iocoder.common.framework.core.IntArrayValuable;
import java.util.Arrays;
/**
* 管理员的状态枚举
*/
public enum AdminStatusEnum implements IntArrayValuable {
ACTIVE(1, "在职"),
INACTIVE(2, "离职");
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(AdminStatusEnum::getStatus).toArray();
/**
* 在职状态
*/
private final Integer status;
/**
* 描述
*/
private final String name;
AdminStatusEnum(Integer status, String name) {
this.status = status;
this.name = name;
}
public Integer getStatus() {
return status;
}
public String getName() {
return name;
}
@Override
public int[] array() {
return ARRAYS;
}
}

View File

@ -1,24 +0,0 @@
package cn.iocoder.mall.systemservice.enums.admin;
/**
* 管理员的账号枚举一般枚举特殊的账号
*
* 例如说特殊管理员 admin 禁止编辑
*/
public enum AdminUsernameEnum {
ADMIN("admin"),
DEMO("yudaoyuanma"),
;
private final String username;
AdminUsernameEnum(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
}

View File

@ -1,23 +0,0 @@
package cn.iocoder.mall.systemservice.enums.admin;
/**
* 部门的编号枚举
*/
public enum DepartmentIdEnum {
/**
* 根节点
*/
ROOT(0);
private final Integer id;
DepartmentIdEnum(Integer id) {
this.id = id;
}
public Integer getId() {
return id;
}
}

View File

@ -1,43 +0,0 @@
package cn.iocoder.mall.systemservice.enums.errorcode;
import cn.iocoder.common.framework.core.IntArrayValuable;
import java.util.Arrays;
/**
* 错误码的类型枚举
*
* 考虑到便利性我们会扫描每个项目的错误码枚举类自动添加到错误码数据库中并标记为 {@link #AUTO_GENERATION} 类型
* 经过管理员手动编辑过的错误码会标记为 {@link #MANUAL_OPERATION} 类型并禁止自动同步
*
* @author ding
*/
public enum ErrorCodeTypeEnum implements IntArrayValuable {
/**
* 自动生成
*/
AUTO_GENERATION(1),
/**
* 手动编辑
*/
MANUAL_OPERATION(2);
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(ErrorCodeTypeEnum::getType).toArray();
private final Integer type;
ErrorCodeTypeEnum(Integer type) {
this.type = type;
}
public Integer getType() {
return type;
}
@Override
public int[] array() {
return ARRAYS;
}
}

View File

@ -1,23 +0,0 @@
package cn.iocoder.mall.systemservice.enums.permission;
/**
* Resource 编号枚举
*/
public enum ResourceIdEnum {
/**
* 根节点
*/
ROOT(0);
private final Integer id;
ResourceIdEnum(Integer id) {
this.id = id;
}
public Integer getId() {
return id;
}
}

View File

@ -1,44 +0,0 @@
package cn.iocoder.mall.systemservice.enums.permission;
import cn.iocoder.common.framework.core.IntArrayValuable;
import java.util.Arrays;
/**
* Resource 类型枚举
*/
public enum ResourceTypeEnum implements IntArrayValuable {
MENU(1, "菜单"),
BUTTON(2, "按钮");
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(ResourceTypeEnum::getType).toArray();
/**
* 资源类型
*/
private final Integer type;
/**
* 资源类型名
*/
private final String name;
ResourceTypeEnum(Integer type, String name) {
this.type = type;
this.name = name;
}
public Integer getType() {
return type;
}
public String getName() {
return name;
}
@Override
public int[] array() {
return ARRAYS;
}
}

View File

@ -1,21 +0,0 @@
package cn.iocoder.mall.systemservice.enums.permission;
public enum RoleCodeEnum {
SUPER_ADMIN("SUPER_ADMIN"), // 超级管理员
;
/**
* 角色编码
*/
private final String code;
RoleCodeEnum(String code) {
this.code = code;
}
public String getCode() {
return code;
}
}

View File

@ -1,24 +0,0 @@
package cn.iocoder.mall.systemservice.enums.permission;
public enum RoleTypeEnum {
/**
* 内置角色
*/
SYSTEM(1),
/**
* 自定义角色
*/
CUSTOM(2);
private final Integer type;
RoleTypeEnum(Integer type) {
this.type = type;
}
public Integer getType() {
return type;
}
}

View File

@ -1,45 +0,0 @@
package cn.iocoder.mall.systemservice.enums.systemlog;
import cn.iocoder.common.framework.core.IntArrayValuable;
import java.util.Arrays;
/**
* 系统异常日志的处理状态枚举
*/
public enum SystemExceptionLogProcessStatusEnum implements IntArrayValuable {
INIT(0, "未处理"),
DONE(1, "已处理"),
IGNORE(2, "已忽略");
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(SystemExceptionLogProcessStatusEnum::getStatus).toArray();
/**
* 状态
*/
private final Integer status;
/**
* 资源类型名
*/
private final String name;
SystemExceptionLogProcessStatusEnum(Integer status, String name) {
this.status = status;
this.name = name;
}
public Integer getStatus() {
return status;
}
public String getName() {
return name;
}
@Override
public int[] array() {
return ARRAYS;
}
}

View File

@ -1,40 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.admin;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminCreateDTO;
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminPageDTO;
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminVerifyPasswordDTO;
import cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO;
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;
/**
* Title:
* Description:
*
* @author zhuyang
* @version 1.0 2021/10/11
*/
@FeignClient("system-service")
public interface AdminFeign {
@PostMapping("/system/admin/verifyPassword")
public CommonResult<AdminVO> verifyPassword(@RequestBody AdminVerifyPasswordDTO verifyPasswordDTO) ;
@PostMapping("/system/admin/createAdmin")
public CommonResult<Integer> createAdmin(@RequestBody AdminCreateDTO createDTO) ;
@PostMapping("/system/admin/updateAdmin")
public CommonResult<Boolean> updateAdmin(@RequestBody AdminUpdateDTO updateDTO) ;
@PostMapping("/system/admin/pageAdmin")
public CommonResult<PageResult<AdminVO>> pageAdmin(@RequestBody AdminPageDTO pageDTO);
@GetMapping("/system/admin/getAdmin")
public CommonResult<AdminVO> getAdmin(@RequestParam("adminId") Integer adminId) ;
}

View File

@ -1,42 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.admin;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.systemservice.rpc.admin.dto.DepartmentCreateDTO;
import cn.iocoder.mall.systemservice.rpc.admin.dto.DepartmentUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.admin.vo.DepartmentVO;
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;
import java.util.Collection;
import java.util.List;
import static cn.iocoder.common.framework.vo.CommonResult.success;
/**
* 部门 Rpc 接口
*/
@FeignClient("system-service")
public interface DepartmentFeign {
@PostMapping("/system/department/createDepartment")
public CommonResult<Integer> createDepartment(@RequestBody DepartmentCreateDTO createDTO) ;
@PostMapping("/system/department/updateDepartment")
public CommonResult<Boolean> updateDepartment(@RequestBody DepartmentUpdateDTO updateDTO);
@GetMapping("/system/department/deleteDepartment")
public CommonResult<Boolean> deleteDepartment(@RequestParam("departmentId")Integer departmentId);
@GetMapping("/system/department/getDepartment")
public CommonResult<DepartmentVO> getDepartment(@RequestParam("departmentId") Integer departmentId) ;
@GetMapping("/system/department/listDepartments")
public CommonResult<List<DepartmentVO>> listDepartments(@RequestParam("departmentIds")Collection<Integer> departmentIds) ;
@GetMapping("/system/department/listAllDepartments")
public CommonResult<List<DepartmentVO>> listDepartments();
}

View File

@ -1,56 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.admin.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
/**
* 管理员添加 BO
*/
@Data
@Accessors(chain = true)
public class AdminCreateDTO implements Serializable {
/**
* 昵称
*/
@NotEmpty(message = "真实名字不能为空")
@Length(max = 10, message = "真实名字长度最大为 10 位")
private String name;
/**
* 部门编号
*/
@NotNull(message = "部门不能为空")
private Integer departmentId;
/**
* 登陆账号
*/
@NotEmpty(message = "登陆账号不能为空")
@Length(min = 5, max = 16, message = "账号长度为 5-16 位")
@Pattern(regexp = "^[A-Za-z0-9]+$", message = "账号格式为数字以及字母")
private String username;
/**
* 密码
*/
@NotEmpty(message = "密码不能为空")
@Length(min = 4, max = 16, message = "密码长度为 4-16 位")
private String password;
/**
* 创建管理员编号
*/
@NotNull(message = "创建管理员编号不能为空")
private Integer createAdminId;
/**
* 创建 IP
*/
@NotNull(message = "创建 IP 不能为空")
private String createIp;
}

View File

@ -1,25 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.admin.dto;
import cn.iocoder.common.framework.vo.PageParam;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 管理员分页查询 DTO
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class AdminPageDTO extends PageParam {
/**
* 真实名字模糊匹配
*/
private String name;
/**
* 部门编号
*/
private Integer departmentId;
}

View File

@ -1,51 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.admin.dto;
import cn.iocoder.common.framework.enums.CommonStatusEnum;
import cn.iocoder.common.framework.validator.InEnum;
import lombok.Data;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
/**
* 管理员修改 DTO
*/
@Data
@Accessors(chain = true)
public class AdminUpdateDTO implements Serializable {
/**
* 管理员编号
*/
@NotNull(message = "管理员编号不能为空")
private Integer id;
/**
* 真实名字
*/
@Length(max = 10, message = "真实名字长度最大为 10 位")
private String name;
/**
* 部门编号
*/
private Integer departmentId;
/**
* 状态
*/
@InEnum(value = CommonStatusEnum.class, message = "修改状态必须是 {value}")
private Integer status;
/**
* 登录账号
*/
@Pattern(regexp = "^[A-Za-z0-9]+$", message = "账号格式为数字以及字母")
private String username;
/**
* 密码
*/
@Length(min = 4, max = 16, message = "密码长度为 4-16 位")
private String password;
}

View File

@ -1,37 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.admin.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
/**
* 管理员校验密码 DTO
*/
@Data
@Accessors(chain = true)
public class AdminVerifyPasswordDTO implements Serializable {
/**
* 用户名
*/
@NotEmpty(message = "登陆账号不能为空")
@Length(min = 5, max = 16, message = "账号长度为 5-16 位")
@Pattern(regexp = "^[A-Za-z0-9]+$", message = "账号格式为数字以及字母")
private String username;
/**
* 密码
*/
@NotEmpty(message = "密码不能为空")
@Length(min = 4, max = 16, message = "密码长度为 4-16 位")
private String password;
/**
* IP
*/
@NotEmpty(message = "IP 不能为空")
private String ip;
}

View File

@ -1,33 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.admin.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 部门创建 DTO
*/
@Data
@Accessors(chain = true)
public class DepartmentCreateDTO implements Serializable {
/**
* 部门名称
*/
@NotEmpty(message = "部门名称不能为空")
private String name;
/**
* 排序字段
*/
@NotNull(message = "排序字段不能为空")
private Integer sort;
/**
* 父级部门编号
*/
@NotNull(message = "父级部门编号不能为空")
private Integer pid;
}

View File

@ -1,38 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.admin.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 部门更新 DTO
*/
@Data
@Accessors(chain = true)
public class DepartmentUpdateDTO implements Serializable {
/**
* 部门编号
*/
@NotNull(message = "部门编号不能为空")
private Integer id;
/**
* 部门名称
*/
@NotEmpty(message = "部门名称不能为空")
private String name;
/**
* 排序字段
*/
@NotNull(message = "排序字段不能为空")
private Integer sort;
/**
* 父级部门编号
*/
@NotNull(message = "父级部门编号不能为空")
private Integer pid;
}

View File

@ -1,46 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.admin.vo;
import cn.iocoder.mall.systemservice.enums.admin.AdminStatusEnum;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 管理员 DO
*/
@Data
@Accessors(chain = true)
public class AdminVO implements Serializable {
/**
* 管理员编号
*/
private Integer id;
/**
* 真实名字
*/
private String name;
/**
* 部门编号
*/
private Integer departmentId;
/**
* 在职状态
*
* 枚举 {@link AdminStatusEnum}
*/
private Integer status;
/**
* 登陆账号
*/
private String username;
/**
* 创建时间
*/
private Date createTime;
}

View File

@ -1,37 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.admin.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 部门 VO
*/
@Data
@Accessors(chain = true)
public class DepartmentVO implements Serializable {
/**
* 部门编号
*/
private Integer id;
/**
* 部门名称
*/
private String name;
/**
* 排序字段
*/
private Integer sort;
/**
* 父级部门编号
*/
private Integer pid;
/**
* 创建时间
*/
private Date createTime;
}

View File

@ -1,45 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.datadict;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.systemservice.rpc.admin.dto.DepartmentCreateDTO;
import cn.iocoder.mall.systemservice.rpc.admin.dto.DepartmentUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.admin.vo.DepartmentVO;
import cn.iocoder.mall.systemservice.rpc.datadict.dto.DataDictCreateDTO;
import cn.iocoder.mall.systemservice.rpc.datadict.dto.DataDictUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.datadict.vo.DataDictVO;
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;
import java.util.Collection;
import java.util.List;
import static cn.iocoder.common.framework.vo.CommonResult.success;
/**
* 部门 Rpc 接口
*/
@FeignClient("system-service")
public interface DataDictFeign {
@PostMapping("/system/datadict/createDataDict")
public CommonResult<Integer> createDataDict(@RequestBody DataDictCreateDTO createDTO) ;
@PostMapping("/system/datadict/updateDataDict")
public CommonResult<Boolean> updateDataDict(@RequestBody DataDictUpdateDTO updateDTO);
@GetMapping("/system/datadict/deleteDataDict")
public CommonResult<Boolean> deleteDataDict(@RequestParam("dataDictId") Integer dataDictId);
@GetMapping("/system/datadict/getDataDict")
public CommonResult<DataDictVO> getDataDict(@RequestParam("dataDictId") Integer dataDictId);
@GetMapping("/system/datadict/listAllDataDicts")
public CommonResult<List<DataDictVO>> listDataDicts() ;
@GetMapping("/system/datadict/listDataDicts")
public CommonResult<List<DataDictVO>> listDataDicts(@RequestParam("dataDictIds") List<Integer> dataDictIds);
}

View File

@ -1,42 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.datadict.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 数据字典创建 DTO
*/
@Data
@Accessors(chain = true)
public class DataDictCreateDTO implements Serializable {
/**
* 大类枚举值
*/
@NotEmpty(message = "大类枚举值不能为空")
private String enumValue;
/**
* 小类数值
*/
@NotEmpty(message = "小类数值不能为空")
private String value;
/**
* 展示名
*/
@NotEmpty(message = "展示名不能为空")
private String displayName;
/**
* 排序值
*/
@NotNull(message = "排序值不能为空")
private Integer sort;
/**
* 备注
*/
private String memo;
}

View File

@ -1,47 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.datadict.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 数据字典更新 DTO
*/
@Data
@Accessors(chain = true)
public class DataDictUpdateDTO implements Serializable {
/**
* 编号
*/
@NotNull(message = "编号不能为空")
private Integer id;
/**
* 大类枚举值
*/
@NotEmpty(message = "大类枚举值不能为空")
private String enumValue;
/**
* 小类数值
*/
@NotEmpty(message = "小类数值不能为空")
private String value;
/**
* 展示名
*/
@NotEmpty(message = "展示名不能为空")
private String displayName;
/**
* 排序值
*/
@NotNull(message = "排序值不能为空")
private Integer sort;
/**
* 备注
*/
private String memo;
}

View File

@ -1,45 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.datadict.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 数据字典 VO
*/
@Data
@Accessors(chain = true)
public class DataDictVO implements Serializable {
/**
* 编号
*/
private Integer id;
/**
* 大类枚举值
*/
private String enumValue;
/**
* 小类数值
*/
private String value;
/**
* 展示名
*/
private String displayName;
/**
* 排序值
*/
private Integer sort;
/**
* 备注
*/
private String memo;
/**
* 创建时间
*/
private Date createTime;
}

View File

@ -1,30 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.oauth;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO;
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenReqDTO;
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RefreshAccessTokenReqDTO;
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RemoveTokenByUserReqDTO;
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;
/**
* 部门 Rpc 接口
*/
@FeignClient(value = "system-service")
public interface OAuthFeign {
@PostMapping("/system/oauth/createAccessToken")
public CommonResult<OAuth2AccessTokenRespDTO> createAccessToken(@RequestBody OAuth2CreateAccessTokenReqDTO createAccessTokenDTO);
@GetMapping("/system/oauth/checkAccessToken")
public CommonResult<OAuth2AccessTokenRespDTO> checkAccessToken(@RequestParam("accessToken") String accessToken) ;
@PostMapping("/system/oauth/refreshAccessToken")
public CommonResult<OAuth2AccessTokenRespDTO> refreshAccessToken(@RequestBody OAuth2RefreshAccessTokenReqDTO refreshAccessTokenDTO);
@PostMapping("/system/oauth/removeToken")
public CommonResult<Boolean> removeToken(@RequestBody OAuth2RemoveTokenByUserReqDTO removeTokenDTO);
}

View File

@ -1,38 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.oauth.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* OAuth2.0 访问令牌 Response DTO
*/
@Data
@Accessors(chain = true)
public class OAuth2AccessTokenRespDTO implements Serializable {
/**
* 访问令牌
*/
private String accessToken;
/**
* 刷新令牌
*/
private String refreshToken;
/**
* 用户编号
*/
private Integer userId;
/**
* 用户类型
*/
private Integer userType;
/**
* 过期时间
*/
private Date expiresTime;
}

View File

@ -1,34 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.oauth.dto;
import cn.iocoder.common.framework.enums.UserTypeEnum;
import cn.iocoder.common.framework.validator.InEnum;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* OAuth2.0 访问令牌创建 Request DTO
*/
@Data
@Accessors(chain = true)
public class OAuth2CreateAccessTokenReqDTO implements Serializable {
/**
* 用户编号
*/
@NotNull(message = "用户编号不能为空")
private Integer userId;
/**
* 用户类型
*/
@NotNull(message = "用户类型不能为空")
@InEnum(value = UserTypeEnum.class, message = "用户类型必须是 {value}")
private Integer userType;
/**
* 创建 IP
*/
private String createIp;
}

View File

@ -1,24 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.oauth.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* OAuth2.0 访问令牌创建 Request DTO
*/
@Data
@Accessors(chain = true)
public class OAuth2RefreshAccessTokenReqDTO implements Serializable {
/**
* 刷新令牌
*/
private String refreshToken;
/**
* 创建 IP
*/
private String createIp;
}

View File

@ -1,32 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.oauth.dto;
import cn.iocoder.common.framework.enums.UserTypeEnum;
import cn.iocoder.common.framework.validator.InEnum;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* OAuth2.0 移除用户令牌 Request DTO
*
* 包括访问令牌和刷新令牌
*/
@Data
@Accessors(chain = true)
public class OAuth2RemoveTokenByUserReqDTO implements Serializable {
/**
* 用户编号
*/
@NotNull(message = "用户编号不能为空")
private Integer userId;
/**
* 用户类型
*/
@NotNull(message = "用户类型不能为空")
@InEnum(value = UserTypeEnum.class, message = "用户类型必须是 {value}")
private Integer userType;
}

View File

@ -1,39 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.permission;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.systemservice.rpc.permission.dto.PermissionAssignAdminRoleDTO;
import cn.iocoder.mall.systemservice.rpc.permission.dto.PermissionAssignRoleResourceDTO;
import cn.iocoder.mall.systemservice.rpc.permission.dto.PermissionCheckDTO;
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;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
/**
*/
@FeignClient("system-service")
public interface PermissionFeign {
@GetMapping("/system/permission/listRoleResourceIds")
public CommonResult<Set<Integer>> listRoleResourceIds(@RequestParam("roleId")Integer roleId) ;
@PostMapping("/system/permission/assignRoleResource")
public CommonResult<Boolean> assignRoleResource(@RequestBody PermissionAssignRoleResourceDTO assignRoleResourceDTO);
@GetMapping("/system/permission/listAdminRoleIds")
public CommonResult<Set<Integer>> listAdminRoleIds(@RequestParam("adminId")Integer adminId);
@GetMapping("/system/permission/mapAdminRoleIds")
public CommonResult<Map<Integer, Set<Integer>>> mapAdminRoleIds(@RequestParam("adminIds") Collection<Integer> adminIds);
@PostMapping("/system/permission/assignAdminRole")
public CommonResult<Boolean> assignAdminRole(@RequestBody PermissionAssignAdminRoleDTO assignAdminRoleDTO);
@PostMapping("/system/permission/checkPermission")
public CommonResult<Boolean> checkPermission(@RequestBody PermissionCheckDTO checkDTO) ;
}

View File

@ -1,42 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.permission;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceCreateDTO;
import cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO;
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;
import java.util.Collection;
import java.util.List;
/**
* 部门 Rpc 接口
*/
@FeignClient("system-service")
public interface ResourceFeign {
@PostMapping("/system/resource/createResource")
public CommonResult<Integer> createResource(@RequestBody ResourceCreateDTO createDTO);
@PostMapping("/system/resource/updateResource")
public CommonResult<Boolean> updateResource(@RequestBody ResourceUpdateDTO updateDTO);
@GetMapping("/system/resource/deleteResource")
public CommonResult<Boolean> deleteResource(@RequestParam("resourceId") Integer resourceId) ;
@GetMapping("/system/resource/getResource")
public CommonResult<ResourceVO> getResource(@RequestParam("resourceId") Integer resourceId);
@GetMapping("/system/resource/listAllResource")
public CommonResult<List<ResourceVO>> listResource() ;
@GetMapping("/system/resource/listResource")
public CommonResult<List<ResourceVO>> listResource(@RequestParam("resourceIds") List<Integer> resourceIds);
@GetMapping("/system/resource/listRoleResource")
public CommonResult<List<ResourceVO>> listRoleResource(@RequestParam("roleIds") Collection<Integer> roleIds, @RequestParam("type") Integer type) ;
}

View File

@ -1,52 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.permission;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceCreateDTO;
import cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.permission.dto.RolePageDTO;
import cn.iocoder.mall.systemservice.rpc.permission.dto.RoleUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO;
import cn.iocoder.mall.systemservice.rpc.permission.vo.RoleCreateDTO;
import cn.iocoder.mall.systemservice.rpc.permission.vo.RoleVO;
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;
import java.util.Collection;
import java.util.List;
import java.util.Set;
/**
* 部门 Rpc 接口
*/
@FeignClient("system-service")
public interface RoleFeign {
@PostMapping("/system/role/createRole")
public CommonResult<Integer> createRole(@RequestBody RoleCreateDTO createDTO) ;
@PostMapping("/system/role/updateRole")
public CommonResult<Boolean> updateRole(@RequestBody RoleUpdateDTO updateDTO);
@GetMapping("/system/role/deleteRole")
public CommonResult<Boolean> deleteRole(@RequestParam("roleId")Integer roleId) ;
@GetMapping("/system/role/getRole")
public CommonResult<RoleVO> getRole(@RequestParam("roleId")Integer roleId);
@GetMapping("/system/role/listAllRoles")
public CommonResult<List<RoleVO>> listAllRoles() ;
@GetMapping("/system/role/listRoles")
public CommonResult<List<RoleVO>> listRoles(@RequestParam("roleIds")Collection<Integer> roleIds) ;
@PostMapping("/system/role/pageRole")
public CommonResult<PageResult<RoleVO>> pageRole(@RequestBody RolePageDTO pageDTO);
@GetMapping("/system/role/listAdminRoleIds")
public CommonResult<Set<Integer>> listAdminRoleIds(@RequestParam("adminId") Integer adminId) ;
}

View File

@ -1,27 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.permission.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Set;
/**
* 赋予管理员角色 DTO
*/
@Data
@Accessors(chain = true)
public class PermissionAssignAdminRoleDTO implements Serializable {
/**
* 管理员编号
*/
@NotNull(message = "管理员编号不能为空")
private Integer adminId;
/**
* 角色编号列表
*/
private Set<Integer> roleIds;
}

View File

@ -1,27 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.permission.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Set;
/**
* 赋予角色资源 DTO
*/
@Data
@Accessors(chain = true)
public class PermissionAssignRoleResourceDTO implements Serializable {
/**
* 角色编号
*/
@NotNull(message = "角色编号不能为空")
private Integer roleId;
/**
* 资源编号列表
*/
private Set<Integer> resourceIds;
}

View File

@ -1,22 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.permission.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Collection;
/**
* 权限校验 DTO
*/
@Data
@Accessors(chain = true)
public class PermissionCheckDTO implements Serializable {
@NotNull(message = "管理员编号不能为空")
private Integer adminId;
@NotNull(message = "权限不能为空")
private Collection<String> permissions;
}

View File

@ -1,63 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.permission.dto;
import cn.iocoder.common.framework.validator.InEnum;
import cn.iocoder.mall.systemservice.enums.permission.ResourceTypeEnum;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 资源创建 DTO
*/
@Data
@Accessors(chain = true)
public class ResourceCreateDTO implements Serializable {
/**
* 菜单名
*/
@NotEmpty(message = "菜单名不能为空")
private String name;
/**
* 权限标识
*/
private String permission;
/**
* 资源类型
*/
@NotNull(message = "资源类型不能为空")
@InEnum(value = ResourceTypeEnum.class, message = "资源类型必须是 {value}")
private Integer type;
/**
* 排序
*/
@NotNull(message = "排序不能为空")
private Integer sort;
/**
* 父级资源编号
*/
@NotNull(message = "父级资源编号不能为空")
private Integer pid;
/**
* 前端路由
*/
private String route;
/**
* 菜单图标
*/
private String icon;
/**
* 前端界面
*/
private String view;
/**
* 创建管理员编号
*/
@NotNull(message = "创建管理员编号不能为空")
private Integer createAdminId;
}

View File

@ -1,62 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.permission.dto;
import cn.iocoder.common.framework.validator.InEnum;
import cn.iocoder.mall.systemservice.enums.permission.ResourceTypeEnum;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 资源更新 DTO
*/
@Data
@Accessors(chain = true)
public class ResourceUpdateDTO implements Serializable {
/**
* 资源编号
*/
@NotNull(message = "资源编号不能为空")
private Integer id;
/**
* 菜单名
*/
@NotEmpty(message = "菜单名不能为空")
private String name;
/**
* 权限标识
*/
private String permission;
/**
* 资源类型
*/
@NotNull(message = "资源类型不能为空")
@InEnum(value = ResourceTypeEnum.class, message = "资源类型必须是 {value}")
private Integer type;
/**
* 排序
*/
@NotNull(message = "排序不能为空")
private Integer sort;
/**
* 父级资源编号
*/
@NotNull(message = "父级资源编号不能为空")
private Integer pid;
/**
* 前端路由
*/
private String route;
/**
* 菜单图标
*/
private String icon;
/**
* 前端界面
*/
private String view;
}

View File

@ -1,21 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.permission.dto;
import cn.iocoder.common.framework.vo.PageParam;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 角色分页 DTO
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class RolePageDTO extends PageParam {
/**
* 角色名
*/
private String name;
}

View File

@ -1,32 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.permission.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 角色更新 DTO
*/
@Data
@Accessors(chain = true)
public class RoleUpdateDTO implements Serializable {
/**
* 角色编号
*/
@NotNull(message = "角色编号不能为空")
private Integer id;
/**
* 角色名
*/
@NotEmpty(message = "角色名不能为空")
private String name;
/**
* 角色编码
*/
private String code;
}

View File

@ -1,57 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.permission.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 资源 VO
*/
@Data
@Accessors(chain = true)
public class ResourceVO implements Serializable {
/**
* 资源编号
*/
private Integer id;
/**
* 菜单名
*/
private String name;
/**
* 权限标识
*/
private String permission;
/**
* 资源类型
*/
private Integer type;
/**
* 排序
*/
private Integer sort;
/**
* 父级资源编号
*/
private Integer pid;
/**
* 前端路由
*/
private String route;
/**
* 菜单图标
*/
private String icon;
/**
* 前端界面
*/
private String view;
/**
* 添加时间
*/
private Date createTime;
}

View File

@ -1,33 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.permission.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 角色创建 DTO
*/
@Data
@Accessors(chain = true)
public class RoleCreateDTO implements Serializable {
/**
* 角色名
*/
@NotEmpty(message = "角色名不能为空")
private String name;
/**
* 角色编码
*/
private String code;
/**
* 创建管理员编号
*/
@NotNull(message = "创建管理员编号不能为空")
private Integer createAdminId;
}

View File

@ -1,45 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.permission.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 角色 VO
*/
@Data
@Accessors(chain = true)
public class RoleVO implements Serializable {
/**
* 角色编号
*/
private Integer id;
/**
* 角色名
*/
private String name;
/**
* 角色编码
*/
private String code;
/**
* 角色类型
*/
private Integer type;
/**
* 创建管理员编号
*/
private Integer createAdminId;
/**
* 创建时间
*/
private Date createTime;
/**
* 最后更新时间
*/
private Date updateTime;
}

View File

@ -1,24 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.systemlog;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.systemservice.rpc.systemlog.dto.SystemAccessLogCreateDTO;
import cn.iocoder.mall.systemservice.rpc.systemlog.vo.SystemAccessLogPageDTO;
import cn.iocoder.mall.systemservice.rpc.systemlog.vo.SystemAccessLogVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* 部门 Rpc 接口
*/
@FeignClient("system-service")
public interface SystemAccessLogFeign {
@PostMapping("/system/accesslog/createSystemAccessLog")
public CommonResult<Boolean> createSystemAccessLog(@RequestBody SystemAccessLogCreateDTO createDTO);
@PostMapping("/system/accesslog/pageSystemAccessLog")
public CommonResult<PageResult<SystemAccessLogVO>> pageSystemAccessLog(@RequestBody SystemAccessLogPageDTO pageDTO);
}

View File

@ -1,31 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.systemlog;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.systemservice.rpc.systemlog.dto.SystemExceptionLogCreateDTO;
import cn.iocoder.mall.systemservice.rpc.systemlog.dto.SystemExceptionLogPageDTO;
import cn.iocoder.mall.systemservice.rpc.systemlog.dto.SystemExceptionLogProcessDTO;
import cn.iocoder.mall.systemservice.rpc.systemlog.vo.SystemExceptionLogVO;
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;
/**
* 部门 Rpc 接口
*/
@FeignClient("system-service")
public interface SystemExceptionLogFeign {
@PostMapping("/system/exceptionlog/createSystemExceptionLog")
public CommonResult<Boolean> createSystemExceptionLog(@RequestBody SystemExceptionLogCreateDTO createDTO);
@GetMapping("/system/exceptionlog/getSystemExceptionLog")
public CommonResult<SystemExceptionLogVO> getSystemExceptionLog(@RequestParam("systemExceptionLogId") Integer systemExceptionLogId);
@PostMapping("/system/exceptionlog/pageSystemExceptionLog")
public CommonResult<PageResult<SystemExceptionLogVO>> pageSystemExceptionLog(@RequestBody SystemExceptionLogPageDTO pageDTO) ;
@PostMapping("/system/exceptionlog/processSystemExceptionLog")
public CommonResult<Boolean> processSystemExceptionLog(@RequestBody SystemExceptionLogProcessDTO processDTO) ;
}

View File

@ -1,55 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.systemlog.dto;
import cn.iocoder.common.framework.enums.UserTypeEnum;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
/**
* 系统访问日志添加 DTO
*/
@Data
@Accessors(chain = true)
public class SystemAccessLogCreateDTO implements Serializable {
/**
* 账号编号
*/
private Integer userId;
/**
* 用户类型
*
* 枚举 {@link UserTypeEnum}
*/
private Integer userType;
/**
* 链路编号
*/
private String traceId;
@NotNull(message = "应用名不能为空")
private String applicationName;
@NotNull(message = "访问地址不能为空")
private String uri;
@NotNull(message = "请求参数不能为空")
private String queryString;
@NotNull(message = "http 请求方法不能为空")
private String method;
@NotNull(message = "User-Agent 不能为空")
private String userAgent;
@NotNull(message = "ip 不能为空")
private String ip;
@NotNull(message = "请求时间不能为空")
private Date startTime;
@NotNull(message = "响应时长不能为空")
private Integer responseTime;
@NotNull(message = "错误码不能为空")
private Integer errorCode;
/**
* 错误提示
*/
private String errorMessage;
}

View File

@ -1,63 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.systemlog.dto;
import cn.iocoder.common.framework.enums.UserTypeEnum;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
/**
* 系统异常日志添加 DTO
*/
@Data
@Accessors(chain = true)
public class SystemExceptionLogCreateDTO implements Serializable {
/**
* 账号编号
*/
private Integer userId;
/**
* 用户类型
*
* 枚举 {@link UserTypeEnum}
*/
private Integer userType;
/**
* 链路编号
*/
private String traceId;
@NotNull(message = "应用名不能为空")
private String applicationName;
@NotNull(message = "访问地址不能为空")
private String uri;
@NotNull(message = "请求参数不能为空")
private String queryString;
@NotNull(message = "http 请求方法不能为空")
private String method;
@NotNull(message = "User-Agent 不能为空")
private String userAgent;
@NotNull(message = "ip 不能为空")
private String ip;
@NotNull(message = "异常时间不能为空")
private Date exceptionTime;
@NotNull(message = "异常名不能为空")
private String exceptionName;
@NotNull(message = "异常发生的类全名不能为空")
private String exceptionClassName;
@NotNull(message = "异常发生的类文件不能为空")
private String exceptionFileName;
@NotNull(message = "异常发生的方法名不能为空")
private String exceptionMethodName;
@NotNull(message = "异常发生的方法所在行不能为空")
private Integer exceptionLineNumber;
@NotNull(message = "异常的栈轨迹不能为空")
private String exceptionStackTrace;
@NotNull(message = "异常导致的根消息不能为空")
private String exceptionRootCauseMessage;
@NotNull(message = "异常导致的消息不能为空")
private String exceptionMessage;
}

View File

@ -1,35 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.systemlog.dto;
import cn.iocoder.common.framework.vo.PageParam;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 系统异常日志分页 DTO
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class SystemExceptionLogPageDTO extends PageParam {
/**
* 用户编号
*/
private Integer userId;
/**
* 用户类型
*/
private Integer userType;
/**
* 应用名
*
* 目前读取 spring.application.name
*/
private String applicationName;
/**
* 处理状态
*/
private Integer processStatus;
}

View File

@ -1,37 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.systemlog.dto;
import cn.iocoder.common.framework.validator.InEnum;
import cn.iocoder.common.framework.vo.PageParam;
import cn.iocoder.mall.systemservice.enums.systemlog.SystemExceptionLogProcessStatusEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
/**
* 系统异常日志处理 DTO
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class SystemExceptionLogProcessDTO extends PageParam {
/**
* 系统异常日志编号
*/
@NotNull(message = "系统异常日志编号不能为空")
private Integer logId;
/**
* 处理状态
*/
@NotNull(message = "处理状态不能为空")
@InEnum(value = SystemExceptionLogProcessStatusEnum.class, message = "处理状态必须是 {value}")
private Integer processStatus;
/**
* 处理管理员编号
*/
@NotNull(message = "处理管理员编号不能为空")
private Integer processAdminId;
}

View File

@ -1,29 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.systemlog.vo;
import cn.iocoder.common.framework.vo.PageParam;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 系统访问日志分页 DTO
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class SystemAccessLogPageDTO extends PageParam {
/**
* 用户编号
*/
private Integer userId;
/**
* 用户类型
*/
private Integer userType;
/**
* 应用名
*/
private String applicationName;
}

View File

@ -1,73 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.systemlog.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 系统访问日志 VO
*/
@Data
@Accessors(chain = true)
public class SystemAccessLogVO implements Serializable {
/**
* 编号
*/
private Integer id;
/**
* 用户编号
*/
private Integer userId;
/**
* 用户类型
*/
private Integer userType;
/**
* 链路追踪编号
*/
private String traceId;
/**
* 应用名
*/
private String applicationName;
/**
* 访问地址
*/
private String uri;
/**
* 参数
*/
private String queryString;
/**
* http 方法
*/
private String method;
/**
* userAgent
*/
private String userAgent;
/**
* ip
*/
private String ip;
/**
* 请求时间
*/
private Date startTime;
/**
* 响应时长 -- 毫秒级
*/
private Integer responseTime;
/**
* 错误码
*/
private Integer errorCode;
/**
* 错误提示
*/
private String errorMessage;
}

View File

@ -1,125 +0,0 @@
package cn.iocoder.mall.systemservice.rpc.systemlog.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 系统异常日志 VO
*/
@Data
@Accessors(chain = true)
public class SystemExceptionLogVO implements Serializable {
/**
* 编号
*/
private Integer id;
/**
* 用户编号
*/
private Integer userId;
/**
* 用户类型
*/
private Integer userType;
/**
* 链路追踪编号
*
* 一般来说通过链路追踪编号可以将访问日志错误日志链路追踪日志logger 打印日志等结合在一起从而进行排错
*/
private String traceId;
/**
* 应用名
*
* 目前读取 spring.application.name
*/
private String applicationName;
/**
* 访问地址
*/
private String uri;
/**
* 参数
*/
private String queryString;
/**
* http 方法
*/
private String method;
/**
* userAgent
*/
private String userAgent;
/**
* ip
*/
private String ip;
/**
* 异常发生时间
*/
private Date exceptionTime;
/**
* 异常名
*
* {@link Throwable#getClass()} 的类全名
*/
private String exceptionName;
/**
* 异常导致的消息
*
* {@link cn.iocoder.common.framework.util.ExceptionUtil#getMessage(Throwable)}
*/
private String exceptionMessage;
/**
* 异常导致的根消息
*
* {@link cn.iocoder.common.framework.util.ExceptionUtil#getRootCauseMessage(Throwable)}
*/
private String exceptionRootCauseMessage;
/**
* 异常的栈轨迹
*
* {@link cn.iocoder.common.framework.util.ExceptionUtil#getServiceException(Exception)}
*/
private String exceptionStackTrace;
/**
* 异常发生的类全名
*
* {@link StackTraceElement#getClassName()}
*/
private String exceptionClassName;
/**
* 异常发生的类文件
*
* {@link StackTraceElement#getFileName()}
*/
private String exceptionFileName;
/**
* 异常发生的方法名
*
* {@link StackTraceElement#getMethodName()}
*/
private String exceptionMethodName;
/**
* 异常发生的方法所在行
*
* {@link StackTraceElement#getLineNumber()}
*/
private Integer exceptionLineNumber;
/**
* 处理状态
*/
private Integer processStatus;
/**
* 处理时间
*/
private Date processTime;
/**
* 处理管理员编号
*/
private Integer processAdminId;
}

View File

@ -1,103 +0,0 @@
<?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>system-service-project</artifactId>
<groupId>cn.iocoder.mall</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>system-service-app</artifactId>
<dependencies>
<!-- RPC 相关 -->
<dependency>
<groupId>cn.iocoder.mall</groupId>
<artifactId>mall-spring-boot-starter-dubbo</artifactId>
</dependency>
<dependency>
<!-- 系统服务 -->
<groupId>cn.iocoder.mall</groupId>
<artifactId>system-service-api</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.mall</groupId>
<artifactId>mall-spring-boot-starter-system-error-code</artifactId> <!-- 错误码 -->
</dependency>
<!-- Web 相关 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <!-- 需要开启 Web 容器,因为 Actuator 需要使用到 -->
</dependency>
<!-- Registry 和 Config 相关 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- DB 相关 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.mall</groupId>
<artifactId>mall-spring-boot-starter-mybatis</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.mall</groupId>
<artifactId>mall-spring-boot-starter-redis</artifactId>
</dependency>
<!-- 监控相关 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 工具类相关 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId> <!-- use mapstruct-jdk8 for Java 8 or higher -->
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
</dependency>
</dependencies>
<build>
<!-- 设置构建的 jar 包名 -->
<finalName>${project.artifactId}</finalName>
<!-- 使用 spring-boot-maven-plugin 插件打包 -->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

View File

@ -1,17 +0,0 @@
package cn.iocoder.mall.systemservice;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {"cn.iocoder.mall.systemservice.rpc"})
public class SystemServiceApplication {
public static void main(String[] args) {
SpringApplication.run(SystemServiceApplication.class, args);
}
}

View File

@ -1,9 +0,0 @@
package cn.iocoder.mall.systemservice.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
@Configuration
@EnableAsync(proxyTargetClass = true) // 开启 Spring Async 异步的功能
public class AsyncConfiguration {
}

View File

@ -1,28 +0,0 @@
package cn.iocoder.mall.systemservice.config;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
@MapperScan("cn.iocoder.mall.systemservice.dal.mysql.mapper") // 扫描对应的 Mapper 接口
@EnableTransactionManagement(proxyTargetClass = true) // 启动事务管理
public class DatabaseConfiguration {
// 数据库连接池 Druid
@Bean
public ISqlInjector sqlInjector() {
return new DefaultSqlInjector(); // MyBatis Plus 逻辑删除
}
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor(); // MyBatis Plus 分页插件
}
}

View File

@ -1,30 +0,0 @@
package cn.iocoder.mall.systemservice.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotNull;
/**
* 系统服务的业务配置项
*/
@Component
@ConfigurationProperties("biz")
@Validated
@Data
public class SystemBizProperties {
/**
* 访问令牌过期时间单位毫秒
*/
@NotNull(message = "访问令牌过期时间不能为空")
private int accessTokenExpireTimeMillis;
/**
* 刷新令牌过期时间单位毫秒
*/
@NotNull(message = "刷新令牌过期时间不能为空")
private int refreshTokenExpireTimeMillis;
}

View File

@ -1,42 +0,0 @@
package cn.iocoder.mall.systemservice.convert.admin;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.admin.AdminDO;
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminCreateDTO;
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminPageDTO;
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO;
import cn.iocoder.mall.systemservice.service.admin.bo.AdminBO;
import cn.iocoder.mall.systemservice.service.admin.bo.AdminCreateBO;
import cn.iocoder.mall.systemservice.service.admin.bo.AdminPageBO;
import cn.iocoder.mall.systemservice.service.admin.bo.AdminUpdateBO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
@Mapper
public interface AdminConvert {
AdminConvert INSTANCE = Mappers.getMapper(AdminConvert.class);
AdminBO convert(AdminDO bean);
AdminVO convert(AdminBO bean);
AdminDO convert(AdminCreateBO bean);
AdminDO convert(AdminUpdateBO bean);
AdminCreateBO convert(AdminCreateDTO bean);
AdminUpdateBO convert(AdminUpdateDTO bean);
@Mapping(source = "records", target = "list")
PageResult<AdminBO> convertPage(IPage<AdminDO> page);
AdminPageBO convert(AdminPageDTO page);
PageResult<AdminVO> convert(PageResult<AdminBO> adminPage);
}

View File

@ -1,35 +0,0 @@
package cn.iocoder.mall.systemservice.convert.admin;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.admin.DepartmentDO;
import cn.iocoder.mall.systemservice.rpc.admin.dto.DepartmentCreateDTO;
import cn.iocoder.mall.systemservice.rpc.admin.dto.DepartmentUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.admin.vo.DepartmentVO;
import cn.iocoder.mall.systemservice.service.admin.bo.DepartmentBO;
import cn.iocoder.mall.systemservice.service.admin.bo.DepartmentCreateBO;
import cn.iocoder.mall.systemservice.service.admin.bo.DepartmentUpdateBO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper
public interface DepartmentConvert {
DepartmentConvert INSTANCE = Mappers.getMapper(DepartmentConvert.class);
DepartmentDO convert(DepartmentCreateBO bean);
DepartmentBO convert(DepartmentDO bean);
DepartmentDO convert(DepartmentUpdateBO bean);
DepartmentUpdateBO convert(DepartmentUpdateDTO bean);
DepartmentCreateBO convert(DepartmentCreateDTO bean);
DepartmentVO convert(DepartmentBO bean);
List<DepartmentBO> convertList(List<DepartmentDO> list);
List<DepartmentVO> convertList02(List<DepartmentBO> list);
}

View File

@ -1,36 +0,0 @@
package cn.iocoder.mall.systemservice.convert.datadict;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.datadict.DataDictDO;
import cn.iocoder.mall.systemservice.rpc.datadict.dto.DataDictCreateDTO;
import cn.iocoder.mall.systemservice.rpc.datadict.dto.DataDictUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.datadict.vo.DataDictVO;
import cn.iocoder.mall.systemservice.service.datadict.bo.DataDictBO;
import cn.iocoder.mall.systemservice.service.datadict.bo.DataDictCreateBO;
import cn.iocoder.mall.systemservice.service.datadict.bo.DataDictUpdateBO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper
public interface DataDictConvert {
DataDictConvert INSTANCE = Mappers.getMapper(DataDictConvert.class);
DataDictDO convert(DataDictCreateBO bean);
DataDictBO convert(DataDictDO bean);
DataDictDO convert(DataDictUpdateBO bean);
List<DataDictBO> convertList(List<DataDictDO> list);
DataDictCreateBO convert(DataDictCreateDTO bean);
DataDictUpdateBO convert(DataDictUpdateDTO bean);
DataDictVO convert(DataDictBO bean);
List<DataDictVO> convertList02(List<DataDictBO> list);
}

View File

@ -1,50 +0,0 @@
package cn.iocoder.mall.systemservice.convert.errorcode;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.errorcode.ErrorCodeDO;
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeAutoGenerateDTO;
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeCreateDTO;
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodePageDTO;
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.errorcode.vo.ErrorCodeVO;
import cn.iocoder.mall.systemservice.service.errorcode.bo.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper
public interface ErrorCodeConvert {
ErrorCodeConvert INSTANCE = Mappers.getMapper(ErrorCodeConvert.class);
ErrorCodeDO convert(ErrorCodeCreateBO bean);
ErrorCodeBO convert(ErrorCodeDO bean);
List<ErrorCodeBO> convertList(List<ErrorCodeDO> list);
@Mapping(source = "records", target = "list")
PageResult<ErrorCodeBO> convertPage(IPage<ErrorCodeDO> page);
ErrorCodeDO convert(ErrorCodeUpdateBO bean);
ErrorCodeCreateBO convert(ErrorCodeCreateDTO bean);
ErrorCodeUpdateBO convert(ErrorCodeUpdateDTO bean);
ErrorCodeVO convert(ErrorCodeBO bean);
List<ErrorCodeVO> convertList02(List<ErrorCodeBO> list);
PageResult<ErrorCodeVO> convertPage(PageResult<ErrorCodeBO> page);
ErrorCodePageBO convert(ErrorCodePageDTO bean);
ErrorCodeDO convert(ErrorCodeAutoGenerateBO bean);
List<ErrorCodeAutoGenerateBO> convertList03(List<ErrorCodeAutoGenerateDTO> list);
}

View File

@ -1,17 +0,0 @@
package cn.iocoder.mall.systemservice.convert.oauth;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.oauth.OAuth2AccessTokenDO;
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
@Mapper
public interface OAuth2Convert {
OAuth2Convert INSTANCE = Mappers.getMapper(OAuth2Convert.class);
@Mapping(source = "id", target = "accessToken")
OAuth2AccessTokenRespDTO convert(OAuth2AccessTokenDO bean);
}

View File

@ -1,35 +0,0 @@
package cn.iocoder.mall.systemservice.convert.permission;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.permission.ResourceDO;
import cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceCreateDTO;
import cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO;
import cn.iocoder.mall.systemservice.service.permission.bo.ResourceBO;
import cn.iocoder.mall.systemservice.service.permission.bo.ResourceCreateBO;
import cn.iocoder.mall.systemservice.service.permission.bo.ResourceUpdateBO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper
public interface ResourceConvert {
ResourceConvert INSTANCE = Mappers.getMapper(ResourceConvert.class);
ResourceDO convert(ResourceCreateBO bean);
ResourceBO convert(ResourceDO bean);
ResourceDO convert(ResourceUpdateBO bean);
ResourceCreateBO convert(ResourceCreateDTO bean);
ResourceVO convert(ResourceBO bean);
ResourceUpdateBO convert(ResourceUpdateDTO bean);
List<ResourceBO> convertList(List<ResourceDO> list);
List<ResourceVO> convertList02(List<ResourceBO> list);
}

View File

@ -1,48 +0,0 @@
package cn.iocoder.mall.systemservice.convert.permission;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.permission.RoleDO;
import cn.iocoder.mall.systemservice.rpc.permission.dto.RolePageDTO;
import cn.iocoder.mall.systemservice.rpc.permission.dto.RoleUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.permission.vo.RoleCreateDTO;
import cn.iocoder.mall.systemservice.rpc.permission.vo.RoleVO;
import cn.iocoder.mall.systemservice.service.permission.bo.RoleBO;
import cn.iocoder.mall.systemservice.service.permission.bo.RoleCreateBO;
import cn.iocoder.mall.systemservice.service.permission.bo.RolePageBO;
import cn.iocoder.mall.systemservice.service.permission.bo.RoleUpdateBO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper
public interface RoleConvert {
RoleConvert INSTANCE = Mappers.getMapper(RoleConvert.class);
RoleDO convert(RoleCreateBO bean);
RoleBO convert(RoleDO bean);
RoleDO convert(RoleUpdateBO bean);
RoleCreateBO convert(RoleCreateDTO bean);
RoleUpdateBO convert(RoleUpdateDTO bean);
RolePageBO convert(RolePageDTO bean);
RoleVO convert(RoleBO bean);
List<RoleBO> convertList(List<RoleDO> list);
List<RoleVO> convertList02(List<RoleBO> list);
@Mapping(source = "records", target = "list")
PageResult<RoleBO> convertPage(IPage<RoleDO> page);
PageResult<RoleVO> convertPage(PageResult<RoleBO> page);
}

View File

@ -1,32 +0,0 @@
package cn.iocoder.mall.systemservice.convert.systemlog;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.systemlog.SystemAccessLogDO;
import cn.iocoder.mall.systemservice.rpc.systemlog.dto.SystemAccessLogCreateDTO;
import cn.iocoder.mall.systemservice.rpc.systemlog.vo.SystemAccessLogPageDTO;
import cn.iocoder.mall.systemservice.rpc.systemlog.vo.SystemAccessLogVO;
import cn.iocoder.mall.systemservice.service.systemlog.bo.SystemAccessLogBO;
import cn.iocoder.mall.systemservice.service.systemlog.bo.SystemAccessLogCreateBO;
import cn.iocoder.mall.systemservice.service.systemlog.bo.SystemAccessLogPageBO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
@Mapper
public interface SystemAccessLogConvert {
SystemAccessLogConvert INSTANCE = Mappers.getMapper(SystemAccessLogConvert.class);
SystemAccessLogDO convert(SystemAccessLogCreateBO bean);
SystemAccessLogCreateBO convert(SystemAccessLogCreateDTO bean);
@Mapping(source = "records", target = "list")
PageResult<SystemAccessLogBO> convertPage(IPage<SystemAccessLogDO> page);
SystemAccessLogPageBO convert(SystemAccessLogPageDTO bean);
PageResult<SystemAccessLogVO> convertPage(PageResult<SystemAccessLogBO> page);
}

View File

@ -1,36 +0,0 @@
package cn.iocoder.mall.systemservice.convert.systemlog;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.systemlog.SystemExceptionLogDO;
import cn.iocoder.mall.systemservice.rpc.systemlog.dto.SystemExceptionLogCreateDTO;
import cn.iocoder.mall.systemservice.rpc.systemlog.dto.SystemExceptionLogPageDTO;
import cn.iocoder.mall.systemservice.rpc.systemlog.vo.SystemExceptionLogVO;
import cn.iocoder.mall.systemservice.service.systemlog.bo.SystemExceptionLogBO;
import cn.iocoder.mall.systemservice.service.systemlog.bo.SystemExceptionLogCreateBO;
import cn.iocoder.mall.systemservice.service.systemlog.bo.SystemExceptionLogPageBO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
@Mapper
public interface SystemExceptionLogConvert {
SystemExceptionLogConvert INSTANCE = Mappers.getMapper(SystemExceptionLogConvert.class);
SystemExceptionLogDO convert(SystemExceptionLogCreateBO bean);
SystemExceptionLogCreateBO convert(SystemExceptionLogCreateDTO bean);
@Mapping(source = "records", target = "list")
PageResult<SystemExceptionLogBO> convertPage(IPage<SystemExceptionLogDO> page);
SystemExceptionLogBO convert(SystemExceptionLogDO bean);
SystemExceptionLogVO convert(SystemExceptionLogBO bean);
SystemExceptionLogPageBO convert(SystemExceptionLogPageDTO bean);
PageResult<SystemExceptionLogVO> convertPage(PageResult<SystemExceptionLogBO> page);
}

View File

@ -1,70 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.dataobject.admin;
import cn.iocoder.mall.mybatis.core.dataobject.BaseDO;
import cn.iocoder.mall.systemservice.enums.admin.AdminStatusEnum;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 管理员实体
*
* uk_username 索引基于 {@link #username} 字段
*/
@TableName(value = "admin")
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class AdminDO extends BaseDO {
/**
* 管理员编号
*/
private Integer id;
/**
* 真实名字
*/
private String name;
/**
* 头像
*/
private String avatar;
/**
* 部门编号
*
* 关联 {@link DepartmentDO#getId()}
*/
private Integer departmentId;
/**
* 在职状态
*
* 枚举 {@link AdminStatusEnum}
*/
private Integer status;
/**
* 登陆账号
*/
private String username;
/**
* 经过加密的密码串
*/
private String password;
/**
* {@link #password} 的盐
*/
private String passwordSalt;
/**
* 创建管理员编号
*
* 外键 {@link AdminDO#id}
*/
private Integer createAdminId;
/**
* 创建 IP
*/
private String createIp;
}

View File

@ -1,37 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.dataobject.admin;
import cn.iocoder.mall.mybatis.core.dataobject.DeletableDO;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 部门实体
*/
@TableName(value = "admin_department")
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class DepartmentDO extends DeletableDO {
/**
* 部门编号
*/
private Integer id;
/**
* 部门名称
*/
private String name;
/**
* 排序值
*/
private Integer sort;
/**
* 父级部门编号
*
* 外键 {@link #id}
*/
private Integer pid;
}

View File

@ -1,49 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.dataobject.datadict;
import cn.iocoder.mall.mybatis.core.dataobject.DeletableDO;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 数据字典
*
* 使用 {@link #enumValue} 作为聚合例如说
*
* enumValue gender 性别
* value1
* value2
*/
@TableName("system_data_dict")
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class DataDictDO extends DeletableDO {
/**
* 编号
*/
private Integer id;
/**
* 大类枚举值
*/
private String enumValue;
/**
* 小类数值
*/
private String value;
/**
* 展示名
*/
private String displayName;
/**
* 排序值
*/
private Integer sort;
/**
* 备注
*/
private String memo;
}

View File

@ -1,50 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.dataobject.errorcode;
import cn.iocoder.mall.mybatis.core.dataobject.DeletableDO;
import cn.iocoder.mall.systemservice.enums.errorcode.ErrorCodeTypeEnum;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 错误码实体
*/
@TableName(value = "system_error_code")
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class ErrorCodeDO extends DeletableDO {
/**
* 错误码编号
*/
private Integer id;
/**
* 错误码编码
*/
private Integer code;
/**
* 错误码错误提示
*/
private String message;
/**
* 错误码类型
*
* 外键 {@link ErrorCodeTypeEnum}
*/
private Integer type;
/**
* 错误码分组
*
* 一般情况下可以采用应用名
*/
@TableField("`group`") // 避免和数据库关键字冲突
private String group;
/**
* 错误码备注
*/
private String memo;
}

View File

@ -1,56 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.dataobject.oauth;
import cn.iocoder.common.framework.enums.UserTypeEnum;
import cn.iocoder.mall.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* OAuth2 访问令牌
*
* idx_userId 索引对应 {@link #userId} 字段
* idx_refreshToken 索引对应 {@link #refreshToken} 字段
*/
@TableName("oauth2_access_token")
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class OAuth2AccessTokenDO extends BaseDO {
/**
* 访问令牌
*/
@TableId(type = IdType.INPUT)
private String id;
/**
* 用户编号
*/
private Integer userId;
/**
* 用户类型
*
* 枚举 {@link UserTypeEnum}
*/
private Integer userType;
/**
* 刷新令牌
*
* 关联 {@link OAuth2RefreshTokenDO#getId()}
*/
private String refreshToken;
/**
* 过期时间
*/
private Date expiresTime;
/**
* 创建 IP
*/
private String createIp;
}

View File

@ -1,49 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.dataobject.oauth;
import cn.iocoder.common.framework.enums.UserTypeEnum;
import cn.iocoder.mall.mybatis.core.dataobject.DeletableDO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* OAuth2 刷新令牌
*
* idx_userId 索引对应 {@link #userId} 字段
*/
@TableName("oauth2_refresh_token")
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class OAuth2RefreshTokenDO extends DeletableDO {
/**
* 刷新令牌
*/
@TableId(type = IdType.INPUT)
private String id;
/**
* 用户编号
*/
private Integer userId;
/**
* 用户类型
*
* 枚举 {@link UserTypeEnum}
*/
private Integer userType;
/**
* 过期时间
*/
private Date expiresTime;
/**
* 创建 IP
*/
private String createIp;
}

View File

@ -1,36 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.dataobject.permission;
import cn.iocoder.mall.mybatis.core.dataobject.DeletableDO;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.admin.AdminDO;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* {@link AdminDO} {@link RoleDO} 的关联表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("permission_admin_role")
public class AdminRoleDO extends DeletableDO {
/**
* 编号
*/
private Integer id;
/**
* 账号编号
*
* 关联 {@link AdminDO#getId()}
*/
private Integer adminId;
/**
* 角色编号
*
* 关联 {@link RoleDO#getId()}
*/
private Integer roleId;
}

View File

@ -1,82 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.dataobject.permission;
import cn.iocoder.mall.mybatis.core.dataobject.DeletableDO;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.admin.AdminDO;
import cn.iocoder.mall.systemservice.enums.permission.ResourceTypeEnum;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 资源实体
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName(value = "permission_resource")
public class ResourceDO extends DeletableDO {
/**
* 资源编号
*/
private Integer id;
/**
* 菜单名
*/
private String name;
/**
* 权限标识
*
* 一般格式为${系统}:${模块}:${操作}
* 例如说system:admin:add system 服务的添加管理员
*
* 当我们把该 ResourceDO 赋予给角色后意味着该角色有该资源
* - 对于后端配合 @RequiresPermissions 注解配置 API 接口需要该权限从而对 API 接口进行权限控制
* - 对于前端配合前端标签配置按钮是否展示避免用户没有该权限时结果可以看到该操作
*/
private String permission;
/**
* 资源类型
*
* 关联 {@link ResourceTypeEnum}
*/
private Integer type;
/**
* 排序
*/
private Integer sort;
/**
* 父级资源编号
*
* 关联{@link ResourceDO#getId()}
*/
private Integer pid;
/**
* 前端路由
*
* 目前当且仅当资源类型为 {@link ResourceTypeEnum#MENU} 才会生效
*/
private String route;
/**
* 菜单图标
*
* 目前当且仅当资源类型为 {@link ResourceTypeEnum#MENU} 才会生效
*/
private String icon;
/**
* 前端界面
* 例如说vue 框架下的 component 对应的 view 页面
*
* 目前当且仅当资源类型为 {@link ResourceTypeEnum#MENU} 才会生效
*/
private String view;
/**
* 创建管理员编号
*
* 外键 {@link AdminDO#getId()}
*/
private Integer createAdminId;
}

View File

@ -1,45 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.dataobject.permission;
import cn.iocoder.mall.mybatis.core.dataobject.DeletableDO;
import cn.iocoder.mall.systemservice.enums.permission.RoleCodeEnum;
import cn.iocoder.mall.systemservice.enums.permission.RoleTypeEnum;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 角色实体
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("permission_role")
public class RoleDO extends DeletableDO {
/**
* 角色编号
*/
private Integer id;
/**
* 角色名
*/
private String name;
/**
* 角色编码
*
* 关联 {@link RoleCodeEnum}
*/
private String code;
/**
* 角色类型
*
* 关联 {@link RoleTypeEnum}
*/
private Integer type;
/**
* 创建管理员编号
*/
private Integer createAdminId;
}

View File

@ -1,31 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.dataobject.permission;
import cn.iocoder.mall.mybatis.core.dataobject.DeletableDO;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* {@link RoleDO} {@link ResourceDO} 的关联表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("permission_role_resource")
public class RoleResourceDO extends DeletableDO {
/**
* 编号
*/
private Integer id;
/**
* 角色编号(外键{@link RoleDO}
*/
private Integer roleId;
/**
* 资源编号(外键{@link ResourceDO}
*/
private Integer resourceId;
}

View File

@ -1,93 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.dataobject.systemlog;
import cn.iocoder.common.framework.enums.UserTypeEnum;
import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* 系统访问日志 DO
*
* 记录用户管理员对 API 接口的调用
*
* TODO 优化点考虑到架构简单暂时记录到 MySQL因为访问日志容易比较大所以建议未来存储到 ES 同时能够提供更丰富的检索能力
*/
@TableName("system_access_log")
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class SystemAccessLogDO extends BaseDO {
/**
* 编号
*/
private Integer id;
/**
* 用户编号
*/
private Integer userId;
/**
* 用户类型
*
* 枚举 {@link UserTypeEnum}
*/
private Integer userType;
/**
* 链路追踪编号
*
* 一般来说通过链路追踪编号可以将访问日志错误日志链路追踪日志logger 打印日志等结合在一起从而进行排错
*/
private String traceId;
/**
* 应用名
*
* 目前读取 `spring.application.name` 配置项
*/
private String applicationName;
/**
* 访问地址
*/
private String uri;
/**
* 参数
*/
private String queryString;
/**
* http 方法
*/
private String method;
/**
* userAgent
*/
private String userAgent;
/**
* ip
*/
private String ip;
/**
* 请求时间
*/
private Date startTime;
/**
* 响应时长 -- 毫秒级
*/
private Integer responseTime;
/**
* 错误码
*
* 目前的结果是使用 {@link CommonResult#getCode()} 属性
*/
private Integer errorCode;
/**
* 错误提示
*
* 目前的结果是使用 {@link CommonResult#getMessage()} 属性
*/
private String errorMessage;
}

View File

@ -1,139 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.dataobject.systemlog;
import cn.iocoder.common.framework.enums.UserTypeEnum;
import cn.iocoder.mall.mybatis.core.dataobject.BaseDO;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.admin.AdminDO;
import cn.iocoder.mall.systemservice.enums.systemlog.SystemExceptionLogProcessStatusEnum;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* 系统异常日志 DO
*/
@TableName("system_exception_log")
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class SystemExceptionLogDO extends BaseDO {
/**
* 编号
*/
private Integer id;
/**
* 用户编号
*/
private Integer userId;
/**
* 用户类型
*
* 枚举 {@link UserTypeEnum}
*/
private Integer userType;
/**
* 链路追踪编号
*
* 一般来说通过链路追踪编号可以将访问日志错误日志链路追踪日志logger 打印日志等结合在一起从而进行排错
*/
private String traceId;
/**
* 应用名
*
* 目前读取 spring.application.name
*/
private String applicationName;
/**
* 访问地址
*/
private String uri;
/**
* 参数
*/
private String queryString;
/**
* http 方法
*/
private String method;
/**
* userAgent
*/
private String userAgent;
/**
* ip
*/
private String ip;
/**
* 异常发生时间
*/
private Date exceptionTime;
/**
* 异常名
*
* {@link Throwable#getClass()} 的类全名
*/
private String exceptionName;
/**
* 异常导致的消息
*
* {@link cn.iocoder.common.framework.util.ExceptionUtil#getMessage(Throwable)}
*/
private String exceptionMessage;
/**
* 异常导致的根消息
*
* {@link cn.iocoder.common.framework.util.ExceptionUtil#getRootCauseMessage(Throwable)}
*/
private String exceptionRootCauseMessage;
/**
* 异常的栈轨迹
*
* {@link cn.iocoder.common.framework.util.ExceptionUtil#getServiceException(Exception)}
*/
private String exceptionStackTrace;
/**
* 异常发生的类全名
*
* {@link StackTraceElement#getClassName()}
*/
private String exceptionClassName;
/**
* 异常发生的类文件
*
* {@link StackTraceElement#getFileName()}
*/
private String exceptionFileName;
/**
* 异常发生的方法名
*
* {@link StackTraceElement#getMethodName()}
*/
private String exceptionMethodName;
/**
* 异常发生的方法所在行
*
* {@link StackTraceElement#getLineNumber()}
*/
private Integer exceptionLineNumber;
/**
* 处理状态
*
* 外键 {@link SystemExceptionLogProcessStatusEnum}
*/
private Integer processStatus;
/**
* 处理时间
*/
private Date processTime;
/**
* 处理管理员编号
*
* 外键 {@link AdminDO#getId()}
*/
private Integer processAdminId;
}

View File

@ -1,33 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.mapper.admin;
import cn.iocoder.mall.mybatis.core.query.QueryWrapperX;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.admin.AdminDO;
import cn.iocoder.mall.systemservice.service.admin.bo.AdminPageBO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Repository;
@Repository
public interface AdminMapper extends BaseMapper<AdminDO> {
default AdminDO selectByUsername(String username) {
return selectOne(new QueryWrapper<AdminDO>()
.eq("username", username)
);
}
default Integer selectCountByDepartmentId(Integer departmentId) {
return selectCount(new QueryWrapper<AdminDO>()
.eq("department_id", departmentId)
);
}
default IPage<AdminDO> selectPage(AdminPageBO pageBO) {
return selectPage(new Page<>(pageBO.getPageNo(), pageBO.getPageSize()),
new QueryWrapperX<AdminDO>().likeIfPresent("name", pageBO.getName())
.eqIfPresent("department_id", pageBO.getDepartmentId()));
}
}

View File

@ -1,16 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.mapper.admin;
import cn.iocoder.mall.mybatis.core.query.QueryWrapperX;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.admin.DepartmentDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface DepartmentMapper extends BaseMapper<DepartmentDO> {
default DepartmentDO selectByPidAndName(Integer pid, String name) {
return selectOne(new QueryWrapperX<DepartmentDO>().eqIfPresent("pid", pid)
.eqIfPresent("name", name));
}
}

View File

@ -1,28 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.mapper.datadict;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.datadict.DataDictDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.List;
@Repository
public interface DataDictMapper extends BaseMapper<DataDictDO> {
default DataDictDO selectByEnumValueAndValue(String enumValue, String value) {
return selectOne(new QueryWrapper<DataDictDO>()
.eq("enum_value", enumValue).eq("value", value));
}
default List<DataDictDO> selectByEnumValueAndValues(String enumValue, Collection<String> values) {
return selectList(new QueryWrapper<DataDictDO>()
.eq("enum_value", enumValue).in("value", values));
}
default List<DataDictDO> selectByEnumValue(String enumValue) {
return selectList(new QueryWrapper<DataDictDO>().eq("enum_value", enumValue));
}
}

View File

@ -1,38 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.mapper.errorcode;
import cn.iocoder.mall.mybatis.core.query.QueryWrapperX;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.errorcode.ErrorCodeDO;
import cn.iocoder.mall.systemservice.service.errorcode.bo.ErrorCodePageBO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.Date;
import java.util.List;
@Repository
public interface ErrorCodeMapper extends BaseMapper<ErrorCodeDO> {
default IPage<ErrorCodeDO> selectPage(ErrorCodePageBO pageBO) {
return selectPage(new Page<>(pageBO.getPageNo(), pageBO.getPageSize()),
new QueryWrapperX<ErrorCodeDO>().likeIfPresent("`group`", pageBO.getGroup())
.eqIfPresent("code", pageBO.getCode()).likeIfPresent("message", pageBO.getMessage()));
}
default List<ErrorCodeDO> selectListByCodes(Collection<Integer> codes) {
return selectList(new QueryWrapper<ErrorCodeDO>().in("code", codes));
}
default ErrorCodeDO selectByCode(Integer code) {
return selectOne(new QueryWrapper<ErrorCodeDO>().eq("code", code));
}
default List<ErrorCodeDO> selectListByGroup(String group, Date minUpdateTime) {
return selectList(new QueryWrapperX<ErrorCodeDO>().eq("`group`", group)
.gtIfPresent("update_time", minUpdateTime));
}
}

View File

@ -1,31 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.mapper.oauth;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.oauth.OAuth2AccessTokenDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface OAuth2AccessTokenMapper extends BaseMapper<OAuth2AccessTokenDO> {
default OAuth2AccessTokenDO selectByUserIdAndUserType(Integer userId, Integer userType) {
return selectOne(new QueryWrapper<OAuth2AccessTokenDO>()
.eq("user_id", userId).eq("user_type", userType));
}
default int deleteByUserIdAndUserType(Integer userId, Integer userType) {
return delete(new QueryWrapper<OAuth2AccessTokenDO>()
.eq("user_id", userId).eq("user_type", userType));
}
default int deleteByRefreshToken(String refreshToken) {
return delete(new QueryWrapper<OAuth2AccessTokenDO>().eq("refresh_token", refreshToken));
}
default List<OAuth2AccessTokenDO> selectListByRefreshToken(String refreshToken) {
return selectList(new QueryWrapper<OAuth2AccessTokenDO>().eq("refresh_token", refreshToken));
}
}

View File

@ -1,16 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.mapper.oauth;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.oauth.OAuth2RefreshTokenDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface OAuth2RefreshTokenMapper extends BaseMapper<OAuth2RefreshTokenDO> {
default int deleteByUserIdAndUserType(Integer userId, Integer userType) {
return delete(new QueryWrapper<OAuth2RefreshTokenDO>()
.eq("user_id", userId).eq("user_type", userType));
}
}

View File

@ -1,42 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.mapper.permission;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.permission.AdminRoleDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.List;
@Repository
public interface AdminRoleMapper extends BaseMapper<AdminRoleDO> {
default List<AdminRoleDO> selectByAdminId(Integer adminId) {
return selectList(new QueryWrapper<AdminRoleDO>().eq("admin_id", adminId));
}
default List<AdminRoleDO> selectListByAdminId(Integer adminId) {
return selectList(new QueryWrapper<AdminRoleDO>().eq("admin_id", adminId));
}
default List<AdminRoleDO> selectListByAdminIds(Collection<Integer> adminIds) {
return selectList(new QueryWrapper<AdminRoleDO>().in("admin_id", adminIds));
}
default int deleteByAdminId(Integer adminId) {
return delete(new QueryWrapper<AdminRoleDO>().eq("admin_id", adminId));
}
default int deleteByRoleId(Integer roleId) {
return delete(new QueryWrapper<AdminRoleDO>().eq("role_id", roleId));
}
/**
* 批量插入因为 MyBaits Plus 的批量插入是基于 Service 实现所以只好写 XML
*
* @param adminRoleDOs 数组
*/
int insertList(@Param("adminRoleDOs") List<AdminRoleDO> adminRoleDOs);
}

View File

@ -1,52 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.mapper.permission;
import cn.iocoder.mall.mybatis.core.query.QueryWrapperX;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.permission.ResourceDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.List;
@Repository
public interface ResourceMapper extends BaseMapper<ResourceDO> {
default ResourceDO selectByPermission(String permission) {
return selectOne(new QueryWrapper<ResourceDO>().eq("permission", permission));
}
/**
* 查询指定类型的资源列表
*
* @param type 资源类型允许空
* @return 资源列表
*/
default List<ResourceDO> selectListByType(Integer type) {
return selectList(new QueryWrapperX<ResourceDO>().eqIfPresent("type", type));
}
default ResourceDO selectByPidAndName(Integer pid, String name) {
return selectOne(new QueryWrapperX<ResourceDO>().eqIfPresent("pid", pid)
.eqIfPresent("name", name));
}
default List<ResourceDO> selectListByPermissions(Collection<String> permissions) {
return selectList(new QueryWrapper<ResourceDO>().in("permission", permissions));
}
default List<ResourceDO> selectListByIdsAndType(Collection<Integer> ids, Integer type) {
return selectList(new QueryWrapperX<ResourceDO>().inIfPresent("id", ids)
.eqIfPresent("type", type));
}
default int selectCountByIdsAndType(Collection<Integer> ids, Integer type) {
return selectCount(new QueryWrapperX<ResourceDO>().inIfPresent("id", ids)
.eqIfPresent("type", type));
}
default int selectCountByPid(Integer pid) {
return selectCount(new QueryWrapper<ResourceDO>().eq("pid", pid));
}
}

View File

@ -1,31 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.mapper.permission;
import cn.iocoder.mall.mybatis.core.query.QueryWrapperX;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.permission.RoleDO;
import cn.iocoder.mall.systemservice.service.permission.bo.RolePageBO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Repository;
@Repository
public interface RoleMapper extends BaseMapper<RoleDO> {
default IPage<RoleDO> selectPage(RolePageBO pageBO) {
return selectPage(new Page<>(pageBO.getPageNo(), pageBO.getPageSize()),
new QueryWrapperX<RoleDO>().likeIfPresent("name", pageBO.getName()));
}
// default List<RoleDO> selectListByIds(Collection<Integer> ids) {
// return selectList(new QueryWrapperX<RoleDO>().inIfPresent("id", ids));
// }
default RoleDO selectByName(String name) {
return selectOne(new QueryWrapperX<RoleDO>().eqIfPresent("name", name));
}
default RoleDO selectByCode(String code) {
return selectOne(new QueryWrapperX<RoleDO>().eqIfPresent("code", code));
}
}

View File

@ -1,46 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.mapper.permission;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.permission.RoleResourceDO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.List;
@Repository
public interface RoleResourceMapper extends BaseMapper<RoleResourceDO> {
/**
* 批量插入因为 MyBaits Plus 的批量插入是基于 Service 实现所以只好写 XML
*
* @param roleResources 数组
*/
int insertList(@Param("roleResources") List<RoleResourceDO> roleResources);
default List<RoleResourceDO> selectListByResourceId(Integer resourceId) {
return selectList(new QueryWrapper<RoleResourceDO>().eq("resource_id", resourceId));
}
default List<RoleResourceDO> selectListByResourceIds(Collection<Integer> resourceIds) {
return selectList(new QueryWrapper<RoleResourceDO>().in("resource_id", resourceIds));
}
default List<RoleResourceDO> selectListByRoleId(Integer roleId) {
return selectList(new QueryWrapper<RoleResourceDO>().eq("role_id", roleId));
}
default List<RoleResourceDO> selectListByRoleIds(Collection<Integer> roleIds) {
return selectList(new QueryWrapper<RoleResourceDO>().in("role_id", roleIds));
}
default int deleteByResourceId(Integer resourceId) {
return delete(new QueryWrapper<RoleResourceDO>().eq("resource_id", resourceId));
}
default int deleteByRoleId(Integer roleId) {
return delete(new QueryWrapper<RoleResourceDO>().eq("role_id", roleId));
}
}

View File

@ -1,26 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.mapper.systemlog;
import cn.iocoder.mall.mybatis.core.query.QueryWrapperX;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.systemlog.SystemAccessLogDO;
import cn.iocoder.mall.systemservice.service.systemlog.bo.SystemAccessLogPageBO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Repository;
/**
* 系统访问日志 Mapper
*/
@Repository
public interface SystemAccessLogMapper extends BaseMapper<SystemAccessLogDO> {
default IPage<SystemAccessLogDO> selectPage(SystemAccessLogPageBO pageBO) {
return selectPage(new Page<>(pageBO.getPageNo(), pageBO.getPageSize()),
new QueryWrapperX<SystemAccessLogDO>()
.eqIfPresent("user_id", pageBO.getUserId())
.eqIfPresent("user_type", pageBO.getUserType())
.eqIfPresent("application_name", pageBO.getApplicationName())
.orderByDesc("start_time"));
}
}

View File

@ -1,24 +0,0 @@
package cn.iocoder.mall.systemservice.dal.mysql.mapper.systemlog;
import cn.iocoder.mall.mybatis.core.query.QueryWrapperX;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.systemlog.SystemExceptionLogDO;
import cn.iocoder.mall.systemservice.service.systemlog.bo.SystemExceptionLogPageBO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Repository;
@Repository
public interface SystemExceptionLogMapper extends BaseMapper<SystemExceptionLogDO> {
default IPage<SystemExceptionLogDO> selectPage(SystemExceptionLogPageBO pageBO) {
return selectPage(new Page<>(pageBO.getPageNo(), pageBO.getPageSize()),
new QueryWrapperX<SystemExceptionLogDO>()
.eqIfPresent("user_id", pageBO.getUserId())
.eqIfPresent("user_type", pageBO.getUserType())
.eqIfPresent("application_name", pageBO.getApplicationName())
.eqIfPresent("process_status", pageBO.getProcessStatus())
.orderByDesc("exception_time"));
}
}

View File

@ -1,24 +0,0 @@
package cn.iocoder.mall.systemservice.dal.redis;
import cn.iocoder.mall.redis.core.RedisKeyDefine;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.oauth.OAuth2AccessTokenDO;
import java.time.Duration;
import static cn.iocoder.mall.redis.core.RedisKeyDefine.KeyTypeEnum.STRING;
/**
* Redis Key 枚举类
*
* 通过将项目中的 Key 枚举在该类中方便统一管理
*/
public interface RedisKeyConstants {
/**
* {@link OAuth2AccessTokenDO} 的缓存
*
* key format 的参数是 [{@link OAuth2AccessTokenDO#getId()}]
*/
RedisKeyDefine OAUTH2_ACCESS_TOKEN = new RedisKeyDefine("oauth2_access_token:%s", STRING, OAuth2AccessTokenDO.class, Duration.ofHours(2));
}

View File

@ -1,36 +0,0 @@
package cn.iocoder.mall.systemservice.dal.redis.dao;
import cn.iocoder.mall.systemservice.dal.mysql.dataobject.oauth.OAuth2AccessTokenDO;
import com.alibaba.fastjson.JSON;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Repository;
import static cn.iocoder.mall.systemservice.dal.redis.RedisKeyConstants.OAUTH2_ACCESS_TOKEN;
@Repository
public class OAuth2AccessTokenRedisDAO {
@Autowired
private StringRedisTemplate redisTemplate;
public OAuth2AccessTokenDO get(String accessToken) {
String redisKey = formatKey(accessToken);
return JSON.parseObject(redisTemplate.opsForValue().get(redisKey), OAuth2AccessTokenDO.class);
}
public void set(OAuth2AccessTokenDO accessTokenDO) {
String redisKey = formatKey(accessTokenDO.getId());
redisTemplate.opsForValue().set(redisKey, JSON.toJSONString(accessTokenDO), OAUTH2_ACCESS_TOKEN.getTimeout());
}
public void delete(String accessToken) {
String redisKey = formatKey(accessToken);
redisTemplate.delete(redisKey);
}
private static String formatKey(String accessToken) {
return String.format(OAUTH2_ACCESS_TOKEN.getKeyTemplate(), accessToken);
}
}

View File

@ -1,60 +0,0 @@
package cn.iocoder.mall.systemservice.manager.admin;
import cn.iocoder.common.framework.enums.UserTypeEnum;
import cn.iocoder.common.framework.util.StringUtils;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.systemservice.convert.admin.AdminConvert;
import cn.iocoder.mall.systemservice.enums.admin.AdminStatusEnum;
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminCreateDTO;
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminPageDTO;
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.admin.dto.AdminVerifyPasswordDTO;
import cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO;
import cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RemoveTokenByUserReqDTO;
import cn.iocoder.mall.systemservice.service.admin.AdminService;
import cn.iocoder.mall.systemservice.service.admin.bo.AdminBO;
import cn.iocoder.mall.systemservice.service.oauth.OAuth2ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class AdminManager {
@Autowired
private AdminService adminService;
@Autowired
private OAuth2ServiceImpl oauth2Service;
public AdminVO verifyPassword(AdminVerifyPasswordDTO verifyPasswordDTO) {
AdminBO adminBO = adminService.verifyPassword(verifyPasswordDTO.getUsername(),
verifyPasswordDTO.getPassword(), verifyPasswordDTO.getIp());
return AdminConvert.INSTANCE.convert(adminBO);
}
public AdminVO createAdmin(AdminCreateDTO createDTO) {
AdminBO adminBO = adminService.createAdmin(AdminConvert.INSTANCE.convert(createDTO));
return AdminConvert.INSTANCE.convert(adminBO);
}
@Transactional
public void updateAdmin(AdminUpdateDTO updateDTO) {
// 更新管理员信息
adminService.updateAdmin(AdminConvert.INSTANCE.convert(updateDTO));
// 如果修改密码或者禁用管理员
if (StringUtils.hasText(updateDTO.getPassword())
|| AdminStatusEnum.INACTIVE.getStatus().equals(updateDTO.getStatus())) {
oauth2Service.removeToken(new OAuth2RemoveTokenByUserReqDTO().setUserId(updateDTO.getId()).setUserType(UserTypeEnum.ADMIN.getValue()));
}
}
public PageResult<AdminVO> pageAdmin(AdminPageDTO pageDTO) {
PageResult<AdminBO> adminPage = adminService.pageAdmin(AdminConvert.INSTANCE.convert(pageDTO));
return AdminConvert.INSTANCE.convert(adminPage);
}
public AdminVO getAdmin(Integer adminId) {
AdminBO adminBO = adminService.getAdmin(adminId);
return AdminConvert.INSTANCE.convert(adminBO);
}
}

View File

@ -1,85 +0,0 @@
package cn.iocoder.mall.systemservice.manager.admin;
import cn.iocoder.mall.systemservice.convert.admin.DepartmentConvert;
import cn.iocoder.mall.systemservice.rpc.admin.dto.DepartmentCreateDTO;
import cn.iocoder.mall.systemservice.rpc.admin.dto.DepartmentUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.admin.vo.DepartmentVO;
import cn.iocoder.mall.systemservice.service.admin.DepartmentService;
import cn.iocoder.mall.systemservice.service.admin.bo.DepartmentBO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
/**
* 部门 Manager
*/
@Service
public class DepartmentManager {
@Autowired
private DepartmentService departmentService;
/**
* 创建部门
*
* @param createDTO 创建部门 DTO
* @return 部门
*/
public Integer createDepartment(DepartmentCreateDTO createDTO) {
DepartmentBO departmentBO = departmentService.createDepartment(DepartmentConvert.INSTANCE.convert(createDTO));
return departmentBO.getId();
}
/**
* 更新部门
*
* @param updateDTO 更新部门 DTO
*/
public void updateDepartment(DepartmentUpdateDTO updateDTO) {
departmentService.updateDepartment(DepartmentConvert.INSTANCE.convert(updateDTO));
}
/**
* 删除部门
*
* @param departmentId 部门编号
*/
public void deleteDepartment(Integer departmentId) {
departmentService.deleteDepartment(departmentId);
}
/**
* 获得部门
*
* @param departmentId 部门编号
* @return 部门
*/
public DepartmentVO getDepartment(Integer departmentId) {
DepartmentBO departmentBO = departmentService.getDepartment(departmentId);
return DepartmentConvert.INSTANCE.convert(departmentBO);
}
/**
* 获得部门列表
*
* @param departmentIds 部门编号列表
* @return 部门列表
*/
public List<DepartmentVO> listDepartments(Collection<Integer> departmentIds) {
List<DepartmentBO> departmentBOs = departmentService.listDepartments(departmentIds);
return DepartmentConvert.INSTANCE.convertList02(departmentBOs);
}
/**
* 获得部门全列表
*
* @return 资源列表
*/
public List<DepartmentVO> listDepartments() {
List<DepartmentBO> departmentBOs = departmentService.listDepartments();
return DepartmentConvert.INSTANCE.convertList02(departmentBOs);
}
}

View File

@ -1,84 +0,0 @@
package cn.iocoder.mall.systemservice.manager.datadict;
import cn.iocoder.mall.systemservice.convert.datadict.DataDictConvert;
import cn.iocoder.mall.systemservice.rpc.datadict.dto.DataDictCreateDTO;
import cn.iocoder.mall.systemservice.rpc.datadict.dto.DataDictUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.datadict.vo.DataDictVO;
import cn.iocoder.mall.systemservice.service.datadict.DataDictService;
import cn.iocoder.mall.systemservice.service.datadict.bo.DataDictBO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 数据字典 Manager
*/
@Service
public class DataDictManager {
@Autowired
private DataDictService dataDictService;
/**
* 创建数据字典
*
* @param createDTO 创建数据字典 DTO
* @return 数据字典
*/
public Integer createDataDict(DataDictCreateDTO createDTO) {
DataDictBO dataDictBO = dataDictService.createDataDict(DataDictConvert.INSTANCE.convert(createDTO));
return dataDictBO.getId();
}
/**
* 更新数据字典
*
* @param updateDTO 更新数据字典 DTO
*/
public void updateDataDict(DataDictUpdateDTO updateDTO) {
dataDictService.updateDataDict(DataDictConvert.INSTANCE.convert(updateDTO));
}
/**
* 删除数据字典
*
* @param dataDictId 数据字典编号
*/
public void deleteDataDict(Integer dataDictId) {
dataDictService.deleteDataDict(dataDictId);
}
/**
* 获得数据字典
*
* @param dataDictId 数据字典编号
* @return 数据字典
*/
public DataDictVO getDataDict(Integer dataDictId) {
DataDictBO dataDictBO = dataDictService.getDataDict(dataDictId);
return DataDictConvert.INSTANCE.convert(dataDictBO);
}
/**
* 获得全部数据字典
*
* @return 数据字典列表
*/
public List<DataDictVO> listDataDicts() {
List<DataDictBO> dataDictBOs = dataDictService.listDataDicts();
return DataDictConvert.INSTANCE.convertList02(dataDictBOs);
}
/**
* 获得数据字典列表
*
* @param dataDictIds 数据字典编号列表
* @return 数据字典列表
*/
public List<DataDictVO> listDataDicts(List<Integer> dataDictIds) {
List<DataDictBO> dataDictBOs = dataDictService.listDataDicts(dataDictIds);
return DataDictConvert.INSTANCE.convertList02(dataDictBOs);
}
}

View File

@ -1,103 +0,0 @@
package cn.iocoder.mall.systemservice.manager.errorcode;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.systemservice.convert.errorcode.ErrorCodeConvert;
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeAutoGenerateDTO;
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeCreateDTO;
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodePageDTO;
import cn.iocoder.mall.systemservice.rpc.errorcode.dto.ErrorCodeUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.errorcode.vo.ErrorCodeVO;
import cn.iocoder.mall.systemservice.service.errorcode.ErrorCodeService;
import cn.iocoder.mall.systemservice.service.errorcode.bo.ErrorCodeBO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* 错误码 Manager
*/
@Service
public class ErrorCodeManager {
@Autowired
private ErrorCodeService errorCodeService;
/**
* 创建错误码
*
* @param createDTO 创建错误码 DTO
* @return 错误码
*/
public Integer createErrorCode(ErrorCodeCreateDTO createDTO) {
ErrorCodeBO errorCodeBO = errorCodeService.createErrorCode(ErrorCodeConvert.INSTANCE.convert(createDTO));
return errorCodeBO.getId();
}
/**
* 更新错误码
*
* @param updateDTO 更新错误码 DTO
*/
public void updateErrorCode(ErrorCodeUpdateDTO updateDTO) {
errorCodeService.updateErrorCode(ErrorCodeConvert.INSTANCE.convert(updateDTO));
}
/**
* 自动生成错误码
*
* @param autoGenerateDTOs 自动生成信息 DTO
*/
public void autoGenerateErrorCodes(List<ErrorCodeAutoGenerateDTO> autoGenerateDTOs) {
errorCodeService.autoGenerateErrorCodes(ErrorCodeConvert.INSTANCE.convertList03(autoGenerateDTOs));
}
/**
* 删除错误码
*
* @param errorCodeId 错误码编号
*/
public void deleteErrorCode(Integer errorCodeId) {
errorCodeService.deleteErrorCode(errorCodeId);
}
/**
* 获得错误码
*
* @param errorCodeId 错误码编号
* @return 错误码
*/
public ErrorCodeVO getErrorCode(Integer errorCodeId) {
ErrorCodeBO errorCodeBO = errorCodeService.getErrorCode(errorCodeId);
return ErrorCodeConvert.INSTANCE.convert(errorCodeBO);
}
/**
* 获得错误码列表
*
* @param errorCodeIds 错误码编号列表
* @return 错误码列表
*/
public List<ErrorCodeVO> listErrorCodes(List<Integer> errorCodeIds) {
List<ErrorCodeBO> errorCodeBOs = errorCodeService.listErrorCodes(errorCodeIds);
return ErrorCodeConvert.INSTANCE.convertList02(errorCodeBOs);
}
/**
* 获得错误码分页
*
* @param pageDTO 错误码分页查询
* @return 错误码分页结果
*/
public PageResult<ErrorCodeVO> pageErrorCode(ErrorCodePageDTO pageDTO) {
PageResult<ErrorCodeBO> pageResultBO = errorCodeService.pageErrorCode(ErrorCodeConvert.INSTANCE.convert(pageDTO));
return ErrorCodeConvert.INSTANCE.convertPage(pageResultBO);
}
public List<ErrorCodeVO> listErrorCodes(String group, Date minUpdateTime) {
List<ErrorCodeBO> errorCodeBOs = errorCodeService.listErrorCodes(group, minUpdateTime);
return ErrorCodeConvert.INSTANCE.convertList02(errorCodeBOs);
}
}

View File

@ -1,111 +0,0 @@
package cn.iocoder.mall.systemservice.manager.permission;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.common.framework.exception.GlobalException;
import cn.iocoder.common.framework.util.CollectionUtils;
import cn.iocoder.mall.systemservice.rpc.permission.dto.PermissionAssignAdminRoleDTO;
import cn.iocoder.mall.systemservice.rpc.permission.dto.PermissionAssignRoleResourceDTO;
import cn.iocoder.mall.systemservice.rpc.permission.dto.PermissionCheckDTO;
import cn.iocoder.mall.systemservice.service.permission.PermissionService;
import cn.iocoder.mall.systemservice.service.permission.ResourceServiceImpl;
import cn.iocoder.mall.systemservice.service.permission.RoleService;
import cn.iocoder.mall.systemservice.service.permission.bo.ResourceBO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import static cn.iocoder.common.framework.exception.enums.GlobalErrorCodeConstants.FORBIDDEN;
/**
* 权限 Manager
*/
@Service
public class PermissionManager {
@Autowired
private PermissionService permissionService;
@Autowired
private RoleService roleService;
@Autowired
private ResourceServiceImpl resourceService;
/**
* 获得角色拥有的资源编号
*
* @param roleId 角色编号
* @return 资源编号列表
*/
public Set<Integer> listRoleResourceIds(Integer roleId) {
// 超级管理员拥有所有资源
if (roleService.hasSuperAdmin(Collections.singleton(roleId))) {
return CollectionUtils.convertSet(resourceService.listResources(), ResourceBO::getId);
}
// 非超级管理员查询拥有资源
return permissionService.listRoleResourceIds(roleId);
}
/**
* 赋予角色资源
*
* @param assignResourceDTO 赋予角色资源 DTO
*/
public void assignRoleResource(PermissionAssignRoleResourceDTO assignResourceDTO) {
permissionService.assignRoleResource(assignResourceDTO.getRoleId(), assignResourceDTO.getResourceIds());
}
/**
* 获得管理员拥有的角色编号列表
*
* @param adminId 管理员编号
* @return 角色编号列表
*/
public Set<Integer> listAdminRoleIds(Integer adminId) {
return permissionService.listAdminRoleIds(adminId);
}
/**
* 获得每个管理员拥有的角色编号
* 返回的结果key 为管理员编号
*
* @param adminIds 管理员编号列表
* @return 每个管理员拥有的角色编号
*/
public Map<Integer, Set<Integer>> mapAdminRoleIds(Collection<Integer> adminIds) {
return permissionService.mapAdminRoleIds(adminIds);
}
/**
* 赋予管理员角色
*
* @param assignAdminRoleDTO 赋予管理员角色 DTO
*/
public void assignAdminRole(PermissionAssignAdminRoleDTO assignAdminRoleDTO) {
permissionService.assignAdminRole(assignAdminRoleDTO.getAdminId(), assignAdminRoleDTO.getRoleIds());
}
/**
* 校验管理员是否拥有指定权限
*
* 如果没有则抛出 {@link cn.iocoder.common.framework.exception.ServiceException} 异常
*
* @param checkDTO 校验权限 DTO
*/
public void checkPermission(PermissionCheckDTO checkDTO) {
// 查询管理员拥有的角色关联数据
Set<Integer> roleIds = permissionService.listAdminRoleIds(checkDTO.getAdminId());
if (CollectionUtil.isEmpty(roleIds)) { // 如果没有角色默认无法访问
throw new GlobalException(FORBIDDEN);
}
// 判断是否为超管若是超管默认有所有权限
if (roleService.hasSuperAdmin(roleIds)) {
return;
}
// 校验权限
permissionService.checkPermission(roleIds, checkDTO.getPermissions());
}
}

View File

@ -1,106 +0,0 @@
package cn.iocoder.mall.systemservice.manager.permission;
import cn.iocoder.mall.systemservice.convert.permission.ResourceConvert;
import cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceCreateDTO;
import cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO;
import cn.iocoder.mall.systemservice.service.permission.ResourceServiceImpl;
import cn.iocoder.mall.systemservice.service.permission.RoleService;
import cn.iocoder.mall.systemservice.service.permission.bo.ResourceBO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
/**
* 资源 Manager
*/
@Service
public class ResourceManager {
@Autowired
private ResourceServiceImpl resourceService;
@Autowired
private RoleService roleService;
/**
* 创建资源
*
* @param createDTO 创建资源 DTO
* @return 资源
*/
public Integer createResource(ResourceCreateDTO createDTO) {
ResourceBO resourceBO = resourceService.createResource(ResourceConvert.INSTANCE.convert(createDTO));
return resourceBO.getId();
}
/**
* 更新资源
*
* @param updateDTO 更新资源 DTO
*/
public void updateResource(ResourceUpdateDTO updateDTO) {
resourceService.updateResource(ResourceConvert.INSTANCE.convert(updateDTO));
}
/**
* 删除资源
*
* @param resourceId 资源编号
*/
public void deleteResource(Integer resourceId) {
resourceService.deleteResource(resourceId);
}
/**
* 获得资源
*
* @param resourceId 资源编号
* @return 资源
*/
public ResourceVO getResource(Integer resourceId) {
ResourceBO resourceBO = resourceService.getResource(resourceId);
return ResourceConvert.INSTANCE.convert(resourceBO);
}
/**
* 获得资源全列表
*
* @return 资源列表
*/
public List<ResourceVO> listResources() {
List<ResourceBO> resourceBOs = resourceService.listResources();
return ResourceConvert.INSTANCE.convertList02(resourceBOs);
}
/**
* 获得资源列表
*
* @param resourceIds 资源编号列表
* @return 资源列表
*/
public List<ResourceVO> listResources(List<Integer> resourceIds) {
List<ResourceBO> resourceBOs = resourceService.listResources(resourceIds);
return ResourceConvert.INSTANCE.convertList02(resourceBOs);
}
/**
* 获得指定角色的资源列表
*
* @param roleIds 角色编号列表
* @param type 资源类型允许空
* @return 资源列表
*/
public List<ResourceVO> listRoleResources(Collection<Integer> roleIds, Integer type) {
List<ResourceBO> resourceBOs;
// 判断是否为超管若是超管默认有所有权限
if (roleService.hasSuperAdmin(roleIds)) {
resourceBOs = resourceService.listResourcesByType(type);
} else {
resourceBOs = resourceService.listRoleResourcesByType(roleIds, type);
}
return ResourceConvert.INSTANCE.convertList02(resourceBOs);
}
}

View File

@ -1,109 +0,0 @@
package cn.iocoder.mall.systemservice.manager.permission;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.systemservice.convert.permission.RoleConvert;
import cn.iocoder.mall.systemservice.rpc.permission.dto.RolePageDTO;
import cn.iocoder.mall.systemservice.rpc.permission.dto.RoleUpdateDTO;
import cn.iocoder.mall.systemservice.rpc.permission.vo.RoleCreateDTO;
import cn.iocoder.mall.systemservice.rpc.permission.vo.RoleVO;
import cn.iocoder.mall.systemservice.service.permission.RoleService;
import cn.iocoder.mall.systemservice.service.permission.bo.RoleBO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
import java.util.Set;
/**
* 角色 Manager
*/
@Service
public class RoleManager {
@Autowired
private RoleService roleService;
/**
* 创建角色
*
* @param createDTO 创建角色 DTO
* @return 角色
*/
public Integer createRole(RoleCreateDTO createDTO) {
RoleBO roleBO = roleService.createRole(RoleConvert.INSTANCE.convert(createDTO));
return roleBO.getId();
}
/**
* 更新角色
*
* @param updateDTO 更新角色 DTO
*/
public void updateRole(RoleUpdateDTO updateDTO) {
roleService.updateRole(RoleConvert.INSTANCE.convert(updateDTO));
}
/**
* 删除角色
*
* @param roleId 角色编号
*/
public void deleteRole(Integer roleId) {
roleService.deleteRole(roleId);
}
/**
* 获得角色
*
* @param roleId 角色编号
* @return 角色
*/
public RoleVO getRole(Integer roleId) {
RoleBO roleBO = roleService.getRole(roleId);
return RoleConvert.INSTANCE.convert(roleBO);
}
/**
* 获得所有角色
*
* @return 角色列表
*/
public List<RoleVO> listAllRoles() {
List<RoleBO> roleBOs = roleService.listAllRole();
return RoleConvert.INSTANCE.convertList02(roleBOs);
}
/**
* 获得角色列表
*
* @param roleIds 角色编号列表
* @return 角色列表
*/
public List<RoleVO> listRoles(Collection<Integer> roleIds) {
List<RoleBO> roleBOs = roleService.listRole(roleIds);
return RoleConvert.INSTANCE.convertList02(roleBOs);
}
/**
* 获得角色分页
*
* @param pageDTO 角色分页查询
* @return 角色分页结果
*/
public PageResult<RoleVO> pageRole(RolePageDTO pageDTO) {
PageResult<RoleBO> pageResultBO = roleService.pageRole(RoleConvert.INSTANCE.convert(pageDTO));
return RoleConvert.INSTANCE.convertPage(pageResultBO);
}
/**
* 获得管理员拥有的角色编号列表
*
* @param adminId 管理员编号
* @return 角色编号列表
*/
public Set<Integer> listAdminRoleIds(Integer adminId) {
return roleService.listAdminRoleIds(adminId);
}
}

View File

@ -1,42 +0,0 @@
package cn.iocoder.mall.systemservice.manager.systemlog;
import cn.iocoder.common.framework.vo.PageResult;
import cn.iocoder.mall.systemservice.convert.systemlog.SystemAccessLogConvert;
import cn.iocoder.mall.systemservice.rpc.systemlog.dto.SystemAccessLogCreateDTO;
import cn.iocoder.mall.systemservice.rpc.systemlog.vo.SystemAccessLogPageDTO;
import cn.iocoder.mall.systemservice.rpc.systemlog.vo.SystemAccessLogVO;
import cn.iocoder.mall.systemservice.service.systemlog.SystemAccessLogService;
import cn.iocoder.mall.systemservice.service.systemlog.bo.SystemAccessLogBO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 系统访问日志 Manager
*/
@Service
public class SystemAccessLogManager {
@Autowired
private SystemAccessLogService systemAccessLogService;
/**
* 创建系统访问日志
*
* @param createDTO 创建系统访问日志 DTO
*/
public void createSystemAccessLog(SystemAccessLogCreateDTO createDTO) {
systemAccessLogService.createSystemAccessLog(SystemAccessLogConvert.INSTANCE.convert(createDTO));
}
/**
* 获得系统访问日志分页
*
* @param pageDTO 系统访问日志分页查询
* @return 系统访问日志分页结果
*/
public PageResult<SystemAccessLogVO> pageSystemAccessLog(SystemAccessLogPageDTO pageDTO) {
PageResult<SystemAccessLogBO> pageResultBO = systemAccessLogService.pageSystemAccessLog(SystemAccessLogConvert.INSTANCE.convert(pageDTO));
return SystemAccessLogConvert.INSTANCE.convertPage(pageResultBO);
}
}

Some files were not shown because too many files have changed in this diff Show More