密钥管理接口
This commit is contained in:
parent
f4030f9265
commit
283d82339a
@ -14,9 +14,11 @@ import java.util.Objects;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public enum KeyStatus {
|
public enum KeyStatus {
|
||||||
|
|
||||||
|
WAIT_ENABLED("wait_enabled", "待生效"),
|
||||||
ENABLED("enabled", "已启用"),
|
ENABLED("enabled", "已启用"),
|
||||||
DISABLED("disabled", "已停用"),
|
DISABLED("disabled", "已停用"),
|
||||||
ARCHIVED("archived", "已归档"),
|
ARCHIVED("archived", "已归档"),
|
||||||
|
EXPIRED("expired", "已过期"),
|
||||||
DESTORY("destory", "已销毁"),
|
DESTORY("destory", "已销毁"),
|
||||||
;
|
;
|
||||||
private final String code;
|
private final String code;
|
||||||
|
@ -72,6 +72,12 @@ public class KeyInfoAsymController {
|
|||||||
.body(new ByteArrayResource(content));
|
.body(new ByteArrayResource(content));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成P10
|
||||||
|
*
|
||||||
|
* @param createCsr 参数
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@PostMapping("/createCsr")
|
@PostMapping("/createCsr")
|
||||||
public R<KeyInfoDTO.CreateCSRResp> createCsr(KeyInfoDTO.CreateCsr createCsr) {
|
public R<KeyInfoDTO.CreateCSRResp> createCsr(KeyInfoDTO.CreateCsr createCsr) {
|
||||||
|
|
||||||
|
@ -87,18 +87,31 @@ public class KeyInfoServiceImpl implements KeyInfoService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<KeyInfoDTO.KeyView> selectPageList(KeyInfoDTO.Query query) {
|
public Page<KeyInfoDTO.KeyView> selectPageList(KeyInfoDTO.Query query) {
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
LambdaQueryWrapper<KeyInfo> wrapper = new LambdaQueryWrapper<KeyInfo>()
|
||||||
|
.eq(StringUtils.hasText(query.getKeyType()), KeyInfo::getKeyType, query.getKeyType())
|
||||||
|
.eq(StringUtils.hasText(query.getStatus()), KeyInfo::getStatus, query.getStatus())
|
||||||
|
.orderByDesc(KeyInfo::getCreateTime);
|
||||||
|
if (StringUtils.hasText(query.getStatus())) {
|
||||||
|
KeyStatus queryStatus = KeyStatus.of(query.getStatus());
|
||||||
|
if (KeyStatus.WAIT_ENABLED == queryStatus) {
|
||||||
|
wrapper.gt(KeyInfo::getEffectiveTime, now);
|
||||||
|
} else if (KeyStatus.EXPIRED == queryStatus) {
|
||||||
|
wrapper.lt(KeyInfo::getExpiredTime, now);
|
||||||
|
} else {
|
||||||
|
wrapper.eq(KeyInfo::getStatus, query.getStatus());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
IPage<KeyInfo> page = keyInfoMapper.selectPage(
|
IPage<KeyInfo> page = keyInfoMapper.selectPage(
|
||||||
new Page<>(query.getPageNumber(), query.getPageSize()),
|
new Page<>(query.getPageNumber(), query.getPageSize()),
|
||||||
new LambdaQueryWrapper<KeyInfo>()
|
wrapper
|
||||||
.eq(StringUtils.hasText(query.getKeyType()), KeyInfo::getKeyType, query.getKeyType())
|
|
||||||
.eq(StringUtils.hasText(query.getStatus()), KeyInfo::getStatus, query.getStatus())
|
|
||||||
.orderByDesc(KeyInfo::getCreateTime)
|
|
||||||
);
|
);
|
||||||
List<KeyInfo> records = page.getRecords();
|
List<KeyInfo> records = page.getRecords();
|
||||||
if (CollectionUtils.isEmpty(records)) {
|
if (CollectionUtils.isEmpty(records)) {
|
||||||
return new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
|
return new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
|
||||||
}
|
}
|
||||||
|
|
||||||
List<KeyInfoDTO.KeyView> viewList = records.stream()
|
List<KeyInfoDTO.KeyView> viewList = records.stream()
|
||||||
.map(it -> {
|
.map(it -> {
|
||||||
KeyInfoDTO.KeyView view = new KeyInfoDTO.KeyView();
|
KeyInfoDTO.KeyView view = new KeyInfoDTO.KeyView();
|
||||||
@ -111,10 +124,16 @@ public class KeyInfoServiceImpl implements KeyInfoService {
|
|||||||
.collect(Collectors.toMap(KeyUsage::getCode, KeyUsage::getDesc));
|
.collect(Collectors.toMap(KeyUsage::getCode, KeyUsage::getDesc));
|
||||||
view.setKeyUsages(new ArrayList<>(usageMap.keySet()));
|
view.setKeyUsages(new ArrayList<>(usageMap.keySet()));
|
||||||
view.setKeyUsageText(String.join(",", usageMap.values()));
|
view.setKeyUsageText(String.join(",", usageMap.values()));
|
||||||
Optional.ofNullable(KeyStatus.of(it.getStatus()))
|
KeyStatus keyStatus = KeyStatus.of(it.getStatus());
|
||||||
.map(KeyStatus::getDesc)
|
if (KeyStatus.ENABLED == keyStatus) {
|
||||||
.ifPresent(view::setStatusText);
|
if (now.isBefore(it.getEffectiveTime())) {
|
||||||
|
view.setStatus(KeyStatus.WAIT_ENABLED.getCode());
|
||||||
|
view.setStatusText(KeyStatus.WAIT_ENABLED.getDesc());
|
||||||
|
} else if (now.isAfter(it.getExpiredTime())) {
|
||||||
|
view.setStatus(KeyStatus.EXPIRED.getCode());
|
||||||
|
view.setStatusText(KeyStatus.EXPIRED.getDesc());
|
||||||
|
}
|
||||||
|
}
|
||||||
return view;
|
return view;
|
||||||
})
|
})
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
@ -195,6 +214,14 @@ public class KeyInfoServiceImpl implements KeyInfoService {
|
|||||||
Assert.isTrue(CollectionUtils.isEmpty(unNormalCodes),
|
Assert.isTrue(CollectionUtils.isEmpty(unNormalCodes),
|
||||||
"密钥id: " + String.join(",", unNormalCodes) + "不是启用状态或者新生效时间超过密钥过期时间, 无法更新");
|
"密钥id: " + String.join(",", unNormalCodes) + "不是启用状态或者新生效时间超过密钥过期时间, 无法更新");
|
||||||
|
|
||||||
|
List<KeyRecord> records = spKeyRecordMapper.selectList(
|
||||||
|
new LambdaQueryWrapper<KeyRecord>()
|
||||||
|
.gt(KeyRecord::getEffectiveTime, now)
|
||||||
|
.in(KeyRecord::getKeyId, ids)
|
||||||
|
);
|
||||||
|
String msgIds = records.stream().map(it -> String.valueOf(it.getKeyId())).collect(Collectors.joining(","));
|
||||||
|
Assert.isTrue(CollectionUtils.isEmpty(records), "密钥id: " + msgIds + "已经存在未使用的新密钥, 无法更新");
|
||||||
|
|
||||||
// 更新实际密钥值
|
// 更新实际密钥值
|
||||||
spKeyRecordMapper.update(
|
spKeyRecordMapper.update(
|
||||||
new LambdaUpdateWrapper<KeyRecord>()
|
new LambdaUpdateWrapper<KeyRecord>()
|
||||||
@ -207,6 +234,7 @@ public class KeyInfoServiceImpl implements KeyInfoService {
|
|||||||
for (KeyInfo info : keyInfos) {
|
for (KeyInfo info : keyInfos) {
|
||||||
// 具体使用的密钥值
|
// 具体使用的密钥值
|
||||||
KeyRecord record = genKeyRecord(info);
|
KeyRecord record = genKeyRecord(info);
|
||||||
|
record.setEffectiveTime(newEffectTime);
|
||||||
|
|
||||||
KeyInfo upInfo = new KeyInfo();
|
KeyInfo upInfo = new KeyInfo();
|
||||||
upInfo.setId(info.getId());
|
upInfo.setId(info.getId());
|
||||||
|
Loading…
Reference in New Issue
Block a user