03日1148-商店商品移除图片字段增加展示属性字段.md 3.8 KB

商店商品:移除图片字段,增加展示属性字段

任务概述

移除商店商品表中的图片字段,增加展示属性字段,并修改相关的后台管理、Handler等代码。

执行时间

2025年06月03日 11:48

修改内容

1. 创建展示属性Cast类

  • 文件: app/Module/Shop/Casts/ShopDisplayAttributesCast.php
  • 说明: 为商店商品专用的展示属性类型转换器
  • 包含属性:
    • icon: 商品图标路径
    • color: 商品颜色
    • tag: 商品标签
    • background: 背景图片
    • badge: 特殊标记
    • quality: 品质等级(1-10)
    • is_hot: 是否热门商品
    • is_new: 是否新品
    • is_limited: 是否限时商品

2. 修改ShopItem模型

  • 文件: app/Module/Shop/Models/ShopItem.php
  • 变更:
    • 移除image字段的注释和fillable配置
    • 添加display_attributes字段的注释和fillable配置
    • 添加Cast配置:'display_attributes' => \App\Module\Shop\Casts\ShopDisplayAttributesCast::class

3. 修改后台控制器

  • 文件: app/Module/Shop/AdminControllers/ShopItemController.php
  • 变更:
    • Grid列表:移除图片列,添加商品图标列(从display_attributes.icon获取)
    • Show详情:移除图片字段,添加商品图标和展示属性JSON显示
    • Form表单:移除图片上传字段,添加展示属性配置表单项

4. 修改DTO类

  • 文件: app/Module/Shop/Dtos/ShopItemDto.php
  • 变更:
    • image属性替换为displayAttributes属性
    • 修改fromModel和fromModelOptimized方法中的赋值逻辑

5. 数据库结构修改

  • 文件: app/Module/Shop/Databases/GenerateSql/shop_items.sql
  • 变更: 将image字段替换为display_attributes字段
  • 新增文件: app/Module/Shop/Databases/GenerateSql/modify_shop_items_remove_image_add_display_attributes.sql
  • SQL内容:

    -- 添加展示属性字段
    ALTER TABLE `kku_shop_items` 
    ADD COLUMN `display_attributes` json DEFAULT NULL COMMENT '展示属性,以JSON格式存储键值对,用于界面展示和描述的属性' AFTER `sort_order`;
      
    -- 删除图片字段
    ALTER TABLE `kku_shop_items` 
    DROP COLUMN `image`;
    

6. 更新文档

  • 文件: app/Module/Shop/README.md
  • 变更:
    • 更新shop_items表字段说明
    • 添加display_attributes字段详细说明
    • 列出所有展示属性的含义和类型

影响范围

已修改的文件

  1. app/Module/Shop/Casts/ShopDisplayAttributesCast.php (新增)
  2. app/Module/Shop/Models/ShopItem.php
  3. app/Module/Shop/AdminControllers/ShopItemController.php
  4. app/Module/Shop/Dtos/ShopItemDto.php
  5. app/Module/Shop/Databases/GenerateSql/shop_items.sql
  6. app/Module/Shop/Databases/GenerateSql/modify_shop_items_remove_image_add_display_attributes.sql (新增)
  7. app/Module/Shop/README.md

未受影响的文件

  • Handler类:经检查,BuyHandler等Handler类没有直接使用image字段
  • Validation类:验证类没有直接使用image字段
  • Service和Logic类:业务逻辑类没有直接使用image字段

注意事项

  1. 数据迁移: 执行SQL脚本前请备份现有的image字段数据
  2. 前端适配: 前端需要适配新的展示属性结构,从displayAttributes中获取图标等信息
  3. 兼容性: 旧的API响应结构已更改,需要确保前端能正确处理新的数据结构

测试建议

  1. 后台管理测试:

    • 测试商品列表页面的图标显示
    • 测试商品详情页面的展示属性显示
    • 测试商品编辑表单的展示属性配置
  2. API测试:

    • 测试商品查询接口返回的展示属性数据
    • 测试购买流程是否正常工作
  3. 数据库测试:

    • 在测试环境执行SQL脚本
    • 验证字段类型和约束是否正确

完成状态

✅ 任务已完成并提交代码 ✅ 代码已推送到远程仓库