This commit is contained in:
2023-05-10 17:17:26 +08:00
parent 0af829c451
commit 076a8aed70
91 changed files with 3837 additions and 108 deletions

View File

@ -17,10 +17,6 @@
</modules>
<dependencies>
<dependency>
<groupId>com.qiaoba</groupId>
<artifactId>qiaoba-common-base</artifactId>
</dependency>
<dependency>
<groupId>com.qiaoba</groupId>
<artifactId>qiaoba-common-datasource</artifactId>
@ -33,5 +29,13 @@
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
</dependency>
<dependency>
<groupId>com.qiaoba</groupId>
<artifactId>qiaoba-common-security</artifactId>
</dependency>
<dependency>
<groupId>com.qiaoba</groupId>
<artifactId>qiaoba-common-poi</artifactId>
</dependency>
</dependencies>
</project>
</project>

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<String> deptIds;
/**
* 菜单组
*/
private Set<String> menuIds;
}

View File

@ -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<String> postIds;
/**
* 角色组
*/
private Set<String> roleIds;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<SysMenuVo> children;
}

View File

@ -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<String> permissions;
}

View File

@ -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;
}

View File

@ -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<SysDept> selectList(SysDeptParam param);
/**
* 查询详细
*
* @param deptId 部门Id
* @return 部门信息
*/
SysDept selectById(Long deptId);
/**
* 删除部门
*
* @param deptId 部门Id
* @return > 0 = success
*/
int deleteById(Long deptId);
}

View File

@ -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<SysMenuVo> selectVoList(SysMenuParam param);
/**
* 查询详细
*
* @param menuId 菜单Id
* @return 菜单信息
*/
SysMenu selectById(String menuId);
/**
* 删除菜单
*
* @param menuId 菜单Id
* @return > 0 = success
*/
int deleteById(String menuId);
}

View File

@ -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<SysPost> 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<String> ids);
}

View File

@ -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<SysRole> 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<String> ids);
}

View File

@ -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<String> userIds, Boolean isSoftDelete);
/**
* 用户绑定角色
*
* @param userId userId
* @param roleIds roleIds
* @param isUpdate 是否是更新操作
*/
void handleUserRole(String userId, Set<String> roleIds, boolean isUpdate);
/**
* 查询用户列表
*
* @param param 查询条件
* @return list
*/
List<SysUserVo> selectVoList(SysUserParam param);
}