diff --git a/pom.xml b/pom.xml
index 497c0bf..d2bc6c5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,6 +42,8 @@
8.0.33
3.5.3.1
+
+ 4.4.0
4.0.0
@@ -64,6 +66,12 @@
hutool-all
${hutool.version}
+
+
+ cn.afterturn
+ easypoi-spring-boot-starter
+ ${easypoi.version}
+
com.github.xiaoymin
@@ -126,6 +134,16 @@
qiaoba-common-doc
${qiaoba.version}
+
+ com.qiaoba
+ qiaoba-common-security
+ ${qiaoba.version}
+
+
+ com.qiaoba
+ qiaoba-common-poi
+ ${qiaoba.version}
+
@@ -175,4 +193,4 @@
-
\ No newline at end of file
+
diff --git a/qiaoba-apis/pom.xml b/qiaoba-apis/pom.xml
index dfff4a8..b74aa80 100644
--- a/qiaoba-apis/pom.xml
+++ b/qiaoba-apis/pom.xml
@@ -17,10 +17,6 @@
-
- com.qiaoba
- qiaoba-common-base
-
com.qiaoba
qiaoba-common-datasource
@@ -33,5 +29,13 @@
jakarta.validation
jakarta.validation-api
+
+ com.qiaoba
+ qiaoba-common-security
+
+
+ com.qiaoba
+ qiaoba-common-poi
+
-
\ No newline at end of file
+
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysDept.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysDept.java
new file mode 100644
index 0000000..05993eb
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysDept.java
@@ -0,0 +1,71 @@
+package com.qiaoba.api.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qiaoba.common.base.entity.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 部门信息 sys_dept
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2022-09-22 04:20:28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("sys_dept")
+public class SysDept extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 部门ID
+ */
+ @TableId
+ private String deptId;
+
+ /**
+ * 父部门ID
+ */
+ private String parentId;
+
+ /**
+ * 祖级列表
+ */
+ private String ancestors;
+
+ /**
+ * 部门名称
+ */
+ private String deptName;
+
+ /**
+ * 显示顺序
+ */
+ private Integer orderNum;
+
+ /**
+ * 负责人
+ */
+ private String leader;
+
+ /**
+ * 联系电话
+ */
+ private String phone;
+
+ /**
+ * 邮箱
+ */
+ private String email;
+
+ /**
+ * 部门状态:0停用,1正常
+ */
+ private String status;
+
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysMenu.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysMenu.java
new file mode 100644
index 0000000..4e3e91b
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysMenu.java
@@ -0,0 +1,94 @@
+package com.qiaoba.api.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.qiaoba.common.base.entity.BaseEntity;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Size;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 菜单信息 sys_menu
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2022-09-22 04:20:28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("sys_menu")
+public class SysMenu extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 菜单ID
+ */
+ @TableId
+ private String menuId;
+
+ /**
+ * 菜单名称
+ */
+ @NotBlank(message = "菜单名称不能为空")
+ @Size(min = 0, max = 10, message = "菜单名称长度不能超过{max}个字符")
+ private String menuName;
+
+ /**
+ * 父菜单ID
+ */
+ private String parentId;
+
+ /**
+ * 显示顺序
+ */
+ private Integer orderNum;
+
+ /**
+ * 路由地址
+ */
+ private String path;
+
+ /**
+ * 组件路径
+ */
+ private String component;
+
+ /**
+ * 路由参数
+ */
+ private String query;
+
+ /**
+ * 是否为外链(0否 1是)
+ */
+ private String isFrame;
+
+ /**
+ * 是否缓存(0不缓存 1缓存)
+ */
+ private String isCache;
+
+ /**
+ * 类型(M目录 C菜单 F按钮)
+ */
+ private String menuType;
+
+ /**
+ * 显示状态(0隐藏 1显示)
+ */
+ private String isVisible;
+
+ /**
+ * 权限字符串
+ */
+ private String perms;
+
+ /**
+ * 菜单图标
+ */
+ private String icon;
+
+
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysPost.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysPost.java
new file mode 100644
index 0000000..3528193
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysPost.java
@@ -0,0 +1,40 @@
+package com.qiaoba.api.system.entity;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.qiaoba.common.base.entity.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 岗位信息 sys_post
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2022-09-22 04:20:28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("sys_post")
+public class SysPost extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId
+ @Excel(name = "岗位序号" , width = 20)
+ private String postId;
+
+ @Excel(name = "岗位编码" , width = 20)
+ private String postCode;
+
+ @Excel(name = "岗位名称" , width = 20)
+ private String postName;
+
+ @Excel(name = "岗位排序" , width = 20)
+ private String postSort;
+
+ @Excel(name = "状态" , width = 20, replace = {"正常_1" , "异常_0"})
+ private String status;
+
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysRole.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysRole.java
new file mode 100644
index 0000000..3c73cb6
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysRole.java
@@ -0,0 +1,54 @@
+package com.qiaoba.api.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.qiaoba.common.base.entity.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 角色信息 sys_role
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2022-09-22 04:20:28
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("sys_role")
+public class SysRole extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 角色ID
+ */
+ @TableId
+ private String roleId;
+
+ /**
+ * 角色名称
+ */
+ private String roleName;
+
+ /**
+ * 角色权限
+ */
+ private String roleKey;
+
+ /**
+ * 角色排序
+ */
+ private String roleSort;
+
+ /**
+ * 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限)
+ */
+ private String dataScope;
+
+ /**
+ * 角色状态(1正常 0停用)
+ */
+ private String status;
+
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysRoleMenu.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysRoleMenu.java
new file mode 100644
index 0000000..1d05e44
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysRoleMenu.java
@@ -0,0 +1,41 @@
+package com.qiaoba.api.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ * 角色和菜单关联 sys_role_menu
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2022-09-22 04:20:28
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+@TableName("sys_role_menu")
+public class SysRoleMenu {
+
+ /**
+ * 角色ID
+ */
+ private String roleId;
+
+ /**
+ * 菜单ID
+ */
+ private String menuId;
+
+ /**
+ * 租户ID
+ */
+ private String tenantId;
+
+ public SysRoleMenu(String roleId, String menuId) {
+ this.roleId = roleId;
+ this.menuId = menuId;
+ }
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysTenant.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysTenant.java
index 0d69907..6561a28 100644
--- a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysTenant.java
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysTenant.java
@@ -23,7 +23,7 @@ public class SysTenant extends BaseEntity {
private static final long serialVersionUID = 1L;
@TableId
- private Long tenantId;
+ private String tenantId;
private String tenantCode;
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysUser.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysUser.java
index 9a27af2..fe9e25d 100644
--- a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysUser.java
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysUser.java
@@ -23,10 +23,10 @@ public class SysUser extends BaseEntity {
@TableId
@Schema(description = "用户ID")
- private Long userId;
+ private String userId;
@Schema(description = "部门ID")
- private Long deptId;
+ private String deptId;
@Schema(description = "登陆账号")
private String username;
@@ -52,14 +52,8 @@ public class SysUser extends BaseEntity {
@Schema(description = "帐号状态(1正常 0停用)")
private String status;
- @Schema(description = "是否是超管")
- private Boolean isSuperuser;
-
- @Schema(description = "是否是管理员")
- private Boolean isManager;
-
@Schema(description = "是否已删除")
- private Boolean isDelete;
+ private String isDelete;
}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysUserPost.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysUserPost.java
new file mode 100644
index 0000000..fb53e2b
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysUserPost.java
@@ -0,0 +1,40 @@
+package com.qiaoba.api.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ * 用户和岗位关联 sys_user_post
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2022-09-22 04:20:28
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+@TableName("sys_user_post")
+public class SysUserPost {
+
+ /**
+ * 用户ID
+ */
+ private String userId;
+
+ /**
+ * 岗位ID
+ */
+ private String postId;
+
+ /**
+ * 租户ID
+ */
+ private String tenantId;
+
+ public SysUserPost(String userId, String postId) {
+ this.userId = userId;
+ this.postId = postId;
+ }
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysUserRole.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysUserRole.java
new file mode 100644
index 0000000..2cce2ec
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysUserRole.java
@@ -0,0 +1,40 @@
+package com.qiaoba.api.system.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ * 用户和角色关联 sys_user_role
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2022-09-22 04:20:28
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+@TableName("sys_user_role")
+public class SysUserRole {
+
+ /**
+ * 用户ID
+ */
+ private String userId;
+
+ /**
+ * 角色ID
+ */
+ private String roleId;
+
+ /**
+ * 租户ID
+ */
+ private String tenantId;
+
+ public SysUserRole(String userId, String roleId) {
+ this.userId = userId;
+ this.roleId = roleId;
+ }
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/dto/ResetPwdDto.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/dto/ResetPwdDto.java
new file mode 100644
index 0000000..c64b668
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/dto/ResetPwdDto.java
@@ -0,0 +1,22 @@
+package com.qiaoba.api.system.entity.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/5/10 14:03
+ */
+@Getter
+@Setter
+public class ResetPwdDto implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private String userId;
+
+ private String password;
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/dto/ResetUserStatusDto.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/dto/ResetUserStatusDto.java
new file mode 100644
index 0000000..41c0440
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/dto/ResetUserStatusDto.java
@@ -0,0 +1,22 @@
+package com.qiaoba.api.system.entity.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/5/10 14:03
+ */
+@Getter
+@Setter
+public class ResetUserStatusDto implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private String userId;
+
+ private String status;
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/dto/SysRoleDto.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/dto/SysRoleDto.java
new file mode 100644
index 0000000..d1fe71f
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/dto/SysRoleDto.java
@@ -0,0 +1,67 @@
+package com.qiaoba.api.system.entity.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Set;
+
+/**
+ * 角色
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/5/8 15:54
+ */
+@Getter
+@Setter
+public class SysRoleDto implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 角色ID
+ */
+ private String roleId;
+
+ /**
+ * 租户ID
+ */
+ private String tenantId;
+
+ /**
+ * 角色名称
+ */
+ private String roleName;
+
+ /**
+ * 角色权限
+ */
+ private String roleKey;
+
+ /**
+ * 角色排序
+ */
+ private String roleSort;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+ /**
+ * 角色状态(1正常 0停用)
+ */
+ private String status;
+
+ /**
+ * 部门组(数据权限)
+ */
+ private Set deptIds;
+
+ /**
+ * 菜单组
+ */
+ private Set menuIds;
+
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/dto/SysUserDto.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/dto/SysUserDto.java
new file mode 100644
index 0000000..a962dfe
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/dto/SysUserDto.java
@@ -0,0 +1,54 @@
+package com.qiaoba.api.system.entity.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Set;
+
+/**
+ * 用户
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/5/8 15:54
+ */
+@Getter
+@Setter
+public class SysUserDto implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private String userId;
+
+ private String nickname;
+
+ private String deptId;
+
+ private String phone;
+
+ private String email;
+
+ private String username;
+
+ private String password;
+
+ private String gender;
+
+ private String status;
+
+ private String isDelete;
+
+ private String remark;
+
+ /**
+ * 岗位组
+ */
+ private Set postIds;
+
+ /**
+ * 角色组
+ */
+ private Set roleIds;
+
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysDeptParam.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysDeptParam.java
new file mode 100644
index 0000000..4fb456a
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysDeptParam.java
@@ -0,0 +1,23 @@
+package com.qiaoba.api.system.entity.param;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * 部门查询参数
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023-04-23 15:37:43
+ */
+@Getter
+@Setter
+public class SysDeptParam implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private String deptName;
+ private String status;
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysMenuParam.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysMenuParam.java
new file mode 100644
index 0000000..1fe651f
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysMenuParam.java
@@ -0,0 +1,29 @@
+package com.qiaoba.api.system.entity.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * 菜单查询参数
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/5/5 11:24
+ */
+@Getter
+@Setter
+public class SysMenuParam implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "菜单名称")
+ private String menuName;
+
+ /**
+ * 显示状态(0隐藏 1显示)
+ */
+ private String isVisible;
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysPostParam.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysPostParam.java
new file mode 100644
index 0000000..387e4e1
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysPostParam.java
@@ -0,0 +1,33 @@
+package com.qiaoba.api.system.entity.param;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * 岗位查询参数
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023-04-23 15:37:43
+ */
+@Getter
+@Setter
+public class SysPostParam implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private String postName;
+
+ private String postCode;
+
+ private String status;
+
+ public SysPostParam() {
+ }
+
+ public SysPostParam(String status) {
+ this.status = status;
+ }
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysRoleParam.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysRoleParam.java
new file mode 100644
index 0000000..f509d36
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysRoleParam.java
@@ -0,0 +1,24 @@
+package com.qiaoba.api.system.entity.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * 角色查询参数
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023-04-23 15:37:43
+ */
+@Getter
+@Setter
+public class SysRoleParam implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private String roleName;
+ private String status;
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysUserParam.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysUserParam.java
index 4cf14f2..fa5a362 100644
--- a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysUserParam.java
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysUserParam.java
@@ -1,6 +1,5 @@
package com.qiaoba.api.system.entity.param;
-import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
@@ -19,6 +18,19 @@ public class SysUserParam implements Serializable {
private static final long serialVersionUID = 1L;
- @Schema(description = "昵称")
+ private String username;
+
private String nickname;
+
+ private String phone;
+
+ private String deptId;
+
+ private String status;
+
+ private String isDelete;
+
+ private String beginTime;
+
+ private String endTime;
}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/vo/SysMenuVo.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/vo/SysMenuVo.java
new file mode 100644
index 0000000..acddd24
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/vo/SysMenuVo.java
@@ -0,0 +1,69 @@
+package com.qiaoba.api.system.entity.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 菜单
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/5/6 14:08
+ */
+@Getter
+@Setter
+public class SysMenuVo implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 菜单ID
+ */
+ private String menuId;
+
+ /**
+ * 菜单名称
+ */
+ private String menuName;
+
+ /**
+ * 父菜单ID
+ */
+ private String parentId;
+
+ /**
+ * 显示顺序
+ */
+ private Integer orderNum;
+
+ /**
+ * 组件路径
+ */
+ private String component;
+
+ /**
+ * 显示状态(0隐藏 1显示)
+ */
+ private String isVisible;
+
+ /**
+ * 权限字符串
+ */
+ private String perms;
+
+ /**
+ * 菜单图标
+ */
+ private String icon;
+
+ /**
+ * 创建时间
+ */
+ private Date createTime;
+
+ private List children;
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/vo/SysRoleDto.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/vo/SysRoleDto.java
new file mode 100644
index 0000000..450900e
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/vo/SysRoleDto.java
@@ -0,0 +1,41 @@
+package com.qiaoba.api.system.entity.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Set;
+
+/**
+ * 角色
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/5/6 16:50
+ */
+@Getter
+@Setter
+public class SysRoleDto implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 用户是否存在此角色标识 默认不存在
+ */
+ private boolean flag = false;
+
+ /**
+ * 菜单组
+ */
+ private Long[] menuIds;
+
+ /**
+ * 部门组(数据权限)
+ */
+ private Long[] deptIds;
+
+ /**
+ * 角色菜单权限
+ */
+ private Set permissions;
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/vo/SysUserVo.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/vo/SysUserVo.java
new file mode 100644
index 0000000..e05dafc
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/vo/SysUserVo.java
@@ -0,0 +1,49 @@
+package com.qiaoba.api.system.entity.vo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 用户
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/5/10 15:50
+ */
+@Getter
+@Setter
+public class SysUserVo implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Excel(name = "用户ID", width = 25)
+ private String userId;
+
+ @Excel(name = "登录账号", width = 20)
+ private String username;
+
+ @Excel(name = "姓名", width = 20)
+ private String nickname;
+
+ @Excel(name = "部门", width = 20)
+ private String deptName;
+
+ @Excel(name = "性别", replace = {"男_0", "女_1", "未知_2"})
+ private String gender;
+
+ @Excel(name = "手机", width = 20)
+ private String phone;
+
+ @Excel(name = "邮箱", width = 20)
+ private String email;
+
+ @Excel(name = "创建时间", width = 30, format = "yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ @Excel(name = "状态", replace = {"正常_1", "停用_0"})
+ private String status;
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysDeptApiService.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysDeptApiService.java
new file mode 100644
index 0000000..75d18ec
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysDeptApiService.java
@@ -0,0 +1,56 @@
+package com.qiaoba.api.system.service;
+
+import com.qiaoba.api.system.entity.SysDept;
+import com.qiaoba.api.system.entity.param.SysDeptParam;
+
+import java.util.List;
+
+/**
+ * 部门对外暴露接口
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023-04-23 20:33:43
+ */
+public interface SysDeptApiService {
+
+ /**
+ * 新增部门
+ *
+ * @param sysDept sysDept
+ * @return > 0 = success
+ */
+ int insert(SysDept sysDept);
+
+ /**
+ * 更新部门
+ *
+ * @param sysDept sysDept
+ * @return > 0 = success
+ */
+ int updateById(SysDept sysDept);
+
+ /**
+ * 查询列表
+ *
+ * @param param 条件
+ * @return 部门列表
+ */
+ List selectList(SysDeptParam param);
+
+ /**
+ * 查询详细
+ *
+ * @param deptId 部门Id
+ * @return 部门信息
+ */
+ SysDept selectById(Long deptId);
+
+ /**
+ * 删除部门
+ *
+ * @param deptId 部门Id
+ * @return > 0 = success
+ */
+ int deleteById(Long deptId);
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysMenuApiService.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysMenuApiService.java
new file mode 100644
index 0000000..0977453
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysMenuApiService.java
@@ -0,0 +1,57 @@
+package com.qiaoba.api.system.service;
+
+import com.qiaoba.api.system.entity.SysMenu;
+import com.qiaoba.api.system.entity.param.SysMenuParam;
+import com.qiaoba.api.system.entity.vo.SysMenuVo;
+
+import java.util.List;
+
+/**
+ * 菜单对外暴露接口
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023-5-5 11:25:33
+ */
+public interface SysMenuApiService {
+
+ /**
+ * 新增菜单
+ *
+ * @param sysMenu sysMenu
+ * @return > 0 = success
+ */
+ int insert(SysMenu sysMenu);
+
+ /**
+ * 更新菜单
+ *
+ * @param sysMenu sysMenu
+ * @return > 0 = success
+ */
+ int updateById(SysMenu sysMenu);
+
+ /**
+ * 查询列表
+ *
+ * @param param 条件
+ * @return 菜单列表
+ */
+ List selectVoList(SysMenuParam param);
+
+ /**
+ * 查询详细
+ *
+ * @param menuId 菜单Id
+ * @return 菜单信息
+ */
+ SysMenu selectById(String menuId);
+
+ /**
+ * 删除菜单
+ *
+ * @param menuId 菜单Id
+ * @return > 0 = success
+ */
+ int deleteById(String menuId);
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysPostApiService.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysPostApiService.java
new file mode 100644
index 0000000..eb45366
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysPostApiService.java
@@ -0,0 +1,64 @@
+package com.qiaoba.api.system.service;
+
+import com.qiaoba.api.system.entity.SysPost;
+import com.qiaoba.api.system.entity.param.SysPostParam;
+
+import java.util.List;
+
+/**
+ * 岗位对外暴露接口
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023-04-23 20:33:43
+ */
+public interface SysPostApiService {
+
+ /**
+ * 新增岗位
+ *
+ * @param sysPost sysPost
+ * @return > 0 = success
+ */
+ int insert(SysPost sysPost);
+
+ /**
+ * 更新岗位
+ *
+ * @param sysPost sysPost
+ * @return > 0 = success
+ */
+ int updateById(SysPost sysPost);
+
+ /**
+ * 查询列表
+ *
+ * @param param 条件
+ * @return 岗位列表
+ */
+ List selectList(SysPostParam param);
+
+ /**
+ * 查询详细
+ *
+ * @param deptId 岗位Id
+ * @return 岗位信息
+ */
+ SysPost selectById(String deptId);
+
+ /**
+ * 删除岗位
+ *
+ * @param deptId 岗位Id
+ * @return > 0 = success
+ */
+ int deleteById(String deptId);
+
+ /**
+ * 批量删除岗位
+ *
+ * @param ids 岗位Ids
+ * @return > 0 = success
+ */
+ int deleteByIds(List ids);
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysRoleApiService.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysRoleApiService.java
new file mode 100644
index 0000000..ebc64c9
--- /dev/null
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysRoleApiService.java
@@ -0,0 +1,65 @@
+package com.qiaoba.api.system.service;
+
+import com.qiaoba.api.system.entity.SysRole;
+import com.qiaoba.api.system.entity.dto.SysRoleDto;
+import com.qiaoba.api.system.entity.param.SysRoleParam;
+
+import java.util.List;
+
+/**
+ * 角色对外暴露接口
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023-04-23 20:33:43
+ */
+public interface SysRoleApiService {
+
+ /**
+ * 新增角色
+ *
+ * @param roleDto roleDto
+ * @return > 0 = success
+ */
+ int insert(SysRoleDto roleDto);
+
+ /**
+ * 更新角色
+ *
+ * @param roleDto roleDto
+ * @return > 0 = success
+ */
+ int updateById(SysRoleDto roleDto);
+
+ /**
+ * 查询列表
+ *
+ * @param param 条件
+ * @return 角色列表
+ */
+ List selectList(SysRoleParam param);
+
+ /**
+ * 查询详细
+ *
+ * @param roleId 角色Id
+ * @return 角色信息
+ */
+ SysRole selectById(String roleId);
+
+ /**
+ * 删除角色
+ *
+ * @param roleId 角色Id
+ * @return > 0 = success
+ */
+ int deleteById(Long roleId);
+
+ /**
+ * 批量删除
+ *
+ * @param ids 角色ID列表
+ * @return > 0 = success
+ */
+ int deleteByIds(List ids);
+}
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysUserApiService.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysUserApiService.java
index 92928fd..bb987a7 100644
--- a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysUserApiService.java
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysUserApiService.java
@@ -1,6 +1,14 @@
package com.qiaoba.api.system.service;
import com.qiaoba.api.system.entity.SysUser;
+import com.qiaoba.api.system.entity.dto.ResetPwdDto;
+import com.qiaoba.api.system.entity.dto.ResetUserStatusDto;
+import com.qiaoba.api.system.entity.dto.SysUserDto;
+import com.qiaoba.api.system.entity.param.SysUserParam;
+import com.qiaoba.api.system.entity.vo.SysUserVo;
+
+import java.util.List;
+import java.util.Set;
/**
* 用户对外暴露接口
@@ -12,18 +20,62 @@ import com.qiaoba.api.system.entity.SysUser;
public interface SysUserApiService {
/**
- * 新增用户
+ * 新增或更新用户
*
- * @param sysUser sysUser
+ * @param dto dto
+ * @param isUpdate 是->更新
* @return > 0 = success
*/
- int insert(SysUser sysUser);
+ int saveOrUpdate(SysUserDto dto, Boolean isUpdate);
/**
- * 更新租户
+ * 查询用户
*
- * @param sysUser sysUser
- * @return > 0 = success
+ * @param userId userId
+ * @param hasPassword 是否需要密码
+ * @return SysUser
*/
- int update(SysUser sysUser);
+ SysUser selectById(String userId, Boolean hasPassword);
+
+ /**
+ * 重置密码
+ *
+ * @param dto dto
+ * @return 结果
+ */
+ int resetPwd(ResetPwdDto dto);
+
+ /**
+ * 更改用户状态
+ *
+ * @param dto dto
+ * @return 结果
+ */
+ int updateUserStatus(ResetUserStatusDto dto);
+
+ /**
+ * 批量删除
+ *
+ * @param userIds userIds
+ * @param isSoftDelete 是否软删除
+ * @return 结果
+ */
+ int deleteByIds(List userIds, Boolean isSoftDelete);
+
+ /**
+ * 用户绑定角色
+ *
+ * @param userId userId
+ * @param roleIds roleIds
+ * @param isUpdate 是否是更新操作
+ */
+ void handleUserRole(String userId, Set roleIds, boolean isUpdate);
+
+ /**
+ * 查询用户列表
+ *
+ * @param param 查询条件
+ * @return list
+ */
+ List selectVoList(SysUserParam param);
}
diff --git a/qiaoba-application/src/main/java/com/qiaoba/application/QiaoBaApplication.java b/qiaoba-application/src/main/java/com/qiaoba/application/QiaoBaApplication.java
index 3c29c28..787bc7f 100644
--- a/qiaoba-application/src/main/java/com/qiaoba/application/QiaoBaApplication.java
+++ b/qiaoba-application/src/main/java/com/qiaoba/application/QiaoBaApplication.java
@@ -1,5 +1,7 @@
package com.qiaoba.application;
+import cn.hutool.core.util.StrUtil;
+import com.qiaoba.api.system.entity.SysMenu;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/qiaoba-application/src/main/resources/application-dev.yml b/qiaoba-application/src/main/resources/application-dev.yml
index 05c6ae3..2690cce 100644
--- a/qiaoba-application/src/main/resources/application-dev.yml
+++ b/qiaoba-application/src/main/resources/application-dev.yml
@@ -30,34 +30,15 @@ qiaoba:
max: 20
is-use: false # 不使用该库
-qiaoba:
- datasource:
- master:
- driver: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://121.5.136.69:3306/qiaoba-boot?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowMultiQueries=true
- username: root
- password: LpYN7LUoL?l0OSpR2
- pool:
- init: 5 #连接池初始化大小
- min: 10 #最小空闲连接数
- max: 20 #最大连接数
- slaves:
- - url: jdbc:mysql://121.5.136.69:3306/qiaoba-boot?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowMultiQueries=true
- username: root
- password: LpYN7LUoL?l0OSpR2
- weight: 2
- pool:
- init: 5
- min: 10
- max: 20
- use: true
- - url: jdbc:mysql://121.5.136.69:3306/qiaoba-boot?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowMultiQueries=true
- username: root
- password: LpYN7LUoL?l0OSpR2
- weight:
- pool:
- init: 5 #连接池初始化大小
- min: 10 #最小空闲连接数
- max: 20 #最大连接数
- is-use: false
+mybatis-plus:
+ configuration:
+ # 自动驼峰命名规则(camel case)映射
+ mapUnderscoreToCamelCase: true
+ # MyBatis 自动映射策略
+ # NONE:不启用 PARTIAL:只对非嵌套 resultMap 自动映射 FULL:对所有 resultMap 自动映射
+ autoMappingBehavior: PARTIAL
+ # MyBatis 自动映射时未知列或未知属性处理策
+ # NONE:不做处理 WARNING:打印相关警告 FAILING:抛出异常和详细信息
+ autoMappingUnknownColumnBehavior: NONE
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
diff --git a/qiaoba-application/src/main/resources/application.yml b/qiaoba-application/src/main/resources/application.yml
index 74efe31..ea168f1 100644
--- a/qiaoba-application/src/main/resources/application.yml
+++ b/qiaoba-application/src/main/resources/application.yml
@@ -1,5 +1,5 @@
server:
- port: 80
+ port: 8080
spring:
main:
allow-bean-definition-overriding: true #新创建的bean覆盖旧的bean
@@ -36,4 +36,11 @@ knife4j:
language: zh_cn
enable-swagger-models: false
enable-footer-custom: true
- footer-custom-content: create by ailanyin
\ No newline at end of file
+ footer-custom-content: create by ailanyin
+
+# mybatis-plus:
+ # 对应的 XML 文件位置
+ # mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 实体扫描,多个package用逗号或者分号分隔
+ # typeAliasesPackage: com.qiaoba.**.entity
+
diff --git a/qiaoba-commons/pom.xml b/qiaoba-commons/pom.xml
index aea1807..73cfdd6 100644
--- a/qiaoba-commons/pom.xml
+++ b/qiaoba-commons/pom.xml
@@ -17,7 +17,9 @@
qiaoba-common-web
qiaoba-common-doc
qiaoba-common-redis
+ qiaoba-common-security
+ qiaoba-common-poi
-
\ No newline at end of file
+
diff --git a/qiaoba-commons/qiaoba-common-base/pom.xml b/qiaoba-commons/qiaoba-common-base/pom.xml
index 230e3cc..68fd04f 100644
--- a/qiaoba-commons/qiaoba-common-base/pom.xml
+++ b/qiaoba-commons/qiaoba-common-base/pom.xml
@@ -11,5 +11,10 @@
qiaoba-common-base
-
-
\ No newline at end of file
+
+
+ cn.hutool
+ hutool-all
+
+
+
diff --git a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/constants/BaseConstant.java b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/constants/BaseConstant.java
index 3ee02f2..5b53377 100644
--- a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/constants/BaseConstant.java
+++ b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/constants/BaseConstant.java
@@ -18,4 +18,14 @@ public class BaseConstant {
* 默认的字符拼接/切割符号: ','(英文逗号)
*/
public static final String DEFAULT_SPLIT_STR = ",";
+
+ /**
+ * 树的key的命名
+ */
+ public static final String TREE_KEY_NAME = "label";
+
+ /**
+ * 默认的父ID = 0
+ */
+ public static final String DEFAULT_PARENT_ID_VALUE = "0";
}
diff --git a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/entity/BaseEntity.java b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/entity/BaseEntity.java
index 790209c..6ba59ce 100644
--- a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/entity/BaseEntity.java
+++ b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/entity/BaseEntity.java
@@ -48,6 +48,6 @@ public class BaseEntity implements Serializable {
/**
* 租户Id
*/
- private Long tenantId;
+ private String tenantId;
}
diff --git a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/result/AjaxResult.java b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/result/AjaxResult.java
new file mode 100644
index 0000000..751cddd
--- /dev/null
+++ b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/result/AjaxResult.java
@@ -0,0 +1,167 @@
+package com.qiaoba.common.base.result;
+
+
+import java.util.HashMap;
+
+/**
+ * 通用返回
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2021-08-31
+ */
+public class AjaxResult extends HashMap {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 状态码
+ */
+ public static final String CODE_TAG = "code";
+
+ /**
+ * 返回内容
+ */
+ public static final String MSG_TAG = "msg";
+
+ /**
+ * 数据对象
+ */
+ public static final String DATA_TAG = "data";
+
+ /**
+ * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。
+ */
+ public AjaxResult() {
+ }
+
+ /**
+ * 初始化一个新创建的 AjaxResult 对象
+ *
+ * @param code 状态码
+ * @param msg 返回内容
+ */
+ public AjaxResult(int code, String msg) {
+ super.put(CODE_TAG, code);
+ super.put(MSG_TAG, msg);
+ }
+
+ /**
+ * 初始化一个新创建的 AjaxResult 对象
+ *
+ * @param code 状态码
+ * @param msg 返回内容
+ * @param data 数据对象
+ */
+ public AjaxResult(int code, String msg, Object data) {
+ super.put(CODE_TAG, code);
+ super.put(MSG_TAG, msg);
+ super.put(DATA_TAG, data);
+ }
+
+ /**
+ * 返回成功消息
+ *
+ * @return 成功消息
+ */
+ public static AjaxResult success() {
+ return AjaxResult.success("操作成功");
+ }
+
+ /**
+ * 返回成功数据
+ *
+ * @return 成功消息
+ */
+ public static AjaxResult success(Object data) {
+ return AjaxResult.success("操作成功" , data);
+ }
+
+ /**
+ * 返回成功消息
+ *
+ * @param msg 返回内容
+ * @return 成功消息
+ */
+ public static AjaxResult success(String msg) {
+ return AjaxResult.success(msg, null);
+ }
+
+ /**
+ * 返回成功消息
+ *
+ * @param msg 返回内容
+ * @param data 数据对象
+ * @return 成功消息
+ */
+ public static AjaxResult success(String msg, Object data) {
+ return new AjaxResult(200, msg, data);
+ }
+
+ /**
+ * 返回错误消息
+ *
+ * @return
+ */
+ public static AjaxResult error() {
+ return AjaxResult.error("操作失败");
+ }
+
+ /**
+ * 返回错误消息
+ *
+ * @param msg 返回内容
+ * @return 警告消息
+ */
+ public static AjaxResult error(String msg) {
+ return AjaxResult.error(msg, null);
+ }
+
+ /**
+ * 返回错误消息
+ *
+ * @param msg 返回内容
+ * @param data 数据对象
+ * @return 警告消息
+ */
+ public static AjaxResult error(String msg, Object data) {
+ return new AjaxResult(500, msg, data);
+ }
+
+ /**
+ * 返回错误消息
+ *
+ * @param code 状态码
+ * @param msg 返回内容
+ * @return 警告消息
+ */
+ public static AjaxResult error(int code, String msg) {
+ return new AjaxResult(code, msg, null);
+ }
+
+ /**
+ * 方便链式调用
+ *
+ * @param key 键
+ * @param value 值
+ * @return 数据对象
+ */
+ @Override
+ public AjaxResult put(String key, Object value) {
+ super.put(key, value);
+ return this;
+ }
+
+ public static AjaxResult toAjax(int result) {
+ return result > 0 ? AjaxResult.success() : AjaxResult.error();
+ }
+
+ public static AjaxResult rateLimit() {
+ return new AjaxResult(300, "您访问速度过快,系统繁忙!");
+ }
+
+ public static AjaxResult noPermissionResult(String uri) {
+ return new AjaxResult(401, "无 " + uri + " 路径访问权限");
+ }
+
+}
diff --git a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/config/DynamicDataSourceConfig.java b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/config/DynamicDataSourceConfig.java
index b5f4ee2..33542b9 100644
--- a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/config/DynamicDataSourceConfig.java
+++ b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/config/DynamicDataSourceConfig.java
@@ -12,11 +12,13 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
/**
@@ -79,6 +81,18 @@ public class DynamicDataSourceConfig {
}
}
+ /**
+ * 程序关闭后,要释放数据源连接池
+ */
+ @PreDestroy
+ public void close() {
+ Set> entries = DATA_SOURCE_MAP.entrySet();
+ for (Map.Entry