瀏覽代碼

h5小程序登录互修改

Zhangbw 1 月之前
父節點
當前提交
ccd4c464c4
共有 1 個文件被更改,包括 16 次插入9 次删除
  1. 16 9
      src/main/java/com/yingpai/gupiao/service/impl/H5AuthServiceImpl.java

+ 16 - 9
src/main/java/com/yingpai/gupiao/service/impl/H5AuthServiceImpl.java

@@ -181,10 +181,10 @@ public class H5AuthServiceImpl implements H5AuthService {
                 throw new RuntimeException("密码不能为空");
             }
 
-            // 根据openid查询用户
-            LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
-            wrapper.eq(User::getOpenid, dto.getOpenid());
-            User user = userMapper.selectOne(wrapper);
+            // 先根据手机号查询用户(支持小程序注册的用户在H5登录)
+            LambdaQueryWrapper<User> phoneWrapper = new LambdaQueryWrapper<>();
+            phoneWrapper.eq(User::getPhone, phone);
+            User user = userMapper.selectOne(phoneWrapper);
 
             if (user == null) {
                 // 新用户注册
@@ -207,15 +207,22 @@ public class H5AuthServiceImpl implements H5AuthService {
                 userMapper.insert(user);
                 log.info("创建新用户成功,userId: {}, phone: {}", user.getId(), phone);
             } else {
-                // 老用户登录,验证手机号和密码
-                if (!phone.equals(user.getPhone())) {
-                    throw new RuntimeException("手机号不正确");
-                }
-
+                // 老用户登录,验证密码
                 if (!dto.getPassword().equals(user.getPassword())) {
                     throw new RuntimeException("密码不正确");
                 }
 
+                // 如果用户没有H5的openid,则更新(支持小程序用户首次在H5登录)
+                if (user.getOpenid() == null || user.getOpenid().isEmpty()) {
+                    user.setOpenid(dto.getOpenid());
+                    if (dto.getUnionid() != null && (user.getUnionid() == null || user.getUnionid().isEmpty())) {
+                        user.setUnionid(dto.getUnionid());
+                    }
+                    user.setUpdateTime(LocalDateTime.now());
+                    userMapper.updateById(user);
+                    log.info("更新用户H5 openid,userId: {}", user.getId());
+                }
+
                 log.info("老用户登录成功,userId: {}", user.getId());
             }