liuchengsen 1 месяц назад
Родитель
Сommit
97475eeaa7

+ 1 - 1
zhijiayun-gateway/src/main/resources/application.yml

@@ -46,7 +46,7 @@ wechat:
 external-system:
   miniapp:
     base-url: ${EXTERNAL_MINIAPP_API_URL:}
-    api-key: ${EXTERNAL_MINIAPP_API_KEY:}
+    api-key: ${EXTERNAL_MINIAPP_API_KEY:a3f8c21e67b94d0e5f1a6c8d3b9e2071}
     connect-timeout: 5000
     read-timeout: 10000
 

+ 8 - 0
zhijiayun-gateway/src/test/resources/test-schema.sql

@@ -27,6 +27,7 @@ CREATE TABLE IF NOT EXISTS t_user (
     id              BIGINT AUTO_INCREMENT PRIMARY KEY,
     phone           VARCHAR(20)   DEFAULT NULL,
     nickname        VARCHAR(64)   DEFAULT NULL,
+    user_name       VARCHAR(64)   DEFAULT NULL COMMENT '用户名(第三方系统传入)',
     avatar          VARCHAR(512)  DEFAULT NULL,
     password        VARCHAR(128)  DEFAULT NULL,
     wechat_open_id  VARCHAR(64)   DEFAULT NULL,
@@ -206,6 +207,13 @@ PREPARE stmt FROM @sql;
 EXECUTE stmt;
 DEALLOCATE PREPARE stmt;
 
+-- 兼容升级:为 t_user 添加 user_name 列
+SET @col_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 't_user' AND COLUMN_NAME = 'user_name');
+SET @sql = IF(@col_exists = 0, 'ALTER TABLE t_user ADD COLUMN user_name VARCHAR(64) DEFAULT NULL COMMENT ''用户名(第三方系统传入)'' AFTER nickname', 'SELECT 1');
+PREPARE stmt FROM @sql;
+EXECUTE stmt;
+DEALLOCATE PREPARE stmt;
+
 -- 搜索记录表(完整比价快照)
 CREATE TABLE IF NOT EXISTS t_search_record (
     id                BIGINT        NOT NULL COMMENT '主键ID(雪花算法)',

+ 3 - 0
zhijiayun-user/src/main/java/com/xuekairui/user/dto/UserInfoResponse.java

@@ -29,6 +29,9 @@ public class UserInfoResponse {
     /** 昵称 */
     private String nickname;
 
+    /** 用户名(第三方系统传入的原始username) */
+    private String userName;
+
     /** 头像URL */
     private String avatar;
 

+ 3 - 0
zhijiayun-user/src/main/java/com/xuekairui/user/entity/User.java

@@ -29,6 +29,9 @@ public class User {
     /** 昵称 */
     private String nickname;
 
+    /** 用户名(第三方系统传入的原始username,与昵称分离存储) */
+    private String userName;
+
     /** 头像URL */
     private String avatar;
 

+ 8 - 3
zhijiayun-user/src/main/java/com/xuekairui/user/service/AuthService.java

@@ -259,6 +259,7 @@ public class AuthService {
             user = User.builder()
                     .phone(request.getPhone())
                     .nickname(nickname)
+                    .userName(request.getUsername())
                     .pharmacyName(request.getPharmacyName())
                     .province(request.getProvince())
                     .city(request.getCity())
@@ -279,11 +280,14 @@ public class AuthService {
             }
         } else {
             // 已存在用户:更新第三方传入的信息(非空字段才覆盖,避免清空已有数据)
-            // username 优先级高于 nickname,都保存到 nickname 字段
+            // userName 独立存储原始用户名;nickname 优先取 nickname,其次 username
             if (request.getUsername() != null && !request.getUsername().isBlank()) {
-                user.setNickname(request.getUsername());
-            } else if (request.getNickname() != null && !request.getNickname().isBlank()) {
+                user.setUserName(request.getUsername());
+            }
+            if (request.getNickname() != null && !request.getNickname().isBlank()) {
                 user.setNickname(request.getNickname());
+            } else if (request.getUsername() != null && !request.getUsername().isBlank()) {
+                user.setNickname(request.getUsername());
             }
             if (request.getPharmacyName() != null && !request.getPharmacyName().isBlank()) {
                 user.setPharmacyName(request.getPharmacyName());
@@ -712,6 +716,7 @@ public class AuthService {
                 .id(user.getId())
                 .phone(ValidateUtil.maskPhone(user.getPhone()))
                 .nickname(user.getNickname())
+                .userName(user.getUserName())
                 .avatar(user.getAvatar())
                 .wechatBound(user.getWechatOpenId() != null)
                 .levelInfo(levelInfo)