Ver código fonte

开发日志分页 修改redis流程

lutong 1 mês atrás
pai
commit
0d79a921ce

+ 12 - 8
alien-dining/src/main/java/shop/alien/dining/service/impl/DiningUserServiceImpl.java

@@ -93,8 +93,8 @@ public class DiningUserServiceImpl implements DiningUserService {
             return null;
         }
 
-        // 5. 生成并存储 token
-        String token = generateAndStoreToken(openid, user);
+        // 5. 生成并存储 token(传入本次解析的手机号,确保有手机号时一定写入 miniprogram_user_{phone})
+        String token = generateAndStoreToken(openid, user, parsedPhone);
 
         // 6. 构建返回对象,优先使用解析后的手机号返回给前端
         return buildDiningUserVo(user, token, openid, parsedPhone);
@@ -283,19 +283,23 @@ public class DiningUserServiceImpl implements DiningUserService {
 
     /**
      * 生成并存储 token
+     * @param openid 微信 openid
+     * @param user 用户实体(可能尚未持久化手机号)
+     * @param currentLoginPhone 本次登录解析到的手机号(可选),有则优先用其写入 miniprogram_user_{phone},避免只存 openid 不存 phone 的情况
      */
-    private String generateAndStoreToken(String openid, LifeUser user) {
+    private String generateAndStoreToken(String openid, LifeUser user, String currentLoginPhone) {
         // 构建 token 信息
         Map<String, String> tokenMap = buildTokenMap(openid, user);
         String userName = StringUtils.isNotBlank(user.getUserName()) ? user.getUserName() : "用户";
         String token = generateToken(openid, userName, tokenMap);
 
-        // 存入 Redis(使用 openid 作为 key)
+        // 存入 Redis(使用 openid 作为 key,始终写入
         baseRedisService.setString(REDIS_KEY_TOKEN_PREFIX + openid, token, TOKEN_EXPIRE_SECONDS);
-        
-        // 兼容旧版本:如果用户有手机号,也存储
-        if (StringUtils.isNotBlank(user.getUserPhone())) {
-            baseRedisService.setString(REDIS_KEY_USER_PHONE_PREFIX + user.getUserPhone(), token, TOKEN_EXPIRE_SECONDS);
+
+        // 兼容旧版本:有手机号则同时按手机号存一份(优先用本次登录解析到的手机号,否则用用户实体中的手机号)
+        String phoneToStore = StringUtils.isNotBlank(currentLoginPhone) ? currentLoginPhone : user.getUserPhone();
+        if (StringUtils.isNotBlank(phoneToStore)) {
+            baseRedisService.setString(REDIS_KEY_USER_PHONE_PREFIX + phoneToStore, token, TOKEN_EXPIRE_SECONDS);
         }
 
         return token;

+ 17 - 22
alien-dining/src/main/resources/logback-spring.xml

@@ -40,38 +40,30 @@
     </appender>
 
     <!--2. 输出到文档-->
-    <!-- DEBUG 日志 -->
+    <!-- DEBUG 日志:按 1MB 大小滚动,满 1MB 自动切到下一个文件 -->
     <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!-- 当前的日志文件存放路径 -->
         <file>${logging.path}/DEBUG.log</file>
-        <!-- 日志滚动策略 -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 历史日志文件的存放路径和名称 -->
-            <fileNamePattern>${logging.path}/%d{yyyy-MM-dd}_${FILENAME}_DEBUG.log.gz</fileNamePattern>
-            <!-- 日志文件最大的保存历史 数量-->
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/%d{yyyy-MM-dd}_${FILENAME}_DEBUG.%i.log.gz</fileNamePattern>
+            <maxFileSize>1MB</maxFileSize>
             <maxHistory>${log.maxHistory}</maxHistory>
         </rollingPolicy>
         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
             <pattern>${FILE_LOG_PATTERN}</pattern>
         </encoder>
-        <!--日志文件最大的大小-->
-        <!--        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">-->
-        <!--            <MaxFileSize>10MB</MaxFileSize>-->
-        <!--        </triggeringPolicy>-->
-        <!-- 此日志文档只记录debug级别的 -->
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>  <!-- 用过滤器,只接受DEBUG级别的日志信息,其余全部过滤掉 -->
+            <onMatch>ACCEPT</onMatch>
             <onMismatch>DENY</onMismatch>
         </filter>
     </appender>
 
-    <!-- INFO 日志 -->
+    <!-- INFO 日志:按 1MB 大小滚动 -->
     <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${logging.path}/INFO.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logging.path}/%d{yyyy-MM-dd}_${FILENAME}_INFO.log.gz</fileNamePattern>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/%d{yyyy-MM-dd}_${FILENAME}_INFO.%i.log.gz</fileNamePattern>
+            <maxFileSize>1MB</maxFileSize>
             <maxHistory>${log.maxHistory}</maxHistory>
         </rollingPolicy>
         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
@@ -84,11 +76,12 @@
         </filter>
     </appender>
 
-    <!-- WARN 日志 -->
+    <!-- WARN 日志:按 1MB 大小滚动 -->
     <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${logging.path}/WARN.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logging.path}/%d{yyyy-MM-dd}_${FILENAME}_WARN.log.gz</fileNamePattern>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/%d{yyyy-MM-dd}_${FILENAME}_WARN.%i.log.gz</fileNamePattern>
+            <maxFileSize>1MB</maxFileSize>
             <maxHistory>${log.maxHistory}</maxHistory>
         </rollingPolicy>
         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
@@ -101,10 +94,12 @@
         </filter>
     </appender>
 
+    <!-- ERROR 日志:按 1MB 大小滚动 -->
     <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${logging.path}/ERROR.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${logging.path}/%d{yyyy-MM-dd}_${FILENAME}_ERROR.log.gz</fileNamePattern>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/%d{yyyy-MM-dd}_${FILENAME}_ERROR.%i.log.gz</fileNamePattern>
+            <maxFileSize>1MB</maxFileSize>
             <maxHistory>${log.maxHistory}</maxHistory>
         </rollingPolicy>
         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">