小程序登录相关

This commit is contained in:
张松
2025-02-11 17:33:08 +08:00
parent 4c383e70cf
commit 15db6821df
28 changed files with 541 additions and 11 deletions

View File

@@ -27,7 +27,10 @@
<groupId>com.czg</groupId>
<artifactId>cash-common-tools</artifactId>
</dependency>
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
</dependency>
</dependencies>

View File

@@ -0,0 +1,14 @@
package com.czg.service.account.mapper;
import com.czg.account.entity.UserInfo;
import com.mybatisflex.core.BaseMapper;
/**
* 映射层。
*
* @author Administrator
* @since 2025-02-11
*/
public interface UserInfoMapper extends BaseMapper<UserInfo> {
}

View File

@@ -0,0 +1,63 @@
package com.czg.service.account.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSONObject;
import com.czg.account.dto.auth.LoginTokenDTO;
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.UserAuthSourceEnum;
import com.czg.sa.StpKit;
import com.czg.account.service.UserInfoService;
import com.czg.utils.AlipayUtil;
import com.czg.utils.WechatAuthUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* @author Administrator
*/
@Service
public class UserAuthorizationServiceImpl implements UserAuthorizationService {
@Resource
private WechatAuthUtil wechatAuthUtil;
@Resource
private AlipayUtil alipayUtil;
@Resource
private UserInfoService userInfoService;
@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();
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() : "微信用户");
}
userInfo.setWechatOpenId(openId);
userInfo.setStatus(1);
userInfo.setLastLoginTime(DateUtil.date().toLocalDateTime());
} else {
userInfo.setLastLoginTime(DateUtil.date().toLocalDateTime());
}
userInfoService.saveOrUpdate(userInfo);
StpKit.USER.login(userInfo.getId());
return new LoginTokenDTO(StpKit.USER.getTokenValue(), userInfo);
}
}

View File

@@ -0,0 +1,18 @@
package com.czg.service.account.service.impl;
import com.czg.account.entity.UserInfo;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.service.account.mapper.UserInfoMapper;
import com.czg.account.service.UserInfoService;
import org.springframework.stereotype.Service;
/**
* 服务层实现。
*
* @author Administrator
* @since 2025-02-11
*/
@Service
public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserInfoService{
}

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.service.account.mapper.UserInfoMapper">
</mapper>

View File

@@ -69,7 +69,7 @@ public class Main {
//设置表前缀和只生成哪些表setGenerateTable 未配置时,生成所有表
globalConfig.getStrategyConfig()
.setTablePrefix("tb")
.setGenerateTable("tb_shop_merchant");
.setGenerateTable("tb_user_info");
//设置生成 entity 并启用 Lombok
globalConfig.enableEntity()