提交 fd871a89 编写于 作者: fengyuan.wan's avatar fengyuan.wan

Merge remote-tracking branch 'origin/dev-login0218' into dev-login0218

流水线 #22546 已失败 于阶段
in 0 second
......@@ -11,7 +11,7 @@
<groupId>com.pica.cloud.account</groupId>
<artifactId>pica-cloud-account-client</artifactId>
<version>1.0.2</version>
<version>1.0.3.1</version>
<name>pica-cloud-account-client</name>
<packaging>jar</packaging>
......
......@@ -3,8 +3,8 @@ package com.pica.cloud.account.account.client;
import com.pica.cloud.account.account.common.req.AccountInfoReq;
import com.pica.cloud.foundation.entity.PicaResponse;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
......@@ -20,4 +20,9 @@ public interface AccountInfoClient {
@PostMapping("/account/info/doctorIds")
PicaResponse<List<Integer>> getDoctorIds(@RequestBody AccountInfoReq req);
@GetMapping(value = "/account/token/continue")
PicaResponse<String> tokenContinueTime(@RequestHeader(value = "token") String token,
@RequestHeader(value = "sourceType") Integer sourceType,
@RequestParam(value = "seconds", required = false) Integer seconds);
}
......@@ -6,6 +6,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
......@@ -33,8 +34,12 @@ public class TokenController extends AccountBaseController {
@ApiOperation(value = "token续时")
@GetMapping(value = "/token/continue")
public PicaResponse<String> tokenContinueTime(@RequestParam(value = "seconds", required = false) Integer seconds) throws Exception {
return PicaResponse.toResponse(tokenService.tokenContinueTime(super.getToken(), super.getSourceType(), seconds));
public PicaResponse tokenContinueTime(
@RequestHeader(value = "token") String token,
@RequestHeader(value = "sourceType") Integer sourceType,
@RequestParam(value = "seconds", required = false) Integer seconds) throws Exception {
tokenService.tokenContinueTime(token, sourceType, seconds);
return PicaResponse.toResponse();
}
......
......@@ -11,6 +11,6 @@ public interface TokenService {
String getToken(Map<String, Object> map);
String tokenContinueTime(String token, Integer sourceType, Integer seconds);
void tokenContinueTime(String token, Integer sourceType, Integer seconds);
}
......@@ -6,7 +6,11 @@ import com.pica.cloud.account.account.server.util.TokenUtils;
import com.pica.cloud.foundation.redis.ICacheClient;
import com.pica.cloud.foundation.utils.entity.PicaUser;
import com.pica.cloud.foundation.utils.utils.CommonUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
......@@ -24,11 +28,18 @@ import static com.pica.cloud.foundation.utils.utils.json.Object2Map.objectToMapS
*/
@Service
public class TokenServiceImpl implements TokenService {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private ICacheClient redisClient;
@Autowired
private TokenUtils tokenUtils;
@Autowired
@Qualifier("accountThreadPool")
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
@Override
public String getToken(Map<String, Object> headersMap) {
String mobile = new StringBuilder("9").append(CommonUtil.getRandom(10)).toString();
......@@ -56,8 +67,6 @@ public class TokenServiceImpl implements TokenService {
}
return null;
}
@Autowired
private TokenUtils tokenUtils;
/**
* @Description token续时
......@@ -68,13 +77,17 @@ public class TokenServiceImpl implements TokenService {
* @Return java.lang.String
*/
@Override
public String tokenContinueTime(String token, Integer sourceType, Integer seconds) {
public void tokenContinueTime(String token, Integer sourceType, Integer seconds) {
if (StringUtils.isEmpty(token) || null == sourceType) {
return null;
}
if (tokenUtils.tokenContinueTime(token, sourceType, seconds)) {
return token;
return;
}
return null;
threadPoolTaskExecutor.execute(() -> {
if (tokenUtils.tokenContinueTime(token, sourceType, seconds)) {
logger.info("tokenContinueTime finish");
}
});
return;
}
}
......@@ -10,6 +10,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat;
import java.util.HashMap;
......@@ -22,7 +23,6 @@ import java.util.UUID;
*/
@Component
public class TokenUtils {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
......@@ -53,21 +53,42 @@ public class TokenUtils {
public boolean tokenContinueTime(String token, Integer sourceType, Integer seconds) {
logger.info("tokenContinueTime-token-{}, sourceType-{}, seconds-{}", token, sourceType, seconds);
// 根据不同的产品线设置token有效期(web/admin token有效期30天,ios/android/h5 token有效期24小时)
int expiredSeconds = 24 * 60 * 60;
if (!SourceTypeEnum.SAAS.getCode().equals(sourceType) &&
!SourceTypeEnum.ADMIN.getCode().equals(sourceType)) {
expiredSeconds = expiredSeconds * 30;
}
String sourceTypeRedis = AccountUtils.getSourceType(sourceType);
String key = "token-" + token;
// value = "token-doctor-{doctorId}";
String value = cacheClient.get(key);
cacheClient.set(key, value, expiredSeconds);
cacheClient.set(value + "-" + sourceTypeRedis, key, expiredSeconds);
// 非游客token才去执行token续时代码
Map<String, String> map = cacheClient.getToken(token);
if (!CollectionUtils.isEmpty(map)) {
String id = map.get("id");
logger.info("tokenContinueTime-start-userId-{}", id);
if (StringUtils.isNotEmpty(id) && Integer.parseInt(id) > 0) {
// 根据不同的产品线设置token有效期(web/admin token有效期30天,ios/android/h5 token有效期24小时)
int expiredSeconds = 24 * 60 * 60;
if (!SourceTypeEnum.SAAS.getCode().equals(sourceType) &&
!SourceTypeEnum.ADMIN.getCode().equals(sourceType)) {
expiredSeconds = expiredSeconds * 30;
}
return true;
String sourceTypeRedis = AccountUtils.getSourceType(sourceType);
String key = "token-" + token;
// value = "token-doctor-{doctorId}";
if (!cacheClient.exists(key)) {
logger.info("tokenContinueTime-key not exists");
return false;
}
String value = cacheClient.get(key);
if (!cacheClient.exists(value + "-" + sourceTypeRedis)) {
logger.info("tokenContinueTime-value not exists");
return false;
}
try {
cacheClient.set(key, value, expiredSeconds);
cacheClient.set(value + "-" + sourceTypeRedis, key, expiredSeconds);
return true;
} catch (Exception e) {
logger.error("tokenContinueTime-Exception-{}" + e.getMessage(), e);
return false;
}
}
}
return false;
}
/**
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册