feat: 微信公众号模块

This commit is contained in:
2024-02-21 19:49:13 +08:00
parent 9be9287a3e
commit 903d87efd3
19 changed files with 731 additions and 7 deletions

View File

@@ -1,5 +1,7 @@
package com.landaiqing.auth.application.controller;
import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpUtil;
import com.alibaba.fastjson.JSON;
import com.google.common.base.Preconditions;
import com.landaiqing.auth.application.convert.AuthUserDTOConverter;
@@ -9,10 +11,7 @@ import com.landaiqing.auth.domain.entity.AuthUserBO;
import com.landaiqing.auth.domain.service.AuthUserDomainService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -118,6 +117,24 @@ public class UserController {
}
}
@RequestMapping("doLogin")
public Result<SaTokenInfo> doLogin(@RequestParam("validCode") String validCode) {
try {
Preconditions.checkArgument(!StringUtils.isBlank(validCode), "验证码不能为空!");
return Result.ok(authUserDomainService.doLogin(validCode));
} catch (Exception e) {
log.error("UserController.doLogin.error:{}", e.getMessage(), e);
return Result.fail("用户登录失败");
}
}
// 查询登录状态,浏览器访问: http://localhost:8081/user/isLogin
@RequestMapping("isLogin")
public String isLogin() {
return "当前会话是否登录:" + StpUtil.isLogin();
}
private void checkUserInfo(@RequestBody AuthUserDTO authUserDTO) {
Preconditions.checkArgument(!StringUtils.isBlank(authUserDTO.getUserName()),"用户名不能为空");
Preconditions.checkArgument(!StringUtils.isBlank(authUserDTO.getEmail()),"邮箱不能为空");

View File

@@ -22,5 +22,7 @@ public interface AuthUserDomainService {
Object update(AuthUserBO authUserBO);
Object delete(AuthUserBO authUserBO);
Object doLogin(String validCode);
}

View File

@@ -1,6 +1,8 @@
package com.landaiqing.auth.domain.service.impl;
import cn.dev33.satoken.secure.SaSecureUtil;
import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpUtil;
import com.google.gson.Gson;
import com.landaiqing.auth.common.enums.AuthUserStatusEnum;
import com.landaiqing.auth.common.enums.IsDeletedFlagEnum;
@@ -13,6 +15,7 @@ import com.landaiqing.auth.infra.basic.entity.*;
import com.landaiqing.auth.infra.basic.service.*;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -47,12 +50,26 @@ public class AuthUserDomainServiceImpl implements AuthUserDomainService {
private String salt="landaiqing";
private static final String LOGIN_PREFIX = "loginCode";
@Override
@SneakyThrows
@Transactional(rollbackFor = Exception.class)
public Boolean register(AuthUserBO authUserBO) {
//校验用户是否存在
AuthUser existAuthUser = new AuthUser();
existAuthUser.setUserName(authUserBO.getUserName());
List<AuthUser> existUser = authUserService.queryByCondition(existAuthUser);
if (existUser.size() > 0) {
return true;
}
AuthUser authUser = AuthUserBOConverter.INSTANCE.convertBOToEntity(authUserBO);
authUser.setPassword(SaSecureUtil.md5BySalt(authUser.getPassword(),salt));
if (StringUtils.isNotBlank(authUser.getPassword())) {
authUser.setPassword(SaSecureUtil.md5BySalt(authUser.getPassword(), salt));
}
if (StringUtils.isBlank(authUser.getAvatar())) {
authUser.setAvatar("http://117.72.10.84:9000/user/icon/微信图片_20231203153718(1).png");
}
authUser.setStatus(AuthUserStatusEnum.OPEN.getCode());
authUser.setIsDeleted(IsDeletedFlagEnum.UN_DELETED.getCode());
Integer count = authUserService.insert(authUser);
@@ -103,4 +120,19 @@ public class AuthUserDomainServiceImpl implements AuthUserDomainService {
Integer count = authUserService.update(authUser);
return count > 0;
}
@Override
public SaTokenInfo doLogin(String validCode) {
String loginKey = redisUtil.buildKey(LOGIN_PREFIX, validCode);
String openId = redisUtil.get(loginKey);
if (StringUtils.isBlank(openId)) {
return null;
}
AuthUserBO authUserBO = new AuthUserBO();
authUserBO.setUserName(openId);
this.register(authUserBO);
StpUtil.login(openId);
SaTokenInfo tokenInfo = StpUtil.getTokenInfo();
return tokenInfo;
}
}

View File

@@ -5,7 +5,7 @@ spring:
username: landaiqing
password: iPHzskWvLGI2TrPw2AV7pu4C8O4bfxSSeQrkIqq0ZwM5tpBmx4aI6xN/8xjYgSmIir5v2Cv35Fn2732AypFKww==
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://116.196.80.239:3306/qing-yu-club?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true
url: jdbc:mysql://116.196.80.239:3306/jc-club?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 20