# 相同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 domains = CollectionUtils.emptyIfNull(domainObject instanceof List ? (List) domainObject : null) .stream() .filter(Objects::nonNull) .map(Object::toString) .collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(domains)) { List bindDomains = selfServiceDomainConfigDao.findByDomainIn(domains); List 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 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 bindDomains = selfServiceDomainConfigDao.findByDomainIn(Lists.newArrayList(vo.getDomain())); List 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 transformDomainForCP(List domains) { String enterpriseId = SecurityUserUtil.getEnterpriseId(); List list = new ArrayList<>(); for (String domain : domains) { Long l = selfServiceDomainConfigDao.countByTenantIdAndDomainOrCpDomain(enterpriseId, domain); if (l == 1){ // 这必然是一个冲突配置或者真实配置 Optional tenantIdAndDomain = selfServiceDomainConfigDao.findByTenantIdAndDomain(enterpriseId, domain); if (tenantIdAndDomain.isPresent()) { // 非冲突域名 list.add(domain); }else { // 冲突域名 Optional 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 HCDN:3 自研2.0:8 试商用客户峰值带宽 华为平面:1 中兴平面:2 HCDN:3 自研2.0:4 ## 需求开发 ```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 ## (完成)增加黑名单联合惩戒需求,不允许惩戒客户新增域名