123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
- namespace App\Services\Client;
- use App\Models\MemberUser;
- use Illuminate\Support\Facades\Log;
- class WalletService
- {
- /**
- * [钱包管理]获取钱包明细
- *
- * @param int $userId 用户ID
- * @param int $perPage 每页记录数
- * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator
- *
- * @throws \Exception
- */
- public function getWalletRecords($userId, $perPage = 10)
- {
- try {
- // 获取当前用户
- $user = MemberUser::find($userId);
- // 检查用户是否存在
- abort_if(! $user, 400, '用户不存在');
- // 检查用户状态
- abort_if($user->state !== 'enable', 400, '用户状态异常');
- // 获取钱包交易记录
- $records = $user->wallet->transRecords()
- ->where('state', 'enable')
- ->orderBy('created_at', 'desc')
- ->paginate($perPage);
- return $records;
- } catch (\Exception $e) {
- // 记录错误日志
- \Log::error('获取钱包明细失败', [
- 'userId' => $userId,
- 'error' => $e->getMessage(),
- 'trace' => $e->getTraceAsString(),
- ]);
- throw $e;
- }
- }
- /**
- * 获取用户钱包
- */
- public function getUserWallet($userId)
- {
- try {
- $user = MemberUser::find($userId);
- abort_if(! $user, 400, '用户不存在');
- abort_if($user->state !== 'enable', 400, '用户状态异常');
- $wallet = $user->wallet;
- if (! $wallet) {
- Log::warning('用户钱包不存在', ['user_id' => $user->id]);
- throw new \Exception('钱包不存在');
- }
- return $wallet;
- } catch (\Exception $e) {
- Log::error('获取用户钱包失败', ['error' => $e->getMessage()]);
- throw $e;
- }
- }
- }
|