From 4c2dd7fdd86ddfad69611a5e825ff4a0cfab3c06 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期四, 30 四月 2026 22:03:06 +0800
Subject: [PATCH] fix:登录注册修改
---
tcm-training-admin-backend/src/test/java/com/tcm/training/admin/app/auth/service/AppAuthServiceTest.java | 65 ++++++++++++++++++++++++++++++++
1 files changed, 65 insertions(+), 0 deletions(-)
diff --git a/tcm-training-admin-backend/src/test/java/com/tcm/training/admin/app/auth/service/AppAuthServiceTest.java b/tcm-training-admin-backend/src/test/java/com/tcm/training/admin/app/auth/service/AppAuthServiceTest.java
index b3b383d..41dd1a6 100644
--- a/tcm-training-admin-backend/src/test/java/com/tcm/training/admin/app/auth/service/AppAuthServiceTest.java
+++ b/tcm-training-admin-backend/src/test/java/com/tcm/training/admin/app/auth/service/AppAuthServiceTest.java
@@ -11,6 +11,7 @@
import com.tcm.training.admin.app.auth.vo.AppLoginResponse;
import com.tcm.training.admin.app.auth.vo.AppPasswordResetVerifyResponse;
import com.tcm.training.admin.app.auth.vo.AppSmsCodeSendResponse;
+import com.tcm.training.admin.app.auth.exception.InviteCodeRequiredException;
import com.tcm.training.admin.app.share.service.AppShareService;
import com.tcm.training.admin.member.entity.AppUser;
import com.tcm.training.admin.member.mapper.UserMapper;
@@ -276,6 +277,7 @@
AppWechatLoginRequest request = new AppWechatLoginRequest();
request.setAccessToken("access-token");
request.setOpenid("openid-new");
+ request.setInviteCode("ABC123");
AppWechatUserProfile profile = new AppWechatUserProfile();
profile.setOpenid("openid-new");
@@ -289,6 +291,7 @@
when(appWechatAuthClient.resolveUserProfile(request)).thenReturn(profile);
when(userMapper.selectOne(any())).thenReturn(null);
+ when(appShareService.resolveInviteBindingTarget("ABC123")).thenReturn(buildInviteTarget());
when(appAuthSessionService.getTokenInfo()).thenReturn(tokenInfo);
AppLoginResponse response = appAuthService.wechatLogin(request);
@@ -301,7 +304,31 @@
assertEquals("https://cdn.example/new-avatar.png", appUserCaptor.getValue().getAvatar());
assertEquals(Integer.valueOf(1), appUserCaptor.getValue().getGender());
assertEquals(Integer.valueOf(0), appUserCaptor.getValue().getType());
+ assertEquals(Long.valueOf(10L), appUserCaptor.getValue().getClinicId());
+ assertEquals(Long.valueOf(20L), appUserCaptor.getValue().getSuperiorClinicUserId());
assertEquals("new-token", response.getToken());
+ }
+
+ /**
+ * 微信首次登录未携带邀请码时应提示联系管理员获取。
+ */
+ @Test
+ void wechatLoginShouldRequireInviteCodeWhenOpenidNotExists() {
+ AppWechatLoginRequest request = new AppWechatLoginRequest();
+ request.setAccessToken("access-token");
+ request.setOpenid("openid-new");
+
+ AppWechatUserProfile profile = new AppWechatUserProfile();
+ profile.setOpenid("openid-new");
+
+ when(appWechatAuthClient.resolveUserProfile(request)).thenReturn(profile);
+ when(userMapper.selectOne(any())).thenReturn(null);
+
+ InviteCodeRequiredException exception = assertThrows(InviteCodeRequiredException.class,
+ () -> appAuthService.wechatLogin(request));
+
+ assertEquals("暂无邀请码,请联系管理员获取", exception.getMessage());
+ verify(userMapper, never()).insert(any());
}
/**
@@ -348,6 +375,7 @@
AppAppleLoginRequest request = new AppAppleLoginRequest();
request.setIdentityToken("identity-token");
request.setUserIdentifier("apple-user-new");
+ request.setInviteCode("ABC123");
AppAppleUserProfile profile = new AppAppleUserProfile();
profile.setSubject("apple-subject-new");
@@ -359,6 +387,7 @@
when(appAppleAuthClient.resolveUserProfile(request)).thenReturn(profile);
when(userMapper.selectOne(any())).thenReturn(null);
+ when(appShareService.resolveInviteBindingTarget("ABC123")).thenReturn(buildInviteTarget());
when(appAuthSessionService.getTokenInfo()).thenReturn(tokenInfo);
AppLoginResponse response = appAuthService.appleLogin(request);
@@ -370,7 +399,32 @@
assertEquals("apple-user-new", appUserCaptor.getValue().getAppleUserIdentifier());
assertEquals("苹果用户", appUserCaptor.getValue().getNickname());
assertEquals(Integer.valueOf(0), appUserCaptor.getValue().getType());
+ assertEquals(Long.valueOf(10L), appUserCaptor.getValue().getClinicId());
+ assertEquals(Long.valueOf(20L), appUserCaptor.getValue().getSuperiorClinicUserId());
assertEquals("apple-new-token", response.getToken());
+ }
+
+ /**
+ * 苹果首次登录未携带邀请码时应提示联系管理员获取。
+ */
+ @Test
+ void appleLoginShouldRequireInviteCodeWhenSubjectNotExists() {
+ AppAppleLoginRequest request = new AppAppleLoginRequest();
+ request.setIdentityToken("identity-token");
+ request.setUserIdentifier("apple-user-new");
+
+ AppAppleUserProfile profile = new AppAppleUserProfile();
+ profile.setSubject("apple-subject-new");
+ profile.setUserIdentifier("apple-user-new");
+
+ when(appAppleAuthClient.resolveUserProfile(request)).thenReturn(profile);
+ when(userMapper.selectOne(any())).thenReturn(null);
+
+ InviteCodeRequiredException exception = assertThrows(InviteCodeRequiredException.class,
+ () -> appAuthService.appleLogin(request));
+
+ assertEquals("暂无邀请码,请联系管理员获取", exception.getMessage());
+ verify(userMapper, never()).insert(any());
}
/**
@@ -391,6 +445,17 @@
}
/**
+ * 构造邀请绑定目标。
+ */
+ private AppShareService.InviteBindingTarget buildInviteTarget() {
+ AppShareService.InviteBindingTarget target = new AppShareService.InviteBindingTarget();
+ target.setInviteCode("ABC123");
+ target.setClinicId(10L);
+ target.setSuperiorClinicUserId(20L);
+ return target;
+ }
+
+ /**
* 统一构造启用中的 APP 用户测试桩。
*/
private AppUser buildEnabledUser(String phone, String password) {
--
Gitblit v1.7.1