|
@@ -68,29 +68,31 @@ class WalletService
|
|
|
|
|
|
// 构建查询
|
|
|
$query = WalletTransRecord::where('wallet_id', $user->coach->wallet->id)
|
|
|
- // 修复参数名称错误
|
|
|
+ // 按交易类型筛选(1:收入 2:支出)
|
|
|
->when(isset($params['type']), function ($query) use ($params) {
|
|
|
return $query->where('trans_type', $params['type']);
|
|
|
})
|
|
|
- // 优化日期查询
|
|
|
+ // 按开始日期筛选
|
|
|
->when(isset($params['start_date']), function ($query) use ($params) {
|
|
|
return $query->whereDate('created_at', '>=', $params['start_date']);
|
|
|
})
|
|
|
+ // 按结束日期筛选
|
|
|
->when(isset($params['end_date']), function ($query) use ($params) {
|
|
|
return $query->whereDate('created_at', '<=', $params['end_date']);
|
|
|
})
|
|
|
- // 添加金额范围筛选
|
|
|
+ // 按最小金额筛选
|
|
|
->when(isset($params['min_amount']), function ($query) use ($params) {
|
|
|
return $query->where('amount', '>=', $params['min_amount']);
|
|
|
})
|
|
|
+ // 按最大金额筛选
|
|
|
->when(isset($params['max_amount']), function ($query) use ($params) {
|
|
|
return $query->where('amount', '<=', $params['max_amount']);
|
|
|
})
|
|
|
- // 添加交易状态筛选
|
|
|
+ // 按交易状态筛选(1:处理中 2:成功 3:失败)
|
|
|
->when(isset($params['status']), function ($query) use ($params) {
|
|
|
return $query->where('state', $params['status']);
|
|
|
})
|
|
|
- // 添加排序选项
|
|
|
+ // 添加排序条件,默认按创建时间倒序
|
|
|
->when(
|
|
|
isset($params['sort_field']) && isset($params['sort_order']),
|
|
|
function ($query) use ($params) {
|
|
@@ -104,54 +106,65 @@ class WalletService
|
|
|
}
|
|
|
);
|
|
|
|
|
|
- // 分页获取数据(添加字段选择)
|
|
|
+ // 分页获取数据,指定需要查询的字段
|
|
|
$records = $query->paginate(
|
|
|
- $params['per_page'] ?? 10,
|
|
|
+ $params['per_page'] ?? 10, // 每页记录数,默认10条
|
|
|
[
|
|
|
- 'id',
|
|
|
- 'trans_no',
|
|
|
- 'trans_type',
|
|
|
- 'amount',
|
|
|
- 'balance',
|
|
|
- 'owner_type',
|
|
|
- 'owner_id',
|
|
|
- 'remark',
|
|
|
- 'status',
|
|
|
- 'created_at',
|
|
|
+ 'id', // 记录ID
|
|
|
+ 'trans_no', // 交易流水号
|
|
|
+ 'trans_type', // 交易类型(1:收入 2:支出)
|
|
|
+ 'amount', // 交易金额
|
|
|
+ 'before_balance', // 交易前余额
|
|
|
+ 'after_balance', // 交易后余额
|
|
|
+ 'before_recharge_balance', // 交易前充值余额
|
|
|
+ 'after_recharge_balance', // 交易后充值余额
|
|
|
+ 'owner_type', // 业务类型(profit:分账 recharge:充值 withdraw:提现等)
|
|
|
+ 'owner_id', // 业务类型编号
|
|
|
+ 'role', // 角色
|
|
|
+ 'storage_type', // 存储类型
|
|
|
+ 'trans_time', // 交易时间
|
|
|
+ 'remark', // 备注
|
|
|
+ 'state', // 交易状态(1:处理中 2:成功 3:失败)
|
|
|
+ 'created_at' // 创建时间
|
|
|
],
|
|
|
- 'page',
|
|
|
- $params['page'] ?? 1
|
|
|
+ 'page', // 分页参数名
|
|
|
+ $params['page'] ?? 1 // 当前页码,默认第1页
|
|
|
);
|
|
|
|
|
|
- // TODO: 处理格式化数据存在的枚举映射
|
|
|
-
|
|
|
- // 格式化数据
|
|
|
+ // 格式化返回数据
|
|
|
$items = collect($records->items())->map(function ($record) {
|
|
|
return [
|
|
|
- 'id' => $record->id,
|
|
|
- 'trans_no' => $record->trans_no,
|
|
|
- 'trans_type' => $this->formatTransType($record->trans_type),
|
|
|
- 'amount' => number_format($record->amount, 2, '.', ''),
|
|
|
- 'balance' => number_format($record->balance, 2, '.', ''),
|
|
|
- 'owner_type' => $this->formatOwnerType($record->owner_type),
|
|
|
- 'owner_id' => $record->owner_id,
|
|
|
- 'remark' => $record->remark,
|
|
|
- 'state' => $this->formatStatus($record->state),
|
|
|
- 'created_at' => $record->created_at->format('Y-m-d H:i:s'),
|
|
|
+ 'id' => $record->id, // 记录ID
|
|
|
+ 'trans_no' => $record->trans_no, // 交易流水号
|
|
|
+ 'trans_type' => $this->formatTransType($record->trans_type), // 格式化交易类型
|
|
|
+ 'amount' => number_format($record->amount, 2, '.', ''), // 格式化金额,保留2位小数
|
|
|
+ 'before_balance' => number_format($record->before_balance, 2, '.', ''), // 交易前余额
|
|
|
+ 'after_balance' => number_format($record->after_balance, 2, '.', ''), // 交易后余额
|
|
|
+ 'before_recharge_balance' => number_format($record->before_recharge_balance, 2, '.', ''), // 交易前充值余额
|
|
|
+ 'after_recharge_balance' => number_format($record->after_recharge_balance, 2, '.', ''), // 交易后充值余额
|
|
|
+ 'owner_type' => $this->formatOwnerType($record->owner_type), // 格式化业务类型
|
|
|
+ 'owner_id' => $record->owner_id, // 业务类型编号
|
|
|
+ 'role' => $record->role, // 角色
|
|
|
+ 'storage_type' => $record->storage_type, // 存储类型
|
|
|
+ 'trans_time' => $record->trans_time ? $record->trans_time->format('Y-m-d H:i:s') : null, // 格式化交易时间
|
|
|
+ 'remark' => $record->remark, // 备注
|
|
|
+ 'state' => $this->formatStatus($record->state), // 格式化交易状态
|
|
|
+ 'created_at' => $record->created_at->format('Y-m-d H:i:s') // 格式化创建时间
|
|
|
];
|
|
|
});
|
|
|
|
|
|
- // 添加汇总信息
|
|
|
+ // 计算统计数据
|
|
|
$summary = [
|
|
|
- 'total_income' => $query->where('amount', '>', 0)->sum('amount'),
|
|
|
- 'total_expense' => abs($query->where('amount', '<', 0)->sum('amount')),
|
|
|
- 'record_count' => $records->total(),
|
|
|
+ 'total_income' => $query->where('amount', '>', 0)->sum('amount'), // 总收入
|
|
|
+ 'total_expense' => abs($query->where('amount', '<', 0)->sum('amount')), // 总支出(取绝对值)
|
|
|
+ 'record_count' => $records->total(), // 总记录数
|
|
|
];
|
|
|
|
|
|
+ // 返回最终结果
|
|
|
return [
|
|
|
- 'items' => $items,
|
|
|
- 'total' => $records->total(),
|
|
|
- 'summary' => $summary,
|
|
|
+ 'items' => $items, // 记录列表
|
|
|
+ 'total' => $records->total(), // 总记录数
|
|
|
+ 'summary' => $summary, // 统计信息
|
|
|
];
|
|
|
} catch (\Exception $e) {
|
|
|
Log::error('获取钱包流水记录失败', [
|