mirror of
https://gitee.com/lab1024/smart-admin.git
synced 2025-10-08 21:26: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.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.RetentionPolicy;
|
@ -32,8 +32,6 @@ public enum UserErrorCode implements ErrorCode {
|
||||
|
||||
LOGIN_FAILED(30010, "用户名或密码错误!"),
|
||||
|
||||
VERIFICATION_CODE_INVALID(30011, "验证码错误或已过期,请输入正确的验证码"),
|
||||
|
||||
;
|
||||
|
||||
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 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_VO = PROJECT + "fileVO:";
|
||||
public static final String FILE_VO = PROJECT + "file-vo:";
|
||||
|
||||
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:";
|
||||
|
||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.common.constant;
|
||||
/**
|
||||
* [ ]
|
||||
*
|
||||
* @author luoyi
|
||||
* @author 罗伊
|
||||
* @date 2021/9/26 17:43
|
||||
*/
|
||||
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;
|
||||
|
||||
import net.lab1024.smartadmin.service.common.constant.ApiUrlPrefixConst;
|
||||
import net.lab1024.smartadmin.service.common.constant.UrlPrefixConst;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
/**
|
||||
@ -9,6 +9,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
* @author 胡克
|
||||
* @date 2019/10/18 11:51
|
||||
*/
|
||||
@RequestMapping(ApiUrlPrefixConst.API_PREFIX_SUPPORT)
|
||||
@RequestMapping(UrlPrefixConst.SUPPORT)
|
||||
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 javax.validation.Valid;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
import javax.validation.constraints.*;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -19,18 +16,20 @@ import java.util.List;
|
||||
* @Date Created in 2017/10/28 16:19
|
||||
*/
|
||||
@Data
|
||||
public class PageBaseDTO {
|
||||
public class PageParamDTO {
|
||||
|
||||
@ApiModelProperty(value = "页码(不能为空)", required = true, example = "1")
|
||||
@NotNull(message = "分页参数不能为空")
|
||||
@Min(value = 1, message = "分页参数最小1")
|
||||
private Integer pageNum;
|
||||
|
||||
@ApiModelProperty(value = "每页数量(不能为空)", required = true, example = "10")
|
||||
@NotNull(message = "每页数量不能为空")
|
||||
@Range(min = 1, max = 200, message = "每页数量1-200")
|
||||
@Max(value = 200, message = "每页最大为200")
|
||||
private Integer pageSize;
|
||||
|
||||
@ApiModelProperty("是否查询总条数")
|
||||
protected Boolean searchCount;
|
||||
|
||||
@ApiModelProperty("排序字段集合")
|
||||
@Size(max = 10, message = "排序字段最多10")
|
||||
@Valid
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.common.domain;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
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
|
||||
@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.JSONAware;
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.common.enumconst;
|
||||
package net.lab1024.smartadmin.service.common.enumeration;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.common.enumconst;
|
||||
package net.lab1024.smartadmin.service.common.enumeration;
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
@ -8,28 +8,28 @@ import net.lab1024.smartadmin.service.common.code.ErrorCode;
|
||||
* @author 罗伊
|
||||
* @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());
|
||||
}
|
||||
|
||||
public SmartBusinessException(String message) {
|
||||
public BusinessException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public SmartBusinessException(String message, Throwable cause) {
|
||||
public BusinessException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public SmartBusinessException(Throwable cause) {
|
||||
public BusinessException(Throwable 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);
|
||||
}
|
||||
}
|
@ -18,7 +18,7 @@ import java.io.IOException;
|
||||
* @author
|
||||
* @date
|
||||
*/
|
||||
public class SmartSecurityAuthenticationFailHandler implements AuthenticationEntryPoint {
|
||||
public class SecurityAuthenticationFailHandler implements AuthenticationEntryPoint {
|
||||
|
||||
@Override
|
||||
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) throws IOException {
|
@ -1,6 +1,6 @@
|
||||
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.springframework.security.access.ConfigAttribute;
|
||||
import org.springframework.security.access.prepost.*;
|
||||
@ -22,7 +22,7 @@ import java.util.*;
|
||||
* @author 罗伊
|
||||
* @date 2021-08-30 23:08
|
||||
*/
|
||||
public class SmartSecurityMetadataSource extends PrePostAnnotationSecurityMetadataSource {
|
||||
public class SecurityMetadataSource extends PrePostAnnotationSecurityMetadataSource {
|
||||
|
||||
public static final String PRIVILEGE_CHECK_NAME = "privilegeCheck";
|
||||
|
||||
@ -30,12 +30,12 @@ public class SmartSecurityMetadataSource extends PrePostAnnotationSecurityMetada
|
||||
|
||||
private final PrePostInvocationAttributeFactory attributeFactory;
|
||||
|
||||
private SmartSecurityUrlMatchers smartSecurityUrlMatchers;
|
||||
private SecurityUrlMatchers securityUrlMatchers;
|
||||
|
||||
public SmartSecurityMetadataSource(PrePostInvocationAttributeFactory attributeFactory, SmartSecurityUrlMatchers smartSecurityUrlMatchers) {
|
||||
public SecurityMetadataSource(PrePostInvocationAttributeFactory attributeFactory, SecurityUrlMatchers securityUrlMatchers) {
|
||||
super(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) {
|
||||
|
||||
//只对固定的包的所有接口进行控制
|
||||
if (!targetClass.getName().startsWith(smartSecurityUrlMatchers.getValidPackage())) {
|
||||
if (!targetClass.getName().startsWith(securityUrlMatchers.getValidPackage())) {
|
||||
return super.getAttributes(method, targetClass);
|
||||
}
|
||||
//自己的控制
|
||||
@ -77,9 +77,9 @@ public class SmartSecurityMetadataSource extends PrePostAnnotationSecurityMetada
|
||||
antPathMatcher.setCaseSensitive(false);
|
||||
antPathMatcher.setTrimTokens(true);
|
||||
//无需验证的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)) {
|
||||
return super.getAttributes(method, targetClass);
|
||||
}
|
@ -2,9 +2,7 @@ package net.lab1024.smartadmin.service.common.security;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.lab1024.smartadmin.service.common.anno.NoNeedLogin;
|
||||
import net.lab1024.smartadmin.service.common.constant.ApiUrlPrefixConst;
|
||||
import net.lab1024.smartadmin.service.common.constant.CommonConst;
|
||||
import net.lab1024.smartadmin.service.common.annoation.NoNeedLogin;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.collections4.MapUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -30,7 +28,7 @@ import java.util.Set;
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class SmartSecurityUrlMatchers {
|
||||
public class SecurityUrlMatchers {
|
||||
|
||||
@Value("${project.module}")
|
||||
private String scanPackage;
|
||||
@ -70,7 +68,6 @@ public class SmartSecurityUrlMatchers {
|
||||
ignoreUrl.add("/swagger-resources/**");
|
||||
ignoreUrl.add("/webjars/**");
|
||||
ignoreUrl.add("/*/api-docs");
|
||||
ignoreUrl.add(ApiUrlPrefixConst.API_PREFIX_SUPPORT + "/**");
|
||||
log.info("忽略URL:{}", ignoreUrl);
|
||||
return ignoreUrl;
|
||||
}
|
@ -19,7 +19,7 @@ import java.util.List;
|
||||
* @author 罗伊
|
||||
* @date 2020/8/15 15:06
|
||||
*/
|
||||
public class FileKeyVoSerializer extends JsonSerializer<String> {
|
||||
public class FileKeyVOSerializer extends JsonSerializer<String> {
|
||||
|
||||
@Autowired
|
||||
private FileService fileService;
|
||||
|
@ -1,6 +1,6 @@
|
||||
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.Retention;
|
||||
|
@ -2,7 +2,7 @@ package net.lab1024.smartadmin.service.common.swagger;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
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.springframework.core.annotation.AnnotationUtils;
|
||||
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;
|
||||
|
@ -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.Objects;
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.util;
|
||||
package net.lab1024.smartadmin.service.common.util;
|
||||
|
||||
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.RoundingMode;
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.util;
|
||||
package net.lab1024.smartadmin.service.common.util;
|
||||
|
||||
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;
|
||||
|
@ -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.ExcelImportUtil;
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.util;
|
||||
package net.lab1024.smartadmin.service.common.util;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
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.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.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.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.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 org.apache.commons.collections4.CollectionUtils;
|
||||
|
||||
@ -23,10 +23,10 @@ public class SmartPageUtil {
|
||||
* @param baseDTO
|
||||
* @return
|
||||
*/
|
||||
public static Page<?> convert2PageQuery(PageBaseDTO baseDTO) {
|
||||
public static Page<?> convert2PageQuery(PageParamDTO baseDTO) {
|
||||
Page<?> page = new Page<>(baseDTO.getPageNum(), baseDTO.getPageSize());
|
||||
// 设置排序字段
|
||||
List<PageBaseDTO.SortItemDTO> sortItemList = baseDTO.getSortItemList();
|
||||
List<PageParamDTO.SortItemDTO> sortItemList = baseDTO.getSortItemList();
|
||||
if (CollectionUtils.isNotEmpty(sortItemList)) {
|
||||
List<OrderItem> orderItemList = sortItemList.stream().map(e -> new OrderItem(e.getColumn(), e.getIsAsc())).collect(Collectors.toList());
|
||||
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.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;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.util;
|
||||
package net.lab1024.smartadmin.service.common.util;
|
||||
|
||||
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;
|
||||
|
@ -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.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.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.xssf.usermodel.XSSFWorkbook;
|
@ -1,4 +1,4 @@
|
||||
package net.lab1024.smartadmin.service.util.excel;
|
||||
package net.lab1024.smartadmin.service.common.util.excel;
|
||||
|
||||
/**
|
||||
* @author 卓大
|
@ -1,11 +1,11 @@
|
||||
package net.lab1024.smartadmin.service.util.excel;
|
||||
package net.lab1024.smartadmin.service.common.util.excel;
|
||||
|
||||
/**
|
||||
* @author 卓大
|
||||
* @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.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;
|
@ -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.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.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.ser.LocalDateSerializer;
|
||||
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
|
||||
import net.lab1024.smartadmin.service.util.date.SmartDateFormatterEnum;
|
||||
import net.lab1024.smartadmin.service.util.date.SmartLocalDateUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.date.SmartDateFormatterEnum;
|
||||
import net.lab1024.smartadmin.service.common.util.date.SmartLocalDateUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
@ -1,8 +1,8 @@
|
||||
package net.lab1024.smartadmin.service.config;
|
||||
|
||||
import net.lab1024.smartadmin.service.common.security.SmartSecurityUrlMatchers;
|
||||
import net.lab1024.smartadmin.service.filter.SmartSecurityTokenFilter;
|
||||
import net.lab1024.smartadmin.service.common.security.SmartSecurityAuthenticationFailHandler;
|
||||
import net.lab1024.smartadmin.service.common.security.SecurityUrlMatchers;
|
||||
import net.lab1024.smartadmin.service.filter.SecurityTokenFilter;
|
||||
import net.lab1024.smartadmin.service.common.security.SecurityAuthenticationFailHandler;
|
||||
import net.lab1024.smartadmin.service.module.system.login.EmployeeLoginTokenService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@ -35,7 +35,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
||||
* url
|
||||
*/
|
||||
@Autowired
|
||||
private SmartSecurityUrlMatchers smartSecurityUrlMatchers;
|
||||
private SecurityUrlMatchers securityUrlMatchers;
|
||||
|
||||
/**
|
||||
* 获取TOKEN 解析类
|
||||
@ -70,27 +70,27 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
||||
// CSRF禁用,因为不使用session
|
||||
.csrf().disable()
|
||||
// 认证失败处理类
|
||||
.exceptionHandling().authenticationEntryPoint(new SmartSecurityAuthenticationFailHandler()).and()
|
||||
.exceptionHandling().authenticationEntryPoint(new SecurityAuthenticationFailHandler()).and()
|
||||
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
|
||||
// 过滤请求
|
||||
.authorizeRequests();
|
||||
//可以匿名登录的URL
|
||||
String [] anonymousUrlArray = smartSecurityUrlMatchers.getAnonymousUrlArray();
|
||||
String [] anonymousUrlArray = securityUrlMatchers.getAnonymousUrlArray();
|
||||
interceptUrlRegistry.antMatchers(anonymousUrlArray).permitAll();
|
||||
|
||||
//登录的URL
|
||||
String [] authenticatedUrlArray = smartSecurityUrlMatchers.getAuthenticatedUrlArray();
|
||||
String [] authenticatedUrlArray = securityUrlMatchers.getAuthenticatedUrlArray();
|
||||
interceptUrlRegistry.antMatchers(authenticatedUrlArray).authenticated();
|
||||
|
||||
httpSecurity.addFilterBefore(new SmartSecurityTokenFilter(loginTokenService), UsernamePasswordAuthenticationFilter.class);
|
||||
httpSecurity.addFilterBefore(corsFilter(), SmartSecurityTokenFilter.class);
|
||||
httpSecurity.addFilterBefore(new SecurityTokenFilter(loginTokenService), UsernamePasswordAuthenticationFilter.class);
|
||||
httpSecurity.addFilterBefore(corsFilter(), SecurityTokenFilter.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configure(WebSecurity web) {
|
||||
// 忽略url
|
||||
WebSecurity.IgnoredRequestConfigurer ignoring = web.ignoring();
|
||||
List<String> ignoreUrlListList = smartSecurityUrlMatchers.getIgnoreUrl();
|
||||
List<String> ignoreUrlListList = securityUrlMatchers.getIgnoreUrl();
|
||||
for (String url : ignoreUrlListList) {
|
||||
ignoring.antMatchers(url);
|
||||
}
|
||||
|
@ -1,10 +1,8 @@
|
||||
package net.lab1024.smartadmin.service.config;
|
||||
|
||||
import net.lab1024.smartadmin.service.common.security.SmartSecurityMetadataSource;
|
||||
import net.lab1024.smartadmin.service.common.security.SmartSecurityUrlMatchers;
|
||||
import net.lab1024.smartadmin.service.common.security.SecurityMetadataSource;
|
||||
import net.lab1024.smartadmin.service.common.security.SecurityUrlMatchers;
|
||||
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.method.MethodSecurityMetadataSource;
|
||||
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 {
|
||||
|
||||
@Autowired
|
||||
private SmartSecurityUrlMatchers smartSecurityUrlMatchers;
|
||||
private SecurityUrlMatchers securityUrlMatchers;
|
||||
|
||||
@Override
|
||||
public MethodSecurityMetadataSource customMethodSecurityMetadataSource(){
|
||||
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 net.lab1024.smartadmin.service.common.constant.RequestHeaderConst;
|
||||
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 org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeansException;
|
||||
|
@ -1,8 +1,8 @@
|
||||
package net.lab1024.smartadmin.service.config;
|
||||
|
||||
import net.lab1024.smartadmin.service.common.enumconst.SystemEnvironmentEnum;
|
||||
import net.lab1024.smartadmin.service.common.domain.SystemEnvironmentBO;
|
||||
import net.lab1024.smartadmin.service.util.SmartBaseEnumUtil;
|
||||
import net.lab1024.smartadmin.service.common.enumeration.SystemEnvironmentEnum;
|
||||
import net.lab1024.smartadmin.service.common.domain.SystemEnvironment;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBaseEnumUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
@ -30,12 +30,12 @@ public class SystemEnvironmentConfig implements Condition {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public SystemEnvironmentBO initEnvironment() {
|
||||
public SystemEnvironment initEnvironment() {
|
||||
SystemEnvironmentEnum currentEnvironment = SmartBaseEnumUtil.getEnumByValue(systemEnvironment, SystemEnvironmentEnum.class);
|
||||
if (currentEnvironment == null) {
|
||||
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;
|
||||
|
||||
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.domain.EmployeeLoginBO;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@ -24,13 +24,11 @@ import java.io.IOException;
|
||||
* @date
|
||||
*/
|
||||
|
||||
public class SmartSecurityTokenFilter extends OncePerRequestFilter {
|
||||
|
||||
private static final String TOKEN_NAME = "x-access-token";
|
||||
public class SecurityTokenFilter extends OncePerRequestFilter {
|
||||
|
||||
private EmployeeLoginTokenService loginTokenService;
|
||||
|
||||
public SmartSecurityTokenFilter(EmployeeLoginTokenService loginTokenService) {
|
||||
public SecurityTokenFilter(EmployeeLoginTokenService loginTokenService) {
|
||||
this.loginTokenService = loginTokenService;
|
||||
}
|
||||
|
||||
@ -38,8 +36,8 @@ public class SmartSecurityTokenFilter extends OncePerRequestFilter {
|
||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
|
||||
throws ServletException, IOException {
|
||||
//需要做token校验, 消息头的token优先于请求query参数的token
|
||||
String xHeaderToken = request.getHeader(TOKEN_NAME);
|
||||
String xRequestToken = request.getParameter(TOKEN_NAME);
|
||||
String xHeaderToken = request.getHeader(RequestHeaderConst.TOKEN);
|
||||
String xRequestToken = request.getParameter(RequestHeaderConst.TOKEN);
|
||||
String xAccessToken = null != xHeaderToken ? xHeaderToken : xRequestToken;
|
||||
if (StringUtils.isBlank(xAccessToken)) {
|
||||
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.ApiOperation;
|
||||
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.module.business.category.domain.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -20,7 +20,7 @@ import java.util.List;
|
||||
*/
|
||||
@Api(tags = SwaggerTagConst.Admin.MANAGER_CATEGORY)
|
||||
@RestController
|
||||
public class CategoryController extends AdminBaseController {
|
||||
public class CategoryController extends SystemBaseController {
|
||||
|
||||
@Autowired
|
||||
private CategoryService categoryService;
|
||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.business.category;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
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.CategorySimpleDTO;
|
||||
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.key.CacheKey;
|
||||
import net.lab1024.smartadmin.service.module.support.beancache.anno.CacheLoad;
|
||||
import net.lab1024.smartadmin.service.util.SmartBeanUtil;
|
||||
import net.lab1024.smartadmin.service.util.SmartStringUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartStringUtil;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.collections4.MapUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -63,7 +63,7 @@ public class CategoryQueryService {
|
||||
* 左边 categoryId 右边 type
|
||||
*/
|
||||
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;
|
||||
return categoryDao.queryByParentId(Lists.newArrayList(Long.valueOf(split[0])), categoryType, false);
|
||||
}
|
||||
@ -76,7 +76,7 @@ public class CategoryQueryService {
|
||||
* @return
|
||||
*/
|
||||
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) {
|
||||
if (null == categoryId) {
|
||||
return CommonConst.EMPTY_LIST;
|
||||
return StringConst.EMPTY_LIST;
|
||||
}
|
||||
String cacheKey = CacheKey.cacheKey(CacheModuleConst.Category.CATEGORY_SUB, getCacheId(categoryId, categoryType));
|
||||
return cache.get(cacheKey);
|
||||
@ -132,7 +132,7 @@ public class CategoryQueryService {
|
||||
*/
|
||||
public Map<Long, CategoryEntity> queryCategoryList(List<Long> categoryIdList) {
|
||||
if (CollectionUtils.isEmpty(categoryIdList)) {
|
||||
return CommonConst.EMPTY_MAP;
|
||||
return StringConst.EMPTY_MAP;
|
||||
}
|
||||
categoryIdList = categoryIdList.stream().distinct().collect(Collectors.toList());
|
||||
|
||||
@ -161,7 +161,7 @@ public class CategoryQueryService {
|
||||
*/
|
||||
public List<Long> queryCategorySubId(List<Long> categoryIdList) {
|
||||
if (CollectionUtils.isEmpty(categoryIdList)) {
|
||||
return CommonConst.EMPTY_LIST;
|
||||
return StringConst.EMPTY_LIST;
|
||||
}
|
||||
// 查询所有子类
|
||||
Map<Long, List<CategoryEntity>> subTypeMap = this.querySubCategoryFromCache(categoryIdList);
|
||||
@ -236,7 +236,7 @@ public class CategoryQueryService {
|
||||
childrenVOList.forEach(item -> {
|
||||
item.setLabel(item.getCategoryName());
|
||||
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);
|
||||
@ -266,7 +266,7 @@ public class CategoryQueryService {
|
||||
CategorySimpleDTO categoryDTO = new CategorySimpleDTO();
|
||||
categoryDTO.setCategoryId(categoryId);
|
||||
categoryDTO.setCategoryName(categoryEntity.getCategoryName());
|
||||
categoryDTO.setCategoryFullName(SmartStringUtil.join(nameList, CommonConst.SEPARATOR_SLASH));
|
||||
categoryDTO.setCategoryFullName(SmartStringUtil.join(nameList, StringConst.SEPARATOR_SLASH));
|
||||
categoryDTO.setParentId(categoryEntity.getParentId());
|
||||
return categoryDTO;
|
||||
}
|
||||
@ -288,7 +288,7 @@ public class CategoryQueryService {
|
||||
// 父级始终放在第一位
|
||||
parentCategoryList.add(0, categoryEntity);
|
||||
Long parentId = categoryEntity.getParentId();
|
||||
if (Objects.equals(CommonConst.DEFAULT_PARENT_ID, parentId)) {
|
||||
if (Objects.equals(StringConst.DEFAULT_PARENT_ID, parentId)) {
|
||||
return parentCategoryList;
|
||||
}
|
||||
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 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.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.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -43,9 +43,9 @@ public class CategoryService {
|
||||
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.setSort(null == addDTO.getSort() ? CommonConst.ZERO : addDTO.getSort());
|
||||
categoryEntity.setSort(null == addDTO.getSort() ? StringConst.ZERO : addDTO.getSort());
|
||||
categoryEntity.setDeletedFlag(false);
|
||||
|
||||
// 保存数据
|
||||
@ -106,7 +106,7 @@ public class CategoryService {
|
||||
if (Objects.equals(categoryEntity.getCategoryId(), parentId)) {
|
||||
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);
|
||||
if (!optional.isPresent()) {
|
||||
return ResponseDTO.error(UserErrorCode.DATA_NOT_EXIST, "父级类目不存在~");
|
||||
@ -120,7 +120,7 @@ public class CategoryService {
|
||||
|
||||
} else {
|
||||
// 如果没有父类 使用默认父类
|
||||
parentId = CommonConst.DEFAULT_PARENT_ID;
|
||||
parentId = StringConst.DEFAULT_PARENT_ID;
|
||||
}
|
||||
|
||||
// 校验同父类下 名称是否重复
|
||||
@ -169,7 +169,7 @@ public class CategoryService {
|
||||
if (null == queryDTO.getCategoryType()) {
|
||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "类目类型不能为空");
|
||||
}
|
||||
queryDTO.setParentId(CommonConst.DEFAULT_PARENT_ID);
|
||||
queryDTO.setParentId(StringConst.DEFAULT_PARENT_ID);
|
||||
}
|
||||
List<CategoryTreeVO> treeList = categoryQueryService.queryCategoryTree(queryDTO);
|
||||
return ResponseDTO.ok(treeList);
|
||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.business.category.constant;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
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.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.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||
import net.lab1024.smartadmin.service.module.business.goods.domain.*;
|
||||
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.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
@ -24,7 +24,7 @@ import javax.validation.Valid;
|
||||
*/
|
||||
@Api(tags = SwaggerTagConst.Admin.MANAGER_GOODS)
|
||||
@RestController
|
||||
public class GoodsController extends AdminBaseController {
|
||||
public class GoodsController extends SystemBaseController {
|
||||
|
||||
@Autowired
|
||||
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.domain.CategoryEntity;
|
||||
import net.lab1024.smartadmin.service.module.business.goods.domain.*;
|
||||
import net.lab1024.smartadmin.service.util.SmartBeanUtil;
|
||||
import net.lab1024.smartadmin.service.util.SmartPageUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartPageUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.business.goods.constant;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
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 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.module.business.goods.constant.GoodsTypeEnum;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
@ -14,7 +14,7 @@ import org.hibernate.validator.constraints.Length;
|
||||
* @date 2021/8/5 14:42
|
||||
*/
|
||||
@Data
|
||||
public class GoodsQueryDTO extends PageBaseDTO {
|
||||
public class GoodsQueryDTO extends PageParamDTO {
|
||||
|
||||
@ApiModelPropertyEnum(desc = "商品类型|可选", value = GoodsTypeEnum.class)
|
||||
private Integer goodsType;
|
||||
|
@ -3,14 +3,14 @@ package net.lab1024.smartadmin.service.module.business.notice;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import net.lab1024.smartadmin.service.common.swagger.SwaggerTagConst;
|
||||
import net.lab1024.smartadmin.service.common.controller.AdminBaseController;
|
||||
import net.lab1024.smartadmin.service.common.domain.PageBaseDTO;
|
||||
import net.lab1024.smartadmin.service.common.controller.SystemBaseController;
|
||||
import net.lab1024.smartadmin.service.common.domain.PageParamDTO;
|
||||
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
||||
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.vo.NoticeDetailVO;
|
||||
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.web.bind.annotation.*;
|
||||
|
||||
@ -24,7 +24,7 @@ import javax.validation.Valid;
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = {SwaggerTagConst.Admin.MANAGER_NOTICE})
|
||||
public class NoticeController extends AdminBaseController {
|
||||
public class NoticeController extends SystemBaseController {
|
||||
|
||||
@Autowired
|
||||
private NoticeService noticeService;
|
||||
@ -44,7 +44,7 @@ public class NoticeController extends AdminBaseController {
|
||||
|
||||
@ApiOperation(value = "分页查询未读消息", notes = "@author 罗伊")
|
||||
@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());
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@ package net.lab1024.smartadmin.service.module.business.notice;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
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.ResponseDTO;
|
||||
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.vo.NoticeDetailVO;
|
||||
import net.lab1024.smartadmin.service.module.business.notice.domain.vo.NoticeVO;
|
||||
import net.lab1024.smartadmin.service.util.SmartBeanUtil;
|
||||
import net.lab1024.smartadmin.service.util.SmartPageUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartPageUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -74,7 +74,7 @@ public class NoticeService {
|
||||
* @param queryDTO
|
||||
* @return
|
||||
*/
|
||||
public ResponseDTO<PageResultDTO<NoticeVO>> queryUnreadByPage(PageBaseDTO queryDTO, Long employeeId) {
|
||||
public ResponseDTO<PageResultDTO<NoticeVO>> queryUnreadByPage(PageParamDTO queryDTO, Long employeeId) {
|
||||
Page page = SmartPageUtil.convert2PageQuery(queryDTO);
|
||||
List<NoticeVO> dtoList = noticeDao.queryUnreadByPage(page, employeeId, true);
|
||||
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 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 罗伊
|
||||
*/
|
||||
@Data
|
||||
public class NoticeQueryDTO extends PageBaseDTO {
|
||||
public class NoticeQueryDTO extends PageParamDTO {
|
||||
|
||||
|
||||
@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.FieldSqlValue;
|
||||
import net.lab1024.smartadmin.service.third.SmartApplicationContext;
|
||||
import net.lab1024.smartadmin.service.util.SmartBaseEnumUtil;
|
||||
import net.lab1024.smartadmin.service.util.SmartBigDecimalUtil;
|
||||
import net.lab1024.smartadmin.service.util.date.SmartDateFormatterEnum;
|
||||
import net.lab1024.smartadmin.service.util.date.SmartLocalDateUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBaseEnumUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBigDecimalUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.date.SmartDateFormatterEnum;
|
||||
import net.lab1024.smartadmin.service.common.util.date.SmartLocalDateUtil;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -1,6 +1,6 @@
|
||||
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.Retention;
|
||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.support.captcha;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
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.controller.SupportBaseController;
|
||||
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 net.lab1024.smartadmin.service.common.code.SystemErrorCode;
|
||||
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.domain.ResponseDTO;
|
||||
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" );
|
||||
}
|
||||
// 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 redisCode = redisService.get(redisKey);
|
||||
if (StringUtils.isBlank(redisCode)) {
|
||||
return ResponseDTO.error(UserErrorCode.VERIFICATION_CODE_INVALID, "验证码错误或已过期,请刷新重试" );
|
||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "验证码错误或已过期,请刷新重试" );
|
||||
}
|
||||
if (!Objects.equals(redisCode, captcha)) {
|
||||
return ResponseDTO.error(UserErrorCode.VERIFICATION_CODE_INVALID, "验证码错误或已过期,请刷新重试" );
|
||||
return ResponseDTO.error(UserErrorCode.PARAM_ERROR, "验证码错误或已过期,请刷新重试" );
|
||||
}
|
||||
// 校验通过 移除
|
||||
redisService.del(redisKey);
|
||||
@ -93,6 +93,6 @@ public class CaptchaService {
|
||||
}
|
||||
|
||||
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
|
||||
*/
|
||||
@Data
|
||||
public class CaptchaDTO {
|
||||
public class CaptchaForm {
|
||||
|
||||
@ApiModelProperty
|
||||
@NotBlank(message = "验证码标识不能为空" )
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.support.datatracer;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
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.ResponseDTO;
|
||||
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})
|
||||
@RestController
|
||||
public class DataTracerController extends AdminBaseController {
|
||||
public class DataTracerController extends SystemBaseController {
|
||||
|
||||
@Autowired
|
||||
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.DataTracerQueryForm;
|
||||
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.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.support.datatracer.constant;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
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.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;
|
||||
|
||||
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 java.time.LocalDateTime;
|
||||
|
@ -2,7 +2,7 @@ package net.lab1024.smartadmin.service.module.support.datatracer.domain;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
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.module.support.datatracer.constant.DataTracerBusinessTypeEnum;
|
||||
|
||||
@ -15,7 +15,7 @@ import javax.validation.constraints.NotNull;
|
||||
* @date 2021/8/17 8:47
|
||||
*/
|
||||
@Data
|
||||
public class DataTracerQueryForm extends PageBaseDTO {
|
||||
public class DataTracerQueryForm extends PageParamDTO {
|
||||
|
||||
@ApiModelPropertyEnum(DataTracerBusinessTypeEnum.class)
|
||||
private Integer businessType;
|
||||
|
@ -2,7 +2,7 @@ package net.lab1024.smartadmin.service.module.support.file.domain;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
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;
|
||||
|
||||
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.module.support.file.domain.FileFolderTypeEnum;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@ -13,7 +13,7 @@ import lombok.Data;
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Data
|
||||
public class FileQueryDTO extends PageBaseDTO {
|
||||
public class FileQueryDTO extends PageParamDTO {
|
||||
|
||||
@ApiModelProperty(value = "文件名称")
|
||||
private String fileName;
|
||||
|
@ -5,8 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.google.common.collect.Lists;
|
||||
import net.lab1024.smartadmin.service.common.code.SystemErrorCode;
|
||||
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
||||
import net.lab1024.smartadmin.service.common.constant.CommonConst;
|
||||
import net.lab1024.smartadmin.service.common.constant.NumberLimitConst;
|
||||
import net.lab1024.smartadmin.service.common.constant.StringConst;
|
||||
import net.lab1024.smartadmin.service.common.constant.RedisKeyConst;
|
||||
import net.lab1024.smartadmin.service.common.domain.PageResultDTO;
|
||||
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.FileVO;
|
||||
import net.lab1024.smartadmin.service.third.SmartRedisService;
|
||||
import net.lab1024.smartadmin.service.util.SmartBaseEnumUtil;
|
||||
import net.lab1024.smartadmin.service.util.SmartBeanUtil;
|
||||
import net.lab1024.smartadmin.service.util.SmartPageUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBaseEnumUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartPageUtil;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -48,6 +47,11 @@ import java.util.stream.Collectors;
|
||||
@Service
|
||||
public class FileService {
|
||||
|
||||
/**
|
||||
* 文件名最大长度
|
||||
*/
|
||||
private static final int FILE_NAME_MAX_LENGTH = 100;
|
||||
|
||||
@Resource
|
||||
private IFileStorageService fileStorageService;
|
||||
|
||||
@ -99,7 +103,7 @@ public class FileService {
|
||||
}
|
||||
// 校验文件名称
|
||||
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, "上传文件名称不能为空");
|
||||
}
|
||||
// 校验文件大小
|
||||
@ -126,10 +130,10 @@ public class FileService {
|
||||
fileDao.insert(fileEntity);
|
||||
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());
|
||||
|
||||
String fileRedisKey = RedisKeyConst.Base.FILE_VO + uploadVO.getFileKey();
|
||||
String fileRedisKey = RedisKeyConst.Support.FILE_VO + uploadVO.getFileKey();
|
||||
FileVO fileVO = SmartBeanUtil.copy(fileEntity, FileVO.class);
|
||||
redisService.set(fileRedisKey, fileVO, fileStorageService.cacheExpireSecond());
|
||||
}
|
||||
@ -152,7 +156,7 @@ public class FileService {
|
||||
}
|
||||
|
||||
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);
|
||||
if (fileVO == null) {
|
||||
fileVO = fileDao.getByFileKey(fileKey);
|
||||
@ -177,15 +181,15 @@ public class FileService {
|
||||
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());
|
||||
String result = StringUtils.join(stringList, CommonConst.SEPARATOR_CHAR);
|
||||
String result = StringUtils.join(stringList, StringConst.SEPARATOR_CHAR);
|
||||
return ResponseDTO.ok(result);
|
||||
}
|
||||
|
||||
|
||||
private String getCacheUrl(String fileKey) {
|
||||
String redisKey = RedisKeyConst.Base.FILE_URL + fileKey;
|
||||
String redisKey = RedisKeyConst.Support.FILE_URL + fileKey;
|
||||
String fileUrl = redisService.get(redisKey);
|
||||
if (null != fileUrl) {
|
||||
return fileUrl;
|
||||
@ -212,9 +216,9 @@ public class FileService {
|
||||
List<String> fileKeyList = queryDTO.getFileKeyList();
|
||||
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());
|
||||
String result = StringUtils.join(stringList, CommonConst.SEPARATOR_CHAR);
|
||||
String result = StringUtils.join(stringList, StringConst.SEPARATOR_CHAR);
|
||||
return new FileUrlResultDTO(fileKey, result);
|
||||
}).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.module.support.file.domain.dto.FileDownloadDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.file.domain.vo.FileUploadVO;
|
||||
import net.lab1024.smartadmin.service.util.date.SmartDateFormatterEnum;
|
||||
import net.lab1024.smartadmin.service.util.date.SmartLocalDateUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.date.SmartDateFormatterEnum;
|
||||
import net.lab1024.smartadmin.service.common.util.date.SmartLocalDateUtil;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
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.ApiOperation;
|
||||
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.ResponseDTO;
|
||||
import net.lab1024.smartadmin.service.common.controller.SupportBaseController;
|
||||
@ -24,8 +24,8 @@ public class HeartBeatController extends SupportBaseController {
|
||||
|
||||
@PostMapping("/heartBeat/query")
|
||||
@ApiOperation("查询心跳记录 @author 卓大")
|
||||
public ResponseDTO<PageResultDTO<HeartBeatRecordVO>> query(@RequestBody @Valid PageBaseDTO pageBaseDTO) {
|
||||
return heartBeatService.pageQuery(pageBaseDTO);
|
||||
public ResponseDTO<PageResultDTO<HeartBeatRecordVO>> query(@RequestBody @Valid PageParamDTO pageParamDTO) {
|
||||
return heartBeatService.pageQuery(pageParamDTO);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ package net.lab1024.smartadmin.service.module.support.heartbeat;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
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.util.SmartBeanUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
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 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.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.stereotype.Service;
|
||||
|
||||
@ -24,8 +24,8 @@ public class HeartBeatService {
|
||||
private HeartBeatRecordDao heartBeatRecordDao;
|
||||
|
||||
|
||||
public ResponseDTO<PageResultDTO<HeartBeatRecordVO>> pageQuery(PageBaseDTO pageBaseDTO) {
|
||||
Page pageQueryInfo = SmartPageUtil.convert2PageQuery(pageBaseDTO);
|
||||
public ResponseDTO<PageResultDTO<HeartBeatRecordVO>> pageQuery(PageParamDTO pageParamDTO) {
|
||||
Page pageQueryInfo = SmartPageUtil.convert2PageQuery(pageParamDTO);
|
||||
List<HeartBeatRecordVO> recordVOList = heartBeatRecordDao.pageQuery(pageQueryInfo);
|
||||
PageResultDTO<HeartBeatRecordVO> pageResultDTO = SmartPageUtil.convert2PageResult(pageQueryInfo, recordVOList);
|
||||
return ResponseDTO.ok(pageResultDTO);
|
||||
|
@ -1,6 +1,6 @@
|
||||
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 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.swagger.SwaggerTagConst;
|
||||
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.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
@ -33,7 +34,7 @@ public class IdGeneratorController extends SupportBaseController {
|
||||
if (null == idGeneratorEnum) {
|
||||
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.Getter;
|
||||
import net.lab1024.smartadmin.service.common.enumconst.BaseEnum;
|
||||
import net.lab1024.smartadmin.service.common.enumeration.BaseEnum;
|
||||
|
||||
/**
|
||||
* id生成枚举类
|
||||
|
@ -2,7 +2,7 @@ package net.lab1024.smartadmin.service.module.support.idgenerator.constant;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
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 net.lab1024.smartadmin.service.common.code.UnexpectedErrorCode;
|
||||
import net.lab1024.smartadmin.service.common.code.UserErrorCode;
|
||||
import net.lab1024.smartadmin.service.common.constant.RedisKeyConst;
|
||||
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.IdGeneratorRuleTypeEnum;
|
||||
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.third.SmartRedisService;
|
||||
import net.lab1024.smartadmin.service.util.SmartRandomUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -55,26 +57,19 @@ public class IdGeneratorService {
|
||||
/**
|
||||
* id 生成器
|
||||
*
|
||||
* @param idGeneratorEnum
|
||||
* @param idGeneratorEnum 类型
|
||||
* @return
|
||||
*/
|
||||
public ResponseDTO<String> generate(IdGeneratorEnum idGeneratorEnum) {
|
||||
public String generate(IdGeneratorEnum idGeneratorEnum) {
|
||||
int generatorId = idGeneratorEnum.getValue();
|
||||
IdGeneratorEntity idGeneratorEntity = this.idGeneratorMap.get(generatorId);
|
||||
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();
|
||||
int monthValue = now.getMonthValue();
|
||||
int dayOfMonth = now.getDayOfMonth();
|
||||
|
||||
String lockKey = RedisKeyConst.Base.ID_GENERATOR + idGeneratorEnum.getDesc();
|
||||
|
||||
try {
|
||||
// 获取全局唯一锁
|
||||
String lockKey = RedisKeyConst.Support.ID_GENERATOR + idGeneratorEnum.getDesc();
|
||||
boolean lock = false;
|
||||
|
||||
for (int i = 0; i < MAX_GET_LOCK_COUNT; i++) {
|
||||
try {
|
||||
//60秒
|
||||
@ -87,12 +82,16 @@ public class IdGeneratorService {
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
if (!lock) {
|
||||
return ResponseDTO.error(UnexpectedErrorCode.BUSINESS_HANDING);
|
||||
throw new BusinessException("IdGenerator, 生成器繁忙,无法处理: " + idGeneratorEnum.getDesc());
|
||||
}
|
||||
|
||||
try {
|
||||
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);
|
||||
if (generatorRecordDTO == null) {
|
||||
@ -128,7 +127,7 @@ public class IdGeneratorService {
|
||||
String prefix = StringUtils.isBlank(idGeneratorEntity.getPrefix()) ? StringUtils.EMPTY : idGeneratorEntity.getPrefix();
|
||||
|
||||
lastSleepMilliSeconds = System.currentTimeMillis() - beginTime + 100;
|
||||
return ResponseDTO.ok(prefix + nowFormat + finalId);
|
||||
return prefix + nowFormat + finalId;
|
||||
} catch (Throwable e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw e;
|
@ -2,14 +2,16 @@ package net.lab1024.smartadmin.service.module.support.operatelog;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
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.domain.PageResultDTO;
|
||||
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.OperateLogQueryDTO;
|
||||
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);
|
||||
}
|
||||
|
||||
@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.dto.OperateLogDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.OperateLogQueryDTO;
|
||||
import net.lab1024.smartadmin.service.util.SmartBeanUtil;
|
||||
import net.lab1024.smartadmin.service.util.SmartPageUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartBeanUtil;
|
||||
import net.lab1024.smartadmin.service.common.util.SmartPageUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -53,7 +53,6 @@ public class OperateLogService {
|
||||
* @description 编辑
|
||||
* @date 2019-05-15 11:32:14
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public ResponseDTO<String> update(OperateLogDTO updateDTO) {
|
||||
OperateLogEntity entity = SmartBeanUtil.copy(updateDTO, OperateLogEntity.class);
|
||||
operateLogDao.updateById(entity);
|
||||
@ -65,7 +64,6 @@ public class OperateLogService {
|
||||
* @description 删除
|
||||
* @date 2019-05-15 11:32:14
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public ResponseDTO<String> delete(Long id) {
|
||||
operateLogDao.deleteById(id);
|
||||
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.*;
|
||||
|
@ -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.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.SmartOperateLogConfigDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.operatelog.domain.dto.SmartOperateLogUserDTO;
|
||||
import net.lab1024.smartadmin.service.module.support.operatelog.OperateLogDao;
|
||||
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.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.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -35,11 +36,11 @@ import java.util.concurrent.ThreadPoolExecutor;
|
||||
*/
|
||||
@Slf4j
|
||||
@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 SmartOperateLogConfigDTO smartLogConfig;
|
||||
private OperateLogConfigDTO smartLogConfig;
|
||||
|
||||
/**
|
||||
* 线程池
|
||||
@ -49,8 +50,8 @@ public class SmartOperateLogAspect {
|
||||
/**
|
||||
* 构造方法
|
||||
*/
|
||||
public SmartOperateLogAspect(SmartOperateLogConfigDTO smartOperateLogConfigDTO) {
|
||||
smartLogConfig = smartOperateLogConfigDTO;
|
||||
public OperateLogAspect(OperateLogConfigDTO operateLogConfigDTO) {
|
||||
smartLogConfig = operateLogConfigDTO;
|
||||
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();
|
||||
if (null != configDTO.getCorePoolSize()) {
|
||||
corePoolSize = configDTO.getCorePoolSize();
|
||||
@ -175,7 +176,7 @@ public class SmartOperateLogAspect {
|
||||
return;
|
||||
}
|
||||
//设置用户信息
|
||||
SmartOperateLogUserDTO user = smartLogConfig.getUserFunction().apply(request);
|
||||
OperateLogUserDTO user = smartLogConfig.getUserFunction().apply(request);
|
||||
if (user == null) {
|
||||
return;
|
||||
}
|
@ -16,12 +16,12 @@ import java.util.function.Supplier;
|
||||
*/
|
||||
@Data
|
||||
@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;
|
||||
|
||||
import net.lab1024.smartadmin.service.common.domain.PageBaseDTO;
|
||||
import net.lab1024.smartadmin.service.common.domain.PageParamDTO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@ -10,7 +10,7 @@ import lombok.Data;
|
||||
* @author 罗伊
|
||||
*/
|
||||
@Data
|
||||
public class OperateLogQueryDTO extends PageBaseDTO {
|
||||
public class OperateLogQueryDTO extends PageParamDTO {
|
||||
|
||||
|
||||
@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