|
|
@@ -130,20 +130,7 @@ public class H5AuthServiceImpl implements H5AuthService {
|
|
|
|
|
|
log.info("获取用户信息成功,nickname: {}, openid: {}", nickname, openid);
|
|
|
|
|
|
- // 3. 检查用户是否已注册
|
|
|
- LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.eq(User::getOpenid, openid);
|
|
|
- User user = userMapper.selectOne(wrapper);
|
|
|
-
|
|
|
- boolean isRegistered = user != null;
|
|
|
- String token = null;
|
|
|
-
|
|
|
- if (isRegistered) {
|
|
|
- // 老用户,直接生成token
|
|
|
- token = jwtUtil.generateToken(user.getId());
|
|
|
- log.info("老用户登录,userId: {}, token已生成", user.getId());
|
|
|
- }
|
|
|
-
|
|
|
+ // 只返回微信用户信息,不做注册检查
|
|
|
return WxH5UserInfoVO.builder()
|
|
|
.openid(openid)
|
|
|
.unionid(unionid)
|
|
|
@@ -153,8 +140,6 @@ public class H5AuthServiceImpl implements H5AuthService {
|
|
|
.country(country)
|
|
|
.province(province)
|
|
|
.city(city)
|
|
|
- .isRegistered(isRegistered)
|
|
|
- .token(token)
|
|
|
.build();
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
@@ -163,33 +148,46 @@ public class H5AuthServiceImpl implements H5AuthService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public boolean checkUserRegistered(String openid) {
|
|
|
+ LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(User::getOpenid, openid);
|
|
|
+ User user = userMapper.selectOne(wrapper);
|
|
|
+ return user != null;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public LoginVO phoneLogin(H5PhoneLoginDTO dto) throws Exception {
|
|
|
try {
|
|
|
- log.info("手机号登录,openid: {}, phone: {}", dto.getOpenid(), dto.getPhone());
|
|
|
+ log.info("手机号登录/注册,openid: {}, phone: {}", dto.getOpenid(), dto.getPhone());
|
|
|
|
|
|
- // 直接使用用户输入的手机号,不需要验证码验证
|
|
|
+ // 验证手机号
|
|
|
String phone = dto.getPhone();
|
|
|
|
|
|
if (StrUtil.isBlank(phone)) {
|
|
|
throw new RuntimeException("手机号不能为空");
|
|
|
}
|
|
|
|
|
|
- // 简单的手机号格式验证
|
|
|
+ // 手机号格式验证
|
|
|
if (!phone.matches("^1[3-9]\\d{9}$")) {
|
|
|
throw new RuntimeException("手机号格式不正确");
|
|
|
}
|
|
|
|
|
|
log.info("使用手机号: {}", phone);
|
|
|
|
|
|
- // 2. 查询用户是否存在
|
|
|
+ // 验证密码不能为空
|
|
|
+ if (StrUtil.isBlank(dto.getPassword())) {
|
|
|
+ throw new RuntimeException("密码不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据openid查询用户
|
|
|
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.eq(User::getPhone, phone);
|
|
|
+ wrapper.eq(User::getOpenid, dto.getOpenid());
|
|
|
User user = userMapper.selectOne(wrapper);
|
|
|
|
|
|
if (user == null) {
|
|
|
- // 新用户,创建账号
|
|
|
+ // 新用户注册
|
|
|
if (StrUtil.isBlank(dto.getNickname())) {
|
|
|
throw new RuntimeException("昵称不能为空");
|
|
|
}
|
|
|
@@ -198,6 +196,7 @@ public class H5AuthServiceImpl implements H5AuthService {
|
|
|
.openid(dto.getOpenid())
|
|
|
.unionid(dto.getUnionid())
|
|
|
.phone(phone)
|
|
|
+ .password(dto.getPassword())
|
|
|
.nickname(dto.getNickname())
|
|
|
.avatar(dto.getAvatarUrl())
|
|
|
.status(0)
|
|
|
@@ -208,26 +207,16 @@ public class H5AuthServiceImpl implements H5AuthService {
|
|
|
userMapper.insert(user);
|
|
|
log.info("创建新用户成功,userId: {}, phone: {}", user.getId(), phone);
|
|
|
} else {
|
|
|
- // 老用户,更新openid和unionid
|
|
|
- boolean needUpdate = false;
|
|
|
-
|
|
|
- if (StrUtil.isBlank(user.getOpenid())) {
|
|
|
- user.setOpenid(dto.getOpenid());
|
|
|
- needUpdate = true;
|
|
|
+ // 老用户登录,验证手机号和密码
|
|
|
+ if (!phone.equals(user.getPhone())) {
|
|
|
+ throw new RuntimeException("手机号不正确");
|
|
|
}
|
|
|
|
|
|
- if (StrUtil.isNotBlank(dto.getUnionid()) && StrUtil.isBlank(user.getUnionid())) {
|
|
|
- user.setUnionid(dto.getUnionid());
|
|
|
- needUpdate = true;
|
|
|
+ if (!dto.getPassword().equals(user.getPassword())) {
|
|
|
+ throw new RuntimeException("密码不正确");
|
|
|
}
|
|
|
|
|
|
- if (needUpdate) {
|
|
|
- user.setUpdateTime(LocalDateTime.now());
|
|
|
- userMapper.updateById(user);
|
|
|
- log.info("更新用户微信信息,userId: {}", user.getId());
|
|
|
- }
|
|
|
-
|
|
|
- log.info("老用户登录,userId: {}", user.getId());
|
|
|
+ log.info("老用户登录成功,userId: {}", user.getId());
|
|
|
}
|
|
|
|
|
|
// 3. 生成token
|
|
|
@@ -242,10 +231,4 @@ public class H5AuthServiceImpl implements H5AuthService {
|
|
|
throw new Exception("登录失败: " + e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- @Override
|
|
|
- public void sendSmsCode(String phone) throws Exception {
|
|
|
- // 不再需要短信验证码功能,使用微信手机号快速验证
|
|
|
- throw new UnsupportedOperationException("请使用微信手机号快速验证");
|
|
|
- }
|
|
|
}
|