新增网关和服务灰度能力:组织灰度支持前端交互、灰度多实例多版本优化

This commit is contained in:
gaoqr
2025-04-07 16:45:53 +08:00
parent 99d500e355
commit 4ba7d2acc6
12 changed files with 51 additions and 21 deletions
@@ -40,4 +40,7 @@ public class OAuth2AccessTokenCheckRespDTO implements Serializable {
@Schema(description = "灰度版本号", example = "1")
private String grayVersion;
@Schema(description = "灰度默认版本号", example = "1")
private String grayDefaultVersion;
}
@@ -106,4 +106,8 @@ public class OrganSaveReqVO {
@Schema(description = "纬度")
@Size(max = 64, message = "纬度长度不能超过64个字符")
private String latitude;
@Schema(description = "是否开启灰度,0:开启、1:关闭", example = "0")
@CommonStatus
private Integer grayStatus;
}
@@ -105,4 +105,10 @@ public class OAuth2AccessTokenDO extends BaseDO {
*/
@TableField(exist = false)
private String grayVersion;
/**
* 灰度默认版本号
*/
@TableField(exist = false)
private String grayDefaultVersion;
}
@@ -149,7 +149,7 @@ public class OrganizationDO extends BaseDO {
private String latitude;
/**
* 灰度版本号
* 是否开启灰度
*/
private String grayVersion;
private Integer grayStatus;
}
@@ -111,4 +111,10 @@ public class AdminUserDO extends OrganBaseDO {
*/
@TableField(exist = false)
private String grayVersion;
/**
* 灰度默认版本号
*/
@TableField(exist = false)
private String grayDefaultVersion;
}
@@ -1,5 +1,6 @@
package com.cf.imes.module.system.dal.redis.oauth2;
import com.alibaba.fastjson.JSON;
import com.cf.imes.framework.common.util.collection.CollectionUtils;
import com.cf.imes.framework.common.util.json.JsonUtils;
import com.cf.imes.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
@@ -53,7 +54,7 @@ public class OAuth2AccessTokenRedisDAO {
// 清理多余字段,避免缓存
accessTokenDO.setUpdater(null).setUpdateTime(null).setCreateTime(null).setCreator(null).setDeleted(null);
// 创建有效期1天的token
String jsonString = JsonUtils.toJsonString(accessTokenDO);
String jsonString = JSON.toJSONString(accessTokenDO);
stringRedisTemplate.opsForValue().set(redisKey, jsonString, 1, TimeUnit.DAYS);
}
@@ -96,6 +96,12 @@ public class AdminAuthServiceImpl implements AdminAuthService {
@Value("${chenfeng.captcha.enable:true}")
private Boolean captchaEnable;
@Value("${chenfeng.gray.version:1.0.0}")
private String grayVersion;
@Value("${chenfeng.gray.default-version:1.0.0}")
private String grayDefaultVersion;
@Override
public AdminUserDO authenticate(AuthLoginReqVO reqVO) {
String username = reqVO.getUsername();
@@ -141,8 +147,13 @@ public class AdminAuthServiceImpl implements AdminAuthService {
if (StringUtils.isBlank(dataSourceCode)) {
throw exception(ORGAN_DATA_CODE_NOT_EXISTS);
}
// 机构的灰度版本设置到user
user.setGrayVersion(organ.getGrayVersion());
if (CommonStatusEnum.ENABLE.getStatus().equals(organ.getGrayStatus())) {
// 机构启用灰度、版本赋值到user
user.setGrayVersion(grayVersion);
} else {
// 未启用灰度的机构需要默认版本号来做网关实例选择
user.setGrayDefaultVersion(grayDefaultVersion);
}
// 创建 Token 令牌,记录登录日志
return createTokenAfterLoginSuccess(user, reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME, dataSourceCode);
}
@@ -223,7 +223,8 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService {
.setOrganId(organId)
.setNickname(user.getNickname())
.setDeptId(user.getDeptId())
.setGrayVersion(user.getGrayVersion());
.setGrayVersion(user.getGrayVersion())
.setGrayDefaultVersion(user.getGrayDefaultVersion());
if (organId != null) {
OrganContextHolder.setOrganId(organId);
}
@@ -228,4 +228,7 @@ chenfeng:
cache:
lock-timeout: 300000
lock-wait-time: 500
gray:
default-version: 1.0.0
version: 1.0.0
debug: false