Your Name 8 hónapja
szülő
commit
c95f9fb7d0

+ 37 - 10
app/Module/GameItems/AdminControllers/ItemController.php

@@ -10,6 +10,8 @@ use Dcat\Admin\Grid;
 use Dcat\Admin\Show;
 use UCore\DcatAdmin\AdminController;
 use Spatie\RouteAttributes\Attributes\Resource;
+use Spatie\RouteAttributes\Attributes\Get;
+use Illuminate\Support\Facades\Artisan;
 use UCore\DcatAdmin\FilterHelper;
 use UCore\DcatAdmin\FormHelper;
 use UCore\DcatAdmin\GridHelper;
@@ -18,6 +20,20 @@ use UCore\DcatAdmin\ShowHelper;
 #[Resource('game-items', names: 'dcat.admin.game-items')]
 class ItemController extends AdminController
 {
+    /**
+     * 生成物品JSON数据
+     */
+    #[Get('game-items/generate-json')]
+    public function generateJson()
+    {
+        $success = \App\Module\GameItems\Commands\GenerateItemsJsonCommand::generateJson();
+
+        return response()->json([
+            'status' => $success ? 'success' : 'error',
+            'message' => $success ? 'JSON生成成功' : 'JSON生成失败'
+        ]);
+    }
+
 
     /**
      * 标题
@@ -34,6 +50,19 @@ class ItemController extends AdminController
     protected function grid()
     {
         return Grid::make(new ItemRepository(['category']), function (Grid $grid) {
+            $status = \App\Module\GameItems\AdminControllers\Tools\RefreshCheckTool::checkSyncStatus();
+
+            if ($status['is_synced']) {
+                admin_success('JSON配置表状态', $status['message']);
+            } else {
+                admin_warning('JSON配置表状态', $status['message']);
+            }
+
+            $grid->tools([
+                new \App\Module\GameItems\AdminControllers\Tools\RefreshCheckTool($status['should_display']),
+                new \App\Module\GameItems\AdminControllers\Tools\SyncItemsJsonTool($status['should_display'])
+            ]);
+
             $helper = new GridHelper($grid, $this);
             $grid->column('id', 'ID')->sortable();
             $grid->column('name', '名称');
@@ -65,24 +94,23 @@ class ItemController extends AdminController
                 $helper->equalRadioModelCats('type','类型');
 
                 $filter->equal('is_unique', '单独属性')->radio([
-                                                                   1 => '是',
-                                                                   0 => '否',
-                                                               ]);
-                $filter->equal('tradable', '可交易')->radio([
-                                                                1 => '是',
-                                                                0 => '否',
-                                                            ]);
-                $filter->equal('dismantlable', '可分解')->radio([
                                                                     1 => '是',
                                                                     0 => '否',
                                                                 ]);
+                $filter->equal('tradable', '可交易')->radio([
+                                                                 1 => '是',
+                                                                 0 => '否',
+                                                             ]);
+                $filter->equal('dismantlable', '可分解')->radio([
+                                                                     1 => '是',
+                                                                     0 => '否',
+                                                                 ]);
             });
 
             return $grid;
         });
 
 
-
         }
     /**
      * 详情页
@@ -198,7 +226,6 @@ class ItemController extends AdminController
         });
 
 
-
     }
 
 }

+ 72 - 0
app/Module/GameItems/AdminControllers/Tools/RefreshCheckTool.php

@@ -0,0 +1,72 @@
+<?php
+
+namespace App\Module\GameItems\AdminControllers\Tools;
+
+use Dcat\Admin\Grid\Tools\AbstractTool;
+use Illuminate\Http\Request;
+
+class RefreshCheckTool extends AbstractTool
+{
+    protected $shouldDisplay;
+    protected $style = 'btn btn-warning waves-effect';
+
+    public function __construct(bool $shouldDisplay = true)
+    {
+        $this->shouldDisplay = $shouldDisplay;
+    }
+
+    public function title()
+    {
+        return '刷新检查';
+    }
+
+    public function confirm()
+    {
+        return '确定要刷新检查同步状态吗?';
+    }
+
+    public function handle(Request $request)
+    {
+        return $this->response()->success('刷新成功')->refresh();
+    }
+
+    public function render()
+    {
+        if (!$this->shouldDisplay) {
+            return '';
+        }
+
+        return parent::render();
+    }
+
+    public static function checkSyncStatus(): array
+    {
+        $jsonPath = public_path('json/items.json');
+        $lastUpdated = \Carbon\Carbon::parse(\App\Module\GameItems\Models\Item::max('updated_at'));
+
+        if (!file_exists($jsonPath)) {
+            return [
+                'should_display' => true,
+                'message' => 'JSON文件不存在',
+                'is_synced' => false
+            ];
+        }
+
+        $json = json_decode(file_get_contents($jsonPath), true);
+        $generatedAt = \Carbon\Carbon::parse($json['generated_at']);
+        $isSynced = $generatedAt->gte($lastUpdated);
+
+        return [
+            'should_display' => !$isSynced,
+            'message' => $isSynced
+                ? 'JSON数据已同步,生成于 '.$generatedAt->diffForHumans()
+                : 'JSON数据已过期,最后更新于 '.$lastUpdated->diffForHumans(),
+            'is_synced' => $isSynced
+        ];
+    }
+
+    public static function shouldDisplay(): bool
+    {
+        return self::checkSyncStatus()['should_display'];
+    }
+}

+ 68 - 0
app/Module/GameItems/AdminControllers/Tools/SyncItemsJsonTool.php

@@ -0,0 +1,68 @@
+<?php
+
+namespace App\Module\GameItems\AdminControllers\Tools;
+
+use Dcat\Admin\Grid\Tools\AbstractTool;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Log;
+
+class SyncItemsJsonTool extends AbstractTool
+{
+    protected $shouldDisplay;
+    protected $style = 'btn btn-danger waves-effect';
+
+    public function __construct(bool $shouldDisplay = true)
+    {
+        $this->shouldDisplay = $shouldDisplay;
+    }
+
+    public function title()
+    {
+        return '立即同步';
+    }
+
+    public function confirm()
+    {
+        return '确定要立即同步JSON数据吗?';
+    }
+
+    public function handle(Request $request)
+    {
+        try {
+            $success = \App\Module\GameItems\Commands\GenerateItemsJsonCommand::generateJson();
+
+            if (!$success) {
+                Log::error('Sync items.json failed - see previous logs for details');
+                return $this->response()->error('同步失败:请检查日志获取详细信息');
+            }
+
+            return $this->response()->success('同步成功')->refresh();
+        } catch (\Exception $e) {
+            Log::error('Sync items.json exception: '.$e->getMessage());
+            return $this->response()->error('同步失败:'.$e->getMessage());
+        }
+    }
+
+    public function render()
+    {
+        if (!$this->shouldDisplay) {
+            return '';
+        }
+
+        return parent::render();
+    }
+
+    public static function shouldDisplay(): bool
+    {
+        $jsonPath = public_path('json/items.json');
+        if (!file_exists($jsonPath)) {
+            return true;
+        }
+
+        $json = json_decode(file_get_contents($jsonPath), true);
+        $generatedAt = \Carbon\Carbon::parse($json['generated_at']);
+        $lastUpdated = \Carbon\Carbon::parse(\App\Module\GameItems\Models\Item::max('updated_at'));
+
+        return $generatedAt->lt($lastUpdated);
+    }
+}

+ 71 - 36
app/Module/GameItems/Commands/GenerateItemsJsonCommand.php

@@ -5,6 +5,7 @@ namespace App\Module\GameItems\Commands;
 use Illuminate\Console\Command;
 use App\Module\GameItems\Models\Item;
 use Illuminate\Support\Facades\File;
+use Illuminate\Support\Facades\Log;
 
 class GenerateItemsJsonCommand extends Command
 {
@@ -25,45 +26,79 @@ class GenerateItemsJsonCommand extends Command
     /**
      * 执行命令
      */
-    public function handle()
+    /**
+     * 生成物品JSON数据
+     */
+    public static function generateJson(): bool
     {
-        // 查询Item表中的数据
-        $items = Item::query()
-            ->select([
-                'id',
-                'name',
-                'description',
-                'sell_price',
-                'display_attributes'
-            ])
-            ->get()
-            ->map(function ($item) {
-                return [
-                    'id' => $item->id,
-                    'name' => $item->name,
-                    'description' => $item->description,
-                    'sell_price' => $item->sell_price,
-                    'display_attributes' => $item->display_attributes
-                ];
-            })
-            ->toArray();
+        try {
+            // 查询Item表中的数据
+            $items = Item::query()
+                ->select([
+                    'id',
+                    'name',
+                    'description',
+                    'sell_price',
+                    'display_attributes'
+                ])
+                ->get()
+                ->map(function ($item) {
+                    return [
+                        'id' => $item->id,
+                        'name' => $item->name,
+                        'description' => $item->description,
+                        'sell_price' => $item->sell_price,
+                        'display_attributes' => $item->display_attributes
+                    ];
+                })
+                ->toArray();
 
-        // 确保public/json目录存在
-        $directory = public_path('json');
-        if (!File::exists($directory)) {
-            File::makeDirectory($directory, 0755, true);
-        }
+            // 确保public/json目录存在
+            $directory = public_path('json');
+            if (!File::exists($directory)) {
+                if (!File::makeDirectory($directory, 0755, true)) {
+                    Log::error('Failed to create directory: '.$directory);
+                    return false;
+                }
+            }
+
+            // 检查目录是否可写
+            if (!is_writable($directory)) {
+                Log::error('Directory is not writable: '.$directory);
+                return false;
+            }
+
+            // 准备完整数据,包含生成时间
+            $data = [
+                'generated_at' => now()->toDateTimeString(),
+                'items' => $items
+            ];
 
-        // 准备完整数据,包含生成时间
-        $data = [
-            'generated_at' => now()->toDateTimeString(),
-            'items' => $items
-        ];
+            // 写入JSON文件
+            $json = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+            if (json_last_error() !== JSON_ERROR_NONE) {
+                Log::error('JSON encode error: '.json_last_error_msg());
+                return false;
+            }
 
-        // 写入JSON文件
-        $json = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
-        File::put($directory . '/items.json', $json);
+            if (!File::put($directory . '/items.json', $json)) {
+                Log::error('Failed to write JSON file');
+                return false;
+            }
 
-        $this->info('Successfully generated items.json with timestamp');
+            return true;
+        } catch (\Exception $e) {
+            Log::error('Generate items.json failed: '.$e->getMessage());
+            return false;
+        }
+    }
+
+    public function handle()
+    {
+        if (self::generateJson()) {
+            $this->info('Successfully generated items.json with timestamp');
+        } else {
+            $this->error('Failed to generate items.json');
+        }
     }
-}
+}

+ 3 - 3
public/json/items.json

@@ -1,5 +1,5 @@
 {
-    "generated_at": "2025-04-25 08:38:49",
+    "generated_at": "2025-04-25 09:30:38",
     "items": [
         {
             "id": 1,
@@ -122,8 +122,8 @@
         },
         {
             "id": 18,
-            "name": "辣椒 (复制) (复制)",
-            "description": "辣椒",
+            "name": "测试",
+            "description": "测试",
             "sell_price": 0,
             "display_attributes": []
         }

+ 4 - 1
vendor/autoload.php

@@ -14,7 +14,10 @@ if (PHP_VERSION_ID < 50600) {
             echo $err;
         }
     }
-    throw new RuntimeException($err);
+    trigger_error(
+        $err,
+        E_USER_ERROR
+    );
 }
 
 require_once __DIR__ . '/composer/autoload_real.php';

+ 0 - 2
vendor/composer/LICENSE

@@ -1,4 +1,3 @@
-
 Copyright (c) Nils Adermann, Jordi Boggiano
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -18,4 +17,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
-

+ 78 - 11
vendor/composer/autoload_classmap.php

@@ -19,9 +19,7 @@ return array(
     'App\\Http\\Middleware\\LoginCheck' => $baseDir . '/app/Http/Middleware/LoginCheck.php',
     'App\\Module\\AppGame\\H' => $baseDir . '/app/Module/AppGame/H.php',
     'App\\Module\\AppGame\\Handler\\BaseHandler' => $baseDir . '/app/Module/AppGame/Handler/BaseHandler.php',
-    'App\\Module\\AppGame\\Handler\\DemoHandler' => $baseDir . '/app/Module/AppGame/Handler/DemoHandler.php',
     'App\\Module\\AppGame\\Handler\\Public\\LoginHandler' => $baseDir . '/app/Module/AppGame/Handler/Public/LoginHandler.php',
-    'App\\Module\\AppGame\\Mnemon' => $baseDir . '/app/Module/AppGame/Mnemon.php',
     'App\\Module\\AppGame\\Service\\AddressService' => $baseDir . '/app/Module/AppGame/Service/AddressService.php',
     'App\\Module\\AppGame\\Service\\Blockchain' => $baseDir . '/app/Module/AppGame/Service/Blockchain.php',
     'App\\Module\\AppGame\\Service\\FundService' => $baseDir . '/app/Module/AppGame/Service/FundService.php',
@@ -32,6 +30,7 @@ return array(
     'App\\Module\\AppGame\\Service\\WalletService' => $baseDir . '/app/Module/AppGame/Service/WalletService.php',
     'App\\Module\\AppGame\\SessionApp' => $baseDir . '/app/Module/AppGame/SessionApp.php',
     'App\\Module\\AppGame\\Test\\Blockchain\\BlockchainMinerTest' => $baseDir . '/app/Module/AppGame/Test/Blockchain/BlockchainMinerTest.php',
+    'App\\Module\\AppGame\\Test\\Blockchain\\LoginOkTest' => $baseDir . '/app/Module/AppGame/Test/Blockchain/LoginOkTest.php',
     'App\\Module\\AppGame\\Test\\Blockchain\\LoginTest' => $baseDir . '/app/Module/AppGame/Test/Blockchain/LoginTest.php',
     'App\\Module\\AppGame\\Tools\\Protobuf' => $baseDir . '/app/Module/AppGame/Tools/Protobuf.php',
     'App\\Module\\AppGame\\UserService' => $baseDir . '/app/Module/AppGame/UserService.php',
@@ -147,16 +146,87 @@ return array(
     'App\\Module\\Fund\\Validators\\UserFund1Check' => $baseDir . '/app/Module/Fund/Validators/UserFund1Check.php',
     'App\\Module\\Fund\\Validators\\UserFundCheck' => $baseDir . '/app/Module/Fund/Validators/UserFundCheck.php',
     'App\\Module\\Fund\\Validators\\UserFundCheck1000' => $baseDir . '/app/Module/Fund/Validators/UserFundCheck1000.php',
-    'App\\Module\\GameItems\\AdminControllers\\TestController' => $baseDir . '/app/Module/GameItems/AdminControllers/TestController.php',
+    'App\\Module\\GameItems\\AdminControllers\\Actions\\DuplicateRowAction' => $baseDir . '/app/Module/GameItems/AdminControllers/Actions/DuplicateRowAction.php',
+    'App\\Module\\GameItems\\AdminControllers\\CategoryController' => $baseDir . '/app/Module/GameItems/AdminControllers/CategoryController.php',
+    'App\\Module\\GameItems\\AdminControllers\\ChestContentController' => $baseDir . '/app/Module/GameItems/AdminControllers/ChestContentController.php',
+    'App\\Module\\GameItems\\AdminControllers\\ChestOpenLogController' => $baseDir . '/app/Module/GameItems/AdminControllers/ChestOpenLogController.php',
+    'App\\Module\\GameItems\\AdminControllers\\CraftLogController' => $baseDir . '/app/Module/GameItems/AdminControllers/CraftLogController.php',
+    'App\\Module\\GameItems\\AdminControllers\\DismantleLogController' => $baseDir . '/app/Module/GameItems/AdminControllers/DismantleLogController.php',
+    'App\\Module\\GameItems\\AdminControllers\\DismantleRuleController' => $baseDir . '/app/Module/GameItems/AdminControllers/DismantleRuleController.php',
+    'App\\Module\\GameItems\\AdminControllers\\GroupController' => $baseDir . '/app/Module/GameItems/AdminControllers/GroupController.php',
+    'App\\Module\\GameItems\\AdminControllers\\GroupItemController' => $baseDir . '/app/Module/GameItems/AdminControllers/GroupItemController.php',
+    'App\\Module\\GameItems\\AdminControllers\\InstanceController' => $baseDir . '/app/Module/GameItems/AdminControllers/InstanceController.php',
+    'App\\Module\\GameItems\\AdminControllers\\ItemController' => $baseDir . '/app/Module/GameItems/AdminControllers/ItemController.php',
+    'App\\Module\\GameItems\\AdminControllers\\OutputLimitController' => $baseDir . '/app/Module/GameItems/AdminControllers/OutputLimitController.php',
+    'App\\Module\\GameItems\\AdminControllers\\PityTimeController' => $baseDir . '/app/Module/GameItems/AdminControllers/PityTimeController.php',
+    'App\\Module\\GameItems\\AdminControllers\\RecipeController' => $baseDir . '/app/Module/GameItems/AdminControllers/RecipeController.php',
+    'App\\Module\\GameItems\\AdminControllers\\Tools\\RefreshCheckTool' => $baseDir . '/app/Module/GameItems/AdminControllers/Tools/RefreshCheckTool.php',
+    'App\\Module\\GameItems\\AdminControllers\\Tools\\SyncItemsJsonTool' => $baseDir . '/app/Module/GameItems/AdminControllers/Tools/SyncItemsJsonTool.php',
+    'App\\Module\\GameItems\\AdminControllers\\TransactionLogController' => $baseDir . '/app/Module/GameItems/AdminControllers/TransactionLogController.php',
+    'App\\Module\\GameItems\\AdminControllers\\UserItemController' => $baseDir . '/app/Module/GameItems/AdminControllers/UserItemController.php',
+    'App\\Module\\GameItems\\AdminControllers\\UserOutputCounterController' => $baseDir . '/app/Module/GameItems/AdminControllers/UserOutputCounterController.php',
+    'App\\Module\\GameItems\\AdminControllers\\UserRecipeController' => $baseDir . '/app/Module/GameItems/AdminControllers/UserRecipeController.php',
+    'App\\Module\\GameItems\\Casts\\ChestOpenResultsCast' => $baseDir . '/app/Module/GameItems/Casts/ChestOpenResultsCast.php',
+    'App\\Module\\GameItems\\Casts\\DisplayAttributesCast' => $baseDir . '/app/Module/GameItems/Casts/DisplayAttributesCast.php',
+    'App\\Module\\GameItems\\Casts\\JsonCast' => $baseDir . '/app/Module/GameItems/Casts/JsonCast.php',
+    'App\\Module\\GameItems\\Casts\\NumericAttributesCast' => $baseDir . '/app/Module/GameItems/Casts/NumericAttributesCast.php',
+    'App\\Module\\GameItems\\Casts\\TransactionDetailsCast' => $baseDir . '/app/Module/GameItems/Casts/TransactionDetailsCast.php',
+    'App\\Module\\GameItems\\Commands\\GenerateItemsJsonCommand' => $baseDir . '/app/Module/GameItems/Commands/GenerateItemsJsonCommand.php',
     'App\\Module\\GameItems\\Commands\\TestCommands' => $baseDir . '/app/Module/GameItems/Commands/TestCommands.php',
-    'App\\Module\\GameItems\\Enums\\TEST_TYPE' => $baseDir . '/app/Module/GameItems/Enums/TEST_TYPE.php',
+    'App\\Module\\GameItems\\Enums\\ITEM_BIND_TYPE' => $baseDir . '/app/Module/GameItems/Enums/ITEM_BIND_TYPE.php',
+    'App\\Module\\GameItems\\Enums\\ITEM_TYPE' => $baseDir . '/app/Module/GameItems/Enums/ITEM_TYPE.php',
+    'App\\Module\\GameItems\\Enums\\TRANSACTION_TYPE' => $baseDir . '/app/Module/GameItems/Enums/TRANSACTION_TYPE.php',
+    'App\\Module\\GameItems\\Events\\ChestOpened' => $baseDir . '/app/Module/GameItems/Events/ChestOpened.php',
+    'App\\Module\\GameItems\\Events\\ItemAcquired' => $baseDir . '/app/Module/GameItems/Events/ItemAcquired.php',
+    'App\\Module\\GameItems\\Events\\ItemConsumed' => $baseDir . '/app/Module/GameItems/Events/ItemConsumed.php',
     'App\\Module\\GameItems\\Events\\TestEvent' => $baseDir . '/app/Module/GameItems/Events/TestEvent.php',
     'App\\Module\\GameItems\\Exceptions\\TestException' => $baseDir . '/app/Module/GameItems/Exceptions/TestException.php',
     'App\\Module\\GameItems\\Jobs\\TestJob' => $baseDir . '/app/Module/GameItems/Jobs/TestJob.php',
     'App\\Module\\GameItems\\Listeners\\TestEventListener' => $baseDir . '/app/Module/GameItems/Listeners/TestEventListener.php',
     'App\\Module\\GameItems\\Listeners\\TestListener' => $baseDir . '/app/Module/GameItems/Listeners/TestListener.php',
-    'App\\Module\\GameItems\\Providers\\TestServiceProvider' => $baseDir . '/app/Module/GameItems/Providers/TestServiceProvider.php',
+    'App\\Module\\GameItems\\Models\\Item' => $baseDir . '/app/Module/GameItems/Models/Item.php',
+    'App\\Module\\GameItems\\Models\\ItemCategory' => $baseDir . '/app/Module/GameItems/Models/ItemCategory.php',
+    'App\\Module\\GameItems\\Models\\ItemChestContent' => $baseDir . '/app/Module/GameItems/Models/ItemChestContent.php',
+    'App\\Module\\GameItems\\Models\\ItemChestOpenLog' => $baseDir . '/app/Module/GameItems/Models/ItemChestOpenLog.php',
+    'App\\Module\\GameItems\\Models\\ItemCraftLog' => $baseDir . '/app/Module/GameItems/Models/ItemCraftLog.php',
+    'App\\Module\\GameItems\\Models\\ItemDismantleLog' => $baseDir . '/app/Module/GameItems/Models/ItemDismantleLog.php',
+    'App\\Module\\GameItems\\Models\\ItemDismantleResult' => $baseDir . '/app/Module/GameItems/Models/ItemDismantleResult.php',
+    'App\\Module\\GameItems\\Models\\ItemDismantleRule' => $baseDir . '/app/Module/GameItems/Models/ItemDismantleRule.php',
+    'App\\Module\\GameItems\\Models\\ItemGroup' => $baseDir . '/app/Module/GameItems/Models/ItemGroup.php',
+    'App\\Module\\GameItems\\Models\\ItemGroupItem' => $baseDir . '/app/Module/GameItems/Models/ItemGroupItem.php',
+    'App\\Module\\GameItems\\Models\\ItemInstance' => $baseDir . '/app/Module/GameItems/Models/ItemInstance.php',
+    'App\\Module\\GameItems\\Models\\ItemOutputLimit' => $baseDir . '/app/Module/GameItems/Models/ItemOutputLimit.php',
+    'App\\Module\\GameItems\\Models\\ItemPityTime' => $baseDir . '/app/Module/GameItems/Models/ItemPityTime.php',
+    'App\\Module\\GameItems\\Models\\ItemRecipe' => $baseDir . '/app/Module/GameItems/Models/ItemRecipe.php',
+    'App\\Module\\GameItems\\Models\\ItemRecipeMaterial' => $baseDir . '/app/Module/GameItems/Models/ItemRecipeMaterial.php',
+    'App\\Module\\GameItems\\Models\\ItemTransactionLog' => $baseDir . '/app/Module/GameItems/Models/ItemTransactionLog.php',
+    'App\\Module\\GameItems\\Models\\ItemUser' => $baseDir . '/app/Module/GameItems/Models/ItemUser.php',
+    'App\\Module\\GameItems\\Models\\ItemUserOutputCounter' => $baseDir . '/app/Module/GameItems/Models/ItemUserOutputCounter.php',
+    'App\\Module\\GameItems\\Models\\ItemUserRecipe' => $baseDir . '/app/Module/GameItems/Models/ItemUserRecipe.php',
+    'App\\Module\\GameItems\\Providers\\GameItemsServiceProvider' => $baseDir . '/app/Module/GameItems/Providers/GameItemsServiceProvider.php',
     'App\\Module\\GameItems\\Queues\\TestQueue' => $baseDir . '/app/Module/GameItems/Queues/TestQueue.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemCategoryRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemCategoryRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemChestContentRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemChestContentRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemChestOpenLogRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemChestOpenLogRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemCraftLogRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemCraftLogRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemDismantleLogRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemDismantleLogRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemDismantleResultRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemDismantleResultRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemDismantleRuleRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemDismantleRuleRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemGroupItemRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemGroupItemRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemGroupRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemGroupRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemInstanceRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemInstanceRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemOutputLimitRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemOutputLimitRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemPityTimeRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemPityTimeRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemRecipeMaterialRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemRecipeMaterialRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemRecipeRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemRecipeRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemTransactionLogRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemTransactionLogRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemUserOutputCounterRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemUserOutputCounterRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemUserRecipeRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemUserRecipeRepository.php',
+    'App\\Module\\GameItems\\Repositorys\\ItemUserRepository' => $baseDir . '/app/Module/GameItems/Repositorys/ItemUserRepository.php',
+    'App\\Module\\GameItems\\Services\\ChestService' => $baseDir . '/app/Module/GameItems/Services/ChestService.php',
+    'App\\Module\\GameItems\\Services\\ItemService' => $baseDir . '/app/Module/GameItems/Services/ItemService.php',
+    'App\\Module\\GameItems\\Validators\\IsExpiredValidator' => $baseDir . '/app/Module/GameItems/Validators/IsExpiredValidator.php',
     'App\\Module\\LCache\\Cache' => $baseDir . '/app/Module/LCache/Cache.php',
     'App\\Module\\LCache\\CacheItem' => $baseDir . '/app/Module/LCache/CacheItem.php',
     'App\\Module\\LCache\\ItemInterface' => $baseDir . '/app/Module/LCache/ItemInterface.php',
@@ -305,7 +375,6 @@ return array(
     'App\\Module\\Transaction\\Jobs\\TestJob' => $baseDir . '/app/Module/Transaction/Jobs/TestJob.php',
     'App\\Module\\Transaction\\Listeners\\TestEventListener' => $baseDir . '/app/Module/Transaction/Listeners/TestEventListener.php',
     'App\\Module\\Transaction\\Listeners\\TestListener' => $baseDir . '/app/Module/Transaction/Listeners/TestListener.php',
-    'App\\Module\\Transaction\\Models\\Test' => $baseDir . '/app/Module/Transaction/Models/Test.php',
     'App\\Module\\Transaction\\Models\\Transaction' => $baseDir . '/app/Module/Transaction/Models/Transaction.php',
     'App\\Module\\Transaction\\Models\\TransactionRecharge' => $baseDir . '/app/Module/Transaction/Models/TransactionRecharge.php',
     'App\\Module\\Transaction\\Models\\TransactionTransfer' => $baseDir . '/app/Module/Transaction/Models/TransactionTransfer.php',
@@ -383,6 +452,7 @@ return array(
     'App\\Module\\User\\Enums\\SECRET_PASSWORD_STATUS' => $baseDir . '/app/Module/User/Enums/SECRET_PASSWORD_STATUS.php',
     'App\\Module\\User\\Enums\\STATUS' => $baseDir . '/app/Module/User/Enums/STATUS.php',
     'App\\Module\\User\\Enums\\STATUS2' => $baseDir . '/app/Module/User/Enums/STATUS2.php',
+    'App\\Module\\User\\Logic\\User' => $baseDir . '/app/Module/User/Logic/User.php',
     'App\\Module\\User\\Models\\Events\\UserId' => $baseDir . '/app/Module/User/Models/Events/UserId.php',
     'App\\Module\\User\\Models\\Events\\UserIdInterface' => $baseDir . '/app/Module/User/Models/Events/UserIdInterface.php',
     'App\\Module\\User\\Models\\Events\\UserInfoSaved' => $baseDir . '/app/Module/User/Models/Events/UserInfoSaved.php',
@@ -409,9 +479,9 @@ return array(
     'App\\Module\\User\\Unit\\User' => $baseDir . '/app/Module/User/Unit/User.php',
     'App\\Module\\User\\Unit\\UserOInfo' => $baseDir . '/app/Module/User/Unit/UserOInfo.php',
     'App\\Module\\User\\Unit\\UserPublic' => $baseDir . '/app/Module/User/Unit/UserPublic.php',
-    'App\\Module\\User\\Validation\\Login' => $baseDir . '/app/Module/User/Validation/Login.php',
     'App\\Module\\User\\Validation\\Login4Phone' => $baseDir . '/app/Module/User/Validation/Login4Phone.php',
     'App\\Module\\User\\Validation\\LoginBase' => $baseDir . '/app/Module/User/Validation/LoginBase.php',
+    'App\\Module\\User\\Validation\\LoginValidation' => $baseDir . '/app/Module/User/Validation/LoginValidation.php',
     'App\\Module\\User\\Validation\\PhoneResetSPassword' => $baseDir . '/app/Module/User/Validation/PhoneResetSPassword.php',
     'App\\Module\\User\\Validation\\Register' => $baseDir . '/app/Module/User/Validation/Register.php',
     'App\\Module\\User\\Validation\\SPasswordCheck' => $baseDir . '/app/Module/User/Validation/SPasswordCheck.php',
@@ -421,6 +491,7 @@ return array(
     'App\\Module\\User\\Validator\\CanLogin' => $baseDir . '/app/Module/User/Validator/CanLogin.php',
     'App\\Module\\User\\Validator\\Google2FA' => $baseDir . '/app/Module/User/Validator/Google2FA.php',
     'App\\Module\\User\\Validator\\Google2FAApp' => $baseDir . '/app/Module/User/Validator/Google2FAApp.php',
+    'App\\Module\\User\\Validator\\InviteCode' => $baseDir . '/app/Module/User/Validator/InviteCode.php',
     'App\\Module\\User\\Validator\\IsAuthPassword' => $baseDir . '/app/Module/User/Validator/IsAuthPassword.php',
     'App\\Module\\User\\Validator\\LoginJizhi' => $baseDir . '/app/Module/User/Validator/LoginJizhi.php',
     'App\\Module\\User\\Validator\\Nickname' => $baseDir . '/app/Module/User/Validator/Nickname.php',
@@ -8583,8 +8654,6 @@ return array(
     'Tests\\Unit\\ProtoRequestTest' => $baseDir . '/tests/Unit/ProtoRequestTest.php',
     'Tests\\Unit\\Protobuf2ControllerTest' => $baseDir . '/tests/Unit/Protobuf2ControllerTest.php',
     'Tests\\Unit\\ProtobufControllerTest' => $baseDir . '/tests/Unit/ProtobufControllerTest.php',
-    'Tests\\Unit\\Public\\LoginJsonTest' => $baseDir . '/tests/Unit/Public/LoginJsonTest.php',
-    'Tests\\Unit\\Public\\LoginTest' => $baseDir . '/tests/Unit/Public/LoginTest.php',
     'Tests\\Unit\\Wallet\\AddressListTest' => $baseDir . '/tests/Unit/Wallet/AddressListTest.php',
     'TheSeer\\Tokenizer\\Exception' => $vendorDir . '/theseer/tokenizer/src/Exception.php',
     'TheSeer\\Tokenizer\\NamespaceUri' => $vendorDir . '/theseer/tokenizer/src/NamespaceUri.php',
@@ -8770,7 +8839,6 @@ return array(
     'UCore\\DcatAdmin\\Support\\LazyRenderable' => $baseDir . '/UCore/DcatAdmin/Support/LazyRenderable.php',
     'UCore\\DcatAdmin\\Traits\\AdminId' => $baseDir . '/UCore/DcatAdmin/Traits/AdminId.php',
     'UCore\\DcatAdmin\\Traits\\Controller' => $baseDir . '/UCore/DcatAdmin/Traits/Controller.php',
-    'UCore\\DcatAdmin\\Traits\\MerchantId' => $baseDir . '/UCore/DcatAdmin/Traits/MerchantId.php',
     'UCore\\DcatAdmin\\Traits\\ModalLazyRenderable' => $baseDir . '/UCore/DcatAdmin/Traits/ModalLazyRenderable.php',
     'UCore\\DcatAdmin\\Traits\\Options' => $baseDir . '/UCore/DcatAdmin/Traits/Options.php',
     'UCore\\DcatAdmin\\Traits\\ResController' => $baseDir . '/UCore/DcatAdmin/Traits/ResController.php',
@@ -8840,7 +8908,6 @@ return array(
     'UCore\\Validator\\FloatValidator' => $baseDir . '/UCore/Validator/FloatValidator.php',
     'UCore\\Validator\\ForeachValidation' => $baseDir . '/UCore/Validator/ForeachValidation.php',
     'UCore\\Validator\\ForeachValidator' => $baseDir . '/UCore/Validator/ForeachValidator.php',
-    'UCore\\Validator\\InviteCode' => $baseDir . '/UCore/Validator/InviteCode.php',
     'UCore\\Validator\\IsOnlineAddress' => $baseDir . '/UCore/Validator/IsOnlineAddress.php',
     'UCore\\Validator\\IsUrausAddress' => $baseDir . '/UCore/Validator/IsUrausAddress.php',
     'UCore\\Validator\\IsUserAddress' => $baseDir . '/UCore/Validator/IsUserAddress.php',

+ 1 - 1
vendor/composer/autoload_psr4.php

@@ -59,7 +59,7 @@ return array(
     'Psy\\' => array($vendorDir . '/psy/psysh/src'),
     'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
     'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
-    'Psr\\Http\\Server\\' => array($vendorDir . '/psr/http-server-middleware/src', $vendorDir . '/psr/http-server-handler/src'),
+    'Psr\\Http\\Server\\' => array($vendorDir . '/psr/http-server-handler/src', $vendorDir . '/psr/http-server-middleware/src'),
     'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
     'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
     'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'),

+ 80 - 13
vendor/composer/autoload_static.php

@@ -439,8 +439,8 @@ class ComposerStaticInita2207959542f13e6e79e83f2b0d9a425
         ),
         'Psr\\Http\\Server\\' => 
         array (
-            0 => __DIR__ . '/..' . '/psr/http-server-middleware/src',
-            1 => __DIR__ . '/..' . '/psr/http-server-handler/src',
+            0 => __DIR__ . '/..' . '/psr/http-server-handler/src',
+            1 => __DIR__ . '/..' . '/psr/http-server-middleware/src',
         ),
         'Psr\\Http\\Message\\' => 
         array (
@@ -739,9 +739,7 @@ class ComposerStaticInita2207959542f13e6e79e83f2b0d9a425
         'App\\Http\\Middleware\\LoginCheck' => __DIR__ . '/../..' . '/app/Http/Middleware/LoginCheck.php',
         'App\\Module\\AppGame\\H' => __DIR__ . '/../..' . '/app/Module/AppGame/H.php',
         'App\\Module\\AppGame\\Handler\\BaseHandler' => __DIR__ . '/../..' . '/app/Module/AppGame/Handler/BaseHandler.php',
-        'App\\Module\\AppGame\\Handler\\DemoHandler' => __DIR__ . '/../..' . '/app/Module/AppGame/Handler/DemoHandler.php',
         'App\\Module\\AppGame\\Handler\\Public\\LoginHandler' => __DIR__ . '/../..' . '/app/Module/AppGame/Handler/Public/LoginHandler.php',
-        'App\\Module\\AppGame\\Mnemon' => __DIR__ . '/../..' . '/app/Module/AppGame/Mnemon.php',
         'App\\Module\\AppGame\\Service\\AddressService' => __DIR__ . '/../..' . '/app/Module/AppGame/Service/AddressService.php',
         'App\\Module\\AppGame\\Service\\Blockchain' => __DIR__ . '/../..' . '/app/Module/AppGame/Service/Blockchain.php',
         'App\\Module\\AppGame\\Service\\FundService' => __DIR__ . '/../..' . '/app/Module/AppGame/Service/FundService.php',
@@ -752,6 +750,7 @@ class ComposerStaticInita2207959542f13e6e79e83f2b0d9a425
         'App\\Module\\AppGame\\Service\\WalletService' => __DIR__ . '/../..' . '/app/Module/AppGame/Service/WalletService.php',
         'App\\Module\\AppGame\\SessionApp' => __DIR__ . '/../..' . '/app/Module/AppGame/SessionApp.php',
         'App\\Module\\AppGame\\Test\\Blockchain\\BlockchainMinerTest' => __DIR__ . '/../..' . '/app/Module/AppGame/Test/Blockchain/BlockchainMinerTest.php',
+        'App\\Module\\AppGame\\Test\\Blockchain\\LoginOkTest' => __DIR__ . '/../..' . '/app/Module/AppGame/Test/Blockchain/LoginOkTest.php',
         'App\\Module\\AppGame\\Test\\Blockchain\\LoginTest' => __DIR__ . '/../..' . '/app/Module/AppGame/Test/Blockchain/LoginTest.php',
         'App\\Module\\AppGame\\Tools\\Protobuf' => __DIR__ . '/../..' . '/app/Module/AppGame/Tools/Protobuf.php',
         'App\\Module\\AppGame\\UserService' => __DIR__ . '/../..' . '/app/Module/AppGame/UserService.php',
@@ -867,16 +866,87 @@ class ComposerStaticInita2207959542f13e6e79e83f2b0d9a425
         'App\\Module\\Fund\\Validators\\UserFund1Check' => __DIR__ . '/../..' . '/app/Module/Fund/Validators/UserFund1Check.php',
         'App\\Module\\Fund\\Validators\\UserFundCheck' => __DIR__ . '/../..' . '/app/Module/Fund/Validators/UserFundCheck.php',
         'App\\Module\\Fund\\Validators\\UserFundCheck1000' => __DIR__ . '/../..' . '/app/Module/Fund/Validators/UserFundCheck1000.php',
-        'App\\Module\\GameItems\\AdminControllers\\TestController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/TestController.php',
+        'App\\Module\\GameItems\\AdminControllers\\Actions\\DuplicateRowAction' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/Actions/DuplicateRowAction.php',
+        'App\\Module\\GameItems\\AdminControllers\\CategoryController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/CategoryController.php',
+        'App\\Module\\GameItems\\AdminControllers\\ChestContentController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/ChestContentController.php',
+        'App\\Module\\GameItems\\AdminControllers\\ChestOpenLogController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/ChestOpenLogController.php',
+        'App\\Module\\GameItems\\AdminControllers\\CraftLogController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/CraftLogController.php',
+        'App\\Module\\GameItems\\AdminControllers\\DismantleLogController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/DismantleLogController.php',
+        'App\\Module\\GameItems\\AdminControllers\\DismantleRuleController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/DismantleRuleController.php',
+        'App\\Module\\GameItems\\AdminControllers\\GroupController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/GroupController.php',
+        'App\\Module\\GameItems\\AdminControllers\\GroupItemController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/GroupItemController.php',
+        'App\\Module\\GameItems\\AdminControllers\\InstanceController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/InstanceController.php',
+        'App\\Module\\GameItems\\AdminControllers\\ItemController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/ItemController.php',
+        'App\\Module\\GameItems\\AdminControllers\\OutputLimitController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/OutputLimitController.php',
+        'App\\Module\\GameItems\\AdminControllers\\PityTimeController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/PityTimeController.php',
+        'App\\Module\\GameItems\\AdminControllers\\RecipeController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/RecipeController.php',
+        'App\\Module\\GameItems\\AdminControllers\\Tools\\RefreshCheckTool' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/Tools/RefreshCheckTool.php',
+        'App\\Module\\GameItems\\AdminControllers\\Tools\\SyncItemsJsonTool' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/Tools/SyncItemsJsonTool.php',
+        'App\\Module\\GameItems\\AdminControllers\\TransactionLogController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/TransactionLogController.php',
+        'App\\Module\\GameItems\\AdminControllers\\UserItemController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/UserItemController.php',
+        'App\\Module\\GameItems\\AdminControllers\\UserOutputCounterController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/UserOutputCounterController.php',
+        'App\\Module\\GameItems\\AdminControllers\\UserRecipeController' => __DIR__ . '/../..' . '/app/Module/GameItems/AdminControllers/UserRecipeController.php',
+        'App\\Module\\GameItems\\Casts\\ChestOpenResultsCast' => __DIR__ . '/../..' . '/app/Module/GameItems/Casts/ChestOpenResultsCast.php',
+        'App\\Module\\GameItems\\Casts\\DisplayAttributesCast' => __DIR__ . '/../..' . '/app/Module/GameItems/Casts/DisplayAttributesCast.php',
+        'App\\Module\\GameItems\\Casts\\JsonCast' => __DIR__ . '/../..' . '/app/Module/GameItems/Casts/JsonCast.php',
+        'App\\Module\\GameItems\\Casts\\NumericAttributesCast' => __DIR__ . '/../..' . '/app/Module/GameItems/Casts/NumericAttributesCast.php',
+        'App\\Module\\GameItems\\Casts\\TransactionDetailsCast' => __DIR__ . '/../..' . '/app/Module/GameItems/Casts/TransactionDetailsCast.php',
+        'App\\Module\\GameItems\\Commands\\GenerateItemsJsonCommand' => __DIR__ . '/../..' . '/app/Module/GameItems/Commands/GenerateItemsJsonCommand.php',
         'App\\Module\\GameItems\\Commands\\TestCommands' => __DIR__ . '/../..' . '/app/Module/GameItems/Commands/TestCommands.php',
-        'App\\Module\\GameItems\\Enums\\TEST_TYPE' => __DIR__ . '/../..' . '/app/Module/GameItems/Enums/TEST_TYPE.php',
+        'App\\Module\\GameItems\\Enums\\ITEM_BIND_TYPE' => __DIR__ . '/../..' . '/app/Module/GameItems/Enums/ITEM_BIND_TYPE.php',
+        'App\\Module\\GameItems\\Enums\\ITEM_TYPE' => __DIR__ . '/../..' . '/app/Module/GameItems/Enums/ITEM_TYPE.php',
+        'App\\Module\\GameItems\\Enums\\TRANSACTION_TYPE' => __DIR__ . '/../..' . '/app/Module/GameItems/Enums/TRANSACTION_TYPE.php',
+        'App\\Module\\GameItems\\Events\\ChestOpened' => __DIR__ . '/../..' . '/app/Module/GameItems/Events/ChestOpened.php',
+        'App\\Module\\GameItems\\Events\\ItemAcquired' => __DIR__ . '/../..' . '/app/Module/GameItems/Events/ItemAcquired.php',
+        'App\\Module\\GameItems\\Events\\ItemConsumed' => __DIR__ . '/../..' . '/app/Module/GameItems/Events/ItemConsumed.php',
         'App\\Module\\GameItems\\Events\\TestEvent' => __DIR__ . '/../..' . '/app/Module/GameItems/Events/TestEvent.php',
         'App\\Module\\GameItems\\Exceptions\\TestException' => __DIR__ . '/../..' . '/app/Module/GameItems/Exceptions/TestException.php',
         'App\\Module\\GameItems\\Jobs\\TestJob' => __DIR__ . '/../..' . '/app/Module/GameItems/Jobs/TestJob.php',
         'App\\Module\\GameItems\\Listeners\\TestEventListener' => __DIR__ . '/../..' . '/app/Module/GameItems/Listeners/TestEventListener.php',
         'App\\Module\\GameItems\\Listeners\\TestListener' => __DIR__ . '/../..' . '/app/Module/GameItems/Listeners/TestListener.php',
-        'App\\Module\\GameItems\\Providers\\TestServiceProvider' => __DIR__ . '/../..' . '/app/Module/GameItems/Providers/TestServiceProvider.php',
+        'App\\Module\\GameItems\\Models\\Item' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/Item.php',
+        'App\\Module\\GameItems\\Models\\ItemCategory' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemCategory.php',
+        'App\\Module\\GameItems\\Models\\ItemChestContent' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemChestContent.php',
+        'App\\Module\\GameItems\\Models\\ItemChestOpenLog' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemChestOpenLog.php',
+        'App\\Module\\GameItems\\Models\\ItemCraftLog' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemCraftLog.php',
+        'App\\Module\\GameItems\\Models\\ItemDismantleLog' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemDismantleLog.php',
+        'App\\Module\\GameItems\\Models\\ItemDismantleResult' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemDismantleResult.php',
+        'App\\Module\\GameItems\\Models\\ItemDismantleRule' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemDismantleRule.php',
+        'App\\Module\\GameItems\\Models\\ItemGroup' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemGroup.php',
+        'App\\Module\\GameItems\\Models\\ItemGroupItem' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemGroupItem.php',
+        'App\\Module\\GameItems\\Models\\ItemInstance' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemInstance.php',
+        'App\\Module\\GameItems\\Models\\ItemOutputLimit' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemOutputLimit.php',
+        'App\\Module\\GameItems\\Models\\ItemPityTime' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemPityTime.php',
+        'App\\Module\\GameItems\\Models\\ItemRecipe' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemRecipe.php',
+        'App\\Module\\GameItems\\Models\\ItemRecipeMaterial' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemRecipeMaterial.php',
+        'App\\Module\\GameItems\\Models\\ItemTransactionLog' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemTransactionLog.php',
+        'App\\Module\\GameItems\\Models\\ItemUser' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemUser.php',
+        'App\\Module\\GameItems\\Models\\ItemUserOutputCounter' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemUserOutputCounter.php',
+        'App\\Module\\GameItems\\Models\\ItemUserRecipe' => __DIR__ . '/../..' . '/app/Module/GameItems/Models/ItemUserRecipe.php',
+        'App\\Module\\GameItems\\Providers\\GameItemsServiceProvider' => __DIR__ . '/../..' . '/app/Module/GameItems/Providers/GameItemsServiceProvider.php',
         'App\\Module\\GameItems\\Queues\\TestQueue' => __DIR__ . '/../..' . '/app/Module/GameItems/Queues/TestQueue.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemCategoryRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemCategoryRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemChestContentRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemChestContentRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemChestOpenLogRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemChestOpenLogRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemCraftLogRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemCraftLogRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemDismantleLogRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemDismantleLogRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemDismantleResultRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemDismantleResultRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemDismantleRuleRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemDismantleRuleRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemGroupItemRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemGroupItemRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemGroupRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemGroupRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemInstanceRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemInstanceRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemOutputLimitRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemOutputLimitRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemPityTimeRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemPityTimeRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemRecipeMaterialRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemRecipeMaterialRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemRecipeRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemRecipeRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemTransactionLogRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemTransactionLogRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemUserOutputCounterRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemUserOutputCounterRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemUserRecipeRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemUserRecipeRepository.php',
+        'App\\Module\\GameItems\\Repositorys\\ItemUserRepository' => __DIR__ . '/../..' . '/app/Module/GameItems/Repositorys/ItemUserRepository.php',
+        'App\\Module\\GameItems\\Services\\ChestService' => __DIR__ . '/../..' . '/app/Module/GameItems/Services/ChestService.php',
+        'App\\Module\\GameItems\\Services\\ItemService' => __DIR__ . '/../..' . '/app/Module/GameItems/Services/ItemService.php',
+        'App\\Module\\GameItems\\Validators\\IsExpiredValidator' => __DIR__ . '/../..' . '/app/Module/GameItems/Validators/IsExpiredValidator.php',
         'App\\Module\\LCache\\Cache' => __DIR__ . '/../..' . '/app/Module/LCache/Cache.php',
         'App\\Module\\LCache\\CacheItem' => __DIR__ . '/../..' . '/app/Module/LCache/CacheItem.php',
         'App\\Module\\LCache\\ItemInterface' => __DIR__ . '/../..' . '/app/Module/LCache/ItemInterface.php',
@@ -1025,7 +1095,6 @@ class ComposerStaticInita2207959542f13e6e79e83f2b0d9a425
         'App\\Module\\Transaction\\Jobs\\TestJob' => __DIR__ . '/../..' . '/app/Module/Transaction/Jobs/TestJob.php',
         'App\\Module\\Transaction\\Listeners\\TestEventListener' => __DIR__ . '/../..' . '/app/Module/Transaction/Listeners/TestEventListener.php',
         'App\\Module\\Transaction\\Listeners\\TestListener' => __DIR__ . '/../..' . '/app/Module/Transaction/Listeners/TestListener.php',
-        'App\\Module\\Transaction\\Models\\Test' => __DIR__ . '/../..' . '/app/Module/Transaction/Models/Test.php',
         'App\\Module\\Transaction\\Models\\Transaction' => __DIR__ . '/../..' . '/app/Module/Transaction/Models/Transaction.php',
         'App\\Module\\Transaction\\Models\\TransactionRecharge' => __DIR__ . '/../..' . '/app/Module/Transaction/Models/TransactionRecharge.php',
         'App\\Module\\Transaction\\Models\\TransactionTransfer' => __DIR__ . '/../..' . '/app/Module/Transaction/Models/TransactionTransfer.php',
@@ -1103,6 +1172,7 @@ class ComposerStaticInita2207959542f13e6e79e83f2b0d9a425
         'App\\Module\\User\\Enums\\SECRET_PASSWORD_STATUS' => __DIR__ . '/../..' . '/app/Module/User/Enums/SECRET_PASSWORD_STATUS.php',
         'App\\Module\\User\\Enums\\STATUS' => __DIR__ . '/../..' . '/app/Module/User/Enums/STATUS.php',
         'App\\Module\\User\\Enums\\STATUS2' => __DIR__ . '/../..' . '/app/Module/User/Enums/STATUS2.php',
+        'App\\Module\\User\\Logic\\User' => __DIR__ . '/../..' . '/app/Module/User/Logic/User.php',
         'App\\Module\\User\\Models\\Events\\UserId' => __DIR__ . '/../..' . '/app/Module/User/Models/Events/UserId.php',
         'App\\Module\\User\\Models\\Events\\UserIdInterface' => __DIR__ . '/../..' . '/app/Module/User/Models/Events/UserIdInterface.php',
         'App\\Module\\User\\Models\\Events\\UserInfoSaved' => __DIR__ . '/../..' . '/app/Module/User/Models/Events/UserInfoSaved.php',
@@ -1129,9 +1199,9 @@ class ComposerStaticInita2207959542f13e6e79e83f2b0d9a425
         'App\\Module\\User\\Unit\\User' => __DIR__ . '/../..' . '/app/Module/User/Unit/User.php',
         'App\\Module\\User\\Unit\\UserOInfo' => __DIR__ . '/../..' . '/app/Module/User/Unit/UserOInfo.php',
         'App\\Module\\User\\Unit\\UserPublic' => __DIR__ . '/../..' . '/app/Module/User/Unit/UserPublic.php',
-        'App\\Module\\User\\Validation\\Login' => __DIR__ . '/../..' . '/app/Module/User/Validation/Login.php',
         'App\\Module\\User\\Validation\\Login4Phone' => __DIR__ . '/../..' . '/app/Module/User/Validation/Login4Phone.php',
         'App\\Module\\User\\Validation\\LoginBase' => __DIR__ . '/../..' . '/app/Module/User/Validation/LoginBase.php',
+        'App\\Module\\User\\Validation\\LoginValidation' => __DIR__ . '/../..' . '/app/Module/User/Validation/LoginValidation.php',
         'App\\Module\\User\\Validation\\PhoneResetSPassword' => __DIR__ . '/../..' . '/app/Module/User/Validation/PhoneResetSPassword.php',
         'App\\Module\\User\\Validation\\Register' => __DIR__ . '/../..' . '/app/Module/User/Validation/Register.php',
         'App\\Module\\User\\Validation\\SPasswordCheck' => __DIR__ . '/../..' . '/app/Module/User/Validation/SPasswordCheck.php',
@@ -1141,6 +1211,7 @@ class ComposerStaticInita2207959542f13e6e79e83f2b0d9a425
         'App\\Module\\User\\Validator\\CanLogin' => __DIR__ . '/../..' . '/app/Module/User/Validator/CanLogin.php',
         'App\\Module\\User\\Validator\\Google2FA' => __DIR__ . '/../..' . '/app/Module/User/Validator/Google2FA.php',
         'App\\Module\\User\\Validator\\Google2FAApp' => __DIR__ . '/../..' . '/app/Module/User/Validator/Google2FAApp.php',
+        'App\\Module\\User\\Validator\\InviteCode' => __DIR__ . '/../..' . '/app/Module/User/Validator/InviteCode.php',
         'App\\Module\\User\\Validator\\IsAuthPassword' => __DIR__ . '/../..' . '/app/Module/User/Validator/IsAuthPassword.php',
         'App\\Module\\User\\Validator\\LoginJizhi' => __DIR__ . '/../..' . '/app/Module/User/Validator/LoginJizhi.php',
         'App\\Module\\User\\Validator\\Nickname' => __DIR__ . '/../..' . '/app/Module/User/Validator/Nickname.php',
@@ -9303,8 +9374,6 @@ class ComposerStaticInita2207959542f13e6e79e83f2b0d9a425
         'Tests\\Unit\\ProtoRequestTest' => __DIR__ . '/../..' . '/tests/Unit/ProtoRequestTest.php',
         'Tests\\Unit\\Protobuf2ControllerTest' => __DIR__ . '/../..' . '/tests/Unit/Protobuf2ControllerTest.php',
         'Tests\\Unit\\ProtobufControllerTest' => __DIR__ . '/../..' . '/tests/Unit/ProtobufControllerTest.php',
-        'Tests\\Unit\\Public\\LoginJsonTest' => __DIR__ . '/../..' . '/tests/Unit/Public/LoginJsonTest.php',
-        'Tests\\Unit\\Public\\LoginTest' => __DIR__ . '/../..' . '/tests/Unit/Public/LoginTest.php',
         'Tests\\Unit\\Wallet\\AddressListTest' => __DIR__ . '/../..' . '/tests/Unit/Wallet/AddressListTest.php',
         'TheSeer\\Tokenizer\\Exception' => __DIR__ . '/..' . '/theseer/tokenizer/src/Exception.php',
         'TheSeer\\Tokenizer\\NamespaceUri' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUri.php',
@@ -9490,7 +9559,6 @@ class ComposerStaticInita2207959542f13e6e79e83f2b0d9a425
         'UCore\\DcatAdmin\\Support\\LazyRenderable' => __DIR__ . '/../..' . '/UCore/DcatAdmin/Support/LazyRenderable.php',
         'UCore\\DcatAdmin\\Traits\\AdminId' => __DIR__ . '/../..' . '/UCore/DcatAdmin/Traits/AdminId.php',
         'UCore\\DcatAdmin\\Traits\\Controller' => __DIR__ . '/../..' . '/UCore/DcatAdmin/Traits/Controller.php',
-        'UCore\\DcatAdmin\\Traits\\MerchantId' => __DIR__ . '/../..' . '/UCore/DcatAdmin/Traits/MerchantId.php',
         'UCore\\DcatAdmin\\Traits\\ModalLazyRenderable' => __DIR__ . '/../..' . '/UCore/DcatAdmin/Traits/ModalLazyRenderable.php',
         'UCore\\DcatAdmin\\Traits\\Options' => __DIR__ . '/../..' . '/UCore/DcatAdmin/Traits/Options.php',
         'UCore\\DcatAdmin\\Traits\\ResController' => __DIR__ . '/../..' . '/UCore/DcatAdmin/Traits/ResController.php',
@@ -9560,7 +9628,6 @@ class ComposerStaticInita2207959542f13e6e79e83f2b0d9a425
         'UCore\\Validator\\FloatValidator' => __DIR__ . '/../..' . '/UCore/Validator/FloatValidator.php',
         'UCore\\Validator\\ForeachValidation' => __DIR__ . '/../..' . '/UCore/Validator/ForeachValidation.php',
         'UCore\\Validator\\ForeachValidator' => __DIR__ . '/../..' . '/UCore/Validator/ForeachValidator.php',
-        'UCore\\Validator\\InviteCode' => __DIR__ . '/../..' . '/UCore/Validator/InviteCode.php',
         'UCore\\Validator\\IsOnlineAddress' => __DIR__ . '/../..' . '/UCore/Validator/IsOnlineAddress.php',
         'UCore\\Validator\\IsUrausAddress' => __DIR__ . '/../..' . '/UCore/Validator/IsUrausAddress.php',
         'UCore\\Validator\\IsUserAddress' => __DIR__ . '/../..' . '/UCore/Validator/IsUserAddress.php',