HaniBlindBox/TASK6_IMPLEMENTATION_SUMMARY.md
2026-03-01 14:43:44 +08:00

3.8 KiB
Raw Blame History

Task 6: 商城商品详情页Banner图配置 - 实施完成

概述

为商城类型盒子添加独立的商品详情页Banner图字段 imgurl_banner,解决当前 imgurl_detail 同时用于顶部Banner和底部详情图的问题。

字段用途说明

  • imgurl → 列表页封面图(小图)
  • imgurl_banner → 详情页顶部Banner图新增
  • imgurl_detail → 详情页底部详情图

已完成的修改

1. 数据库

文件: server/HoneyBox/scripts/add_imgurl_banner.sql

  • 添加 imgurl_banner 字段NVARCHAR(500) NULL
  • 包含字段存在性检查,避免重复添加

执行方式:

# 在 SQL Server Management Studio 或命令行执行
sqlcmd -S localhost -d honey_box -i server/HoneyBox/scripts/add_imgurl_banner.sql

2. 后端实体

文件: server/HoneyBox/src/HoneyBox.Model/Entities/Good.cs

  • 添加 ImgUrlBanner 属性string?

3. 后端 DTO

文件: server/HoneyBox/src/HoneyBox.Model/Models/Goods/GoodsModels.cs

  • GoodsInfoDto 添加 imgurl_banner 字段
  • 使用 [JsonPropertyName("imgurl_banner")] 保持 snake_case 格式

4. 后台管理配置

文件: server/HoneyBox/src/HoneyBox.Admin/admin-web/src/views/business/goods/config/typeFieldConfig.ts

  • GoodsTypeFieldConfig 接口添加 showBannerImage 字段
  • 商城类型type=10配置 showBannerImage: true
  • 其他类型保持 showBannerImage: false

5. 后台管理 - 新增对话框

文件: server/HoneyBox/src/HoneyBox.Admin/admin-web/src/views/business/goods/components/GoodsAddDialog.vue

  • 添加 Banner 图上传组件(仅商城类型显示)
  • 添加表单验证规则
  • 添加到提交数据中

6. 后台管理 - 编辑对话框

文件: server/HoneyBox/src/HoneyBox.Admin/admin-web/src/views/business/goods/components/GoodsEditDialog.vue

  • 添加 Banner 图上传组件(仅商城类型显示)
  • 添加表单验证规则
  • 加载和保存 Banner 图数据

7. 小程序前端

文件: honey_box/pages/mall/detail.vue

  • 修改顶部 Banner 图片源:从 imgurl_detail || imgurl 改为 imgurl_banner || imgurl
  • 底部详情图继续使用 imgurl_detail

数据库迁移 SQL

-- 为 goods 表添加 imgurl_banner 字段
-- 用于商城详情页顶部 banner 图

USE honey_box;
GO

-- 添加 imgurl_banner 字段
IF NOT EXISTS (
    SELECT * FROM sys.columns 
    WHERE object_id = OBJECT_ID(N'dbo.goods') 
    AND name = 'imgurl_banner'
)
BEGIN
    ALTER TABLE dbo.goods 
    ADD imgurl_banner NVARCHAR(500) NULL;
    
    PRINT 'Column imgurl_banner added successfully.';
END
ELSE
BEGIN
    PRINT 'Column imgurl_banner already exists.';
END
GO

PRINT 'Migration completed.';
GO

使用说明

后台管理操作

  1. 进入"商品管理" → "盒子管理"
  2. 新增或编辑商城类型type=10的盒子
  3. 会看到三个图片上传字段:
    • 盒子封面图:列表页显示的小图
    • 盒子详情图:详情页底部的详情图
    • 商品详情页Banner图:详情页顶部的大图(新增)
  4. 上传对应图片后保存

前端显示逻辑

  • 详情页顶部:优先显示 imgurl_banner,如果没有则显示 imgurl(封面图)
  • 详情页底部:显示 imgurl_detail(详情图)

注意事项

  1. 只有商城类型type=10的盒子会显示 Banner 图上传字段
  2. Banner 图字段为可选NULL不影响现有数据
  3. 如果不上传 Banner 图,前端会自动使用封面图作为兜底
  4. Mapster 会自动映射新字段,无需额外配置

测试建议

  1. 执行 SQL 脚本添加字段
  2. 重启后端服务(如果需要)
  3. 在后台管理中编辑一个商城类型盒子,上传 Banner 图
  4. 在小程序中查看该商品详情页,确认顶部显示 Banner 图,底部显示详情图