|
|
@@ -1,5 +1,7 @@
|
|
|
package com.zhixinghe1.ots.service.manager.impl;
|
|
|
|
|
|
+import java.util.Calendar;
|
|
|
+
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.cache.CacheManager;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -7,6 +9,7 @@ import org.springframework.stereotype.Service;
|
|
|
import com.zhixinghe1.ots.atomic.entity.WechatUser;
|
|
|
import com.zhixinghe1.ots.atomic.service.IWechatUserService;
|
|
|
import com.zhixinghe1.ots.common.exception.BusinessException;
|
|
|
+import com.zhixinghe1.ots.config.BizConfig;
|
|
|
import com.zhixinghe1.ots.constant.CacheConstant;
|
|
|
import com.zhixinghe1.ots.domain.dto.wechat.Code2SessionRequest;
|
|
|
import com.zhixinghe1.ots.domain.dto.wechat.Code2SessionResponse;
|
|
|
@@ -14,6 +17,7 @@ import com.zhixinghe1.ots.domain.dto.wechat.LoginRequest;
|
|
|
import com.zhixinghe1.ots.feign.WechatMiniProgramFeign;
|
|
|
import com.zhixinghe1.ots.service.manager.IWechatMiniProgramManager;
|
|
|
import com.zhixinghe1.ots.utiis.CacheUtils;
|
|
|
+import com.zhixinghe1.ots.utiis.TokenUtils;
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
@@ -33,6 +37,9 @@ public class WechatMiniProgramManagerImpl implements IWechatMiniProgramManager {
|
|
|
@Autowired
|
|
|
private CacheManager cacheManager;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private BizConfig bizConfig;
|
|
|
+
|
|
|
@Override
|
|
|
public String login(LoginRequest request) {
|
|
|
Code2SessionRequest code2SessionRequest = new Code2SessionRequest();
|
|
|
@@ -43,19 +50,22 @@ public class WechatMiniProgramManagerImpl implements IWechatMiniProgramManager {
|
|
|
throw BusinessException.fail(loginResponse.getErrMsg());
|
|
|
}
|
|
|
|
|
|
- // 新增加用户记录
|
|
|
- WechatUser wechatUser = wechatUserService.getByOpenId(loginResponse.getOpenId());
|
|
|
+ // 获取用户记录
|
|
|
+ WechatUser wechatUser = wechatUserService.getAndAdd(loginResponse.getOpenId());
|
|
|
if (wechatUser == null) {
|
|
|
- wechatUserService.add(loginResponse.getOpenId());
|
|
|
+ throw BusinessException.fail(String.format("不存在的用户,且无法新增,openid: %s", loginResponse.getOpenId()));
|
|
|
}
|
|
|
|
|
|
// 缓存微信用户对应的session_key
|
|
|
CacheUtils.put(CacheConstant.WECHAT_MINI_PROGRAM_SESSION_KEY, loginResponse.getOpenId(),
|
|
|
loginResponse.getSessionKey());
|
|
|
|
|
|
- // TODO 颁发token
|
|
|
- CacheUtils.put(CacheConstant.SYSTEM_USER_TOKEN, loginResponse.getOpenId(), loginResponse.getSessionKey());
|
|
|
+ // 创建token并缓存
|
|
|
+ Calendar instance = Calendar.getInstance();
|
|
|
+ instance.add(Calendar.DATE, bizConfig.getTokenExpire());
|
|
|
+ String token = TokenUtils.createToken(wechatUser.getId(), instance.getTime());
|
|
|
+ CacheUtils.put(CacheConstant.SYSTEM_USER_TOKEN, loginResponse.getOpenId(), token);
|
|
|
|
|
|
- return null;
|
|
|
+ return token;
|
|
|
}
|
|
|
}
|