init system

master
冯凯 2023-11-19 09:43:24 +08:00
commit 2859c598f6
119 changed files with 12601 additions and 0 deletions

46
.gitignore vendored 100644
View File

@ -0,0 +1,46 @@
######################################################################
# Build Tools
.gradle
/build/
!gradle/wrapper/gradle-wrapper.jar
target/
!.mvn/wrapper/maven-wrapper.jar
######################################################################
# IDE
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### JRebel ###
rebel.xml
### NetBeans ###
nbproject/private/
build/*
nbbuild/
dist/
nbdist/
.nb-gradle/
######################################################################
# Others
*.log
*.xml.versionsBackup
*.swp
!*/build/*.java
!*/build/*.html
!*/build/*.xml

View File

@ -0,0 +1,26 @@
<?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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.dragon</groupId>
<artifactId>dragon-modules-system</artifactId>
<version>3.6.3</version>
</parent>
<version>3.6.3</version>
<artifactId>dragon-system-common</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.dragon</groupId>
<artifactId>dragon-common-core</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,120 @@
package com.dragon.system.common.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dragon.common.core.annotation.Excel;
import com.dragon.common.core.annotation.Excel.ColumnType;
import com.dragon.common.core.web.domain.BaseEntity;
import lombok.Builder;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* sys_config
*
* @author dragon
*/
@Data
@TableName("sys_config")
public class SysConfig extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
@Excel(name = "参数主键", cellType = ColumnType.NUMERIC)
//设置为主键自增
@TableId(type = IdType.AUTO)
private Long configId;
/**
*
*/
@Excel(name = "参数名称")
private String configName;
/**
*
*/
@Excel(name = "参数键名")
private String configKey;
/**
*
*/
@Excel(name = "参数键值")
private String configValue;
/**
* Y N
*/
@Excel(name = "系统内置", readConverterExp = "Y=是,N=否")
private String configType;
public Long getConfigId() {
return configId;
}
public void setConfigId(Long configId) {
this.configId = configId;
}
@NotBlank(message = "参数名称不能为空")
@Size(min = 0, max = 100, message = "参数名称不能超过100个字符")
public String getConfigName() {
return configName;
}
public void setConfigName(String configName) {
this.configName = configName;
}
@NotBlank(message = "参数键名长度不能为空")
@Size(min = 0, max = 100, message = "参数键名长度不能超过100个字符")
public String getConfigKey() {
return configKey;
}
public void setConfigKey(String configKey) {
this.configKey = configKey;
}
@NotBlank(message = "参数键值不能为空")
@Size(min = 0, max = 500, message = "参数键值长度不能超过500个字符")
public String getConfigValue() {
return configValue;
}
public void setConfigValue(String configValue) {
this.configValue = configValue;
}
public String getConfigType() {
return configType;
}
public void setConfigType(String configType) {
this.configType = configType;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("configId", getConfigId())
.append("configName", getConfigName())
.append("configKey", getConfigKey())
.append("configValue", getConfigValue())
.append("configType", getConfigType())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -0,0 +1,213 @@
package com.dragon.system.common.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dragon.common.core.web.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.ArrayList;
import java.util.List;
/**
* sys_dept
*
* @author dragon
*/
@Data
@TableName("sys_dept")
public class SysDept extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(type = IdType.AUTO)
private Long deptId;
/**
* ID
*/
private Long parentId;
/**
*
*/
private String ancestors;
/**
*
*/
private String deptName;
/**
*
*/
private Integer orderNum;
/**
*
*/
private String leader;
/**
*
*/
private String phone;
/**
*
*/
private String email;
/**
* :0,1
*/
private String status;
/**
* 0 2
*/
private String delFlag;
/**
*
*/
@TableField(exist = false)
private String parentName;
/**
*
*/
@TableField(exist = false)
private List<SysDept> children = new ArrayList<SysDept>();
public Long getDeptId() {
return deptId;
}
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public String getAncestors() {
return ancestors;
}
public void setAncestors(String ancestors) {
this.ancestors = ancestors;
}
@NotBlank(message = "部门名称不能为空")
@Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
@NotNull(message = "显示顺序不能为空")
public Integer getOrderNum() {
return orderNum;
}
public void setOrderNum(Integer orderNum) {
this.orderNum = orderNum;
}
public String getLeader() {
return leader;
}
public void setLeader(String leader) {
this.leader = leader;
}
@Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符")
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Email(message = "邮箱格式不正确")
@Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getDelFlag() {
return delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getParentName() {
return parentName;
}
public void setParentName(String parentName) {
this.parentName = parentName;
}
public List<SysDept> getChildren() {
return children;
}
public void setChildren(List<SysDept> children) {
this.children = children;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("deptId", getDeptId())
.append("parentId", getParentId())
.append("ancestors", getAncestors())
.append("deptName", getDeptName())
.append("orderNum", getOrderNum())
.append("leader", getLeader())
.append("phone", getPhone())
.append("email", getEmail())
.append("status", getStatus())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -0,0 +1,175 @@
package com.dragon.system.common.domain;
import com.dragon.common.core.annotation.Excel;
import com.dragon.common.core.annotation.Excel.ColumnType;
import com.dragon.common.core.constant.UserConstants;
import com.dragon.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* sys_dict_data
*
* @author dragon
*/
public class SysDictData extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
@Excel(name = "字典编码", cellType = ColumnType.NUMERIC)
private Long dictCode;
/**
*
*/
@Excel(name = "字典排序", cellType = ColumnType.NUMERIC)
private Long dictSort;
/**
*
*/
@Excel(name = "字典标签")
private String dictLabel;
/**
*
*/
@Excel(name = "字典键值")
private String dictValue;
/**
*
*/
@Excel(name = "字典类型")
private String dictType;
/**
*
*/
private String cssClass;
/**
*
*/
private String listClass;
/**
* Y N
*/
@Excel(name = "是否默认", readConverterExp = "Y=是,N=否")
private String isDefault;
/**
* 0 1
*/
@Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private String status;
public Long getDictCode() {
return dictCode;
}
public void setDictCode(Long dictCode) {
this.dictCode = dictCode;
}
public Long getDictSort() {
return dictSort;
}
public void setDictSort(Long dictSort) {
this.dictSort = dictSort;
}
@NotBlank(message = "字典标签不能为空")
@Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符")
public String getDictLabel() {
return dictLabel;
}
public void setDictLabel(String dictLabel) {
this.dictLabel = dictLabel;
}
@NotBlank(message = "字典键值不能为空")
@Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符")
public String getDictValue() {
return dictValue;
}
public void setDictValue(String dictValue) {
this.dictValue = dictValue;
}
@NotBlank(message = "字典类型不能为空")
@Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符")
public String getDictType() {
return dictType;
}
public void setDictType(String dictType) {
this.dictType = dictType;
}
@Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符")
public String getCssClass() {
return cssClass;
}
public void setCssClass(String cssClass) {
this.cssClass = cssClass;
}
public String getListClass() {
return listClass;
}
public void setListClass(String listClass) {
this.listClass = listClass;
}
public boolean getDefault() {
return UserConstants.YES.equals(this.isDefault);
}
public String getIsDefault() {
return isDefault;
}
public void setIsDefault(String isDefault) {
this.isDefault = isDefault;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("dictCode", getDictCode())
.append("dictSort", getDictSort())
.append("dictLabel", getDictLabel())
.append("dictValue", getDictValue())
.append("dictType", getDictType())
.append("cssClass", getCssClass())
.append("listClass", getListClass())
.append("isDefault", getIsDefault())
.append("status", getStatus())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -0,0 +1,96 @@
package com.dragon.system.common.domain;
import com.dragon.common.core.annotation.Excel;
import com.dragon.common.core.annotation.Excel.ColumnType;
import com.dragon.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
/**
* sys_dict_type
*
* @author dragon
*/
public class SysDictType extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
@Excel(name = "字典主键", cellType = ColumnType.NUMERIC)
private Long dictId;
/**
*
*/
@Excel(name = "字典名称")
private String dictName;
/**
*
*/
@Excel(name = "字典类型")
private String dictType;
/**
* 0 1
*/
@Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private String status;
public Long getDictId() {
return dictId;
}
public void setDictId(Long dictId) {
this.dictId = dictId;
}
@NotBlank(message = "字典名称不能为空")
@Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符")
public String getDictName() {
return dictName;
}
public void setDictName(String dictName) {
this.dictName = dictName;
}
@NotBlank(message = "字典类型不能为空")
@Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符")
@Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)")
public String getDictType() {
return dictType;
}
public void setDictType(String dictType) {
this.dictType = dictType;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("dictId", getDictId())
.append("dictName", getDictName())
.append("dictType", getDictType())
.append("status", getStatus())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -0,0 +1,102 @@
package com.dragon.system.common.domain;
import com.dragon.common.core.annotation.Excel;
import com.dragon.common.core.annotation.Excel.ColumnType;
import com.dragon.common.core.web.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
* 访 sys_logininfor
*
* @author dragon
*/
public class SysLogininfor extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* ID
*/
@Excel(name = "序号", cellType = ColumnType.NUMERIC)
private Long infoId;
/**
*
*/
@Excel(name = "用户账号")
private String userName;
/**
* 0 1
*/
@Excel(name = "状态", readConverterExp = "0=成功,1=失败")
private String status;
/**
*
*/
@Excel(name = "地址")
private String ipaddr;
/**
*
*/
@Excel(name = "描述")
private String msg;
/**
* 访
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "访问时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date accessTime;
public Long getInfoId() {
return infoId;
}
public void setInfoId(Long infoId) {
this.infoId = infoId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getIpaddr() {
return ipaddr;
}
public void setIpaddr(String ipaddr) {
this.ipaddr = ipaddr;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Date getAccessTime() {
return accessTime;
}
public void setAccessTime(Date accessTime) {
this.accessTime = accessTime;
}
}

View File

@ -0,0 +1,259 @@
package com.dragon.system.common.domain;
import com.dragon.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.ArrayList;
import java.util.List;
/**
* sys_menu
*
* @author dragon
*/
public class SysMenu extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* ID
*/
private Long menuId;
/**
*
*/
private String menuName;
/**
*
*/
private String parentName;
/**
* ID
*/
private Long 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 visible;
/**
* 0 1
*/
private String status;
/**
*
*/
private String perms;
/**
*
*/
private String icon;
/**
*
*/
private List<SysMenu> children = new ArrayList<SysMenu>();
public Long getMenuId() {
return menuId;
}
public void setMenuId(Long menuId) {
this.menuId = menuId;
}
@NotBlank(message = "菜单名称不能为空")
@Size(min = 0, max = 50, message = "菜单名称长度不能超过50个字符")
public String getMenuName() {
return menuName;
}
public void setMenuName(String menuName) {
this.menuName = menuName;
}
public String getParentName() {
return parentName;
}
public void setParentName(String parentName) {
this.parentName = parentName;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
@NotNull(message = "显示顺序不能为空")
public Integer getOrderNum() {
return orderNum;
}
public void setOrderNum(Integer orderNum) {
this.orderNum = orderNum;
}
@Size(min = 0, max = 200, message = "路由地址不能超过200个字符")
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
@Size(min = 0, max = 200, message = "组件路径不能超过255个字符")
public String getComponent() {
return component;
}
public void setComponent(String component) {
this.component = component;
}
public String getQuery() {
return query;
}
public void setQuery(String query) {
this.query = query;
}
public String getIsFrame() {
return isFrame;
}
public void setIsFrame(String isFrame) {
this.isFrame = isFrame;
}
public String getIsCache() {
return isCache;
}
public void setIsCache(String isCache) {
this.isCache = isCache;
}
@NotBlank(message = "菜单类型不能为空")
public String getMenuType() {
return menuType;
}
public void setMenuType(String menuType) {
this.menuType = menuType;
}
public String getVisible() {
return visible;
}
public void setVisible(String visible) {
this.visible = visible;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
@Size(min = 0, max = 100, message = "权限标识长度不能超过100个字符")
public String getPerms() {
return perms;
}
public void setPerms(String perms) {
this.perms = perms;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public List<SysMenu> getChildren() {
return children;
}
public void setChildren(List<SysMenu> children) {
this.children = children;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("menuId", getMenuId())
.append("menuName", getMenuName())
.append("parentId", getParentId())
.append("orderNum", getOrderNum())
.append("path", getPath())
.append("component", getComponent())
.append("isFrame", getIsFrame())
.append("IsCache", getIsCache())
.append("menuType", getMenuType())
.append("visible", getVisible())
.append("status ", getStatus())
.append("perms", getPerms())
.append("icon", getIcon())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -0,0 +1,102 @@
package com.dragon.system.common.domain;
import com.dragon.common.core.web.domain.BaseEntity;
import com.dragon.common.core.xss.Xss;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* sys_notice
*
* @author dragon
*/
public class SysNotice extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* ID
*/
private Long noticeId;
/**
*
*/
private String noticeTitle;
/**
* 1 2
*/
private String noticeType;
/**
*
*/
private String noticeContent;
/**
* 0 1
*/
private String status;
public Long getNoticeId() {
return noticeId;
}
public void setNoticeId(Long noticeId) {
this.noticeId = noticeId;
}
@Xss(message = "公告标题不能包含脚本字符")
@NotBlank(message = "公告标题不能为空")
@Size(min = 0, max = 50, message = "公告标题不能超过50个字符")
public String getNoticeTitle() {
return noticeTitle;
}
public void setNoticeTitle(String noticeTitle) {
this.noticeTitle = noticeTitle;
}
public String getNoticeType() {
return noticeType;
}
public void setNoticeType(String noticeType) {
this.noticeType = noticeType;
}
public String getNoticeContent() {
return noticeContent;
}
public void setNoticeContent(String noticeContent) {
this.noticeContent = noticeContent;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("noticeId", getNoticeId())
.append("noticeTitle", getNoticeTitle())
.append("noticeType", getNoticeType())
.append("noticeContent", getNoticeContent())
.append("status", getStatus())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -0,0 +1,255 @@
package com.dragon.system.common.domain;
import com.dragon.common.core.annotation.Excel;
import com.dragon.common.core.annotation.Excel.ColumnType;
import com.dragon.common.core.web.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
* oper_log
*
* @author dragon
*/
public class SysOperLog extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
@Excel(name = "操作序号", cellType = ColumnType.NUMERIC)
private Long operId;
/**
*
*/
@Excel(name = "操作模块")
private String title;
/**
* 0 1 2 3
*/
@Excel(name = "业务类型", readConverterExp = "0=其它,1=新增,2=修改,3=删除,4=授权,5=导出,6=导入,7=强退,8=生成代码,9=清空数据")
private Integer businessType;
/**
*
*/
private Integer[] businessTypes;
/**
*
*/
@Excel(name = "请求方法")
private String method;
/**
*
*/
@Excel(name = "请求方式")
private String requestMethod;
/**
* 0 1 2
*/
@Excel(name = "操作类别", readConverterExp = "0=其它,1=后台用户,2=手机端用户")
private Integer operatorType;
/**
*
*/
@Excel(name = "操作人员")
private String operName;
/**
*
*/
@Excel(name = "部门名称")
private String deptName;
/**
* url
*/
@Excel(name = "请求地址")
private String operUrl;
/**
*
*/
@Excel(name = "操作地址")
private String operIp;
/**
*
*/
@Excel(name = "请求参数")
private String operParam;
/**
*
*/
@Excel(name = "返回参数")
private String jsonResult;
/**
* 0 1
*/
@Excel(name = "状态", readConverterExp = "0=正常,1=异常")
private Integer status;
/**
*
*/
@Excel(name = "错误消息")
private String errorMsg;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date operTime;
/**
*
*/
@Excel(name = "消耗时间", suffix = "毫秒")
private Long costTime;
public Long getOperId() {
return operId;
}
public void setOperId(Long operId) {
this.operId = operId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Integer getBusinessType() {
return businessType;
}
public void setBusinessType(Integer businessType) {
this.businessType = businessType;
}
public Integer[] getBusinessTypes() {
return businessTypes;
}
public void setBusinessTypes(Integer[] businessTypes) {
this.businessTypes = businessTypes;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getRequestMethod() {
return requestMethod;
}
public void setRequestMethod(String requestMethod) {
this.requestMethod = requestMethod;
}
public Integer getOperatorType() {
return operatorType;
}
public void setOperatorType(Integer operatorType) {
this.operatorType = operatorType;
}
public String getOperName() {
return operName;
}
public void setOperName(String operName) {
this.operName = operName;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String getOperUrl() {
return operUrl;
}
public void setOperUrl(String operUrl) {
this.operUrl = operUrl;
}
public String getOperIp() {
return operIp;
}
public void setOperIp(String operIp) {
this.operIp = operIp;
}
public String getOperParam() {
return operParam;
}
public void setOperParam(String operParam) {
this.operParam = operParam;
}
public String getJsonResult() {
return jsonResult;
}
public void setJsonResult(String jsonResult) {
this.jsonResult = jsonResult;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
public Date getOperTime() {
return operTime;
}
public void setOperTime(Date operTime) {
this.operTime = operTime;
}
public Long getCostTime() {
return costTime;
}
public void setCostTime(Long costTime) {
this.costTime = costTime;
}
}

View File

@ -0,0 +1,124 @@
package com.dragon.system.common.domain;
import com.dragon.common.core.annotation.Excel;
import com.dragon.common.core.annotation.Excel.ColumnType;
import com.dragon.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
* sys_post
*
* @author dragon
*/
public class SysPost extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
@Excel(name = "岗位序号", cellType = ColumnType.NUMERIC)
private Long postId;
/**
*
*/
@Excel(name = "岗位编码")
private String postCode;
/**
*
*/
@Excel(name = "岗位名称")
private String postName;
/**
*
*/
@Excel(name = "岗位排序")
private Integer postSort;
/**
* 0 1
*/
@Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private String status;
/**
*
*/
private boolean flag = false;
public Long getPostId() {
return postId;
}
public void setPostId(Long postId) {
this.postId = postId;
}
@NotBlank(message = "岗位编码不能为空")
@Size(min = 0, max = 64, message = "岗位编码长度不能超过64个字符")
public String getPostCode() {
return postCode;
}
public void setPostCode(String postCode) {
this.postCode = postCode;
}
@NotBlank(message = "岗位名称不能为空")
@Size(min = 0, max = 50, message = "岗位名称长度不能超过50个字符")
public String getPostName() {
return postName;
}
public void setPostName(String postName) {
this.postName = postName;
}
@NotNull(message = "显示顺序不能为空")
public Integer getPostSort() {
return postSort;
}
public void setPostSort(Integer postSort) {
this.postSort = postSort;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("postId", getPostId())
.append("postCode", getPostCode())
.append("postName", getPostName())
.append("postSort", getPostSort())
.append("status", getStatus())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -0,0 +1,237 @@
package com.dragon.system.common.domain;
import com.dragon.common.core.annotation.Excel;
import com.dragon.common.core.annotation.Excel.ColumnType;
import com.dragon.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Set;
/**
* sys_role
*
* @author dragon
*/
public class SysRole extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* ID
*/
@Excel(name = "角色序号", cellType = ColumnType.NUMERIC)
private Long roleId;
/**
*
*/
@Excel(name = "角色名称")
private String roleName;
/**
*
*/
@Excel(name = "角色权限")
private String roleKey;
/**
*
*/
@Excel(name = "角色排序")
private Integer roleSort;
/**
* 12345
*/
@Excel(name = "数据范围", readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限")
private String dataScope;
/**
* 0 1
*/
private boolean menuCheckStrictly;
/**
* 0 1
*/
private boolean deptCheckStrictly;
/**
* 0 1
*/
@Excel(name = "角色状态", readConverterExp = "0=正常,1=停用")
private String status;
/**
* 0 2
*/
private String delFlag;
/**
*
*/
private boolean flag = false;
/**
*
*/
private Long[] menuIds;
/**
*
*/
private Long[] deptIds;
/**
*
*/
private Set<String> permissions;
public SysRole() {
}
public SysRole(Long roleId) {
this.roleId = roleId;
}
public static boolean isAdmin(Long roleId) {
return roleId != null && 1L == roleId;
}
public Long getRoleId() {
return roleId;
}
public void setRoleId(Long roleId) {
this.roleId = roleId;
}
public boolean isAdmin() {
return isAdmin(this.roleId);
}
@NotBlank(message = "角色名称不能为空")
@Size(min = 0, max = 30, message = "角色名称长度不能超过30个字符")
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
@NotBlank(message = "权限字符不能为空")
@Size(min = 0, max = 100, message = "权限字符长度不能超过100个字符")
public String getRoleKey() {
return roleKey;
}
public void setRoleKey(String roleKey) {
this.roleKey = roleKey;
}
@NotNull(message = "显示顺序不能为空")
public Integer getRoleSort() {
return roleSort;
}
public void setRoleSort(Integer roleSort) {
this.roleSort = roleSort;
}
public String getDataScope() {
return dataScope;
}
public void setDataScope(String dataScope) {
this.dataScope = dataScope;
}
public boolean isMenuCheckStrictly() {
return menuCheckStrictly;
}
public void setMenuCheckStrictly(boolean menuCheckStrictly) {
this.menuCheckStrictly = menuCheckStrictly;
}
public boolean isDeptCheckStrictly() {
return deptCheckStrictly;
}
public void setDeptCheckStrictly(boolean deptCheckStrictly) {
this.deptCheckStrictly = deptCheckStrictly;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getDelFlag() {
return delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public Long[] getMenuIds() {
return menuIds;
}
public void setMenuIds(Long[] menuIds) {
this.menuIds = menuIds;
}
public Long[] getDeptIds() {
return deptIds;
}
public void setDeptIds(Long[] deptIds) {
this.deptIds = deptIds;
}
public Set<String> getPermissions() {
return permissions;
}
public void setPermissions(Set<String> permissions) {
this.permissions = permissions;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("roleId", getRoleId())
.append("roleName", getRoleName())
.append("roleKey", getRoleKey())
.append("roleSort", getRoleSort())
.append("dataScope", getDataScope())
.append("menuCheckStrictly", isMenuCheckStrictly())
.append("deptCheckStrictly", isDeptCheckStrictly())
.append("status", getStatus())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -0,0 +1,45 @@
package com.dragon.system.common.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* sys_role_dept
*
* @author dragon
*/
public class SysRoleDept {
/**
* ID
*/
private Long roleId;
/**
* ID
*/
private Long deptId;
public Long getRoleId() {
return roleId;
}
public void setRoleId(Long roleId) {
this.roleId = roleId;
}
public Long getDeptId() {
return deptId;
}
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("roleId", getRoleId())
.append("deptId", getDeptId())
.toString();
}
}

View File

@ -0,0 +1,45 @@
package com.dragon.system.common.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* sys_role_menu
*
* @author dragon
*/
public class SysRoleMenu {
/**
* ID
*/
private Long roleId;
/**
* ID
*/
private Long menuId;
public Long getRoleId() {
return roleId;
}
public void setRoleId(Long roleId) {
this.roleId = roleId;
}
public Long getMenuId() {
return menuId;
}
public void setMenuId(Long menuId) {
this.menuId = menuId;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("roleId", getRoleId())
.append("menuId", getMenuId())
.toString();
}
}

View File

@ -0,0 +1,322 @@
package com.dragon.system.common.domain;
import com.dragon.common.core.annotation.Excel;
import com.dragon.common.core.annotation.Excel.ColumnType;
import com.dragon.common.core.annotation.Excel.Type;
import com.dragon.common.core.annotation.Excels;
import com.dragon.common.core.web.domain.BaseEntity;
import com.dragon.common.core.xss.Xss;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;
/**
* sys_user
*
* @author dragon
*/
public class SysUser extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* ID
*/
@Excel(name = "用户序号", cellType = ColumnType.NUMERIC, prompt = "用户编号")
private Long userId;
/**
* ID
*/
@Excel(name = "部门编号", type = Type.IMPORT)
private Long deptId;
/**
*
*/
@Excel(name = "登录名称")
private String userName;
/**
*
*/
@Excel(name = "用户名称")
private String nickName;
/**
*
*/
@Excel(name = "用户邮箱")
private String email;
/**
*
*/
@Excel(name = "手机号码")
private String phonenumber;
/**
*
*/
@Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知")
private String sex;
/**
*
*/
private String avatar;
/**
*
*/
private String password;
/**
* 0 1
*/
@Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
private String status;
/**
* 0 2
*/
private String delFlag;
/**
* IP
*/
@Excel(name = "最后登录IP", type = Type.EXPORT)
private String loginIp;
/**
*
*/
@Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
private Date loginDate;
/**
*
*/
@Excels({
@Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
@Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
})
private SysDept dept;
/**
*
*/
private List<SysRole> roles;
/**
*
*/
private Long[] roleIds;
/**
*
*/
private Long[] postIds;
/**
* ID
*/
private Long roleId;
public SysUser() {
}
public SysUser(Long userId) {
this.userId = userId;
}
public static boolean isAdmin(Long userId) {
return userId != null && 1L == userId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public boolean isAdmin() {
return isAdmin(this.userId);
}
public Long getDeptId() {
return deptId;
}
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
@Xss(message = "用户昵称不能包含脚本字符")
@Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
@Xss(message = "用户账号不能包含脚本字符")
@NotBlank(message = "用户账号不能为空")
@Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Email(message = "邮箱格式不正确")
@Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
public String getPhonenumber() {
return phonenumber;
}
public void setPhonenumber(String phonenumber) {
this.phonenumber = phonenumber;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getDelFlag() {
return delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getLoginIp() {
return loginIp;
}
public void setLoginIp(String loginIp) {
this.loginIp = loginIp;
}
public Date getLoginDate() {
return loginDate;
}
public void setLoginDate(Date loginDate) {
this.loginDate = loginDate;
}
public SysDept getDept() {
return dept;
}
public void setDept(SysDept dept) {
this.dept = dept;
}
public List<SysRole> getRoles() {
return roles;
}
public void setRoles(List<SysRole> roles) {
this.roles = roles;
}
public Long[] getRoleIds() {
return roleIds;
}
public void setRoleIds(Long[] roleIds) {
this.roleIds = roleIds;
}
public Long[] getPostIds() {
return postIds;
}
public void setPostIds(Long[] postIds) {
this.postIds = postIds;
}
public Long getRoleId() {
return roleId;
}
public void setRoleId(Long roleId) {
this.roleId = roleId;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("userId", getUserId())
.append("deptId", getDeptId())
.append("userName", getUserName())
.append("nickName", getNickName())
.append("email", getEmail())
.append("phonenumber", getPhonenumber())
.append("sex", getSex())
.append("avatar", getAvatar())
.append("password", getPassword())
.append("status", getStatus())
.append("delFlag", getDelFlag())
.append("loginIp", getLoginIp())
.append("loginDate", getLoginDate())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.append("dept", getDept())
.toString();
}
}

View File

@ -0,0 +1,99 @@
package com.dragon.system.common.domain;
/**
* 线
*
* @author dragon
*/
public class SysUserOnline {
/**
*
*/
private String tokenId;
/**
*
*/
private String userName;
/**
* IP
*/
private String ipaddr;
/**
*
*/
private String loginLocation;
/**
*
*/
private String browser;
/**
*
*/
private String os;
/**
*
*/
private Long loginTime;
public String getTokenId() {
return tokenId;
}
public void setTokenId(String tokenId) {
this.tokenId = tokenId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getIpaddr() {
return ipaddr;
}
public void setIpaddr(String ipaddr) {
this.ipaddr = ipaddr;
}
public String getLoginLocation() {
return loginLocation;
}
public void setLoginLocation(String loginLocation) {
this.loginLocation = loginLocation;
}
public String getBrowser() {
return browser;
}
public void setBrowser(String browser) {
this.browser = browser;
}
public String getOs() {
return os;
}
public void setOs(String os) {
this.os = os;
}
public Long getLoginTime() {
return loginTime;
}
public void setLoginTime(Long loginTime) {
this.loginTime = loginTime;
}
}

View File

@ -0,0 +1,45 @@
package com.dragon.system.common.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* sys_user_post
*
* @author dragon
*/
public class SysUserPost {
/**
* ID
*/
private Long userId;
/**
* ID
*/
private Long postId;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getPostId() {
return postId;
}
public void setPostId(Long postId) {
this.postId = postId;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("userId", getUserId())
.append("postId", getPostId())
.toString();
}
}

View File

@ -0,0 +1,45 @@
package com.dragon.system.common.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* sys_user_role
*
* @author dragon
*/
public class SysUserRole {
/**
* ID
*/
private Long userId;
/**
* ID
*/
private Long roleId;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getRoleId() {
return roleId;
}
public void setRoleId(Long roleId) {
this.roleId = roleId;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("userId", getUserId())
.append("roleId", getRoleId())
.toString();
}
}

View File

@ -0,0 +1,132 @@
package com.dragon.system.common.domain.model;
import com.dragon.system.common.domain.SysUser;
import java.io.Serializable;
import java.util.Set;
/**
*
*
* @author dragon
*/
public class LoginUser implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private String token;
/**
* id
*/
private Long userid;
/**
*
*/
private String username;
/**
*
*/
private Long loginTime;
/**
*
*/
private Long expireTime;
/**
* IP
*/
private String ipaddr;
/**
*
*/
private Set<String> permissions;
/**
*
*/
private Set<String> roles;
/**
*
*/
private SysUser sysUser;
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public Long getUserid() {
return userid;
}
public void setUserid(Long userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Long getLoginTime() {
return loginTime;
}
public void setLoginTime(Long loginTime) {
this.loginTime = loginTime;
}
public Long getExpireTime() {
return expireTime;
}
public void setExpireTime(Long expireTime) {
this.expireTime = expireTime;
}
public String getIpaddr() {
return ipaddr;
}
public void setIpaddr(String ipaddr) {
this.ipaddr = ipaddr;
}
public Set<String> getPermissions() {
return permissions;
}
public void setPermissions(Set<String> permissions) {
this.permissions = permissions;
}
public Set<String> getRoles() {
return roles;
}
public void setRoles(Set<String> roles) {
this.roles = roles;
}
public SysUser getSysUser() {
return sysUser;
}
public void setSysUser(SysUser sysUser) {
this.sysUser = sysUser;
}
}

View File

@ -0,0 +1,28 @@
package com.dragon.system.common.domain.res;
import com.dragon.system.common.domain.SysRole;
import com.dragon.system.common.domain.SysUser;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author
* @version 1.0
* @description:
* @date 2023/11/12 20:42
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AuthRoleRes {
private SysUser user;
private List<SysRole> roles;
}

View File

@ -0,0 +1,21 @@
package com.dragon.system.common.domain.res;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author
* @version 1.0
* @description:
* @date 2023/11/12 20:37
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AvatarRes {
private String imgUrl;
}

View File

@ -0,0 +1,27 @@
package com.dragon.system.common.domain.res;
import com.dragon.system.common.domain.vo.TreeSelect;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author
* @version 1.0
* @description:
* @date 2023/11/12 20:39
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class DeptTreeRes {
private List<Long> checkedKeys;
private List<TreeSelect> treeSelects;
}

View File

@ -0,0 +1,28 @@
package com.dragon.system.common.domain.res;
import com.dragon.system.common.domain.SysUser;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Set;
/**
* @author
* @version 1.0
* @description:
* @date 2023/11/12 20:46
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class LoginUserInfoRes {
private SysUser user;
private Set<String> roles;
private Set<String> permissions;
}

View File

@ -0,0 +1,26 @@
package com.dragon.system.common.domain.res;
import com.dragon.system.common.domain.vo.TreeSelect;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author
* @version 1.0
* @description:
* @date 2023/11/12 20:25
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RoleMenuTreeRes {
private List<Long> checkedKeys;
private List<TreeSelect> menus;
}

View File

@ -0,0 +1,25 @@
package com.dragon.system.common.domain.res;
import com.dragon.system.common.domain.SysUser;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author
* @version 1.0
* @description:
* @date 2023/11/12 20:30
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SysUserDetailInfoRes {
private SysUser sysUser;
private String roleGroup;
private String postGroup;
}

View File

@ -0,0 +1,34 @@
package com.dragon.system.common.domain.res;
import com.dragon.system.common.domain.SysRole;
import com.dragon.system.common.domain.SysUser;
import com.dragon.system.common.domain.SysPost;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author
* @version 1.0
* @description:
* @date 2023/11/12 20:49
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserInfoByUserId {
private SysUser sysUser;
private List<SysRole> roles;
private List<SysPost> sysPosts;
private List<Long> postIds;
private List<Long> roleIds;
}

View File

@ -0,0 +1,91 @@
package com.dragon.system.common.domain.vo;
import com.dragon.common.core.utils.StringUtils;
/**
*
*
* @author dragon
*/
public class MetaVo {
/**
*
*/
private String title;
/**
* src/assets/icons/svg
*/
private String icon;
/**
* true <keep-alive>
*/
private boolean noCache;
/**
* http(s)://开头)
*/
private String link;
public MetaVo() {
}
public MetaVo(String title, String icon) {
this.title = title;
this.icon = icon;
}
public MetaVo(String title, String icon, boolean noCache) {
this.title = title;
this.icon = icon;
this.noCache = noCache;
}
public MetaVo(String title, String icon, String link) {
this.title = title;
this.icon = icon;
this.link = link;
}
public MetaVo(String title, String icon, boolean noCache, String link) {
this.title = title;
this.icon = icon;
this.noCache = noCache;
if (StringUtils.ishttp(link)) {
this.link = link;
}
}
public boolean isNoCache() {
return noCache;
}
public void setNoCache(boolean noCache) {
this.noCache = noCache;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
}

View File

@ -0,0 +1,130 @@
package com.dragon.system.common.domain.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.util.List;
/**
*
*
* @author dragon
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class RouterVo {
/**
*
*/
private String name;
/**
*
*/
private String path;
/**
* true
*/
private boolean hidden;
/**
* noRedirect
*/
private String redirect;
/**
*
*/
private String component;
/**
* {"id": 1, "name": "ry"}
*/
private String query;
/**
* children 1--
*/
private Boolean alwaysShow;
/**
*
*/
private MetaVo meta;
/**
*
*/
private List<RouterVo> children;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public boolean getHidden() {
return hidden;
}
public void setHidden(boolean hidden) {
this.hidden = hidden;
}
public String getRedirect() {
return redirect;
}
public void setRedirect(String redirect) {
this.redirect = redirect;
}
public String getComponent() {
return component;
}
public void setComponent(String component) {
this.component = component;
}
public String getQuery() {
return query;
}
public void setQuery(String query) {
this.query = query;
}
public Boolean getAlwaysShow() {
return alwaysShow;
}
public void setAlwaysShow(Boolean alwaysShow) {
this.alwaysShow = alwaysShow;
}
public MetaVo getMeta() {
return meta;
}
public void setMeta(MetaVo meta) {
this.meta = meta;
}
public List<RouterVo> getChildren() {
return children;
}
public void setChildren(List<RouterVo> children) {
this.children = children;
}
}

View File

@ -0,0 +1,74 @@
package com.dragon.system.common.domain.vo;
import com.dragon.system.common.domain.SysDept;
import com.dragon.system.common.domain.SysMenu;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
/**
* Treeselect
*
* @author dragon
*/
public class TreeSelect implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID
*/
private Long id;
/**
*
*/
private String label;
/**
*
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<TreeSelect> children;
public TreeSelect() {
}
public TreeSelect(SysDept dept) {
this.id = dept.getDeptId();
this.label = dept.getDeptName();
this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
}
public TreeSelect(SysMenu menu) {
this.id = menu.getMenuId();
this.label = menu.getMenuName();
this.children = menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public List<TreeSelect> getChildren() {
return children;
}
public void setChildren(List<TreeSelect> children) {
this.children = children;
}
}

View File

@ -0,0 +1,25 @@
<?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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.dragon</groupId>
<artifactId>dragon-modules-system</artifactId>
<version>3.6.3</version>
</parent>
<version>3.6.3</version>
<artifactId>dragon-system-remote</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.dragon</groupId>
<artifactId>dragon-system-common</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,41 @@
package com.dragon.system.remote;
import com.dragon.common.core.constant.SecurityConstants;
import com.dragon.common.core.constant.ServiceNameConstants;
import com.dragon.common.core.domain.Result;;
import com.dragon.system.common.domain.SysLogininfor;
import com.dragon.system.common.domain.SysOperLog;
import com.dragon.system.remote.factory.RemoteLogFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
/**
*
*
* @author dragon
*/
@FeignClient(contextId = "remoteLogService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteLogFallbackFactory.class)
public interface RemoteLogService {
/**
*
*
* @param sysOperLog
* @param source
* @return
*/
@PostMapping("/operlog")
public Result<Boolean> saveLog(@RequestBody SysOperLog sysOperLog, @RequestHeader(SecurityConstants.FROM_SOURCE) String source) throws Exception;
/**
* 访
*
* @param sysLogininfor 访
* @param source
* @return
*/
@PostMapping("/logininfor")
public Result<Boolean> saveLogininfor(@RequestBody SysLogininfor sysLogininfor, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}

View File

@ -0,0 +1,40 @@
package com.dragon.system.remote;
import com.dragon.common.core.constant.SecurityConstants;
import com.dragon.common.core.constant.ServiceNameConstants;
import com.dragon.common.core.domain.Result;;
import com.dragon.system.common.domain.SysUser;
import com.dragon.system.common.domain.model.LoginUser;
import com.dragon.system.remote.factory.RemoteUserFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
/**
*
*
* @author dragon
*/
@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class)
public interface RemoteUserService {
/**
*
*
* @param username
* @param source
* @return
*/
@GetMapping("/user/info/{username}")
public Result<LoginUser> getUserInfo(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/**
*
*
* @param sysUser
* @param source
* @return
*/
@PostMapping("/user/register")
public Result<Boolean> registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}

View File

@ -0,0 +1,38 @@
package com.dragon.system.remote.factory;
import com.dragon.common.core.domain.Result;;
import com.dragon.system.common.domain.SysLogininfor;
import com.dragon.system.common.domain.SysOperLog;
import com.dragon.system.remote.RemoteLogService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
*
*
* @author dragon
*/
@Component
public class RemoteLogFallbackFactory implements FallbackFactory<RemoteLogService> {
private static final Logger log = LoggerFactory.getLogger(RemoteLogFallbackFactory.class);
@Override
public RemoteLogService create(Throwable throwable) {
log.error("日志服务调用失败:{}", throwable.getMessage());
return new RemoteLogService() {
@Override
public Result<Boolean> saveLog(SysOperLog sysOperLog, String source) {
return Result.error("保存操作日志失败:" + throwable.getMessage());
}
@Override
public Result<Boolean> saveLogininfor(SysLogininfor sysLogininfor, String source) {
return Result.error("保存登录日志失败:" + throwable.getMessage());
}
};
}
}

View File

@ -0,0 +1,37 @@
package com.dragon.system.remote.factory;
import com.dragon.common.core.domain.Result;;
import com.dragon.system.common.domain.SysUser;
import com.dragon.system.common.domain.model.LoginUser;
import com.dragon.system.remote.RemoteUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
*
*
* @author dragon
*/
@Component
public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserService> {
private static final Logger log = LoggerFactory.getLogger(RemoteUserFallbackFactory.class);
@Override
public RemoteUserService create(Throwable throwable) {
log.error("用户服务调用失败:{}", throwable.getMessage());
return new RemoteUserService() {
@Override
public Result<LoginUser> getUserInfo(String username, String source) {
return Result.error("获取用户失败:" + throwable.getMessage());
}
@Override
public Result<Boolean> registerUserInfo(SysUser sysUser, String source) {
return Result.error("注册用户失败:" + throwable.getMessage());
}
};
}
}

View File

@ -0,0 +1,2 @@
com.dragon.system.remote.factory.RemoteUserFallbackFactory
com.dragon.system.remote.factory.RemoteLogFallbackFactory

View File

@ -0,0 +1,114 @@
<?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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.dragon</groupId>
<artifactId>dragon-modules-system</artifactId>
<version>3.6.3</version>
</parent>
<artifactId>dragon-system-server</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- SpringCloud Alibaba Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- SpringCloud Alibaba Sentinel -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!-- SpringBoot Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Swagger UI -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.fox.version}</version>
</dependency>
<!-- Mysql Connector -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<!-- Dragon Common DataSource -->
<dependency>
<groupId>com.dragon</groupId>
<artifactId>dragon-common-datasource</artifactId>
</dependency>
<!-- Dragon Common DataScope -->
<dependency>
<groupId>com.dragon</groupId>
<artifactId>dragon-common-datascope</artifactId>
</dependency>
<!-- Dragon Common Log -->
<dependency>
<groupId>com.dragon</groupId>
<artifactId>dragon-common-log</artifactId>
</dependency>
<!-- Dragon Common Swagger -->
<dependency>
<groupId>com.dragon</groupId>
<artifactId>dragon-common-swagger</artifactId>
</dependency>
<dependency>
<groupId>com.dragon</groupId>
<artifactId>dragon-file-remote</artifactId>
</dependency>
<dependency>
<groupId>com.dragon</groupId>
<artifactId>dragon-system-common</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>16</source><target>16</target></configuration></plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,22 @@
package com.dragon.system.server;
import com.dragon.common.security.annotation.EnableCustomConfig;
import com.dragon.common.security.annotation.EnableDragonFeignClients;
import com.dragon.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
*
*
* @author dragon
*/
@EnableCustomConfig
@EnableCustomSwagger2
@EnableDragonFeignClients
@SpringBootApplication
public class DragonSystemApplication {
public static void main(String[] args) {
SpringApplication.run(DragonSystemApplication.class, args);
}
}

View File

@ -0,0 +1,118 @@
package com.dragon.system.server.controller;
import com.dragon.common.core.domain.Result;;
import com.dragon.common.core.utils.poi.ExcelUtil;
import com.dragon.common.core.web.controller.BaseController;
import com.dragon.common.core.web.page.TableDataInfo;
import com.dragon.common.log.annotation.Log;
import com.dragon.common.log.enums.BusinessType;
import com.dragon.common.security.annotation.RequiresPermissions;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysConfig;
import com.dragon.system.server.service.ISysConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
*
*
* @author dragon
*/
@RestController
@RequestMapping("/config")
public class SysConfigController extends BaseController {
@Autowired
private ISysConfigService configService;
/**
*
*/
@RequiresPermissions("system:config:list")
@GetMapping("/list")
public Result<TableDataInfo<SysConfig>> list(SysConfig config) {
startPage();
List<SysConfig> list = configService.selectConfigList(config);
return getDataTable(list);
}
@Log(title = "参数管理", businessType = BusinessType.EXPORT)
@RequiresPermissions("system:config:export")
@PostMapping("/export")
public void export(HttpServletResponse response, SysConfig config) {
List<SysConfig> list = configService.selectConfigList(config);
ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class);
util.exportExcel(response, list, "参数数据");
}
/**
*
*/
@GetMapping(value = "/{configId}")
public Result getInfo(@PathVariable Long configId) {
return Result.success(configService.selectConfigById(configId));
}
/**
*
*/
@GetMapping(value = "/configKey/{configKey}")
public Result getConfigKey(@PathVariable String configKey) {
return Result.success(configService.selectConfigByKey(configKey));
}
/**
*
*/
@RequiresPermissions("system:config:add")
@Log(title = "参数管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysConfig config) {
if (!configService.checkConfigKeyUnique(config)) {
return Result.error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在");
}
config.setCreateBy(SecurityUtils.getUsername());
return toAjax(configService.insertConfig(config));
}
/**
*
*/
@RequiresPermissions("system:config:edit")
@Log(title = "参数管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysConfig config) {
if (!configService.checkConfigKeyUnique(config)) {
return Result.error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在");
}
config.setUpdateBy(SecurityUtils.getUsername());
return toAjax(configService.updateConfig(config));
}
/**
*
*/
@RequiresPermissions("system:config:remove")
@Log(title = "参数管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{configIds}")
public Result remove(@PathVariable Long[] configIds) {
configService.deleteConfigByIds(configIds);
return success();
}
/**
*
*/
@RequiresPermissions("system:config:remove")
@Log(title = "参数管理", businessType = BusinessType.CLEAN)
@DeleteMapping("/refreshCache")
public Result refreshCache() {
configService.resetConfigCache();
return success();
}
}

View File

@ -0,0 +1,119 @@
package com.dragon.system.server.controller;
import com.dragon.common.core.domain.Result;
import com.dragon.common.core.utils.poi.ExcelUtil;
import com.dragon.common.core.web.controller.BaseController;
import com.dragon.common.core.web.page.TableDataInfo;
import com.dragon.common.log.annotation.Log;
import com.dragon.common.log.enums.BusinessType;
import com.dragon.common.security.annotation.RequiresPermissions;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysConfig;
import com.dragon.system.server.service.SysConfigPlusService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
;
/**
*
*
* @author dragon
*/
@RestController
@RequestMapping("/config/plus")
public class SysConfigPlusController extends BaseController {
@Autowired
private SysConfigPlusService configService;
/**
*
*/
@RequiresPermissions("system:config:list")
@GetMapping("/list")
public Result<TableDataInfo<SysConfig>> list(SysConfig config) {
startPage();
List<SysConfig> list = configService.pageQuery(config);
return getDataTable(list);
}
@Log(title = "参数管理", businessType = BusinessType.EXPORT)
@RequiresPermissions("system:config:export")
@PostMapping("/export")
public void export(HttpServletResponse response, SysConfig config) {
List<SysConfig> list = configService.pageQuery(config);
ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class);
util.exportExcel(response, list, "参数数据");
}
/**
*
*/
@GetMapping(value = "/{configId}")
public Result getInfo(@PathVariable Long configId) {
return Result.success(configService.getById(configId));
}
/**
*
*/
@GetMapping(value = "/configKey/{configKey}")
public Result getConfigKey(@PathVariable String configKey) {
return Result.success(configService.getByConfigKey(configKey));
}
/**
*
*/
@RequiresPermissions("system:config:add")
@Log(title = "参数管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysConfig config) {
if (!configService.checkConfigKeyUnique(config)) {
return Result.error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在");
}
config.setCreateBy(SecurityUtils.getUsername());
return toAjax(configService.save(config));
}
/**
*
*/
@RequiresPermissions("system:config:edit")
@Log(title = "参数管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysConfig config) {
if (!configService.checkConfigKeyUnique(config)) {
return Result.error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在");
}
config.setUpdateBy(SecurityUtils.getUsername());
return toAjax(configService.updateById(config));
}
/**
*
*/
@RequiresPermissions("system:config:remove")
@Log(title = "参数管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{configIds}")
public Result remove(@PathVariable Long[] configIds) {
configService.removeBatchByIds(Arrays.asList(configIds));
return success();
}
/**
*
*/
@RequiresPermissions("system:config:remove")
@Log(title = "参数管理", businessType = BusinessType.CLEAN)
@DeleteMapping("/refreshCache")
public Result refreshCache() {
configService.resetConfigCache();
return success();
}
}

View File

@ -0,0 +1,114 @@
package com.dragon.system.server.controller;
import com.dragon.common.core.constant.UserConstants;
import com.dragon.common.core.domain.Result;;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.common.core.web.controller.BaseController;
import com.dragon.common.log.annotation.Log;
import com.dragon.common.log.enums.BusinessType;
import com.dragon.common.security.annotation.RequiresPermissions;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysDept;
import com.dragon.system.server.service.ISysDeptService;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
*
* @author dragon
*/
@RestController
@RequestMapping("/dept")
public class SysDeptController extends BaseController {
@Autowired
private ISysDeptService deptService;
/**
*
*/
@RequiresPermissions("system:dept:list")
@GetMapping("/list")
public Result list(SysDept dept) {
List<SysDept> depts = deptService.selectDeptList(dept);
return success(depts);
}
/**
*
*/
@RequiresPermissions("system:dept:list")
@GetMapping("/list/exclude/{deptId}")
public Result excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) {
List<SysDept> depts = deptService.selectDeptList(new SysDept());
depts.removeIf(d -> d.getDeptId().intValue() == deptId || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""));
return success(depts);
}
/**
*
*/
@RequiresPermissions("system:dept:query")
@GetMapping(value = "/{deptId}")
public Result getInfo(@PathVariable Long deptId) {
deptService.checkDeptDataScope(deptId);
return success(deptService.selectDeptById(deptId));
}
/**
*
*/
@RequiresPermissions("system:dept:add")
@Log(title = "部门管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysDept dept) {
System.out.println(deptService.checkDeptNameUnique(dept));
if (!deptService.checkDeptNameUnique(dept)) {
return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在");
}
dept.setCreateBy(SecurityUtils.getUsername());
return toAjax(deptService.insertDept(dept));
}
/**
*
*/
@RequiresPermissions("system:dept:edit")
@Log(title = "部门管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysDept dept) {
Long deptId = dept.getDeptId();
deptService.checkDeptDataScope(deptId);
if (!deptService.checkDeptNameUnique(dept)) {
return error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
} else if (dept.getParentId().equals(deptId)) {
return error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
} else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0) {
return error("该部门包含未停用的子部门!");
}
dept.setUpdateBy(SecurityUtils.getUsername());
return toAjax(deptService.updateDept(dept));
}
/**
*
*/
@RequiresPermissions("system:dept:remove")
@Log(title = "部门管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{deptId}")
public Result remove(@PathVariable Long deptId) {
if (deptService.hasChildByDeptId(deptId)) {
return warn("存在下级部门,不允许删除");
}
if (deptService.checkDeptExistUser(deptId)) {
return warn("部门存在用户,不允许删除");
}
deptService.checkDeptDataScope(deptId);
return toAjax(deptService.deleteDeptById(deptId));
}
}

View File

@ -0,0 +1,115 @@
package com.dragon.system.server.controller;
import com.dragon.common.core.constant.UserConstants;
import com.dragon.common.core.domain.Result;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.common.core.web.controller.BaseController;
import com.dragon.common.log.annotation.Log;
import com.dragon.common.log.enums.BusinessType;
import com.dragon.common.security.annotation.RequiresPermissions;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysDept;
import com.dragon.system.server.service.SysDeptPlusService;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
;
/**
*
*
* @author dragon
*/
@RestController
@RequestMapping("/dept/plus")
public class SysDeptPlusController extends BaseController {
@Autowired
private SysDeptPlusService deptService;
/**
*
*/
@RequiresPermissions("system:dept:list")
@GetMapping("/list")
public Result list(SysDept dept) {
List<SysDept> depts = deptService.querList(dept);
return success(depts);
}
/**
*
*/
@RequiresPermissions("system:dept:list")
@GetMapping("/list/exclude/{deptId}")
public Result excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) {
List<SysDept> depts = deptService.list();
depts.removeIf(d -> d.getDeptId().intValue() == deptId || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""));
return success(depts);
}
/**
*
*/
@RequiresPermissions("system:dept:query")
@GetMapping(value = "/{deptId}")
public Result getInfo(@PathVariable Long deptId) {
deptService.checkDeptDataScope(deptId);
return success(deptService.getById(deptId));
}
/**
*
*/
@RequiresPermissions("system:dept:add")
@Log(title = "部门管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysDept dept) {
System.out.println(deptService.checkDeptNameUnique(dept));
if (deptService.checkDeptNameUnique(dept)) {
return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在");
}
dept.setCreateBy(SecurityUtils.getUsername());
return toAjax(deptService.save(dept));
}
/**
*
*/
@RequiresPermissions("system:dept:edit")
@Log(title = "部门管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysDept dept) {
Long deptId = dept.getDeptId();
deptService.checkDeptDataScope(deptId);
if (!deptService.checkDeptNameUnique(dept)) {
return error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
} else if (dept.getParentId().equals(deptId)) {
return error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
} else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0) {
return error("该部门包含未停用的子部门!");
}
dept.setUpdateBy(SecurityUtils.getUsername());
return toAjax(deptService.updateDept(dept));
}
/**
*
*/
@RequiresPermissions("system:dept:remove")
@Log(title = "部门管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{deptId}")
public Result remove(@PathVariable Long deptId) {
if (deptService.hasChildByDeptId(deptId)) {
return warn("存在下级部门,不允许删除");
}
if (deptService.checkDeptExistUser(deptId)) {
return warn("部门存在用户,不允许删除");
}
deptService.checkDeptDataScope(deptId);
return toAjax(deptService.removeById(deptId));
}
}

View File

@ -0,0 +1,108 @@
package com.dragon.system.server.controller;
import com.dragon.common.core.domain.Result;;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.common.core.utils.poi.ExcelUtil;
import com.dragon.common.core.web.controller.BaseController;
import com.dragon.common.core.web.page.TableDataInfo;
import com.dragon.common.log.annotation.Log;
import com.dragon.common.log.enums.BusinessType;
import com.dragon.common.security.annotation.RequiresPermissions;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysDictData;
import com.dragon.system.server.service.ISysDictDataService;
import com.dragon.system.server.service.ISysDictTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
*
*
* @author dragon
*/
@RestController
@RequestMapping("/dict/data")
public class SysDictDataController extends BaseController {
@Autowired
private ISysDictDataService dictDataService;
@Autowired
private ISysDictTypeService dictTypeService;
@RequiresPermissions("system:dict:list")
@GetMapping("/list")
public Result<TableDataInfo<SysDictData>> list(SysDictData dictData) {
startPage();
List<SysDictData> list = dictDataService.selectDictDataList(dictData);
return getDataTable(list);
}
@Log(title = "字典数据", businessType = BusinessType.EXPORT)
@RequiresPermissions("system:dict:export")
@PostMapping("/export")
public void export(HttpServletResponse response, SysDictData dictData) {
List<SysDictData> list = dictDataService.selectDictDataList(dictData);
ExcelUtil<SysDictData> util = new ExcelUtil<SysDictData>(SysDictData.class);
util.exportExcel(response, list, "字典数据");
}
/**
*
*/
@RequiresPermissions("system:dict:query")
@GetMapping(value = "/{dictCode}")
public Result getInfo(@PathVariable Long dictCode) {
return success(dictDataService.selectDictDataById(dictCode));
}
/**
*
*/
@GetMapping(value = "/type/{dictType}")
public Result dictType(@PathVariable String dictType) {
List<SysDictData> data = dictTypeService.selectDictDataByType(dictType);
if (StringUtils.isNull(data)) {
data = new ArrayList<SysDictData>();
}
return success(data);
}
/**
*
*/
@RequiresPermissions("system:dict:add")
@Log(title = "字典数据", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysDictData dict) {
dict.setCreateBy(SecurityUtils.getUsername());
return toAjax(dictDataService.insertDictData(dict));
}
/**
*
*/
@RequiresPermissions("system:dict:edit")
@Log(title = "字典数据", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysDictData dict) {
dict.setUpdateBy(SecurityUtils.getUsername());
return toAjax(dictDataService.updateDictData(dict));
}
/**
*
*/
@RequiresPermissions("system:dict:remove")
@Log(title = "字典类型", businessType = BusinessType.DELETE)
@DeleteMapping("/{dictCodes}")
public Result remove(@PathVariable Long[] dictCodes) {
dictDataService.deleteDictDataByIds(dictCodes);
return success();
}
}

View File

@ -0,0 +1,116 @@
package com.dragon.system.server.controller;
import com.dragon.common.core.domain.Result;;
import com.dragon.common.core.utils.poi.ExcelUtil;
import com.dragon.common.core.web.controller.BaseController;
import com.dragon.common.core.web.page.TableDataInfo;
import com.dragon.common.log.annotation.Log;
import com.dragon.common.log.enums.BusinessType;
import com.dragon.common.security.annotation.RequiresPermissions;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysDictType;
import com.dragon.system.server.service.ISysDictTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
*
*
* @author dragon
*/
@RestController
@RequestMapping("/dict/type")
public class SysDictTypeController extends BaseController {
@Autowired
private ISysDictTypeService dictTypeService;
@RequiresPermissions("system:dict:list")
@GetMapping("/list")
public Result<TableDataInfo<SysDictType>> list(SysDictType dictType) {
startPage();
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
return getDataTable(list);
}
@Log(title = "字典类型", businessType = BusinessType.EXPORT)
@RequiresPermissions("system:dict:export")
@PostMapping("/export")
public void export(HttpServletResponse response, SysDictType dictType) {
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class);
util.exportExcel(response, list, "字典类型");
}
/**
*
*/
@RequiresPermissions("system:dict:query")
@GetMapping(value = "/{dictId}")
public Result getInfo(@PathVariable Long dictId) {
return success(dictTypeService.selectDictTypeById(dictId));
}
/**
*
*/
@RequiresPermissions("system:dict:add")
@Log(title = "字典类型", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysDictType dict) {
if (!dictTypeService.checkDictTypeUnique(dict)) {
return error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在");
}
dict.setCreateBy(SecurityUtils.getUsername());
return toAjax(dictTypeService.insertDictType(dict));
}
/**
*
*/
@RequiresPermissions("system:dict:edit")
@Log(title = "字典类型", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysDictType dict) {
if (!dictTypeService.checkDictTypeUnique(dict)) {
return error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在");
}
dict.setUpdateBy(SecurityUtils.getUsername());
return toAjax(dictTypeService.updateDictType(dict));
}
/**
*
*/
@RequiresPermissions("system:dict:remove")
@Log(title = "字典类型", businessType = BusinessType.DELETE)
@DeleteMapping("/{dictIds}")
public Result remove(@PathVariable Long[] dictIds) {
dictTypeService.deleteDictTypeByIds(dictIds);
return success();
}
/**
*
*/
@RequiresPermissions("system:dict:remove")
@Log(title = "字典类型", businessType = BusinessType.CLEAN)
@DeleteMapping("/refreshCache")
public Result refreshCache() {
dictTypeService.resetDictCache();
return success();
}
/**
*
*/
@GetMapping("/optionselect")
public Result optionselect() {
List<SysDictType> dictTypes = dictTypeService.selectDictTypeAll();
return success(dictTypes);
}
}

View File

@ -0,0 +1,80 @@
package com.dragon.system.server.controller;
import com.dragon.common.core.constant.CacheConstants;
import com.dragon.common.core.utils.poi.ExcelUtil;
import com.dragon.common.core.web.controller.BaseController;
import com.dragon.common.core.domain.Result;
import com.dragon.common.core.web.page.TableDataInfo;
import com.dragon.common.log.annotation.Log;
import com.dragon.common.log.enums.BusinessType;
import com.dragon.common.redis.service.RedisService;
import com.dragon.common.security.annotation.InnerAuth;
import com.dragon.common.security.annotation.RequiresPermissions;
import com.dragon.system.common.domain.SysLogininfor;
import com.dragon.system.server.service.ISysLogininforService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 访
*
* @author dragon
*/
@RestController
@RequestMapping("/logininfor")
public class SysLogininforController extends BaseController {
@Autowired
private ISysLogininforService logininforService;
@Autowired
private RedisService redisService;
@RequiresPermissions("system:logininfor:list")
@GetMapping("/list")
public Result<TableDataInfo<SysLogininfor>> list(SysLogininfor logininfor) {
startPage();
List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
return getDataTable(list);
}
@Log(title = "登录日志", businessType = BusinessType.EXPORT)
@RequiresPermissions("system:logininfor:export")
@PostMapping("/export")
public void export(HttpServletResponse response, SysLogininfor logininfor) {
List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class);
util.exportExcel(response, list, "登录日志");
}
@RequiresPermissions("system:logininfor:remove")
@Log(title = "登录日志", businessType = BusinessType.DELETE)
@DeleteMapping("/{infoIds}")
public Result remove(@PathVariable Long[] infoIds) {
return toAjax(logininforService.deleteLogininforByIds(infoIds));
}
@RequiresPermissions("system:logininfor:remove")
@Log(title = "登录日志", businessType = BusinessType.DELETE)
@DeleteMapping("/clean")
public Result clean() {
logininforService.cleanLogininfor();
return success();
}
@RequiresPermissions("system:logininfor:unlock")
@Log(title = "账户解锁", businessType = BusinessType.OTHER)
@GetMapping("/unlock/{userName}")
public Result unlock(@PathVariable("userName") String userName) {
redisService.deleteObject(CacheConstants.PWD_ERR_CNT_KEY + userName);
return success();
}
@InnerAuth
@PostMapping
public Result add(@RequestBody SysLogininfor logininfor) {
return toAjax(logininforService.insertLogininfor(logininfor));
}
}

View File

@ -0,0 +1,137 @@
package com.dragon.system.server.controller;
import com.dragon.common.core.constant.UserConstants;
import com.dragon.common.core.domain.Result;;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.common.core.web.controller.BaseController;
import com.dragon.common.log.annotation.Log;
import com.dragon.common.log.enums.BusinessType;
import com.dragon.common.security.annotation.RequiresPermissions;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysMenu;
import com.dragon.system.common.domain.res.RoleMenuTreeRes;
import com.dragon.system.server.service.ISysMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
*
* @author dragon
*/
@RestController
@RequestMapping("/menu")
public class SysMenuController extends BaseController {
@Autowired
private ISysMenuService menuService;
/**
*
*/
@RequiresPermissions("system:menu:list")
@GetMapping("/list")
public Result list(SysMenu menu) {
Long userId = SecurityUtils.getUserId();
List<SysMenu> menus = menuService.selectMenuList(menu, userId);
return success(menus);
}
/**
*
*/
@RequiresPermissions("system:menu:query")
@GetMapping(value = "/{menuId}")
public Result getInfo(@PathVariable Long menuId) {
return success(menuService.selectMenuById(menuId));
}
/**
*
*/
@GetMapping("/treeselect")
public Result treeselect(SysMenu menu) {
Long userId = SecurityUtils.getUserId();
List<SysMenu> menus = menuService.selectMenuList(menu, userId);
return success(menuService.buildMenuTreeSelect(menus));
}
/**
*
*/
@GetMapping(value = "/roleMenuTreeselect/{roleId}")
public Result roleMenuTreeselect(@PathVariable("roleId") Long roleId) {
Long userId = SecurityUtils.getUserId();
List<SysMenu> menus = menuService.selectMenuList(userId);
return Result.success(RoleMenuTreeRes.builder()
.checkedKeys(menuService.selectMenuListByRoleId(roleId))
.menus(menuService.buildMenuTreeSelect(menus))
.build()
);
}
/**
*
*/
@RequiresPermissions("system:menu:add")
@Log(title = "菜单管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysMenu menu) {
if (!menuService.checkMenuNameUnique(menu)) {
return error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
} else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) {
return error("新增菜单'" + menu.getMenuName() + "'失败地址必须以http(s)://开头");
}
menu.setCreateBy(SecurityUtils.getUsername());
return toAjax(menuService.insertMenu(menu));
}
/**
*
*/
@RequiresPermissions("system:menu:edit")
@Log(title = "菜单管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysMenu menu) {
if (!menuService.checkMenuNameUnique(menu)) {
return error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
} else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) {
return error("修改菜单'" + menu.getMenuName() + "'失败地址必须以http(s)://开头");
} else if (menu.getMenuId().equals(menu.getParentId())) {
return error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己");
}
menu.setUpdateBy(SecurityUtils.getUsername());
return toAjax(menuService.updateMenu(menu));
}
/**
*
*/
@RequiresPermissions("system:menu:remove")
@Log(title = "菜单管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{menuId}")
public Result remove(@PathVariable("menuId") Long menuId) {
if (menuService.hasChildByMenuId(menuId)) {
return warn("存在子菜单,不允许删除");
}
if (menuService.checkMenuExistRole(menuId)) {
return warn("菜单已分配,不允许删除");
}
return toAjax(menuService.deleteMenuById(menuId));
}
/**
*
*
* @return
*/
@GetMapping("getRouters")
public Result getRouters() {
Long userId = SecurityUtils.getUserId();
List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
return success(menuService.buildMenus(menus));
}
}

View File

@ -0,0 +1,80 @@
package com.dragon.system.server.controller;
import com.dragon.common.core.domain.Result;;
import com.dragon.common.core.web.controller.BaseController;
import com.dragon.common.core.web.page.TableDataInfo;
import com.dragon.common.log.annotation.Log;
import com.dragon.common.log.enums.BusinessType;
import com.dragon.common.security.annotation.RequiresPermissions;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysNotice;
import com.dragon.system.server.service.ISysNoticeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
*
* @author dragon
*/
@RestController
@RequestMapping("/notice")
public class SysNoticeController extends BaseController {
@Autowired
private ISysNoticeService noticeService;
/**
*
*/
@RequiresPermissions("system:notice:list")
@GetMapping("/list")
public Result<TableDataInfo<SysNotice>> list(SysNotice notice) {
startPage();
List<SysNotice> list = noticeService.selectNoticeList(notice);
return getDataTable(list);
}
/**
*
*/
@RequiresPermissions("system:notice:query")
@GetMapping(value = "/{noticeId}")
public Result getInfo(@PathVariable Long noticeId) {
return success(noticeService.selectNoticeById(noticeId));
}
/**
*
*/
@RequiresPermissions("system:notice:add")
@Log(title = "通知公告", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysNotice notice) {
notice.setCreateBy(SecurityUtils.getUsername());
return toAjax(noticeService.insertNotice(notice));
}
/**
*
*/
@RequiresPermissions("system:notice:edit")
@Log(title = "通知公告", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysNotice notice) {
notice.setUpdateBy(SecurityUtils.getUsername());
return toAjax(noticeService.updateNotice(notice));
}
/**
*
*/
@RequiresPermissions("system:notice:remove")
@Log(title = "通知公告", businessType = BusinessType.DELETE)
@DeleteMapping("/{noticeIds}")
public Result remove(@PathVariable Long[] noticeIds) {
return toAjax(noticeService.deleteNoticeByIds(noticeIds));
}
}

View File

@ -0,0 +1,67 @@
package com.dragon.system.server.controller;
import com.dragon.common.core.utils.poi.ExcelUtil;
import com.dragon.common.core.web.controller.BaseController;
import com.dragon.common.core.domain.Result;
import com.dragon.common.core.web.page.TableDataInfo;
import com.dragon.common.log.annotation.Log;
import com.dragon.common.log.enums.BusinessType;
import com.dragon.common.security.annotation.InnerAuth;
import com.dragon.common.security.annotation.RequiresPermissions;
import com.dragon.system.common.domain.SysOperLog;
import com.dragon.system.server.service.ISysOperLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
*
*
* @author dragon
*/
@RestController
@RequestMapping("/operlog")
public class SysOperlogController extends BaseController {
@Autowired
private ISysOperLogService operLogService;
@RequiresPermissions("system:operlog:list")
@GetMapping("/list")
public Result<TableDataInfo<SysOperLog>> list(SysOperLog operLog) {
startPage();
List<SysOperLog> list = operLogService.selectOperLogList(operLog);
return getDataTable(list);
}
@Log(title = "操作日志", businessType = BusinessType.EXPORT)
@RequiresPermissions("system:operlog:export")
@PostMapping("/export")
public void export(HttpServletResponse response, SysOperLog operLog) {
List<SysOperLog> list = operLogService.selectOperLogList(operLog);
ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class);
util.exportExcel(response, list, "操作日志");
}
@Log(title = "操作日志", businessType = BusinessType.DELETE)
@RequiresPermissions("system:operlog:remove")
@DeleteMapping("/{operIds}")
public Result remove(@PathVariable Long[] operIds) {
return toAjax(operLogService.deleteOperLogByIds(operIds));
}
@RequiresPermissions("system:operlog:remove")
@Log(title = "操作日志", businessType = BusinessType.CLEAN)
@DeleteMapping("/clean")
public Result clean() {
operLogService.cleanOperLog();
return success();
}
@InnerAuth
@PostMapping
public Result add(@RequestBody SysOperLog operLog) {
return toAjax(operLogService.insertOperlog(operLog));
}
}

View File

@ -0,0 +1,110 @@
package com.dragon.system.server.controller;
import com.dragon.common.core.utils.poi.ExcelUtil;
import com.dragon.common.core.web.controller.BaseController;
import com.dragon.common.core.domain.Result;
import com.dragon.common.core.web.page.TableDataInfo;
import com.dragon.common.log.annotation.Log;
import com.dragon.common.log.enums.BusinessType;
import com.dragon.common.security.annotation.RequiresPermissions;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysPost;
import com.dragon.system.server.service.ISysPostService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
*
*
* @author dragon
*/
@RestController
@RequestMapping("/post")
public class SysPostController extends BaseController {
@Autowired
private ISysPostService postService;
/**
*
*/
@RequiresPermissions("system:post:list")
@GetMapping("/list")
public Result<TableDataInfo<SysPost>> list(SysPost post) {
startPage();
List<SysPost> list = postService.selectPostList(post);
return getDataTable(list);
}
@Log(title = "岗位管理", businessType = BusinessType.EXPORT)
@RequiresPermissions("system:post:export")
@PostMapping("/export")
public void export(HttpServletResponse response, SysPost post) {
List<SysPost> list = postService.selectPostList(post);
ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class);
util.exportExcel(response, list, "岗位数据");
}
/**
*
*/
@RequiresPermissions("system:post:query")
@GetMapping(value = "/{postId}")
public Result getInfo(@PathVariable Long postId) {
return success(postService.selectPostById(postId));
}
/**
*
*/
@RequiresPermissions("system:post:add")
@Log(title = "岗位管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysPost post) {
if (!postService.checkPostNameUnique(post)) {
return error("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在");
} else if (!postService.checkPostCodeUnique(post)) {
return error("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在");
}
post.setCreateBy(SecurityUtils.getUsername());
return toAjax(postService.insertPost(post));
}
/**
*
*/
@RequiresPermissions("system:post:edit")
@Log(title = "岗位管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysPost post) {
if (!postService.checkPostNameUnique(post)) {
return error("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在");
} else if (!postService.checkPostCodeUnique(post)) {
return error("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在");
}
post.setUpdateBy(SecurityUtils.getUsername());
return toAjax(postService.updatePost(post));
}
/**
*
*/
@RequiresPermissions("system:post:remove")
@Log(title = "岗位管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{postIds}")
public Result remove(@PathVariable Long[] postIds) {
return toAjax(postService.deletePostByIds(postIds));
}
/**
*
*/
@GetMapping("/optionselect")
public Result optionselect() {
List<SysPost> posts = postService.selectPostAll();
return success(posts);
}
}

View File

@ -0,0 +1,142 @@
package com.dragon.system.server.controller;
import com.dragon.common.core.domain.Result;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.common.core.utils.file.FileTypeUtils;
import com.dragon.common.core.utils.file.MimeTypeUtils;
import com.dragon.common.core.web.controller.BaseController;
import com.dragon.common.log.annotation.Log;
import com.dragon.common.log.enums.BusinessType;
import com.dragon.common.security.service.TokenService;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.file.common.domain.SysFile;
import com.dragon.file.remote.RemoteFileService;
import com.dragon.system.common.domain.SysUser;
import com.dragon.system.common.domain.model.LoginUser;
import com.dragon.system.common.domain.res.AvatarRes;
import com.dragon.system.common.domain.res.SysUserDetailInfoRes;
import com.dragon.system.server.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.Arrays;
;
/**
*
*
* @author dragon
*/
@RestController
@RequestMapping("/user/profile")
public class SysProfileController extends BaseController {
@Autowired
private ISysUserService userService;
@Autowired
private TokenService tokenService;
@Autowired
private RemoteFileService remoteFileService;
/**
*
*/
@GetMapping
public Result profile() {
String username = SecurityUtils.getUsername();
SysUser user = userService.selectUserByUserName(username);
Result ajax = Result.success(user);
return Result.success(SysUserDetailInfoRes.builder()
.sysUser(user)
.roleGroup(userService.selectUserRoleGroup(username))
.postGroup(userService.selectUserPostGroup(username))
.build()
);
}
/**
*
*/
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
@PutMapping
public Result updateProfile(@RequestBody SysUser user) {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser currentUser = loginUser.getSysUser();
currentUser.setNickName(user.getNickName());
currentUser.setEmail(user.getEmail());
currentUser.setPhonenumber(user.getPhonenumber());
currentUser.setSex(user.getSex());
if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser)) {
return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
}
if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser)) {
return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
if (userService.updateUserProfile(currentUser) > 0) {
// 更新缓存用户信息
tokenService.setLoginUser(loginUser);
return success();
}
return error("修改个人信息异常,请联系管理员");
}
/**
*
*/
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
@PutMapping("/updatePwd")
public Result updatePwd(String oldPassword, String newPassword) {
String username = SecurityUtils.getUsername();
SysUser user = userService.selectUserByUserName(username);
String password = user.getPassword();
if (!SecurityUtils.matchesPassword(oldPassword, password)) {
return error("修改密码失败,旧密码错误");
}
if (SecurityUtils.matchesPassword(newPassword, password)) {
return error("新密码不能与旧密码相同");
}
if (userService.resetUserPwd(username, SecurityUtils.encryptPassword(newPassword)) > 0) {
// 更新缓存用户密码
LoginUser loginUser = SecurityUtils.getLoginUser();
loginUser.getSysUser().setPassword(SecurityUtils.encryptPassword(newPassword));
tokenService.setLoginUser(loginUser);
return success();
}
return error("修改密码异常,请联系管理员");
}
/**
*
*/
@Log(title = "用户头像", businessType = BusinessType.UPDATE)
@PostMapping("/avatar")
public Result avatar(@RequestParam("avatarfile") MultipartFile file) {
if (!file.isEmpty()) {
LoginUser loginUser = SecurityUtils.getLoginUser();
String extension = FileTypeUtils.getExtension(file);
if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION)) {
return error("文件格式不正确,请上传" + Arrays.toString(MimeTypeUtils.IMAGE_EXTENSION) + "格式");
}
Result<SysFile> fileResult = remoteFileService.upload(file);
if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData())) {
return error("文件服务异常,请联系管理员");
}
String url = fileResult.getData().getUrl();
if (userService.updateUserAvatar(loginUser.getUsername(), url)) {
Result ajax = Result.success(AvatarRes.builder().imgUrl(url).build());
// 更新缓存用户头像
loginUser.getSysUser().setAvatar(url);
tokenService.setLoginUser(loginUser);
return ajax;
}
}
return error("上传图片异常,请联系管理员");
}
}

View File

@ -0,0 +1,215 @@
package com.dragon.system.server.controller;
import com.dragon.common.core.utils.poi.ExcelUtil;
import com.dragon.common.core.web.controller.BaseController;
import com.dragon.common.core.domain.Result;
import com.dragon.common.core.web.page.TableDataInfo;
import com.dragon.common.log.annotation.Log;
import com.dragon.common.log.enums.BusinessType;
import com.dragon.common.security.annotation.RequiresPermissions;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysDept;
import com.dragon.system.common.domain.SysRole;
import com.dragon.system.common.domain.SysUser;
import com.dragon.system.common.domain.SysUserRole;
import com.dragon.system.common.domain.res.DeptTreeRes;
import com.dragon.system.server.service.ISysDeptService;
import com.dragon.system.server.service.ISysRoleService;
import com.dragon.system.server.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
*
*
* @author dragon
*/
@RestController
@RequestMapping("/role")
public class SysRoleController extends BaseController {
@Autowired
private ISysRoleService roleService;
@Autowired
private ISysUserService userService;
@Autowired
private ISysDeptService deptService;
@RequiresPermissions("system:role:list")
@GetMapping("/list")
public Result<TableDataInfo<SysRole>> list(SysRole role) {
startPage();
List<SysRole> list = roleService.selectRoleList(role);
return getDataTable(list);
}
@Log(title = "角色管理", businessType = BusinessType.EXPORT)
@RequiresPermissions("system:role:export")
@PostMapping("/export")
public void export(HttpServletResponse response, SysRole role) {
List<SysRole> list = roleService.selectRoleList(role);
ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class);
util.exportExcel(response, list, "角色数据");
}
/**
*
*/
@RequiresPermissions("system:role:query")
@GetMapping(value = "/{roleId}")
public Result getInfo(@PathVariable Long roleId) {
roleService.checkRoleDataScope(roleId);
return success(roleService.selectRoleById(roleId));
}
/**
*
*/
@RequiresPermissions("system:role:add")
@Log(title = "角色管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysRole role) {
if (!roleService.checkRoleNameUnique(role)) {
return error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在");
} else if (!roleService.checkRoleKeyUnique(role)) {
return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
}
role.setCreateBy(SecurityUtils.getUsername());
return toAjax(roleService.insertRole(role));
}
/**
*
*/
@RequiresPermissions("system:role:edit")
@Log(title = "角色管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysRole role) {
roleService.checkRoleAllowed(role);
roleService.checkRoleDataScope(role.getRoleId());
if (!roleService.checkRoleNameUnique(role)) {
return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在");
} else if (!roleService.checkRoleKeyUnique(role)) {
return error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
}
role.setUpdateBy(SecurityUtils.getUsername());
return toAjax(roleService.updateRole(role));
}
/**
*
*/
@RequiresPermissions("system:role:edit")
@Log(title = "角色管理", businessType = BusinessType.UPDATE)
@PutMapping("/dataScope")
public Result dataScope(@RequestBody SysRole role) {
roleService.checkRoleAllowed(role);
roleService.checkRoleDataScope(role.getRoleId());
return toAjax(roleService.authDataScope(role));
}
/**
*
*/
@RequiresPermissions("system:role:edit")
@Log(title = "角色管理", businessType = BusinessType.UPDATE)
@PutMapping("/changeStatus")
public Result changeStatus(@RequestBody SysRole role) {
roleService.checkRoleAllowed(role);
roleService.checkRoleDataScope(role.getRoleId());
role.setUpdateBy(SecurityUtils.getUsername());
return toAjax(roleService.updateRoleStatus(role));
}
/**
*
*/
@RequiresPermissions("system:role:remove")
@Log(title = "角色管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{roleIds}")
public Result remove(@PathVariable Long[] roleIds) {
return toAjax(roleService.deleteRoleByIds(roleIds));
}
/**
*
*/
@RequiresPermissions("system:role:query")
@GetMapping("/optionselect")
public Result optionselect() {
return success(roleService.selectRoleAll());
}
/**
*
*/
@RequiresPermissions("system:role:list")
@GetMapping("/authUser/allocatedList")
public Result<TableDataInfo<SysUser>> allocatedList(SysUser user) {
startPage();
List<SysUser> list = userService.selectAllocatedList(user);
return getDataTable(list);
}
/**
*
*/
@RequiresPermissions("system:role:list")
@GetMapping("/authUser/unallocatedList")
public Result<TableDataInfo<SysUser>> unallocatedList(SysUser user) {
startPage();
List<SysUser> list = userService.selectUnallocatedList(user);
return getDataTable(list);
}
/**
*
*/
@RequiresPermissions("system:role:edit")
@Log(title = "角色管理", businessType = BusinessType.GRANT)
@PutMapping("/authUser/cancel")
public Result cancelAuthUser(@RequestBody SysUserRole userRole) {
return toAjax(roleService.deleteAuthUser(userRole));
}
/**
*
*/
@RequiresPermissions("system:role:edit")
@Log(title = "角色管理", businessType = BusinessType.GRANT)
@PutMapping("/authUser/cancelAll")
public Result cancelAuthUserAll(Long roleId, Long[] userIds) {
return toAjax(roleService.deleteAuthUsers(roleId, userIds));
}
/**
*
*/
@RequiresPermissions("system:role:edit")
@Log(title = "角色管理", businessType = BusinessType.GRANT)
@PutMapping("/authUser/selectAll")
public Result selectAuthUserAll(Long roleId, Long[] userIds) {
roleService.checkRoleDataScope(roleId);
return toAjax(roleService.insertAuthUsers(roleId, userIds));
}
/**
*
*/
@RequiresPermissions("system:role:query")
@GetMapping(value = "/deptTree/{roleId}")
public Result deptTree(@PathVariable("roleId") Long roleId) {
return Result.success(DeptTreeRes.builder()
.checkedKeys(deptService.selectDeptListByRoleId(roleId))
.treeSelects(deptService.selectDeptTreeList(new SysDept()))
.build()
);
}
}

View File

@ -0,0 +1,292 @@
package com.dragon.system.server.controller;
import com.dragon.common.core.domain.Result;;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.common.core.utils.poi.ExcelUtil;
import com.dragon.common.core.web.controller.BaseController;
import com.dragon.common.core.web.page.TableDataInfo;
import com.dragon.common.log.annotation.Log;
import com.dragon.common.log.enums.BusinessType;
import com.dragon.common.security.annotation.InnerAuth;
import com.dragon.common.security.annotation.RequiresPermissions;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysDept;
import com.dragon.system.common.domain.SysRole;
import com.dragon.system.common.domain.SysUser;
import com.dragon.system.common.domain.model.LoginUser;
import com.dragon.system.common.domain.res.AuthRoleRes;
import com.dragon.system.common.domain.res.LoginUserInfoRes;
import com.dragon.system.common.domain.res.UserInfoByUserId;
import com.dragon.system.server.service.*;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
*
*
* @author dragon
*/
@RestController
@RequestMapping("/user")
public class SysUserController extends BaseController {
@Autowired
private ISysUserService userService;
@Autowired
private ISysRoleService roleService;
@Autowired
private ISysDeptService deptService;
@Autowired
private ISysPostService postService;
@Autowired
private ISysPermissionService permissionService;
@Autowired
private ISysConfigService configService;
/**
*
*/
@RequiresPermissions("system:user:list")
@GetMapping("/list")
public Result<TableDataInfo<SysUser>> list(SysUser user) {
startPage();
List<SysUser> list = userService.selectUserList(user);
return getDataTable(list);
}
@Log(title = "用户管理", businessType = BusinessType.EXPORT)
@RequiresPermissions("system:user:export")
@PostMapping("/export")
public void export(HttpServletResponse response, SysUser user) {
List<SysUser> list = userService.selectUserList(user);
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
util.exportExcel(response, list, "用户数据");
}
@Log(title = "用户管理", businessType = BusinessType.IMPORT)
@RequiresPermissions("system:user:import")
@PostMapping("/importData")
public Result importData(MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
List<SysUser> userList = util.importExcel(file.getInputStream());
String operName = SecurityUtils.getUsername();
String message = userService.importUser(userList, updateSupport, operName);
return success(message);
}
@PostMapping("/importTemplate")
public void importTemplate(HttpServletResponse response) throws IOException {
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
util.importTemplateExcel(response, "用户数据");
}
/**
*
*/
@InnerAuth
@GetMapping("/info/{username}")
public Result<LoginUser> info(@PathVariable("username") String username) {
SysUser sysUser = userService.selectUserByUserName(username);
if (StringUtils.isNull(sysUser)) {
return Result.error("用户名或密码错误");
}
// 角色集合
Set<String> roles = permissionService.getRolePermission(sysUser);
// 权限集合
Set<String> permissions = permissionService.getMenuPermission(sysUser);
LoginUser sysUserVo = new LoginUser();
sysUserVo.setSysUser(sysUser);
sysUserVo.setRoles(roles);
sysUserVo.setPermissions(permissions);
return Result.success(sysUserVo);
}
/**
*
*/
@InnerAuth
@PostMapping("/register")
public Result<Boolean> register(@RequestBody SysUser sysUser) {
String username = sysUser.getUserName();
if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) {
return Result.error("当前系统没有开启注册功能!");
}
if (!userService.checkUserNameUnique(sysUser)) {
return Result.error("保存用户'" + username + "'失败,注册账号已存在");
}
return Result.success(userService.registerUser(sysUser));
}
/**
*
*
* @return
*/
@GetMapping("getInfo")
public Result getInfo() {
SysUser user = userService.selectUserById(SecurityUtils.getUserId());
// 角色集合
Set<String> roles = permissionService.getRolePermission(user);
// 权限集合
Set<String> permissions = permissionService.getMenuPermission(user);
return Result.success(LoginUserInfoRes.builder()
.user(user)
.roles(roles)
.permissions(permissions)
.build()
);
}
/**
*
*/
@RequiresPermissions("system:user:query")
@GetMapping(value = {"/", "/{userId}"})
public Result getInfo(@PathVariable(value = "userId", required = false) Long userId) {
userService.checkUserDataScope(userId);
UserInfoByUserId.UserInfoByUserIdBuilder builder = UserInfoByUserId.builder();
List<SysRole> roles = roleService.selectRoleAll();
builder.roles(SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()))
.sysPosts(postService.selectPostAll())
.build();
if (StringUtils.isNotNull(userId)) {
SysUser sysUser = userService.selectUserById(userId);
builder.sysUser(sysUser)
.postIds(postService.selectPostListByUserId(userId))
.roleIds(sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()))
.build();
}
return Result.success(builder);
}
/**
*
*/
@RequiresPermissions("system:user:add")
@Log(title = "用户管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add(@Validated @RequestBody SysUser user) {
if (!userService.checkUserNameUnique(user)) {
return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
} else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
} else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
user.setCreateBy(SecurityUtils.getUsername());
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
return toAjax(userService.insertUser(user));
}
/**
*
*/
@RequiresPermissions("system:user:edit")
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@Validated @RequestBody SysUser user) {
userService.checkUserAllowed(user);
userService.checkUserDataScope(user.getUserId());
if (!userService.checkUserNameUnique(user)) {
return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
} else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
} else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
user.setUpdateBy(SecurityUtils.getUsername());
return toAjax(userService.updateUser(user));
}
/**
*
*/
@RequiresPermissions("system:user:remove")
@Log(title = "用户管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{userIds}")
public Result remove(@PathVariable Long[] userIds) {
if (ArrayUtils.contains(userIds, SecurityUtils.getUserId())) {
return error("当前用户不能删除");
}
return toAjax(userService.deleteUserByIds(userIds));
}
/**
*
*/
@RequiresPermissions("system:user:edit")
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
@PutMapping("/resetPwd")
public Result resetPwd(@RequestBody SysUser user) {
userService.checkUserAllowed(user);
userService.checkUserDataScope(user.getUserId());
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
user.setUpdateBy(SecurityUtils.getUsername());
return toAjax(userService.resetPwd(user));
}
/**
*
*/
@RequiresPermissions("system:user:edit")
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
@PutMapping("/changeStatus")
public Result changeStatus(@RequestBody SysUser user) {
userService.checkUserAllowed(user);
userService.checkUserDataScope(user.getUserId());
user.setUpdateBy(SecurityUtils.getUsername());
return toAjax(userService.updateUserStatus(user));
}
/**
*
*/
@RequiresPermissions("system:user:query")
@GetMapping("/authRole/{userId}")
public Result authRole(@PathVariable("userId") Long userId) {
Result ajax = Result.success();
SysUser user = userService.selectUserById(userId);
List<SysRole> roles = roleService.selectRolesByUserId(userId);
return Result.success(AuthRoleRes.builder()
.user(user)
.roles(SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()))
.build()
);
}
/**
*
*/
@RequiresPermissions("system:user:edit")
@Log(title = "用户管理", businessType = BusinessType.GRANT)
@PutMapping("/authRole")
public Result insertAuthRole(Long userId, Long[] roleIds) {
userService.checkUserDataScope(userId);
userService.insertUserAuth(userId, roleIds);
return success();
}
/**
*
*/
@RequiresPermissions("system:user:list")
@GetMapping("/deptTree")
public Result deptTree(SysDept dept) {
return success(deptService.selectDeptTreeList(dept));
}
}

View File

@ -0,0 +1,70 @@
package com.dragon.system.server.controller;
import com.dragon.common.core.constant.CacheConstants;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.common.core.web.controller.BaseController;
import com.dragon.common.core.domain.Result;
import com.dragon.common.core.web.page.TableDataInfo;
import com.dragon.common.log.annotation.Log;
import com.dragon.common.log.enums.BusinessType;
import com.dragon.common.redis.service.RedisService;
import com.dragon.common.security.annotation.RequiresPermissions;
import com.dragon.system.common.domain.model.LoginUser;
import com.dragon.system.common.domain.SysUserOnline;
import com.dragon.system.server.service.ISysUserOnlineService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
/**
* 线
*
* @author dragon
*/
@RestController
@RequestMapping("/online")
public class SysUserOnlineController extends BaseController {
@Autowired
private ISysUserOnlineService userOnlineService;
@Autowired
private RedisService redisService;
@RequiresPermissions("monitor:online:list")
@GetMapping("/list")
public Result<TableDataInfo<SysUserOnline>> list(String ipaddr, String userName) {
Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
for (String key : keys) {
LoginUser user = redisService.getCacheObject(key);
if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) {
userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));
} else if (StringUtils.isNotEmpty(ipaddr)) {
userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user));
} else if (StringUtils.isNotEmpty(userName)) {
userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user));
} else {
userOnlineList.add(userOnlineService.loginUserToUserOnline(user));
}
}
Collections.reverse(userOnlineList);
userOnlineList.removeAll(Collections.singleton(null));
return getDataTable(userOnlineList);
}
/**
* 退
*/
@RequiresPermissions("monitor:online:forceLogout")
@Log(title = "在线用户", businessType = BusinessType.FORCE)
@DeleteMapping("/{tokenId}")
public Result forceLogout(@PathVariable String tokenId) {
redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + tokenId);
return success();
}
}

View File

@ -0,0 +1,76 @@
package com.dragon.system.server.mapper;
import com.dragon.system.common.domain.SysConfig;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface SysConfigMapper {
/**
*
*
* @param config
* @return
*/
public SysConfig selectConfig(SysConfig config);
/**
* ID
*
* @param configId ID
* @return
*/
public SysConfig selectConfigById(Long configId);
/**
*
*
* @param config
* @return
*/
public List<SysConfig> selectConfigList(SysConfig config);
/**
*
*
* @param configKey
* @return
*/
public SysConfig checkConfigKeyUnique(String configKey);
/**
*
*
* @param config
* @return
*/
public int insertConfig(SysConfig config);
/**
*
*
* @param config
* @return
*/
public int updateConfig(SysConfig config);
/**
*
*
* @param configId ID
* @return
*/
public int deleteConfigById(Long configId);
/**
*
*
* @param configIds ID
* @return
*/
public int deleteConfigByIds(Long[] configIds);
}

View File

@ -0,0 +1,15 @@
package com.dragon.system.server.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dragon.system.common.domain.SysConfig;
import org.apache.ibatis.annotations.Mapper;
/**
* @author
* @version 1.0
* @description: plus
* @date 2023/11/13 18:51
*/
public interface SysConfigPlusMapper extends BaseMapper<SysConfig> {
}

View File

@ -0,0 +1,118 @@
package com.dragon.system.server.mapper;
import com.dragon.system.common.domain.SysDept;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface SysDeptMapper {
/**
*
*
* @param dept
* @return
*/
public List<SysDept> selectDeptList(SysDept dept);
/**
* ID
*
* @param roleId ID
* @param deptCheckStrictly
* @return
*/
public List<Long> selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly);
/**
* ID
*
* @param deptId ID
* @return
*/
public SysDept selectDeptById(Long deptId);
/**
* ID
*
* @param deptId ID
* @return
*/
public List<SysDept> selectChildrenDeptById(Long deptId);
/**
* ID
*
* @param deptId ID
* @return
*/
public int selectNormalChildrenDeptById(Long deptId);
/**
*
*
* @param deptId ID
* @return
*/
public int hasChildByDeptId(Long deptId);
/**
*
*
* @param deptId ID
* @return
*/
public int checkDeptExistUser(Long deptId);
/**
*
*
* @param deptName
* @param parentId ID
* @return
*/
public SysDept checkDeptNameUnique(@Param("deptName") String deptName, @Param("parentId") Long parentId);
/**
*
*
* @param dept
* @return
*/
public int insertDept(SysDept dept);
/**
*
*
* @param dept
* @return
*/
public int updateDept(SysDept dept);
/**
*
*
* @param deptIds ID
*/
public void updateDeptStatusNormal(Long[] deptIds);
/**
*
*
* @param depts
* @return
*/
public int updateDeptChildren(@Param("depts") List<SysDept> depts);
/**
*
*
* @param deptId ID
* @return
*/
public int deleteDeptById(Long deptId);
}

View File

@ -0,0 +1,22 @@
package com.dragon.system.server.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dragon.system.common.domain.SysDept;
import java.util.List;
/**
* @author
* @version 1.0
* @description: plus
* @date 2023/11/14 12:41
*/
public interface SysDeptPlusMapper extends BaseMapper<SysDept> {
List<SysDept> selectChildrenDeptById(Long deptId);
void updateDeptChildren(List<SysDept> children);
int selectNormalChildrenDeptById(Long deptId);
int checkDeptExistUser(Long deptId);
}

View File

@ -0,0 +1,95 @@
package com.dragon.system.server.mapper;
import com.dragon.system.common.domain.SysDictData;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface SysDictDataMapper {
/**
*
*
* @param dictData
* @return
*/
public List<SysDictData> selectDictDataList(SysDictData dictData);
/**
*
*
* @param dictType
* @return
*/
public List<SysDictData> selectDictDataByType(String dictType);
/**
*
*
* @param dictType
* @param dictValue
* @return
*/
public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue);
/**
* ID
*
* @param dictCode ID
* @return
*/
public SysDictData selectDictDataById(Long dictCode);
/**
*
*
* @param dictType
* @return
*/
public int countDictDataByType(String dictType);
/**
* ID
*
* @param dictCode ID
* @return
*/
public int deleteDictDataById(Long dictCode);
/**
*
*
* @param dictCodes ID
* @return
*/
public int deleteDictDataByIds(Long[] dictCodes);
/**
*
*
* @param dictData
* @return
*/
public int insertDictData(SysDictData dictData);
/**
*
*
* @param dictData
* @return
*/
public int updateDictData(SysDictData dictData);
/**
*
*
* @param oldDictType
* @param newDictType
* @return
*/
public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType);
}

View File

@ -0,0 +1,83 @@
package com.dragon.system.server.mapper;
import com.dragon.system.common.domain.SysDictType;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface SysDictTypeMapper {
/**
*
*
* @param dictType
* @return
*/
public List<SysDictType> selectDictTypeList(SysDictType dictType);
/**
*
*
* @return
*/
public List<SysDictType> selectDictTypeAll();
/**
* ID
*
* @param dictId ID
* @return
*/
public SysDictType selectDictTypeById(Long dictId);
/**
*
*
* @param dictType
* @return
*/
public SysDictType selectDictTypeByType(String dictType);
/**
* ID
*
* @param dictId ID
* @return
*/
public int deleteDictTypeById(Long dictId);
/**
*
*
* @param dictIds ID
* @return
*/
public int deleteDictTypeByIds(Long[] dictIds);
/**
*
*
* @param dictType
* @return
*/
public int insertDictType(SysDictType dictType);
/**
*
*
* @param dictType
* @return
*/
public int updateDictType(SysDictType dictType);
/**
*
*
* @param dictType
* @return
*/
public SysDictType checkDictTypeUnique(String dictType);
}

View File

@ -0,0 +1,42 @@
package com.dragon.system.server.mapper;
import com.dragon.system.common.domain.SysLogininfor;
import java.util.List;
/**
* 访
*
* @author dragon
*/
public interface SysLogininforMapper {
/**
*
*
* @param logininfor 访
*/
public int insertLogininfor(SysLogininfor logininfor);
/**
*
*
* @param logininfor 访
* @return
*/
public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor);
/**
*
*
* @param infoIds ID
* @return
*/
public int deleteLogininforByIds(Long[] infoIds);
/**
*
*
* @return
*/
public int cleanLogininfor();
}

View File

@ -0,0 +1,125 @@
package com.dragon.system.server.mapper;
import com.dragon.system.common.domain.SysMenu;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface SysMenuMapper {
/**
*
*
* @param menu
* @return
*/
public List<SysMenu> selectMenuList(SysMenu menu);
/**
*
*
* @return
*/
public List<String> selectMenuPerms();
/**
*
*
* @param menu
* @return
*/
public List<SysMenu> selectMenuListByUserId(SysMenu menu);
/**
* ID
*
* @param roleId ID
* @return
*/
public List<String> selectMenuPermsByRoleId(Long roleId);
/**
* ID
*
* @param userId ID
* @return
*/
public List<String> selectMenuPermsByUserId(Long userId);
/**
* ID
*
* @return
*/
public List<SysMenu> selectMenuTreeAll();
/**
* ID
*
* @param userId ID
* @return
*/
public List<SysMenu> selectMenuTreeByUserId(Long userId);
/**
* ID
*
* @param roleId ID
* @param menuCheckStrictly
* @return
*/
public List<Long> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly);
/**
* ID
*
* @param menuId ID
* @return
*/
public SysMenu selectMenuById(Long menuId);
/**
*
*
* @param menuId ID
* @return
*/
public int hasChildByMenuId(Long menuId);
/**
*
*
* @param menu
* @return
*/
public int insertMenu(SysMenu menu);
/**
*
*
* @param menu
* @return
*/
public int updateMenu(SysMenu menu);
/**
*
*
* @param menuId ID
* @return
*/
public int deleteMenuById(Long menuId);
/**
*
*
* @param menuName
* @param parentId ID
* @return
*/
public SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId);
}

View File

@ -0,0 +1,60 @@
package com.dragon.system.server.mapper;
import com.dragon.system.common.domain.SysNotice;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface SysNoticeMapper {
/**
*
*
* @param noticeId ID
* @return
*/
public SysNotice selectNoticeById(Long noticeId);
/**
*
*
* @param notice
* @return
*/
public List<SysNotice> selectNoticeList(SysNotice notice);
/**
*
*
* @param notice
* @return
*/
public int insertNotice(SysNotice notice);
/**
*
*
* @param notice
* @return
*/
public int updateNotice(SysNotice notice);
/**
*
*
* @param noticeId ID
* @return
*/
public int deleteNoticeById(Long noticeId);
/**
*
*
* @param noticeIds ID
* @return
*/
public int deleteNoticeByIds(Long[] noticeIds);
}

View File

@ -0,0 +1,48 @@
package com.dragon.system.server.mapper;
import com.dragon.system.common.domain.SysOperLog;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface SysOperLogMapper {
/**
*
*
* @param operLog
*/
public int insertOperlog(SysOperLog operLog);
/**
*
*
* @param operLog
* @return
*/
public List<SysOperLog> selectOperLogList(SysOperLog operLog);
/**
*
*
* @param operIds ID
* @return
*/
public int deleteOperLogByIds(Long[] operIds);
/**
*
*
* @param operId ID
* @return
*/
public SysOperLog selectOperLogById(Long operId);
/**
*
*/
public void cleanOperLog();
}

View File

@ -0,0 +1,99 @@
package com.dragon.system.server.mapper;
import com.dragon.system.common.domain.SysPost;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface SysPostMapper {
/**
*
*
* @param post
* @return
*/
public List<SysPost> selectPostList(SysPost post);
/**
*
*
* @return
*/
public List<SysPost> selectPostAll();
/**
* ID
*
* @param postId ID
* @return
*/
public SysPost selectPostById(Long postId);
/**
* ID
*
* @param userId ID
* @return ID
*/
public List<Long> selectPostListByUserId(Long userId);
/**
*
*
* @param userName
* @return
*/
public List<SysPost> selectPostsByUserName(String userName);
/**
*
*
* @param postId ID
* @return
*/
public int deletePostById(Long postId);
/**
*
*
* @param postIds ID
* @return
*/
public int deletePostByIds(Long[] postIds);
/**
*
*
* @param post
* @return
*/
public int updatePost(SysPost post);
/**
*
*
* @param post
* @return
*/
public int insertPost(SysPost post);
/**
*
*
* @param postName
* @return
*/
public SysPost checkPostNameUnique(String postName);
/**
*
*
* @param postCode
* @return
*/
public SysPost checkPostCodeUnique(String postCode);
}

View File

@ -0,0 +1,46 @@
package com.dragon.system.server.mapper;
import com.dragon.system.common.domain.SysRoleDept;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface SysRoleDeptMapper {
/**
* ID
*
* @param roleId ID
* @return
*/
public int deleteRoleDeptByRoleId(Long roleId);
/**
*
*
* @param ids ID
* @return
*/
public int deleteRoleDept(Long[] ids);
/**
* 使
*
* @param deptId ID
* @return
*/
public int selectCountRoleDeptByDeptId(Long deptId);
/**
*
*
* @param roleDeptList
* @return
*/
public int batchRoleDept(List<SysRoleDept> roleDeptList);
}

View File

@ -0,0 +1,107 @@
package com.dragon.system.server.mapper;
import com.dragon.system.common.domain.SysRole;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface SysRoleMapper {
/**
*
*
* @param role
* @return
*/
public List<SysRole> selectRoleList(SysRole role);
/**
* ID
*
* @param userId ID
* @return
*/
public List<SysRole> selectRolePermissionByUserId(Long userId);
/**
*
*
* @return
*/
public List<SysRole> selectRoleAll();
/**
* ID
*
* @param userId ID
* @return ID
*/
public List<Long> selectRoleListByUserId(Long userId);
/**
* ID
*
* @param roleId ID
* @return
*/
public SysRole selectRoleById(Long roleId);
/**
* ID
*
* @param userName
* @return
*/
public List<SysRole> selectRolesByUserName(String userName);
/**
*
*
* @param roleName
* @return
*/
public SysRole checkRoleNameUnique(String roleName);
/**
*
*
* @param roleKey
* @return
*/
public SysRole checkRoleKeyUnique(String roleKey);
/**
*
*
* @param role
* @return
*/
public int updateRole(SysRole role);
/**
*
*
* @param role
* @return
*/
public int insertRole(SysRole role);
/**
* ID
*
* @param roleId ID
* @return
*/
public int deleteRoleById(Long roleId);
/**
*
*
* @param roleIds ID
* @return
*/
public int deleteRoleByIds(Long[] roleIds);
}

View File

@ -0,0 +1,46 @@
package com.dragon.system.server.mapper;
import com.dragon.system.common.domain.SysRoleMenu;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface SysRoleMenuMapper {
/**
* 使
*
* @param menuId ID
* @return
*/
public int checkMenuExistRole(Long menuId);
/**
* ID
*
* @param roleId ID
* @return
*/
public int deleteRoleMenuByRoleId(Long roleId);
/**
*
*
* @param ids ID
* @return
*/
public int deleteRoleMenu(Long[] ids);
/**
*
*
* @param roleMenuList
* @return
*/
public int batchRoleMenu(List<SysRoleMenu> roleMenuList);
}

View File

@ -0,0 +1,127 @@
package com.dragon.system.server.mapper;
import com.dragon.system.common.domain.SysUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface SysUserMapper {
/**
*
*
* @param sysUser
* @return
*/
public List<SysUser> selectUserList(SysUser sysUser);
/**
*
*
* @param user
* @return
*/
public List<SysUser> selectAllocatedList(SysUser user);
/**
*
*
* @param user
* @return
*/
public List<SysUser> selectUnallocatedList(SysUser user);
/**
*
*
* @param userName
* @return
*/
public SysUser selectUserByUserName(String userName);
/**
* ID
*
* @param userId ID
* @return
*/
public SysUser selectUserById(Long userId);
/**
*
*
* @param user
* @return
*/
public int insertUser(SysUser user);
/**
*
*
* @param user
* @return
*/
public int updateUser(SysUser user);
/**
*
*
* @param userName
* @param avatar
* @return
*/
public int updateUserAvatar(@Param("userName") String userName, @Param("avatar") String avatar);
/**
*
*
* @param userName
* @param password
* @return
*/
public int resetUserPwd(@Param("userName") String userName, @Param("password") String password);
/**
* ID
*
* @param userId ID
* @return
*/
public int deleteUserById(Long userId);
/**
*
*
* @param userIds ID
* @return
*/
public int deleteUserByIds(Long[] userIds);
/**
*
*
* @param userName
* @return
*/
public SysUser checkUserNameUnique(String userName);
/**
*
*
* @param phonenumber
* @return
*/
public SysUser checkPhoneUnique(String phonenumber);
/**
* email
*
* @param email
* @return
*/
public SysUser checkEmailUnique(String email);
}

View File

@ -0,0 +1,46 @@
package com.dragon.system.server.mapper;
import com.dragon.system.common.domain.SysUserPost;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface SysUserPostMapper {
/**
* ID
*
* @param userId ID
* @return
*/
public int deleteUserPostByUserId(Long userId);
/**
* ID使
*
* @param postId ID
* @return
*/
public int countUserPostById(Long postId);
/**
*
*
* @param ids ID
* @return
*/
public int deleteUserPost(Long[] ids);
/**
*
*
* @param userPostList
* @return
*/
public int batchUserPost(List<SysUserPost> userPostList);
}

View File

@ -0,0 +1,63 @@
package com.dragon.system.server.mapper;
import com.dragon.system.common.domain.SysUserRole;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface SysUserRoleMapper {
/**
* ID
*
* @param userId ID
* @return
*/
public int deleteUserRoleByUserId(Long userId);
/**
*
*
* @param ids ID
* @return
*/
public int deleteUserRole(Long[] ids);
/**
* ID使
*
* @param roleId ID
* @return
*/
public int countUserRoleByRoleId(Long roleId);
/**
*
*
* @param userRoleList
* @return
*/
public int batchUserRole(List<SysUserRole> userRoleList);
/**
*
*
* @param userRole
* @return
*/
public int deleteUserRoleInfo(SysUserRole userRole);
/**
*
*
* @param roleId ID
* @param userIds ID
* @return
*/
public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds);
}

View File

@ -0,0 +1,84 @@
package com.dragon.system.server.service;
import com.dragon.system.common.domain.SysConfig;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface ISysConfigService {
/**
*
*
* @param configId ID
* @return
*/
public SysConfig selectConfigById(Long configId);
/**
*
*
* @param configKey
* @return
*/
public String selectConfigByKey(String configKey);
/**
*
*
* @param config
* @return
*/
public List<SysConfig> selectConfigList(SysConfig config);
/**
*
*
* @param config
* @return
*/
public int insertConfig(SysConfig config);
/**
*
*
* @param config
* @return
*/
public int updateConfig(SysConfig config);
/**
*
*
* @param configIds ID
*/
public void deleteConfigByIds(Long[] configIds);
/**
*
*/
public void loadingConfigCache();
/**
*
*/
public void clearConfigCache();
/**
*
*/
public void resetConfigCache();
/**
*
*
* @param config
* @return
*/
public boolean checkConfigKeyUnique(SysConfig config);
}

View File

@ -0,0 +1,124 @@
package com.dragon.system.server.service;
import com.dragon.system.common.domain.SysDept;
import com.dragon.system.common.domain.vo.TreeSelect;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface ISysDeptService {
/**
*
*
* @param dept
* @return
*/
public List<SysDept> selectDeptList(SysDept dept);
/**
*
*
* @param dept
* @return
*/
public List<TreeSelect> selectDeptTreeList(SysDept dept);
/**
*
*
* @param depts
* @return
*/
public List<SysDept> buildDeptTree(List<SysDept> depts);
/**
*
*
* @param depts
* @return
*/
public List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts);
/**
* ID
*
* @param roleId ID
* @return
*/
public List<Long> selectDeptListByRoleId(Long roleId);
/**
* ID
*
* @param deptId ID
* @return
*/
public SysDept selectDeptById(Long deptId);
/**
* ID
*
* @param deptId ID
* @return
*/
public int selectNormalChildrenDeptById(Long deptId);
/**
*
*
* @param deptId ID
* @return
*/
public boolean hasChildByDeptId(Long deptId);
/**
*
*
* @param deptId ID
* @return true false
*/
public boolean checkDeptExistUser(Long deptId);
/**
*
*
* @param dept
* @return
*/
public boolean checkDeptNameUnique(SysDept dept);
/**
*
*
* @param deptId id
*/
public void checkDeptDataScope(Long deptId);
/**
*
*
* @param dept
* @return
*/
public int insertDept(SysDept dept);
/**
*
*
* @param dept
* @return
*/
public int updateDept(SysDept dept);
/**
*
*
* @param deptId ID
* @return
*/
public int deleteDeptById(Long deptId);
}

View File

@ -0,0 +1,60 @@
package com.dragon.system.server.service;
import com.dragon.system.common.domain.SysDictData;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface ISysDictDataService {
/**
*
*
* @param dictData
* @return
*/
public List<SysDictData> selectDictDataList(SysDictData dictData);
/**
*
*
* @param dictType
* @param dictValue
* @return
*/
public String selectDictLabel(String dictType, String dictValue);
/**
* ID
*
* @param dictCode ID
* @return
*/
public SysDictData selectDictDataById(Long dictCode);
/**
*
*
* @param dictCodes ID
*/
public void deleteDictDataByIds(Long[] dictCodes);
/**
*
*
* @param dictData
* @return
*/
public int insertDictData(SysDictData dictData);
/**
*
*
* @param dictData
* @return
*/
public int updateDictData(SysDictData dictData);
}

View File

@ -0,0 +1,98 @@
package com.dragon.system.server.service;
import com.dragon.system.common.domain.SysDictData;
import com.dragon.system.common.domain.SysDictType;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface ISysDictTypeService {
/**
*
*
* @param dictType
* @return
*/
public List<SysDictType> selectDictTypeList(SysDictType dictType);
/**
*
*
* @return
*/
public List<SysDictType> selectDictTypeAll();
/**
*
*
* @param dictType
* @return
*/
public List<SysDictData> selectDictDataByType(String dictType);
/**
* ID
*
* @param dictId ID
* @return
*/
public SysDictType selectDictTypeById(Long dictId);
/**
*
*
* @param dictType
* @return
*/
public SysDictType selectDictTypeByType(String dictType);
/**
*
*
* @param dictIds ID
*/
public void deleteDictTypeByIds(Long[] dictIds);
/**
*
*/
public void loadingDictCache();
/**
*
*/
public void clearDictCache();
/**
*
*/
public void resetDictCache();
/**
*
*
* @param dictType
* @return
*/
public int insertDictType(SysDictType dictType);
/**
*
*
* @param dictType
* @return
*/
public int updateDictType(SysDictType dictType);
/**
*
*
* @param dictType
* @return
*/
public boolean checkDictTypeUnique(SysDictType dictType);
}

View File

@ -0,0 +1,40 @@
package com.dragon.system.server.service;
import com.dragon.system.common.domain.SysLogininfor;
import java.util.List;
/**
* 访
*
* @author dragon
*/
public interface ISysLogininforService {
/**
*
*
* @param logininfor 访
*/
public int insertLogininfor(SysLogininfor logininfor);
/**
*
*
* @param logininfor 访
* @return
*/
public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor);
/**
*
*
* @param infoIds ID
* @return
*/
public int deleteLogininforByIds(Long[] infoIds);
/**
*
*/
public void cleanLogininfor();
}

View File

@ -0,0 +1,144 @@
package com.dragon.system.server.service;
import com.dragon.system.common.domain.SysMenu;
import com.dragon.system.common.domain.vo.RouterVo;
import com.dragon.system.common.domain.vo.TreeSelect;
import java.util.List;
import java.util.Set;
/**
*
*
* @author dragon
*/
public interface ISysMenuService {
/**
*
*
* @param userId ID
* @return
*/
public List<SysMenu> selectMenuList(Long userId);
/**
*
*
* @param menu
* @param userId ID
* @return
*/
public List<SysMenu> selectMenuList(SysMenu menu, Long userId);
/**
* ID
*
* @param userId ID
* @return
*/
public Set<String> selectMenuPermsByUserId(Long userId);
/**
* ID
*
* @param roleId ID
* @return
*/
public Set<String> selectMenuPermsByRoleId(Long roleId);
/**
* ID
*
* @param userId ID
* @return
*/
public List<SysMenu> selectMenuTreeByUserId(Long userId);
/**
* ID
*
* @param roleId ID
* @return
*/
public List<Long> selectMenuListByRoleId(Long roleId);
/**
*
*
* @param menus
* @return
*/
public List<RouterVo> buildMenus(List<SysMenu> menus);
/**
*
*
* @param menus
* @return
*/
public List<SysMenu> buildMenuTree(List<SysMenu> menus);
/**
*
*
* @param menus
* @return
*/
public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus);
/**
* ID
*
* @param menuId ID
* @return
*/
public SysMenu selectMenuById(Long menuId);
/**
*
*
* @param menuId ID
* @return true false
*/
public boolean hasChildByMenuId(Long menuId);
/**
*
*
* @param menuId ID
* @return true false
*/
public boolean checkMenuExistRole(Long menuId);
/**
*
*
* @param menu
* @return
*/
public int insertMenu(SysMenu menu);
/**
*
*
* @param menu
* @return
*/
public int updateMenu(SysMenu menu);
/**
*
*
* @param menuId ID
* @return
*/
public int deleteMenuById(Long menuId);
/**
*
*
* @param menu
* @return
*/
public boolean checkMenuNameUnique(SysMenu menu);
}

View File

@ -0,0 +1,60 @@
package com.dragon.system.server.service;
import com.dragon.system.common.domain.SysNotice;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface ISysNoticeService {
/**
*
*
* @param noticeId ID
* @return
*/
public SysNotice selectNoticeById(Long noticeId);
/**
*
*
* @param notice
* @return
*/
public List<SysNotice> selectNoticeList(SysNotice notice);
/**
*
*
* @param notice
* @return
*/
public int insertNotice(SysNotice notice);
/**
*
*
* @param notice
* @return
*/
public int updateNotice(SysNotice notice);
/**
*
*
* @param noticeId ID
* @return
*/
public int deleteNoticeById(Long noticeId);
/**
*
*
* @param noticeIds ID
* @return
*/
public int deleteNoticeByIds(Long[] noticeIds);
}

View File

@ -0,0 +1,49 @@
package com.dragon.system.server.service;
import com.dragon.system.common.domain.SysOperLog;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface ISysOperLogService {
/**
*
*
* @param operLog
* @return
*/
public int insertOperlog(SysOperLog operLog);
/**
*
*
* @param operLog
* @return
*/
public List<SysOperLog> selectOperLogList(SysOperLog operLog);
/**
*
*
* @param operIds ID
* @return
*/
public int deleteOperLogByIds(Long[] operIds);
/**
*
*
* @param operId ID
* @return
*/
public SysOperLog selectOperLogById(Long operId);
/**
*
*/
public void cleanOperLog();
}

View File

@ -0,0 +1,28 @@
package com.dragon.system.server.service;
import com.dragon.system.common.domain.SysUser;
import java.util.Set;
/**
*
*
* @author dragon
*/
public interface ISysPermissionService {
/**
*
*
* @param userId Id
* @return
*/
public Set<String> getRolePermission(SysUser user);
/**
*
*
* @param userId Id
* @return
*/
public Set<String> getMenuPermission(SysUser user);
}

View File

@ -0,0 +1,99 @@
package com.dragon.system.server.service;
import com.dragon.system.common.domain.SysPost;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface ISysPostService {
/**
*
*
* @param post
* @return
*/
public List<SysPost> selectPostList(SysPost post);
/**
*
*
* @return
*/
public List<SysPost> selectPostAll();
/**
* ID
*
* @param postId ID
* @return
*/
public SysPost selectPostById(Long postId);
/**
* ID
*
* @param userId ID
* @return ID
*/
public List<Long> selectPostListByUserId(Long userId);
/**
*
*
* @param post
* @return
*/
public boolean checkPostNameUnique(SysPost post);
/**
*
*
* @param post
* @return
*/
public boolean checkPostCodeUnique(SysPost post);
/**
* ID使
*
* @param postId ID
* @return
*/
public int countUserPostById(Long postId);
/**
*
*
* @param postId ID
* @return
*/
public int deletePostById(Long postId);
/**
*
*
* @param postIds ID
* @return
*/
public int deletePostByIds(Long[] postIds);
/**
*
*
* @param post
* @return
*/
public int insertPost(SysPost post);
/**
*
*
* @param post
* @return
*/
public int updatePost(SysPost post);
}

View File

@ -0,0 +1,174 @@
package com.dragon.system.server.service;
import com.dragon.system.common.domain.SysRole;
import com.dragon.system.common.domain.SysUserRole;
import java.util.List;
import java.util.Set;
/**
*
*
* @author dragon
*/
public interface ISysRoleService {
/**
*
*
* @param role
* @return
*/
public List<SysRole> selectRoleList(SysRole role);
/**
* ID
*
* @param userId ID
* @return
*/
public List<SysRole> selectRolesByUserId(Long userId);
/**
* ID
*
* @param userId ID
* @return
*/
public Set<String> selectRolePermissionByUserId(Long userId);
/**
*
*
* @return
*/
public List<SysRole> selectRoleAll();
/**
* ID
*
* @param userId ID
* @return ID
*/
public List<Long> selectRoleListByUserId(Long userId);
/**
* ID
*
* @param roleId ID
* @return
*/
public SysRole selectRoleById(Long roleId);
/**
*
*
* @param role
* @return
*/
public boolean checkRoleNameUnique(SysRole role);
/**
*
*
* @param role
* @return
*/
public boolean checkRoleKeyUnique(SysRole role);
/**
*
*
* @param role
*/
public void checkRoleAllowed(SysRole role);
/**
*
*
* @param roleId id
*/
public void checkRoleDataScope(Long roleId);
/**
* ID使
*
* @param roleId ID
* @return
*/
public int countUserRoleByRoleId(Long roleId);
/**
*
*
* @param role
* @return
*/
public int insertRole(SysRole role);
/**
*
*
* @param role
* @return
*/
public int updateRole(SysRole role);
/**
*
*
* @param role
* @return
*/
public int updateRoleStatus(SysRole role);
/**
*
*
* @param role
* @return
*/
public int authDataScope(SysRole role);
/**
* ID
*
* @param roleId ID
* @return
*/
public int deleteRoleById(Long roleId);
/**
*
*
* @param roleIds ID
* @return
*/
public int deleteRoleByIds(Long[] roleIds);
/**
*
*
* @param userRole
* @return
*/
public int deleteAuthUser(SysUserRole userRole);
/**
*
*
* @param roleId ID
* @param userIds ID
* @return
*/
public int deleteAuthUsers(Long roleId, Long[] userIds);
/**
*
*
* @param roleId ID
* @param userIds ID
* @return
*/
public int insertAuthUsers(Long roleId, Long[] userIds);
}

View File

@ -0,0 +1,48 @@
package com.dragon.system.server.service;
import com.dragon.system.common.domain.model.LoginUser;
import com.dragon.system.common.domain.SysUserOnline;
/**
* 线
*
* @author dragon
*/
public interface ISysUserOnlineService {
/**
*
*
* @param ipaddr
* @param user
* @return 线
*/
public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user);
/**
*
*
* @param userName
* @param user
* @return 线
*/
public SysUserOnline selectOnlineByUserName(String userName, LoginUser user);
/**
* /
*
* @param ipaddr
* @param userName
* @param user
* @return 线
*/
public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user);
/**
* 线
*
* @param user
* @return 线
*/
public SysUserOnline loginUserToUserOnline(LoginUser user);
}

View File

@ -0,0 +1,206 @@
package com.dragon.system.server.service;
import com.dragon.system.common.domain.SysUser;
import java.util.List;
/**
*
*
* @author dragon
*/
public interface ISysUserService {
/**
*
*
* @param user
* @return
*/
public List<SysUser> selectUserList(SysUser user);
/**
*
*
* @param user
* @return
*/
public List<SysUser> selectAllocatedList(SysUser user);
/**
*
*
* @param user
* @return
*/
public List<SysUser> selectUnallocatedList(SysUser user);
/**
*
*
* @param userName
* @return
*/
public SysUser selectUserByUserName(String userName);
/**
* ID
*
* @param userId ID
* @return
*/
public SysUser selectUserById(Long userId);
/**
* ID
*
* @param userName
* @return
*/
public String selectUserRoleGroup(String userName);
/**
* ID
*
* @param userName
* @return
*/
public String selectUserPostGroup(String userName);
/**
*
*
* @param user
* @return
*/
public boolean checkUserNameUnique(SysUser user);
/**
*
*
* @param user
* @return
*/
public boolean checkPhoneUnique(SysUser user);
/**
* email
*
* @param user
* @return
*/
public boolean checkEmailUnique(SysUser user);
/**
*
*
* @param user
*/
public void checkUserAllowed(SysUser user);
/**
*
*
* @param userId id
*/
public void checkUserDataScope(Long userId);
/**
*
*
* @param user
* @return
*/
public int insertUser(SysUser user);
/**
*
*
* @param user
* @return
*/
public boolean registerUser(SysUser user);
/**
*
*
* @param user
* @return
*/
public int updateUser(SysUser user);
/**
*
*
* @param userId ID
* @param roleIds
*/
public void insertUserAuth(Long userId, Long[] roleIds);
/**
*
*
* @param user
* @return
*/
public int updateUserStatus(SysUser user);
/**
*
*
* @param user
* @return
*/
public int updateUserProfile(SysUser user);
/**
*
*
* @param userName
* @param avatar
* @return
*/
public boolean updateUserAvatar(String userName, String avatar);
/**
*
*
* @param user
* @return
*/
public int resetPwd(SysUser user);
/**
*
*
* @param userName
* @param password
* @return
*/
public int resetUserPwd(String userName, String password);
/**
* ID
*
* @param userId ID
* @return
*/
public int deleteUserById(Long userId);
/**
*
*
* @param userIds ID
* @return
*/
public int deleteUserByIds(Long[] userIds);
/**
*
*
* @param userList
* @param isUpdateSupport
* @param operName
* @return
*/
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
}

View File

@ -0,0 +1,43 @@
package com.dragon.system.server.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dragon.system.common.domain.SysConfig;
import java.util.List;
/**
* @author
* @version 1.0
* @description: plus
* @date 2023/11/13 18:53
*/
public interface SysConfigPlusService extends IService<SysConfig> {
/**
*
*/
List<SysConfig> pageQuery(SysConfig config);
/**
*
*/
String getByConfigKey(String configKey);
/**
* @description:
* @param: * @param config
* @return: boolean
* @author
* @date: 2023/11/13 19:42
*/
boolean checkConfigKeyUnique(SysConfig config);
/**
*
*/
void resetConfigCache();
SysConfig selectConfigById(Long configId);
}

View File

@ -0,0 +1,41 @@
package com.dragon.system.server.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dragon.system.common.domain.SysDept;
import java.util.List;
/**
* @author
* @version 1.0
* @description: plus
* @date 2023/11/14 12:40
*/
public interface SysDeptPlusService extends IService<SysDept> {
/**
*/
List<SysDept> querList(SysDept dept);
/**
*
*/
void checkDeptDataScope(Long deptId);
/**
*/
boolean checkDeptNameUnique(SysDept dept);
int updateDept(SysDept dept);
boolean hasChildByDeptId(Long deptId);
boolean checkDeptExistUser(Long deptId);
int selectNormalChildrenDeptById(Long deptId);
}

View File

@ -0,0 +1,125 @@
package com.dragon.system.server.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dragon.common.core.constant.CacheConstants;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.common.redis.service.RedisService;
import com.dragon.system.common.domain.SysConfig;
import com.dragon.system.server.mapper.SysConfigPlusMapper;
import com.dragon.system.server.service.SysConfigPlusService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import static com.dragon.common.security.utils.DictUtils.getCacheKey;
/**
* @author
* @version 1.0
* @description:
* @date 2023/11/13 18:53
*/
@Service
public class SysConfigPlusServiceImpl extends ServiceImpl<SysConfigPlusMapper, SysConfig> implements SysConfigPlusService {
@Autowired
private RedisService redisService;
@Resource
private SysConfigPlusMapper configPlusMapper;
/**
*
*/
@Override
public List<SysConfig> pageQuery(SysConfig config) {
LambdaQueryWrapper<SysConfig> sysConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(config.getConfigName())){
sysConfigLambdaQueryWrapper.like(SysConfig::getConfigName,config.getConfigName());
} if (StringUtils.isNotEmpty(config.getConfigKey())){
sysConfigLambdaQueryWrapper.like(SysConfig::getConfigKey,config.getConfigKey());
}
if (StringUtils.isNotEmpty(config.getConfigValue())){
sysConfigLambdaQueryWrapper.like(SysConfig::getConfigValue,config.getConfigValue());
}if (StringUtils.isNotEmpty(config.getConfigType())){
sysConfigLambdaQueryWrapper.like(SysConfig::getConfigType,config.getConfigType());
}
//获取时间参数
Object beginTime = config.getParams().get("beginTime");
Object endTime = config.getParams().get("endTime");
if (Objects.nonNull(beginTime) && beginTime instanceof Date beginDate){
sysConfigLambdaQueryWrapper.gt(SysConfig::getCreateTime,beginDate);
} if (Objects.nonNull(endTime) && endTime instanceof Date endDate){
sysConfigLambdaQueryWrapper.lt(SysConfig::getCreateTime,endDate);
}
return this.list(sysConfigLambdaQueryWrapper);
}
/**
*
*/
@Override
public String getByConfigKey(String configKey) {
LambdaQueryWrapper<SysConfig> sysConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
Assert.notNull(configKey,"configKey不可以为空");
sysConfigLambdaQueryWrapper.eq(SysConfig::getConfigKey,configKey);
SysConfig sysConfig = this.getOne(sysConfigLambdaQueryWrapper);
return sysConfig.getConfigValue();
}
/**
* @description:
* @param: * @param config
* @return: boolean
* @author
* @date: 2023/11/13 19:42
*/
@Override
public boolean checkConfigKeyUnique(SysConfig config) {
LambdaQueryWrapper<SysConfig> sysConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
Assert.notNull(config.getConfigKey(),"configKey不可以为空");
sysConfigLambdaQueryWrapper.eq(SysConfig::getConfigKey,config.getConfigKey());
return this.count(sysConfigLambdaQueryWrapper)>0;
}
/**
*
*/
@Override
public void resetConfigCache() {
clearConfigCache();
loadingConfigCache();
}
@Override
public SysConfig selectConfigById(Long configId) {
SysConfig sysConfig = this.getById(configId);
return sysConfig;
}
/**
*
*/
public void clearConfigCache() {
Collection<String> keys = redisService.keys(CacheConstants.SYS_CONFIG_KEY + "*");
redisService.deleteObject(keys);
}
/**
*
*/
public void loadingConfigCache() {
List<SysConfig> configList = this.list();
for (SysConfig config : configList) {
redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
}
}
}

View File

@ -0,0 +1,193 @@
package com.dragon.system.server.service.impl;
import com.dragon.common.core.constant.CacheConstants;
import com.dragon.common.core.constant.UserConstants;
import com.dragon.common.core.exception.ServiceException;
import com.dragon.common.core.text.Convert;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.common.redis.service.RedisService;
import com.dragon.system.common.domain.SysConfig;
import com.dragon.system.server.mapper.SysConfigMapper;
import com.dragon.system.server.service.ISysConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.Collection;
import java.util.List;
/**
*
*
* @author dragon
*/
@Service
public class SysConfigServiceImpl implements ISysConfigService {
@Autowired
private SysConfigMapper configMapper;
@Autowired
private RedisService redisService;
/**
*
*/
@PostConstruct
public void init() {
loadingConfigCache();
}
/**
*
*
* @param configId ID
* @return
*/
@Override
public SysConfig selectConfigById(Long configId) {
SysConfig config = new SysConfig();
config.setConfigId(configId);
return configMapper.selectConfig(config);
}
/**
*
*
* @param configKey key
* @return
*/
@Override
public String selectConfigByKey(String configKey) {
String configValue = Convert.toStr(redisService.getCacheObject(getCacheKey(configKey)));
if (StringUtils.isNotEmpty(configValue)) {
return configValue;
}
SysConfig config = new SysConfig();
config.setConfigKey(configKey);
SysConfig retConfig = configMapper.selectConfig(config);
if (StringUtils.isNotNull(retConfig)) {
redisService.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue());
return retConfig.getConfigValue();
}
return StringUtils.EMPTY;
}
/**
*
*
* @param config
* @return
*/
@Override
public List<SysConfig> selectConfigList(SysConfig config) {
return configMapper.selectConfigList(config);
}
/**
*
*
* @param config
* @return
*/
@Override
public int insertConfig(SysConfig config) {
int row = configMapper.insertConfig(config);
if (row > 0) {
redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
}
return row;
}
/**
*
*
* @param config
* @return
*/
@Override
public int updateConfig(SysConfig config) {
SysConfig temp = configMapper.selectConfigById(config.getConfigId());
if (!StringUtils.equals(temp.getConfigKey(), config.getConfigKey())) {
redisService.deleteObject(getCacheKey(temp.getConfigKey()));
}
int row = configMapper.updateConfig(config);
if (row > 0) {
redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
}
return row;
}
/**
*
*
* @param configIds ID
*/
@Override
public void deleteConfigByIds(Long[] configIds) {
for (Long configId : configIds) {
SysConfig config = selectConfigById(configId);
if (StringUtils.equals(UserConstants.YES, config.getConfigType())) {
throw new ServiceException(String.format("内置参数【%1$s】不能删除 ", config.getConfigKey()));
}
configMapper.deleteConfigById(configId);
redisService.deleteObject(getCacheKey(config.getConfigKey()));
}
}
/**
*
*/
@Override
public void loadingConfigCache() {
List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig());
for (SysConfig config : configsList) {
redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
}
}
/**
*
*/
@Override
public void clearConfigCache() {
Collection<String> keys = redisService.keys(CacheConstants.SYS_CONFIG_KEY + "*");
redisService.deleteObject(keys);
}
/**
*
*/
@Override
public void resetConfigCache() {
clearConfigCache();
loadingConfigCache();
}
/**
*
*
* @param config
* @return
*/
@Override
public boolean checkConfigKeyUnique(SysConfig config) {
Long configId = StringUtils.isNull(config.getConfigId()) ? -1L : config.getConfigId();
SysConfig info = configMapper.checkConfigKeyUnique(config.getConfigKey());
if (StringUtils.isNotNull(info) && info.getConfigId().longValue() != configId.longValue()) {
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
}
/**
* cache key
*
* @param configKey
* @return key
*/
private String getCacheKey(String configKey) {
return CacheConstants.SYS_CONFIG_KEY + configKey;
}
}

View File

@ -0,0 +1,130 @@
package com.dragon.system.server.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dragon.common.core.exception.ServiceException;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysDept;
import com.dragon.system.common.domain.SysUser;
import com.dragon.system.server.mapper.SysDeptPlusMapper;
import com.dragon.system.server.service.SysDeptPlusService;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
/**
* @author
* @version 1.0
* @description: plus
* @date 2023/11/14 12:41
*/
@Service
public class SysDeptPlusServiceImpl extends ServiceImpl<SysDeptPlusMapper, SysDept> implements SysDeptPlusService {
@Resource
private SysDeptPlusMapper sysDeptPlusMapper;
/**
*/
@Override
public List<SysDept> querList(SysDept dept) {
LambdaQueryWrapper<SysDept> sysDeptLambdaQueryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(dept.getDeptName())){
sysDeptLambdaQueryWrapper.like(SysDept::getDeptName,dept.getDeptName());
}if (StringUtils.isNotEmpty(dept.getStatus())){
sysDeptLambdaQueryWrapper.like(SysDept::getStatus,dept.getStatus());
}if (StringUtils.isNotEmpty(dept.getStatus())){
sysDeptLambdaQueryWrapper.eq(SysDept::getStatus,dept.getStatus());
}if (dept.getDeptId()!=null && dept.getDeptId()!=0){
sysDeptLambdaQueryWrapper.eq(SysDept::getDeptId,dept.getDeptId());
}if (dept.getParentId()!=null && dept.getParentId()!=0){
sysDeptLambdaQueryWrapper.eq(SysDept::getParentId,dept.getParentId());
}
Object dataScope = dept.getParams().get("params.dataScope");
System.out.println(dataScope);
if (Objects.nonNull(dataScope) && dataScope instanceof String dataScopeData)
sysDeptLambdaQueryWrapper.apply(dataScopeData);
sysDeptLambdaQueryWrapper.eq(SysDept::getDelFlag,"0");
sysDeptLambdaQueryWrapper.orderByAsc(SysDept::getParentId,SysDept::getOrderNum);
return this.list(sysDeptLambdaQueryWrapper);
}
/**
*
*/
@Override
public void checkDeptDataScope(Long deptId) {
if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
SysDept dept = new SysDept();
dept.setDeptId(deptId);
List<SysDept> depts = this.querList(dept);
if (StringUtils.isEmpty(depts)) {
throw new ServiceException("没有权限访问部门数据!");
}
}
}
/**
*/
@Override
public boolean checkDeptNameUnique(SysDept dept) {
LambdaQueryWrapper<SysDept> sysDeptLambdaQueryWrapper = new LambdaQueryWrapper<>();
Assert.notNull(dept.getDeptName(),"部门名称不能为空");
Assert.notNull(dept.getParentId(),"父级id不能为空");
sysDeptLambdaQueryWrapper.eq(SysDept::getDeptName,dept.getDeptName());
sysDeptLambdaQueryWrapper.eq(SysDept::getParentId,dept.getParentId());
sysDeptLambdaQueryWrapper.eq(SysDept::getDelFlag,"0");
SysDept one = this.getOne(sysDeptLambdaQueryWrapper);
return one!=null?true:false;
}
@Override
public int updateDept(SysDept dept) {
SysDept newParentDept = sysDeptPlusMapper.selectById(dept.getDeptId());
SysDept oldDept = sysDeptPlusMapper.selectById(dept.getParentId());
if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) {
String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId();
String oldAncestors = oldDept.getAncestors();
dept.setAncestors(newAncestors);
updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors);
}
return 0;
}
@Override
public boolean hasChildByDeptId(Long deptId) {
LambdaQueryWrapper<SysDept> sysDeptLambdaQueryWrapper = new LambdaQueryWrapper<>();
sysDeptLambdaQueryWrapper.eq(SysDept::getParentId,deptId);
sysDeptLambdaQueryWrapper.eq(SysDept::getDelFlag,"0");
return count(sysDeptLambdaQueryWrapper)>0;
}
@Override
public boolean checkDeptExistUser(Long deptId) {
int result=sysDeptPlusMapper.checkDeptExistUser(deptId);
return result>0;
}
@Override
public int selectNormalChildrenDeptById(Long deptId) {
return sysDeptPlusMapper.selectNormalChildrenDeptById(deptId);
}
private void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors) {
List<SysDept> children = sysDeptPlusMapper.selectChildrenDeptById(deptId);
for (SysDept child : children) {
child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors));
}
if (children.size() > 0) {
sysDeptPlusMapper.updateDeptChildren(children);
}
}
}

View File

@ -0,0 +1,304 @@
package com.dragon.system.server.service.impl;
import com.dragon.common.core.constant.UserConstants;
import com.dragon.common.core.exception.ServiceException;
import com.dragon.common.core.text.Convert;
import com.dragon.common.core.utils.SpringUtils;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.common.datascope.annotation.DataScope;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysDept;
import com.dragon.system.common.domain.SysRole;
import com.dragon.system.common.domain.SysUser;
import com.dragon.system.common.domain.vo.TreeSelect;
import com.dragon.system.server.mapper.SysDeptMapper;
import com.dragon.system.server.mapper.SysRoleMapper;
import com.dragon.system.server.service.ISysDeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
/**
*
*
* @author dragon
*/
@Service
public class SysDeptServiceImpl implements ISysDeptService {
@Autowired
private SysDeptMapper deptMapper;
@Autowired
private SysRoleMapper roleMapper;
/**
*
*
* @param dept
* @return
*/
@Override
@DataScope(deptAlias = "d")
public List<SysDept> selectDeptList(SysDept dept) {
return deptMapper.selectDeptList(dept);
}
/**
*
*
* @param dept
* @return
*/
@Override
public List<TreeSelect> selectDeptTreeList(SysDept dept) {
List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept);
return buildDeptTreeSelect(depts);
}
/**
*
*
* @param depts
* @return
*/
@Override
public List<SysDept> buildDeptTree(List<SysDept> depts) {
List<SysDept> returnList = new ArrayList<SysDept>();
List<Long> tempList = depts.stream().map(SysDept::getDeptId).collect(Collectors.toList());
for (SysDept dept : depts) {
// 如果是顶级节点, 遍历该父节点的所有子节点
if (!tempList.contains(dept.getParentId())) {
recursionFn(depts, dept);
returnList.add(dept);
}
}
if (returnList.isEmpty()) {
returnList = depts;
}
return returnList;
}
/**
*
*
* @param depts
* @return
*/
@Override
public List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts) {
List<SysDept> deptTrees = buildDeptTree(depts);
return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
}
/**
* ID
*
* @param roleId ID
* @return
*/
@Override
public List<Long> selectDeptListByRoleId(Long roleId) {
SysRole role = roleMapper.selectRoleById(roleId);
return deptMapper.selectDeptListByRoleId(roleId, role.isDeptCheckStrictly());
}
/**
* ID
*
* @param deptId ID
* @return
*/
@Override
public SysDept selectDeptById(Long deptId) {
return deptMapper.selectDeptById(deptId);
}
/**
* ID
*
* @param deptId ID
* @return
*/
@Override
public int selectNormalChildrenDeptById(Long deptId) {
return deptMapper.selectNormalChildrenDeptById(deptId);
}
/**
*
*
* @param deptId ID
* @return
*/
@Override
public boolean hasChildByDeptId(Long deptId) {
int result = deptMapper.hasChildByDeptId(deptId);
return result > 0;
}
/**
*
*
* @param deptId ID
* @return true false
*/
@Override
public boolean checkDeptExistUser(Long deptId) {
int result = deptMapper.checkDeptExistUser(deptId);
return result > 0;
}
/**
*
*
* @param dept
* @return
*/
@Override
public boolean checkDeptNameUnique(SysDept dept) {
Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId();
SysDept info = deptMapper.checkDeptNameUnique(dept.getDeptName(), dept.getParentId());
if (StringUtils.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue()) {
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
}
/**
*
*
* @param deptId id
*/
@Override
public void checkDeptDataScope(Long deptId) {
if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
SysDept dept = new SysDept();
dept.setDeptId(deptId);
List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList(dept);
if (StringUtils.isEmpty(depts)) {
throw new ServiceException("没有权限访问部门数据!");
}
}
}
/**
*
*
* @param dept
* @return
*/
@Override
public int insertDept(SysDept dept) {
SysDept info = deptMapper.selectDeptById(dept.getParentId());
// 如果父节点不为正常状态,则不允许新增子节点
if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) {
throw new ServiceException("部门停用,不允许新增");
}
dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
return deptMapper.insertDept(dept);
}
/**
*
*
* @param dept
* @return
*/
@Override
public int updateDept(SysDept dept) {
SysDept newParentDept = deptMapper.selectDeptById(dept.getParentId());
SysDept oldDept = deptMapper.selectDeptById(dept.getDeptId());
if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) {
String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId();
String oldAncestors = oldDept.getAncestors();
dept.setAncestors(newAncestors);
updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors);
}
int result = deptMapper.updateDept(dept);
if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors())
&& !StringUtils.equals("0", dept.getAncestors())) {
// 如果该部门是启用状态,则启用该部门的所有上级部门
updateParentDeptStatusNormal(dept);
}
return result;
}
/**
*
*
* @param dept
*/
private void updateParentDeptStatusNormal(SysDept dept) {
String ancestors = dept.getAncestors();
Long[] deptIds = Convert.toLongArray(ancestors);
deptMapper.updateDeptStatusNormal(deptIds);
}
/**
*
*
* @param deptId ID
* @param newAncestors ID
* @param oldAncestors ID
*/
public void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors) {
List<SysDept> children = deptMapper.selectChildrenDeptById(deptId);
for (SysDept child : children) {
child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors));
}
if (children.size() > 0) {
deptMapper.updateDeptChildren(children);
}
}
/**
*
*
* @param deptId ID
* @return
*/
@Override
public int deleteDeptById(Long deptId) {
return deptMapper.deleteDeptById(deptId);
}
/**
*
*/
private void recursionFn(List<SysDept> list, SysDept t) {
// 得到子节点列表
List<SysDept> childList = getChildList(list, t);
t.setChildren(childList);
for (SysDept tChild : childList) {
if (hasChild(list, tChild)) {
recursionFn(list, tChild);
}
}
}
/**
*
*/
private List<SysDept> getChildList(List<SysDept> list, SysDept t) {
List<SysDept> tlist = new ArrayList<SysDept>();
Iterator<SysDept> it = list.iterator();
while (it.hasNext()) {
SysDept n = (SysDept) it.next();
if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue()) {
tlist.add(n);
}
}
return tlist;
}
/**
*
*/
private boolean hasChild(List<SysDept> list, SysDept t) {
return getChildList(list, t).size() > 0 ? true : false;
}
}

View File

@ -0,0 +1,102 @@
package com.dragon.system.server.service.impl;
import com.dragon.common.security.utils.DictUtils;
import com.dragon.system.common.domain.SysDictData;
import com.dragon.system.server.mapper.SysDictDataMapper;
import com.dragon.system.server.service.ISysDictDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
*
* @author dragon
*/
@Service
public class SysDictDataServiceImpl implements ISysDictDataService {
@Autowired
private SysDictDataMapper dictDataMapper;
/**
*
*
* @param dictData
* @return
*/
@Override
public List<SysDictData> selectDictDataList(SysDictData dictData) {
return dictDataMapper.selectDictDataList(dictData);
}
/**
*
*
* @param dictType
* @param dictValue
* @return
*/
@Override
public String selectDictLabel(String dictType, String dictValue) {
return dictDataMapper.selectDictLabel(dictType, dictValue);
}
/**
* ID
*
* @param dictCode ID
* @return
*/
@Override
public SysDictData selectDictDataById(Long dictCode) {
return dictDataMapper.selectDictDataById(dictCode);
}
/**
*
*
* @param dictCodes ID
*/
@Override
public void deleteDictDataByIds(Long[] dictCodes) {
for (Long dictCode : dictCodes) {
SysDictData data = selectDictDataById(dictCode);
dictDataMapper.deleteDictDataById(dictCode);
List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
DictUtils.setDictCache(data.getDictType(), dictDatas);
}
}
/**
*
*
* @param data
* @return
*/
@Override
public int insertDictData(SysDictData data) {
int row = dictDataMapper.insertDictData(data);
if (row > 0) {
List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
DictUtils.setDictCache(data.getDictType(), dictDatas);
}
return row;
}
/**
*
*
* @param data
* @return
*/
@Override
public int updateDictData(SysDictData data) {
int row = dictDataMapper.updateDictData(data);
if (row > 0) {
List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
DictUtils.setDictCache(data.getDictType(), dictDatas);
}
return row;
}
}

View File

@ -0,0 +1,202 @@
package com.dragon.system.server.service.impl;
import com.dragon.common.core.constant.UserConstants;
import com.dragon.common.core.exception.ServiceException;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.common.security.utils.DictUtils;
import com.dragon.system.common.domain.SysDictData;
import com.dragon.system.common.domain.SysDictType;
import com.dragon.system.server.mapper.SysDictDataMapper;
import com.dragon.system.server.mapper.SysDictTypeMapper;
import com.dragon.system.server.service.ISysDictTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
*
* @author dragon
*/
@Service
public class SysDictTypeServiceImpl implements ISysDictTypeService {
@Autowired
private SysDictTypeMapper dictTypeMapper;
@Autowired
private SysDictDataMapper dictDataMapper;
/**
*
*/
@PostConstruct
public void init() {
loadingDictCache();
}
/**
*
*
* @param dictType
* @return
*/
@Override
public List<SysDictType> selectDictTypeList(SysDictType dictType) {
return dictTypeMapper.selectDictTypeList(dictType);
}
/**
*
*
* @return
*/
@Override
public List<SysDictType> selectDictTypeAll() {
return dictTypeMapper.selectDictTypeAll();
}
/**
*
*
* @param dictType
* @return
*/
@Override
public List<SysDictData> selectDictDataByType(String dictType) {
List<SysDictData> dictDatas = DictUtils.getDictCache(dictType);
if (StringUtils.isNotEmpty(dictDatas)) {
return dictDatas;
}
dictDatas = dictDataMapper.selectDictDataByType(dictType);
if (StringUtils.isNotEmpty(dictDatas)) {
DictUtils.setDictCache(dictType, dictDatas);
return dictDatas;
}
return null;
}
/**
* ID
*
* @param dictId ID
* @return
*/
@Override
public SysDictType selectDictTypeById(Long dictId) {
return dictTypeMapper.selectDictTypeById(dictId);
}
/**
*
*
* @param dictType
* @return
*/
@Override
public SysDictType selectDictTypeByType(String dictType) {
return dictTypeMapper.selectDictTypeByType(dictType);
}
/**
*
*
* @param dictIds ID
*/
@Override
public void deleteDictTypeByIds(Long[] dictIds) {
for (Long dictId : dictIds) {
SysDictType dictType = selectDictTypeById(dictId);
if (dictDataMapper.countDictDataByType(dictType.getDictType()) > 0) {
throw new ServiceException(String.format("%1$s已分配,不能删除", dictType.getDictName()));
}
dictTypeMapper.deleteDictTypeById(dictId);
DictUtils.removeDictCache(dictType.getDictType());
}
}
/**
*
*/
@Override
public void loadingDictCache() {
SysDictData dictData = new SysDictData();
dictData.setStatus("0");
Map<String, List<SysDictData>> dictDataMap = dictDataMapper.selectDictDataList(dictData).stream().collect(Collectors.groupingBy(SysDictData::getDictType));
for (Map.Entry<String, List<SysDictData>> entry : dictDataMap.entrySet()) {
DictUtils.setDictCache(entry.getKey(), entry.getValue().stream().sorted(Comparator.comparing(SysDictData::getDictSort)).collect(Collectors.toList()));
}
}
/**
*
*/
@Override
public void clearDictCache() {
DictUtils.clearDictCache();
}
/**
*
*/
@Override
public void resetDictCache() {
clearDictCache();
loadingDictCache();
}
/**
*
*
* @param dict
* @return
*/
@Override
public int insertDictType(SysDictType dict) {
int row = dictTypeMapper.insertDictType(dict);
if (row > 0) {
DictUtils.setDictCache(dict.getDictType(), null);
}
return row;
}
/**
*
*
* @param dict
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int updateDictType(SysDictType dict) {
SysDictType oldDict = dictTypeMapper.selectDictTypeById(dict.getDictId());
dictDataMapper.updateDictDataType(oldDict.getDictType(), dict.getDictType());
int row = dictTypeMapper.updateDictType(dict);
if (row > 0) {
List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType());
DictUtils.setDictCache(dict.getDictType(), dictDatas);
}
return row;
}
/**
*
*
* @param dict
* @return
*/
@Override
public boolean checkDictTypeUnique(SysDictType dict) {
Long dictId = StringUtils.isNull(dict.getDictId()) ? -1L : dict.getDictId();
SysDictType dictType = dictTypeMapper.checkDictTypeUnique(dict.getDictType());
if (StringUtils.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) {
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
}
}

View File

@ -0,0 +1,61 @@
package com.dragon.system.server.service.impl;
import com.dragon.system.common.domain.SysLogininfor;
import com.dragon.system.server.mapper.SysLogininforMapper;
import com.dragon.system.server.service.ISysLogininforService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 访
*
* @author dragon
*/
@Service
public class SysLogininforServiceImpl implements ISysLogininforService {
@Autowired
private SysLogininforMapper logininforMapper;
/**
*
*
* @param logininfor 访
*/
@Override
public int insertLogininfor(SysLogininfor logininfor) {
return logininforMapper.insertLogininfor(logininfor);
}
/**
*
*
* @param logininfor 访
* @return
*/
@Override
public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor) {
return logininforMapper.selectLogininforList(logininfor);
}
/**
*
*
* @param infoIds ID
* @return
*/
@Override
public int deleteLogininforByIds(Long[] infoIds) {
return logininforMapper.deleteLogininforByIds(infoIds);
}
/**
*
*/
@Override
public void cleanLogininfor() {
logininforMapper.cleanLogininfor();
}
}

View File

@ -0,0 +1,464 @@
package com.dragon.system.server.service.impl;
import com.dragon.common.core.constant.Constants;
import com.dragon.common.core.constant.UserConstants;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysRole;
import com.dragon.system.common.domain.SysUser;
import com.dragon.system.common.domain.SysMenu;
import com.dragon.system.common.domain.vo.MetaVo;
import com.dragon.system.common.domain.vo.RouterVo;
import com.dragon.system.common.domain.vo.TreeSelect;
import com.dragon.system.server.mapper.SysMenuMapper;
import com.dragon.system.server.mapper.SysRoleMapper;
import com.dragon.system.server.mapper.SysRoleMenuMapper;
import com.dragon.system.server.service.ISysMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
*
*
* @author dragon
*/
@Service
public class SysMenuServiceImpl implements ISysMenuService {
public static final String PREMISSION_STRING = "perms[\"{0}\"]";
@Autowired
private SysMenuMapper menuMapper;
@Autowired
private SysRoleMapper roleMapper;
@Autowired
private SysRoleMenuMapper roleMenuMapper;
/**
*
*
* @param userId ID
* @return
*/
@Override
public List<SysMenu> selectMenuList(Long userId) {
return selectMenuList(new SysMenu(), userId);
}
/**
*
*
* @param menu
* @return
*/
@Override
public List<SysMenu> selectMenuList(SysMenu menu, Long userId) {
List<SysMenu> menuList = null;
// 管理员显示所有菜单信息
if (SysUser.isAdmin(userId)) {
menuList = menuMapper.selectMenuList(menu);
} else {
menu.getParams().put("userId", userId);
menuList = menuMapper.selectMenuListByUserId(menu);
}
return menuList;
}
/**
* ID
*
* @param userId ID
* @return
*/
@Override
public Set<String> selectMenuPermsByUserId(Long userId) {
List<String> perms = menuMapper.selectMenuPermsByUserId(userId);
Set<String> permsSet = new HashSet<>();
for (String perm : perms) {
if (StringUtils.isNotEmpty(perm)) {
permsSet.addAll(Arrays.asList(perm.trim().split(",")));
}
}
return permsSet;
}
/**
* ID
*
* @param roleId ID
* @return
*/
@Override
public Set<String> selectMenuPermsByRoleId(Long roleId) {
List<String> perms = menuMapper.selectMenuPermsByRoleId(roleId);
Set<String> permsSet = new HashSet<>();
for (String perm : perms) {
if (StringUtils.isNotEmpty(perm)) {
permsSet.addAll(Arrays.asList(perm.trim().split(",")));
}
}
return permsSet;
}
/**
* ID
*
* @param userId
* @return
*/
@Override
public List<SysMenu> selectMenuTreeByUserId(Long userId) {
List<SysMenu> menus = null;
if (SecurityUtils.isAdmin(userId)) {
menus = menuMapper.selectMenuTreeAll();
} else {
menus = menuMapper.selectMenuTreeByUserId(userId);
}
return getChildPerms(menus, 0);
}
/**
* ID
*
* @param roleId ID
* @return
*/
@Override
public List<Long> selectMenuListByRoleId(Long roleId) {
SysRole role = roleMapper.selectRoleById(roleId);
return menuMapper.selectMenuListByRoleId(roleId, role.isMenuCheckStrictly());
}
/**
*
*
* @param menus
* @return
*/
@Override
public List<RouterVo> buildMenus(List<SysMenu> menus) {
List<RouterVo> routers = new LinkedList<RouterVo>();
for (SysMenu menu : menus) {
RouterVo router = new RouterVo();
router.setHidden("1".equals(menu.getVisible()));
router.setName(getRouteName(menu));
router.setPath(getRouterPath(menu));
router.setComponent(getComponent(menu));
router.setQuery(menu.getQuery());
router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
List<SysMenu> cMenus = menu.getChildren();
if (StringUtils.isNotEmpty(cMenus) && UserConstants.TYPE_DIR.equals(menu.getMenuType())) {
router.setAlwaysShow(true);
router.setRedirect("noRedirect");
router.setChildren(buildMenus(cMenus));
} else if (isMenuFrame(menu)) {
router.setMeta(null);
List<RouterVo> childrenList = new ArrayList<RouterVo>();
RouterVo children = new RouterVo();
children.setPath(menu.getPath());
children.setComponent(menu.getComponent());
children.setName(StringUtils.capitalize(menu.getPath()));
children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
children.setQuery(menu.getQuery());
childrenList.add(children);
router.setChildren(childrenList);
} else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) {
router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon()));
router.setPath("/");
List<RouterVo> childrenList = new ArrayList<RouterVo>();
RouterVo children = new RouterVo();
String routerPath = innerLinkReplaceEach(menu.getPath());
children.setPath(routerPath);
children.setComponent(UserConstants.INNER_LINK);
children.setName(StringUtils.capitalize(routerPath));
children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath()));
childrenList.add(children);
router.setChildren(childrenList);
}
routers.add(router);
}
return routers;
}
/**
*
*
* @param menus
* @return
*/
@Override
public List<SysMenu> buildMenuTree(List<SysMenu> menus) {
List<SysMenu> returnList = new ArrayList<SysMenu>();
List<Long> tempList = menus.stream().map(SysMenu::getMenuId).collect(Collectors.toList());
for (Iterator<SysMenu> iterator = menus.iterator(); iterator.hasNext(); ) {
SysMenu menu = (SysMenu) iterator.next();
// 如果是顶级节点, 遍历该父节点的所有子节点
if (!tempList.contains(menu.getParentId())) {
recursionFn(menus, menu);
returnList.add(menu);
}
}
if (returnList.isEmpty()) {
returnList = menus;
}
return returnList;
}
/**
*
*
* @param menus
* @return
*/
@Override
public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus) {
List<SysMenu> menuTrees = buildMenuTree(menus);
return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
}
/**
* ID
*
* @param menuId ID
* @return
*/
@Override
public SysMenu selectMenuById(Long menuId) {
return menuMapper.selectMenuById(menuId);
}
/**
*
*
* @param menuId ID
* @return
*/
@Override
public boolean hasChildByMenuId(Long menuId) {
int result = menuMapper.hasChildByMenuId(menuId);
return result > 0;
}
/**
* 使
*
* @param menuId ID
* @return
*/
@Override
public boolean checkMenuExistRole(Long menuId) {
int result = roleMenuMapper.checkMenuExistRole(menuId);
return result > 0;
}
/**
*
*
* @param menu
* @return
*/
@Override
public int insertMenu(SysMenu menu) {
return menuMapper.insertMenu(menu);
}
/**
*
*
* @param menu
* @return
*/
@Override
public int updateMenu(SysMenu menu) {
return menuMapper.updateMenu(menu);
}
/**
*
*
* @param menuId ID
* @return
*/
@Override
public int deleteMenuById(Long menuId) {
return menuMapper.deleteMenuById(menuId);
}
/**
*
*
* @param menu
* @return
*/
@Override
public boolean checkMenuNameUnique(SysMenu menu) {
Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId();
SysMenu info = menuMapper.checkMenuNameUnique(menu.getMenuName(), menu.getParentId());
if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) {
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
}
/**
*
*
* @param menu
* @return
*/
public String getRouteName(SysMenu menu) {
String routerName = StringUtils.capitalize(menu.getPath());
// 非外链并且是一级目录(类型为目录)
if (isMenuFrame(menu)) {
routerName = StringUtils.EMPTY;
}
return routerName;
}
/**
*
*
* @param menu
* @return
*/
public String getRouterPath(SysMenu menu) {
String routerPath = menu.getPath();
// 内链打开外网方式
if (menu.getParentId().intValue() != 0 && isInnerLink(menu)) {
routerPath = innerLinkReplaceEach(routerPath);
}
// 非外链并且是一级目录(类型为目录)
if (0 == menu.getParentId().intValue() && UserConstants.TYPE_DIR.equals(menu.getMenuType())
&& UserConstants.NO_FRAME.equals(menu.getIsFrame())) {
routerPath = "/" + menu.getPath();
}
// 非外链并且是一级目录(类型为菜单)
else if (isMenuFrame(menu)) {
routerPath = "/";
}
return routerPath;
}
/**
*
*
* @param menu
* @return
*/
public String getComponent(SysMenu menu) {
String component = UserConstants.LAYOUT;
if (StringUtils.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu)) {
component = menu.getComponent();
} else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu)) {
component = UserConstants.INNER_LINK;
} else if (StringUtils.isEmpty(menu.getComponent()) && isParentView(menu)) {
component = UserConstants.PARENT_VIEW;
}
return component;
}
/**
*
*
* @param menu
* @return
*/
public boolean isMenuFrame(SysMenu menu) {
return menu.getParentId().intValue() == 0 && UserConstants.TYPE_MENU.equals(menu.getMenuType())
&& menu.getIsFrame().equals(UserConstants.NO_FRAME);
}
/**
*
*
* @param menu
* @return
*/
public boolean isInnerLink(SysMenu menu) {
return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.ishttp(menu.getPath());
}
/**
* parent_view
*
* @param menu
* @return
*/
public boolean isParentView(SysMenu menu) {
return menu.getParentId().intValue() != 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType());
}
/**
* ID
*
* @param list
* @param parentId ID
* @return String
*/
public List<SysMenu> getChildPerms(List<SysMenu> list, int parentId) {
List<SysMenu> returnList = new ArrayList<SysMenu>();
for (Iterator<SysMenu> iterator = list.iterator(); iterator.hasNext(); ) {
SysMenu t = (SysMenu) iterator.next();
// 一、根据传入的某个父节点ID,遍历该父节点的所有子节点
if (t.getParentId() == parentId) {
recursionFn(list, t);
returnList.add(t);
}
}
return returnList;
}
/**
*
*
* @param list
* @param t
*/
private void recursionFn(List<SysMenu> list, SysMenu t) {
// 得到子节点列表
List<SysMenu> childList = getChildList(list, t);
t.setChildren(childList);
for (SysMenu tChild : childList) {
if (hasChild(list, tChild)) {
recursionFn(list, tChild);
}
}
}
/**
*
*/
private List<SysMenu> getChildList(List<SysMenu> list, SysMenu t) {
List<SysMenu> tlist = new ArrayList<SysMenu>();
Iterator<SysMenu> it = list.iterator();
while (it.hasNext()) {
SysMenu n = (SysMenu) it.next();
if (n.getParentId().longValue() == t.getMenuId().longValue()) {
tlist.add(n);
}
}
return tlist;
}
/**
*
*/
private boolean hasChild(List<SysMenu> list, SysMenu t) {
return getChildList(list, t).size() > 0;
}
/**
*
*
* @return
*/
public String innerLinkReplaceEach(String path) {
return StringUtils.replaceEach(path, new String[]{Constants.HTTP, Constants.HTTPS, Constants.WWW, ".", ":"},
new String[]{"", "", "", "/", "/"});
}
}

View File

@ -0,0 +1,86 @@
package com.dragon.system.server.service.impl;
import com.dragon.system.common.domain.SysNotice;
import com.dragon.system.server.mapper.SysNoticeMapper;
import com.dragon.system.server.service.ISysNoticeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
*
* @author dragon
*/
@Service
public class SysNoticeServiceImpl implements ISysNoticeService {
@Autowired
private SysNoticeMapper noticeMapper;
/**
*
*
* @param noticeId ID
* @return
*/
@Override
public SysNotice selectNoticeById(Long noticeId) {
return noticeMapper.selectNoticeById(noticeId);
}
/**
*
*
* @param notice
* @return
*/
@Override
public List<SysNotice> selectNoticeList(SysNotice notice) {
return noticeMapper.selectNoticeList(notice);
}
/**
*
*
* @param notice
* @return
*/
@Override
public int insertNotice(SysNotice notice) {
return noticeMapper.insertNotice(notice);
}
/**
*
*
* @param notice
* @return
*/
@Override
public int updateNotice(SysNotice notice) {
return noticeMapper.updateNotice(notice);
}
/**
*
*
* @param noticeId ID
* @return
*/
@Override
public int deleteNoticeById(Long noticeId) {
return noticeMapper.deleteNoticeById(noticeId);
}
/**
*
*
* @param noticeIds ID
* @return
*/
@Override
public int deleteNoticeByIds(Long[] noticeIds) {
return noticeMapper.deleteNoticeByIds(noticeIds);
}
}

View File

@ -0,0 +1,72 @@
package com.dragon.system.server.service.impl;
import com.dragon.system.common.domain.SysOperLog;
import com.dragon.system.server.mapper.SysOperLogMapper;
import com.dragon.system.server.service.ISysOperLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
*
* @author dragon
*/
@Service
public class SysOperLogServiceImpl implements ISysOperLogService {
@Autowired
private SysOperLogMapper operLogMapper;
/**
*
*
* @param operLog
* @return
*/
@Override
public int insertOperlog(SysOperLog operLog) {
return operLogMapper.insertOperlog(operLog);
}
/**
*
*
* @param operLog
* @return
*/
@Override
public List<SysOperLog> selectOperLogList(SysOperLog operLog) {
return operLogMapper.selectOperLogList(operLog);
}
/**
*
*
* @param operIds ID
* @return
*/
@Override
public int deleteOperLogByIds(Long[] operIds) {
return operLogMapper.deleteOperLogByIds(operIds);
}
/**
*
*
* @param operId ID
* @return
*/
@Override
public SysOperLog selectOperLogById(Long operId) {
return operLogMapper.selectOperLogById(operId);
}
/**
*
*/
@Override
public void cleanOperLog() {
operLogMapper.cleanOperLog();
}
}

View File

@ -0,0 +1,74 @@
package com.dragon.system.server.service.impl;
import com.dragon.system.common.domain.SysRole;
import com.dragon.system.common.domain.SysUser;
import com.dragon.system.server.service.ISysMenuService;
import com.dragon.system.server.service.ISysPermissionService;
import com.dragon.system.server.service.ISysRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
*
*
* @author dragon
*/
@Service
public class SysPermissionServiceImpl implements ISysPermissionService {
@Autowired
private ISysRoleService roleService;
@Autowired
private ISysMenuService menuService;
/**
*
*
* @param userId Id
* @return
*/
@Override
public Set<String> getRolePermission(SysUser user) {
Set<String> roles = new HashSet<String>();
// 管理员拥有所有权限
if (user.isAdmin()) {
roles.add("admin");
} else {
roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId()));
}
return roles;
}
/**
*
*
* @param userId Id
* @return
*/
@Override
public Set<String> getMenuPermission(SysUser user) {
Set<String> perms = new HashSet<String>();
// 管理员拥有所有权限
if (user.isAdmin()) {
perms.add("*:*:*");
} else {
List<SysRole> roles = user.getRoles();
if (!CollectionUtils.isEmpty(roles)) {
// 多角色设置permissions属性以便数据权限匹配权限
for (SysRole role : roles) {
Set<String> rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId());
role.setPermissions(rolePerms);
perms.addAll(rolePerms);
}
} else {
perms.addAll(menuService.selectMenuPermsByUserId(user.getUserId()));
}
}
return perms;
}
}

View File

@ -0,0 +1,163 @@
package com.dragon.system.server.service.impl;
import com.dragon.common.core.constant.UserConstants;
import com.dragon.common.core.exception.ServiceException;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.system.common.domain.SysPost;
import com.dragon.system.server.mapper.SysPostMapper;
import com.dragon.system.server.mapper.SysUserPostMapper;
import com.dragon.system.server.service.ISysPostService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
*
* @author dragon
*/
@Service
public class SysPostServiceImpl implements ISysPostService {
@Autowired
private SysPostMapper postMapper;
@Autowired
private SysUserPostMapper userPostMapper;
/**
*
*
* @param post
* @return
*/
@Override
public List<SysPost> selectPostList(SysPost post) {
return postMapper.selectPostList(post);
}
/**
*
*
* @return
*/
@Override
public List<SysPost> selectPostAll() {
return postMapper.selectPostAll();
}
/**
* ID
*
* @param postId ID
* @return
*/
@Override
public SysPost selectPostById(Long postId) {
return postMapper.selectPostById(postId);
}
/**
* ID
*
* @param userId ID
* @return ID
*/
@Override
public List<Long> selectPostListByUserId(Long userId) {
return postMapper.selectPostListByUserId(userId);
}
/**
*
*
* @param post
* @return
*/
@Override
public boolean checkPostNameUnique(SysPost post) {
Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId();
SysPost info = postMapper.checkPostNameUnique(post.getPostName());
if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue()) {
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
}
/**
*
*
* @param post
* @return
*/
@Override
public boolean checkPostCodeUnique(SysPost post) {
Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId();
SysPost info = postMapper.checkPostCodeUnique(post.getPostCode());
if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue()) {
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
}
/**
* ID使
*
* @param postId ID
* @return
*/
@Override
public int countUserPostById(Long postId) {
return userPostMapper.countUserPostById(postId);
}
/**
*
*
* @param postId ID
* @return
*/
@Override
public int deletePostById(Long postId) {
return postMapper.deletePostById(postId);
}
/**
*
*
* @param postIds ID
* @return
*/
@Override
public int deletePostByIds(Long[] postIds) {
for (Long postId : postIds) {
SysPost post = selectPostById(postId);
if (countUserPostById(postId) > 0) {
throw new ServiceException(String.format("%1$s已分配,不能删除", post.getPostName()));
}
}
return postMapper.deletePostByIds(postIds);
}
/**
*
*
* @param post
* @return
*/
@Override
public int insertPost(SysPost post) {
return postMapper.insertPost(post);
}
/**
*
*
* @param post
* @return
*/
@Override
public int updatePost(SysPost post) {
return postMapper.updatePost(post);
}
}

View File

@ -0,0 +1,382 @@
package com.dragon.system.server.service.impl;
import com.dragon.common.core.constant.UserConstants;
import com.dragon.common.core.exception.ServiceException;
import com.dragon.common.core.utils.SpringUtils;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.common.datascope.annotation.DataScope;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysRole;
import com.dragon.system.common.domain.SysUser;
import com.dragon.system.common.domain.SysRoleDept;
import com.dragon.system.common.domain.SysRoleMenu;
import com.dragon.system.common.domain.SysUserRole;
import com.dragon.system.server.mapper.SysRoleDeptMapper;
import com.dragon.system.server.mapper.SysRoleMapper;
import com.dragon.system.server.mapper.SysRoleMenuMapper;
import com.dragon.system.server.mapper.SysUserRoleMapper;
import com.dragon.system.server.service.ISysRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
*
*
* @author dragon
*/
@Service
public class SysRoleServiceImpl implements ISysRoleService {
@Autowired
private SysRoleMapper roleMapper;
@Autowired
private SysRoleMenuMapper roleMenuMapper;
@Autowired
private SysUserRoleMapper userRoleMapper;
@Autowired
private SysRoleDeptMapper roleDeptMapper;
/**
*
*
* @param role
* @return
*/
@Override
@DataScope(deptAlias = "d")
public List<SysRole> selectRoleList(SysRole role) {
return roleMapper.selectRoleList(role);
}
/**
* ID
*
* @param userId ID
* @return
*/
@Override
public List<SysRole> selectRolesByUserId(Long userId) {
List<SysRole> userRoles = roleMapper.selectRolePermissionByUserId(userId);
List<SysRole> roles = selectRoleAll();
for (SysRole role : roles) {
for (SysRole userRole : userRoles) {
if (role.getRoleId().longValue() == userRole.getRoleId().longValue()) {
role.setFlag(true);
break;
}
}
}
return roles;
}
/**
* ID
*
* @param userId ID
* @return
*/
@Override
public Set<String> selectRolePermissionByUserId(Long userId) {
List<SysRole> perms = roleMapper.selectRolePermissionByUserId(userId);
Set<String> permsSet = new HashSet<>();
for (SysRole perm : perms) {
if (StringUtils.isNotNull(perm)) {
permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(",")));
}
}
return permsSet;
}
/**
*
*
* @return
*/
@Override
public List<SysRole> selectRoleAll() {
return SpringUtils.getAopProxy(this).selectRoleList(new SysRole());
}
/**
* ID
*
* @param userId ID
* @return ID
*/
@Override
public List<Long> selectRoleListByUserId(Long userId) {
return roleMapper.selectRoleListByUserId(userId);
}
/**
* ID
*
* @param roleId ID
* @return
*/
@Override
public SysRole selectRoleById(Long roleId) {
return roleMapper.selectRoleById(roleId);
}
/**
*
*
* @param role
* @return
*/
@Override
public boolean checkRoleNameUnique(SysRole role) {
Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
SysRole info = roleMapper.checkRoleNameUnique(role.getRoleName());
if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) {
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
}
/**
*
*
* @param role
* @return
*/
@Override
public boolean checkRoleKeyUnique(SysRole role) {
Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
SysRole info = roleMapper.checkRoleKeyUnique(role.getRoleKey());
if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) {
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
}
/**
*
*
* @param role
*/
@Override
public void checkRoleAllowed(SysRole role) {
if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin()) {
throw new ServiceException("不允许操作超级管理员角色");
}
}
/**
*
*
* @param roleId id
*/
@Override
public void checkRoleDataScope(Long roleId) {
if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
SysRole role = new SysRole();
role.setRoleId(roleId);
List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role);
if (StringUtils.isEmpty(roles)) {
throw new ServiceException("没有权限访问角色数据!");
}
}
}
/**
* ID使
*
* @param roleId ID
* @return
*/
@Override
public int countUserRoleByRoleId(Long roleId) {
return userRoleMapper.countUserRoleByRoleId(roleId);
}
/**
*
*
* @param role
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int insertRole(SysRole role) {
// 新增角色信息
roleMapper.insertRole(role);
return insertRoleMenu(role);
}
/**
*
*
* @param role
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int updateRole(SysRole role) {
// 修改角色信息
roleMapper.updateRole(role);
// 删除角色与菜单关联
roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId());
return insertRoleMenu(role);
}
/**
*
*
* @param role
* @return
*/
@Override
public int updateRoleStatus(SysRole role) {
return roleMapper.updateRole(role);
}
/**
*
*
* @param role
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int authDataScope(SysRole role) {
// 修改角色信息
roleMapper.updateRole(role);
// 删除角色与部门关联
roleDeptMapper.deleteRoleDeptByRoleId(role.getRoleId());
// 新增角色和部门信息(数据权限)
return insertRoleDept(role);
}
/**
*
*
* @param role
*/
public int insertRoleMenu(SysRole role) {
int rows = 1;
// 新增用户与角色管理
List<SysRoleMenu> list = new ArrayList<SysRoleMenu>();
for (Long menuId : role.getMenuIds()) {
SysRoleMenu rm = new SysRoleMenu();
rm.setRoleId(role.getRoleId());
rm.setMenuId(menuId);
list.add(rm);
}
if (list.size() > 0) {
rows = roleMenuMapper.batchRoleMenu(list);
}
return rows;
}
/**
* ()
*
* @param role
*/
public int insertRoleDept(SysRole role) {
int rows = 1;
// 新增角色与部门(数据权限)管理
List<SysRoleDept> list = new ArrayList<SysRoleDept>();
for (Long deptId : role.getDeptIds()) {
SysRoleDept rd = new SysRoleDept();
rd.setRoleId(role.getRoleId());
rd.setDeptId(deptId);
list.add(rd);
}
if (list.size() > 0) {
rows = roleDeptMapper.batchRoleDept(list);
}
return rows;
}
/**
* ID
*
* @param roleId ID
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int deleteRoleById(Long roleId) {
// 删除角色与菜单关联
roleMenuMapper.deleteRoleMenuByRoleId(roleId);
// 删除角色与部门关联
roleDeptMapper.deleteRoleDeptByRoleId(roleId);
return roleMapper.deleteRoleById(roleId);
}
/**
*
*
* @param roleIds ID
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int deleteRoleByIds(Long[] roleIds) {
for (Long roleId : roleIds) {
checkRoleAllowed(new SysRole(roleId));
checkRoleDataScope(roleId);
SysRole role = selectRoleById(roleId);
if (countUserRoleByRoleId(roleId) > 0) {
throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName()));
}
}
// 删除角色与菜单关联
roleMenuMapper.deleteRoleMenu(roleIds);
// 删除角色与部门关联
roleDeptMapper.deleteRoleDept(roleIds);
return roleMapper.deleteRoleByIds(roleIds);
}
/**
*
*
* @param userRole
* @return
*/
@Override
public int deleteAuthUser(SysUserRole userRole) {
return userRoleMapper.deleteUserRoleInfo(userRole);
}
/**
*
*
* @param roleId ID
* @param userIds ID
* @return
*/
@Override
public int deleteAuthUsers(Long roleId, Long[] userIds) {
return userRoleMapper.deleteUserRoleInfos(roleId, userIds);
}
/**
*
*
* @param roleId ID
* @param userIds ID
* @return
*/
@Override
public int insertAuthUsers(Long roleId, Long[] userIds) {
// 新增用户与角色管理
List<SysUserRole> list = new ArrayList<SysUserRole>();
for (Long userId : userIds) {
SysUserRole ur = new SysUserRole();
ur.setUserId(userId);
ur.setRoleId(roleId);
list.add(ur);
}
return userRoleMapper.batchUserRole(list);
}
}

View File

@ -0,0 +1,81 @@
package com.dragon.system.server.service.impl;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.system.common.domain.model.LoginUser;
import com.dragon.system.common.domain.SysUserOnline;
import com.dragon.system.server.service.ISysUserOnlineService;
import org.springframework.stereotype.Service;
/**
* 线
*
* @author dragon
*/
@Service
public class SysUserOnlineServiceImpl implements ISysUserOnlineService {
/**
*
*
* @param ipaddr
* @param user
* @return 线
*/
@Override
public SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user) {
if (StringUtils.equals(ipaddr, user.getIpaddr())) {
return loginUserToUserOnline(user);
}
return null;
}
/**
*
*
* @param userName
* @param user
* @return 线
*/
@Override
public SysUserOnline selectOnlineByUserName(String userName, LoginUser user) {
if (StringUtils.equals(userName, user.getUsername())) {
return loginUserToUserOnline(user);
}
return null;
}
/**
* /
*
* @param ipaddr
* @param userName
* @param user
* @return 线
*/
@Override
public SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user) {
if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) {
return loginUserToUserOnline(user);
}
return null;
}
/**
* 线
*
* @param user
* @return 线
*/
@Override
public SysUserOnline loginUserToUserOnline(LoginUser user) {
if (StringUtils.isNull(user)) {
return null;
}
SysUserOnline sysUserOnline = new SysUserOnline();
sysUserOnline.setTokenId(user.getToken());
sysUserOnline.setUserName(user.getUsername());
sysUserOnline.setIpaddr(user.getIpaddr());
sysUserOnline.setLoginTime(user.getLoginTime());
return sysUserOnline;
}
}

View File

@ -0,0 +1,482 @@
package com.dragon.system.server.service.impl;
import com.dragon.common.core.constant.UserConstants;
import com.dragon.common.core.exception.ServiceException;
import com.dragon.common.core.utils.SpringUtils;
import com.dragon.common.core.utils.StringUtils;
import com.dragon.common.core.utils.bean.BeanValidators;
import com.dragon.common.datascope.annotation.DataScope;
import com.dragon.common.security.utils.SecurityUtils;
import com.dragon.system.common.domain.SysRole;
import com.dragon.system.common.domain.SysUser;
import com.dragon.system.common.domain.SysPost;
import com.dragon.system.common.domain.SysUserPost;
import com.dragon.system.common.domain.SysUserRole;
import com.dragon.system.server.mapper.*;
import com.dragon.system.server.service.ISysConfigService;
import com.dragon.system.server.service.ISysUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.validation.Validator;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
*
*
* @author dragon
*/
@Service
public class SysUserServiceImpl implements ISysUserService {
private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
@Autowired
protected Validator validator;
@Autowired
private SysUserMapper userMapper;
@Autowired
private SysRoleMapper roleMapper;
@Autowired
private SysPostMapper postMapper;
@Autowired
private SysUserRoleMapper userRoleMapper;
@Autowired
private SysUserPostMapper userPostMapper;
@Autowired
private ISysConfigService configService;
/**
*
*
* @param user
* @return
*/
@Override
@DataScope(deptAlias = "d", userAlias = "u")
public List<SysUser> selectUserList(SysUser user) {
return userMapper.selectUserList(user);
}
/**
*
*
* @param user
* @return
*/
@Override
@DataScope(deptAlias = "d", userAlias = "u")
public List<SysUser> selectAllocatedList(SysUser user) {
return userMapper.selectAllocatedList(user);
}
/**
*
*
* @param user
* @return
*/
@Override
@DataScope(deptAlias = "d", userAlias = "u")
public List<SysUser> selectUnallocatedList(SysUser user) {
return userMapper.selectUnallocatedList(user);
}
/**
*
*
* @param userName
* @return
*/
@Override
public SysUser selectUserByUserName(String userName) {
return userMapper.selectUserByUserName(userName);
}
/**
* ID
*
* @param userId ID
* @return
*/
@Override
public SysUser selectUserById(Long userId) {
return userMapper.selectUserById(userId);
}
/**
*
*
* @param userName
* @return
*/
@Override
public String selectUserRoleGroup(String userName) {
List<SysRole> list = roleMapper.selectRolesByUserName(userName);
if (CollectionUtils.isEmpty(list)) {
return StringUtils.EMPTY;
}
return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(","));
}
/**
*
*
* @param userName
* @return
*/
@Override
public String selectUserPostGroup(String userName) {
List<SysPost> list = postMapper.selectPostsByUserName(userName);
if (CollectionUtils.isEmpty(list)) {
return StringUtils.EMPTY;
}
return list.stream().map(SysPost::getPostName).collect(Collectors.joining(","));
}
/**
*
*
* @param user
* @return
*/
@Override
public boolean checkUserNameUnique(SysUser user) {
Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
SysUser info = userMapper.checkUserNameUnique(user.getUserName());
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
}
/**
*
*
* @param user
* @return
*/
@Override
public boolean checkPhoneUnique(SysUser user) {
Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber());
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
}
/**
* email
*
* @param user
* @return
*/
@Override
public boolean checkEmailUnique(SysUser user) {
Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
SysUser info = userMapper.checkEmailUnique(user.getEmail());
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
}
/**
*
*
* @param user
*/
@Override
public void checkUserAllowed(SysUser user) {
if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) {
throw new ServiceException("不允许操作超级管理员用户");
}
}
/**
*
*
* @param userId id
*/
@Override
public void checkUserDataScope(Long userId) {
if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
SysUser user = new SysUser();
user.setUserId(userId);
List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);
if (StringUtils.isEmpty(users)) {
throw new ServiceException("没有权限访问用户数据!");
}
}
}
/**
*
*
* @param user
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int insertUser(SysUser user) {
// 新增用户信息
int rows = userMapper.insertUser(user);
// 新增用户岗位关联
insertUserPost(user);
// 新增用户与角色管理
insertUserRole(user);
return rows;
}
/**
*
*
* @param user
* @return
*/
@Override
public boolean registerUser(SysUser user) {
return userMapper.insertUser(user) > 0;
}
/**
*
*
* @param user
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int updateUser(SysUser user) {
Long userId = user.getUserId();
// 删除用户与角色关联
userRoleMapper.deleteUserRoleByUserId(userId);
// 新增用户与角色管理
insertUserRole(user);
// 删除用户与岗位关联
userPostMapper.deleteUserPostByUserId(userId);
// 新增用户与岗位管理
insertUserPost(user);
return userMapper.updateUser(user);
}
/**
*
*
* @param userId ID
* @param roleIds
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void insertUserAuth(Long userId, Long[] roleIds) {
userRoleMapper.deleteUserRoleByUserId(userId);
insertUserRole(userId, roleIds);
}
/**
*
*
* @param user
* @return
*/
@Override
public int updateUserStatus(SysUser user) {
return userMapper.updateUser(user);
}
/**
*
*
* @param user
* @return
*/
@Override
public int updateUserProfile(SysUser user) {
return userMapper.updateUser(user);
}
/**
*
*
* @param userName
* @param avatar
* @return
*/
@Override
public boolean updateUserAvatar(String userName, String avatar) {
return userMapper.updateUserAvatar(userName, avatar) > 0;
}
/**
*
*
* @param user
* @return
*/
@Override
public int resetPwd(SysUser user) {
return userMapper.updateUser(user);
}
/**
*
*
* @param userName
* @param password
* @return
*/
@Override
public int resetUserPwd(String userName, String password) {
return userMapper.resetUserPwd(userName, password);
}
/**
*
*
* @param user
*/
public void insertUserRole(SysUser user) {
this.insertUserRole(user.getUserId(), user.getRoleIds());
}
/**
*
*
* @param user
*/
public void insertUserPost(SysUser user) {
Long[] posts = user.getPostIds();
if (StringUtils.isNotEmpty(posts)) {
// 新增用户与岗位管理
List<SysUserPost> list = new ArrayList<SysUserPost>();
for (Long postId : posts) {
SysUserPost up = new SysUserPost();
up.setUserId(user.getUserId());
up.setPostId(postId);
list.add(up);
}
userPostMapper.batchUserPost(list);
}
}
/**
*
*
* @param userId ID
* @param roleIds
*/
public void insertUserRole(Long userId, Long[] roleIds) {
if (StringUtils.isNotEmpty(roleIds)) {
// 新增用户与角色管理
List<SysUserRole> list = new ArrayList<SysUserRole>();
for (Long roleId : roleIds) {
SysUserRole ur = new SysUserRole();
ur.setUserId(userId);
ur.setRoleId(roleId);
list.add(ur);
}
userRoleMapper.batchUserRole(list);
}
}
/**
* ID
*
* @param userId ID
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int deleteUserById(Long userId) {
// 删除用户与角色关联
userRoleMapper.deleteUserRoleByUserId(userId);
// 删除用户与岗位表
userPostMapper.deleteUserPostByUserId(userId);
return userMapper.deleteUserById(userId);
}
/**
*
*
* @param userIds ID
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int deleteUserByIds(Long[] userIds) {
for (Long userId : userIds) {
checkUserAllowed(new SysUser(userId));
checkUserDataScope(userId);
}
// 删除用户与角色关联
userRoleMapper.deleteUserRole(userIds);
// 删除用户与岗位关联
userPostMapper.deleteUserPost(userIds);
return userMapper.deleteUserByIds(userIds);
}
/**
*
*
* @param userList
* @param isUpdateSupport
* @param operName
* @return
*/
@Override
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName) {
if (StringUtils.isNull(userList) || userList.size() == 0) {
throw new ServiceException("导入用户数据不能为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
String password = configService.selectConfigByKey("sys.user.initPassword");
for (SysUser user : userList) {
try {
// 验证是否存在这个用户
SysUser u = userMapper.selectUserByUserName(user.getUserName());
if (StringUtils.isNull(u)) {
BeanValidators.validateWithException(validator, user);
user.setPassword(SecurityUtils.encryptPassword(password));
user.setCreateBy(operName);
userMapper.insertUser(user);
successNum++;
successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 导入成功");
} else if (isUpdateSupport) {
BeanValidators.validateWithException(validator, user);
checkUserAllowed(u);
checkUserDataScope(u.getUserId());
user.setUserId(u.getUserId());
user.setUpdateBy(operName);
userMapper.updateUser(user);
successNum++;
successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 更新成功");
} else {
failureNum++;
failureMsg.append("<br/>" + failureNum + "、账号 " + user.getUserName() + " 已存在");
}
} catch (Exception e) {
failureNum++;
String msg = "<br/>" + failureNum + "、账号 " + user.getUserName() + " 导入失败:";
failureMsg.append(msg + e.getMessage());
log.error(msg, e);
}
}
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
} else {
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}
}

View File

@ -0,0 +1,2 @@
Spring Boot Version: ${spring-boot.version}
Spring Application Name: ${spring.application.name}

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