refactor: 微信登录功能代码修改
This commit is contained in:
@@ -405,7 +405,7 @@ CREATE TABLE `sys_user` (
|
|||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
`update_by` bigint NULL DEFAULT NULL COMMENT '修改人ID',
|
`update_by` bigint NULL DEFAULT NULL COMMENT '修改人ID',
|
||||||
`is_deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除标识(0-未删除 1-已删除)',
|
`is_deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除标识(0-未删除 1-已删除)',
|
||||||
`open_id` char(28) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '微信 openid',
|
`open_id` char(28) DEFAULT NULL COMMENT '微信 openid',
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
UNIQUE INDEX `login_name`(`username` ASC) USING BTREE
|
UNIQUE INDEX `login_name`(`username` ASC) USING BTREE
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户信息表' ROW_FORMAT = DYNAMIC;
|
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户信息表' ROW_FORMAT = DYNAMIC;
|
||||||
|
|||||||
@@ -367,7 +367,7 @@
|
|||||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
`update_by` bigint NULL DEFAULT NULL COMMENT '修改人ID',
|
`update_by` bigint NULL DEFAULT NULL COMMENT '修改人ID',
|
||||||
`is_deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除标识(0-未删除 1-已删除)',
|
`is_deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除标识(0-未删除 1-已删除)',
|
||||||
`open_id` char(28) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '微信 openid',
|
`open_id` char(28) DEFAULT NULL COMMENT '微信 openid',
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
UNIQUE INDEX `login_name`(`username` ASC) USING BTREE
|
UNIQUE INDEX `login_name`(`username` ASC) USING BTREE
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户信息表' ROW_FORMAT = DYNAMIC;
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户信息表' ROW_FORMAT = DYNAMIC;
|
||||||
|
|||||||
@@ -38,5 +38,5 @@ public interface SecurityConstants {
|
|||||||
/**
|
/**
|
||||||
* 微信登录路径
|
* 微信登录路径
|
||||||
*/
|
*/
|
||||||
String WX_LOGIN_PATH = "/api/v1/auth/wechatLogin";
|
String WECHAT_LOGIN_PATH = "/api/v1/auth/wechat-login";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public class SecurityConfig {
|
|||||||
requestMatcherRegistry
|
requestMatcherRegistry
|
||||||
.requestMatchers(
|
.requestMatchers(
|
||||||
SecurityConstants.LOGIN_PATH,
|
SecurityConstants.LOGIN_PATH,
|
||||||
SecurityConstants.WX_LOGIN_PATH)
|
SecurityConstants.WECHAT_LOGIN_PATH)
|
||||||
.permitAll()
|
.permitAll()
|
||||||
.anyRequest().authenticated()
|
.anyRequest().authenticated()
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -11,8 +11,9 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 配置微信 appId 和 appSecret
|
* 配置微信 appId 和 appSecret
|
||||||
|
*
|
||||||
* @author wangtao
|
* @author wangtao
|
||||||
* @date 2024/11/26 17:28
|
* @since 2024/11/26 17:28
|
||||||
*/
|
*/
|
||||||
@Setter
|
@Setter
|
||||||
@ConfigurationProperties(prefix = "wechat.miniapp")
|
@ConfigurationProperties(prefix = "wechat.miniapp")
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ public class AuthController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "微信登录")
|
@Operation(summary = "微信登录")
|
||||||
@PostMapping("/wechatLogin")
|
@PostMapping("/wechat-login")
|
||||||
@Log(value = "微信登录", module = LogModuleEnum.LOGIN)
|
@Log(value = "微信登录", module = LogModuleEnum.LOGIN)
|
||||||
public Result<AuthTokenResponse> wechatLogin(
|
public Result<AuthTokenResponse> wechatLogin(
|
||||||
@Parameter(description = "微信授权码", example = "code") @RequestParam String code
|
@Parameter(description = "微信授权码", example = "code") @RequestParam String code
|
||||||
|
|||||||
@@ -42,7 +42,8 @@ public interface AuthService {
|
|||||||
AuthTokenResponse refreshToken(RefreshTokenRequest request);
|
AuthTokenResponse refreshToken(RefreshTokenRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 微信登录
|
* 微信小程序登录
|
||||||
|
*
|
||||||
* @param code 微信登录code
|
* @param code 微信登录code
|
||||||
* @return 登录结果
|
* @return 登录结果
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -158,6 +158,12 @@ public class AuthServiceImpl implements AuthService {
|
|||||||
return tokenService.refreshToken(refreshToken);
|
return tokenService.refreshToken(refreshToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信小程序登录
|
||||||
|
*
|
||||||
|
* @param code 微信登录code
|
||||||
|
* @return 访问令牌
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public AuthTokenResponse wechatLogin(String code) {
|
public AuthTokenResponse wechatLogin(String code) {
|
||||||
// 1. 通过code获取微信access_token
|
// 1. 通过code获取微信access_token
|
||||||
@@ -179,7 +185,6 @@ public class AuthServiceImpl implements AuthService {
|
|||||||
|
|
||||||
// 2. 根据openId查询用户信息,如果不存在则注册新用户
|
// 2. 根据openId查询用户信息,如果不存在则注册新用户
|
||||||
User user = userService.getUserByOpenId(openId);
|
User user = userService.getUserByOpenId(openId);
|
||||||
|
|
||||||
if (Objects.isNull(user)) {
|
if (Objects.isNull(user)) {
|
||||||
String name = "微信用户" + IdUtil.simpleUUID();
|
String name = "微信用户" + IdUtil.simpleUUID();
|
||||||
UserForm newUser = new UserForm();
|
UserForm newUser = new UserForm();
|
||||||
@@ -188,11 +193,9 @@ public class AuthServiceImpl implements AuthService {
|
|||||||
newUser.setUsername(name);
|
newUser.setUsername(name);
|
||||||
boolean result = userService.saveUser(newUser);
|
boolean result = userService.saveUser(newUser);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
|
|
||||||
throw new BusinessException("微信用户注册失败");
|
throw new BusinessException("微信用户注册失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
user = userService.getUserByOpenId(openId);
|
|
||||||
UsernamePasswordAuthenticationToken authenticationToken =
|
UsernamePasswordAuthenticationToken authenticationToken =
|
||||||
new UsernamePasswordAuthenticationToken(user.getUsername().toLowerCase().trim(), SystemConstants.DEFAULT_PASSWORD);
|
new UsernamePasswordAuthenticationToken(user.getUsername().toLowerCase().trim(), SystemConstants.DEFAULT_PASSWORD);
|
||||||
// 执行用户认证
|
// 执行用户认证
|
||||||
|
|||||||
@@ -161,6 +161,7 @@ public interface UserService extends IService<User> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据openId获取用户信息
|
* 根据openId获取用户信息
|
||||||
|
*
|
||||||
* @param openId openId
|
* @param openId openId
|
||||||
* @return {@link User}
|
* @return {@link User}
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -448,6 +448,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据openId获取用户信息
|
* 根据openId获取用户信息
|
||||||
|
*
|
||||||
* @param openId openId
|
* @param openId openId
|
||||||
* @return {@link User}
|
* @return {@link User}
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user