小程序登录相关

This commit is contained in:
张松 2025-02-11 17:46:22 +08:00
parent efe0407560
commit de857dd7dd
1 changed files with 17 additions and 11 deletions

View File

@ -9,7 +9,9 @@ import com.czg.account.dto.auth.UserAuthorizationLoginDTO;
import com.czg.account.dto.auth.WechatRawDataDTO;
import com.czg.account.entity.UserInfo;
import com.czg.account.service.UserAuthorizationService;
import com.czg.enums.StatusEnum;
import com.czg.enums.UserAuthSourceEnum;
import com.czg.exception.CzgException;
import com.czg.sa.StpKit;
import com.czg.account.service.UserInfoService;
import com.czg.utils.AlipayUtil;
@ -32,31 +34,35 @@ public class UserAuthorizationServiceImpl implements UserAuthorizationService {
@Override
public LoginTokenDTO login(UserAuthorizationLoginDTO userAuthorizationLoginDTO) {
UserInfo userInfo;
String openId;
if (UserAuthSourceEnum.WECHAT.getValue().equals(userAuthorizationLoginDTO.getSource())) {
openId = wechatAuthUtil.getSessionKeyOrOpenId(userAuthorizationLoginDTO.getCode());
userInfo = userInfoService.queryChain().eq(UserInfo::getWechatOpenId, openId).one();
}else {
openId = alipayUtil.getOpenId(userAuthorizationLoginDTO.getCode());
userInfo = userInfoService.queryChain().eq(UserInfo::getAlipayOpenId, openId).one();
}
if (ObjectUtil.isNull(userInfo)) {
userInfo = new UserInfo();
userInfo = userInfo == null ? new UserInfo() : userInfo;
if (StrUtil.isNotBlank(userAuthorizationLoginDTO.getRawData())) {
WechatRawDataDTO wechatRawDataDTO = JSONObject.parseObject(userAuthorizationLoginDTO.getRawData(), WechatRawDataDTO.class);
userInfo.setHeadImg(wechatRawDataDTO.getAvatarUrl());
userInfo.setNickName(StrUtil.isNotBlank(wechatRawDataDTO.getNickName()) ? wechatRawDataDTO.getNickName() : "微信用户");
} else {
userInfo.setNickName("微信用户");
}
userInfo.setWechatOpenId(openId);
userInfo.setStatus(1);
userInfo.setLastLoginTime(DateUtil.date().toLocalDateTime());
} else {
userInfo.setLastLoginTime(DateUtil.date().toLocalDateTime());
openId = alipayUtil.getOpenId(userAuthorizationLoginDTO.getCode());
userInfo = userInfoService.queryChain().eq(UserInfo::getAlipayOpenId, openId).one();
userInfo = userInfo == null ? new UserInfo() : userInfo;
userInfo.setNickName("支付宝用户");
userInfo.setAlipayOpenId(openId);
}
userInfoService.saveOrUpdate(userInfo);
if (StatusEnum.DISABLE.value() == userInfo.getStatus()) {
throw new CzgException("账号已禁用");
}
userInfo.setLastLoginTime(DateUtil.date().toLocalDateTime());
userInfoService.saveOrUpdate(userInfo);
StpKit.USER.login(userInfo.getId());
return new LoginTokenDTO(StpKit.USER.getTokenValue(), userInfo);
}