xda 3 år sedan
förälder
incheckning
1d8487538d

+ 2 - 18
pom.xml

@@ -120,26 +120,11 @@
             <version>0.0.1-SNAPSHOT</version>
         </dependency>
 
-
-        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-collections4</artifactId>
-            <version>4.4</version>
-        </dependency>
-
-        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-            <version>3.11</version>
-        </dependency>
-
         <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
-            <version>1.2.75</version>
+            <version>1.2.80</version>
         </dependency>
         <dependency>
             <groupId>com.xuxueli</groupId>
@@ -147,11 +132,10 @@
             <version>2.3.0</version>
         </dependency>
 
-        <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-core -->
         <dependency>
             <groupId>cn.hutool</groupId>
             <artifactId>hutool-core</artifactId>
-            <version>5.7.7</version>
+            <version>5.7.22</version>
         </dependency>
 
         <dependency>

+ 107 - 107
src/main/java/com/winhc/returnmoney/common/BaseController.java

@@ -1,107 +1,107 @@
-package com.winhc.returnmoney.common;
-
-import com.module.login.usersession.UserBean;
-import com.winhc.common.enums.CodeMsg;
-import com.winhc.common.exception.CommonException;
-import com.winhc.common.util.GSON;
-import com.winhc.returnmoney.enums.AppPackageEnum;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import java.util.Objects;
-
-/**
- * 所有Action的基础类.
- * 
- * @author
- */
-public abstract class BaseController {
-
-    private static final Log log = LogFactory.getLog(BaseController.class);
-
-
-    protected HttpServletResponse response;
-
-    public HttpSession getSession() {
-        return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes()))
-                .getRequest().getSession();
-    }
-
-    public HttpServletRequest getRequest() {
-        return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
-    }
-
-    public String getAppid() {
-        HttpServletRequest request = getRequest();
-        String appId = request.getHeader("appid");
-        return appId;
-    }
-
-    public String getSessionId() {
-        HttpServletRequest request = getRequest();
-        String sessionId = request.getHeader("sessionId");
-        return sessionId;
-    }
-
-    public void getApiInfo() {
-        HttpServletRequest request = getRequest();
-        String apiVersion = request.getHeader("apiVersion");
-        String sessionId = request.getHeader("sessionId");
-        String appId = request.getHeader("appid");
-        String osType = request.getHeader("osType");
-        String deviceId = request.getHeader("deviceId");
-        String brand = request.getHeader("brand");
-        String osVersion = request.getHeader("osVersion");
-        String appVersion = request.getHeader("appVersion");
-        String userInfo = request.getHeader("userInfo");
-        log.info(" *****************************************************************************************************"
-                + "*******************************************************************************************************************");
-        log.info(" userInfo :" + userInfo +",apiVersion :" + apiVersion + " ,sessionId: " + sessionId + " , appId: " + appId
-                + " ,osType: " + osType + " ,deviceId : " + deviceId + " , brand : " + brand
-                + " ,osVersion : " + osVersion + " , appVersion :" + appVersion);
-        log.info(" *****************************************************************************************************"
-                + "*******************************************************************************************************************");
-    }
-
-    /**
-     * 获取app版本
-     * @return java.lang.String
-     * @author xda
-     * @date 2021/5/6 14:20
-     */
-    public String getAppVersion() {
-        HttpServletRequest request = getRequest();
-        return request.getHeader("appVersion");
-    }
-
-    public UserBean getUser() {
-        HttpServletRequest request = getRequest();
-        String userInfo = request.getHeader("userInfo");
-        if (StringUtils.isEmpty(userInfo)) {
-            throw new CommonException(CodeMsg.UNAUTHORIZED);
-        }
-        UserBean user = GSON.fromJson(userInfo, UserBean.class);
-        if (Objects.isNull(user)) {
-            throw new CommonException(CodeMsg.UNAUTHORIZED);
-        }
-        log.info(String.format("userInfo:[%s]", GSON.toJSON(user)));
-        return user;
-    }
-
-    /**
-     * 获取包名
-     * @return java.lang.String
-     * @author xda
-     * @date 2021/10/21 09:26
-     */
-    public String getAppPackageName() {
-        return AppPackageEnum.getAppPackageEnum(getRequest().getHeader("appPackage")).getPackageName();
-    }
-
-}
+//package com.winhc.returnmoney.common;
+//
+//import com.module.login.usersession.UserBean;
+//import com.winhc.common.enums.CodeMsg;
+//import com.winhc.common.exception.CommonException;
+//import com.winhc.common.util.GSON;
+//import com.winhc.returnmoney.enums.AppPackageEnum;
+//import org.apache.commons.lang.StringUtils;
+//import org.apache.commons.logging.Log;
+//import org.apache.commons.logging.LogFactory;
+//import org.springframework.web.context.request.RequestContextHolder;
+//import org.springframework.web.context.request.ServletRequestAttributes;
+//
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//import javax.servlet.http.HttpSession;
+//import java.util.Objects;
+//
+///**
+// * 所有Action的基础类.
+// *
+// * @author
+// */
+//public abstract class BaseController {
+//
+//    private static final Log log = LogFactory.getLog(BaseController.class);
+//
+//
+//    protected HttpServletResponse response;
+//
+//    public HttpSession getSession() {
+//        return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes()))
+//                .getRequest().getSession();
+//    }
+//
+//    public HttpServletRequest getRequest() {
+//        return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+//    }
+//
+//    public String getAppid() {
+//        HttpServletRequest request = getRequest();
+//        String appId = request.getHeader("appid");
+//        return appId;
+//    }
+//
+//    public String getSessionId() {
+//        HttpServletRequest request = getRequest();
+//        String sessionId = request.getHeader("sessionId");
+//        return sessionId;
+//    }
+//
+//    public void getApiInfo() {
+//        HttpServletRequest request = getRequest();
+//        String apiVersion = request.getHeader("apiVersion");
+//        String sessionId = request.getHeader("sessionId");
+//        String appId = request.getHeader("appid");
+//        String osType = request.getHeader("osType");
+//        String deviceId = request.getHeader("deviceId");
+//        String brand = request.getHeader("brand");
+//        String osVersion = request.getHeader("osVersion");
+//        String appVersion = request.getHeader("appVersion");
+//        String userInfo = request.getHeader("userInfo");
+//        log.info(" *****************************************************************************************************"
+//                + "*******************************************************************************************************************");
+//        log.info(" userInfo :" + userInfo +",apiVersion :" + apiVersion + " ,sessionId: " + sessionId + " , appId: " + appId
+//                + " ,osType: " + osType + " ,deviceId : " + deviceId + " , brand : " + brand
+//                + " ,osVersion : " + osVersion + " , appVersion :" + appVersion);
+//        log.info(" *****************************************************************************************************"
+//                + "*******************************************************************************************************************");
+//    }
+//
+//    /**
+//     * 获取app版本
+//     * @return java.lang.String
+//     * @author xda
+//     * @date 2021/5/6 14:20
+//     */
+//    public String getAppVersion() {
+//        HttpServletRequest request = getRequest();
+//        return request.getHeader("appVersion");
+//    }
+//
+//    public UserBean getUser() {
+//        HttpServletRequest request = getRequest();
+//        String userInfo = request.getHeader("userInfo");
+//        if (StringUtils.isEmpty(userInfo)) {
+//            throw new CommonException(CodeMsg.UNAUTHORIZED);
+//        }
+//        UserBean user = GSON.fromJson(userInfo, UserBean.class);
+//        if (Objects.isNull(user)) {
+//            throw new CommonException(CodeMsg.UNAUTHORIZED);
+//        }
+//        log.info(String.format("userInfo:[%s]", GSON.toJSON(user)));
+//        return user;
+//    }
+//
+//    /**
+//     * 获取包名
+//     * @return java.lang.String
+//     * @author xda
+//     * @date 2021/10/21 09:26
+//     */
+//    public String getAppPackageName() {
+//        return AppPackageEnum.getAppPackageEnum(getRequest().getHeader("appPackage")).getPackageName();
+//    }
+//
+//}

+ 2 - 1
src/main/java/com/winhc/returnmoney/config/BeanConfig.java

@@ -10,6 +10,7 @@ import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
 import io.swagger.annotations.ApiOperation;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.data.redis.connection.RedisConnectionFactory;
@@ -61,7 +62,7 @@ public class BeanConfig {
     @Value("${xxl.job.admin.addresses}")
     private String adminAddress;
 
-
+    @ConditionalOnExpression("!'${WORK_ENV:}'.equals('LOCAL')")
     @Bean
     public XxlJobSpringExecutor xxlJobExecutor() {
         XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();

+ 95 - 0
src/main/java/com/winhc/returnmoney/config/ControllerAspect.java

@@ -0,0 +1,95 @@
+package com.winhc.returnmoney.config;
+
+
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.Signature;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.*;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+
+/**
+ * ControllerAspect
+ * @author xda
+ */
+@Aspect
+@Component
+public class ControllerAspect {
+
+    private static final long TIME_OUT = 800L;
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ControllerAspect.class);
+
+    @Pointcut("execution(* com.winhc.returnmoney.controller.*Controller.*(..))")
+    public void validAspect() {
+
+    }
+
+    @Around("validAspect()")
+    public Object aroundExecution(ProceedingJoinPoint joinPoint) throws Throwable {
+        long startTime = System.currentTimeMillis();
+        StringBuilder mappingRoute = new StringBuilder();
+        Object[] params = joinPoint.getArgs();
+        Signature signature = joinPoint.getSignature();
+        String methodName = "";
+        Annotation[] controllerAnnotations = signature.getDeclaringType().getDeclaredAnnotations();
+        for (Annotation a : controllerAnnotations){
+            if( a instanceof RequestMapping){
+                mappingRoute.append(((RequestMapping) a).value().length > 0 ? ((RequestMapping) a).value()[0] : ((RequestMapping) a).path()[0]);
+                break;
+            }
+        }
+        MethodSignature methodSignature = (MethodSignature) signature;
+        Method targetMethod = methodSignature.getMethod();
+        Annotation[] methodAnnotations = targetMethod.getDeclaredAnnotations();
+        for (Annotation a : methodAnnotations) {
+            if (a instanceof RequestMapping) {
+                mappingRoute.append(((RequestMapping) a).value().length > 0 ? ((RequestMapping) a).value()[0] : ((RequestMapping) a).path()[0]);
+                methodName = ((RequestMapping) a).method()[0].name();
+            }
+            if (a instanceof GetMapping) {
+                mappingRoute.append(((GetMapping) a).value().length > 0 ? ((GetMapping) a).value()[0] : ((GetMapping) a).path()[0]);
+                methodName = "GET";
+            }
+            if (a instanceof PutMapping) {
+                mappingRoute.append(((PutMapping) a).value().length > 0 ? ((PutMapping) a).value()[0] : ((PutMapping) a).path()[0]);
+                methodName = "PUT";
+            }
+            if (a instanceof PostMapping) {
+                mappingRoute.append(((PostMapping) a).value().length > 0 ? ((PostMapping) a).value()[0] : ((PostMapping) a).path()[0]);
+                methodName = "POST";
+            }
+            if (a instanceof DeleteMapping) {
+                mappingRoute.append(((DeleteMapping) a).value().length > 0 ? ((DeleteMapping) a).value()[0] : ((DeleteMapping) a).path()[0]);
+                methodName = "DELETE";
+            }
+        }
+        String requestInfo = "======>>>>>>requestInfo:" + mappingRoute + ",method:[" + methodName + "]" + "(" + StrUtil.repeatAndJoin("{}", params.length, ",") + ")";
+        LOGGER.info(requestInfo, params);
+        Object resp = null;
+        try{
+            resp = joinPoint.proceed(params);
+        }catch(Throwable e){
+            LOGGER.error( String.format("joinPoint.proceed 发生异常,参数 %s ", JSON.toJSONString(params)), e);
+            throw e;
+        }finally{
+            String responseInfo = "======>>>>>>responseInfo:{}";
+            long consumedTime = System.currentTimeMillis() - startTime;
+            if (consumedTime >= TIME_OUT) {
+                LOGGER.warn("=====>>>>>请求共花费{}ms.", consumedTime);
+            }
+            LOGGER.info(responseInfo, resp);
+        }
+        return resp;
+    }
+
+}

+ 21 - 0
src/main/java/com/winhc/returnmoney/config/MvcConfigurer.java

@@ -0,0 +1,21 @@
+package com.winhc.returnmoney.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @Description: MvcConfigurer
+ * @Author: xda
+ * @Date: 2022/3/31 17:10
+ */
+@Configuration
+public class MvcConfigurer implements WebMvcConfigurer {
+
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        // open接口在单独的controller
+        registry.addInterceptor(new UserContextInterceptor()).excludePathPatterns("/open**/**").order(0);
+    }
+}

+ 48 - 0
src/main/java/com/winhc/returnmoney/config/UserContextInterceptor.java

@@ -0,0 +1,48 @@
+package com.winhc.returnmoney.config;
+
+import com.alibaba.fastjson.JSON;
+import com.module.login.usersession.UserBean;
+import com.winhc.common.enums.CodeMsg;
+import com.winhc.common.exception.CommonException;
+import com.winhc.returnmoney.model.bo.UserContextBO;
+import com.winhc.returnmoney.util.UserContextUtil;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Objects;
+
+/**
+ * @Description: LoginInterceptor
+ * @Author: xda
+ * @Date: 2022/3/31 17:07
+ */
+public class UserContextInterceptor implements HandlerInterceptor {
+
+    public static final Logger LOGGER = LoggerFactory.getLogger(UserContextInterceptor.class);
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
+        // 保存用户信息到threadLocal
+        String userInfo = request.getHeader("userInfo");
+        if (StringUtils.isEmpty(userInfo)) {
+            throw new CommonException(CodeMsg.UNAUTHORIZED);
+        }
+        UserBean userBean = JSON.parseObject(userInfo, UserBean.class);
+        if (Objects.isNull(userBean)) {
+            throw new CommonException(CodeMsg.UNAUTHORIZED);
+        }
+        LOGGER.info("currentUser: [{}]", userInfo);
+        UserContextUtil.saveUser(UserContextBO.builderBO(userBean.getUserId(), request.getHeader("appVersion"), request.getHeader("appPackage")));
+        return true;
+    }
+
+
+    @Override
+    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
+        UserContextUtil.removeUser();
+    }
+}

+ 2 - 10
src/main/java/com/winhc/returnmoney/exception/ExceptionHandle.java

@@ -4,12 +4,10 @@ import com.winhc.common.base.BeanResponse;
 import com.winhc.common.enums.CodeMsg;
 import com.winhc.common.exception.CommonException;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.core.annotation.Order;
 import org.springframework.validation.BindException;
 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.bind.annotation.RestControllerAdvice;
 
 
 /**
@@ -17,9 +15,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
  * @author: yujie
  * @date 2019/4/24 10:07
  */
-@Order(1)
 @Slf4j
-@ControllerAdvice
+@RestControllerAdvice
 public class ExceptionHandle {
 
     /**
@@ -28,7 +25,6 @@ public class ExceptionHandle {
      * @return
      */
     @ExceptionHandler(value = Exception.class)
-    @ResponseBody
     public BeanResponse<Void> exceptionHandle(Exception exception) {
         log.error("系统异常", exception);
         return BeanResponse.error(CodeMsg.FAILED);
@@ -40,7 +36,6 @@ public class ExceptionHandle {
      * @return
      */
     @ExceptionHandler(value = CommonException.class)
-    @ResponseBody
     public BeanResponse<Void> commonExceptionHandle(CommonException commonException) {
         log.error("通用异常", commonException);
         return BeanResponse.error(CodeMsg.FAILED.getCode(), commonException.getMessage());
@@ -52,7 +47,6 @@ public class ExceptionHandle {
      * @return
      */
     @ExceptionHandler(value = BindException.class)
-    @ResponseBody
     public BeanResponse<Void> bindExceptionHandle(BindException bindException) {
         StringBuilder msgBuilder = new StringBuilder();
         bindException.getBindingResult().getFieldErrors().forEach(error -> msgBuilder.append(error.getDefaultMessage()));
@@ -70,7 +64,6 @@ public class ExceptionHandle {
      * @return
      */
     @ExceptionHandler(value = MethodArgumentNotValidException.class)
-    @ResponseBody
     public BeanResponse<Void> argumentNotValid(MethodArgumentNotValidException ex) {
         StringBuilder msgBuilder = new StringBuilder();
         //ex.getBindingResult().getFieldErrors().forEach(error -> msgBuilder.append(error.getField()).append(":")
@@ -89,7 +82,6 @@ public class ExceptionHandle {
      * @return
      */
     @ExceptionHandler(value = {IllegalArgumentException.class})
-    @ResponseBody
     public BeanResponse<Void> argumentException(RuntimeException ex) {
         log.error("IllegalArgumentException:" + ex.getMessage());
         return BeanResponse.error(CodeMsg.VALIDATE_PARAMETER.getCode(), ex.getMessage());

+ 27 - 0
src/main/java/com/winhc/returnmoney/model/bo/UserContextBO.java

@@ -0,0 +1,27 @@
+package com.winhc.returnmoney.model.bo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @Description: UserContextBO
+ * @Author: xda
+ * @Date: 2022/4/6 18:55
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserContextBO {
+
+    private Long userId;
+
+    private String appVersion;
+
+    private String appPackageName;
+
+
+    public static UserContextBO builderBO(Long userId, String appVersion, String appPackageName) {
+        return new UserContextBO(userId, appVersion, appPackageName);
+    }
+}

+ 0 - 88
src/main/java/com/winhc/returnmoney/util/AccountBookUtil.java

@@ -1,88 +0,0 @@
-package com.winhc.returnmoney.util;
-
-import com.alibaba.fastjson.JSON;
-import com.winhc.returnmoney.cloud.bean.CompanyBasicVO;
-import com.winhc.returnmoney.cloud.bean.ESCompany;
-import com.winhc.returnmoney.entity.AccountBill;
-import com.winhc.returnmoney.enums.Dict;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.time.LocalDate;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * @Description: LogoUtil
- * @Author: xda
- * @Date: 2020/12/17  16:48
- */
-public class AccountBookUtil {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(AccountBookUtil.class);
-
-    public static void convert2Logo(AccountBill accountBill, List<ESCompany> sortList) {
-        // 转一下logo
-        List<String> logoList = sortList.stream().map(ESCompany::getLogo).filter(StringUtils::isNotBlank).collect(Collectors.toList());
-        String logoString;
-        if (CollectionUtils.isNotEmpty(logoList) && logoList.size() > 4) {
-            logoString = StringUtils.join(logoList.subList(0, 4).toArray(), ";");
-        } else {
-            logoString= StringUtils.join(logoList.toArray(), ";");
-        }
-        accountBill.setAccountBillLogo(logoString);
-    }
-
-    /**
-     * 多个公司名转换
-     * @param payerNameList payerNameList
-     * @return java.lang.String
-     * @Author: xda
-     * @Date: 2020/12/17 09:54
-     */
-    public static String convertBillTitle(List<String> payerNameList) {
-        LOGGER.info("转换公司名称:[{}]", JSON.toJSONString(payerNameList));
-        if (CollectionUtils.isEmpty(payerNameList)) {
-            return "";
-        }
-        if (payerNameList.size() == 1) {
-            return payerNameList.get(0);
-        }
-        return String.format("%s%s%s%s", payerNameList.get(0), "等", payerNameList.size(), "家");
-    }
-
-    public static void convert2Company(List<ESCompany> sortList, Map<String, ESCompany> companyMap, List<String> cidList) {
-        cidList.forEach(cid -> {
-            if (companyMap.containsKey(cid)) {
-                ESCompany company = new ESCompany();
-                company.setId(cid);
-                company.setQueryName(companyMap.get(cid).getQueryName());
-                company.setLogo(companyMap.get(cid).getLogo());
-                sortList.add(company);
-            }
-        });
-    }
-
-    public static void convert2CompanyBasic(List<CompanyBasicVO> sortList, Map<String, CompanyBasicVO> companyMap, List<String> companyIdList) {
-        companyIdList.forEach(companyId -> {
-            if (companyMap.containsKey(companyId)) {
-                CompanyBasicVO vo = new CompanyBasicVO(companyId, companyMap.get(companyId).getCompanyName());
-                sortList.add(vo);
-            }
-        });
-    }
-
-    public static Integer getAccountBillStatusCode(AccountBill accountBill) {
-        if (Objects.isNull(accountBill.getEndDate())) {
-            return accountBill.getAccountBillStatus();
-        }
-        if (LocalDate.now().isEqual(accountBill.getEndDate()) || LocalDate.now().isAfter(accountBill.getEndDate())) {
-            return Dict.AccountBillStatusEnum.OVERDUE.getCode();
-        }
-        return Dict.AccountBillStatusEnum.PROGRESSING.getCode();
-    }
-}

+ 56 - 56
src/main/java/com/winhc/returnmoney/util/AppVersionUtil.java

@@ -1,56 +1,56 @@
-package com.winhc.returnmoney.util;
-
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @Description: AppVersionUtil
- * @Author: xda
- * @Date: 2021/5/6 15:04
- */
-public class AppVersionUtil {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(AppVersionUtil.class);
-
-    /**
-     * oldVersion < newVersion    true
-     * oldVersion > newVersion    false
-     * oldVersion = newVersion    false
-     * @return boolean
-     * @author xda
-     * @date 2021/5/6 15:07
-     */
-    public static boolean compareVersion(String oldVersion, String newVersion) {
-        List<Integer> oldList = Arrays.stream(oldVersion.split("\\.")).map(Integer::valueOf).collect(Collectors.toList());
-        List<Integer> newList = Arrays.stream(newVersion.split("\\.")).map(Integer::valueOf).collect(Collectors.toList());
-        for (int i = 0; i < oldList.size(); i++) {
-            if (newList.get(i) > oldList.get(i)) {
-                return true;
-            } else if (newList.get(i) < oldList.get(i)) {
-                return false;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * 校验是否新版本
-     * @param currentVersion currentVersion
-     * @return boolean
-     * @author xda
-     * @date 2021/12/9 11:09
-     */
-    public static boolean checkNewVersion(String currentVersion) {
-        if (StringUtils.isBlank(currentVersion)) {
-            return false;
-        }
-        LOGGER.info("currentVersion:[{}]", currentVersion);
-        return compareVersion("11.3.5", currentVersion);
-    }
-
-}
+//package com.winhc.returnmoney.util;
+//
+//import org.apache.commons.lang3.StringUtils;
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//
+//import java.util.Arrays;
+//import java.util.List;
+//import java.util.stream.Collectors;
+//
+///**
+// * @Description: AppVersionUtil
+// * @Author: xda
+// * @Date: 2021/5/6 15:04
+// */
+//public class AppVersionUtil {
+//
+//    private static final Logger LOGGER = LoggerFactory.getLogger(AppVersionUtil.class);
+//
+//    /**
+//     * oldVersion < newVersion    true
+//     * oldVersion > newVersion    false
+//     * oldVersion = newVersion    false
+//     * @return boolean
+//     * @author xda
+//     * @date 2021/5/6 15:07
+//     */
+//    public static boolean compareVersion(String oldVersion, String newVersion) {
+//        List<Integer> oldList = Arrays.stream(oldVersion.split("\\.")).map(Integer::valueOf).collect(Collectors.toList());
+//        List<Integer> newList = Arrays.stream(newVersion.split("\\.")).map(Integer::valueOf).collect(Collectors.toList());
+//        for (int i = 0; i < oldList.size(); i++) {
+//            if (newList.get(i) > oldList.get(i)) {
+//                return true;
+//            } else if (newList.get(i) < oldList.get(i)) {
+//                return false;
+//            }
+//        }
+//        return false;
+//    }
+//
+//    /**
+//     * 校验是否新版本
+//     * @param currentVersion currentVersion
+//     * @return boolean
+//     * @author xda
+//     * @date 2021/12/9 11:09
+//     */
+//    public static boolean checkNewVersion(String currentVersion) {
+//        if (StringUtils.isBlank(currentVersion)) {
+//            return false;
+//        }
+//        LOGGER.info("currentVersion:[{}]", currentVersion);
+//        return compareVersion("11.3.5", currentVersion);
+//    }
+//
+//}

+ 72 - 72
src/main/java/com/winhc/returnmoney/util/MethodControlUtil.java

@@ -1,72 +1,72 @@
-package com.winhc.returnmoney.util;
-
-import com.winhc.returnmoney.model.bo.AspectRequestBO;
-import io.swagger.annotations.ApiOperation;
-import org.aspectj.lang.Signature;
-import org.aspectj.lang.reflect.MethodSignature;
-import org.springframework.web.bind.annotation.*;
-
-import java.lang.annotation.Annotation;
-
-/**
- * @description: controller工具类
- * @author: yujie
- * @date 2019.11.27 14:47
- */
-public class MethodControlUtil {
-
-    /**
-     * 获取Controller方法信息
-     * @param signature
-     * @return
-     * @throws ClassNotFoundException
-     */
-    public static AspectRequestBO getMethod(Signature signature) throws ClassNotFoundException {
-        String className = signature.getDeclaringTypeName();
-        // 获取根路径
-        String parentPath = "";
-        Class cl = Class.forName(className);
-        RequestMapping anno = (RequestMapping) cl.getAnnotation(RequestMapping.class);
-        if (anno != null) {
-            parentPath = getValues(anno.value());
-        }
-        // 获取请求方式
-        MethodSignature methodSignature = (MethodSignature) signature;
-        Annotation[] annotations = methodSignature.getMethod().getDeclaredAnnotations();
-        String path = "",method="",des="";
-        if (annotations != null) {
-            for (Annotation n:annotations) {
-                if (n instanceof GetMapping) {
-                    GetMapping gn = (GetMapping)n;
-                    path = parentPath + getValues(gn.value());
-                    method = "GET";
-                } else if (n instanceof PostMapping) {
-                    PostMapping gn = (PostMapping)n;
-                    path = parentPath + getValues(gn.value());
-                    method = "POST";
-                } else if (n instanceof PutMapping) {
-                    PutMapping gn = (PutMapping)n;
-                    path = parentPath + getValues(gn.value());
-                    method = "PUT";
-                } else if (n instanceof DeleteMapping) {
-                    DeleteMapping gn = (DeleteMapping)n;
-                    path = parentPath + getValues(gn.value());
-                    method = "DELETE";
-                }
-                if (n instanceof ApiOperation) {
-                    ApiOperation an = (ApiOperation)n;
-                    des = an.value();
-                }
-            }
-        }
-        return new AspectRequestBO(method,path,des);
-    }
-
-    private static String getValues(String[] values) {
-        StringBuilder builder = new StringBuilder();
-        for (String v : values) {
-            builder.append(v);
-        }
-        return builder.toString();
-    }
-}
+//package com.winhc.returnmoney.util;
+//
+//import com.winhc.returnmoney.model.bo.AspectRequestBO;
+//import io.swagger.annotations.ApiOperation;
+//import org.aspectj.lang.Signature;
+//import org.aspectj.lang.reflect.MethodSignature;
+//import org.springframework.web.bind.annotation.*;
+//
+//import java.lang.annotation.Annotation;
+//
+///**
+// * @description: controller工具类
+// * @author: yujie
+// * @date 2019.11.27 14:47
+// */
+//public class MethodControlUtil {
+//
+//    /**
+//     * 获取Controller方法信息
+//     * @param signature
+//     * @return
+//     * @throws ClassNotFoundException
+//     */
+//    public static AspectRequestBO getMethod(Signature signature) throws ClassNotFoundException {
+//        String className = signature.getDeclaringTypeName();
+//        // 获取根路径
+//        String parentPath = "";
+//        Class cl = Class.forName(className);
+//        RequestMapping anno = (RequestMapping) cl.getAnnotation(RequestMapping.class);
+//        if (anno != null) {
+//            parentPath = getValues(anno.value());
+//        }
+//        // 获取请求方式
+//        MethodSignature methodSignature = (MethodSignature) signature;
+//        Annotation[] annotations = methodSignature.getMethod().getDeclaredAnnotations();
+//        String path = "",method="",des="";
+//        if (annotations != null) {
+//            for (Annotation n:annotations) {
+//                if (n instanceof GetMapping) {
+//                    GetMapping gn = (GetMapping)n;
+//                    path = parentPath + getValues(gn.value());
+//                    method = "GET";
+//                } else if (n instanceof PostMapping) {
+//                    PostMapping gn = (PostMapping)n;
+//                    path = parentPath + getValues(gn.value());
+//                    method = "POST";
+//                } else if (n instanceof PutMapping) {
+//                    PutMapping gn = (PutMapping)n;
+//                    path = parentPath + getValues(gn.value());
+//                    method = "PUT";
+//                } else if (n instanceof DeleteMapping) {
+//                    DeleteMapping gn = (DeleteMapping)n;
+//                    path = parentPath + getValues(gn.value());
+//                    method = "DELETE";
+//                }
+//                if (n instanceof ApiOperation) {
+//                    ApiOperation an = (ApiOperation)n;
+//                    des = an.value();
+//                }
+//            }
+//        }
+//        return new AspectRequestBO(method,path,des);
+//    }
+//
+//    private static String getValues(String[] values) {
+//        StringBuilder builder = new StringBuilder();
+//        for (String v : values) {
+//            builder.append(v);
+//        }
+//        return builder.toString();
+//    }
+//}

+ 26 - 0
src/main/java/com/winhc/returnmoney/util/UserContextUtil.java

@@ -0,0 +1,26 @@
+package com.winhc.returnmoney.util;
+
+import com.winhc.returnmoney.model.bo.UserContextBO;
+
+/**
+ * @Description: UserContext
+ * @Author: xda
+ * @Date: 2022/3/31 19:15
+ */
+public class UserContextUtil {
+
+    private static final ThreadLocal<UserContextBO> USER_THREAD_LOCAL = new ThreadLocal<>();
+
+
+    public static void saveUser(UserContextBO userContextBO) {
+        USER_THREAD_LOCAL.set(userContextBO);
+    }
+
+    public static UserContextBO getUser() {
+        return USER_THREAD_LOCAL.get();
+    }
+
+    public static void removeUser() {
+        USER_THREAD_LOCAL.remove();
+    }
+}