rwadurian/frontend/mobile-app/lib/core/services
hailin 207b522754 feat(customer-service): 客服联系方式从硬编码改为后台可配置
将 mobile-app "联系客服" 弹窗的微信/QQ联系方式从硬编码改为
admin-web 后台动态配置,支持任意数量的联系方式管理。

## Backend (admin-service)

- 新增 Prisma 模型: ContactType 枚举(WECHAT/QQ) + CustomerServiceContact
- 新增迁移 SQL: 建表 + 2条索引 + 4条种子数据(保留现有硬编码联系方式)
- 新增双 Controller (参考 app-asset.controller.ts 模式):
  - AdminCustomerServiceContactController (admin/customer-service-contacts)
    GET 列表 / POST 新增 / PUT 更新 / DELETE 删除
  - PublicCustomerServiceContactController (customer-service-contacts)
    GET 仅返回 isEnabled=true,按 sortOrder 排序
- 注意: 公开 Controller 用 @Controller('customer-service-contacts')
  避免与全局前缀 api/v1 双重叠加

## Kong 网关

- 新增路由 admin-customer-service-contacts-public
  路径 /api/v1/customer-service-contacts → admin-service:3010
- Admin 端点由已有 admin-api 路由 (/api/v1/admin) 覆盖

## Admin-web

- endpoints.ts: 新增 CUSTOMER_SERVICE_CONTACTS 端点组
- customerServiceContactService.ts: CRUD 服务 (list/create/update/delete)
- settings/page.tsx: 新增"客服联系方式管理"区块
  表格展示(排序/类型/标签/联系方式/启停/操作) + 内联新增/编辑表单
- settings.module.scss: contactTable / contactForm / contactFormFields 样式

## Flutter Mobile-app

- storage_keys.dart: 新增 cachedCustomerServiceContacts 缓存 key
- customer_service_contact_service.dart: API + 缓存服务
  (内存5分钟TTL + SharedPreferences持久化 + 后台静默刷新)
- injection_container.dart: 注册 customerServiceContactServiceProvider
- profile_page.dart: _showCustomerServiceDialog() 从硬编码改为
  动态 API 加载,contacts 为空时显示"暂无客服联系方式"占位符

## 文件清单 (4 新建 + 9 修改)

新建:
- backend/.../migrations/20260205100000_add_customer_service_contacts/migration.sql
- backend/.../controllers/customer-service-contact.controller.ts
- frontend/admin-web/src/services/customerServiceContactService.ts
- frontend/mobile-app/lib/core/services/customer_service_contact_service.dart

修改:
- backend/.../prisma/schema.prisma
- backend/.../src/app.module.ts
- backend/api-gateway/kong.yml
- frontend/admin-web/src/infrastructure/api/endpoints.ts
- frontend/admin-web/src/app/(dashboard)/settings/page.tsx
- frontend/admin-web/src/app/(dashboard)/settings/settings.module.scss
- frontend/mobile-app/lib/core/storage/storage_keys.dart
- frontend/mobile-app/lib/core/di/injection_container.dart
- frontend/mobile-app/lib/features/profile/presentation/pages/profile_page.dart

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 05:00:25 -08:00
..
account_service.dart fix(mobile-app): 修复头像更新未同步到账号列表的问题 2025-12-27 10:25:19 -08:00
app_asset_service.dart fix(app-assets): 修复公开API路径双重前缀 + Kong网关路由缺失 2026-02-05 04:36:53 -08:00
auth_event_service.dart feat(auth): 实现修改密码API和Token过期自动跳转登录 2025-12-23 20:25:56 -08:00
authorization_service.dart fix(mobile): 改进用户详情页风格和火柴人进度计算 2025-12-24 01:41:41 -08:00
contract_check_service.dart chore: temporarily disable KYC and contract check logs 2026-01-02 20:51:13 -08:00
contract_signing_service.dart feat(mobile-app): 增强合同PDF下载可靠性和用户体验 2026-01-09 07:12:21 -08:00
customer_service_contact_service.dart feat(customer-service): 客服联系方式从硬编码改为后台可配置 2026-02-05 05:00:25 -08:00
deposit_service.dart fix(mobile-app): always fetch deposit address from server in deposit_service 2026-01-04 10:17:41 -08:00
leaderboard_service.dart fix(mobile-app): correct leaderboard status API path 2026-01-04 03:45:55 -08:00
maintenance_service.dart feat(mobile-app,admin): 添加系统维护功能和通知徽章功能 2025-12-27 23:26:01 -08:00
multi_account_service.dart fix(mobile-app): 退出登录时停止遥测上传 2025-12-27 10:40:28 -08:00
notification_service.dart fix(notification): 修复通知中心API路径 2025-12-24 01:20:43 -08:00
pending_action_check_service.dart feat(pending-actions): add user pending actions system 2026-01-02 18:22:51 -08:00
pending_action_polling_service.dart feat(mobile-app): 添加待办操作轮询机制 2026-01-05 05:36:18 -08:00
pending_action_service.dart feat(pending-actions): add special deduction feature for admin-created user actions 2026-01-03 07:04:46 -08:00
planting_service.dart fix(mobile-app): 修复认种订单解析和状态检查问题 2026-01-09 02:49:31 -08:00
referral_service.dart feat(profile): 添加我的伞下功能 - 展示下级用户树形结构 2025-12-14 10:34:56 -08:00
reward_service.dart feat(ledger): add detailed ledger entry views with source tracking 2026-01-03 20:09:17 -08:00
system_config_service.dart fix(app-assets): 修复公开API路径双重前缀 + Kong网关路由缺失 2026-02-05 04:36:53 -08:00
wallet_service.dart feat(wallet-service): add offline settlement deduction feature 2026-01-04 06:56:39 -08:00