假期作业

zmy
chenbingxuan 2024-01-24 08:43:21 +08:00
parent 78e61d89ba
commit a353d1caef
668 changed files with 35500 additions and 59991 deletions

2
.github/FUNDING.yml vendored
View File

@ -1 +1 @@
custom: http://doc.ruoyi.vip/ruoyi-cloud/other/donate.html custom: http://doc.HomeWork.vip/HomeWork-cloud/other/donate.html

View File

@ -1,28 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>HomeWork</groupId>
<artifactId>ruoyi-api</artifactId> <artifactId>HomeWork-api</artifactId>
<version>3.6.3</version> <version>3.6.3</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-api-system</artifactId> <artifactId>HomeWork-api-system</artifactId>
<description> <description>
ruoyi-api-system系统接口模块 HomeWork-api-system系统接口模块
</description> </description>
<dependencies> <dependencies>
<!-- RuoYi Common Core--> <!-- RuoYi Common Core-->
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>HomeWork</groupId>
<artifactId>ruoyi-common-core</artifactId> <artifactId>HomeWork-common-core</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -1,29 +1,29 @@
package com.ruoyi.system.api; package HomeWork.system.api;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.core.constant.ServiceNameConstants; import HomeWork.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R; import HomeWork.common.core.domain.R;
import com.ruoyi.system.api.domain.SysFile; import HomeWork.system.api.domain.SysFile;
import com.ruoyi.system.api.factory.RemoteFileFallbackFactory; import HomeWork.system.api.factory.RemoteFileFallbackFactory;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
@FeignClient(contextId = "remoteFileService", value = ServiceNameConstants.FILE_SERVICE, fallbackFactory = RemoteFileFallbackFactory.class) @FeignClient(contextId = "remoteFileService", value = ServiceNameConstants.FILE_SERVICE, fallbackFactory = RemoteFileFallbackFactory.class)
public interface RemoteFileService public interface RemoteFileService
{ {
/** /**
* *
* *
* @param file * @param file
* @return * @return
*/ */
@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<SysFile> upload(@RequestPart(value = "file") MultipartFile file); public R<SysFile> upload(@RequestPart(value = "file") MultipartFile file);
} }

View File

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

View File

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

View File

@ -1,203 +1,203 @@
package com.ruoyi.system.api.domain; package HomeWork.system.api.domain;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.validation.constraints.Email; import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.web.domain.BaseEntity; import HomeWork.common.core.web.domain.BaseEntity;
/** /**
* sys_dept * sys_dept
* *
* @author ruoyi * @author ruoyi
*/ */
public class SysDept extends BaseEntity public class SysDept extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 部门ID */ /** 部门ID */
private Long deptId; private Long deptId;
/** 父部门ID */ /** 父部门ID */
private Long parentId; private Long parentId;
/** 祖级列表 */ /** 祖级列表 */
private String ancestors; private String ancestors;
/** 部门名称 */ /** 部门名称 */
private String deptName; private String deptName;
/** 显示顺序 */ /** 显示顺序 */
private Integer orderNum; private Integer orderNum;
/** 负责人 */ /** 负责人 */
private String leader; private String leader;
/** 联系电话 */ /** 联系电话 */
private String phone; private String phone;
/** 邮箱 */ /** 邮箱 */
private String email; private String email;
/** 部门状态:0正常,1停用 */ /** 部门状态:0正常,1停用 */
private String status; private String status;
/** 删除标志0代表存在 2代表删除 */ /** 删除标志0代表存在 2代表删除 */
private String delFlag; private String delFlag;
/** 父部门名称 */ /** 父部门名称 */
private String parentName; private String parentName;
/** 子部门 */ /** 子部门 */
private List<SysDept> children = new ArrayList<SysDept>(); private List<SysDept> children = new ArrayList<SysDept>();
public Long getDeptId() public Long getDeptId()
{ {
return deptId; return deptId;
} }
public void setDeptId(Long deptId) public void setDeptId(Long deptId)
{ {
this.deptId = deptId; this.deptId = deptId;
} }
public Long getParentId() public Long getParentId()
{ {
return parentId; return parentId;
} }
public void setParentId(Long parentId) public void setParentId(Long parentId)
{ {
this.parentId = parentId; this.parentId = parentId;
} }
public String getAncestors() public String getAncestors()
{ {
return ancestors; return ancestors;
} }
public void setAncestors(String ancestors) public void setAncestors(String ancestors)
{ {
this.ancestors = ancestors; this.ancestors = ancestors;
} }
@NotBlank(message = "部门名称不能为空") @NotBlank(message = "部门名称不能为空")
@Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符") @Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
public String getDeptName() public String getDeptName()
{ {
return deptName; return deptName;
} }
public void setDeptName(String deptName) public void setDeptName(String deptName)
{ {
this.deptName = deptName; this.deptName = deptName;
} }
@NotNull(message = "显示顺序不能为空") @NotNull(message = "显示顺序不能为空")
public Integer getOrderNum() public Integer getOrderNum()
{ {
return orderNum; return orderNum;
} }
public void setOrderNum(Integer orderNum) public void setOrderNum(Integer orderNum)
{ {
this.orderNum = orderNum; this.orderNum = orderNum;
} }
public String getLeader() public String getLeader()
{ {
return leader; return leader;
} }
public void setLeader(String leader) public void setLeader(String leader)
{ {
this.leader = leader; this.leader = leader;
} }
@Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符") @Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符")
public String getPhone() public String getPhone()
{ {
return phone; return phone;
} }
public void setPhone(String phone) public void setPhone(String phone)
{ {
this.phone = phone; this.phone = phone;
} }
@Email(message = "邮箱格式不正确") @Email(message = "邮箱格式不正确")
@Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符") @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
public String getEmail() public String getEmail()
{ {
return email; return email;
} }
public void setEmail(String email) public void setEmail(String email)
{ {
this.email = email; this.email = email;
} }
public String getStatus() public String getStatus()
{ {
return status; return status;
} }
public void setStatus(String status) public void setStatus(String status)
{ {
this.status = status; this.status = status;
} }
public String getDelFlag() public String getDelFlag()
{ {
return delFlag; return delFlag;
} }
public void setDelFlag(String delFlag) public void setDelFlag(String delFlag)
{ {
this.delFlag = delFlag; this.delFlag = delFlag;
} }
public String getParentName() public String getParentName()
{ {
return parentName; return parentName;
} }
public void setParentName(String parentName) public void setParentName(String parentName)
{ {
this.parentName = parentName; this.parentName = parentName;
} }
public List<SysDept> getChildren() public List<SysDept> getChildren()
{ {
return children; return children;
} }
public void setChildren(List<SysDept> children) public void setChildren(List<SysDept> children)
{ {
this.children = children; this.children = children;
} }
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("deptId", getDeptId()) .append("deptId", getDeptId())
.append("parentId", getParentId()) .append("parentId", getParentId())
.append("ancestors", getAncestors()) .append("ancestors", getAncestors())
.append("deptName", getDeptName()) .append("deptName", getDeptName())
.append("orderNum", getOrderNum()) .append("orderNum", getOrderNum())
.append("leader", getLeader()) .append("leader", getLeader())
.append("phone", getPhone()) .append("phone", getPhone())
.append("email", getEmail()) .append("email", getEmail())
.append("status", getStatus()) .append("status", getStatus())
.append("delFlag", getDelFlag()) .append("delFlag", getDelFlag())
.append("createBy", getCreateBy()) .append("createBy", getCreateBy())
.append("createTime", getCreateTime()) .append("createTime", getCreateTime())
.append("updateBy", getUpdateBy()) .append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime()) .append("updateTime", getUpdateTime())
.toString(); .toString();
} }
} }

View File

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

View File

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

View File

@ -1,50 +1,50 @@
package com.ruoyi.system.api.domain; package HomeWork.system.api.domain;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class SysFile public class SysFile
{ {
/** /**
* *
*/ */
private String name; private String name;
/** /**
* *
*/ */
private String url; private String url;
public String getName() public String getName()
{ {
return name; return name;
} }
public void setName(String name) public void setName(String name)
{ {
this.name = name; this.name = name;
} }
public String getUrl() public String getUrl()
{ {
return url; return url;
} }
public void setUrl(String url) public void setUrl(String url)
{ {
this.url = url; this.url = url;
} }
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("name", getName()) .append("name", getName())
.append("url", getUrl()) .append("url", getUrl())
.toString(); .toString();
} }
} }

View File

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

View File

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

View File

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

View File

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

View File

@ -1,35 +1,35 @@
package com.ruoyi.system.api.factory; package HomeWork.system.api.factory;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.core.domain.R; import HomeWork.common.core.domain.R;
import com.ruoyi.system.api.RemoteFileService; import HomeWork.system.api.RemoteFileService;
import com.ruoyi.system.api.domain.SysFile; import HomeWork.system.api.domain.SysFile;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
@Component @Component
public class RemoteFileFallbackFactory implements FallbackFactory<RemoteFileService> public class RemoteFileFallbackFactory implements FallbackFactory<RemoteFileService>
{ {
private static final Logger log = LoggerFactory.getLogger(RemoteFileFallbackFactory.class); private static final Logger log = LoggerFactory.getLogger(RemoteFileFallbackFactory.class);
@Override @Override
public RemoteFileService create(Throwable throwable) public RemoteFileService create(Throwable throwable)
{ {
log.error("文件服务调用失败:{}", throwable.getMessage()); log.error("文件服务调用失败:{}", throwable.getMessage());
return new RemoteFileService() return new RemoteFileService()
{ {
@Override @Override
public R<SysFile> upload(MultipartFile file) public R<SysFile> upload(MultipartFile file)
{ {
return R.fail("上传文件失败:" + throwable.getMessage()); return R.fail("上传文件失败:" + throwable.getMessage());
} }
}; };
} }
} }

View File

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

View File

@ -1,41 +1,46 @@
package com.ruoyi.system.api.factory; package HomeWork.system.api.factory;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ruoyi.common.core.domain.R; import HomeWork.common.core.domain.R;
import com.ruoyi.system.api.RemoteUserService; import HomeWork.system.api.RemoteUserService;
import com.ruoyi.system.api.domain.SysUser; import HomeWork.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser; import HomeWork.system.api.model.LoginUser;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
@Component @Component
public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserService> public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserService>
{ {
private static final Logger log = LoggerFactory.getLogger(RemoteUserFallbackFactory.class); private static final Logger log = LoggerFactory.getLogger(RemoteUserFallbackFactory.class);
@Override @Override
public RemoteUserService create(Throwable throwable) public RemoteUserService create(Throwable throwable)
{ {
log.error("用户服务调用失败:{}", throwable.getMessage()); log.error("用户服务调用失败:{}", throwable.getMessage());
return new RemoteUserService() return new RemoteUserService()
{ {
@Override @Override
public R<LoginUser> getUserInfo(String username, String source) public R<LoginUser> getUserInfo(String username, String source)
{ {
return R.fail("获取用户失败:" + throwable.getMessage()); return R.fail("获取用户失败:" + throwable.getMessage());
} }
@Override @Override
public R<Boolean> registerUserInfo(SysUser sysUser, String source) public R<Boolean> registerUserInfo(SysUser sysUser, String source)
{ {
return R.fail("注册用户失败:" + throwable.getMessage()); return R.fail("注册用户失败:" + throwable.getMessage());
} }
};
} @Override
} public R<LoginUser> faceLogin(String url) throws Exception {
return R.fail("人脸登录失败:" + throwable.getMessage());
}
};
}
}

View File

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

View File

@ -0,0 +1,3 @@
HomeWork.system.api.factory.RemoteUserFallbackFactory
HomeWork.system.api.factory.RemoteLogFallbackFactory
HomeWork.system.api.factory.RemoteFileFallbackFactory

View File

@ -1,22 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>HomeWork</groupId>
<artifactId>ruoyi</artifactId> <artifactId>HomeWork</artifactId>
<version>3.6.3</version> <version>3.6.3</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<modules> <modules>
<module>ruoyi-api-system</module> <module>HomeWork-api-system</module>
</modules> </modules>
<artifactId>ruoyi-api</artifactId> <artifactId>HomeWork-api</artifactId>
<packaging>pom</packaging> <packaging>pom</packaging>
<description> <description>
ruoyi-api系统接口 HomeWork-api系统接口
</description> </description>
</project> </project>

View File

@ -1,74 +1,87 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>HomeWork</groupId>
<artifactId>ruoyi</artifactId> <artifactId>HomeWork</artifactId>
<version>3.6.3</version> <version>3.6.3</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-auth</artifactId> <artifactId>HomeWork-auth</artifactId>
<description> <description>
ruoyi-auth认证授权中心 HomeWork-auth认证授权中心
</description> </description>
<dependencies> <dependencies>
<!-- SpringCloud Alibaba Nacos --> <!-- Oss上传 -->
<dependency> <dependency>
<groupId>com.alibaba.cloud</groupId> <groupId>com.aliyun.oss</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <artifactId>aliyun-sdk-oss</artifactId>
</dependency> <version>3.10.2</version>
</dependency>
<!-- SpringCloud Alibaba Nacos Config -->
<dependency> <!-- SpringCloud Alibaba Nacos -->
<groupId>com.alibaba.cloud</groupId> <dependency>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <groupId>com.alibaba.cloud</groupId>
</dependency> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Alibaba Sentinel -->
<dependency> <!-- SpringCloud Alibaba Nacos Config -->
<groupId>com.alibaba.cloud</groupId> <dependency>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> <groupId>com.alibaba.cloud</groupId>
</dependency> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- SpringBoot Web -->
<dependency> <!-- SpringCloud Alibaba Sentinel -->
<groupId>org.springframework.boot</groupId> <dependency>
<artifactId>spring-boot-starter-web</artifactId> <groupId>com.alibaba.cloud</groupId>
</dependency> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!-- SpringBoot Actuator -->
<dependency> <!-- SpringBoot Web -->
<groupId>org.springframework.boot</groupId> <dependency>
<artifactId>spring-boot-starter-actuator</artifactId> <groupId>org.springframework.boot</groupId>
</dependency> <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- RuoYi Common Security-->
<dependency> <!-- SpringBoot Actuator -->
<groupId>com.ruoyi</groupId> <dependency>
<artifactId>ruoyi-common-security</artifactId> <groupId>org.springframework.boot</groupId>
</dependency> <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<!-- RuoYi Common Security-->
<build> <dependency>
<finalName>${project.artifactId}</finalName> <groupId>HomeWork</groupId>
<plugins> <artifactId>HomeWork-common-security</artifactId>
<plugin> </dependency>
<groupId>org.springframework.boot</groupId> <!--lombok依赖-->
<artifactId>spring-boot-maven-plugin</artifactId> <dependency>
<executions> <groupId>org.projectlombok</groupId>
<execution> <artifactId>lombok</artifactId>
<goals> </dependency>
<goal>repackage</goal>
</goals>
</execution> </dependencies>
</executions>
</plugin> <build>
</plugins> <finalName>${project.artifactId}</finalName>
</build> <plugins>
<plugin>
</project> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -1,31 +1,31 @@
package com.ruoyi.auth; package HomeWork.auth;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import com.ruoyi.common.security.annotation.EnableRyFeignClients; import HomeWork.common.security.annotation.EnableRyFeignClients;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
@EnableRyFeignClients @EnableRyFeignClients
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class }) @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
public class RuoYiAuthApplication public class HomeWorkAuthApplication
{ {
public static void main(String[] args) public static void main(String[] args)
{ {
SpringApplication.run(RuoYiAuthApplication.class, args); SpringApplication.run(HomeWorkAuthApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 认证授权中心启动成功 ლ(´ڡ`ლ)゙ \n" + System.out.println("(♥◠‿◠)ノ゙ 认证授权中心启动成功 ლ(´ڡ`ლ)゙ \n" +
" .-------. ____ __ \n" + " .-------. ____ __ \n" +
" | _ _ \\ \\ \\ / / \n" + " | _ _ \\ \\ \\ / / \n" +
" | ( ' ) | \\ _. / ' \n" + " | ( ' ) | \\ _. / ' \n" +
" |(_ o _) / _( )_ .' \n" + " |(_ o _) / _( )_ .' \n" +
" | (_,_).' __ ___(_ o _)' \n" + " | (_,_).' __ ___(_ o _)' \n" +
" | |\\ \\ | || |(_,_)' \n" + " | |\\ \\ | || |(_,_)' \n" +
" | | \\ `' /| `-' / \n" + " | | \\ `' /| `-' / \n" +
" | | \\ / \\ / \n" + " | | \\ / \\ / \n" +
" ''-' `'-' `-..-' "); " ''-' `'-' `-..-' ");
} }
} }

View File

@ -1,78 +1,87 @@
package com.ruoyi.auth.controller; package HomeWork.auth.controller;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping; import HomeWork.auth.form.LoginBody;
import org.springframework.web.bind.annotation.RequestBody; import HomeWork.auth.form.RegisterBody;
import org.springframework.web.bind.annotation.RestController; import HomeWork.auth.service.SysLoginService;
import com.ruoyi.auth.form.LoginBody; import HomeWork.common.core.domain.R;
import com.ruoyi.auth.form.RegisterBody; import HomeWork.common.core.utils.JwtUtils;
import com.ruoyi.auth.service.SysLoginService; import HomeWork.common.core.utils.StringUtils;
import com.ruoyi.common.core.domain.R; import HomeWork.common.security.auth.AuthUtil;
import com.ruoyi.common.core.utils.JwtUtils; import HomeWork.common.security.service.TokenService;
import com.ruoyi.common.core.utils.StringUtils; import HomeWork.common.security.utils.SecurityUtils;
import com.ruoyi.common.security.auth.AuthUtil; import HomeWork.system.api.model.LoginUser;
import com.ruoyi.common.security.service.TokenService; import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.model.LoginUser; /**
* token
/** *
* token * @author ruoyi
* */
* @author ruoyi @RestController
*/ public class TokenController
@RestController {
public class TokenController @Autowired
{ private TokenService tokenService;
@Autowired
private TokenService tokenService; @Autowired
private SysLoginService sysLoginService;
@Autowired
private SysLoginService sysLoginService; @PostMapping("login")
public R<?> login(@RequestBody LoginBody form)
@PostMapping("login") {
public R<?> login(@RequestBody LoginBody form) // 用户登录
{ LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword());
// 用户登录 // 获取登录token
LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword()); return R.ok(tokenService.createToken(userInfo));
// 获取登录token }
return R.ok(tokenService.createToken(userInfo));
} @PostMapping("faceLogin")
public R<?> login(@RequestParam MultipartFile file)
@DeleteMapping("logout") {
public R<?> logout(HttpServletRequest request) // 用户登录
{ LoginUser userInfo = sysLoginService.faceLogin(file);
String token = SecurityUtils.getToken(request); // 获取登录token
if (StringUtils.isNotEmpty(token)) return R.ok(tokenService.createToken(userInfo));
{ }
String username = JwtUtils.getUserName(token);
// 删除用户缓存记录
AuthUtil.logoutByToken(token);
// 记录用户退出日志 @DeleteMapping("logout")
sysLoginService.logout(username); public R<?> logout(HttpServletRequest request)
} {
return R.ok(); String token = SecurityUtils.getToken(request);
} if (StringUtils.isNotEmpty(token))
{
@PostMapping("refresh") String username = JwtUtils.getUserName(token);
public R<?> refresh(HttpServletRequest request) // 删除用户缓存记录
{ AuthUtil.logoutByToken(token);
LoginUser loginUser = tokenService.getLoginUser(request); // 记录用户退出日志
if (StringUtils.isNotNull(loginUser)) sysLoginService.logout(username);
{ }
// 刷新令牌有效期 return R.ok();
tokenService.refreshToken(loginUser); }
return R.ok();
} @PostMapping("refresh")
return R.ok(); public R<?> refresh(HttpServletRequest request)
} {
LoginUser loginUser = tokenService.getLoginUser(request);
@PostMapping("register") if (StringUtils.isNotNull(loginUser))
public R<?> register(@RequestBody RegisterBody registerBody) {
{ // 刷新令牌有效期
// 用户注册 tokenService.refreshToken(loginUser);
sysLoginService.register(registerBody.getUsername(), registerBody.getPassword()); return R.ok();
return R.ok(); }
} return R.ok();
} }
@PostMapping("register")
public R<?> register(@RequestBody RegisterBody registerBody)
{
// 用户注册
sysLoginService.register(registerBody.getUsername(), registerBody.getPassword());
return R.ok();
}
}

View File

@ -1,4 +1,4 @@
package com.ruoyi.auth.form; package HomeWork.auth.form;
/** /**
* *

View File

@ -1,11 +1,11 @@
package com.ruoyi.auth.form; package HomeWork.auth.form;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class RegisterBody extends LoginBody public class RegisterBody extends LoginBody
{ {
} }

View File

@ -1,26 +1,28 @@
package com.ruoyi.auth.service; package HomeWork.auth.service;
import HomeWork.auth.util.OssUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ruoyi.common.core.constant.CacheConstants; import HomeWork.common.core.constant.CacheConstants;
import com.ruoyi.common.core.constant.Constants; import HomeWork.common.core.constant.Constants;
import com.ruoyi.common.core.constant.SecurityConstants; import HomeWork.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.UserConstants; import HomeWork.common.core.constant.UserConstants;
import com.ruoyi.common.core.domain.R; import HomeWork.common.core.domain.R;
import com.ruoyi.common.core.enums.UserStatus; import HomeWork.common.core.enums.UserStatus;
import com.ruoyi.common.core.exception.ServiceException; import HomeWork.common.core.exception.ServiceException;
import com.ruoyi.common.core.text.Convert; import HomeWork.common.core.text.Convert;
import com.ruoyi.common.core.utils.StringUtils; import HomeWork.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.ip.IpUtils; import HomeWork.common.core.utils.ip.IpUtils;
import com.ruoyi.common.redis.service.RedisService; import HomeWork.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.SecurityUtils; import HomeWork.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.RemoteUserService; import HomeWork.system.api.RemoteUserService;
import com.ruoyi.system.api.domain.SysUser; import HomeWork.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser; import HomeWork.system.api.model.LoginUser;
import org.springframework.web.multipart.MultipartFile;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
@Component @Component
@ -83,7 +85,7 @@ public class SysLoginService
{ {
throw new ServiceException(userResult.getMsg()); throw new ServiceException(userResult.getMsg());
} }
LoginUser userInfo = userResult.getData(); LoginUser userInfo = userResult.getData();
SysUser user = userResult.getData().getSysUser(); SysUser user = userResult.getData().getSysUser();
if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
@ -140,4 +142,9 @@ public class SysLoginService
} }
recordLogService.recordLogininfor(username, Constants.REGISTER, "注册成功"); recordLogService.recordLogininfor(username, Constants.REGISTER, "注册成功");
} }
public LoginUser faceLogin(MultipartFile file) {
String s = OssUtil.uploadMultipartFile(file);
return null;
}
} }

View File

@ -1,14 +1,14 @@
package com.ruoyi.auth.service; package HomeWork.auth.service;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ruoyi.common.core.constant.CacheConstants; import HomeWork.common.core.constant.CacheConstants;
import com.ruoyi.common.core.constant.Constants; import HomeWork.common.core.constant.Constants;
import com.ruoyi.common.core.exception.ServiceException; import HomeWork.common.core.exception.ServiceException;
import com.ruoyi.common.redis.service.RedisService; import HomeWork.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.SecurityUtils; import HomeWork.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser; import HomeWork.system.api.domain.SysUser;
/** /**
* *

View File

@ -1,13 +1,13 @@
package com.ruoyi.auth.service; package HomeWork.auth.service;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ruoyi.common.core.constant.Constants; import HomeWork.common.core.constant.Constants;
import com.ruoyi.common.core.constant.SecurityConstants; import HomeWork.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.utils.StringUtils; import HomeWork.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.ip.IpUtils; import HomeWork.common.core.utils.ip.IpUtils;
import com.ruoyi.system.api.RemoteLogService; import HomeWork.system.api.RemoteLogService;
import com.ruoyi.system.api.domain.SysLogininfor; import HomeWork.system.api.domain.SysLogininfor;
/** /**
* *

View File

@ -0,0 +1,154 @@
package HomeWork.auth.util;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.PutObjectRequest;
import lombok.extern.log4j.Log4j2;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.time.LocalDateTime;
import java.util.UUID;
/**
* Oss
*/
@Log4j2
public class OssUtil {
/**
* Endpoint AccessKeyaccessKeySecretAPI访 访
*/
private static String endPoint = "oss-cn-shanghai.aliyuncs.com";
private static String accessKeyId = "LTAI5tLE4XbyvvbuT7D2stCk";
private static String accessKeySecret = "W7ZeT4dMrMPP0c8BBwcyIPnhe3P4E8";
private static String accessPre = "https://lyb1314.oss-cn-shanghai.aliyuncs.com/";
/**
* bucket
* @return
*/
private static String bucketName = "lyb1314";
private static OSS ossClient ;
static {
ossClient = new OSSClientBuilder().build(
endPoint,
accessKeyId,
accessKeySecret);
log.info("oss服务连接成功");
}
/**
*
* @param filePath
*/
public static String uploadFile(String filePath){
return uploadFileForBucket(bucketName,getOssFilePath(filePath) ,filePath);
}
/**
* multipartFile
* @param multipartFile
*/
public static String uploadMultipartFile(MultipartFile multipartFile) {
return uploadMultipartFile(bucketName,getOssFilePath(multipartFile.getOriginalFilename()),multipartFile);
}
/**
* multipartFile
* @param bucketName
* @param ossPath
* @param multipartFile
*/
public static String uploadMultipartFile(String bucketName , String ossPath , MultipartFile multipartFile){
InputStream inputStream = null;
try {
inputStream = multipartFile.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
uploadFileInputStreamForBucket(bucketName, ossPath, inputStream);
return accessPre+ossPath;
}
/**
* 使FilePutObject ** 使
* @param bucketName
* @param ossPath oss
* @param filePath
*/
public static String uploadFileForBucket(String bucketName , String ossPath , String filePath) {
// 创建PutObjectRequest对象。
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, ossPath, new File(filePath));
// 上传
ossClient.putObject(putObjectRequest);
return accessPre+ossPath;
}
/**
* 使bucket
* @param bucketName
* @param ossPath oss
* @param filePath
*/
public static String uploadFileInputStreamForBucket(String bucketName , String ossPath , String filePath){
// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
InputStream inputStream = null;
try {
inputStream = new FileInputStream(filePath);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 填写Bucket名称和Object完整路径。Object完整路径中不能包含Bucket名称。
uploadFileInputStreamForBucket(bucketName, ossPath, inputStream);
return accessPre+ossPath;
}
public static void uploadFileInputStreamForBucket(String bucketName , String ossPath , InputStream inputStream ){
ossClient.putObject(bucketName, ossPath, inputStream);
}
/**
*
* @param ossFilePath
* @param filePath
*/
public static void downloadFile(String ossFilePath , String filePath ){
downloadFileForBucket(bucketName , ossFilePath , filePath);
}
/**
*
* @param bucketName
* @param ossFilePath oss
* @param filePath
*/
public static void downloadFileForBucket(String bucketName , String ossFilePath , String filePath ){
ossClient.getObject(new GetObjectRequest(bucketName, ossFilePath), new File(filePath));
}
/**
*
* @return
*/
public static String getOssDefaultPath(){
LocalDateTime now = LocalDateTime.now();
String url =
now.getYear()+"/"+
now.getMonth()+"/"+
now.getDayOfMonth()+"/"+
now.getHour()+"/"+
now.getMinute()+"/";
return url;
}
public static String getOssFilePath(String filePath){
String fileSuf = filePath.substring(filePath.indexOf(".") + 1);
return getOssDefaultPath() + UUID.randomUUID().toString() + "." + fileSuf;
}
}

View File

@ -1,10 +1,10 @@
Spring Boot Version: ${spring-boot.version} Spring Boot Version: ${spring-boot.version}
Spring Application Name: ${spring.application.name} Spring Application Name: ${spring.application.name}
_ _ _ _ _ _
(_) | | | | (_) | | | |
_ __ _ _ ___ _ _ _ ______ __ _ _ _ | |_ | |__ _ __ _ _ ___ _ _ _ ______ __ _ _ _ | |_ | |__
| '__|| | | | / _ \ | | | || ||______| / _` || | | || __|| '_ \ | '__|| | | | / _ \ | | | || ||______| / _` || | | || __|| '_ \
| | | |_| || (_) || |_| || | | (_| || |_| || |_ | | | | | | | |_| || (_) || |_| || | | (_| || |_| || |_ | | | |
|_| \__,_| \___/ \__, ||_| \__,_| \__,_| \__||_| |_| |_| \__,_| \___/ \__, ||_| \__,_| \__,_| \__||_| |_|
__/ | __/ |
|___/ |___/

View File

@ -1,25 +1,27 @@
# Tomcat # Tomcat
server: server:
port: 9200 port: 9200
# Spring # Spring
spring: spring:
application: application:
# 应用名称 # 应用名称
name: ruoyi-auth name: HomeWork-auth
profiles: profiles:
# 环境配置 # 环境配置
active: dev active: dev
cloud: cloud:
nacos: nacos:
discovery: discovery:
# 服务注册地址 # 服务注册地址
server-addr: 127.0.0.1:8848 server-addr: 101.34.77.101:8848
config: namespace: 20041112
# 配置中心地址 config:
server-addr: 127.0.0.1:8848 # 配置中心地址
# 配置文件格式 server-addr: 101.34.77.101:8848
file-extension: yml namespace: 20041112
# 共享配置 # 配置文件格式
shared-configs: file-extension: yml
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} # 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false"> <configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 日志存放路径 --> <!-- 日志存放路径 -->
<property name="log.path" value="logs/ruoyi-gateway" /> <property name="log.path" value="logs/HomeWork-auth" />
<!-- 日志输出格式 --> <!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /> <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
@ -58,7 +58,7 @@
</appender> </appender>
<!-- 系统模块日志级别控制 --> <!-- 系统模块日志级别控制 -->
<logger name="com.ruoyi" level="info" /> <logger name="HomeWork" level="info" />
<!-- Spring日志级别控制 --> <!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn" /> <logger name="org.springframework" level="warn" />

View File

@ -1,118 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<groupId>com.ruoyi</groupId> <groupId>HomeWork</groupId>
<artifactId>ruoyi-common</artifactId> <artifactId>HomeWork-common</artifactId>
<version>3.6.3</version> <version>3.6.3</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-common-core</artifactId> <artifactId>HomeWork-common-core</artifactId>
<description> <description>
ruoyi-common-core核心模块 HomeWork-common-core核心模块
</description> </description>
<dependencies> <dependencies>
<!-- SpringCloud Openfeign --> <!-- SpringCloud Openfeign -->
<dependency> <dependency>
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId> <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency> </dependency>
<!-- SpringCloud Loadbalancer --> <!-- SpringCloud Loadbalancer -->
<dependency> <dependency>
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId> <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency> </dependency>
<!-- Spring Context Support --> <!-- Spring Context Support -->
<dependency> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId> <artifactId>spring-context-support</artifactId>
</dependency> </dependency>
<!-- Spring Web --> <!-- Spring Web -->
<dependency> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId> <artifactId>spring-web</artifactId>
</dependency> </dependency>
<!-- Transmittable ThreadLocal --> <!-- Transmittable ThreadLocal -->
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>transmittable-thread-local</artifactId> <artifactId>transmittable-thread-local</artifactId>
</dependency> </dependency>
<!-- Pagehelper --> <!-- Pagehelper -->
<dependency> <dependency>
<groupId>com.github.pagehelper</groupId> <groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId> <artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency> </dependency>
<!-- Hibernate Validator --> <!-- Hibernate Validator -->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId> <artifactId>spring-boot-starter-validation</artifactId>
</dependency> </dependency>
<!-- Jackson --> <!-- Jackson -->
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId> <artifactId>jackson-databind</artifactId>
</dependency> </dependency>
<!-- Alibaba Fastjson --> <!-- Alibaba Fastjson -->
<dependency> <dependency>
<groupId>com.alibaba.fastjson2</groupId> <groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId> <artifactId>fastjson2</artifactId>
</dependency> </dependency>
<!-- Jwt --> <!-- Jwt -->
<dependency> <dependency>
<groupId>io.jsonwebtoken</groupId> <groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId> <artifactId>jjwt</artifactId>
</dependency> </dependency>
<!-- Jaxb --> <!-- Jaxb -->
<dependency> <dependency>
<groupId>javax.xml.bind</groupId> <groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId> <artifactId>jaxb-api</artifactId>
</dependency> </dependency>
<!-- Apache Lang3 --> <!-- Apache Lang3 -->
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId> <artifactId>commons-lang3</artifactId>
</dependency> </dependency>
<!-- Commons Io --> <!-- Commons Io -->
<dependency> <dependency>
<groupId>commons-io</groupId> <groupId>commons-io</groupId>
<artifactId>commons-io</artifactId> <artifactId>commons-io</artifactId>
</dependency> </dependency>
<!-- excel工具 --> <!-- excel工具 -->
<dependency> <dependency>
<groupId>org.apache.poi</groupId> <groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId> <artifactId>poi-ooxml</artifactId>
</dependency> </dependency>
<!-- Java Servlet --> <!-- Java Servlet -->
<dependency> <dependency>
<groupId>javax.servlet</groupId> <groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId> <artifactId>javax.servlet-api</artifactId>
</dependency> </dependency>
<!-- Swagger --> <!-- Swagger -->
<dependency> <dependency>
<groupId>io.swagger</groupId> <groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId> <artifactId>swagger-annotations</artifactId>
</dependency> </dependency>
</dependencies>
</dependencies>
</project>
</project>

View File

@ -1,182 +1,182 @@
package com.ruoyi.common.core.annotation; package HomeWork.common.core.annotation;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;
import java.math.BigDecimal; import java.math.BigDecimal;
import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.IndexedColors;
import com.ruoyi.common.core.utils.poi.ExcelHandlerAdapter; import HomeWork.common.core.utils.poi.ExcelHandlerAdapter;
/** /**
* Excel * Excel
* *
* @author ruoyi * @author ruoyi
*/ */
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD) @Target(ElementType.FIELD)
public @interface Excel public @interface Excel
{ {
/** /**
* excel * excel
*/ */
public int sort() default Integer.MAX_VALUE; public int sort() default Integer.MAX_VALUE;
/** /**
* Excel. * Excel.
*/ */
public String name() default ""; public String name() default "";
/** /**
* , : yyyy-MM-dd * , : yyyy-MM-dd
*/ */
public String dateFormat() default ""; public String dateFormat() default "";
/** /**
* (: 0=,1=,2=) * (: 0=,1=,2=)
*/ */
public String readConverterExp() default ""; public String readConverterExp() default "";
/** /**
* *
*/ */
public String separator() default ","; public String separator() default ",";
/** /**
* BigDecimal :-1(BigDecimal) * BigDecimal :-1(BigDecimal)
*/ */
public int scale() default -1; public int scale() default -1;
/** /**
* BigDecimal :BigDecimal.ROUND_HALF_EVEN * BigDecimal :BigDecimal.ROUND_HALF_EVEN
*/ */
public int roundingMode() default BigDecimal.ROUND_HALF_EVEN; public int roundingMode() default BigDecimal.ROUND_HALF_EVEN;
/** /**
* excel * excel
*/ */
public double height() default 14; public double height() default 14;
/** /**
* excel * excel
*/ */
public double width() default 16; public double width() default 16;
/** /**
* ,% 90 90% * ,% 90 90%
*/ */
public String suffix() default ""; public String suffix() default "";
/** /**
* , * ,
*/ */
public String defaultValue() default ""; public String defaultValue() default "";
/** /**
* *
*/ */
public String prompt() default ""; public String prompt() default "";
/** /**
* . * .
*/ */
public String[] combo() default {}; public String[] combo() default {};
/** /**
* ,:list) * ,:list)
*/ */
public boolean needMerge() default false; public boolean needMerge() default false;
/** /**
* ,:,. * ,:,.
*/ */
public boolean isExport() default true; public boolean isExport() default true;
/** /**
* ,, * ,,
*/ */
public String targetAttr() default ""; public String targetAttr() default "";
/** /**
* , * ,
*/ */
public boolean isStatistics() default false; public boolean isStatistics() default false;
/** /**
* 0 1 * 0 1
*/ */
public ColumnType cellType() default ColumnType.STRING; public ColumnType cellType() default ColumnType.STRING;
/** /**
* *
*/ */
public IndexedColors headerBackgroundColor() default IndexedColors.GREY_50_PERCENT; public IndexedColors headerBackgroundColor() default IndexedColors.GREY_50_PERCENT;
/** /**
* *
*/ */
public IndexedColors headerColor() default IndexedColors.WHITE; public IndexedColors headerColor() default IndexedColors.WHITE;
/** /**
* *
*/ */
public IndexedColors backgroundColor() default IndexedColors.WHITE; public IndexedColors backgroundColor() default IndexedColors.WHITE;
/** /**
* *
*/ */
public IndexedColors color() default IndexedColors.BLACK; public IndexedColors color() default IndexedColors.BLACK;
/** /**
* *
*/ */
public HorizontalAlignment align() default HorizontalAlignment.CENTER; public HorizontalAlignment align() default HorizontalAlignment.CENTER;
/** /**
* *
*/ */
public Class<?> handler() default ExcelHandlerAdapter.class; public Class<?> handler() default ExcelHandlerAdapter.class;
/** /**
* *
*/ */
public String[] args() default {}; public String[] args() default {};
/** /**
* 012 * 012
*/ */
Type type() default Type.ALL; Type type() default Type.ALL;
public enum Type public enum Type
{ {
ALL(0), EXPORT(1), IMPORT(2); ALL(0), EXPORT(1), IMPORT(2);
private final int value; private final int value;
Type(int value) Type(int value)
{ {
this.value = value; this.value = value;
} }
public int value() public int value()
{ {
return this.value; return this.value;
} }
} }
public enum ColumnType public enum ColumnType
{ {
NUMERIC(0), STRING(1), IMAGE(2); NUMERIC(0), STRING(1), IMAGE(2);
private final int value; private final int value;
ColumnType(int value) ColumnType(int value)
{ {
this.value = value; this.value = value;
} }
public int value() public int value()
{ {
return this.value; return this.value;
} }
} }
} }

View File

@ -1,18 +1,18 @@
package com.ruoyi.common.core.annotation; package HomeWork.common.core.annotation;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;
/** /**
* Excel * Excel
* *
* @author ruoyi * @author ruoyi
*/ */
@Target(ElementType.FIELD) @Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
public @interface Excels public @interface Excels
{ {
Excel[] value(); Excel[] value();
} }

View File

@ -1,59 +1,59 @@
package com.ruoyi.common.core.constant; package HomeWork.common.core.constant;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class CacheConstants public class CacheConstants
{ {
/** /**
* 720 * 720
*/ */
public final static long EXPIRATION = 720; public final static long EXPIRATION = 720;
/** /**
* 120 * 120
*/ */
public final static long REFRESH_TIME = 120; public final static long REFRESH_TIME = 120;
/** /**
* *
*/ */
public final static int PASSWORD_MAX_RETRY_COUNT = 5; public final static int PASSWORD_MAX_RETRY_COUNT = 5;
/** /**
* 10 * 10
*/ */
public final static long PASSWORD_LOCK_TIME = 10; public final static long PASSWORD_LOCK_TIME = 10;
/** /**
* *
*/ */
public final static String LOGIN_TOKEN_KEY = "login_tokens:"; public final static String LOGIN_TOKEN_KEY = "login_tokens:";
/** /**
* redis key * redis key
*/ */
public static final String CAPTCHA_CODE_KEY = "captcha_codes:"; public static final String CAPTCHA_CODE_KEY = "captcha_codes:";
/** /**
* cache key * cache key
*/ */
public static final String SYS_CONFIG_KEY = "sys_config:"; public static final String SYS_CONFIG_KEY = "sys_config:";
/** /**
* cache key * cache key
*/ */
public static final String SYS_DICT_KEY = "sys_dict:"; public static final String SYS_DICT_KEY = "sys_dict:";
/** /**
* redis key * redis key
*/ */
public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:"; public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:";
/** /**
* IP cache key * IP cache key
*/ */
public static final String SYS_LOGIN_BLACKIPLIST = SYS_CONFIG_KEY + "sys.login.blackIPList"; public static final String SYS_LOGIN_BLACKIPLIST = SYS_CONFIG_KEY + "sys.login.blackIPList";
} }

View File

@ -1,135 +1,135 @@
package com.ruoyi.common.core.constant; package HomeWork.common.core.constant;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class Constants public class Constants
{ {
/** /**
* UTF-8 * UTF-8
*/ */
public static final String UTF8 = "UTF-8"; public static final String UTF8 = "UTF-8";
/** /**
* GBK * GBK
*/ */
public static final String GBK = "GBK"; public static final String GBK = "GBK";
/** /**
* www * www
*/ */
public static final String WWW = "www."; public static final String WWW = "www.";
/** /**
* RMI * RMI
*/ */
public static final String LOOKUP_RMI = "rmi:"; public static final String LOOKUP_RMI = "rmi:";
/** /**
* LDAP * LDAP
*/ */
public static final String LOOKUP_LDAP = "ldap:"; public static final String LOOKUP_LDAP = "ldap:";
/** /**
* LDAPS * LDAPS
*/ */
public static final String LOOKUP_LDAPS = "ldaps:"; public static final String LOOKUP_LDAPS = "ldaps:";
/** /**
* http * http
*/ */
public static final String HTTP = "http://"; public static final String HTTP = "http://";
/** /**
* https * https
*/ */
public static final String HTTPS = "https://"; public static final String HTTPS = "https://";
/** /**
* *
*/ */
public static final Integer SUCCESS = 200; public static final Integer SUCCESS = 200;
/** /**
* *
*/ */
public static final Integer FAIL = 500; public static final Integer FAIL = 500;
/** /**
* *
*/ */
public static final String LOGIN_SUCCESS_STATUS = "0"; public static final String LOGIN_SUCCESS_STATUS = "0";
/** /**
* *
*/ */
public static final String LOGIN_FAIL_STATUS = "1"; public static final String LOGIN_FAIL_STATUS = "1";
/** /**
* *
*/ */
public static final String LOGIN_SUCCESS = "Success"; public static final String LOGIN_SUCCESS = "Success";
/** /**
* *
*/ */
public static final String LOGOUT = "Logout"; public static final String LOGOUT = "Logout";
/** /**
* *
*/ */
public static final String REGISTER = "Register"; public static final String REGISTER = "Register";
/** /**
* *
*/ */
public static final String LOGIN_FAIL = "Error"; public static final String LOGIN_FAIL = "Error";
/** /**
* *
*/ */
public static final String PAGE_NUM = "pageNum"; public static final String PAGE_NUM = "pageNum";
/** /**
* *
*/ */
public static final String PAGE_SIZE = "pageSize"; public static final String PAGE_SIZE = "pageSize";
/** /**
* *
*/ */
public static final String ORDER_BY_COLUMN = "orderByColumn"; public static final String ORDER_BY_COLUMN = "orderByColumn";
/** /**
* "desc" "asc". * "desc" "asc".
*/ */
public static final String IS_ASC = "isAsc"; public static final String IS_ASC = "isAsc";
/** /**
* *
*/ */
public static final long CAPTCHA_EXPIRATION = 2; public static final long CAPTCHA_EXPIRATION = 2;
/** /**
* *
*/ */
public static final String RESOURCE_PREFIX = "/profile"; public static final String RESOURCE_PREFIX = "/profile";
/** /**
* json * json
*/ */
public static final String[] JSON_WHITELIST_STR = { "org.springframework", "com.ruoyi" }; public static final String[] JSON_WHITELIST_STR = { "org.springframework", "HomeWork" };
/** /**
* 访 * 访
*/ */
public static final String[] JOB_WHITELIST_STR = { "com.ruoyi" }; public static final String[] JOB_WHITELIST_STR = { "HomeWork" };
/** /**
* *
*/ */
public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml", public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
"org.springframework", "org.apache", "com.ruoyi.common.core.utils.file" }; "org.springframework", "org.apache", "HomeWork.common.core.utils.file" };
} }

View File

@ -1,117 +1,117 @@
package com.ruoyi.common.core.constant; package HomeWork.common.core.constant;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class GenConstants public class GenConstants
{ {
/** 单表(增删改查) */ /** 单表(增删改查) */
public static final String TPL_CRUD = "crud"; public static final String TPL_CRUD = "crud";
/** 树表(增删改查) */ /** 树表(增删改查) */
public static final String TPL_TREE = "tree"; public static final String TPL_TREE = "tree";
/** 主子表(增删改查) */ /** 主子表(增删改查) */
public static final String TPL_SUB = "sub"; public static final String TPL_SUB = "sub";
/** 树编码字段 */ /** 树编码字段 */
public static final String TREE_CODE = "treeCode"; public static final String TREE_CODE = "treeCode";
/** 树父编码字段 */ /** 树父编码字段 */
public static final String TREE_PARENT_CODE = "treeParentCode"; public static final String TREE_PARENT_CODE = "treeParentCode";
/** 树名称字段 */ /** 树名称字段 */
public static final String TREE_NAME = "treeName"; public static final String TREE_NAME = "treeName";
/** 上级菜单ID字段 */ /** 上级菜单ID字段 */
public static final String PARENT_MENU_ID = "parentMenuId"; public static final String PARENT_MENU_ID = "parentMenuId";
/** 上级菜单名称字段 */ /** 上级菜单名称字段 */
public static final String PARENT_MENU_NAME = "parentMenuName"; public static final String PARENT_MENU_NAME = "parentMenuName";
/** 数据库字符串类型 */ /** 数据库字符串类型 */
public static final String[] COLUMNTYPE_STR = { "char", "varchar", "nvarchar", "varchar2" }; public static final String[] COLUMNTYPE_STR = { "char", "varchar", "nvarchar", "varchar2" };
/** 数据库文本类型 */ /** 数据库文本类型 */
public static final String[] COLUMNTYPE_TEXT = { "tinytext", "text", "mediumtext", "longtext" }; public static final String[] COLUMNTYPE_TEXT = { "tinytext", "text", "mediumtext", "longtext" };
/** 数据库时间类型 */ /** 数据库时间类型 */
public static final String[] COLUMNTYPE_TIME = { "datetime", "time", "date", "timestamp" }; public static final String[] COLUMNTYPE_TIME = { "datetime", "time", "date", "timestamp" };
/** 数据库数字类型 */ /** 数据库数字类型 */
public static final String[] COLUMNTYPE_NUMBER = { "tinyint", "smallint", "mediumint", "int", "number", "integer", public static final String[] COLUMNTYPE_NUMBER = { "tinyint", "smallint", "mediumint", "int", "number", "integer",
"bigint", "float", "double", "decimal" }; "bigint", "float", "double", "decimal" };
/** 页面不需要编辑字段 */ /** 页面不需要编辑字段 */
public static final String[] COLUMNNAME_NOT_EDIT = { "id", "create_by", "create_time", "del_flag" }; public static final String[] COLUMNNAME_NOT_EDIT = { "id", "create_by", "create_time", "del_flag" };
/** 页面不需要显示的列表字段 */ /** 页面不需要显示的列表字段 */
public static final String[] COLUMNNAME_NOT_LIST = { "id", "create_by", "create_time", "del_flag", "update_by", public static final String[] COLUMNNAME_NOT_LIST = { "id", "create_by", "create_time", "del_flag", "update_by",
"update_time" }; "update_time" };
/** 页面不需要查询字段 */ /** 页面不需要查询字段 */
public static final String[] COLUMNNAME_NOT_QUERY = { "id", "create_by", "create_time", "del_flag", "update_by", public static final String[] COLUMNNAME_NOT_QUERY = { "id", "create_by", "create_time", "del_flag", "update_by",
"update_time", "remark" }; "update_time", "remark" };
/** Entity基类字段 */ /** Entity基类字段 */
public static final String[] BASE_ENTITY = { "createBy", "createTime", "updateBy", "updateTime", "remark" }; public static final String[] BASE_ENTITY = { "createBy", "createTime", "updateBy", "updateTime", "remark" };
/** Tree基类字段 */ /** Tree基类字段 */
public static final String[] TREE_ENTITY = { "parentName", "parentId", "orderNum", "ancestors" }; public static final String[] TREE_ENTITY = { "parentName", "parentId", "orderNum", "ancestors" };
/** 文本框 */ /** 文本框 */
public static final String HTML_INPUT = "input"; public static final String HTML_INPUT = "input";
/** 文本域 */ /** 文本域 */
public static final String HTML_TEXTAREA = "textarea"; public static final String HTML_TEXTAREA = "textarea";
/** 下拉框 */ /** 下拉框 */
public static final String HTML_SELECT = "select"; public static final String HTML_SELECT = "select";
/** 单选框 */ /** 单选框 */
public static final String HTML_RADIO = "radio"; public static final String HTML_RADIO = "radio";
/** 复选框 */ /** 复选框 */
public static final String HTML_CHECKBOX = "checkbox"; public static final String HTML_CHECKBOX = "checkbox";
/** 日期控件 */ /** 日期控件 */
public static final String HTML_DATETIME = "datetime"; public static final String HTML_DATETIME = "datetime";
/** 图片上传控件 */ /** 图片上传控件 */
public static final String HTML_IMAGE_UPLOAD = "imageUpload"; public static final String HTML_IMAGE_UPLOAD = "imageUpload";
/** 文件上传控件 */ /** 文件上传控件 */
public static final String HTML_FILE_UPLOAD = "fileUpload"; public static final String HTML_FILE_UPLOAD = "fileUpload";
/** 富文本控件 */ /** 富文本控件 */
public static final String HTML_EDITOR = "editor"; public static final String HTML_EDITOR = "editor";
/** 字符串类型 */ /** 字符串类型 */
public static final String TYPE_STRING = "String"; public static final String TYPE_STRING = "String";
/** 整型 */ /** 整型 */
public static final String TYPE_INTEGER = "Integer"; public static final String TYPE_INTEGER = "Integer";
/** 长整型 */ /** 长整型 */
public static final String TYPE_LONG = "Long"; public static final String TYPE_LONG = "Long";
/** 浮点型 */ /** 浮点型 */
public static final String TYPE_DOUBLE = "Double"; public static final String TYPE_DOUBLE = "Double";
/** 高精度计算类型 */ /** 高精度计算类型 */
public static final String TYPE_BIGDECIMAL = "BigDecimal"; public static final String TYPE_BIGDECIMAL = "BigDecimal";
/** 时间类型 */ /** 时间类型 */
public static final String TYPE_DATE = "Date"; public static final String TYPE_DATE = "Date";
/** 模糊查询 */ /** 模糊查询 */
public static final String QUERY_LIKE = "LIKE"; public static final String QUERY_LIKE = "LIKE";
/** 相等查询 */ /** 相等查询 */
public static final String QUERY_EQ = "EQ"; public static final String QUERY_EQ = "EQ";
/** 需要 */ /** 需要 */
public static final String REQUIRE = "1"; public static final String REQUIRE = "1";
} }

View File

@ -1,94 +1,94 @@
package com.ruoyi.common.core.constant; package HomeWork.common.core.constant;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class HttpStatus public class HttpStatus
{ {
/** /**
* *
*/ */
public static final int SUCCESS = 200; public static final int SUCCESS = 200;
/** /**
* *
*/ */
public static final int CREATED = 201; public static final int CREATED = 201;
/** /**
* *
*/ */
public static final int ACCEPTED = 202; public static final int ACCEPTED = 202;
/** /**
* *
*/ */
public static final int NO_CONTENT = 204; public static final int NO_CONTENT = 204;
/** /**
* *
*/ */
public static final int MOVED_PERM = 301; public static final int MOVED_PERM = 301;
/** /**
* *
*/ */
public static final int SEE_OTHER = 303; public static final int SEE_OTHER = 303;
/** /**
* *
*/ */
public static final int NOT_MODIFIED = 304; public static final int NOT_MODIFIED = 304;
/** /**
* *
*/ */
public static final int BAD_REQUEST = 400; public static final int BAD_REQUEST = 400;
/** /**
* *
*/ */
public static final int UNAUTHORIZED = 401; public static final int UNAUTHORIZED = 401;
/** /**
* 访 * 访
*/ */
public static final int FORBIDDEN = 403; public static final int FORBIDDEN = 403;
/** /**
* *
*/ */
public static final int NOT_FOUND = 404; public static final int NOT_FOUND = 404;
/** /**
* http * http
*/ */
public static final int BAD_METHOD = 405; public static final int BAD_METHOD = 405;
/** /**
* *
*/ */
public static final int CONFLICT = 409; public static final int CONFLICT = 409;
/** /**
* *
*/ */
public static final int UNSUPPORTED_TYPE = 415; public static final int UNSUPPORTED_TYPE = 415;
/** /**
* *
*/ */
public static final int ERROR = 500; public static final int ERROR = 500;
/** /**
* *
*/ */
public static final int NOT_IMPLEMENTED = 501; public static final int NOT_IMPLEMENTED = 501;
/** /**
* *
*/ */
public static final int WARN = 601; public static final int WARN = 601;
} }

View File

@ -1,50 +1,50 @@
package com.ruoyi.common.core.constant; package HomeWork.common.core.constant;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class ScheduleConstants public class ScheduleConstants
{ {
public static final String TASK_CLASS_NAME = "TASK_CLASS_NAME"; public static final String TASK_CLASS_NAME = "TASK_CLASS_NAME";
/** 执行目标key */ /** 执行目标key */
public static final String TASK_PROPERTIES = "TASK_PROPERTIES"; public static final String TASK_PROPERTIES = "TASK_PROPERTIES";
/** 默认 */ /** 默认 */
public static final String MISFIRE_DEFAULT = "0"; public static final String MISFIRE_DEFAULT = "0";
/** 立即触发执行 */ /** 立即触发执行 */
public static final String MISFIRE_IGNORE_MISFIRES = "1"; public static final String MISFIRE_IGNORE_MISFIRES = "1";
/** 触发一次执行 */ /** 触发一次执行 */
public static final String MISFIRE_FIRE_AND_PROCEED = "2"; public static final String MISFIRE_FIRE_AND_PROCEED = "2";
/** 不触发立即执行 */ /** 不触发立即执行 */
public static final String MISFIRE_DO_NOTHING = "3"; public static final String MISFIRE_DO_NOTHING = "3";
public enum Status public enum Status
{ {
/** /**
* *
*/ */
NORMAL("0"), NORMAL("0"),
/** /**
* *
*/ */
PAUSE("1"); PAUSE("1");
private String value; private String value;
private Status(String value) private Status(String value)
{ {
this.value = value; this.value = value;
} }
public String getValue() public String getValue()
{ {
return value; return value;
} }
} }
} }

View File

@ -1,49 +1,49 @@
package com.ruoyi.common.core.constant; package HomeWork.common.core.constant;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class SecurityConstants public class SecurityConstants
{ {
/** /**
* ID * ID
*/ */
public static final String DETAILS_USER_ID = "user_id"; public static final String DETAILS_USER_ID = "user_id";
/** /**
* *
*/ */
public static final String DETAILS_USERNAME = "username"; public static final String DETAILS_USERNAME = "username";
/** /**
* *
*/ */
public static final String AUTHORIZATION_HEADER = "authorization"; public static final String AUTHORIZATION_HEADER = "authorization";
/** /**
* *
*/ */
public static final String FROM_SOURCE = "from-source"; public static final String FROM_SOURCE = "from-source";
/** /**
* *
*/ */
public static final String INNER = "inner"; public static final String INNER = "inner";
/** /**
* *
*/ */
public static final String USER_KEY = "user_key"; public static final String USER_KEY = "user_key";
/** /**
* *
*/ */
public static final String LOGIN_USER = "login_user"; public static final String LOGIN_USER = "login_user";
/** /**
* *
*/ */
public static final String ROLE_PERMISSION = "role_permission"; public static final String ROLE_PERMISSION = "role_permission";
} }

View File

@ -0,0 +1,24 @@
package HomeWork.common.core.constant;
/**
*
*
* @author ruoyi
*/
public class ServiceNameConstants
{
/**
* serviceid
*/
public static final String AUTH_SERVICE = "HomeWork-auth";
/**
* serviceid
*/
public static final String SYSTEM_SERVICE = "HomeWork-system";
/**
* serviceid
*/
public static final String FILE_SERVICE = "HomeWork-file";
}

View File

@ -1,25 +1,25 @@
package com.ruoyi.common.core.constant; package HomeWork.common.core.constant;
/** /**
* TokenKey * TokenKey
* *
* @author ruoyi * @author ruoyi
*/ */
public class TokenConstants public class TokenConstants
{ {
/** /**
* *
*/ */
public static final String AUTHENTICATION = "Authorization"; public static final String AUTHENTICATION = "Authorization";
/** /**
* *
*/ */
public static final String PREFIX = "Bearer "; public static final String PREFIX = "Bearer ";
/** /**
* *
*/ */
public final static String SECRET = "abcdefghijklmnopqrstuvwxyz"; public final static String SECRET = "abcdefghijklmnopqrstuvwxyz";
} }

View File

@ -1,80 +1,80 @@
package com.ruoyi.common.core.constant; package HomeWork.common.core.constant;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class UserConstants public class UserConstants
{ {
/** /**
* *
*/ */
public static final String SYS_USER = "SYS_USER"; public static final String SYS_USER = "SYS_USER";
/** 正常状态 */ /** 正常状态 */
public static final String NORMAL = "0"; public static final String NORMAL = "0";
/** 异常状态 */ /** 异常状态 */
public static final String EXCEPTION = "1"; public static final String EXCEPTION = "1";
/** 用户封禁状态 */ /** 用户封禁状态 */
public static final String USER_DISABLE = "1"; public static final String USER_DISABLE = "1";
/** 角色封禁状态 */ /** 角色封禁状态 */
public static final String ROLE_DISABLE = "1"; public static final String ROLE_DISABLE = "1";
/** 部门正常状态 */ /** 部门正常状态 */
public static final String DEPT_NORMAL = "0"; public static final String DEPT_NORMAL = "0";
/** 部门停用状态 */ /** 部门停用状态 */
public static final String DEPT_DISABLE = "1"; public static final String DEPT_DISABLE = "1";
/** 字典正常状态 */ /** 字典正常状态 */
public static final String DICT_NORMAL = "0"; public static final String DICT_NORMAL = "0";
/** 是否为系统默认(是) */ /** 是否为系统默认(是) */
public static final String YES = "Y"; public static final String YES = "Y";
/** 是否菜单外链(是) */ /** 是否菜单外链(是) */
public static final String YES_FRAME = "0"; public static final String YES_FRAME = "0";
/** 是否菜单外链(否) */ /** 是否菜单外链(否) */
public static final String NO_FRAME = "1"; public static final String NO_FRAME = "1";
/** 菜单类型(目录) */ /** 菜单类型(目录) */
public static final String TYPE_DIR = "M"; public static final String TYPE_DIR = "M";
/** 菜单类型(菜单) */ /** 菜单类型(菜单) */
public static final String TYPE_MENU = "C"; public static final String TYPE_MENU = "C";
/** 菜单类型(按钮) */ /** 菜单类型(按钮) */
public static final String TYPE_BUTTON = "F"; public static final String TYPE_BUTTON = "F";
/** Layout组件标识 */ /** Layout组件标识 */
public final static String LAYOUT = "Layout"; public final static String LAYOUT = "Layout";
/** ParentView组件标识 */ /** ParentView组件标识 */
public final static String PARENT_VIEW = "ParentView"; public final static String PARENT_VIEW = "ParentView";
/** InnerLink组件标识 */ /** InnerLink组件标识 */
public final static String INNER_LINK = "InnerLink"; public final static String INNER_LINK = "InnerLink";
/** 校验是否唯一的返回标识 */ /** 校验是否唯一的返回标识 */
public final static boolean UNIQUE = true; public final static boolean UNIQUE = true;
public final static boolean NOT_UNIQUE = false; public final static boolean NOT_UNIQUE = false;
/** /**
* *
*/ */
public static final int USERNAME_MIN_LENGTH = 2; public static final int USERNAME_MIN_LENGTH = 2;
public static final int USERNAME_MAX_LENGTH = 20; public static final int USERNAME_MAX_LENGTH = 20;
/** /**
* *
*/ */
public static final int PASSWORD_MIN_LENGTH = 5; public static final int PASSWORD_MIN_LENGTH = 5;
public static final int PASSWORD_MAX_LENGTH = 20; public static final int PASSWORD_MAX_LENGTH = 20;
} }

View File

@ -1,98 +1,98 @@
package com.ruoyi.common.core.context; package HomeWork.common.core.context;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import com.alibaba.ttl.TransmittableThreadLocal; import com.alibaba.ttl.TransmittableThreadLocal;
import com.ruoyi.common.core.constant.SecurityConstants; import HomeWork.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.text.Convert; import HomeWork.common.core.text.Convert;
import com.ruoyi.common.core.utils.StringUtils; import HomeWork.common.core.utils.StringUtils;
/** /**
* 线 idToken * 线 idToken
* HeaderInterceptor * HeaderInterceptor
* *
* @author ruoyi * @author ruoyi
*/ */
public class SecurityContextHolder public class SecurityContextHolder
{ {
private static final TransmittableThreadLocal<Map<String, Object>> THREAD_LOCAL = new TransmittableThreadLocal<>(); private static final TransmittableThreadLocal<Map<String, Object>> THREAD_LOCAL = new TransmittableThreadLocal<>();
public static void set(String key, Object value) public static void set(String key, Object value)
{ {
Map<String, Object> map = getLocalMap(); Map<String, Object> map = getLocalMap();
map.put(key, value == null ? StringUtils.EMPTY : value); map.put(key, value == null ? StringUtils.EMPTY : value);
} }
public static String get(String key) public static String get(String key)
{ {
Map<String, Object> map = getLocalMap(); Map<String, Object> map = getLocalMap();
return Convert.toStr(map.getOrDefault(key, StringUtils.EMPTY)); return Convert.toStr(map.getOrDefault(key, StringUtils.EMPTY));
} }
public static <T> T get(String key, Class<T> clazz) public static <T> T get(String key, Class<T> clazz)
{ {
Map<String, Object> map = getLocalMap(); Map<String, Object> map = getLocalMap();
return StringUtils.cast(map.getOrDefault(key, null)); return StringUtils.cast(map.getOrDefault(key, null));
} }
public static Map<String, Object> getLocalMap() public static Map<String, Object> getLocalMap()
{ {
Map<String, Object> map = THREAD_LOCAL.get(); Map<String, Object> map = THREAD_LOCAL.get();
if (map == null) if (map == null)
{ {
map = new ConcurrentHashMap<String, Object>(); map = new ConcurrentHashMap<String, Object>();
THREAD_LOCAL.set(map); THREAD_LOCAL.set(map);
} }
return map; return map;
} }
public static void setLocalMap(Map<String, Object> threadLocalMap) public static void setLocalMap(Map<String, Object> threadLocalMap)
{ {
THREAD_LOCAL.set(threadLocalMap); THREAD_LOCAL.set(threadLocalMap);
} }
public static Long getUserId() public static Long getUserId()
{ {
return Convert.toLong(get(SecurityConstants.DETAILS_USER_ID), 0L); return Convert.toLong(get(SecurityConstants.DETAILS_USER_ID), 0L);
} }
public static void setUserId(String account) public static void setUserId(String account)
{ {
set(SecurityConstants.DETAILS_USER_ID, account); set(SecurityConstants.DETAILS_USER_ID, account);
} }
public static String getUserName() public static String getUserName()
{ {
return get(SecurityConstants.DETAILS_USERNAME); return get(SecurityConstants.DETAILS_USERNAME);
} }
public static void setUserName(String username) public static void setUserName(String username)
{ {
set(SecurityConstants.DETAILS_USERNAME, username); set(SecurityConstants.DETAILS_USERNAME, username);
} }
public static String getUserKey() public static String getUserKey()
{ {
return get(SecurityConstants.USER_KEY); return get(SecurityConstants.USER_KEY);
} }
public static void setUserKey(String userKey) public static void setUserKey(String userKey)
{ {
set(SecurityConstants.USER_KEY, userKey); set(SecurityConstants.USER_KEY, userKey);
} }
public static String getPermission() public static String getPermission()
{ {
return get(SecurityConstants.ROLE_PERMISSION); return get(SecurityConstants.ROLE_PERMISSION);
} }
public static void setPermission(String permissions) public static void setPermission(String permissions)
{ {
set(SecurityConstants.ROLE_PERMISSION, permissions); set(SecurityConstants.ROLE_PERMISSION, permissions);
} }
public static void remove() public static void remove()
{ {
THREAD_LOCAL.remove(); THREAD_LOCAL.remove();
} }
} }

View File

@ -1,115 +1,115 @@
package com.ruoyi.common.core.domain; package HomeWork.common.core.domain;
import java.io.Serializable; import java.io.Serializable;
import com.ruoyi.common.core.constant.Constants; import HomeWork.common.core.constant.Constants;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class R<T> implements Serializable public class R<T> implements Serializable
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 成功 */ /** 成功 */
public static final int SUCCESS = Constants.SUCCESS; public static final int SUCCESS = Constants.SUCCESS;
/** 失败 */ /** 失败 */
public static final int FAIL = Constants.FAIL; public static final int FAIL = Constants.FAIL;
private int code; private int code;
private String msg; private String msg;
private T data; private T data;
public static <T> R<T> ok() public static <T> R<T> ok()
{ {
return restResult(null, SUCCESS, null); return restResult(null, SUCCESS, null);
} }
public static <T> R<T> ok(T data) public static <T> R<T> ok(T data)
{ {
return restResult(data, SUCCESS, null); return restResult(data, SUCCESS, null);
} }
public static <T> R<T> ok(T data, String msg) public static <T> R<T> ok(T data, String msg)
{ {
return restResult(data, SUCCESS, msg); return restResult(data, SUCCESS, msg);
} }
public static <T> R<T> fail() public static <T> R<T> fail()
{ {
return restResult(null, FAIL, null); return restResult(null, FAIL, null);
} }
public static <T> R<T> fail(String msg) public static <T> R<T> fail(String msg)
{ {
return restResult(null, FAIL, msg); return restResult(null, FAIL, msg);
} }
public static <T> R<T> fail(T data) public static <T> R<T> fail(T data)
{ {
return restResult(data, FAIL, null); return restResult(data, FAIL, null);
} }
public static <T> R<T> fail(T data, String msg) public static <T> R<T> fail(T data, String msg)
{ {
return restResult(data, FAIL, msg); return restResult(data, FAIL, msg);
} }
public static <T> R<T> fail(int code, String msg) public static <T> R<T> fail(int code, String msg)
{ {
return restResult(null, code, msg); return restResult(null, code, msg);
} }
private static <T> R<T> restResult(T data, int code, String msg) private static <T> R<T> restResult(T data, int code, String msg)
{ {
R<T> apiResult = new R<>(); R<T> apiResult = new R<>();
apiResult.setCode(code); apiResult.setCode(code);
apiResult.setData(data); apiResult.setData(data);
apiResult.setMsg(msg); apiResult.setMsg(msg);
return apiResult; return apiResult;
} }
public int getCode() public int getCode()
{ {
return code; return code;
} }
public void setCode(int code) public void setCode(int code)
{ {
this.code = code; this.code = code;
} }
public String getMsg() public String getMsg()
{ {
return msg; return msg;
} }
public void setMsg(String msg) public void setMsg(String msg)
{ {
this.msg = msg; this.msg = msg;
} }
public T getData() public T getData()
{ {
return data; return data;
} }
public void setData(T data) public void setData(T data)
{ {
this.data = data; this.data = data;
} }
public static <T> Boolean isError(R<T> ret) public static <T> Boolean isError(R<T> ret)
{ {
return !isSuccess(ret); return !isSuccess(ret);
} }
public static <T> Boolean isSuccess(R<T> ret) public static <T> Boolean isSuccess(R<T> ret)
{ {
return R.SUCCESS == ret.getCode(); return R.SUCCESS == ret.getCode();
} }
} }

View File

@ -1,30 +1,30 @@
package com.ruoyi.common.core.enums; package HomeWork.common.core.enums;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public enum UserStatus public enum UserStatus
{ {
OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除"); OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除");
private final String code; private final String code;
private final String info; private final String info;
UserStatus(String code, String info) UserStatus(String code, String info)
{ {
this.code = code; this.code = code;
this.info = info; this.info = info;
} }
public String getCode() public String getCode()
{ {
return code; return code;
} }
public String getInfo() public String getInfo()
{ {
return info; return info;
} }
} }

View File

@ -1,16 +1,16 @@
package com.ruoyi.common.core.exception; package HomeWork.common.core.exception;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class CaptchaException extends RuntimeException public class CaptchaException extends RuntimeException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public CaptchaException(String msg) public CaptchaException(String msg)
{ {
super(msg); super(msg);
} }
} }

View File

@ -1,31 +1,31 @@
package com.ruoyi.common.core.exception; package HomeWork.common.core.exception;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class CheckedException extends RuntimeException public class CheckedException extends RuntimeException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public CheckedException(String message) public CheckedException(String message)
{ {
super(message); super(message);
} }
public CheckedException(Throwable cause) public CheckedException(Throwable cause)
{ {
super(cause); super(cause);
} }
public CheckedException(String message, Throwable cause) public CheckedException(String message, Throwable cause)
{ {
super(message, cause); super(message, cause);
} }
public CheckedException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) public CheckedException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace)
{ {
super(message, cause, enableSuppression, writableStackTrace); super(message, cause, enableSuppression, writableStackTrace);
} }
} }

View File

@ -1,15 +1,15 @@
package com.ruoyi.common.core.exception; package HomeWork.common.core.exception;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class DemoModeException extends RuntimeException public class DemoModeException extends RuntimeException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public DemoModeException() public DemoModeException()
{ {
} }
} }

View File

@ -1,4 +1,4 @@
package com.ruoyi.common.core.exception; package HomeWork.common.core.exception;
/** /**
* *

View File

@ -1,16 +1,16 @@
package com.ruoyi.common.core.exception; package HomeWork.common.core.exception;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class InnerAuthException extends RuntimeException public class InnerAuthException extends RuntimeException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public InnerAuthException(String message) public InnerAuthException(String message)
{ {
super(message); super(message);
} }
} }

View File

@ -1,4 +1,4 @@
package com.ruoyi.common.core.exception; package HomeWork.common.core.exception;
/** /**
* *

View File

@ -1,4 +1,4 @@
package com.ruoyi.common.core.exception; package HomeWork.common.core.exception;
/** /**
* *

View File

@ -1,26 +1,26 @@
package com.ruoyi.common.core.exception; package HomeWork.common.core.exception;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class UtilException extends RuntimeException public class UtilException extends RuntimeException
{ {
private static final long serialVersionUID = 8247610319171014183L; private static final long serialVersionUID = 8247610319171014183L;
public UtilException(Throwable e) public UtilException(Throwable e)
{ {
super(e.getMessage(), e); super(e.getMessage(), e);
} }
public UtilException(String message) public UtilException(String message)
{ {
super(message); super(message);
} }
public UtilException(String message, Throwable throwable) public UtilException(String message, Throwable throwable)
{ {
super(message, throwable); super(message, throwable);
} }
} }

View File

@ -1,16 +1,16 @@
package com.ruoyi.common.core.exception.auth; package HomeWork.common.core.exception.auth;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class NotLoginException extends RuntimeException public class NotLoginException extends RuntimeException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public NotLoginException(String message) public NotLoginException(String message)
{ {
super(message); super(message);
} }
} }

View File

@ -1,23 +1,23 @@
package com.ruoyi.common.core.exception.auth; package HomeWork.common.core.exception.auth;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class NotPermissionException extends RuntimeException public class NotPermissionException extends RuntimeException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public NotPermissionException(String permission) public NotPermissionException(String permission)
{ {
super(permission); super(permission);
} }
public NotPermissionException(String[] permissions) public NotPermissionException(String[] permissions)
{ {
super(StringUtils.join(permissions, ",")); super(StringUtils.join(permissions, ","));
} }
} }

View File

@ -1,23 +1,23 @@
package com.ruoyi.common.core.exception.auth; package HomeWork.common.core.exception.auth;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class NotRoleException extends RuntimeException public class NotRoleException extends RuntimeException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public NotRoleException(String role) public NotRoleException(String role)
{ {
super(role); super(role);
} }
public NotRoleException(String[] roles) public NotRoleException(String[] roles)
{ {
super(StringUtils.join(roles, ",")); super(StringUtils.join(roles, ","));
} }
} }

View File

@ -1,4 +1,4 @@
package com.ruoyi.common.core.exception.base; package HomeWork.common.core.exception.base;
/** /**
* *

View File

@ -1,19 +1,19 @@
package com.ruoyi.common.core.exception.file; package HomeWork.common.core.exception.file;
import com.ruoyi.common.core.exception.base.BaseException; import HomeWork.common.core.exception.base.BaseException;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class FileException extends BaseException public class FileException extends BaseException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public FileException(String code, Object[] args, String msg) public FileException(String code, Object[] args, String msg)
{ {
super("file", code, args, msg); super("file", code, args, msg);
} }
} }

View File

@ -1,16 +1,16 @@
package com.ruoyi.common.core.exception.file; package HomeWork.common.core.exception.file;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class FileNameLengthLimitExceededException extends FileException public class FileNameLengthLimitExceededException extends FileException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public FileNameLengthLimitExceededException(int defaultFileNameLength) public FileNameLengthLimitExceededException(int defaultFileNameLength)
{ {
super("upload.filename.exceed.length", new Object[] { defaultFileNameLength }, "the filename is too long"); super("upload.filename.exceed.length", new Object[] { defaultFileNameLength }, "the filename is too long");
} }
} }

View File

@ -1,16 +1,16 @@
package com.ruoyi.common.core.exception.file; package HomeWork.common.core.exception.file;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class FileSizeLimitExceededException extends FileException public class FileSizeLimitExceededException extends FileException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public FileSizeLimitExceededException(long defaultMaxSize) public FileSizeLimitExceededException(long defaultMaxSize)
{ {
super("upload.exceed.maxSize", new Object[] { defaultMaxSize }, "the filesize is too large"); super("upload.exceed.maxSize", new Object[] { defaultMaxSize }, "the filesize is too large");
} }
} }

View File

@ -1,4 +1,4 @@
package com.ruoyi.common.core.exception.file; package HomeWork.common.core.exception.file;
import java.io.PrintStream; import java.io.PrintStream;
import java.io.PrintWriter; import java.io.PrintWriter;

View File

@ -1,80 +1,80 @@
package com.ruoyi.common.core.exception.file; package HomeWork.common.core.exception.file;
import java.util.Arrays; import java.util.Arrays;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class InvalidExtensionException extends FileUploadException public class InvalidExtensionException extends FileUploadException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String[] allowedExtension; private String[] allowedExtension;
private String extension; private String extension;
private String filename; private String filename;
public InvalidExtensionException(String[] allowedExtension, String extension, String filename) public InvalidExtensionException(String[] allowedExtension, String extension, String filename)
{ {
super("filename : [" + filename + "], extension : [" + extension + "], allowed extension : [" + Arrays.toString(allowedExtension) + "]"); super("filename : [" + filename + "], extension : [" + extension + "], allowed extension : [" + Arrays.toString(allowedExtension) + "]");
this.allowedExtension = allowedExtension; this.allowedExtension = allowedExtension;
this.extension = extension; this.extension = extension;
this.filename = filename; this.filename = filename;
} }
public String[] getAllowedExtension() public String[] getAllowedExtension()
{ {
return allowedExtension; return allowedExtension;
} }
public String getExtension() public String getExtension()
{ {
return extension; return extension;
} }
public String getFilename() public String getFilename()
{ {
return filename; return filename;
} }
public static class InvalidImageExtensionException extends InvalidExtensionException public static class InvalidImageExtensionException extends InvalidExtensionException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename) public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename)
{ {
super(allowedExtension, extension, filename); super(allowedExtension, extension, filename);
} }
} }
public static class InvalidFlashExtensionException extends InvalidExtensionException public static class InvalidFlashExtensionException extends InvalidExtensionException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename) public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename)
{ {
super(allowedExtension, extension, filename); super(allowedExtension, extension, filename);
} }
} }
public static class InvalidMediaExtensionException extends InvalidExtensionException public static class InvalidMediaExtensionException extends InvalidExtensionException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename) public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename)
{ {
super(allowedExtension, extension, filename); super(allowedExtension, extension, filename);
} }
} }
public static class InvalidVideoExtensionException extends InvalidExtensionException public static class InvalidVideoExtensionException extends InvalidExtensionException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public InvalidVideoExtensionException(String[] allowedExtension, String extension, String filename) public InvalidVideoExtensionException(String[] allowedExtension, String extension, String filename)
{ {
super(allowedExtension, extension, filename); super(allowedExtension, extension, filename);
} }
} }
} }

View File

@ -1,34 +1,34 @@
package com.ruoyi.common.core.exception.job; package HomeWork.common.core.exception.job;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class TaskException extends Exception public class TaskException extends Exception
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private Code code; private Code code;
public TaskException(String msg, Code code) public TaskException(String msg, Code code)
{ {
this(msg, code, null); this(msg, code, null);
} }
public TaskException(String msg, Code code, Exception nestedEx) public TaskException(String msg, Code code, Exception nestedEx)
{ {
super(msg, nestedEx); super(msg, nestedEx);
this.code = code; this.code = code;
} }
public Code getCode() public Code getCode()
{ {
return code; return code;
} }
public enum Code public enum Code
{ {
TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE
} }
} }

View File

@ -1,16 +1,16 @@
package com.ruoyi.common.core.exception.user; package HomeWork.common.core.exception.user;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class CaptchaExpireException extends UserException public class CaptchaExpireException extends UserException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public CaptchaExpireException() public CaptchaExpireException()
{ {
super("user.jcaptcha.expire", null); super("user.jcaptcha.expire", null);
} }
} }

View File

@ -1,18 +1,18 @@
package com.ruoyi.common.core.exception.user; package HomeWork.common.core.exception.user;
import com.ruoyi.common.core.exception.base.BaseException; import HomeWork.common.core.exception.base.BaseException;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class UserException extends BaseException public class UserException extends BaseException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public UserException(String code, Object[] args) public UserException(String code, Object[] args)
{ {
super("user", code, args, null); super("user", code, args, null);
} }
} }

View File

@ -1,16 +1,16 @@
package com.ruoyi.common.core.exception.user; package HomeWork.common.core.exception.user;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class UserPasswordNotMatchException extends UserException public class UserPasswordNotMatchException extends UserException
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public UserPasswordNotMatchException() public UserPasswordNotMatchException()
{ {
super("user.password.not.match", null); super("user.password.not.match", null);
} }
} }

View File

@ -1,86 +1,86 @@
package com.ruoyi.common.core.text; package HomeWork.common.core.text;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import com.ruoyi.common.core.utils.StringUtils; import HomeWork.common.core.utils.StringUtils;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class CharsetKit public class CharsetKit
{ {
/** ISO-8859-1 */ /** ISO-8859-1 */
public static final String ISO_8859_1 = "ISO-8859-1"; public static final String ISO_8859_1 = "ISO-8859-1";
/** UTF-8 */ /** UTF-8 */
public static final String UTF_8 = "UTF-8"; public static final String UTF_8 = "UTF-8";
/** GBK */ /** GBK */
public static final String GBK = "GBK"; public static final String GBK = "GBK";
/** ISO-8859-1 */ /** ISO-8859-1 */
public static final Charset CHARSET_ISO_8859_1 = Charset.forName(ISO_8859_1); public static final Charset CHARSET_ISO_8859_1 = Charset.forName(ISO_8859_1);
/** UTF-8 */ /** UTF-8 */
public static final Charset CHARSET_UTF_8 = Charset.forName(UTF_8); public static final Charset CHARSET_UTF_8 = Charset.forName(UTF_8);
/** GBK */ /** GBK */
public static final Charset CHARSET_GBK = Charset.forName(GBK); public static final Charset CHARSET_GBK = Charset.forName(GBK);
/** /**
* Charset * Charset
* *
* @param charset * @param charset
* @return Charset * @return Charset
*/ */
public static Charset charset(String charset) public static Charset charset(String charset)
{ {
return StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset); return StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset);
} }
/** /**
* *
* *
* @param source * @param source
* @param srcCharset ISO-8859-1 * @param srcCharset ISO-8859-1
* @param destCharset UTF-8 * @param destCharset UTF-8
* @return * @return
*/ */
public static String convert(String source, String srcCharset, String destCharset) public static String convert(String source, String srcCharset, String destCharset)
{ {
return convert(source, Charset.forName(srcCharset), Charset.forName(destCharset)); return convert(source, Charset.forName(srcCharset), Charset.forName(destCharset));
} }
/** /**
* *
* *
* @param source * @param source
* @param srcCharset ISO-8859-1 * @param srcCharset ISO-8859-1
* @param destCharset UTF-8 * @param destCharset UTF-8
* @return * @return
*/ */
public static String convert(String source, Charset srcCharset, Charset destCharset) public static String convert(String source, Charset srcCharset, Charset destCharset)
{ {
if (null == srcCharset) if (null == srcCharset)
{ {
srcCharset = StandardCharsets.ISO_8859_1; srcCharset = StandardCharsets.ISO_8859_1;
} }
if (null == destCharset) if (null == destCharset)
{ {
destCharset = StandardCharsets.UTF_8; destCharset = StandardCharsets.UTF_8;
} }
if (StringUtils.isEmpty(source) || srcCharset.equals(destCharset)) if (StringUtils.isEmpty(source) || srcCharset.equals(destCharset))
{ {
return source; return source;
} }
return new String(source.getBytes(srcCharset), destCharset); return new String(source.getBytes(srcCharset), destCharset);
} }
/** /**
* @return * @return
*/ */
public static String systemCharset() public static String systemCharset()
{ {
return Charset.defaultCharset().name(); return Charset.defaultCharset().name();
} }
} }

View File

@ -1,92 +1,92 @@
package com.ruoyi.common.core.text; package HomeWork.common.core.text;
import com.ruoyi.common.core.utils.StringUtils; import HomeWork.common.core.utils.StringUtils;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class StrFormatter public class StrFormatter
{ {
public static final String EMPTY_JSON = "{}"; public static final String EMPTY_JSON = "{}";
public static final char C_BACKSLASH = '\\'; public static final char C_BACKSLASH = '\\';
public static final char C_DELIM_START = '{'; public static final char C_DELIM_START = '{';
public static final char C_DELIM_END = '}'; public static final char C_DELIM_END = '}';
/** /**
* <br> * <br>
* {} <br> * {} <br>
* {} 使 \\ { {} \ 使 \\\\ <br> * {} 使 \\ { {} \ 使 \\\\ <br>
* <br> * <br>
* 使format("this is {} for {}", "a", "b") -> this is a for b<br> * 使format("this is {} for {}", "a", "b") -> this is a for b<br>
* {} format("this is \\{} for {}", "a", "b") -> this is \{} for a<br> * {} format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
* \ format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br> * \ format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
* *
* @param strPattern * @param strPattern
* @param argArray * @param argArray
* @return * @return
*/ */
public static String format(final String strPattern, final Object... argArray) public static String format(final String strPattern, final Object... argArray)
{ {
if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray)) if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray))
{ {
return strPattern; return strPattern;
} }
final int strPatternLength = strPattern.length(); final int strPatternLength = strPattern.length();
// 初始化定义好的长度以获得更好的性能 // 初始化定义好的长度以获得更好的性能
StringBuilder sbuf = new StringBuilder(strPatternLength + 50); StringBuilder sbuf = new StringBuilder(strPatternLength + 50);
int handledPosition = 0; int handledPosition = 0;
int delimIndex;// 占位符所在位置 int delimIndex;// 占位符所在位置
for (int argIndex = 0; argIndex < argArray.length; argIndex++) for (int argIndex = 0; argIndex < argArray.length; argIndex++)
{ {
delimIndex = strPattern.indexOf(EMPTY_JSON, handledPosition); delimIndex = strPattern.indexOf(EMPTY_JSON, handledPosition);
if (delimIndex == -1) if (delimIndex == -1)
{ {
if (handledPosition == 0) if (handledPosition == 0)
{ {
return strPattern; return strPattern;
} }
else else
{ // 字符串模板剩余部分不再包含占位符,加入剩余部分后返回结果 { // 字符串模板剩余部分不再包含占位符,加入剩余部分后返回结果
sbuf.append(strPattern, handledPosition, strPatternLength); sbuf.append(strPattern, handledPosition, strPatternLength);
return sbuf.toString(); return sbuf.toString();
} }
} }
else else
{ {
if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH) if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH)
{ {
if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH) if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH)
{ {
// 转义符之前还有一个转义符,占位符依旧有效 // 转义符之前还有一个转义符,占位符依旧有效
sbuf.append(strPattern, handledPosition, delimIndex - 1); sbuf.append(strPattern, handledPosition, delimIndex - 1);
sbuf.append(Convert.utf8Str(argArray[argIndex])); sbuf.append(Convert.utf8Str(argArray[argIndex]));
handledPosition = delimIndex + 2; handledPosition = delimIndex + 2;
} }
else else
{ {
// 占位符被转义 // 占位符被转义
argIndex--; argIndex--;
sbuf.append(strPattern, handledPosition, delimIndex - 1); sbuf.append(strPattern, handledPosition, delimIndex - 1);
sbuf.append(C_DELIM_START); sbuf.append(C_DELIM_START);
handledPosition = delimIndex + 1; handledPosition = delimIndex + 1;
} }
} }
else else
{ {
// 正常占位符 // 正常占位符
sbuf.append(strPattern, handledPosition, delimIndex); sbuf.append(strPattern, handledPosition, delimIndex);
sbuf.append(Convert.utf8Str(argArray[argIndex])); sbuf.append(Convert.utf8Str(argArray[argIndex]));
handledPosition = delimIndex + 2; handledPosition = delimIndex + 2;
} }
} }
} }
// 加入最后一个占位符后所有的字符 // 加入最后一个占位符后所有的字符
sbuf.append(strPattern, handledPosition, strPattern.length()); sbuf.append(strPattern, handledPosition, strPattern.length());
return sbuf.toString(); return sbuf.toString();
} }
} }

View File

@ -1,183 +1,183 @@
package com.ruoyi.common.core.utils; package HomeWork.common.core.utils;
import java.lang.management.ManagementFactory; import java.lang.management.ManagementFactory;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.util.Date; import java.util.Date;
import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateFormatUtils;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class DateUtils extends org.apache.commons.lang3.time.DateUtils public class DateUtils extends org.apache.commons.lang3.time.DateUtils
{ {
public static String YYYY = "yyyy"; public static String YYYY = "yyyy";
public static String YYYY_MM = "yyyy-MM"; public static String YYYY_MM = "yyyy-MM";
public static String YYYY_MM_DD = "yyyy-MM-dd"; public static String YYYY_MM_DD = "yyyy-MM-dd";
public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
private static String[] parsePatterns = { private static String[] parsePatterns = {
"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
"yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
"yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};
/** /**
* Date * Date
* *
* @return Date() * @return Date()
*/ */
public static Date getNowDate() public static Date getNowDate()
{ {
return new Date(); return new Date();
} }
/** /**
* , yyyy-MM-dd * , yyyy-MM-dd
* *
* @return String * @return String
*/ */
public static String getDate() public static String getDate()
{ {
return dateTimeNow(YYYY_MM_DD); return dateTimeNow(YYYY_MM_DD);
} }
public static final String getTime() public static final String getTime()
{ {
return dateTimeNow(YYYY_MM_DD_HH_MM_SS); return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
} }
public static final String dateTimeNow() public static final String dateTimeNow()
{ {
return dateTimeNow(YYYYMMDDHHMMSS); return dateTimeNow(YYYYMMDDHHMMSS);
} }
public static final String dateTimeNow(final String format) public static final String dateTimeNow(final String format)
{ {
return parseDateToStr(format, new Date()); return parseDateToStr(format, new Date());
} }
public static final String dateTime(final Date date) public static final String dateTime(final Date date)
{ {
return parseDateToStr(YYYY_MM_DD, date); return parseDateToStr(YYYY_MM_DD, date);
} }
public static final String parseDateToStr(final String format, final Date date) public static final String parseDateToStr(final String format, final Date date)
{ {
return new SimpleDateFormat(format).format(date); return new SimpleDateFormat(format).format(date);
} }
public static final Date dateTime(final String format, final String ts) public static final Date dateTime(final String format, final String ts)
{ {
try try
{ {
return new SimpleDateFormat(format).parse(ts); return new SimpleDateFormat(format).parse(ts);
} }
catch (ParseException e) catch (ParseException e)
{ {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
/** /**
* // 2018/08/08 * // 2018/08/08
*/ */
public static final String datePath() public static final String datePath()
{ {
Date now = new Date(); Date now = new Date();
return DateFormatUtils.format(now, "yyyy/MM/dd"); return DateFormatUtils.format(now, "yyyy/MM/dd");
} }
/** /**
* // 20180808 * // 20180808
*/ */
public static final String dateTime() public static final String dateTime()
{ {
Date now = new Date(); Date now = new Date();
return DateFormatUtils.format(now, "yyyyMMdd"); return DateFormatUtils.format(now, "yyyyMMdd");
} }
/** /**
* *
*/ */
public static Date parseDate(Object str) public static Date parseDate(Object str)
{ {
if (str == null) if (str == null)
{ {
return null; return null;
} }
try try
{ {
return parseDate(str.toString(), parsePatterns); return parseDate(str.toString(), parsePatterns);
} }
catch (ParseException e) catch (ParseException e)
{ {
return null; return null;
} }
} }
/** /**
* *
*/ */
public static Date getServerStartDate() public static Date getServerStartDate()
{ {
long time = ManagementFactory.getRuntimeMXBean().getStartTime(); long time = ManagementFactory.getRuntimeMXBean().getStartTime();
return new Date(time); return new Date(time);
} }
/** /**
* *
* *
* @param endDate * @param endDate
* @param startTime * @param startTime
* @return // * @return //
*/ */
public static String timeDistance(Date endDate, Date startTime) public static String timeDistance(Date endDate, Date startTime)
{ {
long nd = 1000 * 24 * 60 * 60; long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60; long nh = 1000 * 60 * 60;
long nm = 1000 * 60; long nm = 1000 * 60;
// long ns = 1000; // long ns = 1000;
// 获得两个时间的毫秒时间差异 // 获得两个时间的毫秒时间差异
long diff = endDate.getTime() - startTime.getTime(); long diff = endDate.getTime() - startTime.getTime();
// 计算差多少天 // 计算差多少天
long day = diff / nd; long day = diff / nd;
// 计算差多少小时 // 计算差多少小时
long hour = diff % nd / nh; long hour = diff % nd / nh;
// 计算差多少分钟 // 计算差多少分钟
long min = diff % nd % nh / nm; long min = diff % nd % nh / nm;
// 计算差多少秒//输出结果 // 计算差多少秒//输出结果
// long sec = diff % nd % nh % nm / ns; // long sec = diff % nd % nh % nm / ns;
return day + "天" + hour + "小时" + min + "分钟"; return day + "天" + hour + "小时" + min + "分钟";
} }
/** /**
* LocalDateTime ==> Date * LocalDateTime ==> Date
*/ */
public static Date toDate(LocalDateTime temporalAccessor) public static Date toDate(LocalDateTime temporalAccessor)
{ {
ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault()); ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault());
return Date.from(zdt.toInstant()); return Date.from(zdt.toInstant());
} }
/** /**
* LocalDate ==> Date * LocalDate ==> Date
*/ */
public static Date toDate(LocalDate temporalAccessor) public static Date toDate(LocalDate temporalAccessor)
{ {
LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0)); LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0));
ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
return Date.from(zdt.toInstant()); return Date.from(zdt.toInstant());
} }
} }

View File

@ -1,39 +1,39 @@
package com.ruoyi.common.core.utils; package HomeWork.common.core.utils;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.commons.lang3.exception.ExceptionUtils;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class ExceptionUtil public class ExceptionUtil
{ {
/** /**
* exception * exception
*/ */
public static String getExceptionMessage(Throwable e) public static String getExceptionMessage(Throwable e)
{ {
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw, true)); e.printStackTrace(new PrintWriter(sw, true));
return sw.toString(); return sw.toString();
} }
public static String getRootErrorMessage(Exception e) public static String getRootErrorMessage(Exception e)
{ {
Throwable root = ExceptionUtils.getRootCause(e); Throwable root = ExceptionUtils.getRootCause(e);
root = (root == null ? e : root); root = (root == null ? e : root);
if (root == null) if (root == null)
{ {
return ""; return "";
} }
String msg = root.getMessage(); String msg = root.getMessage();
if (msg == null) if (msg == null)
{ {
return "null"; return "null";
} }
return StringUtils.defaultString(msg); return StringUtils.defaultString(msg);
} }
} }

View File

@ -1,123 +1,123 @@
package com.ruoyi.common.core.utils; package HomeWork.common.core.utils;
import java.util.Map; import java.util.Map;
import com.ruoyi.common.core.constant.SecurityConstants; import HomeWork.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.TokenConstants; import HomeWork.common.core.constant.TokenConstants;
import com.ruoyi.common.core.text.Convert; import HomeWork.common.core.text.Convert;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.SignatureAlgorithm;
/** /**
* Jwt * Jwt
* *
* @author ruoyi * @author ruoyi
*/ */
public class JwtUtils public class JwtUtils
{ {
public static String secret = TokenConstants.SECRET; public static String secret = TokenConstants.SECRET;
/** /**
* *
* *
* @param claims * @param claims
* @return * @return
*/ */
public static String createToken(Map<String, Object> claims) public static String createToken(Map<String, Object> claims)
{ {
String token = Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS512, secret).compact(); String token = Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS512, secret).compact();
return token; return token;
} }
/** /**
* *
* *
* @param token * @param token
* @return * @return
*/ */
public static Claims parseToken(String token) public static Claims parseToken(String token)
{ {
return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody(); return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();
} }
/** /**
* *
* *
* @param token * @param token
* @return ID * @return ID
*/ */
public static String getUserKey(String token) public static String getUserKey(String token)
{ {
Claims claims = parseToken(token); Claims claims = parseToken(token);
return getValue(claims, SecurityConstants.USER_KEY); return getValue(claims, SecurityConstants.USER_KEY);
} }
/** /**
* *
* *
* @param claims * @param claims
* @return ID * @return ID
*/ */
public static String getUserKey(Claims claims) public static String getUserKey(Claims claims)
{ {
return getValue(claims, SecurityConstants.USER_KEY); return getValue(claims, SecurityConstants.USER_KEY);
} }
/** /**
* ID * ID
* *
* @param token * @param token
* @return ID * @return ID
*/ */
public static String getUserId(String token) public static String getUserId(String token)
{ {
Claims claims = parseToken(token); Claims claims = parseToken(token);
return getValue(claims, SecurityConstants.DETAILS_USER_ID); return getValue(claims, SecurityConstants.DETAILS_USER_ID);
} }
/** /**
* ID * ID
* *
* @param claims * @param claims
* @return ID * @return ID
*/ */
public static String getUserId(Claims claims) public static String getUserId(Claims claims)
{ {
return getValue(claims, SecurityConstants.DETAILS_USER_ID); return getValue(claims, SecurityConstants.DETAILS_USER_ID);
} }
/** /**
* *
* *
* @param token * @param token
* @return * @return
*/ */
public static String getUserName(String token) public static String getUserName(String token)
{ {
Claims claims = parseToken(token); Claims claims = parseToken(token);
return getValue(claims, SecurityConstants.DETAILS_USERNAME); return getValue(claims, SecurityConstants.DETAILS_USERNAME);
} }
/** /**
* *
* *
* @param claims * @param claims
* @return * @return
*/ */
public static String getUserName(Claims claims) public static String getUserName(Claims claims)
{ {
return getValue(claims, SecurityConstants.DETAILS_USERNAME); return getValue(claims, SecurityConstants.DETAILS_USERNAME);
} }
/** /**
* *
* *
* @param claims * @param claims
* @param key * @param key
* @return * @return
*/ */
public static String getValue(Claims claims, String key) public static String getValue(Claims claims, String key)
{ {
return Convert.toStr(claims.get(key), ""); return Convert.toStr(claims.get(key), "");
} }
} }

View File

@ -1,9 +1,9 @@
package com.ruoyi.common.core.utils; package HomeWork.common.core.utils;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.ruoyi.common.core.utils.sql.SqlUtil; import HomeWork.common.core.utils.sql.SqlUtil;
import com.ruoyi.common.core.web.page.PageDomain; import HomeWork.common.core.web.page.PageDomain;
import com.ruoyi.common.core.web.page.TableSupport; import HomeWork.common.core.web.page.TableSupport;
/** /**
* *

View File

@ -1,333 +1,333 @@
package com.ruoyi.common.core.utils; package HomeWork.common.core.utils;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.Collections; import java.util.Collections;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import javax.servlet.ServletRequest; import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import org.springframework.core.io.buffer.DataBuffer; import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.server.reactive.ServerHttpResponse; import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.util.LinkedCaseInsensitiveMap; import org.springframework.util.LinkedCaseInsensitiveMap;
import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.ruoyi.common.core.constant.Constants; import HomeWork.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R; import HomeWork.common.core.domain.R;
import com.ruoyi.common.core.text.Convert; import HomeWork.common.core.text.Convert;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class ServletUtils public class ServletUtils
{ {
/** /**
* String * String
*/ */
public static String getParameter(String name) public static String getParameter(String name)
{ {
return getRequest().getParameter(name); return getRequest().getParameter(name);
} }
/** /**
* String * String
*/ */
public static String getParameter(String name, String defaultValue) public static String getParameter(String name, String defaultValue)
{ {
return Convert.toStr(getRequest().getParameter(name), defaultValue); return Convert.toStr(getRequest().getParameter(name), defaultValue);
} }
/** /**
* Integer * Integer
*/ */
public static Integer getParameterToInt(String name) public static Integer getParameterToInt(String name)
{ {
return Convert.toInt(getRequest().getParameter(name)); return Convert.toInt(getRequest().getParameter(name));
} }
/** /**
* Integer * Integer
*/ */
public static Integer getParameterToInt(String name, Integer defaultValue) public static Integer getParameterToInt(String name, Integer defaultValue)
{ {
return Convert.toInt(getRequest().getParameter(name), defaultValue); return Convert.toInt(getRequest().getParameter(name), defaultValue);
} }
/** /**
* Boolean * Boolean
*/ */
public static Boolean getParameterToBool(String name) public static Boolean getParameterToBool(String name)
{ {
return Convert.toBool(getRequest().getParameter(name)); return Convert.toBool(getRequest().getParameter(name));
} }
/** /**
* Boolean * Boolean
*/ */
public static Boolean getParameterToBool(String name, Boolean defaultValue) public static Boolean getParameterToBool(String name, Boolean defaultValue)
{ {
return Convert.toBool(getRequest().getParameter(name), defaultValue); return Convert.toBool(getRequest().getParameter(name), defaultValue);
} }
/** /**
* *
* *
* @param request {@link ServletRequest} * @param request {@link ServletRequest}
* @return Map * @return Map
*/ */
public static Map<String, String[]> getParams(ServletRequest request) public static Map<String, String[]> getParams(ServletRequest request)
{ {
final Map<String, String[]> map = request.getParameterMap(); final Map<String, String[]> map = request.getParameterMap();
return Collections.unmodifiableMap(map); return Collections.unmodifiableMap(map);
} }
/** /**
* *
* *
* @param request {@link ServletRequest} * @param request {@link ServletRequest}
* @return Map * @return Map
*/ */
public static Map<String, String> getParamMap(ServletRequest request) public static Map<String, String> getParamMap(ServletRequest request)
{ {
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
for (Map.Entry<String, String[]> entry : getParams(request).entrySet()) for (Map.Entry<String, String[]> entry : getParams(request).entrySet())
{ {
params.put(entry.getKey(), StringUtils.join(entry.getValue(), ",")); params.put(entry.getKey(), StringUtils.join(entry.getValue(), ","));
} }
return params; return params;
} }
/** /**
* request * request
*/ */
public static HttpServletRequest getRequest() public static HttpServletRequest getRequest()
{ {
try try
{ {
return getRequestAttributes().getRequest(); return getRequestAttributes().getRequest();
} }
catch (Exception e) catch (Exception e)
{ {
return null; return null;
} }
} }
/** /**
* response * response
*/ */
public static HttpServletResponse getResponse() public static HttpServletResponse getResponse()
{ {
try try
{ {
return getRequestAttributes().getResponse(); return getRequestAttributes().getResponse();
} }
catch (Exception e) catch (Exception e)
{ {
return null; return null;
} }
} }
/** /**
* session * session
*/ */
public static HttpSession getSession() public static HttpSession getSession()
{ {
return getRequest().getSession(); return getRequest().getSession();
} }
public static ServletRequestAttributes getRequestAttributes() public static ServletRequestAttributes getRequestAttributes()
{ {
try try
{ {
RequestAttributes attributes = RequestContextHolder.getRequestAttributes(); RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
return (ServletRequestAttributes) attributes; return (ServletRequestAttributes) attributes;
} }
catch (Exception e) catch (Exception e)
{ {
return null; return null;
} }
} }
public static String getHeader(HttpServletRequest request, String name) public static String getHeader(HttpServletRequest request, String name)
{ {
String value = request.getHeader(name); String value = request.getHeader(name);
if (StringUtils.isEmpty(value)) if (StringUtils.isEmpty(value))
{ {
return StringUtils.EMPTY; return StringUtils.EMPTY;
} }
return urlDecode(value); return urlDecode(value);
} }
public static Map<String, String> getHeaders(HttpServletRequest request) public static Map<String, String> getHeaders(HttpServletRequest request)
{ {
Map<String, String> map = new LinkedCaseInsensitiveMap<>(); Map<String, String> map = new LinkedCaseInsensitiveMap<>();
Enumeration<String> enumeration = request.getHeaderNames(); Enumeration<String> enumeration = request.getHeaderNames();
if (enumeration != null) if (enumeration != null)
{ {
while (enumeration.hasMoreElements()) while (enumeration.hasMoreElements())
{ {
String key = enumeration.nextElement(); String key = enumeration.nextElement();
String value = request.getHeader(key); String value = request.getHeader(key);
map.put(key, value); map.put(key, value);
} }
} }
return map; return map;
} }
/** /**
* *
* *
* @param response * @param response
* @param string * @param string
*/ */
public static void renderString(HttpServletResponse response, String string) public static void renderString(HttpServletResponse response, String string)
{ {
try try
{ {
response.setStatus(200); response.setStatus(200);
response.setContentType("application/json"); response.setContentType("application/json");
response.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8");
response.getWriter().print(string); response.getWriter().print(string);
} }
catch (IOException e) catch (IOException e)
{ {
e.printStackTrace(); e.printStackTrace();
} }
} }
/** /**
* Ajax * Ajax
* *
* @param request * @param request
*/ */
public static boolean isAjaxRequest(HttpServletRequest request) public static boolean isAjaxRequest(HttpServletRequest request)
{ {
String accept = request.getHeader("accept"); String accept = request.getHeader("accept");
if (accept != null && accept.contains("application/json")) if (accept != null && accept.contains("application/json"))
{ {
return true; return true;
} }
String xRequestedWith = request.getHeader("X-Requested-With"); String xRequestedWith = request.getHeader("X-Requested-With");
if (xRequestedWith != null && xRequestedWith.contains("XMLHttpRequest")) if (xRequestedWith != null && xRequestedWith.contains("XMLHttpRequest"))
{ {
return true; return true;
} }
String uri = request.getRequestURI(); String uri = request.getRequestURI();
if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml")) if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml"))
{ {
return true; return true;
} }
String ajax = request.getParameter("__ajax"); String ajax = request.getParameter("__ajax");
return StringUtils.inStringIgnoreCase(ajax, "json", "xml"); return StringUtils.inStringIgnoreCase(ajax, "json", "xml");
} }
/** /**
* *
* *
* @param str * @param str
* @return * @return
*/ */
public static String urlEncode(String str) public static String urlEncode(String str)
{ {
try try
{ {
return URLEncoder.encode(str, Constants.UTF8); return URLEncoder.encode(str, Constants.UTF8);
} }
catch (UnsupportedEncodingException e) catch (UnsupportedEncodingException e)
{ {
return StringUtils.EMPTY; return StringUtils.EMPTY;
} }
} }
/** /**
* *
* *
* @param str * @param str
* @return * @return
*/ */
public static String urlDecode(String str) public static String urlDecode(String str)
{ {
try try
{ {
return URLDecoder.decode(str, Constants.UTF8); return URLDecoder.decode(str, Constants.UTF8);
} }
catch (UnsupportedEncodingException e) catch (UnsupportedEncodingException e)
{ {
return StringUtils.EMPTY; return StringUtils.EMPTY;
} }
} }
/** /**
* webflux * webflux
* *
* @param response ServerHttpResponse * @param response ServerHttpResponse
* @param value * @param value
* @return Mono<Void> * @return Mono<Void>
*/ */
public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, Object value) public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, Object value)
{ {
return webFluxResponseWriter(response, HttpStatus.OK, value, R.FAIL); return webFluxResponseWriter(response, HttpStatus.OK, value, R.FAIL);
} }
/** /**
* webflux * webflux
* *
* @param response ServerHttpResponse * @param response ServerHttpResponse
* @param code * @param code
* @param value * @param value
* @return Mono<Void> * @return Mono<Void>
*/ */
public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, Object value, int code) public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, Object value, int code)
{ {
return webFluxResponseWriter(response, HttpStatus.OK, value, code); return webFluxResponseWriter(response, HttpStatus.OK, value, code);
} }
/** /**
* webflux * webflux
* *
* @param response ServerHttpResponse * @param response ServerHttpResponse
* @param status http * @param status http
* @param code * @param code
* @param value * @param value
* @return Mono<Void> * @return Mono<Void>
*/ */
public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, HttpStatus status, Object value, int code) public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, HttpStatus status, Object value, int code)
{ {
return webFluxResponseWriter(response, MediaType.APPLICATION_JSON_VALUE, status, value, code); return webFluxResponseWriter(response, MediaType.APPLICATION_JSON_VALUE, status, value, code);
} }
/** /**
* webflux * webflux
* *
* @param response ServerHttpResponse * @param response ServerHttpResponse
* @param contentType content-type * @param contentType content-type
* @param status http * @param status http
* @param code * @param code
* @param value * @param value
* @return Mono<Void> * @return Mono<Void>
*/ */
public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, String contentType, HttpStatus status, Object value, int code) public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, String contentType, HttpStatus status, Object value, int code)
{ {
response.setStatusCode(status); response.setStatusCode(status);
response.getHeaders().add(HttpHeaders.CONTENT_TYPE, contentType); response.getHeaders().add(HttpHeaders.CONTENT_TYPE, contentType);
R<?> result = R.fail(code, value.toString()); R<?> result = R.fail(code, value.toString());
DataBuffer dataBuffer = response.bufferFactory().wrap(JSON.toJSONString(result).getBytes()); DataBuffer dataBuffer = response.bufferFactory().wrap(JSON.toJSONString(result).getBytes());
return response.writeWith(Mono.just(dataBuffer)); return response.writeWith(Mono.just(dataBuffer));
} }
} }

View File

@ -1,114 +1,114 @@
package com.ruoyi.common.core.utils; package HomeWork.common.core.utils;
import org.springframework.aop.framework.AopContext; import org.springframework.aop.framework.AopContext;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
* spring 便springbean * spring 便springbean
* *
* @author ruoyi * @author ruoyi
*/ */
@Component @Component
public final class SpringUtils implements BeanFactoryPostProcessor public final class SpringUtils implements BeanFactoryPostProcessor
{ {
/** Spring应用上下文环境 */ /** Spring应用上下文环境 */
private static ConfigurableListableBeanFactory beanFactory; private static ConfigurableListableBeanFactory beanFactory;
@Override @Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException
{ {
SpringUtils.beanFactory = beanFactory; SpringUtils.beanFactory = beanFactory;
} }
/** /**
* *
* *
* @param name * @param name
* @return Object bean * @return Object bean
* @throws org.springframework.beans.BeansException * @throws org.springframework.beans.BeansException
* *
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T> T getBean(String name) throws BeansException public static <T> T getBean(String name) throws BeansException
{ {
return (T) beanFactory.getBean(name); return (T) beanFactory.getBean(name);
} }
/** /**
* requiredType * requiredType
* *
* @param clz * @param clz
* @return * @return
* @throws org.springframework.beans.BeansException * @throws org.springframework.beans.BeansException
* *
*/ */
public static <T> T getBean(Class<T> clz) throws BeansException public static <T> T getBean(Class<T> clz) throws BeansException
{ {
T result = (T) beanFactory.getBean(clz); T result = (T) beanFactory.getBean(clz);
return result; return result;
} }
/** /**
* BeanFactorybeantrue * BeanFactorybeantrue
* *
* @param name * @param name
* @return boolean * @return boolean
*/ */
public static boolean containsBean(String name) public static boolean containsBean(String name)
{ {
return beanFactory.containsBean(name); return beanFactory.containsBean(name);
} }
/** /**
* beansingletonprototype beanNoSuchBeanDefinitionException * beansingletonprototype beanNoSuchBeanDefinitionException
* *
* @param name * @param name
* @return boolean * @return boolean
* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
* *
*/ */
public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException
{ {
return beanFactory.isSingleton(name); return beanFactory.isSingleton(name);
} }
/** /**
* @param name * @param name
* @return Class * @return Class
* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
* *
*/ */
public static Class<?> getType(String name) throws NoSuchBeanDefinitionException public static Class<?> getType(String name) throws NoSuchBeanDefinitionException
{ {
return beanFactory.getType(name); return beanFactory.getType(name);
} }
/** /**
* beanbean * beanbean
* *
* @param name * @param name
* @return * @return
* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
* *
*/ */
public static String[] getAliases(String name) throws NoSuchBeanDefinitionException public static String[] getAliases(String name) throws NoSuchBeanDefinitionException
{ {
return beanFactory.getAliases(name); return beanFactory.getAliases(name);
} }
/** /**
* aop * aop
* *
* @param invoker * @param invoker
* @return * @return
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T> T getAopProxy(T invoker) public static <T> T getAopProxy(T invoker)
{ {
return (T) AopContext.currentProxy(); return (T) AopContext.currentProxy();
} }
} }

View File

@ -1,110 +1,110 @@
package com.ruoyi.common.core.utils.bean; package HomeWork.common.core.utils.bean;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
/** /**
* Bean * Bean
* *
* @author ruoyi * @author ruoyi
*/ */
public class BeanUtils extends org.springframework.beans.BeanUtils public class BeanUtils extends org.springframework.beans.BeanUtils
{ {
/** Bean方法名中属性名开始的下标 */ /** Bean方法名中属性名开始的下标 */
private static final int BEAN_METHOD_PROP_INDEX = 3; private static final int BEAN_METHOD_PROP_INDEX = 3;
/** * 匹配getter方法的正则表达式 */ /** * 匹配getter方法的正则表达式 */
private static final Pattern GET_PATTERN = Pattern.compile("get(\\p{javaUpperCase}\\w*)"); private static final Pattern GET_PATTERN = Pattern.compile("get(\\p{javaUpperCase}\\w*)");
/** * 匹配setter方法的正则表达式 */ /** * 匹配setter方法的正则表达式 */
private static final Pattern SET_PATTERN = Pattern.compile("set(\\p{javaUpperCase}\\w*)"); private static final Pattern SET_PATTERN = Pattern.compile("set(\\p{javaUpperCase}\\w*)");
/** /**
* Bean * Bean
* *
* @param dest * @param dest
* @param src * @param src
*/ */
public static void copyBeanProp(Object dest, Object src) public static void copyBeanProp(Object dest, Object src)
{ {
try try
{ {
copyProperties(src, dest); copyProperties(src, dest);
} }
catch (Exception e) catch (Exception e)
{ {
e.printStackTrace(); e.printStackTrace();
} }
} }
/** /**
* setter * setter
* *
* @param obj * @param obj
* @return setter * @return setter
*/ */
public static List<Method> getSetterMethods(Object obj) public static List<Method> getSetterMethods(Object obj)
{ {
// setter方法列表 // setter方法列表
List<Method> setterMethods = new ArrayList<Method>(); List<Method> setterMethods = new ArrayList<Method>();
// 获取所有方法 // 获取所有方法
Method[] methods = obj.getClass().getMethods(); Method[] methods = obj.getClass().getMethods();
// 查找setter方法 // 查找setter方法
for (Method method : methods) for (Method method : methods)
{ {
Matcher m = SET_PATTERN.matcher(method.getName()); Matcher m = SET_PATTERN.matcher(method.getName());
if (m.matches() && (method.getParameterTypes().length == 1)) if (m.matches() && (method.getParameterTypes().length == 1))
{ {
setterMethods.add(method); setterMethods.add(method);
} }
} }
// 返回setter方法列表 // 返回setter方法列表
return setterMethods; return setterMethods;
} }
/** /**
* getter * getter
* *
* @param obj * @param obj
* @return getter * @return getter
*/ */
public static List<Method> getGetterMethods(Object obj) public static List<Method> getGetterMethods(Object obj)
{ {
// getter方法列表 // getter方法列表
List<Method> getterMethods = new ArrayList<Method>(); List<Method> getterMethods = new ArrayList<Method>();
// 获取所有方法 // 获取所有方法
Method[] methods = obj.getClass().getMethods(); Method[] methods = obj.getClass().getMethods();
// 查找getter方法 // 查找getter方法
for (Method method : methods) for (Method method : methods)
{ {
Matcher m = GET_PATTERN.matcher(method.getName()); Matcher m = GET_PATTERN.matcher(method.getName());
if (m.matches() && (method.getParameterTypes().length == 0)) if (m.matches() && (method.getParameterTypes().length == 0))
{ {
getterMethods.add(method); getterMethods.add(method);
} }
} }
// 返回getter方法列表 // 返回getter方法列表
return getterMethods; return getterMethods;
} }
/** /**
* Bean<br> * Bean<br>
* getName()setName()getName()setAge() * getName()setName()getName()setAge()
* *
* @param m1 1 * @param m1 1
* @param m2 2 * @param m2 2
* @return truefalse * @return truefalse
*/ */
public static boolean isMethodPropEquals(String m1, String m2) public static boolean isMethodPropEquals(String m1, String m2)
{ {
return m1.substring(BEAN_METHOD_PROP_INDEX).equals(m2.substring(BEAN_METHOD_PROP_INDEX)); return m1.substring(BEAN_METHOD_PROP_INDEX).equals(m2.substring(BEAN_METHOD_PROP_INDEX));
} }
} }

View File

@ -1,24 +1,24 @@
package com.ruoyi.common.core.utils.bean; package HomeWork.common.core.utils.bean;
import java.util.Set; import java.util.Set;
import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException; import javax.validation.ConstraintViolationException;
import javax.validation.Validator; import javax.validation.Validator;
/** /**
* bean * bean
* *
* @author ruoyi * @author ruoyi
*/ */
public class BeanValidators public class BeanValidators
{ {
public static void validateWithException(Validator validator, Object object, Class<?>... groups) public static void validateWithException(Validator validator, Object object, Class<?>... groups)
throws ConstraintViolationException throws ConstraintViolationException
{ {
Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups); Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
if (!constraintViolations.isEmpty()) if (!constraintViolations.isEmpty())
{ {
throw new ConstraintViolationException(constraintViolations); throw new ConstraintViolationException(constraintViolations);
} }
} }
} }

View File

@ -1,95 +1,95 @@
package com.ruoyi.common.core.utils.file; package HomeWork.common.core.utils.file;
import java.io.File; import java.io.File;
import java.util.Objects; import java.util.Objects;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class FileTypeUtils public class FileTypeUtils
{ {
/** /**
* *
* <p> * <p>
* : ruoyi.txt, : txt * : ruoyi.txt, : txt
* *
* @param file * @param file
* @return ".") * @return ".")
*/ */
public static String getFileType(File file) public static String getFileType(File file)
{ {
if (null == file) if (null == file)
{ {
return StringUtils.EMPTY; return StringUtils.EMPTY;
} }
return getFileType(file.getName()); return getFileType(file.getName());
} }
/** /**
* *
* <p> * <p>
* : ruoyi.txt, : txt * : ruoyi.txt, : txt
* *
* @param fileName * @param fileName
* @return ".") * @return ".")
*/ */
public static String getFileType(String fileName) public static String getFileType(String fileName)
{ {
int separatorIndex = fileName.lastIndexOf("."); int separatorIndex = fileName.lastIndexOf(".");
if (separatorIndex < 0) if (separatorIndex < 0)
{ {
return ""; return "";
} }
return fileName.substring(separatorIndex + 1).toLowerCase(); return fileName.substring(separatorIndex + 1).toLowerCase();
} }
/** /**
* *
* *
* @param file * @param file
* @return * @return
*/ */
public static final String getExtension(MultipartFile file) public static final String getExtension(MultipartFile file)
{ {
String extension = FilenameUtils.getExtension(file.getOriginalFilename()); String extension = FilenameUtils.getExtension(file.getOriginalFilename());
if (StringUtils.isEmpty(extension)) if (StringUtils.isEmpty(extension))
{ {
extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType())); extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType()));
} }
return extension; return extension;
} }
/** /**
* *
* *
* @param photoByte * @param photoByte
* @return ".") * @return ".")
*/ */
public static String getFileExtendName(byte[] photoByte) public static String getFileExtendName(byte[] photoByte)
{ {
String strFileExtendName = "JPG"; String strFileExtendName = "JPG";
if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56) if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56)
&& ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97)) && ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97))
{ {
strFileExtendName = "GIF"; strFileExtendName = "GIF";
} }
else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70)) else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70))
{ {
strFileExtendName = "JPG"; strFileExtendName = "JPG";
} }
else if ((photoByte[0] == 66) && (photoByte[1] == 77)) else if ((photoByte[0] == 66) && (photoByte[1] == 77))
{ {
strFileExtendName = "BMP"; strFileExtendName = "BMP";
} }
else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71)) else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71))
{ {
strFileExtendName = "PNG"; strFileExtendName = "PNG";
} }
return strFileExtendName; return strFileExtendName;
} }
} }

View File

@ -1,253 +1,253 @@
package com.ruoyi.common.core.utils.file; package HomeWork.common.core.utils.file;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import com.ruoyi.common.core.utils.StringUtils; import HomeWork.common.core.utils.StringUtils;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class FileUtils public class FileUtils
{ {
/** 字符常量:斜杠 {@code '/'} */ /** 字符常量:斜杠 {@code '/'} */
public static final char SLASH = '/'; public static final char SLASH = '/';
/** 字符常量:反斜杠 {@code '\\'} */ /** 字符常量:反斜杠 {@code '\\'} */
public static final char BACKSLASH = '\\'; public static final char BACKSLASH = '\\';
public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+"; public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+";
/** /**
* byte * byte
* *
* @param filePath * @param filePath
* @param os * @param os
* @return * @return
*/ */
public static void writeBytes(String filePath, OutputStream os) throws IOException public static void writeBytes(String filePath, OutputStream os) throws IOException
{ {
FileInputStream fis = null; FileInputStream fis = null;
try try
{ {
File file = new File(filePath); File file = new File(filePath);
if (!file.exists()) if (!file.exists())
{ {
throw new FileNotFoundException(filePath); throw new FileNotFoundException(filePath);
} }
fis = new FileInputStream(file); fis = new FileInputStream(file);
byte[] b = new byte[1024]; byte[] b = new byte[1024];
int length; int length;
while ((length = fis.read(b)) > 0) while ((length = fis.read(b)) > 0)
{ {
os.write(b, 0, length); os.write(b, 0, length);
} }
} }
catch (IOException e) catch (IOException e)
{ {
throw e; throw e;
} }
finally finally
{ {
if (os != null) if (os != null)
{ {
try try
{ {
os.close(); os.close();
} }
catch (IOException e1) catch (IOException e1)
{ {
e1.printStackTrace(); e1.printStackTrace();
} }
} }
if (fis != null) if (fis != null)
{ {
try try
{ {
fis.close(); fis.close();
} }
catch (IOException e1) catch (IOException e1)
{ {
e1.printStackTrace(); e1.printStackTrace();
} }
} }
} }
} }
/** /**
* *
* *
* @param filePath * @param filePath
* @return * @return
*/ */
public static boolean deleteFile(String filePath) public static boolean deleteFile(String filePath)
{ {
boolean flag = false; boolean flag = false;
File file = new File(filePath); File file = new File(filePath);
// 路径为文件且不为空则进行删除 // 路径为文件且不为空则进行删除
if (file.isFile() && file.exists()) if (file.isFile() && file.exists())
{ {
flag = file.delete(); flag = file.delete();
} }
return flag; return flag;
} }
/** /**
* *
* *
* @param filename * @param filename
* @return true false * @return true false
*/ */
public static boolean isValidFilename(String filename) public static boolean isValidFilename(String filename)
{ {
return filename.matches(FILENAME_PATTERN); return filename.matches(FILENAME_PATTERN);
} }
/** /**
* *
* *
* @param resource * @param resource
* @return true false * @return true false
*/ */
public static boolean checkAllowDownload(String resource) public static boolean checkAllowDownload(String resource)
{ {
// 禁止目录上跳级别 // 禁止目录上跳级别
if (StringUtils.contains(resource, "..")) if (StringUtils.contains(resource, ".."))
{ {
return false; return false;
} }
// 判断是否在允许下载的文件规则内 // 判断是否在允许下载的文件规则内
return ArrayUtils.contains(MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, FileTypeUtils.getFileType(resource)); return ArrayUtils.contains(MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, FileTypeUtils.getFileType(resource));
} }
/** /**
* *
* *
* @param request * @param request
* @param fileName * @param fileName
* @return * @return
*/ */
public static String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException public static String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException
{ {
final String agent = request.getHeader("USER-AGENT"); final String agent = request.getHeader("USER-AGENT");
String filename = fileName; String filename = fileName;
if (agent.contains("MSIE")) if (agent.contains("MSIE"))
{ {
// IE浏览器 // IE浏览器
filename = URLEncoder.encode(filename, "utf-8"); filename = URLEncoder.encode(filename, "utf-8");
filename = filename.replace("+", " "); filename = filename.replace("+", " ");
} }
else if (agent.contains("Firefox")) else if (agent.contains("Firefox"))
{ {
// 火狐浏览器 // 火狐浏览器
filename = new String(fileName.getBytes(), "ISO8859-1"); filename = new String(fileName.getBytes(), "ISO8859-1");
} }
else if (agent.contains("Chrome")) else if (agent.contains("Chrome"))
{ {
// google浏览器 // google浏览器
filename = URLEncoder.encode(filename, "utf-8"); filename = URLEncoder.encode(filename, "utf-8");
} }
else else
{ {
// 其它浏览器 // 其它浏览器
filename = URLEncoder.encode(filename, "utf-8"); filename = URLEncoder.encode(filename, "utf-8");
} }
return filename; return filename;
} }
/** /**
* *
* *
* @param filePath * @param filePath
* @return * @return
*/ */
public static String getName(String filePath) public static String getName(String filePath)
{ {
if (null == filePath) if (null == filePath)
{ {
return null; return null;
} }
int len = filePath.length(); int len = filePath.length();
if (0 == len) if (0 == len)
{ {
return filePath; return filePath;
} }
if (isFileSeparator(filePath.charAt(len - 1))) if (isFileSeparator(filePath.charAt(len - 1)))
{ {
// 以分隔符结尾的去掉结尾分隔符 // 以分隔符结尾的去掉结尾分隔符
len--; len--;
} }
int begin = 0; int begin = 0;
char c; char c;
for (int i = len - 1; i > -1; i--) for (int i = len - 1; i > -1; i--)
{ {
c = filePath.charAt(i); c = filePath.charAt(i);
if (isFileSeparator(c)) if (isFileSeparator(c))
{ {
// 查找最后一个路径分隔符(/或者\ // 查找最后一个路径分隔符(/或者\
begin = i + 1; begin = i + 1;
break; break;
} }
} }
return filePath.substring(begin, len); return filePath.substring(begin, len);
} }
/** /**
* WindowsLinuxUnix<br> * WindowsLinuxUnix<br>
* Windows\LinuxUnix/ * Windows\LinuxUnix/
* *
* @param c * @param c
* @return WindowsLinuxUnix * @return WindowsLinuxUnix
*/ */
public static boolean isFileSeparator(char c) public static boolean isFileSeparator(char c)
{ {
return SLASH == c || BACKSLASH == c; return SLASH == c || BACKSLASH == c;
} }
/** /**
* *
* *
* @param response * @param response
* @param realFileName * @param realFileName
* @return * @return
*/ */
public static void setAttachmentResponseHeader(HttpServletResponse response, String realFileName) throws UnsupportedEncodingException public static void setAttachmentResponseHeader(HttpServletResponse response, String realFileName) throws UnsupportedEncodingException
{ {
String percentEncodedFileName = percentEncode(realFileName); String percentEncodedFileName = percentEncode(realFileName);
StringBuilder contentDispositionValue = new StringBuilder(); StringBuilder contentDispositionValue = new StringBuilder();
contentDispositionValue.append("attachment; filename=") contentDispositionValue.append("attachment; filename=")
.append(percentEncodedFileName) .append(percentEncodedFileName)
.append(";") .append(";")
.append("filename*=") .append("filename*=")
.append("utf-8''") .append("utf-8''")
.append(percentEncodedFileName); .append(percentEncodedFileName);
response.setHeader("Content-disposition", contentDispositionValue.toString()); response.setHeader("Content-disposition", contentDispositionValue.toString());
response.setHeader("download-filename", percentEncodedFileName); response.setHeader("download-filename", percentEncodedFileName);
} }
/** /**
* *
* *
* @param s * @param s
* @return * @return
*/ */
public static String percentEncode(String s) throws UnsupportedEncodingException public static String percentEncode(String s) throws UnsupportedEncodingException
{ {
String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString()); String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString());
return encode.replaceAll("\\+", "%20"); return encode.replaceAll("\\+", "%20");
} }
} }

View File

@ -1,84 +1,84 @@
package com.ruoyi.common.core.utils.file; package HomeWork.common.core.utils.file;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.net.URL; import java.net.URL;
import java.net.URLConnection; import java.net.URLConnection;
import java.util.Arrays; import java.util.Arrays;
import org.apache.poi.util.IOUtils; import org.apache.poi.util.IOUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class ImageUtils public class ImageUtils
{ {
private static final Logger log = LoggerFactory.getLogger(ImageUtils.class); private static final Logger log = LoggerFactory.getLogger(ImageUtils.class);
public static byte[] getImage(String imagePath) public static byte[] getImage(String imagePath)
{ {
InputStream is = getFile(imagePath); InputStream is = getFile(imagePath);
try try
{ {
return IOUtils.toByteArray(is); return IOUtils.toByteArray(is);
} }
catch (Exception e) catch (Exception e)
{ {
log.error("图片加载异常 {}", e); log.error("图片加载异常 {}", e);
return null; return null;
} }
finally finally
{ {
IOUtils.closeQuietly(is); IOUtils.closeQuietly(is);
} }
} }
public static InputStream getFile(String imagePath) public static InputStream getFile(String imagePath)
{ {
try try
{ {
byte[] result = readFile(imagePath); byte[] result = readFile(imagePath);
result = Arrays.copyOf(result, result.length); result = Arrays.copyOf(result, result.length);
return new ByteArrayInputStream(result); return new ByteArrayInputStream(result);
} }
catch (Exception e) catch (Exception e)
{ {
log.error("获取图片异常 {}", e); log.error("获取图片异常 {}", e);
} }
return null; return null;
} }
/** /**
* *
* *
* @param url * @param url
* @return * @return
*/ */
public static byte[] readFile(String url) public static byte[] readFile(String url)
{ {
InputStream in = null; InputStream in = null;
try try
{ {
// 网络地址 // 网络地址
URL urlObj = new URL(url); URL urlObj = new URL(url);
URLConnection urlConnection = urlObj.openConnection(); URLConnection urlConnection = urlObj.openConnection();
urlConnection.setConnectTimeout(30 * 1000); urlConnection.setConnectTimeout(30 * 1000);
urlConnection.setReadTimeout(60 * 1000); urlConnection.setReadTimeout(60 * 1000);
urlConnection.setDoInput(true); urlConnection.setDoInput(true);
in = urlConnection.getInputStream(); in = urlConnection.getInputStream();
return IOUtils.toByteArray(in); return IOUtils.toByteArray(in);
} }
catch (Exception e) catch (Exception e)
{ {
log.error("访问文件异常 {}", e); log.error("访问文件异常 {}", e);
return null; return null;
} }
finally finally
{ {
IOUtils.closeQuietly(in); IOUtils.closeQuietly(in);
} }
} }
} }

View File

@ -1,59 +1,59 @@
package com.ruoyi.common.core.utils.file; package HomeWork.common.core.utils.file;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class MimeTypeUtils public class MimeTypeUtils
{ {
public static final String IMAGE_PNG = "image/png"; public static final String IMAGE_PNG = "image/png";
public static final String IMAGE_JPG = "image/jpg"; public static final String IMAGE_JPG = "image/jpg";
public static final String IMAGE_JPEG = "image/jpeg"; public static final String IMAGE_JPEG = "image/jpeg";
public static final String IMAGE_BMP = "image/bmp"; public static final String IMAGE_BMP = "image/bmp";
public static final String IMAGE_GIF = "image/gif"; public static final String IMAGE_GIF = "image/gif";
public static final String[] IMAGE_EXTENSION = { "bmp", "gif", "jpg", "jpeg", "png" }; public static final String[] IMAGE_EXTENSION = { "bmp", "gif", "jpg", "jpeg", "png" };
public static final String[] FLASH_EXTENSION = { "swf", "flv" }; public static final String[] FLASH_EXTENSION = { "swf", "flv" };
public static final String[] MEDIA_EXTENSION = { "swf", "flv", "mp3", "wav", "wma", "wmv", "mid", "avi", "mpg", public static final String[] MEDIA_EXTENSION = { "swf", "flv", "mp3", "wav", "wma", "wmv", "mid", "avi", "mpg",
"asf", "rm", "rmvb" }; "asf", "rm", "rmvb" };
public static final String[] VIDEO_EXTENSION = { "mp4", "avi", "rmvb" }; public static final String[] VIDEO_EXTENSION = { "mp4", "avi", "rmvb" };
public static final String[] DEFAULT_ALLOWED_EXTENSION = { public static final String[] DEFAULT_ALLOWED_EXTENSION = {
// 图片 // 图片
"bmp", "gif", "jpg", "jpeg", "png", "bmp", "gif", "jpg", "jpeg", "png",
// word excel powerpoint // word excel powerpoint
"doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "html", "htm", "txt",
// 压缩文件 // 压缩文件
"rar", "zip", "gz", "bz2", "rar", "zip", "gz", "bz2",
// 视频格式 // 视频格式
"mp4", "avi", "rmvb", "mp4", "avi", "rmvb",
// pdf // pdf
"pdf" }; "pdf" };
public static String getExtension(String prefix) public static String getExtension(String prefix)
{ {
switch (prefix) switch (prefix)
{ {
case IMAGE_PNG: case IMAGE_PNG:
return "png"; return "png";
case IMAGE_JPG: case IMAGE_JPG:
return "jpg"; return "jpg";
case IMAGE_JPEG: case IMAGE_JPEG:
return "jpeg"; return "jpeg";
case IMAGE_BMP: case IMAGE_BMP:
return "bmp"; return "bmp";
case IMAGE_GIF: case IMAGE_GIF:
return "gif"; return "gif";
default: default:
return ""; return "";
} }
} }
} }

View File

@ -1,167 +1,167 @@
package com.ruoyi.common.core.utils.html; package HomeWork.common.core.utils.html;
import com.ruoyi.common.core.utils.StringUtils; import HomeWork.common.core.utils.StringUtils;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class EscapeUtil public class EscapeUtil
{ {
public static final String RE_HTML_MARK = "(<[^<]*?>)|(<[\\s]*?/[^<]*?>)|(<[^<]*?/[\\s]*?>)"; public static final String RE_HTML_MARK = "(<[^<]*?>)|(<[\\s]*?/[^<]*?>)|(<[^<]*?/[\\s]*?>)";
private static final char[][] TEXT = new char[64][]; private static final char[][] TEXT = new char[64][];
static static
{ {
for (int i = 0; i < 64; i++) for (int i = 0; i < 64; i++)
{ {
TEXT[i] = new char[] { (char) i }; TEXT[i] = new char[] { (char) i };
} }
// special HTML characters // special HTML characters
TEXT['\''] = "&#039;".toCharArray(); // 单引号 TEXT['\''] = "&#039;".toCharArray(); // 单引号
TEXT['"'] = "&#34;".toCharArray(); // 双引号 TEXT['"'] = "&#34;".toCharArray(); // 双引号
TEXT['&'] = "&#38;".toCharArray(); // &符 TEXT['&'] = "&#38;".toCharArray(); // &符
TEXT['<'] = "&#60;".toCharArray(); // 小于号 TEXT['<'] = "&#60;".toCharArray(); // 小于号
TEXT['>'] = "&#62;".toCharArray(); // 大于号 TEXT['>'] = "&#62;".toCharArray(); // 大于号
} }
/** /**
* HTML * HTML
* *
* @param text * @param text
* @return * @return
*/ */
public static String escape(String text) public static String escape(String text)
{ {
return encode(text); return encode(text);
} }
/** /**
* HTML * HTML
* *
* @param content HTML * @param content HTML
* @return * @return
*/ */
public static String unescape(String content) public static String unescape(String content)
{ {
return decode(content); return decode(content);
} }
/** /**
* HTML * HTML
* *
* @param content * @param content
* @return * @return
*/ */
public static String clean(String content) public static String clean(String content)
{ {
return new HTMLFilter().filter(content); return new HTMLFilter().filter(content);
} }
/** /**
* Escape * Escape
* *
* @param text * @param text
* @return * @return
*/ */
private static String encode(String text) private static String encode(String text)
{ {
if (StringUtils.isEmpty(text)) if (StringUtils.isEmpty(text))
{ {
return StringUtils.EMPTY; return StringUtils.EMPTY;
} }
final StringBuilder tmp = new StringBuilder(text.length() * 6); final StringBuilder tmp = new StringBuilder(text.length() * 6);
char c; char c;
for (int i = 0; i < text.length(); i++) for (int i = 0; i < text.length(); i++)
{ {
c = text.charAt(i); c = text.charAt(i);
if (c < 256) if (c < 256)
{ {
tmp.append("%"); tmp.append("%");
if (c < 16) if (c < 16)
{ {
tmp.append("0"); tmp.append("0");
} }
tmp.append(Integer.toString(c, 16)); tmp.append(Integer.toString(c, 16));
} }
else else
{ {
tmp.append("%u"); tmp.append("%u");
if (c <= 0xfff) if (c <= 0xfff)
{ {
// issue#I49JU8@Gitee // issue#I49JU8@Gitee
tmp.append("0"); tmp.append("0");
} }
tmp.append(Integer.toString(c, 16)); tmp.append(Integer.toString(c, 16));
} }
} }
return tmp.toString(); return tmp.toString();
} }
/** /**
* Escape * Escape
* *
* @param content * @param content
* @return * @return
*/ */
public static String decode(String content) public static String decode(String content)
{ {
if (StringUtils.isEmpty(content)) if (StringUtils.isEmpty(content))
{ {
return content; return content;
} }
StringBuilder tmp = new StringBuilder(content.length()); StringBuilder tmp = new StringBuilder(content.length());
int lastPos = 0, pos = 0; int lastPos = 0, pos = 0;
char ch; char ch;
while (lastPos < content.length()) while (lastPos < content.length())
{ {
pos = content.indexOf("%", lastPos); pos = content.indexOf("%", lastPos);
if (pos == lastPos) if (pos == lastPos)
{ {
if (content.charAt(pos + 1) == 'u') if (content.charAt(pos + 1) == 'u')
{ {
ch = (char) Integer.parseInt(content.substring(pos + 2, pos + 6), 16); ch = (char) Integer.parseInt(content.substring(pos + 2, pos + 6), 16);
tmp.append(ch); tmp.append(ch);
lastPos = pos + 6; lastPos = pos + 6;
} }
else else
{ {
ch = (char) Integer.parseInt(content.substring(pos + 1, pos + 3), 16); ch = (char) Integer.parseInt(content.substring(pos + 1, pos + 3), 16);
tmp.append(ch); tmp.append(ch);
lastPos = pos + 3; lastPos = pos + 3;
} }
} }
else else
{ {
if (pos == -1) if (pos == -1)
{ {
tmp.append(content.substring(lastPos)); tmp.append(content.substring(lastPos));
lastPos = content.length(); lastPos = content.length();
} }
else else
{ {
tmp.append(content.substring(lastPos, pos)); tmp.append(content.substring(lastPos, pos));
lastPos = pos; lastPos = pos;
} }
} }
} }
return tmp.toString(); return tmp.toString();
} }
public static void main(String[] args) public static void main(String[] args)
{ {
String html = "<script>alert(1);</script>"; String html = "<script>alert(1);</script>";
String escape = EscapeUtil.escape(html); String escape = EscapeUtil.escape(html);
// String html = "<scr<script>ipt>alert(\"XSS\")</scr<script>ipt>"; // String html = "<scr<script>ipt>alert(\"XSS\")</scr<script>ipt>";
// String html = "<123"; // String html = "<123";
// String html = "123>"; // String html = "123>";
System.out.println("clean: " + EscapeUtil.clean(html)); System.out.println("clean: " + EscapeUtil.clean(html));
System.out.println("escape: " + escape); System.out.println("escape: " + escape);
System.out.println("unescape: " + EscapeUtil.unescape(escape)); System.out.println("unescape: " + EscapeUtil.unescape(escape));
} }
} }

View File

@ -1,382 +1,382 @@
package com.ruoyi.common.core.utils.ip; package HomeWork.common.core.utils.ip;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import com.ruoyi.common.core.utils.ServletUtils; import HomeWork.common.core.utils.ServletUtils;
import com.ruoyi.common.core.utils.StringUtils; import HomeWork.common.core.utils.StringUtils;
/** /**
* IP * IP
* *
* @author ruoyi * @author ruoyi
*/ */
public class IpUtils public class IpUtils
{ {
public final static String REGX_0_255 = "(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)"; public final static String REGX_0_255 = "(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)";
// 匹配 ip // 匹配 ip
public final static String REGX_IP = "((" + REGX_0_255 + "\\.){3}" + REGX_0_255 + ")"; public final static String REGX_IP = "((" + REGX_0_255 + "\\.){3}" + REGX_0_255 + ")";
public final static String REGX_IP_WILDCARD = "(((\\*\\.){3}\\*)|(" + REGX_0_255 + "(\\.\\*){3})|(" + REGX_0_255 + "\\." + REGX_0_255 + ")(\\.\\*){2}" + "|((" + REGX_0_255 + "\\.){3}\\*))"; public final static String REGX_IP_WILDCARD = "(((\\*\\.){3}\\*)|(" + REGX_0_255 + "(\\.\\*){3})|(" + REGX_0_255 + "\\." + REGX_0_255 + ")(\\.\\*){2}" + "|((" + REGX_0_255 + "\\.){3}\\*))";
// 匹配网段 // 匹配网段
public final static String REGX_IP_SEG = "(" + REGX_IP + "\\-" + REGX_IP + ")"; public final static String REGX_IP_SEG = "(" + REGX_IP + "\\-" + REGX_IP + ")";
/** /**
* IP * IP
* *
* @return IP * @return IP
*/ */
public static String getIpAddr() public static String getIpAddr()
{ {
return getIpAddr(ServletUtils.getRequest()); return getIpAddr(ServletUtils.getRequest());
} }
/** /**
* IP * IP
* *
* @param request * @param request
* @return IP * @return IP
*/ */
public static String getIpAddr(HttpServletRequest request) public static String getIpAddr(HttpServletRequest request)
{ {
if (request == null) if (request == null)
{ {
return "unknown"; return "unknown";
} }
String ip = request.getHeader("x-forwarded-for"); String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
{ {
ip = request.getHeader("Proxy-Client-IP"); ip = request.getHeader("Proxy-Client-IP");
} }
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
{ {
ip = request.getHeader("X-Forwarded-For"); ip = request.getHeader("X-Forwarded-For");
} }
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
{ {
ip = request.getHeader("WL-Proxy-Client-IP"); ip = request.getHeader("WL-Proxy-Client-IP");
} }
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
{ {
ip = request.getHeader("X-Real-IP"); ip = request.getHeader("X-Real-IP");
} }
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
{ {
ip = request.getRemoteAddr(); ip = request.getRemoteAddr();
} }
return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : getMultistageReverseProxyIp(ip); return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : getMultistageReverseProxyIp(ip);
} }
/** /**
* IP * IP
* *
* @param ip IP * @param ip IP
* @return * @return
*/ */
public static boolean internalIp(String ip) public static boolean internalIp(String ip)
{ {
byte[] addr = textToNumericFormatV4(ip); byte[] addr = textToNumericFormatV4(ip);
return internalIp(addr) || "127.0.0.1".equals(ip); return internalIp(addr) || "127.0.0.1".equals(ip);
} }
/** /**
* IP * IP
* *
* @param addr byte * @param addr byte
* @return * @return
*/ */
private static boolean internalIp(byte[] addr) private static boolean internalIp(byte[] addr)
{ {
if (StringUtils.isNull(addr) || addr.length < 2) if (StringUtils.isNull(addr) || addr.length < 2)
{ {
return true; return true;
} }
final byte b0 = addr[0]; final byte b0 = addr[0];
final byte b1 = addr[1]; final byte b1 = addr[1];
// 10.x.x.x/8 // 10.x.x.x/8
final byte SECTION_1 = 0x0A; final byte SECTION_1 = 0x0A;
// 172.16.x.x/12 // 172.16.x.x/12
final byte SECTION_2 = (byte) 0xAC; final byte SECTION_2 = (byte) 0xAC;
final byte SECTION_3 = (byte) 0x10; final byte SECTION_3 = (byte) 0x10;
final byte SECTION_4 = (byte) 0x1F; final byte SECTION_4 = (byte) 0x1F;
// 192.168.x.x/16 // 192.168.x.x/16
final byte SECTION_5 = (byte) 0xC0; final byte SECTION_5 = (byte) 0xC0;
final byte SECTION_6 = (byte) 0xA8; final byte SECTION_6 = (byte) 0xA8;
switch (b0) switch (b0)
{ {
case SECTION_1: case SECTION_1:
return true; return true;
case SECTION_2: case SECTION_2:
if (b1 >= SECTION_3 && b1 <= SECTION_4) if (b1 >= SECTION_3 && b1 <= SECTION_4)
{ {
return true; return true;
} }
case SECTION_5: case SECTION_5:
switch (b1) switch (b1)
{ {
case SECTION_6: case SECTION_6:
return true; return true;
} }
default: default:
return false; return false;
} }
} }
/** /**
* IPv4 * IPv4
* *
* @param text IPv4 * @param text IPv4
* @return byte * @return byte
*/ */
public static byte[] textToNumericFormatV4(String text) public static byte[] textToNumericFormatV4(String text)
{ {
if (text.length() == 0) if (text.length() == 0)
{ {
return null; return null;
} }
byte[] bytes = new byte[4]; byte[] bytes = new byte[4];
String[] elements = text.split("\\.", -1); String[] elements = text.split("\\.", -1);
try try
{ {
long l; long l;
int i; int i;
switch (elements.length) switch (elements.length)
{ {
case 1: case 1:
l = Long.parseLong(elements[0]); l = Long.parseLong(elements[0]);
if ((l < 0L) || (l > 4294967295L)) if ((l < 0L) || (l > 4294967295L))
{ {
return null; return null;
} }
bytes[0] = (byte) (int) (l >> 24 & 0xFF); bytes[0] = (byte) (int) (l >> 24 & 0xFF);
bytes[1] = (byte) (int) ((l & 0xFFFFFF) >> 16 & 0xFF); bytes[1] = (byte) (int) ((l & 0xFFFFFF) >> 16 & 0xFF);
bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF); bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF);
bytes[3] = (byte) (int) (l & 0xFF); bytes[3] = (byte) (int) (l & 0xFF);
break; break;
case 2: case 2:
l = Integer.parseInt(elements[0]); l = Integer.parseInt(elements[0]);
if ((l < 0L) || (l > 255L)) if ((l < 0L) || (l > 255L))
{ {
return null; return null;
} }
bytes[0] = (byte) (int) (l & 0xFF); bytes[0] = (byte) (int) (l & 0xFF);
l = Integer.parseInt(elements[1]); l = Integer.parseInt(elements[1]);
if ((l < 0L) || (l > 16777215L)) if ((l < 0L) || (l > 16777215L))
{ {
return null; return null;
} }
bytes[1] = (byte) (int) (l >> 16 & 0xFF); bytes[1] = (byte) (int) (l >> 16 & 0xFF);
bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF); bytes[2] = (byte) (int) ((l & 0xFFFF) >> 8 & 0xFF);
bytes[3] = (byte) (int) (l & 0xFF); bytes[3] = (byte) (int) (l & 0xFF);
break; break;
case 3: case 3:
for (i = 0; i < 2; ++i) for (i = 0; i < 2; ++i)
{ {
l = Integer.parseInt(elements[i]); l = Integer.parseInt(elements[i]);
if ((l < 0L) || (l > 255L)) if ((l < 0L) || (l > 255L))
{ {
return null; return null;
} }
bytes[i] = (byte) (int) (l & 0xFF); bytes[i] = (byte) (int) (l & 0xFF);
} }
l = Integer.parseInt(elements[2]); l = Integer.parseInt(elements[2]);
if ((l < 0L) || (l > 65535L)) if ((l < 0L) || (l > 65535L))
{ {
return null; return null;
} }
bytes[2] = (byte) (int) (l >> 8 & 0xFF); bytes[2] = (byte) (int) (l >> 8 & 0xFF);
bytes[3] = (byte) (int) (l & 0xFF); bytes[3] = (byte) (int) (l & 0xFF);
break; break;
case 4: case 4:
for (i = 0; i < 4; ++i) for (i = 0; i < 4; ++i)
{ {
l = Integer.parseInt(elements[i]); l = Integer.parseInt(elements[i]);
if ((l < 0L) || (l > 255L)) if ((l < 0L) || (l > 255L))
{ {
return null; return null;
} }
bytes[i] = (byte) (int) (l & 0xFF); bytes[i] = (byte) (int) (l & 0xFF);
} }
break; break;
default: default:
return null; return null;
} }
} }
catch (NumberFormatException e) catch (NumberFormatException e)
{ {
return null; return null;
} }
return bytes; return bytes;
} }
/** /**
* IP * IP
* *
* @return IP * @return IP
*/ */
public static String getHostIp() public static String getHostIp()
{ {
try try
{ {
return InetAddress.getLocalHost().getHostAddress(); return InetAddress.getLocalHost().getHostAddress();
} }
catch (UnknownHostException e) catch (UnknownHostException e)
{ {
} }
return "127.0.0.1"; return "127.0.0.1";
} }
/** /**
* *
* *
* @return * @return
*/ */
public static String getHostName() public static String getHostName()
{ {
try try
{ {
return InetAddress.getLocalHost().getHostName(); return InetAddress.getLocalHost().getHostName();
} }
catch (UnknownHostException e) catch (UnknownHostException e)
{ {
} }
return "未知"; return "未知";
} }
/** /**
* unknown IP * unknown IP
* *
* @param ip IP * @param ip IP
* @return unknown IP * @return unknown IP
*/ */
public static String getMultistageReverseProxyIp(String ip) public static String getMultistageReverseProxyIp(String ip)
{ {
// 多级反向代理检测 // 多级反向代理检测
if (ip != null && ip.indexOf(",") > 0) if (ip != null && ip.indexOf(",") > 0)
{ {
final String[] ips = ip.trim().split(","); final String[] ips = ip.trim().split(",");
for (String subIp : ips) for (String subIp : ips)
{ {
if (false == isUnknown(subIp)) if (false == isUnknown(subIp))
{ {
ip = subIp; ip = subIp;
break; break;
} }
} }
} }
return StringUtils.substring(ip, 0, 255); return StringUtils.substring(ip, 0, 255);
} }
/** /**
* HTTP * HTTP
* *
* @param checkString * @param checkString
* @return * @return
*/ */
public static boolean isUnknown(String checkString) public static boolean isUnknown(String checkString)
{ {
return StringUtils.isBlank(checkString) || "unknown".equalsIgnoreCase(checkString); return StringUtils.isBlank(checkString) || "unknown".equalsIgnoreCase(checkString);
} }
/** /**
* IP * IP
*/ */
public static boolean isIP(String ip) public static boolean isIP(String ip)
{ {
return StringUtils.isNotBlank(ip) && ip.matches(REGX_IP); return StringUtils.isNotBlank(ip) && ip.matches(REGX_IP);
} }
/** /**
* IP * * IP *
*/ */
public static boolean isIpWildCard(String ip) public static boolean isIpWildCard(String ip)
{ {
return StringUtils.isNotBlank(ip) && ip.matches(REGX_IP_WILDCARD); return StringUtils.isNotBlank(ip) && ip.matches(REGX_IP_WILDCARD);
} }
/** /**
* ip * ip
*/ */
public static boolean ipIsInWildCardNoCheck(String ipWildCard, String ip) public static boolean ipIsInWildCardNoCheck(String ipWildCard, String ip)
{ {
String[] s1 = ipWildCard.split("\\."); String[] s1 = ipWildCard.split("\\.");
String[] s2 = ip.split("\\."); String[] s2 = ip.split("\\.");
boolean isMatchedSeg = true; boolean isMatchedSeg = true;
for (int i = 0; i < s1.length && !s1[i].equals("*"); i++) for (int i = 0; i < s1.length && !s1[i].equals("*"); i++)
{ {
if (!s1[i].equals(s2[i])) if (!s1[i].equals(s2[i]))
{ {
isMatchedSeg = false; isMatchedSeg = false;
break; break;
} }
} }
return isMatchedSeg; return isMatchedSeg;
} }
/** /**
* :10.10.10.1-10.10.10.99ip * :10.10.10.1-10.10.10.99ip
*/ */
public static boolean isIPSegment(String ipSeg) public static boolean isIPSegment(String ipSeg)
{ {
return StringUtils.isNotBlank(ipSeg) && ipSeg.matches(REGX_IP_SEG); return StringUtils.isNotBlank(ipSeg) && ipSeg.matches(REGX_IP_SEG);
} }
/** /**
* ip * ip
*/ */
public static boolean ipIsInNetNoCheck(String iparea, String ip) public static boolean ipIsInNetNoCheck(String iparea, String ip)
{ {
int idx = iparea.indexOf('-'); int idx = iparea.indexOf('-');
String[] sips = iparea.substring(0, idx).split("\\."); String[] sips = iparea.substring(0, idx).split("\\.");
String[] sipe = iparea.substring(idx + 1).split("\\."); String[] sipe = iparea.substring(idx + 1).split("\\.");
String[] sipt = ip.split("\\."); String[] sipt = ip.split("\\.");
long ips = 0L, ipe = 0L, ipt = 0L; long ips = 0L, ipe = 0L, ipt = 0L;
for (int i = 0; i < 4; ++i) for (int i = 0; i < 4; ++i)
{ {
ips = ips << 8 | Integer.parseInt(sips[i]); ips = ips << 8 | Integer.parseInt(sips[i]);
ipe = ipe << 8 | Integer.parseInt(sipe[i]); ipe = ipe << 8 | Integer.parseInt(sipe[i]);
ipt = ipt << 8 | Integer.parseInt(sipt[i]); ipt = ipt << 8 | Integer.parseInt(sipt[i]);
} }
if (ips > ipe) if (ips > ipe)
{ {
long t = ips; long t = ips;
ips = ipe; ips = ipe;
ipe = t; ipe = t;
} }
return ips <= ipt && ipt <= ipe; return ips <= ipt && ipt <= ipe;
} }
/** /**
* ip * ip
* *
* @param filter IP,'*',:`10.10.10.1-10.10.10.99` * @param filter IP,'*',:`10.10.10.1-10.10.10.99`
* @param ip IP * @param ip IP
* @return boolean * @return boolean
*/ */
public static boolean isMatchedIp(String filter, String ip) public static boolean isMatchedIp(String filter, String ip)
{ {
if (StringUtils.isEmpty(filter) || StringUtils.isEmpty(ip)) if (StringUtils.isEmpty(filter) || StringUtils.isEmpty(ip))
{ {
return false; return false;
} }
String[] ips = filter.split(";"); String[] ips = filter.split(";");
for (String iStr : ips) for (String iStr : ips)
{ {
if (isIP(iStr) && iStr.equals(ip)) if (isIP(iStr) && iStr.equals(ip))
{ {
return true; return true;
} }
else if (isIpWildCard(iStr) && ipIsInWildCardNoCheck(iStr, ip)) else if (isIpWildCard(iStr) && ipIsInWildCardNoCheck(iStr, ip))
{ {
return true; return true;
} }
else if (isIPSegment(iStr) && ipIsInNetNoCheck(iStr, ip)) else if (isIPSegment(iStr) && ipIsInNetNoCheck(iStr, ip))
{ {
return true; return true;
} }
} }
return false; return false;
} }
} }

View File

@ -1,24 +1,24 @@
package com.ruoyi.common.core.utils.poi; package HomeWork.common.core.utils.poi;
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
/** /**
* Excel * Excel
* *
* @author ruoyi * @author ruoyi
*/ */
public interface ExcelHandlerAdapter public interface ExcelHandlerAdapter
{ {
/** /**
* *
* *
* @param value * @param value
* @param args excelargs * @param args excelargs
* @param cell * @param cell
* @param wb 簿 * @param wb 簿
* *
* @return * @return
*/ */
Object format(Object value, String[] args, Cell cell, Workbook wb); Object format(Object value, String[] args, Cell cell, Workbook wb);
} }

View File

@ -1,410 +1,410 @@
package com.ruoyi.common.core.utils.reflect; package HomeWork.common.core.utils.reflect;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.lang.reflect.ParameterizedType; import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.Date; import java.util.Date;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.Validate;
import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.DateUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.ruoyi.common.core.text.Convert; import HomeWork.common.core.text.Convert;
import com.ruoyi.common.core.utils.DateUtils; import HomeWork.common.core.utils.DateUtils;
/** /**
* . getter/setter, 访, , Class, AOP. * . getter/setter, 访, , Class, AOP.
* *
* @author ruoyi * @author ruoyi
*/ */
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
public class ReflectUtils public class ReflectUtils
{ {
private static final String SETTER_PREFIX = "set"; private static final String SETTER_PREFIX = "set";
private static final String GETTER_PREFIX = "get"; private static final String GETTER_PREFIX = "get";
private static final String CGLIB_CLASS_SEPARATOR = "$$"; private static final String CGLIB_CLASS_SEPARATOR = "$$";
private static Logger logger = LoggerFactory.getLogger(ReflectUtils.class); private static Logger logger = LoggerFactory.getLogger(ReflectUtils.class);
/** /**
* Getter. * Getter.
* .. * ..
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <E> E invokeGetter(Object obj, String propertyName) public static <E> E invokeGetter(Object obj, String propertyName)
{ {
Object object = obj; Object object = obj;
for (String name : StringUtils.split(propertyName, ".")) for (String name : StringUtils.split(propertyName, "."))
{ {
String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(name); String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(name);
object = invokeMethod(object, getterMethodName, new Class[] {}, new Object[] {}); object = invokeMethod(object, getterMethodName, new Class[] {}, new Object[] {});
} }
return (E) object; return (E) object;
} }
/** /**
* Setter, * Setter,
* .. * ..
*/ */
public static <E> void invokeSetter(Object obj, String propertyName, E value) public static <E> void invokeSetter(Object obj, String propertyName, E value)
{ {
Object object = obj; Object object = obj;
String[] names = StringUtils.split(propertyName, "."); String[] names = StringUtils.split(propertyName, ".");
for (int i = 0; i < names.length; i++) for (int i = 0; i < names.length; i++)
{ {
if (i < names.length - 1) if (i < names.length - 1)
{ {
String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(names[i]); String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(names[i]);
object = invokeMethod(object, getterMethodName, new Class[] {}, new Object[] {}); object = invokeMethod(object, getterMethodName, new Class[] {}, new Object[] {});
} }
else else
{ {
String setterMethodName = SETTER_PREFIX + StringUtils.capitalize(names[i]); String setterMethodName = SETTER_PREFIX + StringUtils.capitalize(names[i]);
invokeMethodByName(object, setterMethodName, new Object[] { value }); invokeMethodByName(object, setterMethodName, new Object[] { value });
} }
} }
} }
/** /**
* , private/protected, getter. * , private/protected, getter.
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <E> E getFieldValue(final Object obj, final String fieldName) public static <E> E getFieldValue(final Object obj, final String fieldName)
{ {
Field field = getAccessibleField(obj, fieldName); Field field = getAccessibleField(obj, fieldName);
if (field == null) if (field == null)
{ {
logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + fieldName + "] 字段 "); logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + fieldName + "] 字段 ");
return null; return null;
} }
E result = null; E result = null;
try try
{ {
result = (E) field.get(obj); result = (E) field.get(obj);
} }
catch (IllegalAccessException e) catch (IllegalAccessException e)
{ {
logger.error("不可能抛出的异常{}", e.getMessage()); logger.error("不可能抛出的异常{}", e.getMessage());
} }
return result; return result;
} }
/** /**
* , private/protected, setter. * , private/protected, setter.
*/ */
public static <E> void setFieldValue(final Object obj, final String fieldName, final E value) public static <E> void setFieldValue(final Object obj, final String fieldName, final E value)
{ {
Field field = getAccessibleField(obj, fieldName); Field field = getAccessibleField(obj, fieldName);
if (field == null) if (field == null)
{ {
// throw new IllegalArgumentException("在 [" + obj.getClass() + "] 中,没有找到 [" + fieldName + "] 字段 "); // throw new IllegalArgumentException("在 [" + obj.getClass() + "] 中,没有找到 [" + fieldName + "] 字段 ");
logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + fieldName + "] 字段 "); logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + fieldName + "] 字段 ");
return; return;
} }
try try
{ {
field.set(obj, value); field.set(obj, value);
} }
catch (IllegalAccessException e) catch (IllegalAccessException e)
{ {
logger.error("不可能抛出的异常: {}", e.getMessage()); logger.error("不可能抛出的异常: {}", e.getMessage());
} }
} }
/** /**
* , private/protected. * , private/protected.
* 使getAccessibleMethod()Method. * 使getAccessibleMethod()Method.
* + * +
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <E> E invokeMethod(final Object obj, final String methodName, final Class<?>[] parameterTypes, public static <E> E invokeMethod(final Object obj, final String methodName, final Class<?>[] parameterTypes,
final Object[] args) final Object[] args)
{ {
if (obj == null || methodName == null) if (obj == null || methodName == null)
{ {
return null; return null;
} }
Method method = getAccessibleMethod(obj, methodName, parameterTypes); Method method = getAccessibleMethod(obj, methodName, parameterTypes);
if (method == null) if (method == null)
{ {
logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + methodName + "] 方法 "); logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + methodName + "] 方法 ");
return null; return null;
} }
try try
{ {
return (E) method.invoke(obj, args); return (E) method.invoke(obj, args);
} }
catch (Exception e) catch (Exception e)
{ {
String msg = "method: " + method + ", obj: " + obj + ", args: " + args + ""; String msg = "method: " + method + ", obj: " + obj + ", args: " + args + "";
throw convertReflectionExceptionToUnchecked(msg, e); throw convertReflectionExceptionToUnchecked(msg, e);
} }
} }
/** /**
* , private/protected * , private/protected
* 使getAccessibleMethodByName()Method. * 使getAccessibleMethodByName()Method.
* *
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <E> E invokeMethodByName(final Object obj, final String methodName, final Object[] args) public static <E> E invokeMethodByName(final Object obj, final String methodName, final Object[] args)
{ {
Method method = getAccessibleMethodByName(obj, methodName, args.length); Method method = getAccessibleMethodByName(obj, methodName, args.length);
if (method == null) if (method == null)
{ {
// 如果为空不报错,直接返回空。 // 如果为空不报错,直接返回空。
logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + methodName + "] 方法 "); logger.debug("在 [" + obj.getClass() + "] 中,没有找到 [" + methodName + "] 方法 ");
return null; return null;
} }
try try
{ {
// 类型转换(将参数数据类型转换为目标方法参数类型) // 类型转换(将参数数据类型转换为目标方法参数类型)
Class<?>[] cs = method.getParameterTypes(); Class<?>[] cs = method.getParameterTypes();
for (int i = 0; i < cs.length; i++) for (int i = 0; i < cs.length; i++)
{ {
if (args[i] != null && !args[i].getClass().equals(cs[i])) if (args[i] != null && !args[i].getClass().equals(cs[i]))
{ {
if (cs[i] == String.class) if (cs[i] == String.class)
{ {
args[i] = Convert.toStr(args[i]); args[i] = Convert.toStr(args[i]);
if (StringUtils.endsWith((String) args[i], ".0")) if (StringUtils.endsWith((String) args[i], ".0"))
{ {
args[i] = StringUtils.substringBefore((String) args[i], ".0"); args[i] = StringUtils.substringBefore((String) args[i], ".0");
} }
} }
else if (cs[i] == Integer.class) else if (cs[i] == Integer.class)
{ {
args[i] = Convert.toInt(args[i]); args[i] = Convert.toInt(args[i]);
} }
else if (cs[i] == Long.class) else if (cs[i] == Long.class)
{ {
args[i] = Convert.toLong(args[i]); args[i] = Convert.toLong(args[i]);
} }
else if (cs[i] == Double.class) else if (cs[i] == Double.class)
{ {
args[i] = Convert.toDouble(args[i]); args[i] = Convert.toDouble(args[i]);
} }
else if (cs[i] == Float.class) else if (cs[i] == Float.class)
{ {
args[i] = Convert.toFloat(args[i]); args[i] = Convert.toFloat(args[i]);
} }
else if (cs[i] == Date.class) else if (cs[i] == Date.class)
{ {
if (args[i] instanceof String) if (args[i] instanceof String)
{ {
args[i] = DateUtils.parseDate(args[i]); args[i] = DateUtils.parseDate(args[i]);
} }
else else
{ {
args[i] = DateUtil.getJavaDate((Double) args[i]); args[i] = DateUtil.getJavaDate((Double) args[i]);
} }
} }
else if (cs[i] == boolean.class || cs[i] == Boolean.class) else if (cs[i] == boolean.class || cs[i] == Boolean.class)
{ {
args[i] = Convert.toBool(args[i]); args[i] = Convert.toBool(args[i]);
} }
} }
} }
return (E) method.invoke(obj, args); return (E) method.invoke(obj, args);
} }
catch (Exception e) catch (Exception e)
{ {
String msg = "method: " + method + ", obj: " + obj + ", args: " + args + ""; String msg = "method: " + method + ", obj: " + obj + ", args: " + args + "";
throw convertReflectionExceptionToUnchecked(msg, e); throw convertReflectionExceptionToUnchecked(msg, e);
} }
} }
/** /**
* , DeclaredField, 访. * , DeclaredField, 访.
* Object, null. * Object, null.
*/ */
public static Field getAccessibleField(final Object obj, final String fieldName) public static Field getAccessibleField(final Object obj, final String fieldName)
{ {
// 为空不报错。直接返回 null // 为空不报错。直接返回 null
if (obj == null) if (obj == null)
{ {
return null; return null;
} }
Validate.notBlank(fieldName, "fieldName can't be blank"); Validate.notBlank(fieldName, "fieldName can't be blank");
for (Class<?> superClass = obj.getClass(); superClass != Object.class; superClass = superClass.getSuperclass()) for (Class<?> superClass = obj.getClass(); superClass != Object.class; superClass = superClass.getSuperclass())
{ {
try try
{ {
Field field = superClass.getDeclaredField(fieldName); Field field = superClass.getDeclaredField(fieldName);
makeAccessible(field); makeAccessible(field);
return field; return field;
} }
catch (NoSuchFieldException e) catch (NoSuchFieldException e)
{ {
continue; continue;
} }
} }
return null; return null;
} }
/** /**
* , DeclaredMethod,访. * , DeclaredMethod,访.
* Object, null. * Object, null.
* + * +
* . 使Method,Method.invoke(Object obj, Object... args) * . 使Method,Method.invoke(Object obj, Object... args)
*/ */
public static Method getAccessibleMethod(final Object obj, final String methodName, public static Method getAccessibleMethod(final Object obj, final String methodName,
final Class<?>... parameterTypes) final Class<?>... parameterTypes)
{ {
// 为空不报错。直接返回 null // 为空不报错。直接返回 null
if (obj == null) if (obj == null)
{ {
return null; return null;
} }
Validate.notBlank(methodName, "methodName can't be blank"); Validate.notBlank(methodName, "methodName can't be blank");
for (Class<?> searchType = obj.getClass(); searchType != Object.class; searchType = searchType.getSuperclass()) for (Class<?> searchType = obj.getClass(); searchType != Object.class; searchType = searchType.getSuperclass())
{ {
try try
{ {
Method method = searchType.getDeclaredMethod(methodName, parameterTypes); Method method = searchType.getDeclaredMethod(methodName, parameterTypes);
makeAccessible(method); makeAccessible(method);
return method; return method;
} }
catch (NoSuchMethodException e) catch (NoSuchMethodException e)
{ {
continue; continue;
} }
} }
return null; return null;
} }
/** /**
* , DeclaredMethod,访. * , DeclaredMethod,访.
* Object, null. * Object, null.
* *
* . 使Method,Method.invoke(Object obj, Object... args) * . 使Method,Method.invoke(Object obj, Object... args)
*/ */
public static Method getAccessibleMethodByName(final Object obj, final String methodName, int argsNum) public static Method getAccessibleMethodByName(final Object obj, final String methodName, int argsNum)
{ {
// 为空不报错。直接返回 null // 为空不报错。直接返回 null
if (obj == null) if (obj == null)
{ {
return null; return null;
} }
Validate.notBlank(methodName, "methodName can't be blank"); Validate.notBlank(methodName, "methodName can't be blank");
for (Class<?> searchType = obj.getClass(); searchType != Object.class; searchType = searchType.getSuperclass()) for (Class<?> searchType = obj.getClass(); searchType != Object.class; searchType = searchType.getSuperclass())
{ {
Method[] methods = searchType.getDeclaredMethods(); Method[] methods = searchType.getDeclaredMethods();
for (Method method : methods) for (Method method : methods)
{ {
if (method.getName().equals(methodName) && method.getParameterTypes().length == argsNum) if (method.getName().equals(methodName) && method.getParameterTypes().length == argsNum)
{ {
makeAccessible(method); makeAccessible(method);
return method; return method;
} }
} }
} }
return null; return null;
} }
/** /**
* private/protectedpublicJDKSecurityManager * private/protectedpublicJDKSecurityManager
*/ */
public static void makeAccessible(Method method) public static void makeAccessible(Method method)
{ {
if ((!Modifier.isPublic(method.getModifiers()) || !Modifier.isPublic(method.getDeclaringClass().getModifiers())) if ((!Modifier.isPublic(method.getModifiers()) || !Modifier.isPublic(method.getDeclaringClass().getModifiers()))
&& !method.isAccessible()) && !method.isAccessible())
{ {
method.setAccessible(true); method.setAccessible(true);
} }
} }
/** /**
* private/protectedpublicJDKSecurityManager * private/protectedpublicJDKSecurityManager
*/ */
public static void makeAccessible(Field field) public static void makeAccessible(Field field)
{ {
if ((!Modifier.isPublic(field.getModifiers()) || !Modifier.isPublic(field.getDeclaringClass().getModifiers()) if ((!Modifier.isPublic(field.getModifiers()) || !Modifier.isPublic(field.getDeclaringClass().getModifiers())
|| Modifier.isFinal(field.getModifiers())) && !field.isAccessible()) || Modifier.isFinal(field.getModifiers())) && !field.isAccessible())
{ {
field.setAccessible(true); field.setAccessible(true);
} }
} }
/** /**
* , Class, * , Class,
* , Object.class. * , Object.class.
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T> Class<T> getClassGenricType(final Class clazz) public static <T> Class<T> getClassGenricType(final Class clazz)
{ {
return getClassGenricType(clazz, 0); return getClassGenricType(clazz, 0);
} }
/** /**
* , Class. * , Class.
* , Object.class. * , Object.class.
*/ */
public static Class getClassGenricType(final Class clazz, final int index) public static Class getClassGenricType(final Class clazz, final int index)
{ {
Type genType = clazz.getGenericSuperclass(); Type genType = clazz.getGenericSuperclass();
if (!(genType instanceof ParameterizedType)) if (!(genType instanceof ParameterizedType))
{ {
logger.debug(clazz.getSimpleName() + "'s superclass not ParameterizedType"); logger.debug(clazz.getSimpleName() + "'s superclass not ParameterizedType");
return Object.class; return Object.class;
} }
Type[] params = ((ParameterizedType) genType).getActualTypeArguments(); Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
if (index >= params.length || index < 0) if (index >= params.length || index < 0)
{ {
logger.debug("Index: " + index + ", Size of " + clazz.getSimpleName() + "'s Parameterized Type: " logger.debug("Index: " + index + ", Size of " + clazz.getSimpleName() + "'s Parameterized Type: "
+ params.length); + params.length);
return Object.class; return Object.class;
} }
if (!(params[index] instanceof Class)) if (!(params[index] instanceof Class))
{ {
logger.debug(clazz.getSimpleName() + " not set the actual class on superclass generic parameter"); logger.debug(clazz.getSimpleName() + " not set the actual class on superclass generic parameter");
return Object.class; return Object.class;
} }
return (Class) params[index]; return (Class) params[index];
} }
public static Class<?> getUserClass(Object instance) public static Class<?> getUserClass(Object instance)
{ {
if (instance == null) if (instance == null)
{ {
throw new RuntimeException("Instance must not be null"); throw new RuntimeException("Instance must not be null");
} }
Class clazz = instance.getClass(); Class clazz = instance.getClass();
if (clazz != null && clazz.getName().contains(CGLIB_CLASS_SEPARATOR)) if (clazz != null && clazz.getName().contains(CGLIB_CLASS_SEPARATOR))
{ {
Class<?> superClass = clazz.getSuperclass(); Class<?> superClass = clazz.getSuperclass();
if (superClass != null && !Object.class.equals(superClass)) if (superClass != null && !Object.class.equals(superClass))
{ {
return superClass; return superClass;
} }
} }
return clazz; return clazz;
} }
/** /**
* checked exceptionunchecked exception. * checked exceptionunchecked exception.
*/ */
public static RuntimeException convertReflectionExceptionToUnchecked(String msg, Exception e) public static RuntimeException convertReflectionExceptionToUnchecked(String msg, Exception e)
{ {
if (e instanceof IllegalAccessException || e instanceof IllegalArgumentException if (e instanceof IllegalAccessException || e instanceof IllegalArgumentException
|| e instanceof NoSuchMethodException) || e instanceof NoSuchMethodException)
{ {
return new IllegalArgumentException(msg, e); return new IllegalArgumentException(msg, e);
} }
else if (e instanceof InvocationTargetException) else if (e instanceof InvocationTargetException)
{ {
return new RuntimeException(msg, ((InvocationTargetException) e).getTargetException()); return new RuntimeException(msg, ((InvocationTargetException) e).getTargetException());
} }
return new RuntimeException(msg, e); return new RuntimeException(msg, e);
} }
} }

View File

@ -1,291 +1,291 @@
package com.ruoyi.common.core.utils.sign; package HomeWork.common.core.utils.sign;
/** /**
* Base64 * Base64
* *
* @author ruoyi * @author ruoyi
*/ */
public final class Base64 public final class Base64
{ {
static private final int BASELENGTH = 128; static private final int BASELENGTH = 128;
static private final int LOOKUPLENGTH = 64; static private final int LOOKUPLENGTH = 64;
static private final int TWENTYFOURBITGROUP = 24; static private final int TWENTYFOURBITGROUP = 24;
static private final int EIGHTBIT = 8; static private final int EIGHTBIT = 8;
static private final int SIXTEENBIT = 16; static private final int SIXTEENBIT = 16;
static private final int FOURBYTE = 4; static private final int FOURBYTE = 4;
static private final int SIGN = -128; static private final int SIGN = -128;
static private final char PAD = '='; static private final char PAD = '=';
static final private byte[] base64Alphabet = new byte[BASELENGTH]; static final private byte[] base64Alphabet = new byte[BASELENGTH];
static final private char[] lookUpBase64Alphabet = new char[LOOKUPLENGTH]; static final private char[] lookUpBase64Alphabet = new char[LOOKUPLENGTH];
static static
{ {
for (int i = 0; i < BASELENGTH; ++i) for (int i = 0; i < BASELENGTH; ++i)
{ {
base64Alphabet[i] = -1; base64Alphabet[i] = -1;
} }
for (int i = 'Z'; i >= 'A'; i--) for (int i = 'Z'; i >= 'A'; i--)
{ {
base64Alphabet[i] = (byte) (i - 'A'); base64Alphabet[i] = (byte) (i - 'A');
} }
for (int i = 'z'; i >= 'a'; i--) for (int i = 'z'; i >= 'a'; i--)
{ {
base64Alphabet[i] = (byte) (i - 'a' + 26); base64Alphabet[i] = (byte) (i - 'a' + 26);
} }
for (int i = '9'; i >= '0'; i--) for (int i = '9'; i >= '0'; i--)
{ {
base64Alphabet[i] = (byte) (i - '0' + 52); base64Alphabet[i] = (byte) (i - '0' + 52);
} }
base64Alphabet['+'] = 62; base64Alphabet['+'] = 62;
base64Alphabet['/'] = 63; base64Alphabet['/'] = 63;
for (int i = 0; i <= 25; i++) for (int i = 0; i <= 25; i++)
{ {
lookUpBase64Alphabet[i] = (char) ('A' + i); lookUpBase64Alphabet[i] = (char) ('A' + i);
} }
for (int i = 26, j = 0; i <= 51; i++, j++) for (int i = 26, j = 0; i <= 51; i++, j++)
{ {
lookUpBase64Alphabet[i] = (char) ('a' + j); lookUpBase64Alphabet[i] = (char) ('a' + j);
} }
for (int i = 52, j = 0; i <= 61; i++, j++) for (int i = 52, j = 0; i <= 61; i++, j++)
{ {
lookUpBase64Alphabet[i] = (char) ('0' + j); lookUpBase64Alphabet[i] = (char) ('0' + j);
} }
lookUpBase64Alphabet[62] = (char) '+'; lookUpBase64Alphabet[62] = (char) '+';
lookUpBase64Alphabet[63] = (char) '/'; lookUpBase64Alphabet[63] = (char) '/';
} }
private static boolean isWhiteSpace(char octect) private static boolean isWhiteSpace(char octect)
{ {
return (octect == 0x20 || octect == 0xd || octect == 0xa || octect == 0x9); return (octect == 0x20 || octect == 0xd || octect == 0xa || octect == 0x9);
} }
private static boolean isPad(char octect) private static boolean isPad(char octect)
{ {
return (octect == PAD); return (octect == PAD);
} }
private static boolean isData(char octect) private static boolean isData(char octect)
{ {
return (octect < BASELENGTH && base64Alphabet[octect] != -1); return (octect < BASELENGTH && base64Alphabet[octect] != -1);
} }
/** /**
* Encodes hex octects into Base64 * Encodes hex octects into Base64
* *
* @param binaryData Array containing binaryData * @param binaryData Array containing binaryData
* @return Encoded Base64 array * @return Encoded Base64 array
*/ */
public static String encode(byte[] binaryData) public static String encode(byte[] binaryData)
{ {
if (binaryData == null) if (binaryData == null)
{ {
return null; return null;
} }
int lengthDataBits = binaryData.length * EIGHTBIT; int lengthDataBits = binaryData.length * EIGHTBIT;
if (lengthDataBits == 0) if (lengthDataBits == 0)
{ {
return ""; return "";
} }
int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP; int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP;
int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP; int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP;
int numberQuartet = fewerThan24bits != 0 ? numberTriplets + 1 : numberTriplets; int numberQuartet = fewerThan24bits != 0 ? numberTriplets + 1 : numberTriplets;
char encodedData[] = null; char encodedData[] = null;
encodedData = new char[numberQuartet * 4]; encodedData = new char[numberQuartet * 4];
byte k = 0, l = 0, b1 = 0, b2 = 0, b3 = 0; byte k = 0, l = 0, b1 = 0, b2 = 0, b3 = 0;
int encodedIndex = 0; int encodedIndex = 0;
int dataIndex = 0; int dataIndex = 0;
for (int i = 0; i < numberTriplets; i++) for (int i = 0; i < numberTriplets; i++)
{ {
b1 = binaryData[dataIndex++]; b1 = binaryData[dataIndex++];
b2 = binaryData[dataIndex++]; b2 = binaryData[dataIndex++];
b3 = binaryData[dataIndex++]; b3 = binaryData[dataIndex++];
l = (byte) (b2 & 0x0f); l = (byte) (b2 & 0x0f);
k = (byte) (b1 & 0x03); k = (byte) (b1 & 0x03);
byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0);
byte val3 = ((b3 & SIGN) == 0) ? (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc); byte val3 = ((b3 & SIGN) == 0) ? (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc);
encodedData[encodedIndex++] = lookUpBase64Alphabet[val1]; encodedData[encodedIndex++] = lookUpBase64Alphabet[val1];
encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)]; encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)];
encodedData[encodedIndex++] = lookUpBase64Alphabet[(l << 2) | val3]; encodedData[encodedIndex++] = lookUpBase64Alphabet[(l << 2) | val3];
encodedData[encodedIndex++] = lookUpBase64Alphabet[b3 & 0x3f]; encodedData[encodedIndex++] = lookUpBase64Alphabet[b3 & 0x3f];
} }
// form integral number of 6-bit groups // form integral number of 6-bit groups
if (fewerThan24bits == EIGHTBIT) if (fewerThan24bits == EIGHTBIT)
{ {
b1 = binaryData[dataIndex]; b1 = binaryData[dataIndex];
k = (byte) (b1 & 0x03); k = (byte) (b1 & 0x03);
byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
encodedData[encodedIndex++] = lookUpBase64Alphabet[val1]; encodedData[encodedIndex++] = lookUpBase64Alphabet[val1];
encodedData[encodedIndex++] = lookUpBase64Alphabet[k << 4]; encodedData[encodedIndex++] = lookUpBase64Alphabet[k << 4];
encodedData[encodedIndex++] = PAD; encodedData[encodedIndex++] = PAD;
encodedData[encodedIndex++] = PAD; encodedData[encodedIndex++] = PAD;
} }
else if (fewerThan24bits == SIXTEENBIT) else if (fewerThan24bits == SIXTEENBIT)
{ {
b1 = binaryData[dataIndex]; b1 = binaryData[dataIndex];
b2 = binaryData[dataIndex + 1]; b2 = binaryData[dataIndex + 1];
l = (byte) (b2 & 0x0f); l = (byte) (b2 & 0x0f);
k = (byte) (b1 & 0x03); k = (byte) (b1 & 0x03);
byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0);
encodedData[encodedIndex++] = lookUpBase64Alphabet[val1]; encodedData[encodedIndex++] = lookUpBase64Alphabet[val1];
encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)]; encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)];
encodedData[encodedIndex++] = lookUpBase64Alphabet[l << 2]; encodedData[encodedIndex++] = lookUpBase64Alphabet[l << 2];
encodedData[encodedIndex++] = PAD; encodedData[encodedIndex++] = PAD;
} }
return new String(encodedData); return new String(encodedData);
} }
/** /**
* Decodes Base64 data into octects * Decodes Base64 data into octects
* *
* @param encoded string containing Base64 data * @param encoded string containing Base64 data
* @return Array containind decoded data. * @return Array containind decoded data.
*/ */
public static byte[] decode(String encoded) public static byte[] decode(String encoded)
{ {
if (encoded == null) if (encoded == null)
{ {
return null; return null;
} }
char[] base64Data = encoded.toCharArray(); char[] base64Data = encoded.toCharArray();
// remove white spaces // remove white spaces
int len = removeWhiteSpace(base64Data); int len = removeWhiteSpace(base64Data);
if (len % FOURBYTE != 0) if (len % FOURBYTE != 0)
{ {
return null;// should be divisible by four return null;// should be divisible by four
} }
int numberQuadruple = (len / FOURBYTE); int numberQuadruple = (len / FOURBYTE);
if (numberQuadruple == 0) if (numberQuadruple == 0)
{ {
return new byte[0]; return new byte[0];
} }
byte decodedData[] = null; byte decodedData[] = null;
byte b1 = 0, b2 = 0, b3 = 0, b4 = 0; byte b1 = 0, b2 = 0, b3 = 0, b4 = 0;
char d1 = 0, d2 = 0, d3 = 0, d4 = 0; char d1 = 0, d2 = 0, d3 = 0, d4 = 0;
int i = 0; int i = 0;
int encodedIndex = 0; int encodedIndex = 0;
int dataIndex = 0; int dataIndex = 0;
decodedData = new byte[(numberQuadruple) * 3]; decodedData = new byte[(numberQuadruple) * 3];
for (; i < numberQuadruple - 1; i++) for (; i < numberQuadruple - 1; i++)
{ {
if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++])) if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++]))
|| !isData((d3 = base64Data[dataIndex++])) || !isData((d4 = base64Data[dataIndex++]))) || !isData((d3 = base64Data[dataIndex++])) || !isData((d4 = base64Data[dataIndex++])))
{ {
return null; return null;
} // if found "no data" just return null } // if found "no data" just return null
b1 = base64Alphabet[d1]; b1 = base64Alphabet[d1];
b2 = base64Alphabet[d2]; b2 = base64Alphabet[d2];
b3 = base64Alphabet[d3]; b3 = base64Alphabet[d3];
b4 = base64Alphabet[d4]; b4 = base64Alphabet[d4];
decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4);
decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
decodedData[encodedIndex++] = (byte) (b3 << 6 | b4); decodedData[encodedIndex++] = (byte) (b3 << 6 | b4);
} }
if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++]))) if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++])))
{ {
return null;// if found "no data" just return null return null;// if found "no data" just return null
} }
b1 = base64Alphabet[d1]; b1 = base64Alphabet[d1];
b2 = base64Alphabet[d2]; b2 = base64Alphabet[d2];
d3 = base64Data[dataIndex++]; d3 = base64Data[dataIndex++];
d4 = base64Data[dataIndex++]; d4 = base64Data[dataIndex++];
if (!isData((d3)) || !isData((d4))) if (!isData((d3)) || !isData((d4)))
{// Check if they are PAD characters {// Check if they are PAD characters
if (isPad(d3) && isPad(d4)) if (isPad(d3) && isPad(d4))
{ {
if ((b2 & 0xf) != 0)// last 4 bits should be zero if ((b2 & 0xf) != 0)// last 4 bits should be zero
{ {
return null; return null;
} }
byte[] tmp = new byte[i * 3 + 1]; byte[] tmp = new byte[i * 3 + 1];
System.arraycopy(decodedData, 0, tmp, 0, i * 3); System.arraycopy(decodedData, 0, tmp, 0, i * 3);
tmp[encodedIndex] = (byte) (b1 << 2 | b2 >> 4); tmp[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
return tmp; return tmp;
} }
else if (!isPad(d3) && isPad(d4)) else if (!isPad(d3) && isPad(d4))
{ {
b3 = base64Alphabet[d3]; b3 = base64Alphabet[d3];
if ((b3 & 0x3) != 0)// last 2 bits should be zero if ((b3 & 0x3) != 0)// last 2 bits should be zero
{ {
return null; return null;
} }
byte[] tmp = new byte[i * 3 + 2]; byte[] tmp = new byte[i * 3 + 2];
System.arraycopy(decodedData, 0, tmp, 0, i * 3); System.arraycopy(decodedData, 0, tmp, 0, i * 3);
tmp[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); tmp[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4);
tmp[encodedIndex] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); tmp[encodedIndex] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
return tmp; return tmp;
} }
else else
{ {
return null; return null;
} }
} }
else else
{ // No PAD e.g 3cQl { // No PAD e.g 3cQl
b3 = base64Alphabet[d3]; b3 = base64Alphabet[d3];
b4 = base64Alphabet[d4]; b4 = base64Alphabet[d4];
decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4);
decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
decodedData[encodedIndex++] = (byte) (b3 << 6 | b4); decodedData[encodedIndex++] = (byte) (b3 << 6 | b4);
} }
return decodedData; return decodedData;
} }
/** /**
* remove WhiteSpace from MIME containing encoded Base64 data. * remove WhiteSpace from MIME containing encoded Base64 data.
* *
* @param data the byte array of base64 data (with WS) * @param data the byte array of base64 data (with WS)
* @return the new length * @return the new length
*/ */
private static int removeWhiteSpace(char[] data) private static int removeWhiteSpace(char[] data)
{ {
if (data == null) if (data == null)
{ {
return 0; return 0;
} }
// count characters that's not whitespace // count characters that's not whitespace
int newSize = 0; int newSize = 0;
int len = data.length; int len = data.length;
for (int i = 0; i < len; i++) for (int i = 0; i < len; i++)
{ {
if (!isWhiteSpace(data[i])) if (!isWhiteSpace(data[i]))
{ {
data[newSize++] = data[i]; data[newSize++] = data[i];
} }
} }
return newSize; return newSize;
} }
} }

View File

@ -1,70 +1,70 @@
package com.ruoyi.common.core.utils.sql; package HomeWork.common.core.utils.sql;
import com.ruoyi.common.core.exception.UtilException; import HomeWork.common.core.exception.UtilException;
import com.ruoyi.common.core.utils.StringUtils; import HomeWork.common.core.utils.StringUtils;
/** /**
* sql * sql
* *
* @author ruoyi * @author ruoyi
*/ */
public class SqlUtil public class SqlUtil
{ {
/** /**
* sql * sql
*/ */
public static String SQL_REGEX = "and |extractvalue|updatexml|exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |or |+|user()"; public static String SQL_REGEX = "and |extractvalue|updatexml|exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |or |+|user()";
/** /**
* 线 * 线
*/ */
public static String SQL_PATTERN = "[a-zA-Z0-9_\\ \\,\\.]+"; public static String SQL_PATTERN = "[a-zA-Z0-9_\\ \\,\\.]+";
/** /**
* orderBy * orderBy
*/ */
private static final int ORDER_BY_MAX_LENGTH = 500; private static final int ORDER_BY_MAX_LENGTH = 500;
/** /**
* *
*/ */
public static String escapeOrderBySql(String value) public static String escapeOrderBySql(String value)
{ {
if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value)) if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value))
{ {
throw new UtilException("参数不符合规范,不能进行查询"); throw new UtilException("参数不符合规范,不能进行查询");
} }
if (StringUtils.length(value) > ORDER_BY_MAX_LENGTH) if (StringUtils.length(value) > ORDER_BY_MAX_LENGTH)
{ {
throw new UtilException("参数已超过最大限制,不能进行查询"); throw new UtilException("参数已超过最大限制,不能进行查询");
} }
return value; return value;
} }
/** /**
* order by * order by
*/ */
public static boolean isValidOrderBySql(String value) public static boolean isValidOrderBySql(String value)
{ {
return value.matches(SQL_PATTERN); return value.matches(SQL_PATTERN);
} }
/** /**
* SQL * SQL
*/ */
public static void filterKeyword(String value) public static void filterKeyword(String value)
{ {
if (StringUtils.isEmpty(value)) if (StringUtils.isEmpty(value))
{ {
return; return;
} }
String[] sqlKeywords = StringUtils.split(SQL_REGEX, "\\|"); String[] sqlKeywords = StringUtils.split(SQL_REGEX, "\\|");
for (String sqlKeyword : sqlKeywords) for (String sqlKeyword : sqlKeywords)
{ {
if (StringUtils.indexOfIgnoreCase(value, sqlKeyword) > -1) if (StringUtils.indexOfIgnoreCase(value, sqlKeyword) > -1)
{ {
throw new UtilException("参数存在SQL注入风险"); throw new UtilException("参数存在SQL注入风险");
} }
} }
} }
} }

View File

@ -1,49 +1,49 @@
package com.ruoyi.common.core.utils.uuid; package HomeWork.common.core.utils.uuid;
/** /**
* ID * ID
* *
* @author ruoyi * @author ruoyi
*/ */
public class IdUtils public class IdUtils
{ {
/** /**
* UUID * UUID
* *
* @return UUID * @return UUID
*/ */
public static String randomUUID() public static String randomUUID()
{ {
return UUID.randomUUID().toString(); return UUID.randomUUID().toString();
} }
/** /**
* UUID线 * UUID线
* *
* @return UUID线 * @return UUID线
*/ */
public static String simpleUUID() public static String simpleUUID()
{ {
return UUID.randomUUID().toString(true); return UUID.randomUUID().toString(true);
} }
/** /**
* UUID使ThreadLocalRandomUUID * UUID使ThreadLocalRandomUUID
* *
* @return UUID * @return UUID
*/ */
public static String fastUUID() public static String fastUUID()
{ {
return UUID.fastUUID().toString(); return UUID.fastUUID().toString();
} }
/** /**
* UUID线使ThreadLocalRandomUUID * UUID线使ThreadLocalRandomUUID
* *
* @return UUID线 * @return UUID线
*/ */
public static String fastSimpleUUID() public static String fastSimpleUUID()
{ {
return UUID.fastUUID().toString(true); return UUID.fastUUID().toString(true);
} }
} }

View File

@ -1,86 +1,86 @@
package com.ruoyi.common.core.utils.uuid; package HomeWork.common.core.utils.uuid;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import com.ruoyi.common.core.utils.DateUtils; import HomeWork.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils; import HomeWork.common.core.utils.StringUtils;
/** /**
* @author ruoyi * @author ruoyi
*/ */
public class Seq public class Seq
{ {
// 通用序列类型 // 通用序列类型
public static final String commSeqType = "COMMON"; public static final String commSeqType = "COMMON";
// 上传序列类型 // 上传序列类型
public static final String uploadSeqType = "UPLOAD"; public static final String uploadSeqType = "UPLOAD";
// 通用接口序列数 // 通用接口序列数
private static AtomicInteger commSeq = new AtomicInteger(1); private static AtomicInteger commSeq = new AtomicInteger(1);
// 上传接口序列数 // 上传接口序列数
private static AtomicInteger uploadSeq = new AtomicInteger(1); private static AtomicInteger uploadSeq = new AtomicInteger(1);
// 机器标识 // 机器标识
private static final String machineCode = "A"; private static final String machineCode = "A";
/** /**
* *
* *
* @return * @return
*/ */
public static String getId() public static String getId()
{ {
return getId(commSeqType); return getId(commSeqType);
} }
/** /**
* 16 yyMMddHHmmss + + 3 * 16 yyMMddHHmmss + + 3
* *
* @return * @return
*/ */
public static String getId(String type) public static String getId(String type)
{ {
AtomicInteger atomicInt = commSeq; AtomicInteger atomicInt = commSeq;
if (uploadSeqType.equals(type)) if (uploadSeqType.equals(type))
{ {
atomicInt = uploadSeq; atomicInt = uploadSeq;
} }
return getId(atomicInt, 3); return getId(atomicInt, 3);
} }
/** /**
* yyMMddHHmmss + + length * yyMMddHHmmss + + length
* *
* @param atomicInt * @param atomicInt
* @param length * @param length
* @return * @return
*/ */
public static String getId(AtomicInteger atomicInt, int length) public static String getId(AtomicInteger atomicInt, int length)
{ {
String result = DateUtils.dateTimeNow(); String result = DateUtils.dateTimeNow();
result += machineCode; result += machineCode;
result += getSeq(atomicInt, length); result += getSeq(atomicInt, length);
return result; return result;
} }
/** /**
* [1, 10 (length)), 0length * [1, 10 (length)), 0length
* *
* @return * @return
*/ */
private synchronized static String getSeq(AtomicInteger atomicInt, int length) private synchronized static String getSeq(AtomicInteger atomicInt, int length)
{ {
// 先取值再+1 // 先取值再+1
int value = atomicInt.getAndIncrement(); int value = atomicInt.getAndIncrement();
// 如果更新后值>=10 的 (length)幂次方则重置为1 // 如果更新后值>=10 的 (length)幂次方则重置为1
int maxSeq = (int) Math.pow(10, length); int maxSeq = (int) Math.pow(10, length);
if (atomicInt.get() >= maxSeq) if (atomicInt.get() >= maxSeq)
{ {
atomicInt.set(1); atomicInt.set(1);
} }
// 转字符串用0左补齐 // 转字符串用0左补齐
return StringUtils.padl(value, length); return StringUtils.padl(value, length);
} }
} }

View File

@ -1,484 +1,484 @@
package com.ruoyi.common.core.utils.uuid; package HomeWork.common.core.utils.uuid;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.util.Random; import java.util.Random;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
import com.ruoyi.common.core.exception.UtilException; import HomeWork.common.core.exception.UtilException;
/** /**
* universally unique identifierUUID * universally unique identifierUUID
* *
* @author ruoyi * @author ruoyi
*/ */
public final class UUID implements java.io.Serializable, Comparable<UUID> public final class UUID implements java.io.Serializable, Comparable<UUID>
{ {
private static final long serialVersionUID = -1185015143654744140L; private static final long serialVersionUID = -1185015143654744140L;
/** /**
* SecureRandom * SecureRandom
* *
*/ */
private static class Holder private static class Holder
{ {
static final SecureRandom numberGenerator = getSecureRandom(); static final SecureRandom numberGenerator = getSecureRandom();
} }
/** 此UUID的最高64有效位 */ /** 此UUID的最高64有效位 */
private final long mostSigBits; private final long mostSigBits;
/** 此UUID的最低64有效位 */ /** 此UUID的最低64有效位 */
private final long leastSigBits; private final long leastSigBits;
/** /**
* *
* *
* @param data * @param data
*/ */
private UUID(byte[] data) private UUID(byte[] data)
{ {
long msb = 0; long msb = 0;
long lsb = 0; long lsb = 0;
assert data.length == 16 : "data must be 16 bytes in length"; assert data.length == 16 : "data must be 16 bytes in length";
for (int i = 0; i < 8; i++) for (int i = 0; i < 8; i++)
{ {
msb = (msb << 8) | (data[i] & 0xff); msb = (msb << 8) | (data[i] & 0xff);
} }
for (int i = 8; i < 16; i++) for (int i = 8; i < 16; i++)
{ {
lsb = (lsb << 8) | (data[i] & 0xff); lsb = (lsb << 8) | (data[i] & 0xff);
} }
this.mostSigBits = msb; this.mostSigBits = msb;
this.leastSigBits = lsb; this.leastSigBits = lsb;
} }
/** /**
* 使 UUID * 使 UUID
* *
* @param mostSigBits {@code UUID} 64 * @param mostSigBits {@code UUID} 64
* @param leastSigBits {@code UUID} 64 * @param leastSigBits {@code UUID} 64
*/ */
public UUID(long mostSigBits, long leastSigBits) public UUID(long mostSigBits, long leastSigBits)
{ {
this.mostSigBits = mostSigBits; this.mostSigBits = mostSigBits;
this.leastSigBits = leastSigBits; this.leastSigBits = leastSigBits;
} }
/** /**
* 4UUID * 4UUID
* *
* @return {@code UUID} * @return {@code UUID}
*/ */
public static UUID fastUUID() public static UUID fastUUID()
{ {
return randomUUID(false); return randomUUID(false);
} }
/** /**
* 4UUID 使 UUID * 4UUID 使 UUID
* *
* @return {@code UUID} * @return {@code UUID}
*/ */
public static UUID randomUUID() public static UUID randomUUID()
{ {
return randomUUID(true); return randomUUID(true);
} }
/** /**
* 4UUID 使 UUID * 4UUID 使 UUID
* *
* @param isSecure 使{@link SecureRandom} * @param isSecure 使{@link SecureRandom}
* @return {@code UUID} * @return {@code UUID}
*/ */
public static UUID randomUUID(boolean isSecure) public static UUID randomUUID(boolean isSecure)
{ {
final Random ng = isSecure ? Holder.numberGenerator : getRandom(); final Random ng = isSecure ? Holder.numberGenerator : getRandom();
byte[] randomBytes = new byte[16]; byte[] randomBytes = new byte[16];
ng.nextBytes(randomBytes); ng.nextBytes(randomBytes);
randomBytes[6] &= 0x0f; /* clear version */ randomBytes[6] &= 0x0f; /* clear version */
randomBytes[6] |= 0x40; /* set to version 4 */ randomBytes[6] |= 0x40; /* set to version 4 */
randomBytes[8] &= 0x3f; /* clear variant */ randomBytes[8] &= 0x3f; /* clear variant */
randomBytes[8] |= 0x80; /* set to IETF variant */ randomBytes[8] |= 0x80; /* set to IETF variant */
return new UUID(randomBytes); return new UUID(randomBytes);
} }
/** /**
* 3UUID * 3UUID
* *
* @param name UUID * @param name UUID
* *
* @return {@code UUID} * @return {@code UUID}
*/ */
public static UUID nameUUIDFromBytes(byte[] name) public static UUID nameUUIDFromBytes(byte[] name)
{ {
MessageDigest md; MessageDigest md;
try try
{ {
md = MessageDigest.getInstance("MD5"); md = MessageDigest.getInstance("MD5");
} }
catch (NoSuchAlgorithmException nsae) catch (NoSuchAlgorithmException nsae)
{ {
throw new InternalError("MD5 not supported"); throw new InternalError("MD5 not supported");
} }
byte[] md5Bytes = md.digest(name); byte[] md5Bytes = md.digest(name);
md5Bytes[6] &= 0x0f; /* clear version */ md5Bytes[6] &= 0x0f; /* clear version */
md5Bytes[6] |= 0x30; /* set to version 3 */ md5Bytes[6] |= 0x30; /* set to version 3 */
md5Bytes[8] &= 0x3f; /* clear variant */ md5Bytes[8] &= 0x3f; /* clear variant */
md5Bytes[8] |= 0x80; /* set to IETF variant */ md5Bytes[8] |= 0x80; /* set to IETF variant */
return new UUID(md5Bytes); return new UUID(md5Bytes);
} }
/** /**
* {@link #toString()} {@code UUID} * {@link #toString()} {@code UUID}
* *
* @param name {@code UUID} * @param name {@code UUID}
* @return {@code UUID} * @return {@code UUID}
* @throws IllegalArgumentException name {@link #toString} * @throws IllegalArgumentException name {@link #toString}
* *
*/ */
public static UUID fromString(String name) public static UUID fromString(String name)
{ {
String[] components = name.split("-"); String[] components = name.split("-");
if (components.length != 5) if (components.length != 5)
{ {
throw new IllegalArgumentException("Invalid UUID string: " + name); throw new IllegalArgumentException("Invalid UUID string: " + name);
} }
for (int i = 0; i < 5; i++) for (int i = 0; i < 5; i++)
{ {
components[i] = "0x" + components[i]; components[i] = "0x" + components[i];
} }
long mostSigBits = Long.decode(components[0]).longValue(); long mostSigBits = Long.decode(components[0]).longValue();
mostSigBits <<= 16; mostSigBits <<= 16;
mostSigBits |= Long.decode(components[1]).longValue(); mostSigBits |= Long.decode(components[1]).longValue();
mostSigBits <<= 16; mostSigBits <<= 16;
mostSigBits |= Long.decode(components[2]).longValue(); mostSigBits |= Long.decode(components[2]).longValue();
long leastSigBits = Long.decode(components[3]).longValue(); long leastSigBits = Long.decode(components[3]).longValue();
leastSigBits <<= 48; leastSigBits <<= 48;
leastSigBits |= Long.decode(components[4]).longValue(); leastSigBits |= Long.decode(components[4]).longValue();
return new UUID(mostSigBits, leastSigBits); return new UUID(mostSigBits, leastSigBits);
} }
/** /**
* UUID 128 64 * UUID 128 64
* *
* @return UUID 128 64 * @return UUID 128 64
*/ */
public long getLeastSignificantBits() public long getLeastSignificantBits()
{ {
return leastSigBits; return leastSigBits;
} }
/** /**
* UUID 128 64 * UUID 128 64
* *
* @return UUID 128 64 * @return UUID 128 64
*/ */
public long getMostSignificantBits() public long getMostSignificantBits()
{ {
return mostSigBits; return mostSigBits;
} }
/** /**
* {@code UUID} . {@code UUID} * {@code UUID} . {@code UUID}
* <p> * <p>
* : * :
* <ul> * <ul>
* <li>1 UUID * <li>1 UUID
* <li>2 DCE UUID * <li>2 DCE UUID
* <li>3 UUID * <li>3 UUID
* <li>4 UUID * <li>4 UUID
* </ul> * </ul>
* *
* @return {@code UUID} * @return {@code UUID}
*/ */
public int version() public int version()
{ {
// Version is bits masked by 0x000000000000F000 in MS long // Version is bits masked by 0x000000000000F000 in MS long
return (int) ((mostSigBits >> 12) & 0x0f); return (int) ((mostSigBits >> 12) & 0x0f);
} }
/** /**
* {@code UUID} {@code UUID} * {@code UUID} {@code UUID}
* <p> * <p>
* *
* <ul> * <ul>
* <li>0 NCS * <li>0 NCS
* <li>2 <a href="http://www.ietf.org/rfc/rfc4122.txt">IETF&nbsp;RFC&nbsp;4122</a>(Leach-Salz), * <li>2 <a href="http://www.ietf.org/rfc/rfc4122.txt">IETF&nbsp;RFC&nbsp;4122</a>(Leach-Salz),
* <li>6 * <li>6
* <li>7 使 * <li>7 使
* </ul> * </ul>
* *
* @return {@code UUID} * @return {@code UUID}
*/ */
public int variant() public int variant()
{ {
// This field is composed of a varying number of bits. // This field is composed of a varying number of bits.
// 0 - - Reserved for NCS backward compatibility // 0 - - Reserved for NCS backward compatibility
// 1 0 - The IETF aka Leach-Salz variant (used by this class) // 1 0 - The IETF aka Leach-Salz variant (used by this class)
// 1 1 0 Reserved, Microsoft backward compatibility // 1 1 0 Reserved, Microsoft backward compatibility
// 1 1 1 Reserved for future definition. // 1 1 1 Reserved for future definition.
return (int) ((leastSigBits >>> (64 - (leastSigBits >>> 62))) & (leastSigBits >> 63)); return (int) ((leastSigBits >>> (64 - (leastSigBits >>> 62))) & (leastSigBits >> 63));
} }
/** /**
* UUID * UUID
* *
* <p> * <p>
* 60 {@code UUID} time_lowtime_mid time_hi <br> * 60 {@code UUID} time_lowtime_mid time_hi <br>
* 100 UTC 1582 10 15 * 100 UTC 1582 10 15
* *
* <p> * <p>
* UUID version 1<br> * UUID version 1<br>
* {@code UUID} UUID UnsupportedOperationException * {@code UUID} UUID UnsupportedOperationException
* *
* @throws UnsupportedOperationException {@code UUID} version 1 UUID * @throws UnsupportedOperationException {@code UUID} version 1 UUID
*/ */
public long timestamp() throws UnsupportedOperationException public long timestamp() throws UnsupportedOperationException
{ {
checkTimeBase(); checkTimeBase();
return (mostSigBits & 0x0FFFL) << 48// return (mostSigBits & 0x0FFFL) << 48//
| ((mostSigBits >> 16) & 0x0FFFFL) << 32// | ((mostSigBits >> 16) & 0x0FFFFL) << 32//
| mostSigBits >>> 32; | mostSigBits >>> 32;
} }
/** /**
* UUID * UUID
* *
* <p> * <p>
* 14 UUID clock_seq clock_seq UUID * 14 UUID clock_seq clock_seq UUID
* <p> * <p>
* {@code clockSequence} UUID version 1 UUID UUID * {@code clockSequence} UUID version 1 UUID UUID
* UnsupportedOperationException * UnsupportedOperationException
* *
* @return {@code UUID} * @return {@code UUID}
* *
* @throws UnsupportedOperationException UUID version 1 * @throws UnsupportedOperationException UUID version 1
*/ */
public int clockSequence() throws UnsupportedOperationException public int clockSequence() throws UnsupportedOperationException
{ {
checkTimeBase(); checkTimeBase();
return (int) ((leastSigBits & 0x3FFF000000000000L) >>> 48); return (int) ((leastSigBits & 0x3FFF000000000000L) >>> 48);
} }
/** /**
* UUID * UUID
* *
* <p> * <p>
* 48 UUID node IEEE 802 UUID * 48 UUID node IEEE 802 UUID
* <p> * <p>
* UUID version 1<br> * UUID version 1<br>
* UUID UUID UnsupportedOperationException * UUID UUID UnsupportedOperationException
* *
* @return {@code UUID} * @return {@code UUID}
* *
* @throws UnsupportedOperationException UUID version 1 * @throws UnsupportedOperationException UUID version 1
*/ */
public long node() throws UnsupportedOperationException public long node() throws UnsupportedOperationException
{ {
checkTimeBase(); checkTimeBase();
return leastSigBits & 0x0000FFFFFFFFFFFFL; return leastSigBits & 0x0000FFFFFFFFFFFFL;
} }
/** /**
* {@code UUID} * {@code UUID}
* *
* <p> * <p>
* UUID BNF * UUID BNF
* *
* <pre> * <pre>
* {@code * {@code
* UUID = <time_low>-<time_mid>-<time_high_and_version>-<variant_and_sequence>-<node> * UUID = <time_low>-<time_mid>-<time_high_and_version>-<variant_and_sequence>-<node>
* time_low = 4*<hexOctet> * time_low = 4*<hexOctet>
* time_mid = 2*<hexOctet> * time_mid = 2*<hexOctet>
* time_high_and_version = 2*<hexOctet> * time_high_and_version = 2*<hexOctet>
* variant_and_sequence = 2*<hexOctet> * variant_and_sequence = 2*<hexOctet>
* node = 6*<hexOctet> * node = 6*<hexOctet>
* hexOctet = <hexDigit><hexDigit> * hexOctet = <hexDigit><hexDigit>
* hexDigit = [0-9a-fA-F] * hexDigit = [0-9a-fA-F]
* } * }
* </pre> * </pre>
* *
* </blockquote> * </blockquote>
* *
* @return {@code UUID} * @return {@code UUID}
* @see #toString(boolean) * @see #toString(boolean)
*/ */
@Override @Override
public String toString() public String toString()
{ {
return toString(false); return toString(false);
} }
/** /**
* {@code UUID} * {@code UUID}
* *
* <p> * <p>
* UUID BNF * UUID BNF
* *
* <pre> * <pre>
* {@code * {@code
* UUID = <time_low>-<time_mid>-<time_high_and_version>-<variant_and_sequence>-<node> * UUID = <time_low>-<time_mid>-<time_high_and_version>-<variant_and_sequence>-<node>
* time_low = 4*<hexOctet> * time_low = 4*<hexOctet>
* time_mid = 2*<hexOctet> * time_mid = 2*<hexOctet>
* time_high_and_version = 2*<hexOctet> * time_high_and_version = 2*<hexOctet>
* variant_and_sequence = 2*<hexOctet> * variant_and_sequence = 2*<hexOctet>
* node = 6*<hexOctet> * node = 6*<hexOctet>
* hexOctet = <hexDigit><hexDigit> * hexOctet = <hexDigit><hexDigit>
* hexDigit = [0-9a-fA-F] * hexDigit = [0-9a-fA-F]
* } * }
* </pre> * </pre>
* *
* </blockquote> * </blockquote>
* *
* @param isSimple '-'UUID * @param isSimple '-'UUID
* @return {@code UUID} * @return {@code UUID}
*/ */
public String toString(boolean isSimple) public String toString(boolean isSimple)
{ {
final StringBuilder builder = new StringBuilder(isSimple ? 32 : 36); final StringBuilder builder = new StringBuilder(isSimple ? 32 : 36);
// time_low // time_low
builder.append(digits(mostSigBits >> 32, 8)); builder.append(digits(mostSigBits >> 32, 8));
if (false == isSimple) if (false == isSimple)
{ {
builder.append('-'); builder.append('-');
} }
// time_mid // time_mid
builder.append(digits(mostSigBits >> 16, 4)); builder.append(digits(mostSigBits >> 16, 4));
if (false == isSimple) if (false == isSimple)
{ {
builder.append('-'); builder.append('-');
} }
// time_high_and_version // time_high_and_version
builder.append(digits(mostSigBits, 4)); builder.append(digits(mostSigBits, 4));
if (false == isSimple) if (false == isSimple)
{ {
builder.append('-'); builder.append('-');
} }
// variant_and_sequence // variant_and_sequence
builder.append(digits(leastSigBits >> 48, 4)); builder.append(digits(leastSigBits >> 48, 4));
if (false == isSimple) if (false == isSimple)
{ {
builder.append('-'); builder.append('-');
} }
// node // node
builder.append(digits(leastSigBits, 12)); builder.append(digits(leastSigBits, 12));
return builder.toString(); return builder.toString();
} }
/** /**
* UUID * UUID
* *
* @return UUID * @return UUID
*/ */
@Override @Override
public int hashCode() public int hashCode()
{ {
long hilo = mostSigBits ^ leastSigBits; long hilo = mostSigBits ^ leastSigBits;
return ((int) (hilo >> 32)) ^ (int) hilo; return ((int) (hilo >> 32)) ^ (int) hilo;
} }
/** /**
* *
* <p> * <p>
* {@code null} UUID UUID varriant {@code true} * {@code null} UUID UUID varriant {@code true}
* *
* @param obj * @param obj
* *
* @return {@code true} {@code false} * @return {@code true} {@code false}
*/ */
@Override @Override
public boolean equals(Object obj) public boolean equals(Object obj)
{ {
if ((null == obj) || (obj.getClass() != UUID.class)) if ((null == obj) || (obj.getClass() != UUID.class))
{ {
return false; return false;
} }
UUID id = (UUID) obj; UUID id = (UUID) obj;
return (mostSigBits == id.mostSigBits && leastSigBits == id.leastSigBits); return (mostSigBits == id.mostSigBits && leastSigBits == id.leastSigBits);
} }
// Comparison Operations // Comparison Operations
/** /**
* UUID UUID * UUID UUID
* *
* <p> * <p>
* UUID UUID UUID UUID UUID * UUID UUID UUID UUID UUID
* *
* @param val UUID UUID * @param val UUID UUID
* *
* @return UUID val -10 1 * @return UUID val -10 1
* *
*/ */
@Override @Override
public int compareTo(UUID val) public int compareTo(UUID val)
{ {
// The ordering is intentionally set up so that the UUIDs // The ordering is intentionally set up so that the UUIDs
// can simply be numerically compared as two numbers // can simply be numerically compared as two numbers
return (this.mostSigBits < val.mostSigBits ? -1 : // return (this.mostSigBits < val.mostSigBits ? -1 : //
(this.mostSigBits > val.mostSigBits ? 1 : // (this.mostSigBits > val.mostSigBits ? 1 : //
(this.leastSigBits < val.leastSigBits ? -1 : // (this.leastSigBits < val.leastSigBits ? -1 : //
(this.leastSigBits > val.leastSigBits ? 1 : // (this.leastSigBits > val.leastSigBits ? 1 : //
0)))); 0))));
} }
// ------------------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------------------
// Private method start // Private method start
/** /**
* hex * hex
* *
* @param val * @param val
* @param digits * @param digits
* @return * @return
*/ */
private static String digits(long val, int digits) private static String digits(long val, int digits)
{ {
long hi = 1L << (digits * 4); long hi = 1L << (digits * 4);
return Long.toHexString(hi | (val & (hi - 1))).substring(1); return Long.toHexString(hi | (val & (hi - 1))).substring(1);
} }
/** /**
* time-basedUUID * time-basedUUID
*/ */
private void checkTimeBase() private void checkTimeBase()
{ {
if (version() != 1) if (version() != 1)
{ {
throw new UnsupportedOperationException("Not a time-based UUID"); throw new UnsupportedOperationException("Not a time-based UUID");
} }
} }
/** /**
* {@link SecureRandom} (RNG) * {@link SecureRandom} (RNG)
* *
* @return {@link SecureRandom} * @return {@link SecureRandom}
*/ */
public static SecureRandom getSecureRandom() public static SecureRandom getSecureRandom()
{ {
try try
{ {
return SecureRandom.getInstance("SHA1PRNG"); return SecureRandom.getInstance("SHA1PRNG");
} }
catch (NoSuchAlgorithmException e) catch (NoSuchAlgorithmException e)
{ {
throw new UtilException(e); throw new UtilException(e);
} }
} }
/** /**
* <br> * <br>
* ThreadLocalRandomJDK 7线 * ThreadLocalRandomJDK 7线
* *
* @return {@link ThreadLocalRandom} * @return {@link ThreadLocalRandom}
*/ */
public static ThreadLocalRandom getRandom() public static ThreadLocalRandom getRandom()
{ {
return ThreadLocalRandom.current(); return ThreadLocalRandom.current();
} }
} }

View File

@ -1,142 +1,142 @@
package com.ruoyi.common.core.web.controller; package HomeWork.common.core.web.controller;
import java.beans.PropertyEditorSupport; import java.beans.PropertyEditorSupport;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.InitBinder;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.ruoyi.common.core.constant.HttpStatus; import HomeWork.common.core.constant.HttpStatus;
import com.ruoyi.common.core.utils.DateUtils; import HomeWork.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.PageUtils; import HomeWork.common.core.utils.PageUtils;
import com.ruoyi.common.core.web.domain.AjaxResult; import HomeWork.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo; import HomeWork.common.core.web.page.TableDataInfo;
/** /**
* web * web
* *
* @author ruoyi * @author ruoyi
*/ */
public class BaseController public class BaseController
{ {
protected final Logger logger = LoggerFactory.getLogger(this.getClass()); protected final Logger logger = LoggerFactory.getLogger(this.getClass());
/** /**
* Date * Date
*/ */
@InitBinder @InitBinder
public void initBinder(WebDataBinder binder) public void initBinder(WebDataBinder binder)
{ {
// Date 类型转换 // Date 类型转换
binder.registerCustomEditor(Date.class, new PropertyEditorSupport() binder.registerCustomEditor(Date.class, new PropertyEditorSupport()
{ {
@Override @Override
public void setAsText(String text) public void setAsText(String text)
{ {
setValue(DateUtils.parseDate(text)); setValue(DateUtils.parseDate(text));
} }
}); });
} }
/** /**
* *
*/ */
protected void startPage() protected void startPage()
{ {
PageUtils.startPage(); PageUtils.startPage();
} }
/** /**
* 线 * 线
*/ */
protected void clearPage() protected void clearPage()
{ {
PageUtils.clearPage(); PageUtils.clearPage();
} }
/** /**
* *
*/ */
@SuppressWarnings({ "rawtypes", "unchecked" }) @SuppressWarnings({ "rawtypes", "unchecked" })
protected TableDataInfo getDataTable(List<?> list) protected TableDataInfo getDataTable(List<?> list)
{ {
TableDataInfo rspData = new TableDataInfo(); TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS); rspData.setCode(HttpStatus.SUCCESS);
rspData.setRows(list); rspData.setRows(list);
rspData.setMsg("查询成功"); rspData.setMsg("查询成功");
rspData.setTotal(new PageInfo(list).getTotal()); rspData.setTotal(new PageInfo(list).getTotal());
return rspData; return rspData;
} }
/** /**
* *
*/ */
public AjaxResult success() public AjaxResult success()
{ {
return AjaxResult.success(); return AjaxResult.success();
} }
/** /**
* *
*/ */
public AjaxResult success(String message) public AjaxResult success(String message)
{ {
return AjaxResult.success(message); return AjaxResult.success(message);
} }
/** /**
* *
*/ */
public AjaxResult success(Object data) public AjaxResult success(Object data)
{ {
return AjaxResult.success(data); return AjaxResult.success(data);
} }
/** /**
* *
*/ */
public AjaxResult error() public AjaxResult error()
{ {
return AjaxResult.error(); return AjaxResult.error();
} }
/** /**
* *
*/ */
public AjaxResult error(String message) public AjaxResult error(String message)
{ {
return AjaxResult.error(message); return AjaxResult.error(message);
} }
/** /**
* *
*/ */
public AjaxResult warn(String message) public AjaxResult warn(String message)
{ {
return AjaxResult.warn(message); return AjaxResult.warn(message);
} }
/** /**
* *
* *
* @param rows * @param rows
* @return * @return
*/ */
protected AjaxResult toAjax(int rows) protected AjaxResult toAjax(int rows)
{ {
return rows > 0 ? AjaxResult.success() : AjaxResult.error(); return rows > 0 ? AjaxResult.success() : AjaxResult.error();
} }
/** /**
* *
* *
* @param result * @param result
* @return * @return
*/ */
protected AjaxResult toAjax(boolean result) protected AjaxResult toAjax(boolean result)
{ {
return result ? success() : error(); return result ? success() : error();
} }
} }

View File

@ -1,216 +1,216 @@
package com.ruoyi.common.core.web.domain; package HomeWork.common.core.web.domain;
import java.util.HashMap; import java.util.HashMap;
import java.util.Objects; import java.util.Objects;
import com.ruoyi.common.core.constant.HttpStatus; import HomeWork.common.core.constant.HttpStatus;
import com.ruoyi.common.core.utils.StringUtils; import HomeWork.common.core.utils.StringUtils;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class AjaxResult extends HashMap<String, Object> public class AjaxResult extends HashMap<String, Object>
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 状态码 */ /** 状态码 */
public static final String CODE_TAG = "code"; public static final String CODE_TAG = "code";
/** 返回内容 */ /** 返回内容 */
public static final String MSG_TAG = "msg"; public static final String MSG_TAG = "msg";
/** 数据对象 */ /** 数据对象 */
public static final String DATA_TAG = "data"; public static final String DATA_TAG = "data";
/** /**
* AjaxResult 使 * AjaxResult 使
*/ */
public AjaxResult() public AjaxResult()
{ {
} }
/** /**
* AjaxResult * AjaxResult
* *
* @param code * @param code
* @param msg * @param msg
*/ */
public AjaxResult(int code, String msg) public AjaxResult(int code, String msg)
{ {
super.put(CODE_TAG, code); super.put(CODE_TAG, code);
super.put(MSG_TAG, msg); super.put(MSG_TAG, msg);
} }
/** /**
* AjaxResult * AjaxResult
* *
* @param code * @param code
* @param msg * @param msg
* @param data * @param data
*/ */
public AjaxResult(int code, String msg, Object data) public AjaxResult(int code, String msg, Object data)
{ {
super.put(CODE_TAG, code); super.put(CODE_TAG, code);
super.put(MSG_TAG, msg); super.put(MSG_TAG, msg);
if (StringUtils.isNotNull(data)) if (StringUtils.isNotNull(data))
{ {
super.put(DATA_TAG, data); super.put(DATA_TAG, data);
} }
} }
/** /**
* *
* *
* @return * @return
*/ */
public static AjaxResult success() public static AjaxResult success()
{ {
return AjaxResult.success("操作成功"); return AjaxResult.success("操作成功");
} }
/** /**
* *
* *
* @return * @return
*/ */
public static AjaxResult success(Object data) public static AjaxResult success(Object data)
{ {
return AjaxResult.success("操作成功", data); return AjaxResult.success("操作成功", data);
} }
/** /**
* *
* *
* @param msg * @param msg
* @return * @return
*/ */
public static AjaxResult success(String msg) public static AjaxResult success(String msg)
{ {
return AjaxResult.success(msg, null); return AjaxResult.success(msg, null);
} }
/** /**
* *
* *
* @param msg * @param msg
* @param data * @param data
* @return * @return
*/ */
public static AjaxResult success(String msg, Object data) public static AjaxResult success(String msg, Object data)
{ {
return new AjaxResult(HttpStatus.SUCCESS, msg, data); return new AjaxResult(HttpStatus.SUCCESS, msg, data);
} }
/** /**
* *
* *
* @param msg * @param msg
* @return * @return
*/ */
public static AjaxResult warn(String msg) public static AjaxResult warn(String msg)
{ {
return AjaxResult.warn(msg, null); return AjaxResult.warn(msg, null);
} }
/** /**
* *
* *
* @param msg * @param msg
* @param data * @param data
* @return * @return
*/ */
public static AjaxResult warn(String msg, Object data) public static AjaxResult warn(String msg, Object data)
{ {
return new AjaxResult(HttpStatus.WARN, msg, data); return new AjaxResult(HttpStatus.WARN, msg, data);
} }
/** /**
* *
* *
* @return * @return
*/ */
public static AjaxResult error() public static AjaxResult error()
{ {
return AjaxResult.error("操作失败"); return AjaxResult.error("操作失败");
} }
/** /**
* *
* *
* @param msg * @param msg
* @return * @return
*/ */
public static AjaxResult error(String msg) public static AjaxResult error(String msg)
{ {
return AjaxResult.error(msg, null); return AjaxResult.error(msg, null);
} }
/** /**
* *
* *
* @param msg * @param msg
* @param data * @param data
* @return * @return
*/ */
public static AjaxResult error(String msg, Object data) public static AjaxResult error(String msg, Object data)
{ {
return new AjaxResult(HttpStatus.ERROR, msg, data); return new AjaxResult(HttpStatus.ERROR, msg, data);
} }
/** /**
* *
* *
* @param code * @param code
* @param msg * @param msg
* @return * @return
*/ */
public static AjaxResult error(int code, String msg) public static AjaxResult error(int code, String msg)
{ {
return new AjaxResult(code, msg, null); return new AjaxResult(code, msg, null);
} }
/** /**
* *
* *
* @return * @return
*/ */
public boolean isSuccess() public boolean isSuccess()
{ {
return Objects.equals(HttpStatus.SUCCESS, this.get(CODE_TAG)); return Objects.equals(HttpStatus.SUCCESS, this.get(CODE_TAG));
} }
/** /**
* *
* *
* @return * @return
*/ */
public boolean isWarn() public boolean isWarn()
{ {
return Objects.equals(HttpStatus.WARN, this.get(CODE_TAG)); return Objects.equals(HttpStatus.WARN, this.get(CODE_TAG));
} }
/** /**
* *
* *
* @return * @return
*/ */
public boolean isError() public boolean isError()
{ {
return Objects.equals(HttpStatus.ERROR, this.get(CODE_TAG)); return Objects.equals(HttpStatus.ERROR, this.get(CODE_TAG));
} }
/** /**
* 便 * 便
* *
* @param key * @param key
* @param value * @param value
* @return * @return
*/ */
@Override @Override
public AjaxResult put(String key, Object value) public AjaxResult put(String key, Object value)
{ {
super.put(key, value); super.put(key, value);
return this; return this;
} }
} }

View File

@ -1,118 +1,118 @@
package com.ruoyi.common.core.web.domain; package HomeWork.common.core.web.domain;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
/** /**
* Entity * Entity
* *
* @author ruoyi * @author ruoyi
*/ */
public class BaseEntity implements Serializable public class BaseEntity implements Serializable
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 搜索值 */ /** 搜索值 */
@JsonIgnore @JsonIgnore
private String searchValue; private String searchValue;
/** 创建者 */ /** 创建者 */
private String createBy; private String createBy;
/** 创建时间 */ /** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime; private Date createTime;
/** 更新者 */ /** 更新者 */
private String updateBy; private String updateBy;
/** 更新时间 */ /** 更新时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime; private Date updateTime;
/** 备注 */ /** 备注 */
private String remark; private String remark;
/** 请求参数 */ /** 请求参数 */
@JsonInclude(JsonInclude.Include.NON_EMPTY) @JsonInclude(JsonInclude.Include.NON_EMPTY)
private Map<String, Object> params; private Map<String, Object> params;
public String getSearchValue() public String getSearchValue()
{ {
return searchValue; return searchValue;
} }
public void setSearchValue(String searchValue) public void setSearchValue(String searchValue)
{ {
this.searchValue = searchValue; this.searchValue = searchValue;
} }
public String getCreateBy() public String getCreateBy()
{ {
return createBy; return createBy;
} }
public void setCreateBy(String createBy) public void setCreateBy(String createBy)
{ {
this.createBy = createBy; this.createBy = createBy;
} }
public Date getCreateTime() public Date getCreateTime()
{ {
return createTime; return createTime;
} }
public void setCreateTime(Date createTime) public void setCreateTime(Date createTime)
{ {
this.createTime = createTime; this.createTime = createTime;
} }
public String getUpdateBy() public String getUpdateBy()
{ {
return updateBy; return updateBy;
} }
public void setUpdateBy(String updateBy) public void setUpdateBy(String updateBy)
{ {
this.updateBy = updateBy; this.updateBy = updateBy;
} }
public Date getUpdateTime() public Date getUpdateTime()
{ {
return updateTime; return updateTime;
} }
public void setUpdateTime(Date updateTime) public void setUpdateTime(Date updateTime)
{ {
this.updateTime = updateTime; this.updateTime = updateTime;
} }
public String getRemark() public String getRemark()
{ {
return remark; return remark;
} }
public void setRemark(String remark) public void setRemark(String remark)
{ {
this.remark = remark; this.remark = remark;
} }
public Map<String, Object> getParams() public Map<String, Object> getParams()
{ {
if (params == null) if (params == null)
{ {
params = new HashMap<>(); params = new HashMap<>();
} }
return params; return params;
} }
public void setParams(Map<String, Object> params) public void setParams(Map<String, Object> params)
{ {
this.params = params; this.params = params;
} }
} }

View File

@ -1,79 +1,79 @@
package com.ruoyi.common.core.web.domain; package HomeWork.common.core.web.domain;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* Tree * Tree
* *
* @author ruoyi * @author ruoyi
*/ */
public class TreeEntity extends BaseEntity public class TreeEntity extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 父菜单名称 */ /** 父菜单名称 */
private String parentName; private String parentName;
/** 父菜单ID */ /** 父菜单ID */
private Long parentId; private Long parentId;
/** 显示顺序 */ /** 显示顺序 */
private Integer orderNum; private Integer orderNum;
/** 祖级列表 */ /** 祖级列表 */
private String ancestors; private String ancestors;
/** 子部门 */ /** 子部门 */
private List<?> children = new ArrayList<>(); private List<?> children = new ArrayList<>();
public String getParentName() public String getParentName()
{ {
return parentName; return parentName;
} }
public void setParentName(String parentName) public void setParentName(String parentName)
{ {
this.parentName = parentName; this.parentName = parentName;
} }
public Long getParentId() public Long getParentId()
{ {
return parentId; return parentId;
} }
public void setParentId(Long parentId) public void setParentId(Long parentId)
{ {
this.parentId = parentId; this.parentId = parentId;
} }
public Integer getOrderNum() public Integer getOrderNum()
{ {
return orderNum; return orderNum;
} }
public void setOrderNum(Integer orderNum) public void setOrderNum(Integer orderNum)
{ {
this.orderNum = orderNum; this.orderNum = orderNum;
} }
public String getAncestors() public String getAncestors()
{ {
return ancestors; return ancestors;
} }
public void setAncestors(String ancestors) public void setAncestors(String ancestors)
{ {
this.ancestors = ancestors; this.ancestors = ancestors;
} }
public List<?> getChildren() public List<?> getChildren()
{ {
return children; return children;
} }
public void setChildren(List<?> children) public void setChildren(List<?> children)
{ {
this.children = children; this.children = children;
} }
} }

View File

@ -1,101 +1,101 @@
package com.ruoyi.common.core.web.page; package HomeWork.common.core.web.page;
import com.ruoyi.common.core.utils.StringUtils; import HomeWork.common.core.utils.StringUtils;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class PageDomain public class PageDomain
{ {
/** 当前记录起始索引 */ /** 当前记录起始索引 */
private Integer pageNum; private Integer pageNum;
/** 每页显示记录数 */ /** 每页显示记录数 */
private Integer pageSize; private Integer pageSize;
/** 排序列 */ /** 排序列 */
private String orderByColumn; private String orderByColumn;
/** 排序的方向desc或者asc */ /** 排序的方向desc或者asc */
private String isAsc = "asc"; private String isAsc = "asc";
/** 分页参数合理化 */ /** 分页参数合理化 */
private Boolean reasonable = true; private Boolean reasonable = true;
public String getOrderBy() public String getOrderBy()
{ {
if (StringUtils.isEmpty(orderByColumn)) if (StringUtils.isEmpty(orderByColumn))
{ {
return ""; return "";
} }
return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc; return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc;
} }
public Integer getPageNum() public Integer getPageNum()
{ {
return pageNum; return pageNum;
} }
public void setPageNum(Integer pageNum) public void setPageNum(Integer pageNum)
{ {
this.pageNum = pageNum; this.pageNum = pageNum;
} }
public Integer getPageSize() public Integer getPageSize()
{ {
return pageSize; return pageSize;
} }
public void setPageSize(Integer pageSize) public void setPageSize(Integer pageSize)
{ {
this.pageSize = pageSize; this.pageSize = pageSize;
} }
public String getOrderByColumn() public String getOrderByColumn()
{ {
return orderByColumn; return orderByColumn;
} }
public void setOrderByColumn(String orderByColumn) public void setOrderByColumn(String orderByColumn)
{ {
this.orderByColumn = orderByColumn; this.orderByColumn = orderByColumn;
} }
public String getIsAsc() public String getIsAsc()
{ {
return isAsc; return isAsc;
} }
public void setIsAsc(String isAsc) public void setIsAsc(String isAsc)
{ {
if (StringUtils.isNotEmpty(isAsc)) if (StringUtils.isNotEmpty(isAsc))
{ {
// 兼容前端排序类型 // 兼容前端排序类型
if ("ascending".equals(isAsc)) if ("ascending".equals(isAsc))
{ {
isAsc = "asc"; isAsc = "asc";
} }
else if ("descending".equals(isAsc)) else if ("descending".equals(isAsc))
{ {
isAsc = "desc"; isAsc = "desc";
} }
this.isAsc = isAsc; this.isAsc = isAsc;
} }
} }
public Boolean getReasonable() public Boolean getReasonable()
{ {
if (StringUtils.isNull(reasonable)) if (StringUtils.isNull(reasonable))
{ {
return Boolean.TRUE; return Boolean.TRUE;
} }
return reasonable; return reasonable;
} }
public void setReasonable(Boolean reasonable) public void setReasonable(Boolean reasonable)
{ {
this.reasonable = reasonable; this.reasonable = reasonable;
} }
} }

View File

@ -1,85 +1,85 @@
package com.ruoyi.common.core.web.page; package HomeWork.common.core.web.page;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class TableDataInfo implements Serializable public class TableDataInfo implements Serializable
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 总记录数 */ /** 总记录数 */
private long total; private long total;
/** 列表数据 */ /** 列表数据 */
private List<?> rows; private List<?> rows;
/** 消息状态码 */ /** 消息状态码 */
private int code; private int code;
/** 消息内容 */ /** 消息内容 */
private String msg; private String msg;
/** /**
* *
*/ */
public TableDataInfo() public TableDataInfo()
{ {
} }
/** /**
* *
* *
* @param list * @param list
* @param total * @param total
*/ */
public TableDataInfo(List<?> list, int total) public TableDataInfo(List<?> list, int total)
{ {
this.rows = list; this.rows = list;
this.total = total; this.total = total;
} }
public long getTotal() public long getTotal()
{ {
return total; return total;
} }
public void setTotal(long total) public void setTotal(long total)
{ {
this.total = total; this.total = total;
} }
public List<?> getRows() public List<?> getRows()
{ {
return rows; return rows;
} }
public void setRows(List<?> rows) public void setRows(List<?> rows)
{ {
this.rows = rows; this.rows = rows;
} }
public int getCode() public int getCode()
{ {
return code; return code;
} }
public void setCode(int code) public void setCode(int code)
{ {
this.code = code; this.code = code;
} }
public String getMsg() public String getMsg()
{ {
return msg; return msg;
} }
public void setMsg(String msg) public void setMsg(String msg)
{ {
this.msg = msg; this.msg = msg;
} }
} }

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