Commit Graph

126 Commits

Author SHA1 Message Date
zou
906a675136 fix(F006): 进入店铺按钮跳转改为 /v2/supplier/:id (供应商详情页, 与供应商库查看详情一致) 2026-08-08 11:56:05 +08:00
zou
2b329397bc feat(F006): 企业详情页优化 - 企业名旁显示标签 + 进入店铺按钮跳转 /v2/shop/:id (pc-前端-v2 shop/:id 路由已补) 2026-08-08 11:48:57 +08:00
574e47a1d9 Merge pull request '企业详情独立页面 (Header+3Tab: 基本信息/资质认证/履约情况)' (#4) from develop into main 2026-08-08 11:32:59 +08:00
zou
2d9d32ba33 feat(F006): 企业详情独立页面 - 参考老系统设计+新主题规范 (Header+3Tab: 基本信息/资质认证/履约情况, 80+字段真API) 2026-08-08 11:32:04 +08:00
f0b8b6cee8 Merge pull request 'admin_new P0/P1 全量补齐合并 (5项差距 + CRUD真API + 询价/看板真数据)' (#3) from develop into main 2026-08-08 10:10:03 +08:00
zou
58809755d1 merge: 补齐5项差距 + P1 CRUD 全量 (bc363b1) 2026-08-08 10:09:27 +08:00
zou
bc363b195c feat(F006): 补齐5项差距 - 价格公式变量新页面 + goodunit CRUD + coupon FormDialog + 售后/退款/支付操作按钮全接真API (Playwright 6/6 PASS) 2026-08-08 10:06:20 +08:00
zou
c161f68d03 fix(F006): OrderList/Detail/Inquiry 操作按钮 mock→准确提示 (后台管理不做业务操作, 引导前台) + coupon add/edit hint 2026-08-08 09:47:25 +08:00
zou
d8cd0d3478 fix(F006-P1): categoryGood/servicegood/goodlist/region CRUD mock→真 API (增删改/审核/上下架/批量操作) + StatisticsView 已走真API 2026-08-08 09:43:08 +08:00
zou
d5fe4c5d3e merge: P1 CRUD batch + inquiry/dashboard real API + categoryGood/servicegood/goodlist/region CRUD→真 API 2026-08-08 09:39:34 +08:00
zou
d0790126b0 fix(F006-P1): 7个B级页面 CRUD mock→真 API - groupbuy/seckill/coupon/textconfig/feedback/lunbo/help 删除/启用/停用/批量删除/新增/修改 全部接真后端 (Playwright 7/7 PASS) 2026-08-08 09:06:20 +08:00
zou
f7bb10f744 fix(F006): DashboardView+AppLayout 改调真 API /supplier/inquiry/page (假数据→真数据) 2026-08-08 08:55:46 +08:00
zou
4bcf13ba1f fix(F006): 询价列表/详情改调真 API /supplier/inquiry/page + getById (假数据→真数据 204条) 2026-08-08 08:49:34 +08:00
zou
027ff5192b feat(F006): OrderDetailView 改调真 API /sys/openapi/order/info (假数据→真数据) 2026-08-07 11:36:03 +08:00
857cec4290 Merge pull request 'admin_new P0+P1 全批次合并 (84 commits)' (#2) from develop into main 2026-08-07 11:27:17 +08:00
zou
0779b31402 merge: admin_new P0+P1 全批次 — 83 commits (P0 全量接口探测+17条假数据→真数据+textconfig NPE修复+菜单清理 + P1 12条mock→真view + W9-W17 view 标准化) 2026-08-07 11:25:42 +08:00
zou
375a70fa1d chore(menu): 隐藏 devtools×5 + other/label 菜单 (后端无接口, 客户不需要) 2026-08-07 11:25:13 +08:00
zou
7c9d91af1f feat(F006-P0BC): 7 view API 路径修正 + categoryGood 接真 API - feedback/lunbo/aftersale/refund/enterpriselevel/rating/score 假数据→真数据 (8/8 PASS) 2026-08-07 11:19:10 +08:00
zou
7e85188576 feat(F006-P0A): 9 条 mock 路由切真 view - 消息(短信/邮件×4) + 行业/资讯分类 + 用户通知 + 待处理消息 + userManagement redirect 2026-08-07 11:05:09 +08:00
zou
e16033bf13 feat(F006-P1): 12 条 MockTableView 路由切真 view - 运营中心/财务流水/资讯/帮助/内容/系统消息 2026-08-07 10:40:08 +08:00
zou
1d5d739b0e feat(F006): 企业登记管理真页面 + 路由修复 — 8 条 mock→真 view 切换 + 企业后台入口 + 8 条 /admin/sys nginx SPA fallback (Playwright 14/14 通过 0 JS 错误) 2026-08-07 10:14:56 +08:00
zou
3d0e622c1e feat(menu): 价格公式变量菜单挂载 — sys_menu+sys_language插入记录(pid=商品管理组) + MENU_LABELS加条目(sort=713), 页面/路由/API早已存在 — Playwright验证菜单显示 2026-08-06 16:32:58 +08:00
zou
f2adaf3392 feat(F006): 品牌管理页改真页面(分页/审核/删除/查看授权企业), 路由改指真view 2026-08-05 16:25:54 +08:00
zou
4d1e125840 feat(price-formula-variable): 运营后台价格变量管理页 P4
- 新增 /other/priceFormulaVariable 路由
- PriceFormulaVariableListView.vue:
  · 变量列表 (标识/名称/单位/当前值/取值方式/状态)
  · 快速改值: 行内编辑当前值, 保存后相关商品价格自动变化
  · 新增/编辑弹窗: 手工维护 / AKShare采集 两种模式
  · 采集代码 + 换算公式配置
  · 启停/删除
2026-08-04 16:16:34 +08:00
zou
474a4eabfc feat(theme-system): F006 后台主题配置页
- src/views/theme/ThemeConfigView.vue: 4 套主题色卡 + preview + 一键保存
- router: /sys/theme-config 路由
- menu-labels: 系统设置下加主题配置菜单项 (Brush icon)
- 后端依赖: GET /sys/openapi/theme/current + POST /sys/openapi/theme/update?theme=X
2026-08-04 16:16:34 +08:00
Sisyphus
9837d9fb41 fix(F006): 未登录访问 /admin/ 时业务 code:401 自动跳登录页(不再白屏未授权) 2026-07-20 14:57:46 +08:00
Sisyphus
e0534ee365 fix(F006-W18): LoginView 2 处永久修复 /api 前缀
改前: line 48 captchaUrl = /auth/captcha (img src 不走 axios baseURL)
      line 68 axios.post(/auth/oauth/token) (不走 http 实例 baseURL)
      巨变数字 nginx 只代理 /api/ 前缀, /auth/* 全 404

改后: line 48 /api/auth/captcha
      line 68 /api/auth/oauth/token

验证 (0 命中才通过):
  grep /auth/captcha dist/*.js | grep -v /api  → 0 ✅
  grep /auth/oauth dist/*.js | grep -v /api   → 0 ✅
2026-07-15 11:51:10 +08:00
Sisyphus
8be1fd3fba fix(F006-W18): LoginView captcha URL 加 /api 前缀 2026-07-15 11:45:45 +08:00
Sisyphus
eaeb9f1aef fix(F006-W18): EnterpriseListView 完整重写 (UI规范+真实字段映射)
*** v2: 解决 v1 的两个根本问题 ***

问题 1: v1 的 endpoints page() 返回 EnterpriseFeignDTO (仅4个字段),
         导致 administrator/industry/supplierLevel 等30+字段全缺。
   根因: 上次 F002 修复把原始全字段 page 替换成了精简版 feign 端点。
   修法: 把 F002 page 改名为 pageSimple, 恢复原始 EnterpriseDTO page 端点。

问题 2: v1 用原生 el-table 不守 UI 规范。
   修法: 套 PageHeader/SearchBar/DataTable 组件 + 按项目设计规范。

改动:
- 后端: ApiEnterpriseController +pageSimple (F002 feign精简版) +page (全字段)
- 后端: EnterpriseFeign/fallback/OpenApiCustomerController 调 pageSimple
- 前端: EnterpriseListView 完整重写:
  - PageHeader + SearchBar (企业名称/行业/供应商等级) + 批量操作栏
  - DataTable: selection/企业名称(头像)/管理员+手机(两行)/行业+等级(两行)/标签/业务员/状态/入驻时间/操作
  - 操作列: 详情/更换管理员/更多(审核/标签/评级/禁用/隐藏/推荐/分配/删除)
  - 详情弹窗: EnterpriseDTO 全字段(含驳回原因/工商号/注册时间/法人)
  - 字段映射: 完全来自后端 EnterpriseDTO (编译反编译确认所有字段存在)
  - API: /user/enterprise/page 传 enterpriseName/industry/supplierLevel/salesperson/supplierLabel/status/homeShow 过滤
2026-07-15 10:32:56 +08:00
Sisyphus
ba729acaed fix(F006-W18): 企业列表 EnterpriseListView.vue 功能对齐老 vue (Phase 1)
Phase 1 移植老 vue 企业管理-企业列表完整功能:
1. 搜索区: 企业名称 + 行业类型 + 供应商等级 + 高级搜索(业务员/标签/审核状态/推荐显示)
2. 操作按钮: 导入/批量审核/批量设置标签/批量分配业务员/删除/导出
3. 表格列: checkbox + 企业名称(头像) + 管理员手机号 + 行业等级 + 标签 + 业务员 + 状态 + 入驻时间 + 操作
4. 操作列: 详情 + 更换管理员 + 更多下拉(审核/标签/评级/禁用/隐藏/推荐/分配业务员/删除)
5. 详情弹窗升级: 全字段展示(含审核驳回原因/工商号/注册时间等)

数据字段来自 EnterpriseDTO (后端 ApiEnterpriseController):
- administrator/administratorMobile, industry, supplierLevel, supplierLabel
- salesperson/salespersonMobile, status(1-3), enabled, showFlag, homeShow
- createDate(入驻时间), failReason(审核驳回原因)

注: 批量操作(审核/标签/分配业务员)和导入/导出的具体弹窗和文件上传
待 Phase 2 实现, 当前桩函数提示待实现

deploy: dist rsync + docker rebuild + recreate + curl 200 验证
2026-07-15 10:20:36 +08:00
Sisyphus
4899bc1793 fix(F006-W18): admin 前端 BUG A/B/C (客户运维反馈)
BUG A: APIKey 申请搜企业搜不到
  - ApplyApiKeyDialog.vue loadCustomers 加 name 参数调后端, 不再本地 filter
  - 去掉 filteredCustomers computed, 表格直接用 customers
  - searchKey 输入加 debounce 300ms watch 调 loadCustomers

BUG B: 企业列表/行业/标签管理等菜单不显示
  - menu.ts filterByFrontendTruth 加 url 规范化匹配
  - 后端 url 带 / (如 /user/enterprise/enterprise), MENU_LABELS 不带 /
  - normalizeUrl = url.replace(/^\//,"") 后再 has() 匹配

BUG C: baseURL 空串 巨变数字 nginx 不通
  - request.ts baseURL:"" 改 "/api"
  - 巨变数字 nginx 只有 /api/ location (没独立 /sys/ /auth/ 等)
  - devbox nginx /api/ 也去前缀 (rewrite ^/api/(.*)\$ /\$1), 兼容

dist 验证: baseURL:"/api" ✓
devbox 实测: name=郑州巨变 返 1 条命中
2026-07-14 19:15:48 +08:00
Sisyphus
5d9814f135 feat(F006-W18): menu-labels.ts 加「企业登记管理」菜单 (sort=105)
对应老 vue 路由 /user/enterprise/merchant/register
配合 F002-W18 Java 后端修复 (admin APIKey 申请搜企业)

部署: dist 重 build + rsync + docker rebuild + recreate + curl 200 验证
2026-07-14 15:57:28 +08:00
Sisyphus
fa1f075c0a fix(merge): 闪退修复 - 业务级 code:401 不再清 token 跳登录 (仅 HTTP 401 才跳) 2026-07-11 09:27:50 +08:00
Sisyphus
cf00136340 feat(F006): APIKey申请结果+详情弹窗显示MCP地址
后端 apply/detail 返回 mcpEndpoint (从 -Dmcp.endpoint 注入),
前端申请弹窗加 MCP地址列, 详情弹窗加 MCP地址行,
用户复制 appId/appSecret/MCP地址 三值到平台助手配置
2026-07-10 11:54:04 +08:00
Sisyphus
44fd765aa7 fix(F006): 重置密钥弹窗复制按钮显示不全
el-input append插槽被长密钥挤压, 改flex布局按钮独立放置 flex-shrink:0
2026-07-10 11:41:08 +08:00
Sisyphus
34e3c7cd71 fix(F006): 申请APIKey弹窗删除ConnectCode/过期时间列
无用字段清理, 弹窗结果表只保留公司名/AppID/AppSecret
2026-07-10 11:22:04 +08:00
Sisyphus
366056dcac fix(F006-W18): 申请APIKey Step3表格格式错乱+复制失败修复
1. 复制失败根因: navigator.clipboard API 要求 HTTPS/localhost,
   frp 走 http://direv.cloud:8080 是非安全上下文不可用。
   修法: 加 execCommand(copy) 降级方案 (复用 OpenAppListView copyText 逻辑)

2. 表格格式错乱根因: 5 列固定宽 (160+280+弹性+180+320) 超 640px 弹窗,
   AppSecret 列 input+button 横排挤不下。
   修法: 列宽重新分配 (公司120/AppID180/ConnectCode160/过期100/Secret200),
   AppSecret 单元格改 flex-column 竖排 (input 上 button 下),
   code 文本加 text-overflow ellipsis 防撑宽
2026-07-10 11:15:02 +08:00
Sisyphus
3efa5db533 fix(F006): 删除重发二维码功能 + 详情页ConnectCode字段
connectCode/扫码绑定场景从未落地(平台助手/小程序/PC均未消费),
重发二维码按钮和详情页ConnectCode/过期时间是无用功能, 删除清理.
后端端点/数据库字段保留不动(铁律8 不碰没坏的东西)
2026-07-10 11:01:56 +08:00
Sisyphus
8af8ed143d fix(F006-W18): 申请APIKey弹窗表格细节优化
1. 列名 客户名 → 公司名称 (Step1 + Step3 两处)
2. selection 选择框居中 (cell text-align center + padding 0)
3. 列宽重分配: 公司名称 min-width 200 左对齐, 联系人/电话居中
4. 表格圆角修复: 加 rr-apply-table class, border-radius 8px + overflow hidden
2026-07-10 10:54:55 +08:00
Sisyphus
4e525cf6dd fix(F006): OpenApp revoke/delete id 改 String 避免 Number 精度丢失
雪花ID 19位 > Number.MAX_SAFE_INTEGER(16位), Number() 截断
导致撤销/删除传错 id. 改 String(id), 后端 Long.parseLong(string) 兼容
2026-07-10 10:45:05 +08:00
Sisyphus
a59c934fd7 fix(F006-W18): 面包屑DFS修父菜单短路bug(集成管理>应用列表缺末级)
根因: resolveMenuItem 给父菜单 path = 第一个子菜单 path(如 集成管理.path =
/openapi/app)。旧 DFS 用 path 前缀匹配短路命中父菜单, 不再递归子树, 导致
末级菜单标题丢失(只显示 工作台 > 集成管理, 缺 应用列表)。

修法: 父节点(有 children)优先递归子树, 子树没命中才考虑父节点 path 前缀
匹配(详情页场景)。叶子节点走 path 精确匹配。
2026-07-10 10:31:38 +08:00
Sisyphus
978058c543 fix(F006-W18): 面包屑显示完整路径(工作台>一级目录>...>末级菜单)
根因: AppLayout.vue 面包屑写死两级(工作台 + route.meta.title),
省略了中间的父级目录层级。

修法: 加 breadcrumbItems computed, 从当前 route.path 在菜单树
(menuStore.list) DFS 追溯父级链, 返回完整路径标题数组。
- 列表页: 工作台 > 父目录 > ... > 末级菜单
- 详情页: 工作台 > 父目录 > ... > meta.title
- 首页/未命中: 仅工作台

部署: dist rsync + docker rebuild + scp src + curl 200 验证
2026-07-10 10:27:36 +08:00
Sisyphus
15294f5c1c feat(F006-W17.6): 用户列表数据列居中显示 (9 列加 align center, 余额保留 right) 2026-07-10 08:45:38 +08:00
Sisyphus
ff4c9bc140 fix(F006-W18.9): dark 主题 全局滚动条深色适配 (避免浅白滚动条割裂)
用户反馈: 暗主题下侧边栏原生滚动条是浅白色, 在深色背景上刺眼割裂

根因: 浏览器原生 ::-webkit-scrollbar 走系统默认色 (亮色),
项目没覆盖, dark 下没适配

修法 (src/styles/global-popper.scss 末尾新增):
- 默认 (亮主题): thumb var(--border) 浅灰
- hover: var(--ink-4) 深灰
- [data-theme=dark]: thumb var(--border) = #475569 深色
- hover: var(--ink-3) = #CBD5E1
- Firefox 兼容: html { scrollbar-color: var(--border) transparent; }

Playwright 实测 (.rr-sidebar 滚动条 thumb):
- 改前: 系统默认 #C0C0C0 浅灰 (刺眼)
- 改后: rgb(71,85,105) = #475569 深色 ✅ (dark 协调)
2026-07-09 17:38:14 +08:00
Sisyphus
3fc8326aeb fix(F006-W18.8): dark 主题 按钮 + 文字 颜色修复 (CSS 变量级联全部硬编码)
用户反馈: 暗主题下默认 el-button (如导出/重置) 文字几乎看不见

根因 (同类 W18 修复):
- tokens.scss :root 块定义 --el-text-color-regular: var(--ink-2) / --el-border-color: var(--border)
- CSS 变量解析时, [data-theme=dark] 块的 --ink-2 重写还未生效
- 导致 dark 下 --el-text-color-regular 仍是 tech-blue 默认 #334155 (深色字 on 深色背景 = 不可见)
- 按钮 border --el-border-color 仍是 #E2E8F0 (浅色边 on 暗背景 = 刺眼)

修法 (themes.scss [data-theme=dark] 块硬覆盖):
- --el-text-color-primary/regular/secondary/placeholder/disabled → #F8FAFC/#E2E8F0/#CBD5E1/#94A3B8
- --el-border-color/light/lighter/extra-light → #475569 (border)
- --el-border-color-dark/darker → #64748B (border-strong)
- --el-fill-color/light → #0F172A (bg-soft)
- --el-fill-color-lighter/extra-light/dark/darker → #283449 (surface-2)
- --el-fill-color-blank/bg-color/overlay → #1E293B (surface)
- --el-bg-color-page → #0F172A (bg-soft)
- --el-tooltip-bg-color → #1E293B
- --el-disabled-* → 配套浅色

Playwright dark 主题实测 (商品管理页 导出/重置 按钮):
- 改前: bg rgb(30,41,59) 但 color rgb(51,65,85) = #334155 (看不见)
- 改后: color rgb(226,232,240) = #E2E8F0 (清晰), border rgb(71,85,105) = #475569 (协调)
- --el-text-color-regular 改前 #334155 → 改后 #E2E8F0 ✅
- 截图确认: 导出/重置/新增商品/查询 全部按钮在 dark 下清晰可读
2026-07-09 17:29:04 +08:00
Sisyphus
ee52bed129 fix(F006-W18): 暗主题全面适配 (EP token 补齐 + v1 token 清理 + 业务硬编码色修)
用户反馈: dark 主题下大量页面卡片/表头是白底, 文字看不清, 视觉割裂

根因 (W5.x v2 token 迁移遗漏):
- v1 token (--rr-page-bg / --rr-bg-card / --rr-table-header-bg / --rr-row-hover / --rr-border-color / --rr-text-secondary) 在 themes.scss 完全没定义
- v2 用 --bg-soft / --surface / --surface-2 / --border / --ink-2 / --ink-3, 但大量组件没改 fallback, 永远走 hex fallback (#F1F5F9 / #FFFFFF)
- EP el-table 内部用 getCssVar(color, white) = --el-color-white, 未在 tokens.scss 重定向, dark 下仍是 #FFFFFF
- CSS 变量级联问题: :root 块 var(--surface) 解析时, dark 块的 --surface 重写还没生效

修法 (3 类共 11 文件):
1. EP token 补齐 (themes.scss dark 块 + tokens.scss :root 块):
   - --el-color-white / --el-color-black: #1E293B / #F8FAFC
   - --el-fill-color-blank / --el-fill-color-light: surface / bg-soft
   - --el-table-tr-bg-color / --el-table-bg-color: surface
   - --el-table-expanded-cell-bg-color: surface
   - --el-table-header-bg-color: surface-2 (表头略亮区分)
   - --el-table-row-hover-bg-color: bg-soft

2. v1 token 清理 (4 组件):
   - AppLayout.vue: 13 处 --rr-page-bg → --bg-soft
   - DataTable.vue: --rr-table-header-bg/--rr-text-secondary/--rr-row-hover/--rr-bg-card/--rr-border-color → v2 token
   - SearchBar.vue / ListTabs.vue: 同上

3. 业务页硬编码色 (5 业务页):
   - OpenAppListView.vue: 4 状态 badge + 表格头 #F8FAFC → var(--*-soft)
   - ApplyApiKeyDialog.vue: header #F8FAFC → var(--surface-2)
   - InquiryListView.vue / LogOperationView.vue / LogErrorView.vue: 4 类 badge → var(--amber/brand/green/red-soft)

Playwright 1920 视口 dark 主题实测 (5 个典型页):
- Dashboard: 侧栏 rgb(30,41,59), 主区 rgb(15,23,42), 表格 rgb(30,41,59) ✅
- 用户列表 / 应用列表 / 订单列表 / 询价列表: 全部统一深色 ✅
- 之前: elTableBg rgb(255,255,255) 纯白 → 现在: rgb(30,41,59) 暗 surface
- 文字、badge、按钮、分页器、搜索条全部 dark 适配

不动调色板 (按用户要求 严重问题优先): --border/--ink-2 等保持原值
2026-07-09 17:22:12 +08:00
Sisyphus
bae319fe98 feat(F006-W17.6): 服务商品页 PageHeader 加 SKU 总数 (type=2) 2026-07-09 17:11:43 +08:00
Sisyphus
8116e04291 feat(F006-W17.6): PageHeader 加 SKU 总数显示 (实物商品页 sub 改为 共 N 个商品, M 个SKU) 2026-07-09 16:44:17 +08:00
Sisyphus
c34035434a fix(F006-W17.8.3): openapi/app 隐藏权限范围列 + 操作列加宽到 220
用户反馈: 隐藏权限范围列, 操作列加宽

列宽重新分配 (1920 视口, 8 列, 表格 1630px 撑满):
- 删除 权限范围列 (scopes, minWidth 160)
- 应用名称 minWidth 180 → 220 (吸收差额 60px)
- 操作列 width 160 → 220 (加宽 60px, 给重发二维码+⋯ 充足空间)
- 其他列保持不变

实测 (Playwright):
- 客户名 260 / 应用名称 380 / AppID 240 / 调用次数 100
- 状态 90 / 创建时间 170 / 最后调用 170 / 操作 220
- 总列宽 1630px, 右边距 29px (与参考页用户列表一致)

操作列按钮完整性:
- 行 0 (已撤销): [详情, 删除] ✅
- 行 1/2 (已激活): [详情, 重发二维码] + ⋯ ✅
2026-07-09 16:20:11 +08:00
Sisyphus
d4441c051e fix(F006-W17.8.2): openapi/app 列宽优化 (AppID 缩到 240 + 操作列 160 + 加 2 业务列)
用户反馈: AppID 列右侧留白太多, 操作列窄按钮显示不全

列宽重新调整 (Playwright 1920 视口实测):
- 客户名 minWidth 150 → 150 (内容 14 字符, 实际 215px)
- 应用名称 minWidth 180 → 180 (内容 19 字符, 实际 257px)
- AppID minWidth 200 → width 240 + showOverflowTooltip (硬性不被内容撑大)
- 新增 权限范围列 (scopes, minWidth 160) - 真实业务字段
- 新增 调用次数列 (totalCallCount, width 100) - 真实业务字段
- 状态 width 100 → 90
- 创建时间 width 170
- 最后调用 width 170 (新增列)
- 操作 width 200 → 160 + fixed right + align center

实测列宽 (1920 视口, 表格 1630px 撑满):
- 客户名 215 / 应用名称 257 / AppID 240 / 权限范围 228
- 调用次数 100 / 状态 90 / 创建时间 170 / 最后调用 170 / 操作 160
- 9 列共 1630px, 右边距 29px (项目标准)

操作列按钮完整性:
- 行 0 (已撤销): [详情, 删除] ✅
- 行 1/2 (已激活): [详情, 重发二维码] + ⋯ ✅

新加 2 个真实业务列 (权限范围/调用次数) 充实表格, 避免列过少
2026-07-09 16:06:54 +08:00