Files
notes/work/移动杭研/开发记录/7.8.0/开发笔记.md
T
2026-03-01 01:43:46 +08:00

305 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 相同CPID下冲突域名兼容
5 人天
## 需求评审
## 需求备注
重点完成:2、5、7。
## 需求开发
> [!WARNING]
> 注意企业子账号。
企业客户账号:
```
http://dev.p.cdn.10086.cn:8080/sso/login/sso_login?token=3075&env=test
```
第一版企业客户证书管理代码:
```java
if (RoleEnum.CP.getRole().equals(currentRole)) {
Object domainObject = selectResult.get("bindDomains");
List<String> domains = CollectionUtils.emptyIfNull(domainObject instanceof List<?> ? (List<?>) domainObject : null)
.stream()
.filter(Objects::nonNull)
.map(Object::toString)
.collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(domains)) {
List<SelfServiceDomainConfigPO> bindDomains = selfServiceDomainConfigDao.findByDomainIn(domains);
List<String> bindDomainList = new ArrayList<>();
for (SelfServiceDomainConfigPO s : bindDomains) {
if (StringUtils.isEmpty(s.getCpDomain())) {
// 当前域名为真实配置。
bindDomainList.add(s.getDomain());
} else {
// 当前域名为冲突配置。
Long configCount = selfServiceDomainConfigDao.countByTenantIdAndDomainOrCpDomain(s.getTenantId(), s.getCpDomain());
// 关于 configCount 的相关场景在 countByTenantIdAndDomainOrCpDomain 中有说明。
bindDomainList.add(configCount == 1 ? s.getCpDomain() : s.getDomain());
}
}
selectResult.put("bindDomains", bindDomainList);
}
}
```
```java
private void replaceDomainForCP(List<CertDomainDeployVO> vos) {
SecurityUser user = SecurityUserUtil.getCurrentUser();
if (CollectionUtils.isEmpty(vos) || user == null || !RoleEnum.CP.getRole().equals(user.getRole().getRole())) {
return;
}
for (CertDomainDeployVO vo : vos) {
if (StringUtils.isEmpty(vo.getDomain())) {
continue;
}
List<SelfServiceDomainConfigPO> bindDomains = selfServiceDomainConfigDao.findByDomainIn(Lists.newArrayList(vo.getDomain()));
List<String> bindDomainList = new ArrayList<>();
for (SelfServiceDomainConfigPO s : bindDomains) {
if (StringUtils.isEmpty(s.getCpDomain())) {
// 当前域名为真实配置。
bindDomainList.add(s.getDomain());
} else {
// 当前域名为冲突配置。
Long configCount = selfServiceDomainConfigDao.countByTenantIdAndDomainOrCpDomain(s.getTenantId(), s.getCpDomain());
// 关于 configCount 的相关场景在 countByTenantIdAndDomainOrCpDomain 中有说明。
bindDomainList.add(configCount == 1 ? s.getCpDomain() : s.getDomain());
}
}
if (CollectionUtils.isEmpty(bindDomainList)) {
continue;
}
vo.setDomain(bindDomainList.get(0));
}
}
```
### 证书相关
```
已完成。
/crt/statis
?_=1740447840405
bindDomains
已完成。
/crt/list
?pageNum=1&pageSize=10&name=&domain=&search=&_=1740447469844
bindDomain
已完成。
/crt/detail
?uniqueId=20250224172158--c551-4982-8a35-a4ca3c5acaac&_=1740447537010
bindDomain
已完成。
/crt/list/unbindDomain
?enterpriseId=oe6cljyn-8xkwymbxps0pednz&certUniqueId=20250224172158--c551-4982-8a35-a4ca3c5acaac&_=1740447602214
bindDomain
unBindDomain
已完成。
/crt/domain/deploy/list
?crtUniqueId=20250224172158--c551-4982-8a35-a4ca3c5acaac&_=1740447680951
domain
```
信息准备。
ECName1740554572
15700197926
PRODUCTID1740554900
DevReq1740554572A.komect.com
```
http://dev.p.cdn.10086.cn:8080/sso/login/sso_login?token=3075&env=test
20250226154158--dc67-4225-bd2a-b17413dd9b13
3075-企业子账号
```
```
private List<String> transformDomainForCP(List<String> domains) {
String enterpriseId = SecurityUserUtil.getEnterpriseId();
List<String> list = new ArrayList<>();
for (String domain : domains) {
Long l = selfServiceDomainConfigDao.countByTenantIdAndDomainOrCpDomain(enterpriseId, domain);
if (l == 1){ // 这必然是一个冲突配置或者真实配置
Optional<SelfServiceDomainConfigPO> tenantIdAndDomain = selfServiceDomainConfigDao.findByTenantIdAndDomain(enterpriseId, domain);
if (tenantIdAndDomain.isPresent()) {
// 非冲突域名
list.add(domain);
}else {
// 冲突域名
Optional<SelfServiceDomainConfigPO> tenantIdAndCpDomain = selfServiceDomainConfigDao.findByTenantIdAndCpDomain(enterpriseId, domain);
tenantIdAndCpDomain.ifPresent(domainConfigPO -> list.add(domainConfigPO.getDomain()));
}
}else { // 由于不是唯一的前端传过来的肯定是域名表 domain 字段,直接用。
list.add(domain);
}
}
return list;
}
```
# 增加黑名单联合惩戒需求,不允许惩戒客户新增域名
2 人天
## 需求评审
## 需求备注
queryJointPunishFromBBoss
JointPunishContentVO
JointPunishVO
JointPunishFeedbackVO
JointPunishFeedbackResultVO
## 需求开发
# 月统计报表中平面筛选项变更为后端控制
0.5 人天
## 需求评审
(1)IBS-运营管理-月统计报表-企业月流量,
(2)IBS-运营管理-月统计报表-试商用客户峰值带宽
## 需求备注
企业月流量
华为平面:1
中兴平面:2
HCDN3
自研2.08
试商用客户峰值带宽
华为平面:1
中兴平面:2
HCDN3
自研2.04
## 需求开发
```json
{
"企业月流量": {
"华为平面": "1",
"中兴平面": "2",
"HCDN": "3",
"自研2.0": "8"
},
"试商用客户峰值带宽": {
"华为平面": "1",
"中兴平面": "2",
"HCDN": "3",
"自研2.0": "4"
}
}
```
# 企业白名单审批人员变更需求
0.5 人天
## 需求评审
1、二级域名白名单工单审批,审批人从政企客户经理管理员换成集团客户经理管理员。
2、企业白名单企业管理-企业白名单-TOP55企业&二级域名白名单,新增集团客户经理管理员编辑查看权限。
## 需求备注
## 需求开发
登录集团超级管理员,进入账户管理-角色权限管理,在企业管理下增加权限。
```
权限关键字:NEW_QYGL_TAB_WHITELISTING
权限名称:企业白名单
```
进入账户管理-角色管理,找到集团客户经理管理员、政企客户经理管理员。
进行编辑,勾选企业白名单。
# 用例评审
# 冒烟自测
## (完成)月统计报表中平面筛选项变更为后端控制
企业月流量
> 这个从芳造好数据后需要触发后端数据写入。
```
xcftest2025010403.com
xcftest2025010401.com
```
试商用
```
xcftest1119esop01.komect.com,gpnxknoh-mqewujpo0ofulamk,[1],2024-11-19 08:47:57,彭的企业,政企分公司,83526154
```
## (完成)企业白名单审批人员变更需求
> 确认白名单权限显示问题。
1、前提的 关闭惩戒功能。
2、第二部中的(2)调用esop企业客户调用新增自助域名接口,这一步除了 CMCDN-Auth-Token 还有一个 Accept 参数的。
验证点文案:
```
{
"err_desc":"请求校验通过,域名正在审核中,请等待集团客户经理管理员审核,审核通过后请在域名管理列表里查看域名信息。",
"status":"under_review",
"task_id":"7abc1faa3f324589a49380fdd1f12ea2"
}
```
3、第二步验证点 2.邮件提醒集团客户经理管理员审批【ESOP自助域名新增工单】
![](../../../../attachment/images-paste/image-20250303145056738.png)
1.已存在esop企业:esop测试企业,企业中已存在点播域名
2.已在后台配置开启,域名列表页存在“新建域名”按钮
3.esop测试企业 配置为惩戒黑名单企业
4.开启惩戒功能
## (完成)相同CPID下冲突域名兼容
前提:1.已存在企业:xcf海外点播,企业下已存在域名test.com和冲突域名test.com.01.cdnhwcqir15.com
## (完成)增加黑名单联合惩戒需求,不允许惩戒客户新增域名