grid->column($field, $label)->using(AccountService::getFundsDesc());
}
/**
* 添加资金余额列
*
* 复用价值:高 - 统一处理余额的格式化显示,包括单位转换
*
* @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 / 1000, 3);
})->sortable();
}
/**
* 添加资金状态列
*
* 复用价值:高 - 统一处理资金状态的显示,包括状态名称和标签样式
*
* @param string $field 字段名
* @param string $label 标签名
* @return Column
*/
public function columnStatus(string $field = 'status', string $label = '状态'): Column
{
return $this->grid->column($field, $label)
->using(FUND_STATUS::getNames())
->label([
FUND_STATUS::NORMAL => 'success',
FUND_STATUS::FROZEN => 'warning',
FUND_STATUS::DELETED => 'danger',
]);
}
/**
* 添加操作金额列
*
* 复用价值:高 - 统一处理操作金额的格式化显示,包括正负值的颜色区分
*
* @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($value / 1000, 3);
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)->using(LOG_TYPE::getNames());
}
/**
* 添加时间戳格式化列
*
* 复用价值:高 - 统一处理时间戳的格式化显示
*
* @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 标签名
* @param int $decimals 小数位数
* @return Column
*/
public function columnMoney(string $field, string $label, int $decimals = 3): Column
{
return $this->grid->column($field, $label)->display(function ($value) use ($decimals) {
return number_format($value / 1000, $decimals);
});
}
/**
* 添加资金账户组合列
*
* 复用价值:高 - 将用户ID和资金账户组合显示,提高信息密度
*
* @param string $userIdField 用户ID字段名
* @param string $fundIdField 资金账户字段名
* @param string $label 标签名
* @return Column
*/
public function columnUserFund(string $userIdField = 'user_id', string $fundIdField = 'fund_id', string $label = '用户/账户'): Column
{
return $this->grid->column($userIdField, $label)->display(function ($userId) use ($fundIdField) {
$fundId = $this->{$fundIdField};
$fundsDesc = AccountService::getFundsDesc();
if(is_int($fundId)){
$fundName = $fundsDesc[$fundId] ?? $fundId;
}else{
$fundName = $fundsDesc[$fundId->value] ?? $fundId;
}
return "ID: {$userId}
账户: {$fundName}";
});
}
/**
* 添加转账信息组合列
*
* 复用价值:高 - 将转账的来源和目标信息组合显示,提高信息密度
*
* @param string $label 标签名
* @return Column
*/
public function columnTransferInfo(string $label = '转账信息'): Column
{
return $this->grid->column('user_id', $label)->display(function ($userId) {
$fromFundId = $this->fund_id;
$toUserId = $this->to_user_id;
$toFundId = $this->to_fund_id;
$fundsDesc = AccountService::getFundsDesc();
$fromFundName = $fundsDesc[$fromFundId] ?? $fromFundId;
$toFundName = $fundsDesc[$toFundId] ?? $toFundId;
return "从: 用户{$userId}/{$fromFundName}
到: 用户{$toUserId}/{$toFundName}";
});
}
}