feat: 微信公众号模块
This commit is contained in:
@@ -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()),"邮箱不能为空");
|
||||
|
@@ -22,5 +22,7 @@ public interface AuthUserDomainService {
|
||||
Object update(AuthUserBO authUserBO);
|
||||
|
||||
Object delete(AuthUserBO authUserBO);
|
||||
|
||||
Object doLogin(String validCode);
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user