lip 1 hete
szülő
commit
8f2756ab05

+ 2 - 0
app/Http/Controllers/admin/Balance.php

@@ -20,7 +20,9 @@ class Balance extends Controller
             $params = request()->validate([
                 'page' => ['nullable', 'integer', 'min:1'],
                 'limit' => ['nullable', 'integer', 'min:1'],
+                'type' => ['nullable', 'integer'],
                 'member_id' => ['nullable', 'string', 'min:1'],
+                'related_id' => ['nullable', 'string', 'min:1'],
                 'change_type' => ['nullable', 'string', 'in:' . implode(',', BalanceLogService::$RW)],
                 'start_time' => ['nullable', 'date', 'date_format:Y-m-d', 'required_with:end_time'],
                 'end_time' => ['nullable', 'date', 'date_format:Y-m-d', 'required_with:start_time'],

+ 41 - 4
app/Http/Controllers/admin/User.php

@@ -4,22 +4,19 @@ namespace App\Http\Controllers\admin;
 
 use App\Constants\HttpStatus;
 use App\Http\Controllers\Controller;
-use App\Services\RoomService;
 use App\Services\SecretService;
 use App\Services\TopUpService;
 use Illuminate\Support\Facades\App;
-use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\DB;
-use Illuminate\Support\Facades\Validator;
 use App\Services\UserService;
 use Exception;
-use Illuminate\Http\Request;
 use Illuminate\Validation\ValidationException;
 use App\Services\AddressService;
 
 use Illuminate\Http\JsonResponse;
 use App\Models\User as UserModel;
 use App\Models\UserSession;
+use App\Models\UserLogin;
 
 class User extends Controller
 {
@@ -157,4 +154,44 @@ class User extends Controller
         return $this->success($result);
     }
 
+    /**
+     * 用户登录日志
+     */
+    public function loginLog()
+    {
+        try {
+            $params = request()->validate([
+                'page' => ['nullable', 'integer', 'min:1'],
+                'limit' => ['nullable', 'integer', 'min:1'],
+                'user_id' => ['nullable'],
+                'start_time' => ['nullable', 'date', 'date_format:Y-m-d', 'required_with:end_time'],
+                'end_time' => ['nullable', 'date', 'date_format:Y-m-d', 'required_with:start_time'],
+            ]);
+            $page = request()->input('page', 1);
+            $limit = request()->input('limit', 15);
+
+            $query = new UserLogin();
+            if (!empty($params['user_id'])) {
+                $query = $query->where('user_id', $params['user_id']);
+            }
+            if (!empty($params['start_time'])) {
+                $startTime = $params['start_time'] . " 00:00:00";
+                $query = $query->where('created_at', '>=', $startTime);
+            }
+            if (!empty($params['end_time'])) {
+                $endTime = $params['end_time'] . " 23:59:59";
+                $query = $query->where('updated_at', '<=', $endTime);
+            }
+            $count = $query->count();
+            $list = $query
+                ->forPage($page, $limit)
+                ->orderByDesc('created_at')
+                ->get();
+        } catch (Exception $e) {
+            return $this->error(HttpStatus::CUSTOM_ERROR,$e->getMessage());
+        }
+        return $this->success(['total' => $count, 'data' => $list]);
+
+    }
+
 }

+ 110 - 0
app/Http/Controllers/admin/YueBao.php

@@ -0,0 +1,110 @@
+<?php
+
+namespace App\Http\Controllers\admin;
+
+use App\Http\Controllers\Controller;
+use App\Models\YuebaoItem;
+use App\Models\YuebaoLog;
+use Exception;
+use App\Constants\HttpStatus;
+
+class YueBao extends Controller
+{
+
+    /**
+     * 余额宝持仓列表
+     */
+    public function item()
+    {
+        try {
+            $params = request()->validate([
+                'page' => ['nullable', 'integer', 'min:1'],
+                'limit' => ['nullable', 'integer', 'min:1'],
+                'id' => ['nullable', 'integer', 'min:1'],
+                'user_id' => ['nullable'],
+                'start_time' => ['nullable', 'date', 'date_format:Y-m-d', 'required_with:end_time'],
+                'end_time' => ['nullable', 'date', 'date_format:Y-m-d', 'required_with:start_time'],
+            ]);
+            $page = request()->input('page', 1);
+            $limit = request()->input('limit', 15);
+
+            $query = new YuebaoItem();
+            if (!empty($params['id'])) {
+                $query = $query->where('id', $params['id']);
+            }
+            if (!empty($params['user_id'])) {
+                $query = $query->where('user_id', $params['user_id']);
+            }
+            if (!empty($params['start_time'])) {
+                $startTime = strtotime($params['start_time'] . " 00:00:00");
+                $query = $query->where('create_time', '>=', $startTime);
+            }
+            if (!empty($params['end_time'])) {
+                $endTime = strtotime($params['end_time'] . " 23:59:59");
+                $query = $query->where('create_time', '<=', $endTime);
+            }
+            $count = $query->count();
+            $list = $query
+                ->forPage($page, $limit)
+                ->orderByDesc('create_time')
+                ->get();
+        } catch (Exception $e) {
+            return $this->error(HttpStatus::CUSTOM_ERROR,$e->getMessage());
+        }
+        return $this->success(['total' => $count, 'data' => $list]);
+
+    }
+
+    /**
+     * 余额宝日志列表
+     */
+    public function log()
+    {
+        try {
+            $params = request()->validate([
+                'page' => ['nullable', 'integer', 'min:1'],
+                'limit' => ['nullable', 'integer', 'min:1'],
+                'id' => ['nullable', 'integer', 'min:1'],
+                'item_id' => ['nullable', 'integer', 'min:1'],
+                'user_id' => ['nullable'],
+                'type' => ['nullable', 'integer'],
+                'start_time' => ['nullable', 'date', 'date_format:Y-m-d', 'required_with:end_time'],
+                'end_time' => ['nullable', 'date', 'date_format:Y-m-d', 'required_with:start_time'],
+            ]);
+            $page = request()->input('page', 1);
+            $limit = request()->input('limit', 15);
+
+            $query = new YuebaoLog();
+            if (!empty($params['id'])) {
+                $query = $query->where('id', $params['id']);
+            }
+            if (!empty($params['item_id'])) {
+                $query = $query->where('item_id', $params['item_id']);
+            }
+            if (!empty($params['user_id'])) {
+                $query = $query->where('user_id', $params['user_id']);
+            }
+            if (!empty($params['type'])) {
+                $query = $query->where('type', $params['type']);
+            }
+            if (!empty($params['start_time'])) {
+                $startTime = strtotime($params['start_time'] . " 00:00:00");
+                $query = $query->where('create_time', '>=', $startTime);
+            }
+            if (!empty($params['end_time'])) {
+                $endTime = strtotime($params['end_time'] . " 23:59:59");
+                $query = $query->where('create_time', '<=', $endTime);
+            }
+            $count = $query->count();
+            $list = $query
+                ->forPage($page, $limit)
+                ->orderByDesc('create_time')
+                ->get();
+        } catch (Exception $e) {
+            return $this->error(HttpStatus::CUSTOM_ERROR,$e->getMessage());
+        }
+        return $this->success(['total' => $count, 'data' => $list]);
+
+    }
+
+}

+ 14 - 0
app/Models/YuebaoItem.php

@@ -0,0 +1,14 @@
+<?php
+namespace App\Models;
+
+class YuebaoItem extends BaseModel
+{
+    protected $table = 'yuebao_item';
+    protected $fillable = ['user_id','principal','surplus_principal'];
+    protected $hidden = [];
+    
+    public $timestamps = true;
+    protected $dateFormat = 'U'; // U 代表 UNIX 时间戳(int)
+
+ 
+}

+ 14 - 0
app/Models/YuebaoLog.php

@@ -0,0 +1,14 @@
+<?php
+namespace App\Models;
+
+class YuebaoLog extends BaseModel
+{
+    protected $table = 'yuebao_log';
+    protected $fillable = ['user_id','item_id','amount','type'];
+    protected $hidden = [];
+    
+    public $timestamps = true;
+    protected $dateFormat = 'U'; // U 代表 UNIX 时间戳(int)
+
+ 
+}

+ 1 - 1
app/Services/BalanceLogService.php

@@ -221,7 +221,7 @@ class BalanceLogService extends BaseService
      */
     public static function getTotalRecharge($memberId): float
     {
-        return static::$MODEL::where('member_id', $memberId)->where('type',1)->whereIn('change_type', ['人工充值', '三方充值'])->sum('amount');
+        return static::$MODEL::where('member_id', $memberId)->where('type',1)->whereIn('change_type', ['充值','人工充值', '三方充值'])->sum('amount');
     }
 
     /**

+ 7 - 0
routes/admin.php

@@ -35,6 +35,7 @@ use App\Http\Controllers\admin\LhcNumber;
 use App\Http\Controllers\admin\LhcLottery;
 use App\Http\Controllers\admin\Sport;
 use App\Http\Controllers\admin\Level;
+use App\Http\Controllers\admin\YueBao;
 
 Route::post('/login', [Admin::class, 'login']);
 Route::get('/test', [Wallet::class, 'test']);
@@ -201,6 +202,7 @@ Route::middleware(['admin.jwt'])->group(function () {
             Route::post('/merge', [User::class, 'merge']);
             Route::post('/setNote', [User::class, 'setNote']);
             Route::post('/banned', [User::class, 'banned']);
+            Route::get('/loginLog', [User::class, 'loginLog']);
 
 
         });
@@ -263,6 +265,11 @@ Route::middleware(['admin.jwt'])->group(function () {
             Route::post('/update', [Level::class, 'update']);
             Route::get('/delete', [Level::class, 'delete']);
         });
+
+        Route::prefix('/yuebao')->group(function () {
+            Route::get('/item', [YueBao::class, 'item']);
+            Route::get('/log', [YueBao::class, 'log']);
+        });
     });