lrj
20 小时以前 9f8395fab13ca4b230a0f7d62636e209745c91d4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package com.rongyichuang.auth;
 
import com.rongyichuang.auth.api.AuthGraphqlApi;
import com.rongyichuang.auth.dto.WxLoginRequest;
import com.rongyichuang.auth.dto.WxLoginResponse;
import com.rongyichuang.auth.entity.WxLoginRecord;
import com.rongyichuang.auth.repository.WxLoginRecordRepository;
import com.rongyichuang.user.entity.User;
import com.rongyichuang.user.repository.UserRepository;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.Optional;
 
@SpringBootTest
@Transactional
public class WxLoginTest {
 
    @Autowired
    private AuthGraphqlApi authGraphqlApi;
 
    @Autowired
    private UserRepository userRepository;
 
    @Autowired
    private WxLoginRecordRepository wxLoginRecordRepository;
 
    @Test
    public void testWxLoginNewUser() {
        try {
            System.out.println("=== 测试微信登录(新用户) ===");
            
            WxLoginRequest request = new WxLoginRequest();
            request.setWxOpenid("test_openid_001");
            request.setWxUnionid("test_unionid_001");
            request.setLoginIp("192.168.1.100");
            request.setDeviceInfo("iPhone 13");
            request.setSessionKey("test_session_key");
            request.setPhoneAuthorized(false);
            
            System.out.println("微信登录请求: openid=" + request.getWxOpenid() + ", unionid=" + request.getWxUnionid());
            
            WxLoginResponse response = authGraphqlApi.wxLogin(request);
            
            System.out.println("微信登录成功!");
            System.out.println("Token: " + response.getToken());
            System.out.println("用户ID: " + response.getUserInfo().getUserId());
            System.out.println("用户名: " + response.getUserInfo().getName());
            System.out.println("用户类型: " + response.getUserInfo().getUserType());
            System.out.println("是否新用户: " + response.getIsNewUser());
            System.out.println("登录记录ID: " + response.getLoginRecordId());
            
            // 验证用户是否创建
            Optional<User> userOpt = userRepository.findByWxOpenid(request.getWxOpenid());
            if (userOpt.isPresent()) {
                System.out.println("用户创建成功,ID: " + userOpt.get().getId());
            }
            
            // 验证登录记录是否创建
            Optional<WxLoginRecord> recordOpt = wxLoginRecordRepository.findById(response.getLoginRecordId());
            if (recordOpt.isPresent()) {
                WxLoginRecord record = recordOpt.get();
                System.out.println("登录记录创建成功,openid: " + record.getWxOpenid() + ", 登录时间: " + record.getLoginTime());
            }
            
        } catch (Exception e) {
            System.err.println("微信登录失败: " + e.getMessage());
            e.printStackTrace();
        }
    }
 
    @Test
    public void testWxLoginExistingUser() {
        try {
            System.out.println("=== 测试微信登录(已存在用户) ===");
            
            // 先创建一个用户
            User existingUser = new User();
            existingUser.setWxOpenid("existing_openid_001");
            existingUser.setWxUnionid("existing_unionid_001");
            existingUser.setName("已存在的微信用户");
            existingUser = userRepository.save(existingUser);
            System.out.println("预先创建用户,ID: " + existingUser.getId());
            
            WxLoginRequest request = new WxLoginRequest();
            request.setWxOpenid("existing_openid_001");
            request.setWxUnionid("existing_unionid_001");
            request.setLoginIp("192.168.1.101");
            request.setDeviceInfo("Android Phone");
            request.setSessionKey("test_session_key_2");
            request.setPhoneAuthorized(true);
            request.setPhone("13800000001");
            
            System.out.println("微信登录请求: openid=" + request.getWxOpenid());
            
            WxLoginResponse response = authGraphqlApi.wxLogin(request);
            
            System.out.println("微信登录成功!");
            System.out.println("用户ID: " + response.getUserInfo().getUserId());
            System.out.println("用户名: " + response.getUserInfo().getName());
            System.out.println("是否新用户: " + response.getIsNewUser());
            System.out.println("登录记录ID: " + response.getLoginRecordId());
            
            // 验证登录记录
            Optional<WxLoginRecord> recordOpt = wxLoginRecordRepository.findById(response.getLoginRecordId());
            if (recordOpt.isPresent()) {
                WxLoginRecord record = recordOpt.get();
                System.out.println("登录记录: 手机号授权=" + record.getPhoneAuthorized() + ", 授权时间=" + record.getPhoneAuthTime());
            }
            
        } catch (Exception e) {
            System.err.println("微信登录失败: " + e.getMessage());
            e.printStackTrace();
        }
    }
}