--- 日期: 2024-05-14 11:10 来源: 测试 --- # 问题详情 [NRWLXT-28236 集团和省运营经理的域名个数全不正确](http://jira.komect.net/browse/NRWLXT-28236) # 处理过程 1. 确认集团运营经理首页数据来源? 2. 确认集团运营经理域名列表域名总条数? 3. 确认集团运营经理和省运营经理的后台接口是否一致? /dashboard/index domainSum(域名总数) normalNum(正常运行) disabledNum(已禁用) deployingNum(部署中) deployfailureNum(部署失败) 域名总数 = 正常运行 + 已禁用 + 部署中 + 部署失败 ## 域名所有状态 ``` -1: 初始化 0: 待排期 1: 待分发 2: 部署中 3: 已生效 4: 部署失败 5: 已停用 6: 部署中 7: 删除中 8: 停用中 9: 启用中 10: 待分发 11: 删除中 12: 删除中 13: 部署中 14: 部署中 15: 部署中 16: 删除中 17: 删除中 18: 部署中 19: 待配置 20: 部署中 21: 部署中 22: 删除中 23: 停用中 24: 启用中 25: 已保存 26: 待确认 27: 删除中 28: 部署中 29: 部署中 30: 部署中 31: 部署中 32: 部署中 33: 删除中 ``` 初始化 有 1 个,对应的是 -1。 待排期 有 1 个,对应的是 0。 待分发 有 2 个,对应的是 1 和 10。 部署中 有 13 个,对应的是 2, 6, 13, 14, 15, 18, 20, 21, 28, 29, 30, 31, 32。 **已生效** 有 1 个,对应的是 3。 **部署失败** 有 1 个,对应的是 4。 **已停用** 有 1 个,对应的是 5。 删除中 有 8 个,对应的是 7, 11, 12, 16, 17, 22, 27, 33。 停用中 有 2 个,对应的是 8 和 23。 启用中 有 2 个,对应的是 9 和 24。 待配置 有 1 个,对应的是 19。 已保存 有 1 个,对应的是 25。 待确认 有 1 个,对应的是 26。 ## 首页主要逻辑 com.cmcc.cdn.platform.portal.controller.DashboardController#index 获取域名的**核心 SQL**: ```sql SELECT state, COUNT(*) as count FROM self_service_domain_config WHERE tenant_id IN (:tenantIds) GROUP BY state; ``` 对于 tenantIds : 集团运营经理 获取所有企业 id。 省运营经理 只获取名下企业 id(enterprise_manager_table 有关联关系) 通过上方 sql 获取域名的状态分组集合后根据状态对域名进行分类。 normalNum(正常运行):已生效 (库中的 4) disabledNum(已禁用): 已停用 (库中的 6) deployfailureNum(部署失败):部署失败(库中的 5) deployingNum(部署中):去除上边 3 种状态都是部署中 对测试账号**验证**符合梳理逻辑 ```sql SELECT state, COUNT(*) as count FROM self_service_domain_config WHERE tenant_id IN (select enterprise_id from enterprise_info) GROUP BY state; SELECT SUM(count) as total_count FROM ( SELECT state, COUNT(*) as count FROM self_service_domain_config WHERE tenant_id IN (select enterprise_id from enterprise_info) GROUP BY state ) as subquery; ``` ## 控制台主要逻辑 ### 集团运营经理查全部 控制台点播:31840 控制台直播:299 控制台总数:32139 未统计 product 为 4 的 106 个 数据库总量:32245 集团运营经理首页全部:32243 差两个是因为这个两个域名的企业信息没有了。 ### 省运营经理 获取所属省份下的 cache+ 和 esop 企业的域名。 # 总结 代码修改: ```java public List groupByState(List tenantIds) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createTupleQuery(); Root root = cq.from(SelfServiceDomainConfigPO.class); // 因数据库中product为4的业务已下线,为保持首页查询逻辑和域名列表一致,进行过滤,product参考ProductsEnums。 Predicate productNotEqual4 = cb.notEqual(root.get("product"), cb.literal(4)); cq.multiselect(root.get("state"), cb.count(root)) .where(cb.and(root.get("tenantId").in(tenantIds), productNotEqual4)) .groupBy(root.get("state")); return em.createQuery(cq).getResultList(); } ``` ``` 生产 2,2待分发 3,123部署中 4,9327已生效 5,30部署失败 6,263已停用 7,2部署中 8,43删除中 9,2停用中 13,30删除中 17,1删除中 20,2待配置 21,48部署中 ``` 1. 关于首页 集团运营经理依据所有的企业 id 获取对应的域名。通过状态分类,正常运行(库中的 4 已生效)、已禁用(库中的 6 已停用)、部署失败(库中的 5 部署失败)、部署中(除上边 3 种状态均归类为部署中) 省运营经理只获取名下企业 id 对应的域名(enterprise_manager_table 为依据)。分类如上。 2. 关于控制台 集团运营经理取全部,省运营经理获取所属省份下的 cache+ 和 esop 企业的域名。同时均未获取库中产品为 4(直播流媒体加速)的域名。 ## 以 jira 单中测试环境账号为例 测试库中:15466 个域名 **首页** 域名总数:15465 (正常运行 + 已禁用 + 部署中 + 部署失败)(与库差一个域名是因为 www.myl0705.com 这个域名没了企业信息属于脏数据) 正常运行:7160 已禁用:353 部署中:7540 部署失败:412 **控制台** 点播:14890 直播:544 总数:15434(与域名库差 32 是因为未统计 produt 为 4 直播流媒体 32 个加速域名) **已生效** 域名列表总数:7141 首页总数:7160 差 19 个是因为存在 19 个 product 是 4 的。 **部署失败** 域名列表总数:411 首页总数:412 差 1 个是因为存在 1 个 product 是 4 的。 **已停用** 域名列表:349 首页总数:353 差 4 个是因为存在 4 个 product 是 4 的。 **部署中** 域名列表:6252 首页总数:7540 差 1288 是因为首页的部署中为库中剩余的所有状态的域名:初始化、待排期、待分发、部署中、删除中、停用中、启用中、待配置、已保存、待确认 已生效、部署失败、已停用对不上均是由于 product 是 4 的域名造成的。 部署中 是因为首页的部署中为库中剩余的所有状态的域名:初始化、待排期、待分发、部署中、删除中、停用中、启用中、待配置、已保存、待确认。域名列表的只是部署中。 这边对首页进行处理 1.过滤掉 product 是 4 的域名;2.部署中过滤为只是部署中状态的域名个数。可以吗? 可以的。 ## 自测 库中一共:32245 域名列表:32139 + product 为 4:106 符合 32245 直播:299 点播:31840 首页 首页: 总数:4274 正常:2680 禁用:70 部署失败:159 列表: 总数:4274 正常:2646+34 禁用:55+15 部署失败:159 域名总数 31779 正常运行 13564 已禁用 274 部署失败 1793 列表: 总数:31570+227=31797-18 正常:13414+159=13573-9 禁用:254+20=274 部署失败:1791+3=1794-1 域名总数 20107 正常运行 5424 已禁用 20 部署失败 1445 列表: 总数:20089+18= 正常:5409+15= 禁用:19+1= 部署失败:1445