瀏覽代碼

php-tools

rkljw 9 月之前
父節點
當前提交
0044a4c738
共有 43 個文件被更改,包括 1279 次插入135 次删除
  1. 2 1
      .gitignore
  2. 1 1
      app/Controller/AbstractController.php
  3. 19 7
      app/Controller/AuthorityController.php
  4. 6 4
      app/Controller/LoginController.php
  5. 32 1
      app/Controller/PublicController.php
  6. 92 20
      app/Controller/UserController.php
  7. 143 0
      app/Controller/WebsiteController.php
  8. 9 0
      app/JsonRpc/PublicRpcService.php
  9. 4 0
      app/JsonRpc/PublicRpcServiceInterface.php
  10. 8 0
      app/JsonRpc/UserService.php
  11. 4 1
      app/JsonRpc/UserServiceInterface.php
  12. 76 0
      app/JsonRpc/WebsiteService.php
  13. 51 0
      app/JsonRpc/WebsiteServiceInterface.php
  14. 27 7
      app/Middleware/Auth/FooMiddleware.php
  15. 87 0
      app/Tools/CommonService.php
  16. 2 0
      app/Tools/PublicData.php
  17. 2 1
      composer.json
  18. 31 1
      composer.lock
  19. 4 4
      config/autoload/jwt.php
  20. 1 0
      config/autoload/middlewares.php
  21. 2 0
      config/autoload/server.php
  22. 1 0
      config/routes.php
  23. 0 0
      runtime/container/classes.cache
  24. 1 1
      runtime/container/proxy/App_Controller_AbstractController.proxy.php
  25. 28 5
      runtime/container/proxy/App_Controller_AuthorityController.proxy.php
  26. 6 4
      runtime/container/proxy/App_Controller_LoginController.proxy.php
  27. 26 1
      runtime/container/proxy/App_Controller_PublicController.proxy.php
  28. 0 43
      runtime/container/proxy/App_Controller_PublicRpcController.proxy.php
  29. 73 24
      runtime/container/proxy/App_Controller_UserController.proxy.php
  30. 95 0
      runtime/container/proxy/App_Controller_WebsiteController.proxy.php
  31. 8 1
      runtime/container/proxy/App_JsonRpc_PublicRpcServiceInterface.rpc-client.proxy.php
  32. 8 1
      runtime/container/proxy/App_JsonRpc_UserServiceInterface.rpc-client.proxy.php
  33. 69 1
      runtime/container/proxy/App_JsonRpc_WebsiteServiceInterface.rpc-client.proxy.php
  34. 83 0
      runtime/container/proxy/App_Tools_CommonService.proxy.php
  35. 0 0
      runtime/container/scan.cache
  36. 1 1
      runtime/hyperf.pid
  37. 201 0
      runtime/logs/hyperf.log
  38. 11 2
      vendor/composer/autoload_classmap.php
  39. 1 0
      vendor/composer/autoload_psr4.php
  40. 19 2
      vendor/composer/autoload_static.php
  41. 35 1
      vendor/composer/installed.json
  42. 9 0
      vendor/composer/installed.php
  43. 1 0
      vendor/zx/php-tools

+ 2 - 1
.gitignore

@@ -6,7 +6,8 @@ bin-release/
 
 # Other files and folders
 .settings/
-
+.public/
+./vendor/*
 # Executables
 *.swf
 *.air

+ 1 - 1
app/Controller/AbstractController.php

@@ -44,7 +44,7 @@ abstract class AbstractController
         $this->logger = $loggerFactory->get('admin_consumer:', 'default');
 
          $headers = $this->request->getHeaders();
-        var_dump( $headers['token'][0]!='null');
+//        var_dump( $headers['token'][0]!='null');
         if($headers &&  isset($headers['token']) && $headers['token'][0]!='null' && isset($headers['token'][0])){
             $userInfo = $this->jwt->getClaimsByToken($headers['token'][0]);
             $this->UserId = $userInfo['uid'];

+ 19 - 7
app/Controller/AuthorityController.php

@@ -42,6 +42,11 @@ class AuthorityController extends AbstractController
             'pageSize'=>$pageSize
         ];
         $result = $this->authorityServiceClient->getMenuList($data);
+        if($result['data']){
+            foreach ($result['data']['rows'] as $k=>$v) {
+                $result['data']['rows'][$k]['pid_arr'] = $v['pid_arr']?json_decode($v['pid_arr']):[0];
+            }
+        }
         return $result?Result::success($result['data']):Result::error($result['message']);
     }
 
@@ -77,13 +82,13 @@ class AuthorityController extends AbstractController
             [
 
                 'label' => 'required',
-                'url' => 'required',
+//                'url' => 'required',
 
             ],
             [
 
                 'label.required' => '菜单名称不能为空',
-                'url.required' => '路由地址不能为空',
+//                'url.required' => '路由地址不能为空',
             ]
         );
         if ($validator->fails()){
@@ -112,31 +117,38 @@ class AuthorityController extends AbstractController
             $requireData,
             [
                 'id' => 'required',
-                'pid' => 'required',
+//                'pid' => 'required',
                 'label' => 'required',
-                'url' => 'required',
+//                'url' => 'required',
 
             ],
             [
                 'id.required' => 'id不能为空',
-                'pid.required' => '父级id不能为空',
+//                'pid.required' => '父级id不能为空',
                 'label.required' => '菜单名称不能为空',
-                'url.required' => '路由地址不能为空',
+//                'url.required' => '路由地址不能为空',
             ]
         );
         if ($validator->fails()){
             $errorMessage = $validator->errors()->first();
             return Result::error($errorMessage);
         }
+        unset($requireData['pid_arr']);
+        var_dump("提交数据前:",$requireData);
         if(isset($requireData['pid']) && is_array($requireData['pid'])){
             $requireData['pid_arr'] = json_encode($requireData['pid']);
             $requireData['pid'] = end($requireData['pid']);
+        }else if(isset($requireData['pid']) && $requireData['pid']>0){
+//            array_push($requireData['pid'],$requireData['pid']);
+            $requireData['pid'] = [$requireData['pid']];
+            $requireData['pid_arr'] = json_encode($requireData['pid']);
+            $requireData['pid'] = end($requireData['pid']);
         }else{
             $id = [0];
             $requireData['pid_arr'] = json_encode($id);
             $requireData['pid'] = end($id);
         }
-
+        var_dump("提交数据后",$requireData);
         $result = $this->authorityServiceClient->updateMenu($requireData);
         return $result?Result::success($result['data']):Result::error($result['message']);
     }

+ 6 - 4
app/Controller/LoginController.php

@@ -78,10 +78,12 @@ class LoginController extends AbstractController
     # http头部必须携带token才能访问的路由
     public function getData(Jwt $jwt)
     {
-        var_dump($this->UserId);
-        $a= 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJwaHBlcjY2Ni9qd3QiLCJ1aWQiOjEsInVzZXJuYW1lIjoieHgiLCJqd3Rfc2NlbmUiOiJkZWZhdWx0IiwianRpIjoiZGVmYXVsdF82NjYyYTg5NTQ5MTk2MS40NTgzOTUyNCIsImlhdCI6MTcxNzc0MTcxNywibmJmIjoxNzE3NzQxNzE3LCJleHAiOjE3MTc3NDg5MTd9.cTqoaSn5P3mW8__O2O2rv2dxiGtfSZk-E8fisjHFwCg';
-        $arr =  $jwt->getClaimsByToken($a);
-        var_dump($arr,"===####");
+//        var_dump($this->UserId);
+        $h = $this->request->getHeaders();
+//        var_dump($this->request->getHeaders());
+//        $a= 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJwaHBlcjY2Ni9qd3QiLCJ1aWQiOjMyLCJ1c2VyX25hbWUiOiIxIiwicm9sZV9pZCI6MSwibW9iaWxlIjoiMTU4MDEyNDU3NTUiLCJlbWFpbCI6IjVAcXEuY29tIiwicm9uZ190b2tlbiI6IiIsImxldmVsX2lkIjo4LCJqd3Rfc2NlbmUiOiJkZWZhdWx0IiwianRpIjoiZGVmYXVsdF82Njc1MjJkZDQ3YWYxMi41MTE5MjI5MiIsImlhdCI6MTcxODk1MjY2OSwibmJmIjoxNzE4OTUyNjY5LCJleHAiOjE3MjE1NDQ2Njl9.e0JW8fgNrwBdFgmQ8GNtES2ME1SbcbIih5MsQWzT6sk';
+        $arr =  $jwt->getClaimsByToken($h['token'][0]);
+        var_dump($h['token'][0],"+++++++++++",$arr,"===####");
         return $this->response->json(['code' => 0, 'msg' => 'success', 'data' => ['a' => 1]]);
     }
 }

+ 32 - 1
app/Controller/PublicController.php

@@ -6,6 +6,7 @@ use App\JsonRpc\PublicRpcServiceInterface;
 use Hyperf\Di\Annotation\Inject;
 use Hyperf\HttpServer\Annotation\AutoController;
 use App\Tools\Result;
+use App\Tools\CommonService;
 /**
  * Class PublicController
  * @package App\Controller
@@ -21,7 +22,7 @@ class PublicController extends AbstractController
     private $publicServiceClient;
 
     /**
-     * 创建站点
+     * 地区
      * @return array
      */
     public function getDistrictList()
@@ -33,4 +34,34 @@ class PublicController extends AbstractController
         $result = $this->publicServiceClient->getDistrictList($data);
         return $result ? Result::success($result['data']) : Result::error($result['message']);
     }
+
+    /**
+     * 获取用户等级
+     * @return array
+     */
+    public function getUserLevelList()
+    {
+        $result = $this->publicServiceClient->getUserLevelList([]);
+        return $result ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    public function uploadFile()
+    {
+        $urlN = new CommonService();
+        $file = $this->request->file('file');
+        try {
+            if ($file == null) {
+               return  Result::error("未找到上传文件");
+            }
+            $data = CommonService::uploadFile($file, ['png','jpg','png','jpeg','gif','xls', 'xlsx', 'pdf', 'xls', 'xlsx', 'doc', 'docx', 'ppt', 'zip', 'pptx', 'mp4', 'flv'], 'image');
+            $data['imgUrl'] = $urlN->imgUrl($data['src']);
+            return  Result::success($data, '上传成功');
+        } catch (\Exception $e) {
+            return Result::error($e->getMessage());
+
+        }
+    }
+
+
+
+
 }

+ 92 - 20
app/Controller/UserController.php

@@ -55,32 +55,89 @@ class UserController extends AbstractController
             return Result::error("两次密码不一致");
         }
         $salt = rand(1, 999999);
-        $data = [
-            'user_name'=>$requireData['user_name'],
-            'password'=>$requireData['password'],
-            'avatar'=>$requireData['avatar'],
-            'mobile'=>$requireData['mobile'],
-            'status'=>isset($requireData['status'])??1,
-            'role_id'=>$requireData['role_id']??0,
-            'email'=>$requireData['email']??'',
-            'salt'=>$salt,
-            'rong_token'=>'',
-            'level_id'=>$requireData['level_id'], //会员等级
-            'id_card'=>isset($requireData['id_card'])??'', //身份证号
-            'birthday'=>isset($requireData['birthday'])??'', //生日
-            'gender'=>isset($requireData['gender'])??'', //性别
-            'real_name'=>isset($requireData['real_name'])??'', //真实名称
-        ];
-        $this->logger->info("创建用户入参:", $data);
-        $result =  $this->userServiceClient->createUser($data);
+        $requireData['salt'] = $salt;
+        $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
+        $requireData['last_login_ip'] = $loginIp;
+
+        $this->logger->info("创建用户入参:", $requireData);
+        $result =  $this->userServiceClient->createUser($requireData);
         $this->logger->info("创建用户返回值:", $result);
+        return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
+    }
+
+    /**
+     * 更新用户
+     * @return array
+     */
+    public function updateUser()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'user_name' => 'required',
+                'email' => 'email',
+                'mobile' =>'required'
+            ],
+            [
+                'usernuser_name.required' => '用户名不能为空',
+                'email.email' => '请填写一个有效的邮箱',
+                'mobile.required' => '手机号码必填',
+            ]
+        );
+        if ($validator->fails()){
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        if($requireData['password'] && $requireData['confirm_password']){
+            if($requireData['password'] != $requireData['confirm_password']){
+                return Result::error("两次密码不一致");
+            }
+        }
+
+        $salt = rand(1, 999999);
+        $requireData['salt'] = $salt;
+        $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
+        $requireData['last_login_ip'] = $loginIp;
+
+        $result =  $this->userServiceClient->updateUser($requireData);
+        $this->logger->info("修改用户返回值:", $result);
         return $result?Result::success($result['data']):Result::error($result['message']);
     }
 
     /**
+     * 获取用户信息
      * @return array|void
      */
     public function getUserInfo()
+    {
+
+        $result =  $this->userServiceClient->getUserInfo($this->UserId);
+        if ($result['code'] != ErrorCode::SUCCESS) {
+            return Result::error($result['message'],0,[]);
+        }
+        return Result::success($result['data']);
+    }
+
+    /**
+     * 获取用户列表
+     * @return array
+     */
+    public function getUserList(){
+        $requireData = $this->request->all();
+        $requireData['keyword'] = $requireData['keyword']??'';
+        $result =  $this->userServiceClient->getUserList($requireData);
+
+        if ($result['code'] != ErrorCode::SUCCESS) {
+            return Result::error($result['message'],0,[]);
+        }
+        return Result::success($result['data']);
+    }
+    /**
+     * 删除用户
+     * @return array
+     */
+    public function delUser()
     {
         $requireData = $this->request->all();
         $validator = $this->validationFactory->make(
@@ -89,14 +146,15 @@ class UserController extends AbstractController
                 'id' => 'required'
             ],
             [
-                'id.required' => '用户id不能为空'
+                'id.required' => '用户ID不能为空'
             ]
         );
         if ($validator->fails()){
             $errorMessage = $validator->errors()->first();
             return Result::error($errorMessage);
         }
-        $result =  $this->userServiceClient->getUserInfo((int)$requireData['id']);
+
+        $result =  $this->userServiceClient->delUser($requireData['id']);
         if ($result['code'] != ErrorCode::SUCCESS) {
             return Result::error($result['message'],0,[]);
         }
@@ -104,6 +162,20 @@ class UserController extends AbstractController
     }
 
     /**
+     * 验证用户是否存在
+     * @return void
+     */
+    public function  verifyUserInfo()
+    {
+        $requireData = $this->request->all();
+        $result =  $this->userServiceClient->verifyUserInfo($requireData);
+        if ($result['code'] != ErrorCode::SUCCESS) {
+            return Result::error($result['message'],0,[]);
+        }
+        return Result::success($result['data']);
+    }
+    /**
+     * 角色列表
      * @return array|void
      */
     public function roleList()

+ 143 - 0
app/Controller/WebsiteController.php

@@ -271,4 +271,147 @@ class WebsiteController extends AbstractController
         return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
     }
 
+    /**
+     * 获取站点角色列表
+     * @return void
+     */
+    public function getWebsiteRoleList()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id' => 'required'
+            ],
+            [
+                'id.required' => '站点ID不能为空'
+            ]
+        );
+        if ($validator->fails()){
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $keyword = $this->request->input("keyword",'');
+        $page = (int)$this->request->input("page",1);
+        $pageSize = (int)$this->request->input("pageSize",10);
+        $websiteId = (int)$this->request->input("id",'');
+        $result = $this->websiteServiceClient->getWebsiteRoleList($keyword,$page,$pageSize,$websiteId);
+        return $result?Result::success($result['data']):Result::error($result['message']);
+    }
+
+    /**
+     * 创建站点角色
+     * @return array
+     */
+    public function createWebsiteRole()
+    {
+        $requireData = $this->request->all();
+
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'type' => 'required',
+                'role_id' => 'required',
+                'website_id' => 'required'
+            ],
+            [
+                'type.required' => '类型不能为空',
+                'type_id.required' => 'ID不能为空',
+                'website_id.required' => '站点ID不能为空',
+            ]
+        );
+        if ($validator->fails()){
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['admin_user_id']  = $this->UserId;
+        $result = $this->websiteServiceClient->createWebsiteRole($requireData);
+        return $result['code']!=0?Result::success($result['data']):Result::error($result['message']);
+    }
+    /**
+     * 删除站点角色
+     * @return array
+     */
+    public function delWebsiteRole()
+    {
+        $id = (int)$this->request->input("id",'');
+        $result = $this->websiteServiceClient->delWebsiteRole($id);
+        return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
+    }
+    /**
+     * 获取站点角色用户列表
+     * @return void
+     */
+    public function getWebsiteRoleUserList()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'website_id' => 'required',
+                'role_id' => 'required',
+            ],
+            [
+                'website_id.required' => '站点ID不能为空',
+                'role_id.required' => '角色ID不能为空',
+            ]
+        );
+        if ($validator->fails()){
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $keyword = $this->request->input("keyword",'');
+        $page = (int)$this->request->input("page",1);
+        $pageSize = (int)$this->request->input("pageSize",10);
+        $roleId = (int)$this->request->input("role_id",'');
+        $websiteId = (int)$this->request->input("website_id",'');
+        $result = $this->websiteServiceClient->getWebsiteRoleUserList($keyword,$page,$pageSize,$websiteId,$roleId);
+        return $result?Result::success($result['data']):Result::error($result['message']);
+    }
+
+    /**
+     * 创建站点角色用户
+     * @return array
+     */
+    public function createWebsiteRoleUser()
+    {
+        $requireData = $this->request->all();
+
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'type' => 'required',
+                'role_id' => 'required',
+                'website_id' => 'required',
+                'user_id' => 'required',
+            ],
+            [
+                'type.required' => '类型不能为空',
+                'website_id.required' => '站点ID不能为空',
+                'role_id.required' => '角色ID不能为空',
+                'user_id.required' => '用户ID不能为空',
+            ]
+        );
+        if ($validator->fails()){
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['admin_user_id']  = $this->UserId;
+        $requireData['role_id']  = (int)$requireData['role_id'];
+        $requireData['type']  = (int)$requireData['type'];
+        $requireData['website_id']  =(int)$requireData['website_id'];
+        $requireData['user_id']  = (int)$requireData['user_id'];
+        $result = $this->websiteServiceClient->createWebsiteRoleUser($requireData);
+        return $result['code']!=0?Result::success($result['data']):Result::error($result['message']);
+    }
+    /**
+     * 删除站点角色用户
+     * @return array
+     */
+    public function delWebsiteRoleUser()
+    {
+        $id = (int)$this->request->input("id",'');
+        $result = $this->websiteServiceClient->delWebsiteRoleUser($id);
+        return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
+    }
 }

+ 9 - 0
app/JsonRpc/PublicRpcService.php

@@ -25,4 +25,13 @@ class PublicRpcService extends AbstractServiceClient implements PublicRpcService
     {
         return $this->__request(__FUNCTION__, $data);
     }
+
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function getUserLevelList(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
 }

+ 4 - 0
app/JsonRpc/PublicRpcServiceInterface.php

@@ -7,6 +7,10 @@ interface PublicRpcServiceInterface
      * @param array $data
      */
     public function getDistrictList(array $data);
+    /**
+     * @param array $data
+     */
+    public function getUserLevelList(array $data);
 
 
 }

+ 8 - 0
app/JsonRpc/UserService.php

@@ -35,6 +35,14 @@ class UserService extends AbstractServiceClient implements UserServiceInterface
     {
         return $this->__request(__FUNCTION__, compact('id'));
     }
+    /**
+     * @param array $data
+     * @return array|mixed
+     */
+    public function getUserList(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
 
     /**
      * @param array $data

+ 4 - 1
app/JsonRpc/UserServiceInterface.php

@@ -13,7 +13,10 @@ interface UserServiceInterface
      * @param int $id
      */
     public function getUserInfo(int $id);
-
+    /**
+     * @param array $data
+     */
+    public function getUserList(array $data);
     /**
      * @param array $data
      * @return array

+ 76 - 0
app/JsonRpc/WebsiteService.php

@@ -114,4 +114,80 @@ class WebsiteService extends AbstractServiceClient implements WebsiteServiceInte
     {
         return $this->__request(__FUNCTION__,$id);
     }
+
+    /**
+     * @param string $keyword
+     * @param int $page
+     * @param int $pageSize
+     * @return mixed
+     */
+    public function getWebsiteRoleList(string $keyword, int $page, int $pageSize,int $websiteId)
+    {
+        return $this->__request(__FUNCTION__, compact('keyword','page','pageSize','websiteId'));
+    }
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function createWebsiteRole(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+
+    /**
+     * @param int $id
+     * @param array $data
+     * @return mixed
+     */
+    public function updateWebsiteRole(int $id, array $data)
+    {
+        return $this->__request(__FUNCTION__,$id, $data);
+    }
+
+    /**
+     * @param int $id
+     * @return mixed
+     */
+    public function delWebsiteRole(int $id)
+    {
+        return $this->__request(__FUNCTION__,$id);
+    }
+    /**
+     * @param string $keyword
+     * @param int $page
+     * @param int $pageSize
+     * @return mixed
+     */
+    public function getWebsiteRoleUserList(string $keyword, int $page, int $pageSize,int $websiteId,int $roleId)
+    {
+        return $this->__request(__FUNCTION__, compact('keyword','page','pageSize','websiteId','roleId'));
+    }
+
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function createWebsiteRoleUser(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+
+    /**
+     * @param int $id
+     * @param array $data
+     * @return mixed
+     */
+    public function updateWebsiteRoleUser(int $id, array $data)
+    {
+        return $this->__request(__FUNCTION__,$id, $data);
+    }
+
+    /**
+     * @param int $id
+     * @return mixed
+     */
+    public function delWebsiteRoleUser(int $id)
+    {
+        return $this->__request(__FUNCTION__,$id);
+    }
 }

+ 51 - 0
app/JsonRpc/WebsiteServiceInterface.php

@@ -66,4 +66,55 @@ interface WebsiteServiceInterface
      * @return array
      */
     public function delWebsiteColumn(int $id);
+
+    /**
+     * @param string $keyword
+     * @param int $page
+     * @param int $pageSize
+     */
+    public function getWebsiteRoleList(string $keyword,int $page,int $pageSize,int $websiteId);
+    /**
+     * @param array $data
+     * @return array
+     */
+    public function createWebsiteRole(array $data);
+
+    /**
+     * @param int $id
+     * @param array $data
+     * @return array
+     */
+    public function updateWebsiteRole(int $id,array $data);
+
+    /**
+     * @param int $id
+     * @return array
+     */
+    public function delWebsiteRole(int $id);
+
+    /**
+     * @param string $keyword
+     * @param int $page
+     * @param int $pageSize
+     */
+    public function getWebsiteRoleUserList(string $keyword,int $page,int $pageSize,int $websiteId,int $roleId);
+
+    /**
+     * @param array $data
+     * @return array
+     */
+    public function createWebsiteRoleUser(array $data);
+
+    /**
+     * @param int $id
+     * @param array $data
+     * @return array
+     */
+    public function updateWebsiteRoleUser(int $id,array $data);
+
+    /**
+     * @param int $id
+     * @return array
+     */
+    public function delWebsiteRoleUser(int $id);
 }

+ 27 - 7
app/Middleware/Auth/FooMiddleware.php

@@ -11,7 +11,9 @@ use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
 use Psr\Http\Server\MiddlewareInterface;
 use Psr\Http\Server\RequestHandlerInterface;
-use \Phper666\JWTAuth\JWT;
+
+
+use Phper666\JWTAuth\JWT;
 class FooMiddleware implements MiddlewareInterface
 {
     protected ContainerInterface $container;
@@ -27,23 +29,41 @@ class FooMiddleware implements MiddlewareInterface
         $this->response = $response;
         $this->request = $request;
         $this->JWT = $JWT;
+
     }
 
     public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
     {
+
         $header = $request->getHeaders();
-        $ver = $this->JWT->verifyTokenAndScene('default', $header['token'][0]);
-        // 根据具体业务判断逻辑走向,这里假设用户携带的token有效
-        $isValidToken = $ver;
-        if ($isValidToken) {
+        if($this->request->getUri()->getPath()=="/api/login"){
             return $handler->handle($request);
         }
+        try {
+            if($header &&  isset($header['token']) && $header['token'][0]!='null' && isset($header['token'][0])){
+                $ver = $this->JWT->getClaimsByToken($header['token'][0]);
+                if ($ver) {
+                    return $handler->handle($request);
+                }
+            }else{
+                return $this->response->json(
+                    [
+                        'code' => -1,
+                        'data' => [],
+                        'message' => 'token无效,请重新登录',
+                    ]
+                );
+            }
+
+        }catch (\Exception $e){
+            var_dump("错误消息:",$e->getMessage(),$e->getCode(),"====%====",$e->getCode());
+        }
 
         return $this->response->json(
             [
-                'code' => -1,
+                'code' => 1,
                 'data' => [],
-                'message' => '中间件验证token无效,阻止继续向下执行',
+                'message' => 'token无效,请重新登录',
             ]
         );
     }

+ 87 - 0
app/Tools/CommonService.php

@@ -1 +1,88 @@
 <?php
+namespace App\Tools;
+use App\Constants\ErrorCode;
+use Hyperf\Di\Annotation\Inject;
+use Hyperf\HttpMessage\Upload\UploadedFile;
+use App\Tools\Result;
+use ZX\Tools\File\MimeTypes;
+use function Hyperf\Support\env;
+use Hyperf\HttpServer\Contract\RequestInterface;
+
+
+class CommonService
+{
+    #[Inject]
+    protected RequestInterface $request;
+    public static function uploadFile(UploadedFile $uploadedFile, array $acceptExt, string $fileType = 'image')
+    {
+        $ext = $uploadedFile->getExtension();
+
+        if (!in_array($ext, $acceptExt)) {
+            return Result::error('文件名后缀不允许');
+        }
+        //图片检测安全
+        if ($fileType == 'image') {
+            $res = self::checkMimeType($uploadedFile, $ext);
+            if ($res == false) {
+                return Result::error('文件安全检测未通过');
+            }
+        }
+        $date = date('Ymd');
+        $filePath =  $fileType . DIRECTORY_SEPARATOR . $date ;
+        $allDir = 'public' . DIRECTORY_SEPARATOR . $filePath;
+        if (!is_dir($allDir)) {
+            if (!mkdir($allDir, 0755, true)) {
+                return Result::error('创建文件夹失败');
+            }
+        }
+        $fileName = time().mt_rand(1, 1000000) . '.' . $ext;
+        $finalPath = BASE_PATH . DIRECTORY_SEPARATOR . $allDir . DIRECTORY_SEPARATOR . $fileName;
+        $showPath = $filePath . DIRECTORY_SEPARATOR . $fileName;
+        $uploadedFile->moveTo($finalPath);
+
+        return ['id' => uniqid(), 'src' => $showPath, 'fileName' => $fileName];
+    }
+
+
+    //检测文件是否合法
+    public static function checkMimeType(UploadedFile $uploadedFile, string $ext = '')
+    {
+        try {
+            $filePath = $uploadedFile->getRealPath();
+            $fileMimeType = mime_content_type($filePath);
+            $mimeTypes = MimeTypes::getImage();
+            $isExist = array_key_exists($fileMimeType, $mimeTypes);
+            if (!$isExist) {
+                return Result::error('非允许mime types类型');
+            }
+            list($width, $height, $type, $attr) = getimagesize($filePath, $ext);
+            if ($width <= 0 || $height <= 0) {
+                return false;
+            } else {
+                return true;
+            }
+
+        } catch (\Exception $e) {
+            return false;
+        }
+
+    }
+
+    public  function imgUrl(string $str)
+    {
+        $scheme =$this->request->geturi()->getScheme() ?? 'http';
+        $host =  $this->request->getUri()->getHost() ?? '127.0.0.1';
+        $port = $this->request->getUri()->getPort() ?? config('server.servers.port', 9500);
+
+        $url = '';
+        if ($port == 80 || $port == 443) {
+            $url = "{$scheme}://{$host}/{$str}";
+        } else {
+            $url = "{$scheme}://{$host}:{$port}/{$str}";
+        }
+        return $url;
+    }
+
+
+
+}

+ 2 - 0
app/Tools/PublicData.php

@@ -22,4 +22,6 @@ class PublicData
 
 
 
+
+
 }

+ 2 - 1
composer.json

@@ -49,7 +49,8 @@
         "hyperf/watcher": "^3.1",
         "mockery/mockery": "^1.0",
         "phpstan/phpstan": "^1.0",
-        "swoole/ide-helper": "^5.0"
+        "swoole/ide-helper": "^5.0",
+        "zx/php-tools": "^0.0.1"
     },
     "suggest": {
         "ext-openssl": "Required to use HTTPS.",

+ 31 - 1
composer.lock

@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "b7984053c0d71da3fbd9f105d1c32a48",
+    "content-hash": "98144e888acaa7c93e0bfe5f64885565",
     "packages": [
         {
             "name": "carbonphp/carbon-doctrine-types",
@@ -11052,6 +11052,36 @@
                 }
             ],
             "time": "2024-03-03T12:36:25+00:00"
+        },
+        {
+            "name": "zx/php-tools",
+            "version": "v0.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://gitee.com/open-php/php-tools.git",
+                "reference": "df3e3e7a213c5fde3eab4d14f132aba9b32fe615"
+            },
+            "require": {
+                "php": ">=7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "ZX\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "mit"
+            ],
+            "authors": [
+                {
+                    "name": "zx",
+                    "email": "903464207@qq.com"
+                }
+            ],
+            "description": "php-tools",
+            "time": "2023-06-25T06:24:10+00:00"
         }
     ],
     "aliases": [],

+ 4 - 4
config/autoload/jwt.php

@@ -17,7 +17,7 @@ return [
      * 正则写法:["**", "/api/{name:.+}"]  支持模块化不做jwt token的校验,例如:/api/login/login
      */
     'no_check_route' => [
-        ["**", "/v1/{name:.+}"],
+//        ["**", "/api/{name:.+}"],
     ],
 
     'login_type' => env('JWT_LOGIN_TYPE', 'mpop'), //  登录方式,sso为单点登录,同一个用户只能登录一个端,mpop为多点登录
@@ -38,13 +38,13 @@ return [
      * 非对称算法: RS256, RS384 & RS512 / ES256, ES384 & ES512 使用下面的公钥私钥,需要自己去生成.
      */
     'keys' => [
-        'public' => env('JWT_PUBLIC_KEY'), // 公钥,例如:'file:///path/to/public/key'
-        'private' => env('JWT_PRIVATE_KEY'), // 私钥,例如:'file:///path/to/private/key'
+//        'public' => env('JWT_PUBLIC_KEY'), // 公钥,例如:'file:///path/to/public/key'
+//        'private' => env('JWT_PRIVATE_KEY'), // 私钥,例如:'file:///path/to/private/key'
 
         /**
          * 你的私钥的密码。不需要密码可以不用设置
          */
-        'passphrase' => env('JWT_PASSPHRASE'),
+//        'passphrase' => env('JWT_PASSPHRASE'),
     ],
 
     'ttl' => env('JWT_TTL', 86400*30), // token过期时间,单位为秒

+ 1 - 0
config/autoload/middlewares.php

@@ -2,6 +2,7 @@
 return [
     'http' => [
         \App\Middleware\CorsMiddleware::class,
+        \App\Middleware\Auth\FooMiddleware::class,
         \Hyperf\Validation\Middleware\ValidationMiddleware::class,
     ],
 ];

+ 2 - 0
config/autoload/server.php

@@ -37,6 +37,8 @@ return [
         Constant::OPTION_MAX_REQUEST => 100000,
         Constant::OPTION_SOCKET_BUFFER_SIZE => 2 * 1024 * 1024,
         Constant::OPTION_BUFFER_OUTPUT_SIZE => 2 * 1024 * 1024,
+        'document_root' => BASE_PATH . '/public',
+        'enable_static_handler' => true,
     ],
     'callbacks' => [
         Event::ON_WORKER_START => [Hyperf\Framework\Bootstrap\WorkerStartCallback::class, 'onWorkerStart'],

+ 1 - 0
config/routes.php

@@ -13,6 +13,7 @@ use Hyperf\HttpServer\Router\Router;
 Router::addRoute(['GET', 'POST', 'HEAD'], '/', 'App\Controller\IndexController@index');
 //Router::addRoute(['POST'], '/website/createWebsite', 'App\Controller\WebsiteController@createWebsite');
 Router::post('/api/login', 'App\Controller\LoginController@login');
+Router::get('/api/getData', 'App\Controller\LoginController@getData');
 //Router::addGroup('/user', function () {
 //    Router::get('/getMenuList', 'App\Controller\UserController@getMenuList');
 //}, ['middleware' => [\App\Middleware\Auth\FooMiddleware::class]]);

文件差異過大導致無法顯示
+ 0 - 0
runtime/container/classes.cache


+ 1 - 1
runtime/container/proxy/App_Controller_AbstractController.proxy.php

@@ -39,7 +39,7 @@ abstract class AbstractController
         // 第一个参数对应日志的 name, 第二个参数对应 config/autoload/logger.php 内的 key
         $this->logger = $loggerFactory->get('admin_consumer:', 'default');
         $headers = $this->request->getHeaders();
-        var_dump($headers['token'][0] != 'null');
+        //        var_dump( $headers['token'][0]!='null');
         if ($headers && isset($headers['token']) && $headers['token'][0] != 'null' && isset($headers['token'][0])) {
             $userInfo = $this->jwt->getClaimsByToken($headers['token'][0]);
             $this->UserId = $userInfo['uid'];

+ 28 - 5
runtime/container/proxy/App_Controller_AuthorityController.proxy.php

@@ -44,6 +44,11 @@ class AuthorityController extends AbstractController
         $pageSize = (int) $this->request->input("pageSize", 10);
         $data = ['id' => $id, 'page' => $page, 'pageSize' => $pageSize];
         $result = $this->authorityServiceClient->getMenuList($data);
+        if ($result['data']) {
+            foreach ($result['data']['rows'] as $k => $v) {
+                $result['data']['rows'][$k]['pid_arr'] = $v['pid_arr'] ? json_decode($v['pid_arr']) : [0];
+            }
+        }
         return $result ? Result::success($result['data']) : Result::error($result['message']);
     }
     /**
@@ -67,7 +72,7 @@ class AuthorityController extends AbstractController
     public function addMenu()
     {
         $requireData = $this->request->all();
-        $validator = $this->validationFactory->make($requireData, ['label' => 'required', 'url' => 'required'], ['label.required' => '菜单名称不能为空', 'url.required' => '路由地址不能为空']);
+        $validator = $this->validationFactory->make($requireData, ['label' => 'required'], ['label.required' => '菜单名称不能为空']);
         if ($validator->fails()) {
             $errorMessage = $validator->errors()->first();
             return Result::error($errorMessage);
@@ -90,19 +95,37 @@ class AuthorityController extends AbstractController
     public function updateMenu()
     {
         $requireData = $this->request->all();
-        $validator = $this->validationFactory->make($requireData, ['id' => 'required', 'pid' => 'required', 'label' => 'required', 'url' => 'required'], ['id.required' => 'id不能为空', 'pid.required' => '父级id不能为空', 'label.required' => '菜单名称不能为空', 'url.required' => '路由地址不能为空']);
+        $validator = $this->validationFactory->make($requireData, [
+            'id' => 'required',
+            //                'pid' => 'required',
+            'label' => 'required',
+        ], [
+            'id.required' => 'id不能为空',
+            //                'pid.required' => '父级id不能为空',
+            'label.required' => '菜单名称不能为空',
+        ]);
         if ($validator->fails()) {
             $errorMessage = $validator->errors()->first();
             return Result::error($errorMessage);
         }
+        unset($requireData['pid_arr']);
+        var_dump("提交数据前:", $requireData);
         if (isset($requireData['pid']) && is_array($requireData['pid'])) {
             $requireData['pid_arr'] = json_encode($requireData['pid']);
             $requireData['pid'] = end($requireData['pid']);
         } else {
-            $id = [0];
-            $requireData['pid_arr'] = json_encode($id);
-            $requireData['pid'] = end($id);
+            if (isset($requireData['pid']) && $requireData['pid'] > 0) {
+                //            array_push($requireData['pid'],$requireData['pid']);
+                $requireData['pid'] = [$requireData['pid']];
+                $requireData['pid_arr'] = json_encode($requireData['pid']);
+                $requireData['pid'] = end($requireData['pid']);
+            } else {
+                $id = [0];
+                $requireData['pid_arr'] = json_encode($id);
+                $requireData['pid'] = end($id);
+            }
         }
+        var_dump("提交数据后", $requireData);
         $result = $this->authorityServiceClient->updateMenu($requireData);
         return $result ? Result::success($result['data']) : Result::error($result['message']);
     }

+ 6 - 4
runtime/container/proxy/App_Controller_LoginController.proxy.php

@@ -68,10 +68,12 @@ class LoginController extends AbstractController
     # http头部必须携带token才能访问的路由
     public function getData(Jwt $jwt)
     {
-        var_dump($this->UserId);
-        $a = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJwaHBlcjY2Ni9qd3QiLCJ1aWQiOjEsInVzZXJuYW1lIjoieHgiLCJqd3Rfc2NlbmUiOiJkZWZhdWx0IiwianRpIjoiZGVmYXVsdF82NjYyYTg5NTQ5MTk2MS40NTgzOTUyNCIsImlhdCI6MTcxNzc0MTcxNywibmJmIjoxNzE3NzQxNzE3LCJleHAiOjE3MTc3NDg5MTd9.cTqoaSn5P3mW8__O2O2rv2dxiGtfSZk-E8fisjHFwCg';
-        $arr = $jwt->getClaimsByToken($a);
-        var_dump($arr, "===####");
+        //        var_dump($this->UserId);
+        $h = $this->request->getHeaders();
+        //        var_dump($this->request->getHeaders());
+        //        $a= 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJwaHBlcjY2Ni9qd3QiLCJ1aWQiOjMyLCJ1c2VyX25hbWUiOiIxIiwicm9sZV9pZCI6MSwibW9iaWxlIjoiMTU4MDEyNDU3NTUiLCJlbWFpbCI6IjVAcXEuY29tIiwicm9uZ190b2tlbiI6IiIsImxldmVsX2lkIjo4LCJqd3Rfc2NlbmUiOiJkZWZhdWx0IiwianRpIjoiZGVmYXVsdF82Njc1MjJkZDQ3YWYxMi41MTE5MjI5MiIsImlhdCI6MTcxODk1MjY2OSwibmJmIjoxNzE4OTUyNjY5LCJleHAiOjE3MjE1NDQ2Njl9.e0JW8fgNrwBdFgmQ8GNtES2ME1SbcbIih5MsQWzT6sk';
+        $arr = $jwt->getClaimsByToken($h['token'][0]);
+        var_dump($h['token'][0], "+++++++++++", $arr, "===####");
         return $this->response->json(['code' => 0, 'msg' => 'success', 'data' => ['a' => 1]]);
     }
 }

+ 26 - 1
runtime/container/proxy/App_Controller_PublicController.proxy.php

@@ -7,6 +7,7 @@ use App\JsonRpc\PublicRpcServiceInterface;
 use Hyperf\Di\Annotation\Inject;
 use Hyperf\HttpServer\Annotation\AutoController;
 use App\Tools\Result;
+use App\Tools\CommonService;
 /**
  * Class PublicController
  * @package App\Controller
@@ -29,7 +30,7 @@ class PublicController extends AbstractController
     #[Inject]
     private $publicServiceClient;
     /**
-     * 创建站点
+     * 地区
      * @return array
      */
     public function getDistrictList()
@@ -39,4 +40,28 @@ class PublicController extends AbstractController
         $result = $this->publicServiceClient->getDistrictList($data);
         return $result ? Result::success($result['data']) : Result::error($result['message']);
     }
+    /**
+     * 获取用户等级
+     * @return array
+     */
+    public function getUserLevelList()
+    {
+        $result = $this->publicServiceClient->getUserLevelList([]);
+        return $result ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    public function uploadFile()
+    {
+        $urlN = new CommonService();
+        $file = $this->request->file('file');
+        try {
+            if ($file == null) {
+                return Result::error("未找到上传文件");
+            }
+            $data = CommonService::uploadFile($file, ['png', 'jpg', 'png', 'jpeg', 'gif', 'xls', 'xlsx', 'pdf', 'xls', 'xlsx', 'doc', 'docx', 'ppt', 'zip', 'pptx', 'mp4', 'flv'], 'image');
+            $data['imgUrl'] = $urlN->imgUrl($data['src']);
+            return Result::success($data, '上传成功');
+        } catch (\Exception $e) {
+            return Result::error($e->getMessage());
+        }
+    }
 }

+ 0 - 43
runtime/container/proxy/App_Controller_PublicRpcController.proxy.php

@@ -1,43 +0,0 @@
-<?php
-
-declare (strict_types=1);
-namespace App\Controller;
-
-use App\JsonRpc\PublicRpcServiceInterface;
-use Hyperf\Di\Annotation\Inject;
-use Hyperf\HttpServer\Annotation\AutoController;
-use App\Tools\Result;
-/**
- * Class PublicRpcController
- * @package App\Controller
- */
-#[AutoController]
-class PublicRpcController extends AbstractController
-{
-    use \Hyperf\Di\Aop\ProxyTrait;
-    use \Hyperf\Di\Aop\PropertyHandlerTrait;
-    function __construct(\Hyperf\Logger\LoggerFactory $loggerFactory)
-    {
-        if (method_exists(parent::class, '__construct')) {
-            parent::__construct(...func_get_args());
-        }
-        $this->__handlePropertyHandler(__CLASS__);
-    }
-    /**
-     * @var PublicRpcServiceInterface
-     */
-    #[Inject]
-    private $publicRpcServiceClient;
-    /**
-     * 创建站点
-     * @return array
-     */
-    public function getDistrictList()
-    {
-        var_dump("4444444444444");
-        die;
-        $data = [];
-        $result = $this->publicRpcServiceClient->getDistrictList($data);
-        return $result ? Result::success($result['data']) : Result::error($result['message']);
-    }
-}

+ 73 - 24
runtime/container/proxy/App_Controller_UserController.proxy.php

@@ -52,49 +52,98 @@ class UserController extends AbstractController
             return Result::error("两次密码不一致");
         }
         $salt = rand(1, 999999);
-        $data = [
-            'user_name' => $requireData['user_name'],
-            'password' => $requireData['password'],
-            'avatar' => $requireData['avatar'],
-            'mobile' => $requireData['mobile'],
-            'status' => isset($requireData['status']) ?? 1,
-            'role_id' => $requireData['role_id'] ?? 0,
-            'email' => $requireData['email'] ?? '',
-            'salt' => $salt,
-            'rong_token' => '',
-            'level_id' => $requireData['level_id'],
-            //会员等级
-            'id_card' => isset($requireData['id_card']) ?? '',
-            //身份证号
-            'birthday' => isset($requireData['birthday']) ?? '',
-            //生日
-            'gender' => isset($requireData['gender']) ?? '',
-            //性别
-            'real_name' => isset($requireData['real_name']) ?? '',
-        ];
-        $this->logger->info("创建用户入参:", $data);
-        $result = $this->userServiceClient->createUser($data);
+        $requireData['salt'] = $salt;
+        $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
+        $requireData['last_login_ip'] = $loginIp;
+        $this->logger->info("创建用户入参:", $requireData);
+        $result = $this->userServiceClient->createUser($requireData);
         $this->logger->info("创建用户返回值:", $result);
+        return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 更新用户
+     * @return array
+     */
+    public function updateUser()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make($requireData, ['user_name' => 'required', 'email' => 'email', 'mobile' => 'required'], ['usernuser_name.required' => '用户名不能为空', 'email.email' => '请填写一个有效的邮箱', 'mobile.required' => '手机号码必填']);
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        if ($requireData['password'] && $requireData['confirm_password']) {
+            if ($requireData['password'] != $requireData['confirm_password']) {
+                return Result::error("两次密码不一致");
+            }
+        }
+        $salt = rand(1, 999999);
+        $requireData['salt'] = $salt;
+        $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
+        $requireData['last_login_ip'] = $loginIp;
+        $result = $this->userServiceClient->updateUser($requireData);
+        $this->logger->info("修改用户返回值:", $result);
         return $result ? Result::success($result['data']) : Result::error($result['message']);
     }
     /**
+     * 获取用户信息
      * @return array|void
      */
     public function getUserInfo()
+    {
+        $result = $this->userServiceClient->getUserInfo($this->UserId);
+        if ($result['code'] != ErrorCode::SUCCESS) {
+            return Result::error($result['message'], 0, []);
+        }
+        return Result::success($result['data']);
+    }
+    /**
+     * 获取用户列表
+     * @return array
+     */
+    public function getUserList()
+    {
+        $requireData = $this->request->all();
+        $requireData['keyword'] = $requireData['keyword'] ?? '';
+        $result = $this->userServiceClient->getUserList($requireData);
+        if ($result['code'] != ErrorCode::SUCCESS) {
+            return Result::error($result['message'], 0, []);
+        }
+        return Result::success($result['data']);
+    }
+    /**
+     * 删除用户
+     * @return array
+     */
+    public function delUser()
     {
         $requireData = $this->request->all();
-        $validator = $this->validationFactory->make($requireData, ['id' => 'required'], ['id.required' => '用户id不能为空']);
+        $validator = $this->validationFactory->make($requireData, ['id' => 'required'], ['id.required' => '用户ID不能为空']);
         if ($validator->fails()) {
             $errorMessage = $validator->errors()->first();
             return Result::error($errorMessage);
         }
-        $result = $this->userServiceClient->getUserInfo((int) $requireData['id']);
+        $result = $this->userServiceClient->delUser($requireData['id']);
+        if ($result['code'] != ErrorCode::SUCCESS) {
+            return Result::error($result['message'], 0, []);
+        }
+        return Result::success($result['data']);
+    }
+    /**
+     * 验证用户是否存在
+     * @return void
+     */
+    public function verifyUserInfo()
+    {
+        $requireData = $this->request->all();
+        $result = $this->userServiceClient->verifyUserInfo($requireData);
         if ($result['code'] != ErrorCode::SUCCESS) {
             return Result::error($result['message'], 0, []);
         }
         return Result::success($result['data']);
     }
     /**
+     * 角色列表
      * @return array|void
      */
     public function roleList()

+ 95 - 0
runtime/container/proxy/App_Controller_WebsiteController.proxy.php

@@ -220,4 +220,99 @@ class WebsiteController extends AbstractController
         $result = $this->websiteServiceClient->delWebsiteColumn($id);
         return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
     }
+    /**
+     * 获取站点角色列表
+     * @return void
+     */
+    public function getWebsiteRoleList()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make($requireData, ['id' => 'required'], ['id.required' => '站点ID不能为空']);
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $keyword = $this->request->input("keyword", '');
+        $page = (int) $this->request->input("page", 1);
+        $pageSize = (int) $this->request->input("pageSize", 10);
+        $websiteId = (int) $this->request->input("id", '');
+        $result = $this->websiteServiceClient->getWebsiteRoleList($keyword, $page, $pageSize, $websiteId);
+        return $result ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 创建站点角色
+     * @return array
+     */
+    public function createWebsiteRole()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make($requireData, ['type' => 'required', 'role_id' => 'required', 'website_id' => 'required'], ['type.required' => '类型不能为空', 'type_id.required' => 'ID不能为空', 'website_id.required' => '站点ID不能为空']);
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['admin_user_id'] = $this->UserId;
+        $result = $this->websiteServiceClient->createWebsiteRole($requireData);
+        return $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 删除站点角色
+     * @return array
+     */
+    public function delWebsiteRole()
+    {
+        $id = (int) $this->request->input("id", '');
+        $result = $this->websiteServiceClient->delWebsiteRole($id);
+        return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 获取站点角色用户列表
+     * @return void
+     */
+    public function getWebsiteRoleUserList()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make($requireData, ['website_id' => 'required', 'role_id' => 'required'], ['website_id.required' => '站点ID不能为空', 'role_id.required' => '角色ID不能为空']);
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $keyword = $this->request->input("keyword", '');
+        $page = (int) $this->request->input("page", 1);
+        $pageSize = (int) $this->request->input("pageSize", 10);
+        $roleId = (int) $this->request->input("role_id", '');
+        $websiteId = (int) $this->request->input("website_id", '');
+        $result = $this->websiteServiceClient->getWebsiteRoleUserList($keyword, $page, $pageSize, $websiteId, $roleId);
+        return $result ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 创建站点角色用户
+     * @return array
+     */
+    public function createWebsiteRoleUser()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make($requireData, ['type' => 'required', 'role_id' => 'required', 'website_id' => 'required', 'user_id' => 'required'], ['type.required' => '类型不能为空', 'website_id.required' => '站点ID不能为空', 'role_id.required' => '角色ID不能为空', 'user_id.required' => '用户ID不能为空']);
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['admin_user_id'] = $this->UserId;
+        $requireData['role_id'] = (int) $requireData['role_id'];
+        $requireData['type'] = (int) $requireData['type'];
+        $requireData['website_id'] = (int) $requireData['website_id'];
+        $requireData['user_id'] = (int) $requireData['user_id'];
+        $result = $this->websiteServiceClient->createWebsiteRoleUser($requireData);
+        return $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 删除站点角色用户
+     * @return array
+     */
+    public function delWebsiteRoleUser()
+    {
+        $id = (int) $this->request->input("id", '');
+        $result = $this->websiteServiceClient->delWebsiteRoleUser($id);
+        return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
+    }
 }

+ 8 - 1
runtime/container/proxy/App_JsonRpc_PublicRpcServiceInterface.rpc-client.proxy.php

@@ -2,7 +2,7 @@
 
 namespace App\JsonRpc;
 
-class PublicRpcServiceInterface_9d9b1d564aaa0a72ee71e63fec661a83 extends \Hyperf\RpcClient\Proxy\AbstractProxyService implements PublicRpcServiceInterface
+class PublicRpcServiceInterface_6b19d6d2af8fe6dab250ee26b9ac3a3b extends \Hyperf\RpcClient\Proxy\AbstractProxyService implements PublicRpcServiceInterface
 {
     /**
      * @param array $data
@@ -11,4 +11,11 @@ class PublicRpcServiceInterface_9d9b1d564aaa0a72ee71e63fec661a83 extends \Hyperf
     {
         return $this->client->__call(__FUNCTION__, func_get_args());
     }
+    /**
+     * @param array $data
+     */
+    public function getUserLevelList(array $data)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
 }

+ 8 - 1
runtime/container/proxy/App_JsonRpc_UserServiceInterface.rpc-client.proxy.php

@@ -2,7 +2,7 @@
 
 namespace App\JsonRpc;
 
-class UserServiceInterface_5d0127d5fbfc0c9c37fe2b3a33c7857d extends \Hyperf\RpcClient\Proxy\AbstractProxyService implements UserServiceInterface
+class UserServiceInterface_104a444767c7c7bd8a5328c5c7edb5b0 extends \Hyperf\RpcClient\Proxy\AbstractProxyService implements UserServiceInterface
 {
     /**
      * @param array $data
@@ -18,6 +18,13 @@ class UserServiceInterface_5d0127d5fbfc0c9c37fe2b3a33c7857d extends \Hyperf\RpcC
     {
         return $this->client->__call(__FUNCTION__, func_get_args());
     }
+    /**
+     * @param array $data
+     */
+    public function getUserList(array $data)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
     /**
      * @param array $data
      * @return array

+ 69 - 1
runtime/container/proxy/App_JsonRpc_WebsiteServiceInterface.rpc-client.proxy.php

@@ -2,7 +2,7 @@
 
 namespace App\JsonRpc;
 
-class WebsiteServiceInterface_159524aa485875b0c402c7e3193d925b extends \Hyperf\RpcClient\Proxy\AbstractProxyService implements WebsiteServiceInterface
+class WebsiteServiceInterface_f49a41f9a6036eae7bb55c749e4da75c extends \Hyperf\RpcClient\Proxy\AbstractProxyService implements WebsiteServiceInterface
 {
     /**
      * @param string $keyword
@@ -89,4 +89,72 @@ class WebsiteServiceInterface_159524aa485875b0c402c7e3193d925b extends \Hyperf\R
     {
         return $this->client->__call(__FUNCTION__, func_get_args());
     }
+    /**
+     * @param string $keyword
+     * @param int $page
+     * @param int $pageSize
+     */
+    public function getWebsiteRoleList(string $keyword, int $page, int $pageSize, int $websiteId)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
+    /**
+     * @param array $data
+     * @return array
+     */
+    public function createWebsiteRole(array $data)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
+    /**
+     * @param int $id
+     * @param array $data
+     * @return array
+     */
+    public function updateWebsiteRole(int $id, array $data)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
+    /**
+     * @param int $id
+     * @return array
+     */
+    public function delWebsiteRole(int $id)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
+    /**
+     * @param string $keyword
+     * @param int $page
+     * @param int $pageSize
+     */
+    public function getWebsiteRoleUserList(string $keyword, int $page, int $pageSize, int $websiteId, int $roleId)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
+    /**
+     * @param array $data
+     * @return array
+     */
+    public function createWebsiteRoleUser(array $data)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
+    /**
+     * @param int $id
+     * @param array $data
+     * @return array
+     */
+    public function updateWebsiteRoleUser(int $id, array $data)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
+    /**
+     * @param int $id
+     * @return array
+     */
+    public function delWebsiteRoleUser(int $id)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
 }

+ 83 - 0
runtime/container/proxy/App_Tools_CommonService.proxy.php

@@ -0,0 +1,83 @@
+<?php
+
+namespace App\Tools;
+
+use App\Constants\ErrorCode;
+use Hyperf\Di\Annotation\Inject;
+use Hyperf\HttpMessage\Upload\UploadedFile;
+use App\Tools\Result;
+use ZX\Tools\File\MimeTypes;
+use function Hyperf\Support\env;
+use Hyperf\HttpServer\Contract\RequestInterface;
+class CommonService
+{
+    use \Hyperf\Di\Aop\ProxyTrait;
+    use \Hyperf\Di\Aop\PropertyHandlerTrait;
+    function __construct()
+    {
+        $this->__handlePropertyHandler(__CLASS__);
+    }
+    #[Inject]
+    protected RequestInterface $request;
+    public static function uploadFile(UploadedFile $uploadedFile, array $acceptExt, string $fileType = 'image')
+    {
+        $ext = $uploadedFile->getExtension();
+        if (!in_array($ext, $acceptExt)) {
+            return Result::error('文件名后缀不允许');
+        }
+        //图片检测安全
+        if ($fileType == 'image') {
+            $res = self::checkMimeType($uploadedFile, $ext);
+            if ($res == false) {
+                return Result::error('文件安全检测未通过');
+            }
+        }
+        $date = date('Ymd');
+        $filePath = $fileType . DIRECTORY_SEPARATOR . $date;
+        $allDir = 'public' . DIRECTORY_SEPARATOR . $filePath;
+        if (!is_dir($allDir)) {
+            if (!mkdir($allDir, 0755, true)) {
+                return Result::error('创建文件夹失败');
+            }
+        }
+        $fileName = time() . mt_rand(1, 1000000) . '.' . $ext;
+        $finalPath = BASE_PATH . DIRECTORY_SEPARATOR . $allDir . DIRECTORY_SEPARATOR . $fileName;
+        $showPath = $filePath . DIRECTORY_SEPARATOR . $fileName;
+        $uploadedFile->moveTo($finalPath);
+        return ['id' => uniqid(), 'src' => $showPath, 'fileName' => $fileName];
+    }
+    //检测文件是否合法
+    public static function checkMimeType(UploadedFile $uploadedFile, string $ext = '')
+    {
+        try {
+            $filePath = $uploadedFile->getRealPath();
+            $fileMimeType = mime_content_type($filePath);
+            $mimeTypes = MimeTypes::getImage();
+            $isExist = array_key_exists($fileMimeType, $mimeTypes);
+            if (!$isExist) {
+                return Result::error('非允许mime types类型');
+            }
+            list($width, $height, $type, $attr) = getimagesize($filePath, $ext);
+            if ($width <= 0 || $height <= 0) {
+                return false;
+            } else {
+                return true;
+            }
+        } catch (\Exception $e) {
+            return false;
+        }
+    }
+    public function imgUrl(string $str)
+    {
+        $scheme = $this->request->geturi()->getScheme() ?? 'http';
+        $host = $this->request->getUri()->getHost() ?? '127.0.0.1';
+        $port = $this->request->getUri()->getPort() ?? config('server.servers.port', 9500);
+        $url = '';
+        if ($port == 80 || $port == 443) {
+            $url = "{$scheme}://{$host}/{$str}";
+        } else {
+            $url = "{$scheme}://{$host}:{$port}/{$str}";
+        }
+        return $url;
+    }
+}

文件差異過大導致無法顯示
+ 0 - 0
runtime/container/scan.cache


+ 1 - 1
runtime/hyperf.pid

@@ -1 +1 @@
-9962
+6949

+ 201 - 0
runtime/logs/hyperf.log

@@ -39,3 +39,204 @@
 [2024-06-18 11:39:14] admin_consumer:.INFO: 验证之前 [] []
 [2024-06-18 11:39:14] admin_consumer:.INFO: 验证之前 [] []
 [2024-06-18 11:39:14] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"3","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-20 17:37:17] admin_consumer:.INFO: 创建用户入参: {"user_name":"2","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":498603,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-20 17:37:17] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":33}} []
+[2024-06-20 17:37:27] admin_consumer:.INFO: 创建用户入参: {"user_name":"3","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":936860,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-20 17:37:27] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":34}} []
+[2024-06-20 17:37:33] admin_consumer:.INFO: 创建用户入参: {"user_name":"4","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":997744,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-20 17:37:33] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":35}} []
+[2024-06-20 17:37:38] admin_consumer:.INFO: 创建用户入参: {"user_name":"5","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":585188,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-20 17:37:38] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":36}} []
+[2024-06-20 17:37:43] admin_consumer:.INFO: 创建用户入参: {"user_name":"6","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":163646,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-20 17:37:43] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":37}} []
+[2024-06-20 17:37:50] admin_consumer:.INFO: 创建用户入参: {"user_name":"7","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":360931,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-20 17:37:50] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":38}} []
+[2024-06-20 17:37:54] admin_consumer:.INFO: 创建用户入参: {"user_name":"7777","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":483401,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-20 17:37:54] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":39}} []
+[2024-06-20 17:37:59] admin_consumer:.INFO: 创建用户入参: {"user_name":"77","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":846825,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-20 17:37:59] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":40}} []
+[2024-06-21 09:23:09] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 09:23:09] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 09:23:10] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 09:30:37] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 09:30:37] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 09:30:37] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 09:49:02] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 09:49:02] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 09:49:02] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 10:13:25] admin_consumer:.INFO: 创建用户入参: {"user_name":"77","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":408451,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-21 10:13:25] admin_consumer:.INFO: 创建用户返回值: {"code":0,"message":"创建失败","data":[]} []
+[2024-06-21 10:13:49] admin_consumer:.INFO: 创建用户入参: {"user_name":"778888","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":196905,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-21 10:13:49] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":42}} []
+[2024-06-21 10:17:30] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 10:17:30] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 10:17:30] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 11:18:19] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 11:18:19] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 11:18:19] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 11:27:16] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 11:27:16] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 11:27:16] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 11:42:09] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 11:42:09] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 11:42:09] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 11:44:29] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 11:44:29] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 11:44:29] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 11:44:44] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 11:44:44] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 11:44:44] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 13:28:05] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 13:28:05] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 13:28:05] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 13:29:44] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 13:29:44] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 13:29:44] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 13:30:47] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 13:30:47] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 13:30:47] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 13:31:11] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 13:31:11] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 13:31:11] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 13:31:15] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 13:31:15] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 13:31:15] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 13:32:36] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 13:32:36] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 13:32:36] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://img-blog.csdnimg.cn/direct/ceac7ca44c3040c4889de24f2dae4497.jpeg","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 14:06:02] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:06:03] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:06:03] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 14:08:59] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:08:59] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:08:59] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 14:10:20] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:10:20] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:10:20] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 14:20:53] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:20:53] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:20:53] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 14:30:10] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:30:10] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:30:10] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 14:36:59] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:36:59] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:36:59] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 14:37:55] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:37:55] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:37:55] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 14:43:12] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:43:12] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:43:12] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 14:44:00] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:44:00] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:44:00] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 14:46:09] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:46:09] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:46:09] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 14:47:39] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:47:39] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:47:39] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 14:51:09] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:51:09] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 14:51:09] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 15:22:10] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 15:22:10] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 15:22:10] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 15:23:23] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 15:23:23] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 15:23:23] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-21 15:24:32] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 15:24:32] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-21 15:24:32] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-24 10:50:44] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 10:50:44] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 10:50:45] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-24 10:53:00] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 10:53:00] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 10:53:00] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-24 11:06:48] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 11:06:48] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 11:06:49] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-24 11:10:00] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 11:10:00] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 11:10:00] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-24 14:46:48] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 14:46:48] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 14:47:06] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 14:47:06] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 14:47:59] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 14:47:59] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 14:50:33] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 14:50:33] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 14:53:11] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 14:53:11] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 15:37:33] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 15:37:33] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 15:37:34] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-24 15:41:53] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 15:41:53] admin_consumer:.INFO: 验证之前 [] []
+[2024-06-24 15:41:53] admin_consumer:.INFO: 验证用户返回值: {"code":200,"message":"success","data":{"id":32,"user_name":"1","password":"71ab877bcad54b1f348d59675c7980c7","avatar":"https://oss.cloudhubei.com.cn/cms/release/set1/20240604/66b1f1809845b66e131138d749c6ca2c.png","last_login_ip":null,"last_login_time":"2024-06-11 09:05:28","mobile":"15801245755","status":1,"role_id":1,"email":"5@qq.com","salt":"569295","rong_token":"","level_id":8,"updated_at":"2024-06-11 09:05:28","created_at":"2024-06-11 09:05:28"}} []
+[2024-06-25 09:38:45] admin_consumer:.INFO: 创建用户入参: {"user_name":"778888","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":204098,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-25 09:38:45] admin_consumer:.INFO: 创建用户返回值: {"code":0,"message":"创建失败","data":[]} []
+[2024-06-25 09:40:57] admin_consumer:.INFO: 创建用户入参: {"user_name":"77888866","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":783759,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-25 09:40:57] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":44}} []
+[2024-06-25 09:41:01] admin_consumer:.INFO: 创建用户入参: {"user_name":"778888667","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":193561,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-25 09:41:01] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":45}} []
+[2024-06-25 09:41:04] admin_consumer:.INFO: 创建用户入参: {"user_name":"7788886678","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":775253,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-25 09:41:04] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":46}} []
+[2024-06-25 09:41:07] admin_consumer:.INFO: 创建用户入参: {"user_name":"77888866789","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":47390,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-25 09:41:07] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":47}} []
+[2024-06-25 09:44:12] admin_consumer:.INFO: 创建用户入参: {"user_name":"77888866789","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":489072,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-25 09:44:13] admin_consumer:.INFO: 创建用户返回值: {"code":0,"message":"创建失败","data":[]} []
+[2024-06-25 09:45:06] admin_consumer:.INFO: 创建用户入参: {"user_name":"77888866789","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":127998,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-25 09:45:53] admin_consumer:.INFO: 创建用户入参: {"user_name":"77888866789","password":"111111","avatar":"1","mobile":"3","status":false,"role_id":"4","email":"5@qq.com","salt":615024,"rong_token":"","level_id":"8","id_card":false,"birthday":false,"gender":false,"real_name":false} []
+[2024-06-25 09:45:53] admin_consumer:.INFO: 创建用户返回值: {"code":0,"message":"创建失败","data":[]} []
+[2024-06-25 09:47:48] admin_consumer:.INFO: 创建用户入参: {"user_name":"77888866789","password":"111111","avatar":"1","mobile":"3","status":1,"role_id":"4","email":"5@qq.com","salt":217704,"rong_token":"","level_id":"8","id_card":"","birthday":"","gender":"","real_name":""} []
+[2024-06-25 09:47:48] admin_consumer:.INFO: 创建用户返回值: {"code":0,"message":"创建失败","data":[]} []
+[2024-06-25 09:48:04] admin_consumer:.INFO: 创建用户入参: {"user_name":"nice","password":"111111","avatar":"1","mobile":"3","status":1,"role_id":"4","email":"5@qq.com","salt":163950,"rong_token":"","level_id":"8","id_card":"","birthday":"","gender":"","real_name":""} []
+[2024-06-25 09:48:04] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":51}} []
+[2024-06-25 09:49:27] admin_consumer:.INFO: 创建用户入参: {"user_name":"nice","password":"111111","avatar":"1","mobile":"3","status":1,"role_id":"4","email":"5@qq.com","salt":448785,"rong_token":"","level_id":"8","id_card":"","birthday":"","gender":"","real_name":""} []
+[2024-06-25 09:49:27] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":52}} []
+[2024-06-26 11:29:44] admin_consumer:.INFO: 创建用户入参: {"user_name":123123123,"password":"123123","avatar":"image/20240626/1719372536936525.png","mobile":"15801245755","status":1,"role_id":0,"email":"123@qq.com","salt":784264,"rong_token":"","level_id":5,"id_card":"11","birthday":"","gender":1,"real_name":"123123"} []
+[2024-06-26 11:29:44] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":53}} []
+[2024-06-26 13:15:09] admin_consumer:.INFO: 创建用户入参: {"avatar":"","user_name":11123123,"nickname":"","password":"111111","confirm_password":"111111","real_name":"","gender":"","status":"","mobile":"15801245755","email":"","id_card":"","level_id":3,"city_id":[],"type_id":1,"salt":24666} []
+[2024-06-26 13:15:09] admin_consumer:.INFO: 创建用户返回值: {"code":0,"message":"创建失败","data":[]} []
+[2024-06-26 13:18:15] admin_consumer:.INFO: 创建用户入参: {"avatar":"","user_name":1111111111,"nickname":"","password":"111111","confirm_password":"111111","real_name":"","gender":"","status":"","mobile":"15801245755","email":"","id_card":"","level_id":4,"city_id":[],"type_id":1,"salt":104100} []
+[2024-06-26 13:18:15] admin_consumer:.INFO: 创建用户返回值: {"code":0,"message":"创建失败","data":[]} []
+[2024-06-26 13:28:05] admin_consumer:.INFO: 创建用户入参: {"avatar":"image/20240626/1719379636186485.png","user_name":"qe","nickname":"nicheng","password":"111111","confirm_password":"111111","real_name":"刘德华","gender":2,"status":2,"mobile":"15801244444","email":"123@qq.com","id_card":"610000000000000000","level_id":3,"city_id":[22,303,2710,29981],"type_id":1,"salt":431769,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 13:28:05] admin_consumer:.INFO: 创建用户返回值: {"code":0,"message":"创建失败","data":[]} []
+[2024-06-26 13:30:48] admin_consumer:.INFO: 创建用户入参: {"avatar":"http://192.168.31.193:9501/image/20240626/1719379802145801.png","user_name":"zxt","nickname":"飞利浦","password":"111111","confirm_password":"111111","real_name":"张三","gender":1,"status":1,"mobile":"15933333333","email":"123@qq.com","id_card":"666","level_id":4,"city_id":[29,376,3161,36875],"type_id":1,"salt":237581,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 13:30:48] admin_consumer:.INFO: 创建用户返回值: {"code":0,"message":"创建失败","data":[]} []
+[2024-06-26 13:37:45] admin_consumer:.INFO: 创建用户入参: {"avatar":"http://192.168.31.193:9501/image/20240626/171938021851825.jpg","user_name":"zhangsan","nickname":"张三","password":"111111","confirm_password":"111111","real_name":"张三","gender":1,"status":1,"mobile":"15822222222","email":"22@qq.com","id_card":"666","level_id":4,"city_id":[28,374,3139,36603],"type_id":1,"salt":899803,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 13:37:45] admin_consumer:.INFO: 创建用户返回值: {"code":0,"message":"创建失败","data":[]} []
+[2024-06-26 13:40:12] admin_consumer:.INFO: 创建用户入参: {"avatar":"","user_name":1111111,"nickname":"1","password":"111111","confirm_password":"111111","real_name":"","gender":"","status":"","mobile":"15800000000","email":"","id_card":"","level_id":3,"city_id":[],"type_id":1,"salt":944613,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 13:40:12] admin_consumer:.INFO: 创建用户返回值: {"code":0,"message":"创建失败","data":[]} []
+[2024-06-26 13:55:41] admin_consumer:.INFO: 创建用户入参: {"avatar":"","user_name":"123123123123","nickname":"123","password":"123123","confirm_password":"123123","real_name":"123123","gender":0,"status":1,"mobile":"15801255555","email":"123@qq.com","id_card":1,"level_id":4,"city_id":[],"type_id":1,"salt":532953,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 13:55:41] admin_consumer:.INFO: 创建用户返回值: {"code":0,"message":"创建失败","data":[]} []
+[2024-06-26 13:57:32] admin_consumer:.INFO: 创建用户入参: {"avatar":"","user_name":"123123123123123","nickname":"123123","password":"123123","confirm_password":"123123","real_name":"","gender":0,"status":1,"mobile":"15801245755","email":"","id_card":"","level_id":4,"city_id":[],"type_id":1,"salt":794596,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 13:57:32] admin_consumer:.INFO: 创建用户返回值: {"code":0,"message":"创建失败","data":[]} []
+[2024-06-26 13:58:53] admin_consumer:.INFO: 创建用户入参: {"avatar":"","user_name":"123123","nickname":"","password":"123123","confirm_password":"123123","real_name":"","gender":0,"status":1,"mobile":"15801245755","email":"","id_card":"","level_id":6,"city_id":[],"type_id":1,"salt":649051,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 13:58:54] admin_consumer:.INFO: 创建用户返回值: {"code":0,"message":"创建失败","data":[]} []
+[2024-06-26 14:00:24] admin_consumer:.INFO: 创建用户入参: {"avatar":"","user_name":"123123","nickname":"123","password":"123123","confirm_password":"123123","real_name":"","gender":0,"status":1,"mobile":"15800000000","email":"","id_card":"","level_id":5,"city_id":[],"type_id":1,"salt":532953,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 14:00:24] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":58}} []
+[2024-06-26 14:02:06] admin_consumer:.INFO: 创建用户入参: {"avatar":"http://192.168.31.193:9501/image/20240626/1719381684596384.png","user_name":"zhangsan","nickname":"张三","password":"111111","confirm_password":"111111","real_name":"张三","gender":1,"status":1,"mobile":"15899999999","email":"123@qq.com","id_card":444444444444444,"level_id":1,"city_id":[28],"type_id":1,"salt":922380,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 14:02:06] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":59}} []
+[2024-06-26 14:22:09] admin_consumer:.INFO: 创建用户入参: {"job":"政协主席","avatar":"http://192.168.31.193:9501/image/20240626/1719382846938746.png","user_name":"111111","nickname":"王麻子","password":"111111","confirm_password":"111111","real_name":"王德彪","gender":1,"status":1,"mobile":"15801212111","email":"123@qq.com","id_card":"","level_id":2,"city_id":[28,374,3139,36603],"type_id":2,"salt":586816,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 14:22:09] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":60}} []
+[2024-06-26 15:00:42] admin_consumer:.INFO: 创建用户入参: {"avatar":"","user_name":"asdf","nickname":"adsf","password":"aaaaaa","confirm_password":"aaaaaa","real_name":"","gender":0,"status":1,"mobile":"15888888888","email":"","id_card":"","level_id":1,"city_id":[],"type_id":1,"salt":244426,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 15:00:42] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":61}} []
+[2024-06-26 15:19:26] admin_consumer:.INFO: 创建用户入参: {"avatar":"","user_name":"阿斯蒂芬","nickname":"11","password":"111111","confirm_password":"111111","real_name":"","gender":0,"status":1,"mobile":"15833333333","email":"","id_card":"","level_id":1,"city_id":[],"type_id":1,"salt":300119,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 15:19:26] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":62}} []
+[2024-06-26 15:25:34] admin_consumer:.INFO: 创建用户入参: {"avatar":"","user_name":"ad","nickname":"11","password":"111111","confirm_password":"111111","real_name":"111111","gender":0,"status":1,"mobile":"15800000000","email":"","id_card":"","level_id":1,"city_id":[],"type_id":1,"salt":113431,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 15:27:04] admin_consumer:.INFO: 创建用户入参: {"avatar":"","user_name":"123","nickname":"","password":"123123","confirm_password":"123123","real_name":"","gender":0,"status":1,"mobile":"15800000000","email":"","id_card":"","level_id":1,"city_id":[],"type_id":1,"salt":70798,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 15:27:04] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":63}} []
+[2024-06-26 15:33:47] admin_consumer:.INFO: 创建用户入参: {"avatar":"","user_name":"阿斯顿发发的","nickname":"1","password":"111111","confirm_password":"111111","real_name":"","gender":0,"status":1,"mobile":"15801245555","email":"","id_card":"","level_id":1,"city_id":[],"type_id":1,"salt":946502,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 15:33:48] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":64}} []
+[2024-06-26 15:57:05] admin_consumer:.INFO: 创建用户入参: {"job":"PHP","avatar":"http://192.168.31.193:9501/image/20240626/1719388564943564.png","user_name":"111222","nickname":"张老板","password":"111111","confirm_password":"111111","real_name":"张三","gender":1,"status":1,"mobile":"15866666666","email":"123@qq.com","id_card":615555,"level_id":1,"city_id":[22,303,2710,29981],"type_id":2,"salt":563779,"last_login_ip":"192.168.31.6"} []
+[2024-06-26 15:57:05] admin_consumer:.INFO: 创建用户返回值: {"code":200,"message":"success","data":{"id":65}} []
+[2024-06-26 17:28:07] admin_consumer:.INFO: 创建用户入参: {"user_name":"111222","password":"111111","avatar":"http://192.168.31.193:9501/image/20240626/1719388564943564.png","mobile":"15866666666","status":1,"role_id":0,"email":"123@qq.com","salt":65425,"rong_token":"","level_id":1,"id_card":"615555","birthday":"","gender":1,"real_name":"张三"} []
+[2024-06-26 17:28:07] admin_consumer:.INFO: 创建用户返回值: {"code":0,"message":"创建失败","data":[]} []
+[2024-06-26 17:36:49] admin_consumer:.INFO: 修改用户返回值: {"code":200,"message":"success","data":[]} []
+[2024-06-26 17:38:05] admin_consumer:.INFO: 修改用户返回值: {"code":200,"message":"success","data":[]} []
+[2024-06-26 17:46:08] admin_consumer:.INFO: 修改用户返回值: {"code":200,"message":"success","data":[]} []

+ 11 - 2
vendor/composer/autoload_classmap.php

@@ -32,6 +32,7 @@ return array(
     'App\\Middleware\\Auth\\FooMiddleware' => $baseDir . '/app/Middleware/Auth/FooMiddleware.php',
     'App\\Middleware\\CorsMiddleware' => $baseDir . '/app/Middleware/CorsMiddleware.php',
     'App\\Model\\Model' => $baseDir . '/app/Model/Model.php',
+    'App\\Tools\\CommonService' => $baseDir . '/app/Tools/CommonService.php',
     'App\\Tools\\PublicData' => $baseDir . '/app/Tools/PublicData.php',
     'App\\Tools\\Result' => $baseDir . '/app/Tools/Result.php',
     'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
@@ -596,8 +597,6 @@ return array(
     'Hamcrest\\Type\\IsString' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsString.php',
     'Hamcrest\\Util' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Util.php',
     'Hamcrest\\Xml\\HasXPath' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Xml/HasXPath.php',
-    'HyperfTest\\Cases\\ExampleTest' => $baseDir . '/test/Cases/ExampleTest.php',
-    'HyperfTest\\HttpTestCase' => $baseDir . '/test/HttpTestCase.php',
     'Hyperf\\Cache\\AnnotationManager' => $vendorDir . '/hyperf/cache/src/AnnotationManager.php',
     'Hyperf\\Cache\\Annotation\\CacheAhead' => $vendorDir . '/hyperf/cache/src/Annotation/CacheAhead.php',
     'Hyperf\\Cache\\Annotation\\CacheEvict' => $vendorDir . '/hyperf/cache/src/Annotation/CacheEvict.php',
@@ -4764,4 +4763,14 @@ return array(
     'TheSeer\\Tokenizer\\XMLSerializer' => $vendorDir . '/theseer/tokenizer/src/XMLSerializer.php',
     'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
     'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
+    'ZX\\Algorithm\\LargeDigitalConversion62' => $vendorDir . '/zx/php-tools/src/Algorithm/LargeDigitalConversion62.php',
+    'ZX\\Tools\\CheckTimeConflict' => $vendorDir . '/zx/php-tools/src/Tools/CheckTimeConflict.php',
+    'ZX\\Tools\\File\\MimeTypes' => $vendorDir . '/zx/php-tools/src/Tools/File/MimeTypes.php',
+    'ZX\\Tools\\File\\SecurityCheck' => $vendorDir . '/zx/php-tools/src/Tools/File/SecurityCheck.php',
+    'ZX\\Tools\\IP' => $vendorDir . '/zx/php-tools/src/Tools/IP.php',
+    'ZX\\Tools\\Id\\GenerateIdCard' => $vendorDir . '/zx/php-tools/src/Tools/Id/GenerateIdCard.php',
+    'ZX\\Tools\\Id\\IdCard' => $vendorDir . '/zx/php-tools/src/Tools/Id/IdCard.php',
+    'ZX\\Tools\\Id\\IdCardData' => $vendorDir . '/zx/php-tools/src/Tools/Id/IdCardData.php',
+    'ZX\\Tools\\OrderKeyGenerator' => $vendorDir . '/zx/php-tools/src/Tools/OrderKeyGenerator.php',
+    'ZX\\Tools\\PageTool' => $vendorDir . '/zx/php-tools/src/Tools/PageTool.php',
 );

+ 1 - 0
vendor/composer/autoload_psr4.php

@@ -6,6 +6,7 @@ $vendorDir = dirname(__DIR__);
 $baseDir = dirname($vendorDir);
 
 return array(
+    'ZX\\' => array($vendorDir . '/zx/php-tools/src'),
     'Symfony\\Polyfill\\Php83\\' => array($vendorDir . '/symfony/polyfill-php83'),
     'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'),
     'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),

+ 19 - 2
vendor/composer/autoload_static.php

@@ -42,6 +42,10 @@ class ComposerStaticInited6e1e4568df3e81747ba57e8b3d7786
     );
 
     public static $prefixLengthsPsr4 = array (
+        'Z' => 
+        array (
+            'ZX\\' => 3,
+        ),
         'S' => 
         array (
             'Symfony\\Polyfill\\Php83\\' => 23,
@@ -217,6 +221,10 @@ class ComposerStaticInited6e1e4568df3e81747ba57e8b3d7786
     );
 
     public static $prefixDirsPsr4 = array (
+        'ZX\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/zx/php-tools/src',
+        ),
         'Symfony\\Polyfill\\Php83\\' => 
         array (
             0 => __DIR__ . '/..' . '/symfony/polyfill-php83',
@@ -780,6 +788,7 @@ class ComposerStaticInited6e1e4568df3e81747ba57e8b3d7786
         'App\\Middleware\\Auth\\FooMiddleware' => __DIR__ . '/../..' . '/app/Middleware/Auth/FooMiddleware.php',
         'App\\Middleware\\CorsMiddleware' => __DIR__ . '/../..' . '/app/Middleware/CorsMiddleware.php',
         'App\\Model\\Model' => __DIR__ . '/../..' . '/app/Model/Model.php',
+        'App\\Tools\\CommonService' => __DIR__ . '/../..' . '/app/Tools/CommonService.php',
         'App\\Tools\\PublicData' => __DIR__ . '/../..' . '/app/Tools/PublicData.php',
         'App\\Tools\\Result' => __DIR__ . '/../..' . '/app/Tools/Result.php',
         'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
@@ -1344,8 +1353,6 @@ class ComposerStaticInited6e1e4568df3e81747ba57e8b3d7786
         'Hamcrest\\Type\\IsString' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsString.php',
         'Hamcrest\\Util' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Util.php',
         'Hamcrest\\Xml\\HasXPath' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Xml/HasXPath.php',
-        'HyperfTest\\Cases\\ExampleTest' => __DIR__ . '/../..' . '/test/Cases/ExampleTest.php',
-        'HyperfTest\\HttpTestCase' => __DIR__ . '/../..' . '/test/HttpTestCase.php',
         'Hyperf\\Cache\\AnnotationManager' => __DIR__ . '/..' . '/hyperf/cache/src/AnnotationManager.php',
         'Hyperf\\Cache\\Annotation\\CacheAhead' => __DIR__ . '/..' . '/hyperf/cache/src/Annotation/CacheAhead.php',
         'Hyperf\\Cache\\Annotation\\CacheEvict' => __DIR__ . '/..' . '/hyperf/cache/src/Annotation/CacheEvict.php',
@@ -5512,6 +5519,16 @@ class ComposerStaticInited6e1e4568df3e81747ba57e8b3d7786
         'TheSeer\\Tokenizer\\XMLSerializer' => __DIR__ . '/..' . '/theseer/tokenizer/src/XMLSerializer.php',
         'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
         'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
+        'ZX\\Algorithm\\LargeDigitalConversion62' => __DIR__ . '/..' . '/zx/php-tools/src/Algorithm/LargeDigitalConversion62.php',
+        'ZX\\Tools\\CheckTimeConflict' => __DIR__ . '/..' . '/zx/php-tools/src/Tools/CheckTimeConflict.php',
+        'ZX\\Tools\\File\\MimeTypes' => __DIR__ . '/..' . '/zx/php-tools/src/Tools/File/MimeTypes.php',
+        'ZX\\Tools\\File\\SecurityCheck' => __DIR__ . '/..' . '/zx/php-tools/src/Tools/File/SecurityCheck.php',
+        'ZX\\Tools\\IP' => __DIR__ . '/..' . '/zx/php-tools/src/Tools/IP.php',
+        'ZX\\Tools\\Id\\GenerateIdCard' => __DIR__ . '/..' . '/zx/php-tools/src/Tools/Id/GenerateIdCard.php',
+        'ZX\\Tools\\Id\\IdCard' => __DIR__ . '/..' . '/zx/php-tools/src/Tools/Id/IdCard.php',
+        'ZX\\Tools\\Id\\IdCardData' => __DIR__ . '/..' . '/zx/php-tools/src/Tools/Id/IdCardData.php',
+        'ZX\\Tools\\OrderKeyGenerator' => __DIR__ . '/..' . '/zx/php-tools/src/Tools/OrderKeyGenerator.php',
+        'ZX\\Tools\\PageTool' => __DIR__ . '/..' . '/zx/php-tools/src/Tools/PageTool.php',
     );
 
     public static function getInitializer(ClassLoader $loader)

+ 35 - 1
vendor/composer/installed.json

@@ -11533,6 +11533,39 @@
                 }
             ],
             "install-path": "../vlucas/phpdotenv"
+        },
+        {
+            "name": "zx/php-tools",
+            "version": "v0.0.1",
+            "version_normalized": "0.0.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://gitee.com/open-php/php-tools.git",
+                "reference": "df3e3e7a213c5fde3eab4d14f132aba9b32fe615"
+            },
+            "require": {
+                "php": ">=7.0"
+            },
+            "time": "2023-06-25T06:24:10+00:00",
+            "type": "library",
+            "installation-source": "source",
+            "autoload": {
+                "psr-4": {
+                    "ZX\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "mit"
+            ],
+            "authors": [
+                {
+                    "name": "zx",
+                    "email": "903464207@qq.com"
+                }
+            ],
+            "description": "php-tools",
+            "install-path": "../zx/php-tools"
         }
     ],
     "dev": true,
@@ -11591,6 +11624,7 @@
         "symfony/polyfill-php83",
         "symfony/process",
         "symfony/stopwatch",
-        "theseer/tokenizer"
+        "theseer/tokenizer",
+        "zx/php-tools"
     ]
 }

+ 9 - 0
vendor/composer/installed.php

@@ -1553,5 +1553,14 @@
             'aliases' => array(),
             'dev_requirement' => false,
         ),
+        'zx/php-tools' => array(
+            'pretty_version' => 'v0.0.1',
+            'version' => '0.0.1.0',
+            'reference' => 'df3e3e7a213c5fde3eab4d14f132aba9b32fe615',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../zx/php-tools',
+            'aliases' => array(),
+            'dev_requirement' => true,
+        ),
     ),
 );

+ 1 - 0
vendor/zx/php-tools

@@ -0,0 +1 @@
+Subproject commit df3e3e7a213c5fde3eab4d14f132aba9b32fe615

部分文件因文件數量過多而無法顯示