grid->column($field, $label)->display(function ($value) { // 如果是枚举对象,获取其值 if (is_object($value) && method_exists($value, 'value')) { $value = $value->value; } $pointTypes = [ 1 => '经验积分', 2 => '成就积分', 3 => '活动积分', 4 => '签到积分', 5 => '推荐积分', ]; $pointLabels = [ 1 => 'primary', 2 => 'success', 3 => 'warning', 4 => 'info', 5 => 'danger', ]; $typeName = $pointTypes[$value] ?? "积分{$value}"; $labelClass = $pointLabels[$value] ?? 'default'; return "{$typeName}"; }); } /** * 添加积分余额列 * * 整数积分显示,带千分位分隔符 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnBalance(string $field = 'balance', string $label = '积分余额'): Column { return $this->grid->column($field, $label)->display(function ($value) { return number_format($value); })->sortable(); } /** * 添加操作积分数量列 * * 整数积分显示,包括正负值的颜色区分 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnAmount(string $field = 'amount', string $label = '操作积分'): Column { return $this->grid->column($field, $label)->display(function ($value) { $formattedValue = number_format(abs($value)); if ($value > 0) { return "+{$formattedValue}"; } elseif ($value < 0) { return "-{$formattedValue}"; } else { return "{$formattedValue}"; } })->sortable(); } /** * 添加操作类型列 * * 复用价值:高 - 统一处理操作类型的显示,使用枚举类型 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnOperateType(string $field = 'operate_type', string $label = '操作类型'): Column { return $this->grid->column($field, $label)->display(function ($value) { // 如果是枚举对象,获取其值 if (is_object($value) && method_exists($value, 'value')) { $value = $value->value; } $operateTypes = LOG_TYPE::getAllTypes(); $operateLabels = [ 0 => 'default', 1 => 'success', 2 => 'primary', 3 => 'info', 4 => 'warning', 5 => 'success', 6 => 'success', 7 => 'danger', 8 => 'warning', 9 => 'info', 10 => 'info', 11 => 'primary', 12 => 'warning', 13 => 'success', 14 => 'success', 15 => 'danger', ]; $typeName = $operateTypes[$value] ?? "操作{$value}"; $labelClass = $operateLabels[$value] ?? 'default'; return "{$typeName}"; }); } /** * 添加时间戳格式化列 * * 复用价值:高 - 统一处理时间戳的格式化显示 * * @param string $field 字段名 * @param string $label 标签名 * @param string $format 日期格式 * @return Column */ public function columnTimestamp(string $field, string $label, string $format = 'Y-m-d H:i:s'): Column { return $this->grid->column($field, $label)->display(function ($value) use ($format) { return $value ? date($format, $value) : ''; })->sortable(); } /** * 添加积分数量格式化 * * 复用价值:高 - 统一处理积分数量的格式化显示 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnPoints(string $field, string $label): Column { return $this->grid->column($field, $label)->display(function ($value) { return number_format($value); })->sortable(); } /** * 添加用户积分组合列 * * 复用价值:高 - 将用户ID和积分类型组合显示,提高信息密度 * * @param string $userIdField 用户ID字段名 * @param string $pointIdField 积分类型字段名 * @param string $label 标签名 * @return Column */ public function columnUserPoint(string $userIdField = 'user_id', string $pointIdField = 'point_id', string $label = '用户/积分'): Column { return $this->grid->column($userIdField, $label)->display(function ($userId) use ($pointIdField) { $pointId = $this->{$pointIdField}; $pointTypes = [ 1 => '经验积分', 2 => '成就积分', 3 => '活动积分', 4 => '签到积分', 5 => '推荐积分', ]; if (is_object($pointId)) { $pointId = $pointId->value; } $pointName = $pointTypes[$pointId] ?? "积分{$pointId}"; return "ID: {$userId}
类型: {$pointName}"; }); } /** * 添加积分流转信息组合列 * * 复用价值:高 - 将积分流转的来源和目标信息组合显示 * * @param string $label 标签名 * @return Column */ public function columnCirculationInfo(string $label = '流转信息'): Column { return $this->grid->column('user_id', $label)->display(function ($userId) { $fromPointId = $this->from_point_id; $toPointId = $this->to_point_id; $pointTypes = [ 1 => '经验积分', 2 => '成就积分', 3 => '活动积分', 4 => '签到积分', 5 => '推荐积分', ]; if (is_object($fromPointId)) { $fromPointId = $fromPointId->value; } if (is_object($toPointId)) { $toPointId = $toPointId->value; } $fromPointName = $pointTypes[$fromPointId] ?? "积分{$fromPointId}"; $toPointName = $pointTypes[$toPointId] ?? "积分{$toPointId}"; return "用户: {$userId}
从: {$fromPointName}
到: {$toPointName}"; }); } /** * 添加积分转账信息组合列 * * 复用价值:高 - 将转账的来源和目标用户信息组合显示 * * @param string $label 标签名 * @return Column */ public function columnTransferInfo(string $label = '转账信息'): Column { return $this->grid->column('from_user_id', $label)->display(function ($fromUserId) { $toUserId = $this->to_user_id; $pointId = $this->point_id; $pointTypes = [ 1 => '经验积分', 2 => '成就积分', 3 => '活动积分', 4 => '签到积分', 5 => '推荐积分', ]; if (is_object($pointId)) { $pointId = $pointId->value; } $pointName = $pointTypes[$pointId] ?? "积分{$pointId}"; return "从: 用户{$fromUserId}
到: 用户{$toUserId}
类型: {$pointName}"; }); } /** * 添加状态列 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnStatus(string $field = 'status', string $label = '状态'): Column { return $this->grid->column($field, $label)->using([ 0 => '待处理', 1 => '已完成', 2 => '已失败', ])->label([ 0 => 'warning', 1 => 'success', 2 => 'danger', ]); } }