Просмотр исходного кода

【feat】【v3】
1.修改小程序配置
2.修改登录逻辑
3.完善系统配置

ChenYL 11 месяцев назад
Родитель
Сommit
2241cd209d
32 измененных файлов с 398 добавлено и 467 удалено
  1. 55 0
      src/main/java/com/punchsettle/server/AppEncryptor.java
  2. 0 33
      src/main/java/com/punchsettle/server/JasyptGenerator.java
  3. 15 21
      src/main/java/com/punchsettle/server/atomic/entity/User.java
  4. 6 0
      src/main/java/com/punchsettle/server/common/utils/Assert.java
  5. 0 12
      src/main/java/com/punchsettle/server/constant/CacheConstant.java
  6. 20 0
      src/main/java/com/punchsettle/server/constant/CacheNameConstant.java
  7. 36 1
      src/main/java/com/punchsettle/server/core/aop/GlobalExceptionHandler.java
  8. 0 35
      src/main/java/com/punchsettle/server/core/config/BizConfig.java
  9. 28 0
      src/main/java/com/punchsettle/server/core/config/BizProperties.java
  10. 0 11
      src/main/java/com/punchsettle/server/core/config/FeignConfig.java
  11. 21 13
      src/main/java/com/punchsettle/server/core/interceptor/AuthInterceptor.java
  12. 15 6
      src/main/java/com/punchsettle/server/core/interceptor/MybatisAuditDataInterceptor.java
  13. 0 5
      src/main/java/com/punchsettle/server/pojo/login/LoginRequest.java
  14. 0 35
      src/main/java/com/punchsettle/server/service/controller/LoginController.java
  15. 0 30
      src/main/java/com/punchsettle/server/service/controller/TokenController.java
  16. 14 1
      src/main/java/com/punchsettle/server/service/controller/UserController.java
  17. 0 17
      src/main/java/com/punchsettle/server/service/manager/ILoginManager.java
  18. 3 2
      src/main/java/com/punchsettle/server/service/manager/ITokenManager.java
  19. 14 4
      src/main/java/com/punchsettle/server/service/manager/IUserManager.java
  20. 0 62
      src/main/java/com/punchsettle/server/service/manager/impl/LoginManagerImpl.java
  21. 11 9
      src/main/java/com/punchsettle/server/service/manager/impl/RewardManagerImpl.java
  22. 20 18
      src/main/java/com/punchsettle/server/service/manager/impl/ScratchManagerImpl.java
  23. 6 4
      src/main/java/com/punchsettle/server/service/manager/impl/SettleManagerImpl.java
  24. 34 16
      src/main/java/com/punchsettle/server/service/manager/impl/TokenManagerImpl.java
  25. 54 25
      src/main/java/com/punchsettle/server/service/manager/impl/UserManagerImpl.java
  26. 0 63
      src/main/java/com/punchsettle/server/utiis/CacheUtils.java
  27. 3 3
      src/main/java/com/punchsettle/server/utiis/TokenUtils.java
  28. 17 1
      src/main/java/com/punchsettle/server/utiis/UserUtils.java
  29. 14 8
      src/main/resources/application-dev.yaml
  30. 12 7
      src/main/resources/application-prod.yaml
  31. 0 18
      src/main/resources/application-sit.yaml
  32. 0 7
      src/main/resources/application.yaml

+ 55 - 0
src/main/java/com/punchsettle/server/AppEncryptor.java

@@ -0,0 +1,55 @@
+package com.punchsettle.server;
+
+import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
+import org.jasypt.iv.RandomIvGenerator;
+import org.jasypt.salt.RandomSaltGenerator;
+
+/**
+ * 应用Jasypt加解密工具
+ */
+public class AppEncryptor {
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 算法
+     */
+    private String algorithm;
+
+    /**
+     * 加解密实例
+     */
+    private StandardPBEStringEncryptor standardPBEStringEncryptor;
+
+    public AppEncryptor(String password, String algorithm) {
+        this.password = password;
+        this.algorithm = algorithm;
+
+        standardPBEStringEncryptor = new StandardPBEStringEncryptor();
+        standardPBEStringEncryptor.setPassword(password);
+        standardPBEStringEncryptor.setAlgorithm(algorithm);
+        standardPBEStringEncryptor.setSaltGenerator(new RandomSaltGenerator());
+        standardPBEStringEncryptor.setIvGenerator(new RandomIvGenerator());
+    }
+
+    /**
+     * 加密并输出加密结果
+     * @param filedName 待加密的字段名称
+     * @param filedStr 待加密的字符串
+     */
+    public void encryptAndShow(String filedName, String filedStr) {
+        String encryptStr = standardPBEStringEncryptor.encrypt(filedStr);
+        System.out.println(String.format("%s:%s", filedName, encryptStr));
+    }
+
+    public static void main(String[] args) {
+        AppEncryptor appEncryptor = new AppEncryptor("", "PBEWithMD5AndDES");
+        appEncryptor.encryptAndShow("dev", "");
+
+        AppEncryptor appEncryptor2 = new AppEncryptor("", "PBEWithMD5AndDES");
+        appEncryptor2.encryptAndShow("prod", "");
+    }
+}

+ 0 - 33
src/main/java/com/punchsettle/server/JasyptGenerator.java

@@ -1,33 +0,0 @@
-package com.punchsettle.server;
-
-import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
-import org.jasypt.iv.RandomIvGenerator;
-import org.jasypt.salt.RandomSaltGenerator;
-
-/**
- * 加密工具
- */
-public class JasyptGenerator {
-
-    public static void main(String[] args) {
-        StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
-        standardPBEStringEncryptor.setPassword("");
-        standardPBEStringEncryptor.setAlgorithm("");
-        standardPBEStringEncryptor.setSaltGenerator(new RandomSaltGenerator());
-        standardPBEStringEncryptor.setIvGenerator(new RandomIvGenerator());
-        String url = standardPBEStringEncryptor.encrypt("");
-        System.out.println("url:" + url);
-        String username = standardPBEStringEncryptor.encrypt("");
-        System.out.println("username:" + username);
-        String password = standardPBEStringEncryptor.encrypt("");
-        System.out.println("password:" + password);
-
-        String appid = standardPBEStringEncryptor.encrypt("");
-        System.out.println("appid:" + appid);
-        String secret = standardPBEStringEncryptor.encrypt("");
-        System.out.println("secret:" + secret);
-
-        String token = standardPBEStringEncryptor.encrypt("");
-        System.out.println("token:" + token);
-    }
-}

+ 15 - 21
src/main/java/com/punchsettle/server/atomic/entity/User.java

@@ -38,38 +38,32 @@ public class User extends BaseEntity implements Serializable {
     private String nickname;
 
     /**
-     * 微信头像url
+     * 总积分
      */
-    @Column(name = "avatar")
-    private String avatar;
+    @Column(name = "total_points")
+    private Integer totalPoints;
 
     /**
-     * 总奖励数
+     * 未使用积分
      */
-    @Column(name = "total_reward_num")
-    private Integer totalRewardNum;
+    @Column(name = "unused_points")
+    private Integer unusedPoints;
 
     /**
-     * 未领取奖励数
+     * 已使用积分
      */
-    @Column(name = "unclaimed_reward_num")
-    private Integer unclaimedRewardNum;
+    @Column(name = "used_points")
+    private Integer usedPoints;
 
     /**
-     * 已领取奖励数
+     * 总消费金额(元)
      */
-    @Column(name = "claimed_reward_num")
-    private Integer claimedRewardNum;
+    @Column(name = "total_consume_amount")
+    private BigDecimal totalConsumeAmount;
 
     /**
-     * 彩票投入金额(元)
+     * 总中奖金额(元)
      */
-    @Column(name = "lottery_invest_amount")
-    private BigDecimal lotteryInvestAmount;
-
-    /**
-     * 彩票中奖金额(元)
-     */
-    @Column(name = "lottery_win_amount")
-    private BigDecimal lotteryWinAmount;
+    @Column(name = "total_win_amount")
+    private BigDecimal totalWinAmount;
 }

+ 6 - 0
src/main/java/com/punchsettle/server/common/utils/Assert.java

@@ -23,6 +23,9 @@ public class Assert {
         if (Objects.isNull(object)) {
             throw new IllegalArgumentException(errorMsg);
         }
+        if (object instanceof String && ((String) object).isBlank()) {
+            throw new IllegalArgumentException(errorMsg);
+        }
     }
 
     /**
@@ -44,6 +47,9 @@ public class Assert {
         if (Objects.isNull(object)) {
             throw new BusinessException(errorMsg);
         }
+        if (object instanceof String && ((String) object).isBlank()) {
+            throw new BusinessException(errorMsg);
+        }
     }
 
     /**

+ 0 - 12
src/main/java/com/punchsettle/server/constant/CacheConstant.java

@@ -1,12 +0,0 @@
-package com.punchsettle.server.constant;
-
-/**
- * 缓存常量
- */
-public class CacheConstant {
-
-    /**
-     * 微信小程序用户 session_key
-     */
-    public static final String WECHAT_MINI_PROGRAM_SESSION_KEY = "WECHAT:MINI-PROGRAM:SESSION-KEY";
-}

+ 20 - 0
src/main/java/com/punchsettle/server/constant/CacheNameConstant.java

@@ -0,0 +1,20 @@
+package com.punchsettle.server.constant;
+
+/**
+ * @author tyuio
+ * @version 1.0.0
+ * @date 2025/3/17 12:48
+ * @description 缓存名称常量
+ */
+public class CacheNameConstant {
+
+    /**
+     * 用户信息
+     */
+    public static final String USER = "user";
+
+    /**
+     * 用户信息VO
+     */
+    public static final String USER_VO = "userVO";
+}

+ 36 - 1
src/main/java/com/punchsettle/server/core/aop/GlobalExceptionHandler.java

@@ -3,10 +3,14 @@ package com.punchsettle.server.core.aop;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import jakarta.validation.ConstraintViolationException;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
+import org.springframework.http.converter.HttpMessageNotReadableException;
 import org.springframework.validation.ObjectError;
+import org.springframework.web.HttpRequestMethodNotSupportedException;
 import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.MissingServletRequestParameterException;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 
@@ -42,6 +46,7 @@ public class GlobalExceptionHandler {
      */
     @ExceptionHandler(LoginException.class)
     public ResponseEntity<Object> loginExceptionHandler(LoginException e) {
+        log.error(e.getMessage(), e);
         return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(JsonResponse.fail(e.getMessage()));
     }
 
@@ -58,12 +63,42 @@ public class GlobalExceptionHandler {
         return JsonResponse.fail(String.format("参数错误:%s", errorMsg));
     }
 
+    /**
+     * 方法参数校验异常处理
+     * @param e
+     * @return
+     */
+    @ExceptionHandler(ConstraintViolationException.class)
+    public JsonResponse constraintViolationExceptionHandler(ConstraintViolationException e) {
+        String errorMsg = e.getConstraintViolations().stream().map(error -> error.getMessage())
+                .collect(Collectors.joining(";"));
+        return JsonResponse.fail(String.format("参数错误:%s", errorMsg));
+    }
+
+    @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
+    public JsonResponse httpRequestMethodNotSupportedExceptionHandler(HttpRequestMethodNotSupportedException e) {
+        log.error("全局异常处理:请求方法不支持", e);
+        return JsonResponse.fail(String.format("请求方法不支持,异常原因:%s", e.getMessage()));
+    }
+
+    @ExceptionHandler(MissingServletRequestParameterException.class)
+    public JsonResponse missingServletRequestParameterExceptionHandler(MissingServletRequestParameterException e) {
+        log.error("全局异常处理:请求参数异常", e);
+        return JsonResponse.fail(String.format("全局异常处理:请求参数异常:%s", e.getMessage()));
+    }
+
+    @ExceptionHandler(HttpMessageNotReadableException.class)
+    public JsonResponse httpMessageNotReadableExceptionHandler(HttpMessageNotReadableException e) {
+        log.error("全局异常处理:请求参数格式错误", e);
+        return JsonResponse.fail(String.format("请求参数格式错误,异常原因:%s", e.getMessage()));
+    }
+
     /**
      * 全局异常处理
      */
     @ExceptionHandler(Exception.class)
     public JsonResponse exceptionHandler(Exception e) {
-        log.error(e.getMessage(), e);
+        log.error("全局异常处理", e);
         return JsonResponse.fail("系统异常,请稍后再试");
     }
 }

+ 0 - 35
src/main/java/com/punchsettle/server/core/config/BizConfig.java

@@ -1,35 +0,0 @@
-package com.punchsettle.server.core.config;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Configuration;
-
-import lombok.Getter;
-
-@Getter
-@Configuration
-public class BizConfig {
-
-    /**
-     * 微信小程序appid
-     */
-    @Value("${biz.wechat.mini-program.app-id}")
-    private String wechatMiniProgramAppId;
-
-    /**
-     * 微信小程序secret
-     */
-    @Value("${biz.wechat.mini-program.secret}")
-    private String wechatMiniProgramSecret;
-
-    /**
-     * 生成token的密钥
-     */
-    @Value("${biz.token.password}")
-    private String TokenPassword;
-
-    /**
-     * token过期时间
-     */
-    @Value("${biz.token.expire:1}")
-    private Integer TokenExpire;
-}

+ 28 - 0
src/main/java/com/punchsettle/server/core/config/BizProperties.java

@@ -0,0 +1,28 @@
+package com.punchsettle.server.core.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author tyuio
+ * @version 1.0.0
+ * @description 系统业务 配置类
+ * @date 2025/04/08 11:22
+ */
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "biz")
+public class BizProperties {
+
+    /**
+     * 生成token的密钥
+     */
+    private String tokenPassword;
+
+    /**
+     * token过期时间
+     */
+    private Integer tokenExpire;
+}

+ 0 - 11
src/main/java/com/punchsettle/server/core/config/FeignConfig.java

@@ -26,17 +26,6 @@ import feign.codec.Decoder;
 @Configuration
 public class FeignConfig {
 
-    @Autowired
-    private BizConfig bizConfig;
-
-    @Bean("myInterceptor")
-    public RequestInterceptor requestInterceptor() {
-        return template -> {
-            template.query("appid", bizConfig.getWechatMiniProgramAppId()).query("secret",
-                bizConfig.getWechatMiniProgramSecret());
-        };
-    }
-
     /**
      * 调整Feign日志输出 注:FeignClient只能输出debug等级的日志
      * 

+ 21 - 13
src/main/java/com/punchsettle/server/core/interceptor/AuthInterceptor.java

@@ -1,18 +1,17 @@
 package com.punchsettle.server.core.interceptor;
 
-import java.util.Map;
+import java.util.Objects;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
 import org.springframework.web.servlet.HandlerInterceptor;
 
-import com.auth0.jwt.interfaces.Claim;
+import com.auth0.jwt.exceptions.TokenExpiredException;
 import com.punchsettle.server.atomic.entity.User;
-import com.punchsettle.server.atomic.service.IUserService;
 import com.punchsettle.server.common.exception.LoginException;
-import com.punchsettle.server.common.utils.Assert;
-import com.punchsettle.server.utiis.TokenUtils;
+import com.punchsettle.server.service.manager.ITokenManager;
+import com.punchsettle.server.service.manager.IUserManager;
 import com.punchsettle.server.utiis.UserUtils;
 
 import jakarta.servlet.http.HttpServletRequest;
@@ -31,12 +30,16 @@ import lombok.extern.slf4j.Slf4j;
 public class AuthInterceptor implements HandlerInterceptor {
 
     @Autowired
-    private IUserService userService;
+    private IUserManager userManager;
+
+    @Autowired
+    private ITokenManager tokenManager;
 
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
             throws Exception {
 
+
         // 判断请求头中是否有token
         String token = request.getHeader("Authorization");
         if (!StringUtils.hasText(token)) {
@@ -46,16 +49,21 @@ public class AuthInterceptor implements HandlerInterceptor {
         // token解析获取用户ID
         Long currentUserId = null;
         try {
-            Map<String, Claim> verify = TokenUtils.verify(token);
-            currentUserId = verify.get("userId").asLong();
-        } catch (Exception e) {
-            log.error("登录校验异常,token:{}", token, e);
-            throw LoginException.fail("登录校验异常");
+            currentUserId = tokenManager.getUserIdByToken(token);
+        } catch (TokenExpiredException e) {
+            log.warn("token已过期,token:{}", token);
+            throw LoginException.fail("登录校验失败,token已过期");
+        }
+        if (Objects.isNull(currentUserId)) {
+            log.warn("登录校验异常,token中不存在有效的用户信息,token:{}", token);
+            throw LoginException.fail("登录校验异常,token中不存在有效的用户信息");
         }
 
         // 校验系统中是否存在该用户
-        User currentUser = userService.getById(currentUserId);
-        Assert.isNullInBusiness(currentUser, "不存在的用户");
+        User currentUser = userManager.getByIdWithCache(currentUserId);
+        if (Objects.isNull(currentUser)) {
+            throw LoginException.fail("不存在的用户,请尝试重新登录");
+        }
 
         // 把用户信息设置如入上下文
         UserUtils.setCurrentId(currentUser.getId());

+ 15 - 6
src/main/java/com/punchsettle/server/core/interceptor/MybatisAuditDataInterceptor.java

@@ -45,7 +45,7 @@ public class MybatisAuditDataInterceptor implements Interceptor {
         /**
          * 插入或更新的时候,赋予createBy、updateBy、creationTime、lastUpdateTime值
          */
-        Long currentUserId = Optional.ofNullable(UserUtils.getCurrentUserId()).orElse(1L);
+        Long currentUserId = UserUtils.getCurrentUserId(0L);
         Timestamp currentTime = new Timestamp(System.currentTimeMillis());
 
         // 识别SQL类型,看是INSERT还是UPDATE
@@ -76,11 +76,20 @@ public class MybatisAuditDataInterceptor implements Interceptor {
             // 批量更新
             if (obj instanceof Map) {
                 Map<?, ?> map = (Map<?, ?>) obj;
-                List<?> list = (List<?>) map.get("list");
-                if (list != null) {
-                    for (Object item : list) {
-                        BaseEntity entity = ((BaseEntity) item);
-                        assignUpdateDefaultValue(entity, currentUserId, currentTime);
+                if (map.containsKey("list")) {
+                    List<?> list = (List<?>) map.get("list");
+                    if (list != null) {
+                        for (Object item : list) {
+                            BaseEntity entity = ((BaseEntity) item);
+                            assignUpdateDefaultValue(entity, currentUserId, currentTime);
+                        }
+                    }
+                } else {
+                    for (Object o : map.values()) {
+                        if (o instanceof BaseEntity) {
+                            BaseEntity entity = ((BaseEntity) o);
+                            assignUpdateDefaultValue(entity, currentUserId, currentTime);
+                        }
                     }
                 }
             }

+ 0 - 5
src/main/java/com/punchsettle/server/pojo/login/LoginRequest.java

@@ -19,11 +19,6 @@ public class LoginRequest {
     @NotBlank(message = "微信code不能为空")
     private String code;
 
-    /**
-     * 头像
-     */
-    private String avatar;
-
     /**
      * 昵称
      */

+ 0 - 35
src/main/java/com/punchsettle/server/service/controller/LoginController.java

@@ -1,35 +0,0 @@
-package com.punchsettle.server.service.controller;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-
-import com.punchsettle.server.pojo.login.LoginRequest;
-import com.punchsettle.server.service.manager.ILoginManager;
-
-/**
- * @className LoginController
- * @description 登录 controller
- * @author ChenYL
- * @date 2023/07/23 16:08
- * @version V1.0
- **/
-@RestController
-public class LoginController {
-
-    @Autowired
-    private ILoginManager loginManager;
-
-    /**
-     * 微信小程序登录
-     * 
-     * @param request
-     * @return 访问凭据
-     */
-    @PostMapping("/wechat/miniprogram/login")
-    public String wechatMiniProgramLogin(@RequestBody @Validated LoginRequest request) {
-        return loginManager.wechatMiniProgramLogin(request);
-    }
-}

+ 0 - 30
src/main/java/com/punchsettle/server/service/controller/TokenController.java

@@ -1,30 +0,0 @@
-package com.punchsettle.server.service.controller;
-
-import com.punchsettle.server.service.manager.ITokenManager;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * @author myou
- * @version 1.0.0
- * @date 2024/12/28 21:28
- * @description JWT controller
- */
-@RestController
-@RequestMapping("/token")
-public class TokenController {
-
-    @Autowired
-    private ITokenManager tokenManager;
-
-    /**
-     * 刷新token
-     * @return
-     */
-    @GetMapping("/refreshToken")
-    public String refreshToken() {
-        return tokenManager.refreshToken();
-    }
-}

+ 14 - 1
src/main/java/com/punchsettle/server/service/controller/UserController.java

@@ -1,5 +1,8 @@
 package com.punchsettle.server.service.controller;
 
+import com.punchsettle.server.pojo.login.LoginRequest;
+import com.punchsettle.server.utiis.UserUtils;
+import me.chanjar.weixin.common.error.WxErrorException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -25,13 +28,23 @@ public class UserController {
     @Autowired
     private IUserManager userManager;
 
+    /**
+     * 用户登录
+     * @param request
+     * @return 访问凭据
+     */
+    @PostMapping("/login")
+    public String login(@RequestBody @Validated LoginRequest request) throws WxErrorException {
+        return userManager.login(request);
+    }
+
     /**
      * 查询当前用户信息
      * @return
      */
     @GetMapping("/queryUserInfo")
     public UserInfoVO queryUserInfo() {
-        return userManager.queryUserInfo();
+        return userManager.queryUserInfo(UserUtils.getCurrentUserId());
     }
 
     /**

+ 0 - 17
src/main/java/com/punchsettle/server/service/manager/ILoginManager.java

@@ -1,17 +0,0 @@
-package com.punchsettle.server.service.manager;
-
-import com.punchsettle.server.pojo.login.LoginRequest;
-
-/**
- * 登录 服务类
- */
-public interface ILoginManager {
-
-    /**
-     * 微信小程序登录
-     * 
-     * @param request
-     * @return 微信登陆后获得的session_key
-     */
-    String wechatMiniProgramLogin(LoginRequest request);
-}

+ 3 - 2
src/main/java/com/punchsettle/server/service/manager/ITokenManager.java

@@ -16,8 +16,9 @@ public interface ITokenManager {
     String createToken(Long userId);
 
     /**
-     * 刷新token
+     * 从token中获取用户ID
+     * @param token
      * @return
      */
-    String refreshToken();
+    Long getUserIdByToken(String token);
 }

+ 14 - 4
src/main/java/com/punchsettle/server/service/manager/IUserManager.java

@@ -1,8 +1,10 @@
 package com.punchsettle.server.service.manager;
 
 import com.punchsettle.server.atomic.entity.User;
+import com.punchsettle.server.pojo.login.LoginRequest;
 import com.punchsettle.server.pojo.user.NicknameRequest;
 import com.punchsettle.server.pojo.user.UserInfoVO;
+import me.chanjar.weixin.common.error.WxErrorException;
 
 /**
  * @author tyuio
@@ -13,19 +15,27 @@ import com.punchsettle.server.pojo.user.UserInfoVO;
 public interface IUserManager {
 
     /**
-     * 根据openId获取用户,如果没有则新增
-     * @param user
+     * 用户登陆
      */
-    User getAndAddUser(User user);
+    String login(LoginRequest request) throws WxErrorException;
 
     /**
      * 查询当前用户信息
+     * @param userId 用户id
      * @return
      */
-    UserInfoVO queryUserInfo();
+    UserInfoVO queryUserInfo(Long userId);
 
     /**
      * 修改昵称
      */
     void modifyNickname(NicknameRequest request);
+
+
+    /**
+     * 根据id获取用户信息(含缓存)
+     * @param id
+     * @return
+     */
+    User getByIdWithCache(Long id);
 }

+ 0 - 62
src/main/java/com/punchsettle/server/service/manager/impl/LoginManagerImpl.java

@@ -1,62 +0,0 @@
-package com.punchsettle.server.service.manager.impl;
-
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.punchsettle.server.atomic.entity.User;
-import com.punchsettle.server.common.exception.BusinessException;
-import com.punchsettle.server.constant.CacheConstant;
-import com.punchsettle.server.feign.WechatMiniProgramFeign;
-import com.punchsettle.server.feign.dto.Code2SessionRequest;
-import com.punchsettle.server.feign.dto.Code2SessionResponse;
-import com.punchsettle.server.pojo.login.LoginRequest;
-import com.punchsettle.server.service.manager.ILoginManager;
-import com.punchsettle.server.service.manager.ITokenManager;
-import com.punchsettle.server.service.manager.IUserManager;
-import com.punchsettle.server.utiis.CacheUtils;
-
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * 登录服务类
- */
-@Slf4j
-@Service
-public class LoginManagerImpl implements ILoginManager {
-
-    @Autowired
-    private WechatMiniProgramFeign wechatMiniProgramFeign;
-
-    @Autowired
-    private IUserManager userManager;
-
-    @Autowired
-    private ITokenManager tokenManager;
-
-    @Override
-    public String wechatMiniProgramLogin(LoginRequest request) {
-        // 从微信获取session_key
-        Code2SessionRequest code2SessionRequest = new Code2SessionRequest();
-        code2SessionRequest.setGrantType("authorization_code");
-        code2SessionRequest.setJsCode(request.getCode());
-        Code2SessionResponse loginResponse = wechatMiniProgramFeign.code2Session(code2SessionRequest);
-        if (loginResponse.getErrCode() != null && loginResponse.getErrCode() != 0) {
-            throw BusinessException.fail(loginResponse.getErrMsg());
-        }
-
-        // 获取用户
-        User loginUserInfo = new User();
-        loginUserInfo.setOpenId(loginResponse.getOpenId());
-        loginUserInfo.setNickname(request.getNickname());
-        loginUserInfo.setAvatar(request.getAvatar());
-        User user = userManager.getAndAddUser(loginUserInfo);
-
-        // 缓存微信用户对应的session_key
-        CacheUtils.put(CacheConstant.WECHAT_MINI_PROGRAM_SESSION_KEY, user.getId().toString(),
-            loginResponse.getSessionKey());
-
-        // 创建token
-        return tokenManager.createToken(user.getId());
-    }
-}

+ 11 - 9
src/main/java/com/punchsettle/server/service/manager/impl/RewardManagerImpl.java

@@ -46,25 +46,27 @@ public class RewardManagerImpl implements IRewardManager {
         User user = Optional.ofNullable(userService.getById(currentUserId)).orElseThrow(() -> BusinessException.fail("无法获取当前用户的奖励信息"));
 
         // 计算未领取奖励数、已领取奖励数
-        if (user.getUnclaimedRewardNum() < request.getClaimRewardNum()) {
-            throw BusinessException.fail("当前用户奖励不足,无法领取");
-        }
-        int unclaimedRewardNum = user.getUnclaimedRewardNum() - request.getClaimRewardNum();
-        int claimedRewardNum = user.getClaimedRewardNum() + request.getClaimRewardNum();
+//        if (user.getUnclaimedRewardNum() < request.getClaimRewardNum()) {
+//            throw BusinessException.fail("当前用户奖励不足,无法领取");
+//        }
+//        int unclaimedRewardNum = user.getUnclaimedRewardNum() - request.getClaimRewardNum();
+//        int claimedRewardNum = user.getClaimedRewardNum() + request.getClaimRewardNum();
+        int unclaimedRewardNum = 0;
+        int claimedRewardNum = 0;
 
-        // 构建打卡记录
+                // 构建打卡记录
         UserClaimRewardRecord userClaimRewardRecord = new UserClaimRewardRecord();
         userClaimRewardRecord.setClaimRewardNum(request.getClaimRewardNum());
         userClaimRewardRecord.setClaimRewardTime(new Timestamp(System.currentTimeMillis()));
-        userClaimRewardRecord.setBeforeClaimRewardNum(user.getUnclaimedRewardNum());
+//        userClaimRewardRecord.setBeforeClaimRewardNum(user.getUnclaimedRewardNum());
         userClaimRewardRecord.setAfterClaimRewardNum(unclaimedRewardNum);
         userClaimRewardRecordService.insert(userClaimRewardRecord);
 
         // 更新用户奖励信息
         User updateUser = new User();
         updateUser.setId(user.getId());
-        updateUser.setUnclaimedRewardNum(unclaimedRewardNum);
-        updateUser.setClaimedRewardNum(claimedRewardNum);
+//        updateUser.setUnclaimedRewardNum(unclaimedRewardNum);
+//        updateUser.setClaimedRewardNum(claimedRewardNum);
         userService.updateById(updateUser);
     }
 

+ 20 - 18
src/main/java/com/punchsettle/server/service/manager/impl/ScratchManagerImpl.java

@@ -1,6 +1,7 @@
 package com.punchsettle.server.service.manager.impl;
 
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
@@ -51,10 +52,10 @@ public class ScratchManagerImpl implements IScratchManager {
         User updateUser = new User();
         updateUser.setId(user.getId());
         if (ScratchActionTypeEnum.INVEST.equals(request.getActionType())) {
-            updateUser.setLotteryInvestAmount(user.getLotteryInvestAmount().add(request.getAmount()));
+//            updateUser.setLotteryInvestAmount(user.getLotteryInvestAmount().add(request.getAmount()));
         }
         if (ScratchActionTypeEnum.WIN.equals(request.getActionType())) {
-            updateUser.setLotteryWinAmount(user.getLotteryWinAmount().add(request.getAmount()));
+//            updateUser.setLotteryWinAmount(user.getLotteryWinAmount().add(request.getAmount()));
         }
         userService.updateById(updateUser);
 
@@ -86,37 +87,38 @@ public class ScratchManagerImpl implements IScratchManager {
         updateScratchRecord.setId(scratchRecord.getId());
         // 撤销投入
         if (ScratchActionTypeEnum.INVEST.equals(scratchRecord.getActionType())) {
-            if (scratchRecord.getAmount().compareTo(user.getLotteryInvestAmount()) > 0) {
-                BusinessException.throwFail("撤销投入金额异常,用户已投入金额小于待撤销金额");
-            }
+//            if (scratchRecord.getAmount().compareTo(user.getLotteryInvestAmount()) > 0) {
+//                BusinessException.throwFail("撤销投入金额异常,用户已投入金额小于待撤销金额");
+//            }
             updateScratchRecord.setActionType(ScratchActionTypeEnum.REVOKE_INVEST);
-            updateUser.setLotteryInvestAmount(user.getLotteryInvestAmount().subtract(scratchRecord.getAmount()));
+//            updateUser.setLotteryInvestAmount(user.getLotteryInvestAmount().subtract(scratchRecord.getAmount()));
         }
         // 撤销中奖
-        if (ScratchActionTypeEnum.WIN.equals(scratchRecord.getActionType())) {
-            if (scratchRecord.getAmount().compareTo(user.getLotteryWinAmount()) > 0) {
-                BusinessException.throwFail("撤销中奖金额异常,用户已中奖金额小于待撤销金额");
-            }
-            updateScratchRecord.setActionType(ScratchActionTypeEnum.REVOKE_WIN);
-            updateUser.setLotteryWinAmount(user.getLotteryWinAmount().subtract(scratchRecord.getAmount()));
-        }
+//        if (ScratchActionTypeEnum.WIN.equals(scratchRecord.getActionType())) {
+//            if (scratchRecord.getAmount().compareTo(user.getLotteryWinAmount()) > 0) {
+//                BusinessException.throwFail("撤销中奖金额异常,用户已中奖金额小于待撤销金额");
+//            }
+//            updateScratchRecord.setActionType(ScratchActionTypeEnum.REVOKE_WIN);
+//            updateUser.setLotteryWinAmount(user.getLotteryWinAmount().subtract(scratchRecord.getAmount()));
+//        }
 
         // 更新用户
-        userService.updateById(updateUser);
+//        userService.updateById(updateUser);
 
         // 更新刮刮乐记录
-        scratchRecordService.update(updateScratchRecord);
+//        scratchRecordService.update(updateScratchRecord);
     }
 
     @Override
     public List<ScratchVO> queryScratchRecord(ScratchQuery query) {
         // 获取当前用户信息
         Long currentUserId = UserUtils.getCurrentUserId();
-        User user = Optional.ofNullable(userService.getById(currentUserId)).orElseThrow(() -> BusinessException.fail("无法获取当前用户信息"));
-        query.setUserId(user.getId());
+//        User user = Optional.ofNullable(userService.getById(currentUserId)).orElseThrow(() -> BusinessException.fail("无法获取当前用户信息"));
+//        query.setUserId(user.getId());
         query.setActionTypeList(Arrays.asList(ScratchActionTypeEnum.INVEST, ScratchActionTypeEnum.WIN));
 
-        List<LotteryScratchRecord> scratchRecords = scratchRecordService.listByCondition(query);
+//        List<LotteryScratchRecord> scratchRecords = scratchRecordService.listByCondition(query);
+        List<LotteryScratchRecord> scratchRecords =  new ArrayList<>();
         if (CollectionUtils.isEmpty(scratchRecords)) {
             return List.of();
         }

+ 6 - 4
src/main/java/com/punchsettle/server/service/manager/impl/SettleManagerImpl.java

@@ -292,9 +292,11 @@ public class SettleManagerImpl implements ISettleManager {
         }
 
         // 计算结算前后,用户奖励数的变化
-        int beforeSettleRewardNum = user.getUnclaimedRewardNum();
+//        int beforeSettleRewardNum = user.getUnclaimedRewardNum();
+        int beforeSettleRewardNum = 0;
         int afterSettleRewardNum = beforeSettleRewardNum + settleRewardNum;
-        int totalRewardNum = user.getTotalRewardNum() + settleRewardNum;
+//        int totalRewardNum = user.getTotalRewardNum() + settleRewardNum;
+        int totalRewardNum = 0;
 
         // 构造结算信息
         PunchInSettlement addPunchInSettlement = new PunchInSettlement();
@@ -307,8 +309,8 @@ public class SettleManagerImpl implements ISettleManager {
         // 构造用户奖励信息
         User updateUser = new User();
         updateUser.setId(user.getId());
-        updateUser.setTotalRewardNum(totalRewardNum);
-        updateUser.setUnclaimedRewardNum(afterSettleRewardNum);
+//        updateUser.setTotalRewardNum(totalRewardNum);
+//        updateUser.setUnclaimedRewardNum(afterSettleRewardNum);
 
         SettleResultDto settleResultDto = new SettleResultDto();
         settleResultDto.setUpdateUser(updateUser);

+ 34 - 16
src/main/java/com/punchsettle/server/service/manager/impl/TokenManagerImpl.java

@@ -1,16 +1,18 @@
 package com.punchsettle.server.service.manager.impl;
 
-import com.punchsettle.server.common.exception.BusinessException;
-import com.punchsettle.server.common.utils.Assert;
-import com.punchsettle.server.core.config.BizConfig;
-import com.punchsettle.server.service.manager.ITokenManager;
-import com.punchsettle.server.utiis.TokenUtils;
-import com.punchsettle.server.utiis.UserUtils;
+import java.util.Calendar;
+import java.util.Map;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.Calendar;
-import java.util.Optional;
+import com.auth0.jwt.JWT;
+import com.auth0.jwt.JWTVerifier;
+import com.auth0.jwt.algorithms.Algorithm;
+import com.auth0.jwt.interfaces.Claim;
+import com.punchsettle.server.common.utils.Assert;
+import com.punchsettle.server.core.config.BizProperties;
+import com.punchsettle.server.service.manager.ITokenManager;
 
 /**
  * @author myou
@@ -21,22 +23,38 @@ import java.util.Optional;
 @Service
 public class TokenManagerImpl implements ITokenManager {
 
+    private static final String CLAIM_USER_ID = "userId";
+
     @Autowired
-    private BizConfig bizConfig;
+    private BizProperties bizProperties;
+
+    /**
+     * token算法
+     */
+    private Algorithm tokenAlgorithm;
+
+    /**
+     * token校验工具
+     */
+    private JWTVerifier jwtVerifier;
+
+    public TokenManagerImpl(BizProperties bizProperties) {
+        this.bizProperties = bizProperties;
+        tokenAlgorithm = Algorithm.HMAC256(bizProperties.getTokenPassword());
+        jwtVerifier = JWT.require(tokenAlgorithm).build();
+    }
 
     @Override
     public String createToken(Long userId) {
         Assert.isNullInBusiness(userId, "请传入用户ID");
         Calendar instance = Calendar.getInstance();
-        instance.add(Calendar.DATE, bizConfig.getTokenExpire());
-        return TokenUtils.createToken(userId, instance.getTime());
+        instance.add(Calendar.DATE, bizProperties.getTokenExpire());
+        return JWT.create().withClaim(CLAIM_USER_ID, userId).withExpiresAt(instance.getTime()).sign(tokenAlgorithm);
     }
 
     @Override
-    public String refreshToken() {
-        // 获取用户信息
-        Long currentUserId =
-            Optional.ofNullable(UserUtils.getCurrentUserId()).orElseThrow(() -> BusinessException.fail("无法获取当前用户ID"));
-        return createToken(currentUserId);
+    public Long getUserIdByToken(String token) {
+        Map<String, Claim> verify = jwtVerifier.verify(token).getClaims();
+        return verify.get(CLAIM_USER_ID).asLong();
     }
 }

+ 54 - 25
src/main/java/com/punchsettle/server/service/manager/impl/UserManagerImpl.java

@@ -1,22 +1,27 @@
 package com.punchsettle.server.service.manager.impl;
 
-import java.math.BigDecimal;
 import java.util.Objects;
 
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.CacheManager;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import com.punchsettle.server.atomic.entity.User;
 import com.punchsettle.server.atomic.service.IUserService;
-import com.punchsettle.server.common.utils.Assert;
+import com.punchsettle.server.constant.CacheNameConstant;
+import com.punchsettle.server.pojo.login.LoginRequest;
 import com.punchsettle.server.pojo.user.NicknameRequest;
 import com.punchsettle.server.pojo.user.UserInfoVO;
+import com.punchsettle.server.service.manager.ITokenManager;
 import com.punchsettle.server.service.manager.IUserManager;
 import com.punchsettle.server.utiis.UserUtils;
 
+import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.error.WxErrorException;
 
 /**
  * @author tyuio
@@ -31,38 +36,50 @@ public class UserManagerImpl implements IUserManager {
     @Autowired
     private IUserService userService;
 
+    @Autowired
+    private CacheManager cacheManager;
+
+    @Autowired
+    private WxMaService wxMaService;
+
+    @Autowired
+    private ITokenManager tokenManager;
+
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public User getAndAddUser(User loginUserInfo) {
-        Assert.isNullInBusiness(loginUserInfo, "传入了空的登录对象");
-        Assert.isNullInBusiness(loginUserInfo.getOpenId(), "传入了空的openId");
+    public String login(LoginRequest request) throws WxErrorException {
+        // 微信登录
+        WxMaJscode2SessionResult wxMaJscode2SessionResult = wxMaService.jsCode2SessionInfo(request.getCode());
 
         // 获取用户记录
-        User user = userService.getByOpenId(loginUserInfo.getOpenId());
-        if (!Objects.isNull(user)) {
+        User user = userService.getByOpenId(wxMaJscode2SessionResult.getOpenid());
+
+        // 存在责更新用户信息,没有则创建新用户
+        if (Objects.isNull(user)) {
+            user = new User();
+            user.setOpenId(wxMaJscode2SessionResult.getOpenid());
+            user.setNickname(request.getNickname());
+            userService.insert(user);
+
+            // 构建缓存
+            cacheManager.getCache(CacheNameConstant.USER).put(user.getId(), user);
+        } else {
             User updateUser = new User();
             updateUser.setId(user.getId());
-            updateUser.setAvatar(loginUserInfo.getAvatar());
-            updateUser.setNickname(loginUserInfo.getNickname());
+            updateUser.setNickname(request.getNickname());
             userService.updateById(updateUser);
-            return user;
-        }
 
-        // 没有则创建新用户
-        loginUserInfo.setUnclaimedRewardNum(0);
-        loginUserInfo.setClaimedRewardNum(0);
-        loginUserInfo.setTotalRewardNum(0);
-        loginUserInfo.setLotteryInvestAmount(BigDecimal.ZERO);
-        loginUserInfo.setLotteryWinAmount(BigDecimal.ZERO);
-        userService.insert(loginUserInfo);
+            // 清除缓存
+            cacheManager.getCache(CacheNameConstant.USER).evict(user.getId());
+            cacheManager.getCache(CacheNameConstant.USER_VO).evict(user.getId());
+        }
 
-        return loginUserInfo;
+        // 创建token
+        return tokenManager.createToken(user.getId());
     }
 
     @Override
-    public UserInfoVO queryUserInfo() {
-        Long currentUserId = UserUtils.getCurrentUserId();
-        User user = userService.getById(currentUserId);
+    public UserInfoVO queryUserInfo(Long userId) {
+        User user = userService.getById(userId);
         UserInfoVO userInfoVO = new UserInfoVO();
         BeanUtils.copyProperties(user, userInfoVO);
         return userInfoVO;
@@ -70,9 +87,21 @@ public class UserManagerImpl implements IUserManager {
 
     @Override
     public void modifyNickname(NicknameRequest request) {
+        // 获取当前用户id
+        Long currentUserId = UserUtils.getCurrentUserId();
+        // 更新数据库
         User user = new User();
-        user.setId(UserUtils.getCurrentUserId());
+        user.setId(currentUserId);
         user.setNickname(request.getNickname());
         userService.updateById(user);
+        // 清除缓存
+        cacheManager.getCache(CacheNameConstant.USER).evict(currentUserId);
+        cacheManager.getCache(CacheNameConstant.USER_VO).evict(currentUserId);
+    }
+
+    @Override
+    @Cacheable(cacheNames = CacheNameConstant.USER, key = "#id", condition = "#id != null")
+    public User getByIdWithCache(Long id) {
+        return userService.getById(id);
     }
 }

+ 0 - 63
src/main/java/com/punchsettle/server/utiis/CacheUtils.java

@@ -1,63 +0,0 @@
-package com.punchsettle.server.utiis;
-
-import org.springframework.cache.Cache;
-import org.springframework.cache.CacheManager;
-
-/**
- * 缓存工具类
- */
-public class CacheUtils {
-
-    private static CacheManager cacheManager;
-
-    static {
-        cacheManager = SpringUtils.getBean(CacheManager.class);
-    }
-
-    /**
-     * 添加缓存
-     *
-     * @param cacheName 缓存名称
-     * @param key 缓存key
-     * @param value 缓存值
-     */
-    public static void put(String cacheName, String key, Object value) {
-        Cache cache = cacheManager.getCache(cacheName);
-        cache.put(key, value);
-    }
-
-    /**
-     * 获取缓存(泛型)
-     *
-     * @param cacheName 缓存名称
-     * @param key 缓存key
-     * @param clazz 缓存类
-     * @param <T> 返回值泛型
-     * @return
-     */
-    public static <T> T get(String cacheName, String key, Class<T> clazz) {
-        Cache cache = cacheManager.getCache(cacheName);
-        if (cache == null) {
-            return null;
-        }
-        Cache.ValueWrapper wrapper = cache.get(key);
-        if (wrapper == null) {
-            return null;
-        }
-        return (T)wrapper.get();
-    }
-
-    /**
-     * 失效缓存
-     *
-     * @param cacheName 缓存名称
-     * @param key 缓存key
-     */
-    public static void evict(String cacheName, String key) {
-        Cache cache = cacheManager.getCache(cacheName);
-        if (cache != null) {
-            cache.evict(key);
-        }
-    }
-
-}

+ 3 - 3
src/main/java/com/punchsettle/server/utiis/TokenUtils.java

@@ -7,7 +7,7 @@ import com.auth0.jwt.JWT;
 import com.auth0.jwt.JWTVerifier;
 import com.auth0.jwt.algorithms.Algorithm;
 import com.auth0.jwt.interfaces.Claim;
-import com.punchsettle.server.core.config.BizConfig;
+import com.punchsettle.server.core.config.BizProperties;
 
 /**
  * @className JwtUtils
@@ -29,8 +29,8 @@ public class TokenUtils {
     private static JWTVerifier jwtVerifier;
 
     static {
-        BizConfig bizConfig = SpringUtils.getBean(BizConfig.class);
-        tokenAlgorithm = Algorithm.HMAC256(bizConfig.getTokenPassword());
+        BizProperties bizProperties = SpringUtils.getBean(BizProperties.class);
+        tokenAlgorithm = Algorithm.HMAC256(bizProperties.getTokenPassword());
         jwtVerifier = JWT.require(tokenAlgorithm).build();
     }
 

+ 17 - 1
src/main/java/com/punchsettle/server/utiis/UserUtils.java

@@ -1,5 +1,10 @@
 package com.punchsettle.server.utiis;
 
+import com.punchsettle.server.common.exception.BusinessException;
+import com.punchsettle.server.common.utils.Assert;
+
+import java.util.Optional;
+
 /**
  * @author tyuio
  * @version 1.0.0
@@ -20,9 +25,20 @@ public class UserUtils {
 
     /**
      * 获取当前用户的ID
+     * @throws BusinessException 获取不到用户ID时会抛出异常
      * @return
      */
     public static Long getCurrentUserId() {
-        return threadLocal.get();
+        return Optional.ofNullable(threadLocal.get()).orElseThrow(() -> BusinessException.fail("无法获取当前用户ID"));
+    }
+
+    /**
+     * 获取当前用户的ID,没有则使用默认值
+     * @param userId 默认值用户ID
+     * @return 默认值
+     */
+    public static Long getCurrentUserId(Long userId) {
+        Assert.isNull(userId, "请传入默认值用户ID");
+        return Optional.ofNullable(threadLocal.get()).orElse(userId);
     }
 }

+ 14 - 8
src/main/resources/application-dev.yaml

@@ -1,16 +1,22 @@
 spring:
   datasource:
     username: root
-    url: jdbc:mysql://localhost:3306/punch_settle?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
+    password: 12345678
+    url: jdbc:mysql://192.168.123.242:3306/punch_settle?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
 
+# 微信相关配置
+wx:
+  # 小程序
+  miniapp:
+    appid: ENC(qw0NNe6VoMWvpoGKZLitIJ8HWMHBF+5FbCAVQyJGdxREenOAaEB1oQ==)
+    secret: ENC(i2ZFfTtFRvAUqpXSW4CQd6HEAMTc0Ltc1dVbhDiIxe4a5H7BbTV3bfiGhFvtRszOMIgyQDoxeZI=)
+
+# 系统相关配置
 biz:
-  wechat:
-    mini-program:
-      url: https://api.weixin.qq.com
-      app-id: ENC(qw0NNe6VoMWvpoGKZLitIJ8HWMHBF+5FbCAVQyJGdxREenOAaEB1oQ==)
-      secret: ENC(i2ZFfTtFRvAUqpXSW4CQd6HEAMTc0Ltc1dVbhDiIxe4a5H7BbTV3bfiGhFvtRszOMIgyQDoxeZI=)
-  token:
-    password: 12123
+  # Json Token 密码
+  tokenPassword: 12123
+  # Json Token过期时间,单位:天
+  tokenExpire: 7
 
 logging:
   level:

+ 12 - 7
src/main/resources/application-prod.yaml

@@ -4,11 +4,16 @@ spring:
     password: ENC(QCxQN/qaVQO9I9N4MjiSfvzF2x4iQPNQ3kyP+V5/pg/2sdAEJiWOzw==)
     url: ENC(F+BIBjMNwhuPYRgxRFXipJE9FmRWmgalGZkTfFBtaJZedsvOqmX+4IdrSVtZwN+a5Su2LduWTF6LaYW/oC0t9Jc2ryYBUwgdQJgFxtTBOtzRWY5FQGkjClt36Qn9oiLyt79B/XarXToDKRI/fKoBUqFLPf4RaiSfYXjgRe0r5FLQhHcE6qoK5pgzYQeG9AY+NZThMhxUiXaBnW0x7W9pu8+PTexD4amZ)
 
+# 微信相关配置
+wx:
+  # 小程序
+  miniapp:
+    appid: ENC(UoqAiNhs/NSeGxkqyBnWMfEsoivYiZXQNvRyBOwXC1Sl7BGnQfPJaQ==)
+    secret: ENC(kUivDH5QROfDWN6LolR9CrqIIYoanll1FkxXyFD1DpYhVy47a6dtLTfH0CrpOsq6pQidtof0/PU=)
+
+# 系统相关配置
 biz:
-  wechat:
-    mini-program:
-      url: https://api.weixin.qq.com
-      app-id: ENC(UoqAiNhs/NSeGxkqyBnWMfEsoivYiZXQNvRyBOwXC1Sl7BGnQfPJaQ==)
-      secret: ENC(kUivDH5QROfDWN6LolR9CrqIIYoanll1FkxXyFD1DpYhVy47a6dtLTfH0CrpOsq6pQidtof0/PU=)
-  token:
-    password: ENC(nEvMwnWzB6W9pEmq9sSP4oHzIA9VkMmCsp67MZbyeaDv4awBEGOsyA==)
+  # Json Token 密码
+  tokenPassword: ENC(nEvMwnWzB6W9pEmq9sSP4oHzIA9VkMmCsp67MZbyeaDv4awBEGOsyA==)
+  # Json Token过期时间,单位:天
+  tokenExpire: 7

+ 0 - 18
src/main/resources/application-sit.yaml

@@ -1,18 +0,0 @@
-spring:
-  datasource:
-    username: root
-    password: 12345678
-    url: jdbc:mysql://192.168.123.242:3306/punch_settle?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true
-
-biz:
-  wechat:
-    mini-program:
-      url: https://api.weixin.qq.com
-      app-id: ENC(qw0NNe6VoMWvpoGKZLitIJ8HWMHBF+5FbCAVQyJGdxREenOAaEB1oQ==)
-      secret: ENC(i2ZFfTtFRvAUqpXSW4CQd6HEAMTc0Ltc1dVbhDiIxe4a5H7BbTV3bfiGhFvtRszOMIgyQDoxeZI=)
-  token:
-    password: 12123
-
-logging:
-  level:
-    com.punchsettle.server: debug

+ 0 - 7
src/main/resources/application.yaml

@@ -15,10 +15,3 @@ jasypt:
     algorithm: PBEWithMD5AndDES
     salt-generator-classname: org.jasypt.salt.RandomSaltGenerator
     iv-generator-classname: org.jasypt.iv.RandomIvGenerator
-
-biz:
-  wechat:
-    mini-program:
-      url: https://api.weixin.qq.com
-  token:
-    expire: 7