Ver Fonte

农贸市场订单列表添加商品名称显示

- 为MexOrder模型添加与Item的关联关系
- 修改MexOrderRepository支持预加载Item关联
- 在订单列表、详情页面和表单页面添加商品名称显示
- 当商品不存在时显示'未知商品'作为备用文本
AI Assistant há 6 meses atrás
pai
commit
5ce17ee0

+ 11 - 2
app/Module/Mex/AdminControllers/MexOrderController.php

@@ -43,6 +43,9 @@ class MexOrderController extends AdminController
             $grid->column('id', 'ID')->sortable();
             $helper->columnUserId();
             $helper->columnItemId();
+            $grid->column('item.name', '商品名称')->display(function ($value) {
+                return $value ?: '未知商品';
+            });
             $grid->column('order_type', '订单类型')->display(function ($value) {
                 return $value instanceof OrderType ? $value->getDescription() : OrderType::from($value)->getDescription();
             })->label([
@@ -96,10 +99,13 @@ class MexOrderController extends AdminController
      */
     protected function detail($id)
     {
-        return Show::make($id, new MexOrderRepository(), function (Show $show) {
+        return Show::make($id, new MexOrderRepository(['item']), function (Show $show) {
             $show->field('id', 'ID');
             $show->field('user_id', '用户ID');
             $show->field('item_id', '商品ID');
+            $show->field('item.name', '商品名称')->as(function ($value) {
+                return $value ?: '未知商品';
+            });
             $show->field('order_type', '订单类型')->as(function ($value) {
                 return $value instanceof OrderType ? $value->getDescription() : OrderType::from($value)->getDescription();
             });
@@ -130,12 +136,15 @@ class MexOrderController extends AdminController
      */
     protected function form()
     {
-        return Form::make(new MexOrderRepository(), function (Form $form) {
+        return Form::make(new MexOrderRepository(['item']), function (Form $form) {
             $helper = new FormHelper($form, $this);
 
             $helper->display('id', 'ID');
             $helper->display('user_id', '用户ID');
             $helper->display('item_id', '商品ID');
+            $form->display('item.name', '商品名称')->with(function ($value) {
+                return $value ?: '未知商品';
+            });
             $form->display('order_type', '订单类型')->with(function ($value) {
                 return OrderType::from($value)->getDescription();
             });

+ 11 - 1
app/Module/Mex/Models/MexOrder.php

@@ -5,6 +5,8 @@ namespace App\Module\Mex\Models;
 use App\Module\Mex\Enums\OrderStatus;
 use App\Module\Mex\Enums\OrderType;
 use App\Module\Fund\Enums\FUND_CURRENCY_TYPE;
+use App\Module\GameItems\Models\Item;
+use Illuminate\Database\Eloquent\Relations\BelongsTo;
 use UCore\ModelCore;
 
 /**
@@ -66,5 +68,13 @@ class MexOrder extends ModelCore
         'completed_at' => 'datetime',
     ];
 
-
+    /**
+     * 获取关联的商品信息
+     *
+     * @return BelongsTo
+     */
+    public function item(): BelongsTo
+    {
+        return $this->belongsTo(Item::class, 'item_id');
+    }
 }

+ 15 - 1
app/Module/Mex/Repositories/MexOrderRepository.php

@@ -7,7 +7,7 @@ use UCore\DcatAdmin\Repository\EloquentRepository;
 
 /**
  * 农贸市场订单仓库
- * 
+ *
  * 提供农贸市场订单数据的访问和操作功能。
  * 该类是订单模块与后台管理系统的桥梁,用于处理订单数据的CRUD操作。
  */
@@ -19,4 +19,18 @@ class MexOrderRepository extends EloquentRepository
      * @var string
      */
     protected $eloquentClass = MexOrder::class;
+
+    /**
+     * 构造函数,支持预加载关联关系
+     *
+     * @param array $with 预加载的关联关系
+     */
+    public function __construct(array $with = [])
+    {
+        // 默认预加载商品信息
+        $defaultWith = ['item'];
+        $relations = array_merge($defaultWith, $with);
+
+        parent::__construct($relations);
+    }
 }