| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- <?php
- namespace App\Module\Mex\AdminControllers\Helper;
- use Dcat\Admin\Grid;
- use UCore\DcatAdmin\GridHelper as UGridHelper;
- /**
- * Mex模块Grid助手类
- *
- * 继承UCore的GridHelper,提供Mex模块特有的Grid列配置方法
- */
- class GridHelper extends UGridHelper
- {
- /**
- * 用户ID列,带链接
- */
- public function columnUserId($field = 'user_id', $label = '用户ID')
- {
- return $this->grid->column($field, $label)->link(function ($value) {
- return admin_url("users/{$value}");
- });
- }
- /**
- * 商品ID列,带链接
- */
- public function columnItemId($field = 'item_id', $label = '商品ID')
- {
- return $this->grid->column($field, $label)->link(function ($value) {
- return admin_url("game-items/{$value}");
- });
- }
- /**
- * 订单ID列,带链接
- */
- public function columnOrderId($field, $label)
- {
- return $this->grid->column($field, $label)->link(function ($value) {
- return $value ? admin_url("mex-orders/{$value}") : '-';
- });
- }
- /**
- * 价格列,格式化显示
- */
- public function columnPrice($field = 'price', $label = '价格', $decimals = 5)
- {
- return $this->grid->column($field, $label)->display(function ($value) use ($decimals) {
- return number_format($value, $decimals);
- });
- }
- /**
- * 金额列,格式化显示
- */
- public function columnAmount($field, $label, $decimals = 5)
- {
- return $this->grid->column($field, $label)->display(function ($value) use ($decimals) {
- return $value ? number_format($value, $decimals) : '-';
- });
- }
- /**
- * 数量列,格式化显示
- */
- public function columnQuantity($field = 'quantity', $label = '数量')
- {
- return $this->grid->column($field, $label)->display(function ($value) {
- return number_format($value);
- });
- }
- /**
- * 平均价格计算列(根据金额和数量字段计算)
- */
- public function columnAveragePrice($amountField, $quantityField, $label)
- {
- return $this->grid->column($label)->display(function () use ($amountField, $quantityField) {
- $amount = $this->{$amountField};
- $quantity = $this->{$quantityField};
- if ($quantity > 0) {
- $avgPrice = bcdiv($amount, $quantity, 5);
- return number_format($avgPrice, 5);
- }
- return '-';
- });
- }
- /**
- * 净值计算列(正值减去负值)
- */
- public function columnNetValue($positiveField, $negativeField, $label, $decimals = 5)
- {
- return $this->grid->column($label)->display(function () use ($positiveField, $negativeField, $decimals) {
- $positive = $this->{$positiveField};
- $negative = $this->{$negativeField};
- if (is_numeric($positive) && is_numeric($negative)) {
- $net = bcsub($positive, $negative, $decimals);
- return number_format($net, $decimals);
- }
- return '-';
- });
- }
- }
|