jiajie_ali_products = [ { "id": "e1f4a2b3c5", "thrTitle": "弹性计算", "value": [ { "id": "a3b2c1d4e5", "name": "轻量应用服务器", "source": "jiajie" }, { "id": "b4c3d2e1f5", "name": "专有宿主机", "source": "jiajie" }, { "id": "c5d4e3f2a1", "name": "云服务器 ECS", "source": "jiajie" }, { "id": "d2e3f4a5b1", "name": "弹性伸缩", "source": "jiajie" }, { "id": "e3f4a5b1c2", "name": "资源编排", "source": "jiajie" } ] }, { "id": "f5a1b2c3d4", "thrTitle": "存储", "value": [ { "id": "a2b3c4d5e1", "name": "对象存储 OSS", "source": "jiajie" }, { "id": "b3c4d5e1f2", "name": "块存储", "source": "jiajie" }, { "id": "c4d5e1f2a3", "name": "表格存储 OTS", "source": "jiajie" }, { "id": "d5e1f2a3b4", "name": "日志服务 SLS", "source": "jiajie" }, { "id": "e1f2a3b4c5", "name": "文件存储 NAS", "source": "jiajie" }, { "id": "f2a3b4c5d1", "name": "网盘与相册服务", "source": "jiajie" }, { "id": "a3b4c5d1e2", "name": "智能媒体管理 IMM", "source": "jiajie" } ] }, { "id": "b4c5d1e2f3", "thrTitle": "数据库", "value": [ { "id": "c5d1e2f3a4", "name": "云数据库专属集群 MyBase", "source": "jiajie" }, { "id": "d1e2f3a4b5", "name": "数据传输 DTS", "source": "jiajie" }, { "id": "e2f3a4b5c1", "name": "数据管理 DMS", "source": "jiajie" }, { "id": "f3a4b5c1d2", "name": "数据库自治服务 DAS", "source": "jiajie" }, { "id": "a4b5c1d2e3", "name": "云数据库 ClickHouse", "source": "jiajie" }, { "id": "b5c1d2e3f4", "name": "云原生多模数据库 Lindorm", "source": "jiajie" }, { "id": "c1d2e3f4a5", "name": "云数据库 Redis 版", "source": "jiajie" }, { "id": "d2e3f4a5b1", "name": "云数据库 MongoDB 版", "source": "jiajie" }, { "id": "e3f4a5b1c2", "name": "云数据库 RDS", "source": "jiajie" }, { "id": "f4a5b1c2d3", "name": "图数据库 GDB", "source": "jiajie" }, { "id": "a5b1c2d3e4", "name": "云原生数据仓库 AnalyticDB MySQL", "source": "jiajie" }, { "id": "b1c2d3e4f5", "name": "云原生关系型数据库 PolarDB", "source": "jiajie" }, { "id": "c2d3e4f5a1", "name": "云数据库 OceanBase", "source": "jiajie" }, { "id": "d3e4f5a1b2", "name": "分析型数据库 AnalyticDB PostgreSQL 版", "source": "jiajie" }, { "id": "e4f5a1b2c3", "name": "云原生分布式数据库 PolarDB-X", "source": "jiajie" } ] }, { "id": "f5a1b2c3d4", "thrTitle": "安全", "value": [ { "id": "a1b2c3d4e5", "name": "内容安全", "source": "jiajie" }, { "id": "b2c3d4e5f1", "name": "数据库审计", "source": "jiajie" }, { "id": "c3d4e5f1a2", "name": "等保咨询服务", "source": "jiajie" }, { "id": "d4e5f1a2b3", "name": "安全管家服务", "source": "jiajie" }, { "id": "e5f1a2b3c4", "name": "加密服务", "source": "jiajie" }, { "id": "f1a2b3c4d5", "name": "安全评估加固服务", "source": "jiajie" }, { "id": "a2b3c4d5e1", "name": "云盾证书服务", "source": "jiajie" }, { "id": "b3c4d5e1f2", "name": "渗透测试服务", "source": "jiajie" }, { "id": "c4d5e1f2a3", "name": "风险评估服务", "source": "jiajie" }, { "id": "d5e1f2a3b4", "name": "办公安全平台 SASE", "source": "jiajie" }, { "id": "e1f2a3b4c5", "name": "DDoS 高防", "source": "jiajie" }, { "id": "f2a3b4c5d1", "name": "Web 应用防火墙", "source": "jiajie" }, { "id": "a3b4c5d1e2", "name": "云安全中心 (态势感知)", "source": "jiajie" }, { "id": "b4c5d1e2f3", "name": "云防火墙", "source": "jiajie" }, { "id": "c5d1e2f3a4", "name": "堡垒机", "source": "jiajie" } ] }, { "id": "d1e2f3a4b5", "thrTitle": "大数据计算", "value": [ { "id": "e2f3a4b5c1", "name": "信息查询服务", "source": "jiajie" }, { "id": "f3a4b5c1d2", "name": "智能开放搜索 OpenSearch", "source": "jiajie" }, { "id": "a4b5c1d2e3", "name": "实时数仓 Hologres", "source": "jiajie" }, { "id": "b5c1d2e3f4", "name": "数据总线", "source": "jiajie" }, { "id": "c1d2e3f4a5", "name": "实时计算 Flink 版", "source": "jiajie" }, { "id": "d2e3f4a5b1", "name": "阿里云 ElasticSearch", "source": "jiajie" }, { "id": "e3f4a5b1c2", "name": "E-MapReduce", "source": "jiajie" }, { "id": "f4a5b1c2d3", "name": "云原生大数据计算服务", "source": "jiajie" }, { "id": "a5b1c2d3e4", "name": "MaxCompute", "source": "jiajie" }, { "id": "b1c2d3e4f5", "name": "DataV 数据可视化", "source": "jiajie" }, { "id": "c2d3e4f5a1", "name": "大数据开发治理平台 DataWorks", "source": "jiajie" } ] }, { "id": "d3e4f5a1b2", "thrTitle": "人工智能", "value": [ { "id": "e4f5a1b2c3", "name": "机器学习平台 PAI", "source": "jiajie" }, { "id": "f5a1b2c3d4", "name": "视觉智能开放平台", "source": "jiajie" } ] }, { "id": "a1b2c3d4e5", "thrTitle": "网络与 CDN", "value": [ { "id": "b2c3d4e5f1", "name": "专有网络 VPC", "source": "jiajie" }, { "id": "c3d4e5f1a2", "name": "弹性公网 IP", "source": "jiajie" }, { "id": "d4e5f1a2b3", "name": "负载均衡 SLB", "source": "jiajie" }, { "id": "e5f1a2b3c4", "name": "共享流量包", "source": "jiajie" }, { "id": "f1a2b3c4d5", "name": "共享带宽", "source": "jiajie" }, { "id": "a2b3c4d5e1", "name": "边缘网络加速", "source": "jiajie" }, { "id": "b3c4d5e1f2", "name": "内容分发网络 CDN", "source": "jiajie" }, { "id": "c4d5e1f2a3", "name": "全站加速", "source": "jiajie" }, { "id": "d5e1f2a3b4", "name": "边缘节点服务", "source": "jiajie" }, { "id": "e1f2a3b4c5", "name": "云企业网 CEN", "source": "jiajie" }, { "id": "f2a3b4c5d1", "name": "VPN 网关", "source": "jiajie" }, { "id": "a3b4c5d1e2", "name": "高速通道", "source": "jiajie" } ] }, { "id": "b4c5d1e2f3", "thrTitle": "企业应用与云通信", "value": [ { "id": "c5d1e2f3a4", "name": "短信服务", "source": "jiajie" }, { "id": "d1e2f3a4b5", "name": "备案服务", "source": "jiajie" } ] }, { "id": "e2f3a4b5c1", "thrTitle": "混合云", "value": [ { "id": "f3a4b5c1d2", "name": "NAT 网关", "source": "jiajie" }, { "id": "a4b5c1d2e3", "name": "混合云备份", "source": "jiajie" } ] }, { "id": "b1c2d3e4f5", "thrTitle": "容器与中间件", "value": [ { "id": "c2d3e4f5a1", "name": "微服务引擎 MSE", "source": "jiajie" }, { "id": "d3e4f5a1b2", "name": "Serverless 应用引擎 ACE", "source": "jiajie" }, { "id": "e4f5a1b2c3", "name": "函数计算 FC", "source": "jiajie" }, { "id": "f5a1b2c3d4", "name": "应用实时监控服务 ARMS", "source": "jiajie" }, { "id": "a1b2c3d4e5", "name": "事件总线 EventBridge", "source": "jiajie" }, { "id": "b2c3d4e5f1", "name": "性能测试 PTS", "source": "jiajie" }, { "id": "c3d4e5f1a2", "name": "API 网关", "source": "jiajie" }, { "id": "d4e5f1a2b3", "name": "消息服务 MNS", "source": "jiajie" }, { "id": "e5f1a2b3c4", "name": "消息队列 Kafka", "source": "jiajie" }, { "id": "f1a2b3c4d5", "name": "微消息队列 MQTT 版", "source": "jiajie" }, { "id": "a2b3c4d5e1", "name": "消息队列 RocketMQ 版", "source": "jiajie" }, { "id": "b3c4d5e1f2", "name": "容器镜像服务 ACR", "source": "jiajie" }, { "id": "c4d5e1f2a3", "name": "容器服务 ACK", "source": "jiajie" } ] }, { "id": "d5e1f2a3b4", "thrTitle": "开发与运维", "value": [ { "id": "e1f2a3b4c5", "name": "访问控制 RAM", "source": "jiajie" }, { "id": "f2a3b4c5d1", "name": "可观测可视化 Grafana 版", "source": "jiajie" }, { "id": "a3b4c5d1e2", "name": "操作审计", "source": "jiajie" }, { "id": "b4c5d1e2f3", "name": "云监控", "source": "jiajie" }, { "id": "c5d1e2f3a4", "name": "云解析 DNS", "source": "jiajie" }, { "id": "d1e2f3a4b5", "name": "配额中心", "source": "jiajie" }, { "id": "e2f3a4b5c1", "name": "资源管理", "source": "jiajie" } ] }, { "id": "f3a4b5c1d2", "thrTitle": "视频服务", "value": [ { "id": "a4b5c1d2e3", "name": "视频直播", "source": "jiajie" }, { "id": "b5c1d2e3f4", "name": "视频点播", "source": "jiajie" } ] } ] async def get_firstpage_product_tree(ns={}): data = { "product_service": [ { "id": "1", "firTitle": "云", "secMenu": [ { "id": "10", "secTitle": "百度云", "thrMenu": [ { "id": "13", "thrTitle": "计算", "value": [ { "id": "14", "name": "弹性云服务器", "discount": "2", "type": "baidu_BCC" }, { "id": "25", "name": "裸金属服务器", "discount": "2" }, { "id": "36", "name": "GPU云服务器", "discount": "8" } ] } ] }, ] }, { 'id': "2", 'firTitle': "算", 'secMenu': [ { 'id': '21', 'secTitle': '智算', 'thrMenu': [ { 'id': '211', 'thrTitle': None, 'value': [#{'id': '2111', 'name': '容器云'}, {'id': '2113', 'name': '裸金属'}, #{'id': '2114', 'name': '裸金属-910B'}, {'id': '2115', 'name': '一体机-昆仑芯'}, {'id': '2112', 'name': '一体机-天数智芯'},] }, ], }, ] }, { "id": "3", "firTitle": "网", "secMenu": [ { "id": "31", "secTitle": "算力网络", "thrMenu": [ { "id": "311", "thrTitle": None, "value": [{'id': '3111', 'name': '互联网专线'}, {'id': '3121', 'name': 'SDWAN'}, {'id': '3131', 'name': 'DCI'}, {'id': '3141', 'name': 'AI专线'} ] } ] }, ] }, # { # "id": "4", # "firTitle": "模型", # "secMenu": [] # }, # { # "id": "5", # "firTitle": "服务", # "secMenu": [] # }, { "id": "6", "firTitle": "用", "secMenu": [ { "id": "61", "secTitle": "AI应用", "thrMenu": [ { "id": "611", "thrTitle": "智慧医疗", "value": [ { "id": "6111", "name": "灵医智能体" } ] }, { "id": "612", "thrTitle": "智慧客服", "value": [ { "id": "6112", "name": "客悦·智能客服" } ] }, ] }, ] } ] } db = DBPools() async with db.sqlorContext('kboss') as sor: try: if ns.get('url_link') and ('kaiyuancloud' in ns.get('url_link') or 'opencomputing' in ns.get('url_link')): data_baidu = { "id": "12", "secTitle": "阿里云", "thrMenu": jiajie_ali_products } data['product_service'][0]['secMenu'].append(data_baidu) ns['prefix'] = 'baidu' product_get_sql = """select id, name, description, label, spec_note, productgroup from product where providerpid like '{}' and del_flg = 0;""".format(ns.get('prefix') + '_%%') products = await sor.sqlExe(product_get_sql, {}) # 使用字典来按'group'字段分组数据 grouped_data = {} for item in products: spec_note = json.loads(item['spec_note'].replace('None', '""')) empty_flag = 0 for spec in spec_note: if spec.get('configName') == 'url': item['url'] = spec.get('value') if not item['url']: empty_flag = 1 elif spec.get('configName') == 'listUrl': item['listUrl'] = spec.get('value') elif spec.get('configName') == 'iconUrl': item['iconUrl'] = spec.get('value') if empty_flag: continue item.pop('spec_note') group = item.get('productgroup') if group not in grouped_data: grouped_data[group] = [] grouped_data[group].append(item) # 构造最终的数据结构 result = [] for group, persons in grouped_data.items(): result.append({'thrTitle': group, 'value': persons}) priority = {'计算': 0, '网络': 1, '存储': 2, '数据库': 3, '大数据平台': 4} sorted_data = sorted( result, key=lambda x: (priority.get(x['thrTitle'], 4), result.index(x)) ) data['product_service'][0]['secMenu'][0]['thrMenu'] = sorted_data return { 'status': True, 'msg': 'get product list success', 'data': data } except Exception as e: print(e) return { 'status': False, 'msg': str(e) } ret = await get_firstpage_product_tree(params_kw) return ret