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