mirror of
https://gitee.com/lab1024/smart-admin.git
synced 2025-10-09 13:46:40 +08:00
优化了很多包名、类型、以及很多包的位置,跨度好几天,有些不记得了
This commit is contained in:
parent
d6e49a8b50
commit
b9a76dc2d1
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.common.anno;
|
package net.lab1024.smartadmin.service.common.annoation;
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
import java.lang.annotation.ElementType;
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.common.anno;
|
package net.lab1024.smartadmin.service.common.annoation;
|
||||||
|
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
@ -32,8 +32,6 @@ public enum UserErrorCode implements ErrorCode {
|
|||||||
|
|
||||||
LOGIN_FAILED(30010, "用户名或密码错误!"),
|
LOGIN_FAILED(30010, "用户名或密码错误!"),
|
||||||
|
|
||||||
VERIFICATION_CODE_INVALID(30011, "验证码错误或已过期,请输入正确的验证码"),
|
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
private final int code;
|
private final int code;
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
package net.lab1024.smartadmin.service.common.constant;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [ ]
|
|
||||||
*
|
|
||||||
* @author luoyi
|
|
||||||
* @date 2021/9/26 17:50
|
|
||||||
*/
|
|
||||||
public class ApiUrlPrefixConst {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 基础 api 前缀
|
|
||||||
*/
|
|
||||||
public static final String API_PREFIX_SUPPORT = "/support";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 后管 api 前缀
|
|
||||||
*/
|
|
||||||
public static final String API_PREFIX_ADMIN = "/admin";
|
|
||||||
}
|
|
@ -1,78 +0,0 @@
|
|||||||
package net.lab1024.smartadmin.service.common.constant;
|
|
||||||
|
|
||||||
import com.google.common.collect.Interner;
|
|
||||||
import com.google.common.collect.Interners;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [ 通用常量 ]
|
|
||||||
*
|
|
||||||
* @author zhuoda
|
|
||||||
*/
|
|
||||||
public class CommonConst {
|
|
||||||
|
|
||||||
public static final int ZERO = 0;
|
|
||||||
|
|
||||||
public static final long ONE = 1;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 全局通用分隔符
|
|
||||||
*/
|
|
||||||
public static final String SEPARATOR = ",";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 全局通用分隔符 下划线
|
|
||||||
*/
|
|
||||||
public static final String UNDERLINE = "_";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 全局通用分隔符
|
|
||||||
*/
|
|
||||||
public static final Character SEPARATOR_CHAR = ',';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 全局通用分隔符 斜杠
|
|
||||||
*/
|
|
||||||
public static final String SEPARATOR_SLASH = "/";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 空字符串
|
|
||||||
*/
|
|
||||||
public static final String EMPTY_STR = "";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 全局通用 默认id
|
|
||||||
*/
|
|
||||||
public static final long DEFAULT_ID = 0L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 100 常量
|
|
||||||
*/
|
|
||||||
public static final Integer ONE_HUNDRED = 100;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 100 常量
|
|
||||||
*/
|
|
||||||
public static final BigDecimal ONE_HUNDRED_DECIMAL = new BigDecimal(100);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 全局通用 默认父级id 最顶级
|
|
||||||
*/
|
|
||||||
public static final Long DEFAULT_PARENT_ID = 0L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 空MaP
|
|
||||||
*/
|
|
||||||
public static final Map EMPTY_MAP = Collections.unmodifiableMap(new HashMap<>(0));
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 空 list
|
|
||||||
*/
|
|
||||||
public static final List EMPTY_LIST = Collections.unmodifiableList(new ArrayList<>(0));
|
|
||||||
|
|
||||||
public static final Interner<String> STRING_POOL = Interners.newWeakInterner();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
package net.lab1024.smartadmin.service.common.constant;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [ ]
|
|
||||||
*
|
|
||||||
* @author luoyi
|
|
||||||
* @date 2021/9/26 17:45
|
|
||||||
*/
|
|
||||||
public class NumberLimitConst {
|
|
||||||
/**
|
|
||||||
* 用户昵称
|
|
||||||
*/
|
|
||||||
public static final int USER_NICKNAME = 15;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 短信验证码长度
|
|
||||||
*/
|
|
||||||
public static final int SMS_CODE = 6;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 短信发送间隔 秒
|
|
||||||
*/
|
|
||||||
public static final int SMS_SEND_INTERVAL = 60;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 短信有效期 秒
|
|
||||||
*/
|
|
||||||
public static final int SMS_VALID_SECOND = 300;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 验证码短信 每天的限制
|
|
||||||
*/
|
|
||||||
public static final int SMS_DAY_LIMIT = 10;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文件名称长度
|
|
||||||
*/
|
|
||||||
public static final int FILE_NAME = 100;
|
|
||||||
}
|
|
@ -8,17 +8,17 @@ package net.lab1024.smartadmin.service.common.constant;
|
|||||||
*/
|
*/
|
||||||
public class RedisKeyConst {
|
public class RedisKeyConst {
|
||||||
|
|
||||||
public class Base {
|
public static final String PROJECT = "smart:";
|
||||||
|
|
||||||
private static final String PROJECT = "base:";
|
public class Support {
|
||||||
|
|
||||||
public static final String FILE_URL = PROJECT + "file:";
|
public static final String FILE_URL = PROJECT + "file:";
|
||||||
|
|
||||||
public static final String FILE_VO = PROJECT + "fileVO:";
|
public static final String FILE_VO = PROJECT + "file-vo:";
|
||||||
|
|
||||||
public static final String LOCK = PROJECT + "lock:";
|
public static final String LOCK = PROJECT + "lock:";
|
||||||
|
|
||||||
public static final String ID_GENERATOR = LOCK + "id:";
|
public static final String ID_GENERATOR = LOCK + "id-generator:";
|
||||||
|
|
||||||
public static final String CAPTCHA = PROJECT + "captcha:";
|
public static final String CAPTCHA = PROJECT + "captcha:";
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.common.constant;
|
|||||||
/**
|
/**
|
||||||
* [ ]
|
* [ ]
|
||||||
*
|
*
|
||||||
* @author luoyi
|
* @author 罗伊
|
||||||
* @date 2021/9/26 17:43
|
* @date 2021/9/26 17:43
|
||||||
*/
|
*/
|
||||||
public class RequestHeaderConst {
|
public class RequestHeaderConst {
|
||||||
|
@ -0,0 +1,37 @@
|
|||||||
|
package net.lab1024.smartadmin.service.common.constant;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [ 通用常量 ]
|
||||||
|
*
|
||||||
|
* @author 卓大
|
||||||
|
*/
|
||||||
|
public class StringConst {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 全局通用分隔符
|
||||||
|
*/
|
||||||
|
public static final String SEPARATOR = ",";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 全局通用分隔符 下划线
|
||||||
|
*/
|
||||||
|
public static final String UNDERLINE = "_";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 全局通用分隔符
|
||||||
|
*/
|
||||||
|
public static final Character SEPARATOR_CHAR = ',';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 全局通用分隔符 斜杠
|
||||||
|
*/
|
||||||
|
public static final String SEPARATOR_SLASH = "/";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 空字符串
|
||||||
|
*/
|
||||||
|
public static final String EMPTY_STR = "";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,15 +0,0 @@
|
|||||||
package net.lab1024.smartadmin.service.common.constant;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author 罗伊
|
|
||||||
* @date 2021-01-31 0:00
|
|
||||||
*/
|
|
||||||
public class SystemConst {
|
|
||||||
|
|
||||||
public static final class Password {
|
|
||||||
|
|
||||||
public static final String DEFAULT = "123456";
|
|
||||||
|
|
||||||
public static final String SALT_FORMAT = "smartAdmin_%s";
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,15 @@
|
|||||||
|
package net.lab1024.smartadmin.service.common.constant;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* redis key 常量类
|
||||||
|
*
|
||||||
|
* @author 卓大
|
||||||
|
* @date 2021/10/03 20:48
|
||||||
|
*/
|
||||||
|
public class UrlPrefixConst {
|
||||||
|
|
||||||
|
public static final String SYSTEM = "/system";
|
||||||
|
|
||||||
|
public static final String SUPPORT = "/support";
|
||||||
|
|
||||||
|
}
|
@ -1,16 +0,0 @@
|
|||||||
package net.lab1024.smartadmin.service.common.controller;
|
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import net.lab1024.smartadmin.service.common.constant.ApiUrlPrefixConst;
|
|
||||||
import net.lab1024.smartadmin.service.common.constant.CommonConst;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author: 卓大
|
|
||||||
* @create: 2020-03-31 08:54 PM from win10
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
@RequestMapping(ApiUrlPrefixConst.API_PREFIX_ADMIN)
|
|
||||||
public class AdminBaseController {
|
|
||||||
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.smartadmin.service.common.controller;
|
package net.lab1024.smartadmin.service.common.controller;
|
||||||
|
|
||||||
import net.lab1024.smartadmin.service.common.constant.ApiUrlPrefixConst;
|
import net.lab1024.smartadmin.service.common.constant.UrlPrefixConst;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -9,6 +9,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||||||
* @author 胡克
|
* @author 胡克
|
||||||
* @date 2019/10/18 11:51
|
* @date 2019/10/18 11:51
|
||||||
*/
|
*/
|
||||||
@RequestMapping(ApiUrlPrefixConst.API_PREFIX_SUPPORT)
|
@RequestMapping(UrlPrefixConst.SUPPORT)
|
||||||
public class SupportBaseController {
|
public class SupportBaseController {
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package net.lab1024.smartadmin.service.common.controller;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import net.lab1024.smartadmin.service.common.constant.UrlPrefixConst;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统controller基类
|
||||||
|
*
|
||||||
|
* @author 卓大
|
||||||
|
* @date 2021/10/02 11:51
|
||||||
|
*/
|
||||||
|
@RequestMapping(UrlPrefixConst.SYSTEM)
|
||||||
|
public class SystemBaseController {
|
||||||
|
|
||||||
|
}
|
@ -6,10 +6,7 @@ import org.hibernate.validator.constraints.Length;
|
|||||||
import org.hibernate.validator.constraints.Range;
|
import org.hibernate.validator.constraints.Range;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import javax.validation.constraints.Min;
|
import javax.validation.constraints.*;
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import javax.validation.constraints.Size;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -19,18 +16,20 @@ import java.util.List;
|
|||||||
* @Date Created in 2017/10/28 16:19
|
* @Date Created in 2017/10/28 16:19
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class PageBaseDTO {
|
public class PageParamDTO {
|
||||||
|
|
||||||
@ApiModelProperty(value = "页码(不能为空)", required = true, example = "1")
|
@ApiModelProperty(value = "页码(不能为空)", required = true, example = "1")
|
||||||
@NotNull(message = "分页参数不能为空")
|
@NotNull(message = "分页参数不能为空")
|
||||||
@Min(value = 1, message = "分页参数最小1")
|
|
||||||
private Integer pageNum;
|
private Integer pageNum;
|
||||||
|
|
||||||
@ApiModelProperty(value = "每页数量(不能为空)", required = true, example = "10")
|
@ApiModelProperty(value = "每页数量(不能为空)", required = true, example = "10")
|
||||||
@NotNull(message = "每页数量不能为空")
|
@NotNull(message = "每页数量不能为空")
|
||||||
@Range(min = 1, max = 200, message = "每页数量1-200")
|
@Max(value = 200, message = "每页最大为200")
|
||||||
private Integer pageSize;
|
private Integer pageSize;
|
||||||
|
|
||||||
|
@ApiModelProperty("是否查询总条数")
|
||||||
|
protected Boolean searchCount;
|
||||||
|
|
||||||
@ApiModelProperty("排序字段集合")
|
@ApiModelProperty("排序字段集合")
|
||||||
@Size(max = 10, message = "排序字段最多10")
|
@Size(max = 10, message = "排序字段最多10")
|
||||||
@Valid
|
@Valid
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.common.domain;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.SystemEnvironmentEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.SystemEnvironmentEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统环境
|
* 系统环境
|
||||||
@ -13,12 +13,12 @@ import net.lab1024.smartadmin.service.common.enumconst.SystemEnvironmentEnum;
|
|||||||
*/
|
*/
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
public class SystemEnvironmentBO {
|
public class SystemEnvironment {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否位生产环境
|
* 是否位生产环境
|
||||||
*/
|
*/
|
||||||
private Boolean isProd;
|
private boolean isProd;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 当前环境
|
* 当前环境
|
@ -0,0 +1,16 @@
|
|||||||
|
package net.lab1024.smartadmin.service.common.domain;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: listen
|
||||||
|
* @create: 2020/10/16
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ValidateData<T> {
|
||||||
|
|
||||||
|
@NotNull(message = "数据不能为空哦")
|
||||||
|
private T data;
|
||||||
|
}
|
@ -0,0 +1,148 @@
|
|||||||
|
package net.lab1024.smartadmin.service.common.domain;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: zhuoda
|
||||||
|
* @create: 2020-02-03 17:37 PM from win10
|
||||||
|
*/
|
||||||
|
public class ValidateList<E> implements List<E> {
|
||||||
|
|
||||||
|
@Valid
|
||||||
|
@NotEmpty(message = "数据长度不能为空哦")
|
||||||
|
private List<E> list;
|
||||||
|
|
||||||
|
public ValidateList() {
|
||||||
|
this.list = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ValidateList(List<E> list) {
|
||||||
|
this.list = list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<E> getList() {
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setList(List<E> list) {
|
||||||
|
this.list = list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int size() {
|
||||||
|
return list.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEmpty() {
|
||||||
|
return list.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean contains(Object o) {
|
||||||
|
return list.contains(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Iterator<E> iterator() {
|
||||||
|
return list.iterator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object[] toArray() {
|
||||||
|
return list.toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> T[] toArray(T[] a) {
|
||||||
|
return list.toArray(a);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean add(E e) {
|
||||||
|
return list.add(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean remove(Object o) {
|
||||||
|
return list.remove(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean containsAll(Collection<?> c) {
|
||||||
|
return list.containsAll(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addAll(Collection<? extends E> c) {
|
||||||
|
return list.addAll(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addAll(int index, Collection<? extends E> c) {
|
||||||
|
return list.addAll(index, c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean removeAll(Collection<?> c) {
|
||||||
|
return list.removeAll(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean retainAll(Collection<?> c) {
|
||||||
|
return list.retainAll(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clear() {
|
||||||
|
list.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public E get(int index) {
|
||||||
|
return list.get(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public E set(int index, E element) {
|
||||||
|
return list.set(index, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void add(int index, E element) {
|
||||||
|
list.add(index, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public E remove(int index) {
|
||||||
|
return list.remove(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int indexOf(Object o) {
|
||||||
|
return list.indexOf(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int lastIndexOf(Object o) {
|
||||||
|
return list.lastIndexOf(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListIterator<E> listIterator() {
|
||||||
|
return list.listIterator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListIterator<E> listIterator(int index) {
|
||||||
|
return list.listIterator(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<E> subList(int fromIndex, int toIndex) {
|
||||||
|
return list.subList(fromIndex, toIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.common.enumconst;
|
package net.lab1024.smartadmin.service.common.enumeration;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONAware;
|
import com.alibaba.fastjson.JSONAware;
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.common.enumconst;
|
package net.lab1024.smartadmin.service.common.enumeration;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.common.enumconst;
|
package net.lab1024.smartadmin.service.common.enumeration;
|
||||||
|
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
@ -8,28 +8,28 @@ import net.lab1024.smartadmin.service.common.code.ErrorCode;
|
|||||||
* @author 罗伊
|
* @author 罗伊
|
||||||
* @date 2020/8/25 11:57
|
* @date 2020/8/25 11:57
|
||||||
*/
|
*/
|
||||||
public class SmartBusinessException extends RuntimeException {
|
public class BusinessException extends RuntimeException {
|
||||||
|
|
||||||
public SmartBusinessException() {
|
public BusinessException() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public SmartBusinessException(ErrorCode errorCode) {
|
public BusinessException(ErrorCode errorCode) {
|
||||||
super(errorCode.getMsg());
|
super(errorCode.getMsg());
|
||||||
}
|
}
|
||||||
|
|
||||||
public SmartBusinessException(String message) {
|
public BusinessException(String message) {
|
||||||
super(message);
|
super(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SmartBusinessException(String message, Throwable cause) {
|
public BusinessException(String message, Throwable cause) {
|
||||||
super(message, cause);
|
super(message, cause);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SmartBusinessException(Throwable cause) {
|
public BusinessException(Throwable cause) {
|
||||||
super(cause);
|
super(cause);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SmartBusinessException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
public BusinessException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||||
super(message, cause, enableSuppression, writableStackTrace);
|
super(message, cause, enableSuppression, writableStackTrace);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -18,7 +18,7 @@ import java.io.IOException;
|
|||||||
* @author
|
* @author
|
||||||
* @date
|
* @date
|
||||||
*/
|
*/
|
||||||
public class SmartSecurityAuthenticationFailHandler implements AuthenticationEntryPoint {
|
public class SecurityAuthenticationFailHandler implements AuthenticationEntryPoint {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) throws IOException {
|
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) throws IOException {
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.smartadmin.service.common.security;
|
package net.lab1024.smartadmin.service.common.security;
|
||||||
|
|
||||||
import net.lab1024.smartadmin.service.common.anno.NoValidPrivilege;
|
import net.lab1024.smartadmin.service.common.annoation.NoValidPrivilege;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.security.access.ConfigAttribute;
|
import org.springframework.security.access.ConfigAttribute;
|
||||||
import org.springframework.security.access.prepost.*;
|
import org.springframework.security.access.prepost.*;
|
||||||
@ -22,7 +22,7 @@ import java.util.*;
|
|||||||
* @author 罗伊
|
* @author 罗伊
|
||||||
* @date 2021-08-30 23:08
|
* @date 2021-08-30 23:08
|
||||||
*/
|
*/
|
||||||
public class SmartSecurityMetadataSource extends PrePostAnnotationSecurityMetadataSource {
|
public class SecurityMetadataSource extends PrePostAnnotationSecurityMetadataSource {
|
||||||
|
|
||||||
public static final String PRIVILEGE_CHECK_NAME = "privilegeCheck";
|
public static final String PRIVILEGE_CHECK_NAME = "privilegeCheck";
|
||||||
|
|
||||||
@ -30,12 +30,12 @@ public class SmartSecurityMetadataSource extends PrePostAnnotationSecurityMetada
|
|||||||
|
|
||||||
private final PrePostInvocationAttributeFactory attributeFactory;
|
private final PrePostInvocationAttributeFactory attributeFactory;
|
||||||
|
|
||||||
private SmartSecurityUrlMatchers smartSecurityUrlMatchers;
|
private SecurityUrlMatchers securityUrlMatchers;
|
||||||
|
|
||||||
public SmartSecurityMetadataSource(PrePostInvocationAttributeFactory attributeFactory, SmartSecurityUrlMatchers smartSecurityUrlMatchers) {
|
public SecurityMetadataSource(PrePostInvocationAttributeFactory attributeFactory, SecurityUrlMatchers securityUrlMatchers) {
|
||||||
super(attributeFactory);
|
super(attributeFactory);
|
||||||
this.attributeFactory = attributeFactory;
|
this.attributeFactory = attributeFactory;
|
||||||
this.smartSecurityUrlMatchers = smartSecurityUrlMatchers;
|
this.securityUrlMatchers = securityUrlMatchers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ public class SmartSecurityMetadataSource extends PrePostAnnotationSecurityMetada
|
|||||||
public Collection<ConfigAttribute> getAttributes(Method method, Class<?> targetClass) {
|
public Collection<ConfigAttribute> getAttributes(Method method, Class<?> targetClass) {
|
||||||
|
|
||||||
//只对固定的包的所有接口进行控制
|
//只对固定的包的所有接口进行控制
|
||||||
if (!targetClass.getName().startsWith(smartSecurityUrlMatchers.getValidPackage())) {
|
if (!targetClass.getName().startsWith(securityUrlMatchers.getValidPackage())) {
|
||||||
return super.getAttributes(method, targetClass);
|
return super.getAttributes(method, targetClass);
|
||||||
}
|
}
|
||||||
//自己的控制
|
//自己的控制
|
||||||
@ -77,9 +77,9 @@ public class SmartSecurityMetadataSource extends PrePostAnnotationSecurityMetada
|
|||||||
antPathMatcher.setCaseSensitive(false);
|
antPathMatcher.setCaseSensitive(false);
|
||||||
antPathMatcher.setTrimTokens(true);
|
antPathMatcher.setTrimTokens(true);
|
||||||
//无需验证的URL集合
|
//无需验证的URL集合
|
||||||
List<String> noValidUrlList = smartSecurityUrlMatchers.getNoValidUrl();
|
List<String> noValidUrlList = securityUrlMatchers.getNoValidUrl();
|
||||||
//获取方法的请求路径
|
//获取方法的请求路径
|
||||||
Set<String> methodUrl = smartSecurityUrlMatchers.getMethodUrl(method);
|
Set<String> methodUrl = securityUrlMatchers.getMethodUrl(method);
|
||||||
if (this.contain(antPathMatcher, noValidUrlList, methodUrl)) {
|
if (this.contain(antPathMatcher, noValidUrlList, methodUrl)) {
|
||||||
return super.getAttributes(method, targetClass);
|
return super.getAttributes(method, targetClass);
|
||||||
}
|
}
|
@ -2,9 +2,7 @@ package net.lab1024.smartadmin.service.common.security;
|
|||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.lab1024.smartadmin.service.common.anno.NoNeedLogin;
|
import net.lab1024.smartadmin.service.common.annoation.NoNeedLogin;
|
||||||
import net.lab1024.smartadmin.service.common.constant.ApiUrlPrefixConst;
|
|
||||||
import net.lab1024.smartadmin.service.common.constant.CommonConst;
|
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.collections4.MapUtils;
|
import org.apache.commons.collections4.MapUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -30,7 +28,7 @@ import java.util.Set;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class SmartSecurityUrlMatchers {
|
public class SecurityUrlMatchers {
|
||||||
|
|
||||||
@Value("${project.module}")
|
@Value("${project.module}")
|
||||||
private String scanPackage;
|
private String scanPackage;
|
||||||
@ -70,7 +68,6 @@ public class SmartSecurityUrlMatchers {
|
|||||||
ignoreUrl.add("/swagger-resources/**");
|
ignoreUrl.add("/swagger-resources/**");
|
||||||
ignoreUrl.add("/webjars/**");
|
ignoreUrl.add("/webjars/**");
|
||||||
ignoreUrl.add("/*/api-docs");
|
ignoreUrl.add("/*/api-docs");
|
||||||
ignoreUrl.add(ApiUrlPrefixConst.API_PREFIX_SUPPORT + "/**");
|
|
||||||
log.info("忽略URL:{}", ignoreUrl);
|
log.info("忽略URL:{}", ignoreUrl);
|
||||||
return ignoreUrl;
|
return ignoreUrl;
|
||||||
}
|
}
|
@ -19,7 +19,7 @@ import java.util.List;
|
|||||||
* @author 罗伊
|
* @author 罗伊
|
||||||
* @date 2020/8/15 15:06
|
* @date 2020/8/15 15:06
|
||||||
*/
|
*/
|
||||||
public class FileKeyVoSerializer extends JsonSerializer<String> {
|
public class FileKeyVOSerializer extends JsonSerializer<String> {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private FileService fileService;
|
private FileService fileService;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.smartadmin.service.common.swagger;
|
package net.lab1024.smartadmin.service.common.swagger;
|
||||||
|
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.BaseEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
import java.lang.annotation.ElementType;
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
|
@ -2,7 +2,7 @@ package net.lab1024.smartadmin.service.common.swagger;
|
|||||||
|
|
||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
import com.google.common.base.Optional;
|
import com.google.common.base.Optional;
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.BaseEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.core.annotation.AnnotationUtils;
|
import org.springframework.core.annotation.AnnotationUtils;
|
||||||
import org.springframework.core.annotation.Order;
|
import org.springframework.core.annotation.Order;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util;
|
||||||
|
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.BaseEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util;
|
||||||
|
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util;
|
||||||
|
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util;
|
||||||
|
|
||||||
import org.apache.commons.codec.digest.DigestUtils;
|
import org.apache.commons.codec.digest.DigestUtils;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util;
|
||||||
|
|
||||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||||
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.lab1024.smartadmin.service.module.system.login.domain.EmployeeLoginInfoDTO;
|
import net.lab1024.smartadmin.service.module.system.login.domain.EmployeeLoginInfoDTO;
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util;
|
||||||
|
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
@ -1,8 +1,8 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.OrderItem;
|
import com.baomidou.mybatisplus.core.metadata.OrderItem;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageBaseDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageParamDTO;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
|
||||||
@ -23,10 +23,10 @@ public class SmartPageUtil {
|
|||||||
* @param baseDTO
|
* @param baseDTO
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static Page<?> convert2PageQuery(PageBaseDTO baseDTO) {
|
public static Page<?> convert2PageQuery(PageParamDTO baseDTO) {
|
||||||
Page<?> page = new Page<>(baseDTO.getPageNum(), baseDTO.getPageSize());
|
Page<?> page = new Page<>(baseDTO.getPageNum(), baseDTO.getPageSize());
|
||||||
// 设置排序字段
|
// 设置排序字段
|
||||||
List<PageBaseDTO.SortItemDTO> sortItemList = baseDTO.getSortItemList();
|
List<PageParamDTO.SortItemDTO> sortItemList = baseDTO.getSortItemList();
|
||||||
if (CollectionUtils.isNotEmpty(sortItemList)) {
|
if (CollectionUtils.isNotEmpty(sortItemList)) {
|
||||||
List<OrderItem> orderItemList = sortItemList.stream().map(e -> new OrderItem(e.getColumn(), e.getIsAsc())).collect(Collectors.toList());
|
List<OrderItem> orderItemList = sortItemList.stream().map(e -> new OrderItem(e.getColumn(), e.getIsAsc())).collect(Collectors.toList());
|
||||||
page.setOrders(orderItemList);
|
page.setOrders(orderItemList);
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util;
|
||||||
|
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.commons.lang3.RandomUtils;
|
import org.apache.commons.lang3.RandomUtils;
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util;
|
||||||
|
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util.date;
|
package net.lab1024.smartadmin.service.common.util.date;
|
||||||
|
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util;
|
package net.lab1024.smartadmin.service.common.util.date;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.commons.lang3.time.DateUtils;
|
import org.apache.commons.lang3.time.DateUtils;
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util.date;
|
package net.lab1024.smartadmin.service.common.util.date;
|
||||||
|
|
||||||
import java.time.*;
|
import java.time.*;
|
||||||
import java.time.format.TextStyle;
|
import java.time.format.TextStyle;
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util.excel;
|
package net.lab1024.smartadmin.service.common.util.excel;
|
||||||
|
|
||||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util.excel;
|
package net.lab1024.smartadmin.service.common.util.excel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author 卓大
|
* @author 卓大
|
@ -1,11 +1,11 @@
|
|||||||
package net.lab1024.smartadmin.service.util.excel;
|
package net.lab1024.smartadmin.service.common.util.excel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author 卓大
|
* @author 卓大
|
||||||
* @Date 2020/8/10
|
* @Date 2020/8/10
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import net.lab1024.smartadmin.service.util.SmartFileUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartFileUtil;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.util.excel;
|
package net.lab1024.smartadmin.service.common.util.excel;
|
||||||
|
|
||||||
|
|
||||||
import org.apache.poi.ss.usermodel.Cell;
|
import org.apache.poi.ss.usermodel.Cell;
|
@ -1,7 +1,7 @@
|
|||||||
package net.lab1024.smartadmin.service.common.validator.en;
|
package net.lab1024.smartadmin.service.common.validator.enumeration;
|
||||||
|
|
||||||
|
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.BaseEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
import javax.validation.Constraint;
|
import javax.validation.Constraint;
|
||||||
import javax.validation.Payload;
|
import javax.validation.Payload;
|
@ -1,7 +1,7 @@
|
|||||||
package net.lab1024.smartadmin.service.common.validator.en;
|
package net.lab1024.smartadmin.service.common.validator.enumeration;
|
||||||
|
|
||||||
|
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.BaseEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
import javax.validation.ConstraintValidator;
|
import javax.validation.ConstraintValidator;
|
||||||
import javax.validation.ConstraintValidatorContext;
|
import javax.validation.ConstraintValidatorContext;
|
@ -4,8 +4,8 @@ import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
|
|||||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
||||||
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
|
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
|
||||||
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
|
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
|
||||||
import net.lab1024.smartadmin.service.util.date.SmartDateFormatterEnum;
|
import net.lab1024.smartadmin.service.common.util.date.SmartDateFormatterEnum;
|
||||||
import net.lab1024.smartadmin.service.util.date.SmartLocalDateUtil;
|
import net.lab1024.smartadmin.service.common.util.date.SmartLocalDateUtil;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
|
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package net.lab1024.smartadmin.service.config;
|
package net.lab1024.smartadmin.service.config;
|
||||||
|
|
||||||
import net.lab1024.smartadmin.service.common.security.SmartSecurityUrlMatchers;
|
import net.lab1024.smartadmin.service.common.security.SecurityUrlMatchers;
|
||||||
import net.lab1024.smartadmin.service.filter.SmartSecurityTokenFilter;
|
import net.lab1024.smartadmin.service.filter.SecurityTokenFilter;
|
||||||
import net.lab1024.smartadmin.service.common.security.SmartSecurityAuthenticationFailHandler;
|
import net.lab1024.smartadmin.service.common.security.SecurityAuthenticationFailHandler;
|
||||||
import net.lab1024.smartadmin.service.module.system.login.EmployeeLoginTokenService;
|
import net.lab1024.smartadmin.service.module.system.login.EmployeeLoginTokenService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
@ -35,7 +35,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
|||||||
* url
|
* url
|
||||||
*/
|
*/
|
||||||
@Autowired
|
@Autowired
|
||||||
private SmartSecurityUrlMatchers smartSecurityUrlMatchers;
|
private SecurityUrlMatchers securityUrlMatchers;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取TOKEN 解析类
|
* 获取TOKEN 解析类
|
||||||
@ -70,27 +70,27 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
|||||||
// CSRF禁用,因为不使用session
|
// CSRF禁用,因为不使用session
|
||||||
.csrf().disable()
|
.csrf().disable()
|
||||||
// 认证失败处理类
|
// 认证失败处理类
|
||||||
.exceptionHandling().authenticationEntryPoint(new SmartSecurityAuthenticationFailHandler()).and()
|
.exceptionHandling().authenticationEntryPoint(new SecurityAuthenticationFailHandler()).and()
|
||||||
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
|
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
|
||||||
// 过滤请求
|
// 过滤请求
|
||||||
.authorizeRequests();
|
.authorizeRequests();
|
||||||
//可以匿名登录的URL
|
//可以匿名登录的URL
|
||||||
String [] anonymousUrlArray = smartSecurityUrlMatchers.getAnonymousUrlArray();
|
String [] anonymousUrlArray = securityUrlMatchers.getAnonymousUrlArray();
|
||||||
interceptUrlRegistry.antMatchers(anonymousUrlArray).permitAll();
|
interceptUrlRegistry.antMatchers(anonymousUrlArray).permitAll();
|
||||||
|
|
||||||
//登录的URL
|
//登录的URL
|
||||||
String [] authenticatedUrlArray = smartSecurityUrlMatchers.getAuthenticatedUrlArray();
|
String [] authenticatedUrlArray = securityUrlMatchers.getAuthenticatedUrlArray();
|
||||||
interceptUrlRegistry.antMatchers(authenticatedUrlArray).authenticated();
|
interceptUrlRegistry.antMatchers(authenticatedUrlArray).authenticated();
|
||||||
|
|
||||||
httpSecurity.addFilterBefore(new SmartSecurityTokenFilter(loginTokenService), UsernamePasswordAuthenticationFilter.class);
|
httpSecurity.addFilterBefore(new SecurityTokenFilter(loginTokenService), UsernamePasswordAuthenticationFilter.class);
|
||||||
httpSecurity.addFilterBefore(corsFilter(), SmartSecurityTokenFilter.class);
|
httpSecurity.addFilterBefore(corsFilter(), SecurityTokenFilter.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configure(WebSecurity web) {
|
public void configure(WebSecurity web) {
|
||||||
// 忽略url
|
// 忽略url
|
||||||
WebSecurity.IgnoredRequestConfigurer ignoring = web.ignoring();
|
WebSecurity.IgnoredRequestConfigurer ignoring = web.ignoring();
|
||||||
List<String> ignoreUrlListList = smartSecurityUrlMatchers.getIgnoreUrl();
|
List<String> ignoreUrlListList = securityUrlMatchers.getIgnoreUrl();
|
||||||
for (String url : ignoreUrlListList) {
|
for (String url : ignoreUrlListList) {
|
||||||
ignoring.antMatchers(url);
|
ignoring.antMatchers(url);
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
package net.lab1024.smartadmin.service.config;
|
package net.lab1024.smartadmin.service.config;
|
||||||
|
|
||||||
import net.lab1024.smartadmin.service.common.security.SmartSecurityMetadataSource;
|
import net.lab1024.smartadmin.service.common.security.SecurityMetadataSource;
|
||||||
import net.lab1024.smartadmin.service.common.security.SmartSecurityUrlMatchers;
|
import net.lab1024.smartadmin.service.common.security.SecurityUrlMatchers;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.core.annotation.Order;
|
|
||||||
import org.springframework.security.access.expression.method.ExpressionBasedAnnotationAttributeFactory;
|
import org.springframework.security.access.expression.method.ExpressionBasedAnnotationAttributeFactory;
|
||||||
import org.springframework.security.access.method.MethodSecurityMetadataSource;
|
import org.springframework.security.access.method.MethodSecurityMetadataSource;
|
||||||
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
|
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
|
||||||
@ -20,11 +18,11 @@ import org.springframework.security.config.annotation.method.configuration.Globa
|
|||||||
public class SecurityMethodConfig extends GlobalMethodSecurityConfiguration {
|
public class SecurityMethodConfig extends GlobalMethodSecurityConfiguration {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SmartSecurityUrlMatchers smartSecurityUrlMatchers;
|
private SecurityUrlMatchers securityUrlMatchers;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MethodSecurityMetadataSource customMethodSecurityMetadataSource(){
|
public MethodSecurityMetadataSource customMethodSecurityMetadataSource(){
|
||||||
ExpressionBasedAnnotationAttributeFactory attributeFactory = new ExpressionBasedAnnotationAttributeFactory(this.getExpressionHandler());
|
ExpressionBasedAnnotationAttributeFactory attributeFactory = new ExpressionBasedAnnotationAttributeFactory(this.getExpressionHandler());
|
||||||
return new SmartSecurityMetadataSource(attributeFactory, smartSecurityUrlMatchers);
|
return new SecurityMetadataSource(attributeFactory, securityUrlMatchers);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ import io.swagger.annotations.Api;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.lab1024.smartadmin.service.common.constant.RequestHeaderConst;
|
import net.lab1024.smartadmin.service.common.constant.RequestHeaderConst;
|
||||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.SystemEnvironmentEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.SystemEnvironmentEnum;
|
||||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerApiModelPropertyEnumPlugin;
|
import net.lab1024.smartadmin.service.common.swagger.SwaggerApiModelPropertyEnumPlugin;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.BeansException;
|
import org.springframework.beans.BeansException;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package net.lab1024.smartadmin.service.config;
|
package net.lab1024.smartadmin.service.config;
|
||||||
|
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.SystemEnvironmentEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.SystemEnvironmentEnum;
|
||||||
import net.lab1024.smartadmin.service.common.domain.SystemEnvironmentBO;
|
import net.lab1024.smartadmin.service.common.domain.SystemEnvironment;
|
||||||
import net.lab1024.smartadmin.service.util.SmartBaseEnumUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartBaseEnumUtil;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
@ -30,12 +30,12 @@ public class SystemEnvironmentConfig implements Condition {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public SystemEnvironmentBO initEnvironment() {
|
public SystemEnvironment initEnvironment() {
|
||||||
SystemEnvironmentEnum currentEnvironment = SmartBaseEnumUtil.getEnumByValue(systemEnvironment, SystemEnvironmentEnum.class);
|
SystemEnvironmentEnum currentEnvironment = SmartBaseEnumUtil.getEnumByValue(systemEnvironment, SystemEnvironmentEnum.class);
|
||||||
if (currentEnvironment == null) {
|
if (currentEnvironment == null) {
|
||||||
throw new ExceptionInInitializerError("无法获取当前环境!请在 application.properties 或者 application.yaml 配置好参数:spring.profiles.active");
|
throw new ExceptionInInitializerError("无法获取当前环境!请在 application.properties 或者 application.yaml 配置好参数:spring.profiles.active");
|
||||||
}
|
}
|
||||||
return new SystemEnvironmentBO(currentEnvironment == SystemEnvironmentEnum.PROD, currentEnvironment);
|
return new SystemEnvironment(currentEnvironment == SystemEnvironmentEnum.PROD, currentEnvironment);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.smartadmin.service.filter;
|
package net.lab1024.smartadmin.service.filter;
|
||||||
|
|
||||||
import net.lab1024.smartadmin.service.common.constant.CommonConst;
|
import net.lab1024.smartadmin.service.common.constant.RequestHeaderConst;
|
||||||
import net.lab1024.smartadmin.service.module.system.login.EmployeeLoginTokenService;
|
import net.lab1024.smartadmin.service.module.system.login.EmployeeLoginTokenService;
|
||||||
import net.lab1024.smartadmin.service.module.system.login.domain.EmployeeLoginBO;
|
import net.lab1024.smartadmin.service.module.system.login.domain.EmployeeLoginBO;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@ -24,13 +24,11 @@ import java.io.IOException;
|
|||||||
* @date
|
* @date
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class SmartSecurityTokenFilter extends OncePerRequestFilter {
|
public class SecurityTokenFilter extends OncePerRequestFilter {
|
||||||
|
|
||||||
private static final String TOKEN_NAME = "x-access-token";
|
|
||||||
|
|
||||||
private EmployeeLoginTokenService loginTokenService;
|
private EmployeeLoginTokenService loginTokenService;
|
||||||
|
|
||||||
public SmartSecurityTokenFilter(EmployeeLoginTokenService loginTokenService) {
|
public SecurityTokenFilter(EmployeeLoginTokenService loginTokenService) {
|
||||||
this.loginTokenService = loginTokenService;
|
this.loginTokenService = loginTokenService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,8 +36,8 @@ public class SmartSecurityTokenFilter extends OncePerRequestFilter {
|
|||||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
|
||||||
throws ServletException, IOException {
|
throws ServletException, IOException {
|
||||||
//需要做token校验, 消息头的token优先于请求query参数的token
|
//需要做token校验, 消息头的token优先于请求query参数的token
|
||||||
String xHeaderToken = request.getHeader(TOKEN_NAME);
|
String xHeaderToken = request.getHeader(RequestHeaderConst.TOKEN);
|
||||||
String xRequestToken = request.getParameter(TOKEN_NAME);
|
String xRequestToken = request.getParameter(RequestHeaderConst.TOKEN);
|
||||||
String xAccessToken = null != xHeaderToken ? xHeaderToken : xRequestToken;
|
String xAccessToken = null != xHeaderToken ? xHeaderToken : xRequestToken;
|
||||||
if (StringUtils.isBlank(xAccessToken)) {
|
if (StringUtils.isBlank(xAccessToken)) {
|
||||||
chain.doFilter(request, response);
|
chain.doFilter(request, response);
|
@ -0,0 +1,129 @@
|
|||||||
|
package net.lab1024.smartadmin.service.handler;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import net.lab1024.smartadmin.service.common.code.SystemErrorCode;
|
||||||
|
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
||||||
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
|
import net.lab1024.smartadmin.service.common.domain.SystemEnvironment;
|
||||||
|
import net.lab1024.smartadmin.service.common.enumeration.SystemEnvironmentEnum;
|
||||||
|
import net.lab1024.smartadmin.service.common.exception.BusinessException;
|
||||||
|
import org.springframework.beans.TypeMismatchException;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.converter.HttpMessageNotReadableException;
|
||||||
|
import org.springframework.security.access.AccessDeniedException;
|
||||||
|
import org.springframework.validation.BindException;
|
||||||
|
import org.springframework.validation.FieldError;
|
||||||
|
import org.springframework.web.HttpRequestMethodNotSupportedException;
|
||||||
|
import org.springframework.web.bind.MethodArgumentNotValidException;
|
||||||
|
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||||
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
import org.springframework.web.context.request.RequestAttributes;
|
||||||
|
import org.springframework.web.context.request.RequestContextHolder;
|
||||||
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [ 全局异常拦截 ]
|
||||||
|
*
|
||||||
|
* @author 罗伊
|
||||||
|
* @date 2020/8/25 11:57
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@ControllerAdvice
|
||||||
|
public class GlobalExceptionHandler {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SystemEnvironment systemEnvironment;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* json 格式错误 缺少请求体
|
||||||
|
*/
|
||||||
|
@ResponseBody
|
||||||
|
@ExceptionHandler({HttpMessageNotReadableException.class})
|
||||||
|
public ResponseDTO<?> jsonFormatExceptionHandler(Exception e) {
|
||||||
|
if (!systemEnvironment.isProd()) {
|
||||||
|
log.error("全局JSON格式错误异常,URL:{}", getCurrentRequestUrl(), e);
|
||||||
|
}
|
||||||
|
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "参数JSON格式错误");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* json 格式错误 缺少请求体
|
||||||
|
*/
|
||||||
|
@ResponseBody
|
||||||
|
@ExceptionHandler({TypeMismatchException.class, BindException.class})
|
||||||
|
public ResponseDTO<?> paramExceptionHandler(Exception e) {
|
||||||
|
if (!systemEnvironment.isProd()) {
|
||||||
|
log.error("全局参数异常,URL:{}", getCurrentRequestUrl(), e);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e instanceof BindException) {
|
||||||
|
if (e instanceof MethodArgumentNotValidException) {
|
||||||
|
List<FieldError> fieldErrors = ((MethodArgumentNotValidException) e).getBindingResult().getFieldErrors();
|
||||||
|
List<String> msgList = fieldErrors.stream().map(FieldError::getDefaultMessage).collect(Collectors.toList());
|
||||||
|
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, String.join(",", msgList));
|
||||||
|
}
|
||||||
|
|
||||||
|
List<FieldError> fieldErrors = ((BindException) e).getFieldErrors();
|
||||||
|
List<String> error = fieldErrors.stream().map(field -> field.getField() + ":" + field.getRejectedValue()).collect(Collectors.toList());
|
||||||
|
String errorMsg = UserErrorCode.PARAM_ERROR.getMsg() + ":" + error.toString();
|
||||||
|
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, errorMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ResponseDTO.error(UserErrorCode.PARAM_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 权限异常
|
||||||
|
*/
|
||||||
|
@ResponseBody
|
||||||
|
@ExceptionHandler({AccessDeniedException.class})
|
||||||
|
public ResponseDTO<?> permissionExceptionHandler(AccessDeniedException e) {
|
||||||
|
if (!systemEnvironment.isProd()) {
|
||||||
|
log.error("全局参数异常,URL:{}", getCurrentRequestUrl(), e);
|
||||||
|
}
|
||||||
|
return ResponseDTO.error(UserErrorCode.NO_PERMISSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务异常
|
||||||
|
*/
|
||||||
|
@ResponseBody
|
||||||
|
@ExceptionHandler(BusinessException.class)
|
||||||
|
public ResponseDTO<?> businessExceptionHandler(BusinessException e) {
|
||||||
|
if (!systemEnvironment.isProd()) {
|
||||||
|
log.error("全局业务异常,URL:{}", getCurrentRequestUrl(), e);
|
||||||
|
}
|
||||||
|
return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR, e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 其他全部异常
|
||||||
|
*
|
||||||
|
* @param e
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@ResponseBody
|
||||||
|
@ExceptionHandler(Throwable.class)
|
||||||
|
public ResponseDTO<?> errorHandler(Throwable e) {
|
||||||
|
log.error("捕获全局异常,URL:{}", getCurrentRequestUrl(), e);
|
||||||
|
return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR, systemEnvironment.isProd() ? null : e.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前请求url
|
||||||
|
*/
|
||||||
|
private String getCurrentRequestUrl() {
|
||||||
|
RequestAttributes request = RequestContextHolder.getRequestAttributes();
|
||||||
|
if (null == request) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
ServletRequestAttributes servletRequest = (ServletRequestAttributes) request;
|
||||||
|
return servletRequest.getRequest().getRequestURI();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,106 +0,0 @@
|
|||||||
package net.lab1024.smartadmin.service.handler;
|
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import net.lab1024.smartadmin.service.common.code.SystemErrorCode;
|
|
||||||
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
|
||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
|
||||||
import net.lab1024.smartadmin.service.common.domain.SystemEnvironmentBO;
|
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.SystemEnvironmentEnum;
|
|
||||||
import net.lab1024.smartadmin.service.common.exception.SmartBusinessException;
|
|
||||||
import org.springframework.beans.TypeMismatchException;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.http.converter.HttpMessageNotReadableException;
|
|
||||||
import org.springframework.security.access.AccessDeniedException;
|
|
||||||
import org.springframework.validation.BindException;
|
|
||||||
import org.springframework.validation.FieldError;
|
|
||||||
import org.springframework.web.HttpRequestMethodNotSupportedException;
|
|
||||||
import org.springframework.web.bind.MethodArgumentNotValidException;
|
|
||||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
|
||||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
|
||||||
import org.springframework.web.context.request.RequestAttributes;
|
|
||||||
import org.springframework.web.context.request.RequestContextHolder;
|
|
||||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [ 全局异常拦截 ]
|
|
||||||
*
|
|
||||||
* @author 罗伊
|
|
||||||
* @date 2020/8/25 11:57
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
@ControllerAdvice
|
|
||||||
public class SmartGlobalExceptionHandler {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private SystemEnvironmentBO systemEnvironmentBO;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 添加全局异常处理流程
|
|
||||||
*
|
|
||||||
* @param e
|
|
||||||
* @return
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
@ResponseBody
|
|
||||||
@ExceptionHandler(Exception.class)
|
|
||||||
public ResponseDTO exceptionHandler(Exception e) {
|
|
||||||
|
|
||||||
// json 格式错误
|
|
||||||
if (e instanceof HttpMessageNotReadableException) {
|
|
||||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "请求参数JSON格式错误");
|
|
||||||
}
|
|
||||||
|
|
||||||
String uri = null;
|
|
||||||
RequestAttributes request = RequestContextHolder.getRequestAttributes();
|
|
||||||
if (null != request) {
|
|
||||||
ServletRequestAttributes servletRequest = (ServletRequestAttributes) request;
|
|
||||||
uri = servletRequest.getRequest().getRequestURI();
|
|
||||||
}
|
|
||||||
|
|
||||||
// http 请求方式错误
|
|
||||||
if (e instanceof HttpRequestMethodNotSupportedException) {
|
|
||||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "请求方式错误");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 参数类型错误
|
|
||||||
if (e instanceof TypeMismatchException) {
|
|
||||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 参数校验未通过
|
|
||||||
if (e instanceof MethodArgumentNotValidException) {
|
|
||||||
List<FieldError> fieldErrors = ((MethodArgumentNotValidException) e).getBindingResult().getFieldErrors();
|
|
||||||
List<String> msgList = fieldErrors.stream().map(FieldError::getDefaultMessage).collect(Collectors.toList());
|
|
||||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, String.join(",", msgList));
|
|
||||||
}
|
|
||||||
|
|
||||||
// 参数绑定错误
|
|
||||||
if (e instanceof BindException) {
|
|
||||||
List<FieldError> fieldErrors = ((BindException) e).getFieldErrors();
|
|
||||||
List<String> error = fieldErrors.stream().map(field -> field.getField() + ":" + field.getRejectedValue()).collect(Collectors.toList());
|
|
||||||
String errorMsg = UserErrorCode.PARAM_ERROR.getMsg() + ":" + error.toString();
|
|
||||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, errorMsg);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e instanceof SmartBusinessException) {
|
|
||||||
return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR, e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e instanceof AccessDeniedException) {
|
|
||||||
return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR, "您暂无权限");
|
|
||||||
}
|
|
||||||
|
|
||||||
log.error("捕获全局异常,URL:{}", uri, e);
|
|
||||||
|
|
||||||
// 正式环境 不返回错误信息
|
|
||||||
if (SystemEnvironmentEnum.PROD == systemEnvironmentBO.getCurrentEnvironment()) {
|
|
||||||
return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR, e.toString());
|
|
||||||
}
|
|
||||||
}
|
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.business.category;
|
|||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||||
import net.lab1024.smartadmin.service.common.controller.AdminBaseController;
|
import net.lab1024.smartadmin.service.common.controller.SystemBaseController;
|
||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
import net.lab1024.smartadmin.service.module.business.category.domain.*;
|
import net.lab1024.smartadmin.service.module.business.category.domain.*;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -20,7 +20,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
@Api(tags = SwaggerTagConst.Admin.MANAGER_CATEGORY)
|
@Api(tags = SwaggerTagConst.Admin.MANAGER_CATEGORY)
|
||||||
@RestController
|
@RestController
|
||||||
public class CategoryController extends AdminBaseController {
|
public class CategoryController extends SystemBaseController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private CategoryService categoryService;
|
private CategoryService categoryService;
|
||||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.business.category;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.lab1024.smartadmin.service.common.constant.CacheModuleConst;
|
import net.lab1024.smartadmin.service.common.constant.CacheModuleConst;
|
||||||
import net.lab1024.smartadmin.service.common.constant.CommonConst;
|
import net.lab1024.smartadmin.service.common.constant.StringConst;
|
||||||
import net.lab1024.smartadmin.service.module.business.category.domain.CategoryEntity;
|
import net.lab1024.smartadmin.service.module.business.category.domain.CategoryEntity;
|
||||||
import net.lab1024.smartadmin.service.module.business.category.domain.CategorySimpleDTO;
|
import net.lab1024.smartadmin.service.module.business.category.domain.CategorySimpleDTO;
|
||||||
import net.lab1024.smartadmin.service.module.business.category.domain.CategoryTreeQueryDTO;
|
import net.lab1024.smartadmin.service.module.business.category.domain.CategoryTreeQueryDTO;
|
||||||
@ -11,8 +11,8 @@ import net.lab1024.smartadmin.service.module.business.category.domain.CategoryTr
|
|||||||
import net.lab1024.smartadmin.service.module.support.beancache.cache.IBeanCache;
|
import net.lab1024.smartadmin.service.module.support.beancache.cache.IBeanCache;
|
||||||
import net.lab1024.smartadmin.service.module.support.beancache.key.CacheKey;
|
import net.lab1024.smartadmin.service.module.support.beancache.key.CacheKey;
|
||||||
import net.lab1024.smartadmin.service.module.support.beancache.anno.CacheLoad;
|
import net.lab1024.smartadmin.service.module.support.beancache.anno.CacheLoad;
|
||||||
import net.lab1024.smartadmin.service.util.SmartBeanUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||||
import net.lab1024.smartadmin.service.util.SmartStringUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartStringUtil;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.collections4.MapUtils;
|
import org.apache.commons.collections4.MapUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -63,7 +63,7 @@ public class CategoryQueryService {
|
|||||||
* 左边 categoryId 右边 type
|
* 左边 categoryId 右边 type
|
||||||
*/
|
*/
|
||||||
String businessId = CacheKey.getBusinessIdByCacheKey(cacheKey);
|
String businessId = CacheKey.getBusinessIdByCacheKey(cacheKey);
|
||||||
String[] split = businessId.split(CommonConst.UNDERLINE);
|
String[] split = businessId.split(StringConst.UNDERLINE);
|
||||||
Integer categoryType = split.length > 1 ? Integer.valueOf(split[1]) : null;
|
Integer categoryType = split.length > 1 ? Integer.valueOf(split[1]) : null;
|
||||||
return categoryDao.queryByParentId(Lists.newArrayList(Long.valueOf(split[0])), categoryType, false);
|
return categoryDao.queryByParentId(Lists.newArrayList(Long.valueOf(split[0])), categoryType, false);
|
||||||
}
|
}
|
||||||
@ -76,7 +76,7 @@ public class CategoryQueryService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private static String getCacheId(Long categoryId, Integer categoryType) {
|
private static String getCacheId(Long categoryId, Integer categoryType) {
|
||||||
return categoryId + CommonConst.UNDERLINE + categoryType;
|
return categoryId + StringConst.UNDERLINE + categoryType;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -118,7 +118,7 @@ public class CategoryQueryService {
|
|||||||
*/
|
*/
|
||||||
public List<CategoryEntity> queryCategoryByParent(Long categoryId, Integer categoryType) {
|
public List<CategoryEntity> queryCategoryByParent(Long categoryId, Integer categoryType) {
|
||||||
if (null == categoryId) {
|
if (null == categoryId) {
|
||||||
return CommonConst.EMPTY_LIST;
|
return StringConst.EMPTY_LIST;
|
||||||
}
|
}
|
||||||
String cacheKey = CacheKey.cacheKey(CacheModuleConst.Category.CATEGORY_SUB, getCacheId(categoryId, categoryType));
|
String cacheKey = CacheKey.cacheKey(CacheModuleConst.Category.CATEGORY_SUB, getCacheId(categoryId, categoryType));
|
||||||
return cache.get(cacheKey);
|
return cache.get(cacheKey);
|
||||||
@ -132,7 +132,7 @@ public class CategoryQueryService {
|
|||||||
*/
|
*/
|
||||||
public Map<Long, CategoryEntity> queryCategoryList(List<Long> categoryIdList) {
|
public Map<Long, CategoryEntity> queryCategoryList(List<Long> categoryIdList) {
|
||||||
if (CollectionUtils.isEmpty(categoryIdList)) {
|
if (CollectionUtils.isEmpty(categoryIdList)) {
|
||||||
return CommonConst.EMPTY_MAP;
|
return StringConst.EMPTY_MAP;
|
||||||
}
|
}
|
||||||
categoryIdList = categoryIdList.stream().distinct().collect(Collectors.toList());
|
categoryIdList = categoryIdList.stream().distinct().collect(Collectors.toList());
|
||||||
|
|
||||||
@ -161,7 +161,7 @@ public class CategoryQueryService {
|
|||||||
*/
|
*/
|
||||||
public List<Long> queryCategorySubId(List<Long> categoryIdList) {
|
public List<Long> queryCategorySubId(List<Long> categoryIdList) {
|
||||||
if (CollectionUtils.isEmpty(categoryIdList)) {
|
if (CollectionUtils.isEmpty(categoryIdList)) {
|
||||||
return CommonConst.EMPTY_LIST;
|
return StringConst.EMPTY_LIST;
|
||||||
}
|
}
|
||||||
// 查询所有子类
|
// 查询所有子类
|
||||||
Map<Long, List<CategoryEntity>> subTypeMap = this.querySubCategoryFromCache(categoryIdList);
|
Map<Long, List<CategoryEntity>> subTypeMap = this.querySubCategoryFromCache(categoryIdList);
|
||||||
@ -236,7 +236,7 @@ public class CategoryQueryService {
|
|||||||
childrenVOList.forEach(item -> {
|
childrenVOList.forEach(item -> {
|
||||||
item.setLabel(item.getCategoryName());
|
item.setLabel(item.getCategoryName());
|
||||||
item.setValue(item.getCategoryId());
|
item.setValue(item.getCategoryId());
|
||||||
item.setCategoryFullName(e.getCategoryFullName() + CommonConst.SEPARATOR_SLASH + item.getCategoryName());
|
item.setCategoryFullName(e.getCategoryFullName() + StringConst.SEPARATOR_SLASH + item.getCategoryName());
|
||||||
});
|
});
|
||||||
// 递归查询
|
// 递归查询
|
||||||
this.queryAndSetSubCategory(childrenVOList);
|
this.queryAndSetSubCategory(childrenVOList);
|
||||||
@ -266,7 +266,7 @@ public class CategoryQueryService {
|
|||||||
CategorySimpleDTO categoryDTO = new CategorySimpleDTO();
|
CategorySimpleDTO categoryDTO = new CategorySimpleDTO();
|
||||||
categoryDTO.setCategoryId(categoryId);
|
categoryDTO.setCategoryId(categoryId);
|
||||||
categoryDTO.setCategoryName(categoryEntity.getCategoryName());
|
categoryDTO.setCategoryName(categoryEntity.getCategoryName());
|
||||||
categoryDTO.setCategoryFullName(SmartStringUtil.join(nameList, CommonConst.SEPARATOR_SLASH));
|
categoryDTO.setCategoryFullName(SmartStringUtil.join(nameList, StringConst.SEPARATOR_SLASH));
|
||||||
categoryDTO.setParentId(categoryEntity.getParentId());
|
categoryDTO.setParentId(categoryEntity.getParentId());
|
||||||
return categoryDTO;
|
return categoryDTO;
|
||||||
}
|
}
|
||||||
@ -288,7 +288,7 @@ public class CategoryQueryService {
|
|||||||
// 父级始终放在第一位
|
// 父级始终放在第一位
|
||||||
parentCategoryList.add(0, categoryEntity);
|
parentCategoryList.add(0, categoryEntity);
|
||||||
Long parentId = categoryEntity.getParentId();
|
Long parentId = categoryEntity.getParentId();
|
||||||
if (Objects.equals(CommonConst.DEFAULT_PARENT_ID, parentId)) {
|
if (Objects.equals(StringConst.DEFAULT_PARENT_ID, parentId)) {
|
||||||
return parentCategoryList;
|
return parentCategoryList;
|
||||||
}
|
}
|
||||||
parentCategoryList.addAll(0, this.queryCategoryAndParent(parentId));
|
parentCategoryList.addAll(0, this.queryCategoryAndParent(parentId));
|
||||||
|
@ -2,10 +2,10 @@ package net.lab1024.smartadmin.service.module.business.category;
|
|||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
||||||
import net.lab1024.smartadmin.service.common.constant.CommonConst;
|
import net.lab1024.smartadmin.service.common.constant.StringConst;
|
||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
import net.lab1024.smartadmin.service.module.business.category.domain.*;
|
import net.lab1024.smartadmin.service.module.business.category.domain.*;
|
||||||
import net.lab1024.smartadmin.service.util.SmartBeanUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -43,9 +43,9 @@ public class CategoryService {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
// 没有父类则使用默认父类
|
// 没有父类则使用默认父类
|
||||||
Long parentId = null == addDTO.getParentId() ? CommonConst.DEFAULT_PARENT_ID : addDTO.getParentId();
|
Long parentId = null == addDTO.getParentId() ? StringConst.DEFAULT_PARENT_ID : addDTO.getParentId();
|
||||||
categoryEntity.setParentId(parentId);
|
categoryEntity.setParentId(parentId);
|
||||||
categoryEntity.setSort(null == addDTO.getSort() ? CommonConst.ZERO : addDTO.getSort());
|
categoryEntity.setSort(null == addDTO.getSort() ? StringConst.ZERO : addDTO.getSort());
|
||||||
categoryEntity.setDeletedFlag(false);
|
categoryEntity.setDeletedFlag(false);
|
||||||
|
|
||||||
// 保存数据
|
// 保存数据
|
||||||
@ -106,7 +106,7 @@ public class CategoryService {
|
|||||||
if (Objects.equals(categoryEntity.getCategoryId(), parentId)) {
|
if (Objects.equals(categoryEntity.getCategoryId(), parentId)) {
|
||||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "父级类目怎么和自己相同了");
|
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "父级类目怎么和自己相同了");
|
||||||
}
|
}
|
||||||
if (!Objects.equals(parentId, CommonConst.DEFAULT_PARENT_ID)) {
|
if (!Objects.equals(parentId, StringConst.DEFAULT_PARENT_ID)) {
|
||||||
Optional<CategoryEntity> optional = categoryQueryService.queryCategory(parentId);
|
Optional<CategoryEntity> optional = categoryQueryService.queryCategory(parentId);
|
||||||
if (!optional.isPresent()) {
|
if (!optional.isPresent()) {
|
||||||
return ResponseDTO.error(UserErrorCode.DATA_NOT_EXIST, "父级类目不存在~");
|
return ResponseDTO.error(UserErrorCode.DATA_NOT_EXIST, "父级类目不存在~");
|
||||||
@ -120,7 +120,7 @@ public class CategoryService {
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
// 如果没有父类 使用默认父类
|
// 如果没有父类 使用默认父类
|
||||||
parentId = CommonConst.DEFAULT_PARENT_ID;
|
parentId = StringConst.DEFAULT_PARENT_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 校验同父类下 名称是否重复
|
// 校验同父类下 名称是否重复
|
||||||
@ -169,7 +169,7 @@ public class CategoryService {
|
|||||||
if (null == queryDTO.getCategoryType()) {
|
if (null == queryDTO.getCategoryType()) {
|
||||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "类目类型不能为空");
|
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "类目类型不能为空");
|
||||||
}
|
}
|
||||||
queryDTO.setParentId(CommonConst.DEFAULT_PARENT_ID);
|
queryDTO.setParentId(StringConst.DEFAULT_PARENT_ID);
|
||||||
}
|
}
|
||||||
List<CategoryTreeVO> treeList = categoryQueryService.queryCategoryTree(queryDTO);
|
List<CategoryTreeVO> treeList = categoryQueryService.queryCategoryTree(queryDTO);
|
||||||
return ResponseDTO.ok(treeList);
|
return ResponseDTO.ok(treeList);
|
||||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.business.category.constant;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.BaseEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分类类型 枚举
|
* 分类类型 枚举
|
||||||
|
@ -2,13 +2,13 @@ package net.lab1024.smartadmin.service.module.business.goods;
|
|||||||
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import net.lab1024.smartadmin.service.common.controller.AdminBaseController;
|
import net.lab1024.smartadmin.service.common.controller.SystemBaseController;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||||
import net.lab1024.smartadmin.service.module.business.goods.domain.*;
|
import net.lab1024.smartadmin.service.module.business.goods.domain.*;
|
||||||
import net.lab1024.smartadmin.service.module.system.login.domain.EmployeeLoginInfoDTO;
|
import net.lab1024.smartadmin.service.module.system.login.domain.EmployeeLoginInfoDTO;
|
||||||
import net.lab1024.smartadmin.service.util.SmartEmployeeTokenUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartEmployeeTokenUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
@ -24,7 +24,7 @@ import javax.validation.Valid;
|
|||||||
*/
|
*/
|
||||||
@Api(tags = SwaggerTagConst.Admin.MANAGER_GOODS)
|
@Api(tags = SwaggerTagConst.Admin.MANAGER_GOODS)
|
||||||
@RestController
|
@RestController
|
||||||
public class GoodsController extends AdminBaseController {
|
public class GoodsController extends SystemBaseController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private GoodsService goodsService;
|
private GoodsService goodsService;
|
||||||
|
@ -8,8 +8,8 @@ import net.lab1024.smartadmin.service.module.business.category.CategoryQueryServ
|
|||||||
import net.lab1024.smartadmin.service.module.business.category.constant.CategoryTypeEnum;
|
import net.lab1024.smartadmin.service.module.business.category.constant.CategoryTypeEnum;
|
||||||
import net.lab1024.smartadmin.service.module.business.category.domain.CategoryEntity;
|
import net.lab1024.smartadmin.service.module.business.category.domain.CategoryEntity;
|
||||||
import net.lab1024.smartadmin.service.module.business.goods.domain.*;
|
import net.lab1024.smartadmin.service.module.business.goods.domain.*;
|
||||||
import net.lab1024.smartadmin.service.util.SmartBeanUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||||
import net.lab1024.smartadmin.service.util.SmartPageUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartPageUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.business.goods.constant;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.BaseEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品类型 枚举
|
* 商品类型 枚举
|
||||||
|
@ -2,7 +2,7 @@ package net.lab1024.smartadmin.service.module.business.goods.domain;
|
|||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageBaseDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageParamDTO;
|
||||||
import net.lab1024.smartadmin.service.common.swagger.ApiModelPropertyEnum;
|
import net.lab1024.smartadmin.service.common.swagger.ApiModelPropertyEnum;
|
||||||
import net.lab1024.smartadmin.service.module.business.goods.constant.GoodsTypeEnum;
|
import net.lab1024.smartadmin.service.module.business.goods.constant.GoodsTypeEnum;
|
||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
@ -14,7 +14,7 @@ import org.hibernate.validator.constraints.Length;
|
|||||||
* @date 2021/8/5 14:42
|
* @date 2021/8/5 14:42
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class GoodsQueryDTO extends PageBaseDTO {
|
public class GoodsQueryDTO extends PageParamDTO {
|
||||||
|
|
||||||
@ApiModelPropertyEnum(desc = "商品类型|可选", value = GoodsTypeEnum.class)
|
@ApiModelPropertyEnum(desc = "商品类型|可选", value = GoodsTypeEnum.class)
|
||||||
private Integer goodsType;
|
private Integer goodsType;
|
||||||
|
@ -3,14 +3,14 @@ package net.lab1024.smartadmin.service.module.business.notice;
|
|||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||||
import net.lab1024.smartadmin.service.common.controller.AdminBaseController;
|
import net.lab1024.smartadmin.service.common.controller.SystemBaseController;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageBaseDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageParamDTO;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
import net.lab1024.smartadmin.service.module.business.notice.domain.dto.*;
|
import net.lab1024.smartadmin.service.module.business.notice.domain.dto.*;
|
||||||
import net.lab1024.smartadmin.service.module.business.notice.domain.vo.NoticeDetailVO;
|
import net.lab1024.smartadmin.service.module.business.notice.domain.vo.NoticeDetailVO;
|
||||||
import net.lab1024.smartadmin.service.module.business.notice.domain.vo.NoticeVO;
|
import net.lab1024.smartadmin.service.module.business.notice.domain.vo.NoticeVO;
|
||||||
import net.lab1024.smartadmin.service.util.SmartEmployeeTokenUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartEmployeeTokenUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ import javax.validation.Valid;
|
|||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
@Api(tags = {SwaggerTagConst.Admin.MANAGER_NOTICE})
|
@Api(tags = {SwaggerTagConst.Admin.MANAGER_NOTICE})
|
||||||
public class NoticeController extends AdminBaseController {
|
public class NoticeController extends SystemBaseController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private NoticeService noticeService;
|
private NoticeService noticeService;
|
||||||
@ -44,7 +44,7 @@ public class NoticeController extends AdminBaseController {
|
|||||||
|
|
||||||
@ApiOperation(value = "分页查询未读消息", notes = "@author 罗伊")
|
@ApiOperation(value = "分页查询未读消息", notes = "@author 罗伊")
|
||||||
@PostMapping("/notice/unread/page/query")
|
@PostMapping("/notice/unread/page/query")
|
||||||
public ResponseDTO<PageResultDTO<NoticeVO>> queryUnreadByPage(@RequestBody PageBaseDTO queryDTO) {
|
public ResponseDTO<PageResultDTO<NoticeVO>> queryUnreadByPage(@RequestBody PageParamDTO queryDTO) {
|
||||||
return noticeService.queryUnreadByPage(queryDTO, SmartEmployeeTokenUtil.getRequestEmployeeId());
|
return noticeService.queryUnreadByPage(queryDTO, SmartEmployeeTokenUtil.getRequestEmployeeId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ package net.lab1024.smartadmin.service.module.business.notice;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageBaseDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageParamDTO;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
import net.lab1024.smartadmin.service.module.business.notice.dao.NoticeDao;
|
import net.lab1024.smartadmin.service.module.business.notice.dao.NoticeDao;
|
||||||
@ -12,8 +12,8 @@ import net.lab1024.smartadmin.service.module.business.notice.domain.entity.Notic
|
|||||||
import net.lab1024.smartadmin.service.module.business.notice.domain.entity.NoticeReceiveRecordEntity;
|
import net.lab1024.smartadmin.service.module.business.notice.domain.entity.NoticeReceiveRecordEntity;
|
||||||
import net.lab1024.smartadmin.service.module.business.notice.domain.vo.NoticeDetailVO;
|
import net.lab1024.smartadmin.service.module.business.notice.domain.vo.NoticeDetailVO;
|
||||||
import net.lab1024.smartadmin.service.module.business.notice.domain.vo.NoticeVO;
|
import net.lab1024.smartadmin.service.module.business.notice.domain.vo.NoticeVO;
|
||||||
import net.lab1024.smartadmin.service.util.SmartBeanUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||||
import net.lab1024.smartadmin.service.util.SmartPageUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartPageUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@ -74,7 +74,7 @@ public class NoticeService {
|
|||||||
* @param queryDTO
|
* @param queryDTO
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<PageResultDTO<NoticeVO>> queryUnreadByPage(PageBaseDTO queryDTO, Long employeeId) {
|
public ResponseDTO<PageResultDTO<NoticeVO>> queryUnreadByPage(PageParamDTO queryDTO, Long employeeId) {
|
||||||
Page page = SmartPageUtil.convert2PageQuery(queryDTO);
|
Page page = SmartPageUtil.convert2PageQuery(queryDTO);
|
||||||
List<NoticeVO> dtoList = noticeDao.queryUnreadByPage(page, employeeId, true);
|
List<NoticeVO> dtoList = noticeDao.queryUnreadByPage(page, employeeId, true);
|
||||||
PageResultDTO<NoticeVO> pageResultDTO = SmartPageUtil.convert2PageResult(page, dtoList);
|
PageResultDTO<NoticeVO> pageResultDTO = SmartPageUtil.convert2PageResult(page, dtoList);
|
||||||
|
@ -2,7 +2,7 @@ package net.lab1024.smartadmin.service.module.business.notice.domain.dto;
|
|||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageBaseDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageParamDTO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [ ]
|
* [ ]
|
||||||
@ -10,7 +10,7 @@ import net.lab1024.smartadmin.service.common.domain.PageBaseDTO;
|
|||||||
* @author 罗伊
|
* @author 罗伊
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class NoticeQueryDTO extends PageBaseDTO {
|
public class NoticeQueryDTO extends PageParamDTO {
|
||||||
|
|
||||||
|
|
||||||
@ApiModelProperty("开始日期")
|
@ApiModelProperty("开始日期")
|
||||||
|
@ -10,10 +10,10 @@ import net.lab1024.smartadmin.service.module.support.beanrecord.annotation.Field
|
|||||||
import net.lab1024.smartadmin.service.module.support.beanrecord.annotation.FieldEnumValue;
|
import net.lab1024.smartadmin.service.module.support.beanrecord.annotation.FieldEnumValue;
|
||||||
import net.lab1024.smartadmin.service.module.support.beanrecord.annotation.FieldSqlValue;
|
import net.lab1024.smartadmin.service.module.support.beanrecord.annotation.FieldSqlValue;
|
||||||
import net.lab1024.smartadmin.service.third.SmartApplicationContext;
|
import net.lab1024.smartadmin.service.third.SmartApplicationContext;
|
||||||
import net.lab1024.smartadmin.service.util.SmartBaseEnumUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartBaseEnumUtil;
|
||||||
import net.lab1024.smartadmin.service.util.SmartBigDecimalUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartBigDecimalUtil;
|
||||||
import net.lab1024.smartadmin.service.util.date.SmartDateFormatterEnum;
|
import net.lab1024.smartadmin.service.common.util.date.SmartDateFormatterEnum;
|
||||||
import net.lab1024.smartadmin.service.util.date.SmartLocalDateUtil;
|
import net.lab1024.smartadmin.service.common.util.date.SmartLocalDateUtil;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.smartadmin.service.module.support.beanrecord.annotation;
|
package net.lab1024.smartadmin.service.module.support.beanrecord.annotation;
|
||||||
|
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.BaseEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
import java.lang.annotation.ElementType;
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.support.captcha;
|
|||||||
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import net.lab1024.smartadmin.service.common.anno.NoNeedLogin;
|
import net.lab1024.smartadmin.service.common.annoation.NoNeedLogin;
|
||||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||||
import net.lab1024.smartadmin.service.common.controller.SupportBaseController;
|
import net.lab1024.smartadmin.service.common.controller.SupportBaseController;
|
||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
|
@ -4,7 +4,7 @@ import com.google.code.kaptcha.impl.DefaultKaptcha;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.lab1024.smartadmin.service.common.code.SystemErrorCode;
|
import net.lab1024.smartadmin.service.common.code.SystemErrorCode;
|
||||||
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
||||||
import net.lab1024.smartadmin.service.common.constant.CommonConst;
|
import net.lab1024.smartadmin.service.common.constant.StringConst;
|
||||||
import net.lab1024.smartadmin.service.common.constant.RedisKeyConst;
|
import net.lab1024.smartadmin.service.common.constant.RedisKeyConst;
|
||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
import net.lab1024.smartadmin.service.module.support.captcha.domain.CaptchaVO;
|
import net.lab1024.smartadmin.service.module.support.captcha.domain.CaptchaVO;
|
||||||
@ -54,7 +54,7 @@ public class CaptchaService {
|
|||||||
return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR, "generate captcha error" );
|
return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR, "generate captcha error" );
|
||||||
}
|
}
|
||||||
// uuid 唯一标识
|
// uuid 唯一标识
|
||||||
String uuid = UUID.randomUUID().toString().replace("-", CommonConst.EMPTY_STR);
|
String uuid = UUID.randomUUID().toString().replace("-", StringConst.EMPTY_STR);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回验证码对象
|
* 返回验证码对象
|
||||||
@ -82,10 +82,10 @@ public class CaptchaService {
|
|||||||
String redisKey = buildCaptchaRedisKey(captchaId);
|
String redisKey = buildCaptchaRedisKey(captchaId);
|
||||||
String redisCode = redisService.get(redisKey);
|
String redisCode = redisService.get(redisKey);
|
||||||
if (StringUtils.isBlank(redisCode)) {
|
if (StringUtils.isBlank(redisCode)) {
|
||||||
return ResponseDTO.error(UserErrorCode.VERIFICATION_CODE_INVALID, "验证码错误或已过期,请刷新重试" );
|
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "验证码错误或已过期,请刷新重试" );
|
||||||
}
|
}
|
||||||
if (!Objects.equals(redisCode, captcha)) {
|
if (!Objects.equals(redisCode, captcha)) {
|
||||||
return ResponseDTO.error(UserErrorCode.VERIFICATION_CODE_INVALID, "验证码错误或已过期,请刷新重试" );
|
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "验证码错误或已过期,请刷新重试" );
|
||||||
}
|
}
|
||||||
// 校验通过 移除
|
// 校验通过 移除
|
||||||
redisService.del(redisKey);
|
redisService.del(redisKey);
|
||||||
@ -93,6 +93,6 @@ public class CaptchaService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String buildCaptchaRedisKey(String codeId) {
|
private String buildCaptchaRedisKey(String codeId) {
|
||||||
return RedisKeyConst.Base.CAPTCHA + codeId;
|
return RedisKeyConst.Support.CAPTCHA + codeId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ import javax.validation.constraints.NotBlank;
|
|||||||
* @date 2021/8/31 20:52
|
* @date 2021/8/31 20:52
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class CaptchaDTO {
|
public class CaptchaForm {
|
||||||
|
|
||||||
@ApiModelProperty
|
@ApiModelProperty
|
||||||
@NotBlank(message = "验证码标识不能为空" )
|
@NotBlank(message = "验证码标识不能为空" )
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.support.datatracer;
|
|||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||||
import net.lab1024.smartadmin.service.common.controller.AdminBaseController;
|
import net.lab1024.smartadmin.service.common.controller.SystemBaseController;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerQueryForm;
|
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerQueryForm;
|
||||||
@ -24,7 +24,7 @@ import javax.validation.Valid;
|
|||||||
|
|
||||||
@Api(tags = {SwaggerTagConst.Admin.MANAGER_DATA_TRACER})
|
@Api(tags = {SwaggerTagConst.Admin.MANAGER_DATA_TRACER})
|
||||||
@RestController
|
@RestController
|
||||||
public class DataTracerController extends AdminBaseController {
|
public class DataTracerController extends SystemBaseController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private DataTracerService dataTracerService;
|
private DataTracerService dataTracerService;
|
||||||
|
@ -11,7 +11,7 @@ import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTrace
|
|||||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerEntity;
|
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerEntity;
|
||||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerQueryForm;
|
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerQueryForm;
|
||||||
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerVO;
|
import net.lab1024.smartadmin.service.module.support.datatracer.domain.DataTracerVO;
|
||||||
import net.lab1024.smartadmin.service.util.SmartPageUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartPageUtil;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.support.datatracer.constant;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.BaseEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [ 数据业务类型 ]
|
* [ 数据业务类型 ]
|
||||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.support.datatracer.constant;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.BaseEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [ ]
|
* [ ]
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package net.lab1024.smartadmin.service.module.support.datatracer.domain;
|
package net.lab1024.smartadmin.service.module.support.datatracer.domain;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.BaseEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||||
import net.lab1024.smartadmin.service.module.support.datatracer.constant.DataTracerBusinessTypeEnum;
|
import net.lab1024.smartadmin.service.module.support.datatracer.constant.DataTracerBusinessTypeEnum;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
@ -2,7 +2,7 @@ package net.lab1024.smartadmin.service.module.support.datatracer.domain;
|
|||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageBaseDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageParamDTO;
|
||||||
import net.lab1024.smartadmin.service.common.swagger.ApiModelPropertyEnum;
|
import net.lab1024.smartadmin.service.common.swagger.ApiModelPropertyEnum;
|
||||||
import net.lab1024.smartadmin.service.module.support.datatracer.constant.DataTracerBusinessTypeEnum;
|
import net.lab1024.smartadmin.service.module.support.datatracer.constant.DataTracerBusinessTypeEnum;
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ import javax.validation.constraints.NotNull;
|
|||||||
* @date 2021/8/17 8:47
|
* @date 2021/8/17 8:47
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class DataTracerQueryForm extends PageBaseDTO {
|
public class DataTracerQueryForm extends PageParamDTO {
|
||||||
|
|
||||||
@ApiModelPropertyEnum(DataTracerBusinessTypeEnum.class)
|
@ApiModelPropertyEnum(DataTracerBusinessTypeEnum.class)
|
||||||
private Integer businessType;
|
private Integer businessType;
|
||||||
|
@ -2,7 +2,7 @@ package net.lab1024.smartadmin.service.module.support.file.domain;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.BaseEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件服务 文件夹位置类型枚举类
|
* 文件服务 文件夹位置类型枚举类
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.smartadmin.service.module.support.file.domain.dto;
|
package net.lab1024.smartadmin.service.module.support.file.domain.dto;
|
||||||
|
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageBaseDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageParamDTO;
|
||||||
import net.lab1024.smartadmin.service.common.swagger.ApiModelPropertyEnum;
|
import net.lab1024.smartadmin.service.common.swagger.ApiModelPropertyEnum;
|
||||||
import net.lab1024.smartadmin.service.module.support.file.domain.FileFolderTypeEnum;
|
import net.lab1024.smartadmin.service.module.support.file.domain.FileFolderTypeEnum;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
@ -13,7 +13,7 @@ import lombok.Data;
|
|||||||
* @Version: 1.0
|
* @Version: 1.0
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class FileQueryDTO extends PageBaseDTO {
|
public class FileQueryDTO extends PageParamDTO {
|
||||||
|
|
||||||
@ApiModelProperty(value = "文件名称")
|
@ApiModelProperty(value = "文件名称")
|
||||||
private String fileName;
|
private String fileName;
|
||||||
|
@ -5,8 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import net.lab1024.smartadmin.service.common.code.SystemErrorCode;
|
import net.lab1024.smartadmin.service.common.code.SystemErrorCode;
|
||||||
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
||||||
import net.lab1024.smartadmin.service.common.constant.CommonConst;
|
import net.lab1024.smartadmin.service.common.constant.StringConst;
|
||||||
import net.lab1024.smartadmin.service.common.constant.NumberLimitConst;
|
|
||||||
import net.lab1024.smartadmin.service.common.constant.RedisKeyConst;
|
import net.lab1024.smartadmin.service.common.constant.RedisKeyConst;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
@ -17,9 +16,9 @@ import net.lab1024.smartadmin.service.module.support.file.domain.dto.*;
|
|||||||
import net.lab1024.smartadmin.service.module.support.file.domain.vo.FileUploadVO;
|
import net.lab1024.smartadmin.service.module.support.file.domain.vo.FileUploadVO;
|
||||||
import net.lab1024.smartadmin.service.module.support.file.domain.vo.FileVO;
|
import net.lab1024.smartadmin.service.module.support.file.domain.vo.FileVO;
|
||||||
import net.lab1024.smartadmin.service.third.SmartRedisService;
|
import net.lab1024.smartadmin.service.third.SmartRedisService;
|
||||||
import net.lab1024.smartadmin.service.util.SmartBaseEnumUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartBaseEnumUtil;
|
||||||
import net.lab1024.smartadmin.service.util.SmartBeanUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||||
import net.lab1024.smartadmin.service.util.SmartPageUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartPageUtil;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -48,6 +47,11 @@ import java.util.stream.Collectors;
|
|||||||
@Service
|
@Service
|
||||||
public class FileService {
|
public class FileService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件名最大长度
|
||||||
|
*/
|
||||||
|
private static final int FILE_NAME_MAX_LENGTH = 100;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private IFileStorageService fileStorageService;
|
private IFileStorageService fileStorageService;
|
||||||
|
|
||||||
@ -99,7 +103,7 @@ public class FileService {
|
|||||||
}
|
}
|
||||||
// 校验文件名称
|
// 校验文件名称
|
||||||
String originalFilename = file.getOriginalFilename();
|
String originalFilename = file.getOriginalFilename();
|
||||||
if (StringUtils.isBlank(originalFilename) || originalFilename.length() > NumberLimitConst.FILE_NAME) {
|
if (StringUtils.isBlank(originalFilename) || originalFilename.length() > FILE_NAME_MAX_LENGTH) {
|
||||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "上传文件名称不能为空");
|
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "上传文件名称不能为空");
|
||||||
}
|
}
|
||||||
// 校验文件大小
|
// 校验文件大小
|
||||||
@ -126,10 +130,10 @@ public class FileService {
|
|||||||
fileDao.insert(fileEntity);
|
fileDao.insert(fileEntity);
|
||||||
uploadVO.setFileId(fileEntity.getId());
|
uploadVO.setFileId(fileEntity.getId());
|
||||||
//添加缓存
|
//添加缓存
|
||||||
String redisKey = RedisKeyConst.Base.FILE_URL + uploadVO.getFileKey();
|
String redisKey = RedisKeyConst.Support.FILE_URL + uploadVO.getFileKey();
|
||||||
redisService.set(redisKey, uploadVO.getFileUrl(), fileStorageService.cacheExpireSecond());
|
redisService.set(redisKey, uploadVO.getFileUrl(), fileStorageService.cacheExpireSecond());
|
||||||
|
|
||||||
String fileRedisKey = RedisKeyConst.Base.FILE_VO + uploadVO.getFileKey();
|
String fileRedisKey = RedisKeyConst.Support.FILE_VO + uploadVO.getFileKey();
|
||||||
FileVO fileVO = SmartBeanUtil.copy(fileEntity, FileVO.class);
|
FileVO fileVO = SmartBeanUtil.copy(fileEntity, FileVO.class);
|
||||||
redisService.set(fileRedisKey, fileVO, fileStorageService.cacheExpireSecond());
|
redisService.set(fileRedisKey, fileVO, fileStorageService.cacheExpireSecond());
|
||||||
}
|
}
|
||||||
@ -152,7 +156,7 @@ public class FileService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private FileVO getCacheFileVO(String fileKey) {
|
private FileVO getCacheFileVO(String fileKey) {
|
||||||
String redisKey = RedisKeyConst.Base.FILE_VO + fileKey;
|
String redisKey = RedisKeyConst.Support.FILE_VO + fileKey;
|
||||||
FileVO fileVO = redisService.getObject(redisKey, FileVO.class);
|
FileVO fileVO = redisService.getObject(redisKey, FileVO.class);
|
||||||
if (fileVO == null) {
|
if (fileVO == null) {
|
||||||
fileVO = fileDao.getByFileKey(fileKey);
|
fileVO = fileDao.getByFileKey(fileKey);
|
||||||
@ -177,15 +181,15 @@ public class FileService {
|
|||||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR);
|
return ResponseDTO.error(UserErrorCode.PARAM_ERROR);
|
||||||
}
|
}
|
||||||
// 处理逗号分隔的字符串
|
// 处理逗号分隔的字符串
|
||||||
List<String> stringList = Arrays.asList(fileKey.split(CommonConst.SEPARATOR));
|
List<String> stringList = Arrays.asList(fileKey.split(StringConst.SEPARATOR));
|
||||||
stringList = stringList.stream().map(e -> this.getCacheUrl(e)).collect(Collectors.toList());
|
stringList = stringList.stream().map(e -> this.getCacheUrl(e)).collect(Collectors.toList());
|
||||||
String result = StringUtils.join(stringList, CommonConst.SEPARATOR_CHAR);
|
String result = StringUtils.join(stringList, StringConst.SEPARATOR_CHAR);
|
||||||
return ResponseDTO.ok(result);
|
return ResponseDTO.ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private String getCacheUrl(String fileKey) {
|
private String getCacheUrl(String fileKey) {
|
||||||
String redisKey = RedisKeyConst.Base.FILE_URL + fileKey;
|
String redisKey = RedisKeyConst.Support.FILE_URL + fileKey;
|
||||||
String fileUrl = redisService.get(redisKey);
|
String fileUrl = redisService.get(redisKey);
|
||||||
if (null != fileUrl) {
|
if (null != fileUrl) {
|
||||||
return fileUrl;
|
return fileUrl;
|
||||||
@ -212,9 +216,9 @@ public class FileService {
|
|||||||
List<String> fileKeyList = queryDTO.getFileKeyList();
|
List<String> fileKeyList = queryDTO.getFileKeyList();
|
||||||
List<FileUrlResultDTO> resultDTOList = fileKeyList.stream().map(fileKey -> {
|
List<FileUrlResultDTO> resultDTOList = fileKeyList.stream().map(fileKey -> {
|
||||||
// 处理逗号分隔的字符串
|
// 处理逗号分隔的字符串
|
||||||
List<String> stringList = Arrays.asList(fileKey.split(CommonConst.SEPARATOR));
|
List<String> stringList = Arrays.asList(fileKey.split(StringConst.SEPARATOR));
|
||||||
stringList = stringList.stream().map(e -> fileStorageService.getFileUrl(e).getData()).collect(Collectors.toList());
|
stringList = stringList.stream().map(e -> fileStorageService.getFileUrl(e).getData()).collect(Collectors.toList());
|
||||||
String result = StringUtils.join(stringList, CommonConst.SEPARATOR_CHAR);
|
String result = StringUtils.join(stringList, StringConst.SEPARATOR_CHAR);
|
||||||
return new FileUrlResultDTO(fileKey, result);
|
return new FileUrlResultDTO(fileKey, result);
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
|
@ -3,8 +3,8 @@ package net.lab1024.smartadmin.service.module.support.file.service;
|
|||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
import net.lab1024.smartadmin.service.module.support.file.domain.dto.FileDownloadDTO;
|
import net.lab1024.smartadmin.service.module.support.file.domain.dto.FileDownloadDTO;
|
||||||
import net.lab1024.smartadmin.service.module.support.file.domain.vo.FileUploadVO;
|
import net.lab1024.smartadmin.service.module.support.file.domain.vo.FileUploadVO;
|
||||||
import net.lab1024.smartadmin.service.util.date.SmartDateFormatterEnum;
|
import net.lab1024.smartadmin.service.common.util.date.SmartDateFormatterEnum;
|
||||||
import net.lab1024.smartadmin.service.util.date.SmartLocalDateUtil;
|
import net.lab1024.smartadmin.service.common.util.date.SmartLocalDateUtil;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.support.heartbeat;
|
|||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageBaseDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageParamDTO;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
import net.lab1024.smartadmin.service.common.controller.SupportBaseController;
|
import net.lab1024.smartadmin.service.common.controller.SupportBaseController;
|
||||||
@ -24,8 +24,8 @@ public class HeartBeatController extends SupportBaseController {
|
|||||||
|
|
||||||
@PostMapping("/heartBeat/query")
|
@PostMapping("/heartBeat/query")
|
||||||
@ApiOperation("查询心跳记录 @author 卓大")
|
@ApiOperation("查询心跳记录 @author 卓大")
|
||||||
public ResponseDTO<PageResultDTO<HeartBeatRecordVO>> query(@RequestBody @Valid PageBaseDTO pageBaseDTO) {
|
public ResponseDTO<PageResultDTO<HeartBeatRecordVO>> query(@RequestBody @Valid PageParamDTO pageParamDTO) {
|
||||||
return heartBeatService.pageQuery(pageBaseDTO);
|
return heartBeatService.pageQuery(pageParamDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.support.heartbeat;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.lab1024.smartadmin.service.module.support.heartbeat.core.HeartBeatRecord;
|
import net.lab1024.smartadmin.service.module.support.heartbeat.core.HeartBeatRecord;
|
||||||
import net.lab1024.smartadmin.service.module.support.heartbeat.core.IHeartBeatRecordHandler;
|
import net.lab1024.smartadmin.service.module.support.heartbeat.core.IHeartBeatRecordHandler;
|
||||||
import net.lab1024.smartadmin.service.util.SmartBeanUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@ -2,10 +2,10 @@ package net.lab1024.smartadmin.service.module.support.heartbeat;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageBaseDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageParamDTO;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
import net.lab1024.smartadmin.service.util.SmartPageUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartPageUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@ -24,8 +24,8 @@ public class HeartBeatService {
|
|||||||
private HeartBeatRecordDao heartBeatRecordDao;
|
private HeartBeatRecordDao heartBeatRecordDao;
|
||||||
|
|
||||||
|
|
||||||
public ResponseDTO<PageResultDTO<HeartBeatRecordVO>> pageQuery(PageBaseDTO pageBaseDTO) {
|
public ResponseDTO<PageResultDTO<HeartBeatRecordVO>> pageQuery(PageParamDTO pageParamDTO) {
|
||||||
Page pageQueryInfo = SmartPageUtil.convert2PageQuery(pageBaseDTO);
|
Page pageQueryInfo = SmartPageUtil.convert2PageQuery(pageParamDTO);
|
||||||
List<HeartBeatRecordVO> recordVOList = heartBeatRecordDao.pageQuery(pageQueryInfo);
|
List<HeartBeatRecordVO> recordVOList = heartBeatRecordDao.pageQuery(pageQueryInfo);
|
||||||
PageResultDTO<HeartBeatRecordVO> pageResultDTO = SmartPageUtil.convert2PageResult(pageQueryInfo, recordVOList);
|
PageResultDTO<HeartBeatRecordVO> pageResultDTO = SmartPageUtil.convert2PageResult(pageQueryInfo, recordVOList);
|
||||||
return ResponseDTO.ok(pageResultDTO);
|
return ResponseDTO.ok(pageResultDTO);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.smartadmin.service.module.support.heartbeat.core;
|
package net.lab1024.smartadmin.service.module.support.heartbeat.core;
|
||||||
|
|
||||||
import net.lab1024.smartadmin.service.util.SmartIPUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartIPUtil;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.lang.management.ManagementFactory;
|
import java.lang.management.ManagementFactory;
|
||||||
|
@ -7,7 +7,8 @@ import net.lab1024.smartadmin.service.common.controller.SupportBaseController;
|
|||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||||
import net.lab1024.smartadmin.service.module.support.idgenerator.constant.IdGeneratorEnum;
|
import net.lab1024.smartadmin.service.module.support.idgenerator.constant.IdGeneratorEnum;
|
||||||
import net.lab1024.smartadmin.service.util.SmartBaseEnumUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartBaseEnumUtil;
|
||||||
|
import net.lab1024.smartadmin.service.module.support.idgenerator.service.IdGeneratorService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
@ -33,7 +34,7 @@ public class IdGeneratorController extends SupportBaseController {
|
|||||||
if (null == idGeneratorEnum) {
|
if (null == idGeneratorEnum) {
|
||||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "IdGenerator,不存在" + generatorId);
|
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "IdGenerator,不存在" + generatorId);
|
||||||
}
|
}
|
||||||
return idGeneratorService.generate(idGeneratorEnum);
|
return ResponseDTO.ok(idGeneratorService.generate(idGeneratorEnum));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package net.lab1024.smartadmin.service.module.support.idgenerator.constant;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.BaseEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* id生成枚举类
|
* id生成枚举类
|
||||||
|
@ -2,7 +2,7 @@ package net.lab1024.smartadmin.service.module.support.idgenerator.constant;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.lab1024.smartadmin.service.common.enumconst.BaseEnum;
|
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [ ]
|
* [ ]
|
||||||
|
@ -1,16 +1,18 @@
|
|||||||
package net.lab1024.smartadmin.service.module.support.idgenerator;
|
package net.lab1024.smartadmin.service.module.support.idgenerator.service;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.lab1024.smartadmin.service.common.code.UnexpectedErrorCode;
|
import net.lab1024.smartadmin.service.common.code.UnexpectedErrorCode;
|
||||||
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
||||||
import net.lab1024.smartadmin.service.common.constant.RedisKeyConst;
|
import net.lab1024.smartadmin.service.common.constant.RedisKeyConst;
|
||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
|
import net.lab1024.smartadmin.service.common.exception.BusinessException;
|
||||||
|
import net.lab1024.smartadmin.service.common.util.SmartRandomUtil;
|
||||||
|
import net.lab1024.smartadmin.service.module.support.idgenerator.IdGeneratorDao;
|
||||||
import net.lab1024.smartadmin.service.module.support.idgenerator.constant.IdGeneratorEnum;
|
import net.lab1024.smartadmin.service.module.support.idgenerator.constant.IdGeneratorEnum;
|
||||||
import net.lab1024.smartadmin.service.module.support.idgenerator.constant.IdGeneratorRuleTypeEnum;
|
import net.lab1024.smartadmin.service.module.support.idgenerator.constant.IdGeneratorRuleTypeEnum;
|
||||||
import net.lab1024.smartadmin.service.module.support.idgenerator.domain.IdGeneratorEntity;
|
import net.lab1024.smartadmin.service.module.support.idgenerator.domain.IdGeneratorEntity;
|
||||||
import net.lab1024.smartadmin.service.module.support.idgenerator.domain.IdGeneratorRecordDTO;
|
import net.lab1024.smartadmin.service.module.support.idgenerator.domain.IdGeneratorRecordDTO;
|
||||||
import net.lab1024.smartadmin.service.third.SmartRedisService;
|
import net.lab1024.smartadmin.service.third.SmartRedisService;
|
||||||
import net.lab1024.smartadmin.service.util.SmartRandomUtil;
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -55,44 +57,41 @@ public class IdGeneratorService {
|
|||||||
/**
|
/**
|
||||||
* id 生成器
|
* id 生成器
|
||||||
*
|
*
|
||||||
* @param idGeneratorEnum
|
* @param idGeneratorEnum 类型
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<String> generate(IdGeneratorEnum idGeneratorEnum) {
|
public String generate(IdGeneratorEnum idGeneratorEnum) {
|
||||||
int generatorId = idGeneratorEnum.getValue();
|
int generatorId = idGeneratorEnum.getValue();
|
||||||
IdGeneratorEntity idGeneratorEntity = this.idGeneratorMap.get(generatorId);
|
IdGeneratorEntity idGeneratorEntity = this.idGeneratorMap.get(generatorId);
|
||||||
if (null == idGeneratorEntity) {
|
if (null == idGeneratorEntity) {
|
||||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "IdGenerator, 生成器 不存在" + generatorId);
|
throw new BusinessException("IdGenerator, 生成器 不存在 " + idGeneratorEnum.getDesc());
|
||||||
}
|
}
|
||||||
|
|
||||||
LocalDateTime now = LocalDateTime.now();
|
// 获取全局唯一锁
|
||||||
int year = now.getYear();
|
String lockKey = RedisKeyConst.Support.ID_GENERATOR + idGeneratorEnum.getDesc();
|
||||||
int monthValue = now.getMonthValue();
|
boolean lock = false;
|
||||||
int dayOfMonth = now.getDayOfMonth();
|
for (int i = 0; i < MAX_GET_LOCK_COUNT; i++) {
|
||||||
|
try {
|
||||||
String lockKey = RedisKeyConst.Base.ID_GENERATOR + idGeneratorEnum.getDesc();
|
//60秒
|
||||||
|
lock = redisService.getLock(lockKey, 60 * 1000L);
|
||||||
|
if (lock) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Thread.sleep(Math.max(SLEEP_MILLISECONDS, lastSleepMilliSeconds));
|
||||||
|
} catch (Throwable e) {
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!lock) {
|
||||||
|
throw new BusinessException("IdGenerator, 生成器繁忙,无法处理: " + idGeneratorEnum.getDesc());
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
boolean lock = false;
|
|
||||||
|
|
||||||
for (int i = 0; i < MAX_GET_LOCK_COUNT; i++) {
|
|
||||||
try {
|
|
||||||
//60秒
|
|
||||||
lock = redisService.getLock(lockKey, 60 * 1000L);
|
|
||||||
if (lock) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Thread.sleep(Math.max(SLEEP_MILLISECONDS, lastSleepMilliSeconds));
|
|
||||||
} catch (Throwable e) {
|
|
||||||
log.error(e.getMessage(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!lock) {
|
|
||||||
return ResponseDTO.error(UnexpectedErrorCode.BUSINESS_HANDING);
|
|
||||||
}
|
|
||||||
|
|
||||||
long beginTime = System.currentTimeMillis();
|
long beginTime = System.currentTimeMillis();
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
int year = now.getYear();
|
||||||
|
int monthValue = now.getMonthValue();
|
||||||
|
int dayOfMonth = now.getDayOfMonth();
|
||||||
|
|
||||||
IdGeneratorRecordDTO generatorRecordDTO = idGeneratorDao.selectHistoryLastNumber(generatorId, year, monthValue, dayOfMonth);
|
IdGeneratorRecordDTO generatorRecordDTO = idGeneratorDao.selectHistoryLastNumber(generatorId, year, monthValue, dayOfMonth);
|
||||||
if (generatorRecordDTO == null) {
|
if (generatorRecordDTO == null) {
|
||||||
@ -128,7 +127,7 @@ public class IdGeneratorService {
|
|||||||
String prefix = StringUtils.isBlank(idGeneratorEntity.getPrefix()) ? StringUtils.EMPTY : idGeneratorEntity.getPrefix();
|
String prefix = StringUtils.isBlank(idGeneratorEntity.getPrefix()) ? StringUtils.EMPTY : idGeneratorEntity.getPrefix();
|
||||||
|
|
||||||
lastSleepMilliSeconds = System.currentTimeMillis() - beginTime + 100;
|
lastSleepMilliSeconds = System.currentTimeMillis() - beginTime + 100;
|
||||||
return ResponseDTO.ok(prefix + nowFormat + finalId);
|
return prefix + nowFormat + finalId;
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
throw e;
|
throw e;
|
@ -2,14 +2,16 @@ package net.lab1024.smartadmin.service.module.support.operatelog;
|
|||||||
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
|
||||||
import net.lab1024.smartadmin.service.common.controller.SupportBaseController;
|
import net.lab1024.smartadmin.service.common.controller.SupportBaseController;
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
||||||
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
||||||
|
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogDTO;
|
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogDTO;
|
||||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogQueryDTO;
|
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogQueryDTO;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [ ]
|
* [ ]
|
||||||
@ -29,16 +31,4 @@ public class OperateLogController extends SupportBaseController {
|
|||||||
return operateLogService.queryByPage(queryDTO);
|
return operateLogService.queryByPage(queryDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "删除 @author 罗伊")
|
|
||||||
@GetMapping("/userOperateLog/delete/{id}")
|
|
||||||
public ResponseDTO<String> delete(@PathVariable("id") Long id) {
|
|
||||||
return operateLogService.delete(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@ApiOperation(value = "详情 @author 罗伊")
|
|
||||||
@GetMapping("/userOperateLog/detail/{id}")
|
|
||||||
public ResponseDTO<OperateLogDTO> detail(@PathVariable("id") Long id) {
|
|
||||||
return operateLogService.detail(id);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,8 @@ import net.lab1024.smartadmin.service.common.domain.ResponseDTO;
|
|||||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.OperateLogEntity;
|
import net.lab1024.smartadmin.service.module.support.operatelog.domain.OperateLogEntity;
|
||||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogDTO;
|
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogDTO;
|
||||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogQueryDTO;
|
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogQueryDTO;
|
||||||
import net.lab1024.smartadmin.service.util.SmartBeanUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||||
import net.lab1024.smartadmin.service.util.SmartPageUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartPageUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@ -53,7 +53,6 @@ public class OperateLogService {
|
|||||||
* @description 编辑
|
* @description 编辑
|
||||||
* @date 2019-05-15 11:32:14
|
* @date 2019-05-15 11:32:14
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public ResponseDTO<String> update(OperateLogDTO updateDTO) {
|
public ResponseDTO<String> update(OperateLogDTO updateDTO) {
|
||||||
OperateLogEntity entity = SmartBeanUtil.copy(updateDTO, OperateLogEntity.class);
|
OperateLogEntity entity = SmartBeanUtil.copy(updateDTO, OperateLogEntity.class);
|
||||||
operateLogDao.updateById(entity);
|
operateLogDao.updateById(entity);
|
||||||
@ -65,7 +64,6 @@ public class OperateLogService {
|
|||||||
* @description 删除
|
* @description 删除
|
||||||
* @date 2019-05-15 11:32:14
|
* @date 2019-05-15 11:32:14
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public ResponseDTO<String> delete(Long id) {
|
public ResponseDTO<String> delete(Long id) {
|
||||||
operateLogDao.deleteById(id);
|
operateLogDao.deleteById(id);
|
||||||
return ResponseDTO.ok();
|
return ResponseDTO.ok();
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package net.lab1024.smartadmin.service.module.support.operatelog;
|
package net.lab1024.smartadmin.service.module.support.operatelog.annoation;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
|
|
@ -1,12 +1,13 @@
|
|||||||
package net.lab1024.smartadmin.service.module.support.operatelog;
|
package net.lab1024.smartadmin.service.module.support.operatelog.annoation;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.SmartOperateLogConfigDTO;
|
import net.lab1024.smartadmin.service.module.support.operatelog.OperateLogDao;
|
||||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.SmartOperateLogUserDTO;
|
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogConfigDTO;
|
||||||
|
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogUserDTO;
|
||||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.OperateLogEntity;
|
import net.lab1024.smartadmin.service.module.support.operatelog.domain.OperateLogEntity;
|
||||||
import net.lab1024.smartadmin.service.third.SmartApplicationContext;
|
import net.lab1024.smartadmin.service.third.SmartApplicationContext;
|
||||||
import net.lab1024.smartadmin.service.util.SmartStringUtil;
|
import net.lab1024.smartadmin.service.common.util.SmartStringUtil;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -35,11 +36,11 @@ import java.util.concurrent.ThreadPoolExecutor;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Aspect
|
@Aspect
|
||||||
public class SmartOperateLogAspect {
|
public class OperateLogAspect {
|
||||||
|
|
||||||
private static final String pointCut = "@within(org.springframework.web.bind.annotation.RestController) || @within(org.springframework.stereotype.Controller)";
|
private static final String pointCut = "@within(org.springframework.web.bind.annotation.RestController) || @within(org.springframework.stereotype.Controller)";
|
||||||
|
|
||||||
private SmartOperateLogConfigDTO smartLogConfig;
|
private OperateLogConfigDTO smartLogConfig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 线程池
|
* 线程池
|
||||||
@ -49,8 +50,8 @@ public class SmartOperateLogAspect {
|
|||||||
/**
|
/**
|
||||||
* 构造方法
|
* 构造方法
|
||||||
*/
|
*/
|
||||||
public SmartOperateLogAspect(SmartOperateLogConfigDTO smartOperateLogConfigDTO) {
|
public OperateLogAspect(OperateLogConfigDTO operateLogConfigDTO) {
|
||||||
smartLogConfig = smartOperateLogConfigDTO;
|
smartLogConfig = operateLogConfigDTO;
|
||||||
this.initThread(smartLogConfig);
|
this.initThread(smartLogConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,7 +72,7 @@ public class SmartOperateLogAspect {
|
|||||||
/**
|
/**
|
||||||
* 初始化线程池
|
* 初始化线程池
|
||||||
*/
|
*/
|
||||||
private void initThread(SmartOperateLogConfigDTO configDTO) {
|
private void initThread(OperateLogConfigDTO configDTO) {
|
||||||
int corePoolSize = Runtime.getRuntime().availableProcessors();
|
int corePoolSize = Runtime.getRuntime().availableProcessors();
|
||||||
if (null != configDTO.getCorePoolSize()) {
|
if (null != configDTO.getCorePoolSize()) {
|
||||||
corePoolSize = configDTO.getCorePoolSize();
|
corePoolSize = configDTO.getCorePoolSize();
|
||||||
@ -175,7 +176,7 @@ public class SmartOperateLogAspect {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//设置用户信息
|
//设置用户信息
|
||||||
SmartOperateLogUserDTO user = smartLogConfig.getUserFunction().apply(request);
|
OperateLogUserDTO user = smartLogConfig.getUserFunction().apply(request);
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
@ -16,12 +16,12 @@ import java.util.function.Supplier;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@Builder
|
@Builder
|
||||||
public class SmartOperateLogConfigDTO {
|
public class OperateLogConfigDTO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户信息
|
* 用户信息
|
||||||
*/
|
*/
|
||||||
private Function<HttpServletRequest, SmartOperateLogUserDTO> userFunction;
|
private Function<HttpServletRequest, OperateLogUserDTO> userFunction;
|
||||||
/**
|
/**
|
||||||
* 是否启用
|
* 是否启用
|
||||||
*/
|
*/
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.smartadmin.service.module.support.operatelog.domain.dto;
|
package net.lab1024.smartadmin.service.module.support.operatelog.domain.dto;
|
||||||
|
|
||||||
import net.lab1024.smartadmin.service.common.domain.PageBaseDTO;
|
import net.lab1024.smartadmin.service.common.domain.PageParamDTO;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@ -10,7 +10,7 @@ import lombok.Data;
|
|||||||
* @author 罗伊
|
* @author 罗伊
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class OperateLogQueryDTO extends PageBaseDTO {
|
public class OperateLogQueryDTO extends PageParamDTO {
|
||||||
|
|
||||||
|
|
||||||
@ApiModelProperty("开始日期")
|
@ApiModelProperty("开始日期")
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user