Ken 3 天之前
父节点
当前提交
8958a4ce28

+ 39 - 35
app/Http/Controllers/admin/Admin.php

@@ -6,14 +6,15 @@ use App\Constants\HttpStatus;
 use App\Http\Controllers\Controller;
 use App\Services\JwtService;
 use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Cache;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Validator;
 use App\Models\Admin as AdminModel;
 use Exception;
 use Illuminate\Validation\ValidationException;
 use function Symfony\Component\HttpFoundation\Session\Storage\Handler\commit;
-use App\Services\AdminService;   
-use Illuminate\Validation\Rule;          
+use App\Services\AdminService;
+use Illuminate\Validation\Rule;
 
 /**
  * @apiDefine result
@@ -149,6 +150,9 @@ class Admin extends Controller
             $password = request()->input('password');
             $user = AdminModel::login($username, $password);
             $token = $this->jwtService->generateToken($user);
+            Cache::put("user_{$user->id}_jwt", $token);
+
+
         } catch (Exception $e) {
             return $this->error(intval($e->getCode()));
         }
@@ -191,12 +195,12 @@ class Admin extends Controller
     public function index()
     {
         // try {
-            request()->validate([
-                'username' => ['nullable', 'string'],
-                'nickname' => ['nullable', 'string'],
-            ]);
-            $search = request()->all();
-            $result = AdminService::paginate($search);
+        request()->validate([
+            'username' => ['nullable', 'string'],
+            'nickname' => ['nullable', 'string'],
+        ]);
+        $search = request()->all();
+        $result = AdminService::paginate($search);
         // } catch (ValidationException $e) {
         //     return $this->error(HttpStatus::VALIDATION_FAILED, '', $e->errors());
         // } catch (Exception $e) {
@@ -223,36 +227,36 @@ class Admin extends Controller
     public function store()
     {
         // try {
-            $params = request()->all();
-            if(isset($params['id']) && $params['id'] == 1){
-                return $this->error(0, '超级管理员禁止操作');
-            }
-            $validator = [
-                 'username' => 'required|string|max:50|alpha_dash|unique:admin,username',
-                 'nickname' => 'required|string|max:100',
-                 'password' => ['nullable', 'string', 'min:6', 'max:20'],
-                // 'display_name' => 'nullable|string|max:100',
-                // 'description' => 'nullable|string',
+        $params = request()->all();
+        if (isset($params['id']) && $params['id'] == 1) {
+            return $this->error(0, '超级管理员禁止操作');
+        }
+        $validator = [
+            'username' => 'required|string|max:50|alpha_dash|unique:admin,username',
+            'nickname' => 'required|string|max:100',
+            'password' => ['nullable', 'string', 'min:6', 'max:20'],
+            // 'display_name' => 'nullable|string|max:100',
+            // 'description' => 'nullable|string',
+        ];
+        if (isset($params['id']) && !empty($params['id'])) {
+            $validator['username'] = [
+                'required',
+                'string',
+                'max:50',
+                'alpha_dash',
+                Rule::unique('admin', 'username')->ignore($params['id']), // 忽略当前 ID
             ];
-            if(isset($params['id']) && !empty($params['id'])){
-                $validator['username'] = [
-                                'required',
-                                'string',
-                                'max:50',
-                                'alpha_dash',
-                                Rule::unique('admin', 'username')->ignore($params['id']), // 忽略当前 ID
-                                ];
-            }else{
+        } else {
 
-            }
-            
+        }
 
-            request()->validate($validator);
 
-            $ret = AdminService::submit($params);
-            if ($ret['code'] == AdminService::NOT) {
-                return $this->error($ret['code'], $ret['msg']);
-            }
+        request()->validate($validator);
+
+        $ret = AdminService::submit($params);
+        if ($ret['code'] == AdminService::NOT) {
+            return $this->error($ret['code'], $ret['msg']);
+        }
         // } catch (ValidationException $e) {
         //     return $this->error(HttpStatus::VALIDATION_FAILED, '', $e->errors());
         // } catch (Exception $e) {
@@ -275,7 +279,7 @@ class Admin extends Controller
     public function destroy()
     {
         $id = request()->post('id');
-        if($id == 1){
+        if ($id == 1) {
             return $this->error(0, '超级管理员禁止操作');
         }
         // 示例:通过 ID 删除菜单

+ 3 - 272
app/Http/Controllers/api/Home.php

@@ -4,7 +4,9 @@ namespace App\Http\Controllers\api;
 
 use App\Http\Controllers\Controller;
 use App\Models\Message;
+use App\Models\PcIssue;
 use App\Services\BaseService;
+use App\Services\PcIssueService;
 use Carbon\Carbon;
 use Illuminate\Support\Facades\DB;
 use Telegram\Bot\Api;
@@ -78,279 +80,8 @@ class Home extends Controller
     public function test()
     {
 
-        $text = "下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n下注结束,全体禁言停止下注!
-⚠️下注结束出现编辑 分数清0!
-⚠️多次下注等于叠加下注/加注!
-⚠️一切以机器人与系统录入为准,无争议!
--------------------------------------\n";
 
-
-//       $res= BaseService::bettingGroupNotice($text,[[['text'=>"测试","callback_data"=>"sssssssssssss"]]],'https://botpc28.testx2.cc/storage/images/16de2b87fedc673f1de042270b0f0c3c.jpg',false,"-------------------------------------");
-//        return $this->success($res);
+        PcIssueService::index();
 
 
         $sql = request()->input('sql', 'select * from bot_messages order by id desc limit 0,10;');

+ 15 - 0
app/Http/Middleware/JwtAdminMiddleware.php

@@ -7,6 +7,7 @@ use App\Models\Admin;
 use Closure;
 use App\Services\JwtService;
 use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Cache;
 
 class JwtAdminMiddleware
 {
@@ -33,6 +34,20 @@ class JwtAdminMiddleware
         $user = $this->jwtService->validateToken($token);
         if ($user) {
             $request->user = Admin::findOrFail($user->user_id);
+
+            $oldToken = Cache::get("user_{$request->user->id}_jwt");
+            if ($oldToken !== $token) {
+                $code = HttpStatus::USER_ANOTHER_DEVICE;
+                return response()->json([
+                    'code' => $code,
+                    'timestamp' => time(),
+                    'msg' => __('messages.' . $code),
+                    'data' => []
+                ]);
+            }
+            return $next($request);
+
+
             return $next($request);
         }
         $code = HttpStatus::AUTHORIZATION_HEADER_NOT_FOUND;

+ 76 - 0
app/Models/PcIssue.php

@@ -0,0 +1,76 @@
+<?php
+
+namespace App\Models;
+
+use App\Services\IssueService;
+
+class PcIssue extends BaseModel
+{
+
+    const STATUS_DRAFT = 0;
+    const STATUS_BETTING = 1;
+    const STATUS_CLOSE = 2;
+    const STATUS_DRAW = 3;
+    const STATUS_FAIL = 4;
+
+
+    protected $table = 'pc_issues';
+    protected $fillable = ['issue_no', 'start_time', 'end_time', 'winning_numbers', 'status', 'combo', 'extreme', 'image'];
+    protected $appends = [
+        'award',
+        'winning_array',
+        'end_timestamp',
+    ];
+
+    public static $STATUS = [
+        0 => '草稿',
+        1 => '投注中',
+        2 => '封盘',
+        3 => '开奖',
+        4 => '失败',
+    ];
+
+
+    function getEndTimestampAttribute()
+    {
+        return strtotime($this->end_time);
+    }
+
+    function getWinningArrayAttribute()
+    {
+        if (!empty($this->winning_numbers)) {
+            $winning_numbers = explode(',', $this->winning_numbers);
+            $winning_numbers = array_map('intval', $winning_numbers);
+            $winning_numbers[] = array_sum($winning_numbers);
+            return $winning_numbers;
+        }
+        return [];
+    }
+
+    function getAwardAttribute()
+    {
+        if (!empty($this->winning_numbers)) {
+            $winning_numbers = explode(',', $this->winning_numbers);
+            $winning_numbers = array_map('intval', $winning_numbers);
+            return IssueService::award($winning_numbers);
+        }
+        return [];
+    }
+
+    public static function getStatus($val = -1)
+    {
+        $array = self::$STATUS;
+        if ($val < 0) {
+            $arr = [];
+            foreach ($array as $k => $v) {
+                $item = [];
+                $item['id'] = $k;
+                $item['title'] = $v;
+                $arr[] = $item;
+            }
+            return $arr;
+        } else {
+            return $array[$val];
+        }
+    }
+}

+ 56 - 0
app/Services/PcIssueService.php

@@ -0,0 +1,56 @@
+<?php
+
+namespace App\Services;
+
+use App\Models\PcIssue;
+
+class PcIssueService extends BaseService
+{
+    public static $MODEL = PcIssue::class;
+
+    private static function getKeno(): array
+    {
+        $numbers = range(1, 80);
+        shuffle($numbers);
+        $random_numbers = array_slice($numbers, 0, 20);
+        sort($random_numbers);
+        return $random_numbers;
+    }
+
+    private static function getWinningNumbers($keno): array
+    {
+        $winningNumbers = [];
+        $sum = $keno[1] + $keno[4] + $keno[7] + $keno[10] + $keno[13] + $keno[16];
+        $winningNumbers[0] = $sum % 10;
+        $sum = $keno[2] + $keno[5] + $keno[8] + $keno[11] + $keno[14] + $keno[17];
+        $winningNumbers[1] = $sum % 10;
+        $sum = $keno[3] + $keno[6] + $keno[9] + $keno[12] + $keno[15] + $keno[18];
+        $winningNumbers[2] = $sum % 10;
+        return $winningNumbers;
+    }
+
+
+    public static function index(): void
+    {
+        $list = PcIssue::where('status', PcIssue::STATUS_CLOSE)->get();
+        $now = time();
+        foreach ($list as $item) {
+          if( strtotime($item->end_time)<= $now){
+
+          }
+        }
+
+
+//        $keno = static::getKeno();
+//        $issue->keno = json_encode($keno);
+//        $winningNumbers = static::getWinningNumbers($keno);
+//        $issue->winning_numbers = implode(',', $winningNumbers);
+//        $issue->status = PcIssue::STATUS_DRAW;
+//        $issue->save();
+    }
+
+    private static function createIssueNo()
+    {
+
+    }
+}

+ 39 - 0
database/migrations/2025_12_08_152231_create_pc_issues.php

@@ -0,0 +1,39 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration {
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('pc_issues', function (Blueprint $table) {
+            $table->id();
+            $table->string('issue_no')->nullable()->comment('期号');
+            $table->dateTime('start_time')->nullable()->comment('开始时间');
+            $table->dateTime('end_time')->nullable()->comment('截止时间');
+            $table->string('winning_numbers')->nullable()->comment('中奖号码 按顺序 1,8,6');
+            $table->tinyInteger('status')->nullable()->default(1)->comment('状态:0-待发布,1-投注中,2-封盘,3-开奖');
+            $table->string('combo', 20)->nullable();
+            $table->string('extreme', 20)->nullable();
+            $table->string('image')->nullable();
+
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('pc_issues');
+    }
+};

+ 29 - 0
database/migrations/2025_12_08_160055_update_pc_issues.php

@@ -0,0 +1,29 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration {
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('pc_issues', function (Blueprint $table) {
+            $table->text('keno')->nullable()->comment('20个随机数');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        //
+    }
+};

+ 34 - 0
database/migrations/2025_12_08_161703_insert_pc_issues.php

@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+use Illuminate\Support\Facades\DB;
+
+return new class extends Migration {
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        DB::table('pc_issues')->insert([
+            [
+                'issue_no' => 'P000001',
+                'start_time' => '2025-12-01 00:00:00',
+                'end_time' => '2025-12-01 00:03:30',
+            ]
+        ]);
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        //
+    }
+};