Commit 89a3e0af authored by 王亮's avatar 王亮

finished test login(wechat&&phone)

parent 70e1c5c5
......@@ -35,15 +35,15 @@ ADD COLUMN `app_id` VARCHAR(32) NULL COMMENT '微信应用id' AFTER `registered_
---微信配置表
CREATE TABLE `xyqb_user`.`wechat_config` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`app_id` VARCHAR(32) NOT NULL COMMENT '微信app_id\n',
`secret` VARCHAR(64) NOT NULL COMMENT '微信appsecret',
`state` TINYINT(3) NOT NULL COMMENT '状态',
`tenant_id` INT NOT NULL COMMENT '租户id',
`created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`));
--CREATE TABLE `xyqb_user`.`wechat_config` (
-- `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
-- `app_id` VARCHAR(32) NOT NULL COMMENT '微信app_id\n',
-- `secret` VARCHAR(64) NOT NULL COMMENT '微信appsecret',
-- `state` TINYINT(3) NOT NULL COMMENT '状态',
-- `tenant_id` INT NOT NULL COMMENT '租户id',
-- `created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-- `updated_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
-- PRIMARY KEY (`id`));
--用户标记表(用来标记同一租户下用户归属)
CREATE TABLE `xyqb_user`.`user_tag` (
......@@ -53,8 +53,7 @@ CREATE TABLE `xyqb_user`.`user_tag` (
`tenant_id` INT NOT NULL COMMENT '租户id',
`created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE `udx_user_id` (`user_id` ASC),
INDEX `idx_user_phone` (`registered_from` ASC),
UNIQUE INDEX `udx_user_id` (`user_id` ASC, `registered_from` ASC, `tenant_id` ASC);
PRIMARY KEY (`id`));
......
......@@ -27,7 +27,7 @@ public class UserTagLoginEventListener implements ApplicationListener<UserLoginE
public void onApplicationEvent(UserLoginEvent userLoginEvent) {
if (userLoginEvent.getUserTag() != null) {
UserTag userTag = userLoginEvent.getUserTag();
UserTag preTag = userTagRepository.findByUserIdAndTenantId(userTag.getUserId(), userTag.getTenantId());
UserTag preTag = userTagRepository.findByUserIdAndTenantIdAndRegisteredFrom(userTag.getUserId(), userTag.getTenantId(), userTag.getRegisteredFrom());
if (preTag == null) {
preTag = userTag;
......
......@@ -24,6 +24,7 @@ public enum BizExceptionEnum {
UN_EXIT_STMS_TOKEN("1013","stms的token不存在"),
UN_VALID_STMS_TOKEN("1014","无效的stms的token"),
UN_PERMISSION_STMS("1015","没有内部接口访问权限"),
EXPIRE_WECHAT_TOKEN("1016","微信接口token过期,请执行定时任务"),
......
......@@ -5,7 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface IUserTagRepository extends JpaRepository<UserTag, Long>, JpaSpecificationExecutor<UserTag> {
UserTag findByUserIdAndTenantId(Long userId,Integer tenantId);
UserTag findByUserIdAndTenantIdAndRegisteredFrom(Long userId,Integer tenantId,Long registeredFrom);
void deleteByUserIdAndTenantId(Long userId,Integer tenantId);
}
......@@ -45,8 +45,8 @@ public class LoginContext {
}
public LoginBean login(LoginReq loginReq) {
if(loginReq.getType()!=null && loginReq.getType()==9000){
throw new BizException(BizExceptionEnum.ERROR_INTERNAL_LOGIN);
if (loginReq.getType() != null && loginReq.getType() == 9000) {
throw new BizException(BizExceptionEnum.ERROR_INTERNAL_LOGIN);
}
return this.interLogin(loginReq);
}
......@@ -54,10 +54,11 @@ public class LoginContext {
/**
* 内部统一登录
*
* @param loginReq LoginReq
* @return LoginBean
*/
public LoginBean interLogin(LoginReq loginReq){
public LoginBean interLogin(LoginReq loginReq) {
//第一步、校验参数
LoginStrategy loginStrategy = interloginStrategyMap.get(loginReq.getType());
......@@ -70,8 +71,12 @@ public class LoginContext {
//第三步、发送登录成功消息
SessionStruct sessionStruct = XyqbSessionContextHolder.getXSession();
Long registeredFrom = sessionStruct.getRegisteredFrom();
if (sessionStruct.getValues() != null && sessionStruct.getValues().getLoginProperties() != null) {
registeredFrom = sessionStruct.getValues().getLoginProperties().getCreatedFrom();
}
UserTag userTag = UserTag.builder().userId(loginBean.getUserId()).registeredFrom(sessionStruct.getRegisteredFrom()).tenantId(sessionStruct.getTenantId()).build();
UserTag userTag = UserTag.builder().userId(loginBean.getUserId()).registeredFrom(registeredFrom).tenantId(sessionStruct.getTenantId()).build();
String geetestId = null;
if (StringUtils.isNotEmpty(sessionStruct.getGeetestId())) {
geetestId = sessionStruct.getGeetestId();
......
......@@ -19,6 +19,7 @@ import cn.quantgroup.xyqb.repository.IWeChatUserRepository;
import cn.quantgroup.xyqb.service.register.IUserRegisterService;
import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.session.XyqbSessionContextHolder;
import cn.quantgroup.xyqb.util.StringUtils;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import lombok.extern.slf4j.Slf4j;
......@@ -102,6 +103,9 @@ public class WechatMiniPhoneLoginStrategy implements LoginStrategy {
User user;
phoneParam.put("code", loginParam.getPhoneCode());
String accessToken = redisTemplate.opsForValue().get(Constants.WECHAT_ACCESS_TOKEN_REDIS + loginParam.getAppId());
if(StringUtils.isEmpty(accessToken)){
throw new BizException(BizExceptionEnum.EXPIRE_WECHAT_TOKEN);
}
WechatPhoneBean wechatPhoneBean = wechatRemoteService.getUserPhoneNumber(accessToken, phoneParam);
......@@ -124,6 +128,7 @@ public class WechatMiniPhoneLoginStrategy implements LoginStrategy {
wechatUserInfo.setUnionId(unionId);
wechatUserInfo.setAppId(loginParam.getAppId());
wechatUserInfo.setTenantId(sessionStruct.getTenantId());
wechatUserInfo.setRegisteredFrom(sessionStruct.getRegisteredFrom());
wechatUserInfo.setPhoneNo(user.getPhoneNo());
wechatUserInfo.setUserId(user.getId());
wechatUserInfo.setSessionKey(sessionKey);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment