rkljw 7 miesięcy temu
rodzic
commit
ff7218d33a

+ 3 - 3
.env

@@ -1,6 +1,6 @@
 APP_NAME=user_producer
 APP_ENV=dev
-
+HOST = http://127.0.0.1:9501/
 DB_DRIVER=mysql
 DB_HOST=127.0.0.1
 DB_PORT=3306
@@ -11,7 +11,7 @@ DB_CHARSET=utf8mb4
 DB_COLLATION=utf8mb4_unicode_ci
 DB_PREFIX=
 
-REDIS_HOST=localhost
-REDIS_AUTH=(null)
+REDIS_HOST=192.168.1.102
+REDIS_AUTH=123456
 REDIS_PORT=6379
 REDIS_DB=0

+ 1 - 0
.gitignore

@@ -8,6 +8,7 @@ bin-release/
 .settings/
 public
 vendor
+runtime
 # Executables
 *.swf
 *.air

+ 1 - 1
app/Controller/AbstractController.php

@@ -48,7 +48,7 @@ abstract class AbstractController
         $headers = $this->request->getHeaders();
         if($headers &&  isset($headers['token']) && $headers['token'][0]!='null' && isset($headers['token'][0])){
             $userInfo = $this->jwt->getClaimsByToken($headers['token'][0]);
-            var_dump("用户信息:",$userInfo,$headers);
+//            var_dump("用户信息:",$userInfo,$headers);
             $this->UserId = $userInfo['uid'];
             $this->websiteId = $userInfo['website_id']??0;
         }

+ 4 - 2
app/Controller/AuthorityController.php

@@ -155,10 +155,12 @@ class AuthorityController extends AbstractController
     public  function  getRecursionMenu()
     {
         $header = $this->request->getHeaders();
-
+//        var_dump($header);
+        $origin =  $header['origin'][0];
+        $logindevice = explode("//", $origin);
         $reqData = [
             'user_id' => $this->UserId,
-            'logindevice' => $header['logindevice'][0]
+            'logindevice' => $logindevice[1]
         ];
         $result =  $this->authorityServiceClient->getRecursionMenu($reqData);
         $rep = PublicData::buildMenuTree($result['data']);

+ 7 - 4
app/Controller/IndexController.php

@@ -5,11 +5,14 @@ declare(strict_types=1);
 namespace App\Controller;
 
 use App\Tools\CommonService;
+use App\Tools\PublicData;
 use Hyperf\Di\Annotation\Inject;
 use Hyperf\HttpServer\Contract\RequestInterface;
 use Hyperf\Validation\Contract\ValidatorFactoryInterface;
 use App\Request\FooRequest;
 use App\Request\SceneRequest;
+use App\Tools\Result;
+use ZipArchive;
 
 
 class IndexController extends AbstractController
@@ -39,6 +42,8 @@ class IndexController extends AbstractController
 
     public function verifyCode()
     {
+//        $header = $this->request->getHeaders();
+//        var_dump($header);
         $comm = new CommonService();
         $ip = $comm->userIp();
         $redis = $this->container->get(\Hyperf\Redis\Redis::class);
@@ -56,11 +61,9 @@ class IndexController extends AbstractController
         $img_code = $result->getImageCode();
         //写入缓存 用于其他方法验证 并且设置过期时间
         $redis->set('code'.$ip,$img_code,60000);
-        return $result->getImageBase64();
+        return $result?Result::success($result->getImageBase64()):Result::error('失败');
+//        return $result->getImageBase64();
 
     }
 
-
-
-
 }

+ 8 - 0
app/Controller/LoginController.php

@@ -78,6 +78,7 @@ class LoginController extends AbstractController
             'rong_token' => $userInfos['data']['rong_token'],
             'level_id' => $userInfos['data']['level_id']
         ];
+        var_dump($userData);
         // 使用默认场景登录
         $token = $jwt->getToken('default', $userData);
         $data = [
@@ -87,7 +88,14 @@ class LoginController extends AbstractController
         return Result::success($data);
     }
 
+    /**
+     * 注册或登陆
+     * @return void
+     */
+    public function registerOrLogin()
+    {
 
+    }
     # http头部必须携带token才能访问的路由
     public function getData(Jwt $jwt)
     {

+ 197 - 1
app/Controller/PublicController.php

@@ -8,7 +8,12 @@ use Hyperf\HttpServer\Annotation\AutoController;
 use App\Tools\Result;
 use App\Tools\CommonService;
 use Hyperf\Validation\Contract\ValidatorFactoryInterface;
-
+use App\Tools\PublicData;
+use Hyperf\HttpServer\Annotation\RequestMapping;
+use Hyperf\HttpServer\Contract\RequestInterface;
+use Hyperf\HttpServer\Contract\ResponseInterface;
+use ZipArchive;
+use function Hyperf\Support\env;
 /**
  * Class PublicController
  * @package App\Controller
@@ -152,5 +157,196 @@ class PublicController extends AbstractController
         return $result ? Result::success($result['data']) : Result::error($result['message']);
     }
 
+    /**
+     * 投诉举报
+     * @return void
+     */
+    public function addComplaint()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'title' => 'required',
+                'nature' => 'required',
+                'nature_level'=> 'required',
+                'type'=> 'required',
+                'name'=> 'required',
+                'mobile'=> 'required',
+                'describe'=> 'required',
+                'type_level'=> 'required',
+            ],
+            [
+                'title.required' => '标题不能为空',
+                'nature.required' => '性质不能为空',
+                'nature_level.required' => '进度不能为空',
+                'type.required' => '类型不能为空',
+                'name.required' => '姓名不能为空',
+                'mobile.required' => '手机号码不能为空',
+                'describe.required' => '详细说明不能为空',
+                'type_level.required' => '详细说明不能为空',
+            ]
+        );
+        if ($validator->fails()){
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData = $this->request->all();
+        $requireData['user_id'] = $this->UserId;
+        $result = $this->publicServiceClient->addLetterOfComplaint($requireData);
+        return $result ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 更新投诉举报信息
+     * @return array
+     */
+    public function upComplaint()
+    {
+        $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);
+        }
+        var_dump($requireData);
+        if(isset($requireData['is_admin']) && !empty($requireData['is_admin'])){
+            $requireData['admin_id'] = $this->UserId;
+        }
+        $result = $this->publicServiceClient->upLetterOfComplaint($requireData);
+        return $result ? Result::success([]) : Result::error($result['message']);
+    }
+    /**
+     * 获取投诉列表
+     * @return array
+     */
+    public function getComplaint()
+    {
+        $requireData = $this->request->all();
+        $requireData['user_id'] = $this->UserId;
+        if(isset($data['is_admin']) && !empty($data['is_admin'])){
+            unset( $requireData['user_id']);
+        }
+        $result = $this->publicServiceClient->getLetterOfComplaint($requireData);
+        return $result ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 获取投诉举报信息
+     * @return array
+     */
+    public function getLetterOfComplaintInfo()
+    {
+        $requireData = $this->request->all();
+        $requireData['user_id'] = $this->UserId;
+        if(isset($data['is_admin']) && !empty($data['is_admin'])){
+            unset( $requireData['user_id']);
+        }
+        $result = $this->publicServiceClient->getLetterOfComplaintInfo($requireData);
+        return $result ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 删除投诉举报信息
+     * @return array
+     */
+    public function delLetterOfComplaint()
+    {
+        $requireData = $this->request->all();
+        $requireData['user_id'] = $this->UserId;
+        if(isset($data['is_admin']) && !empty($data['is_admin'])){
+            unset( $requireData['user_id']);
+        }
+        $result = $this->publicServiceClient->delLetterOfComplaint($requireData);
+        return $result ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 获取投诉分类信息
+     * @return array
+     */
+    public function getLetterType()
+    {
+        $requireData = $this->request->all();
+        $result = $this->publicServiceClient->getLetterType($requireData);
+        $rep = PublicData::buildMenuTree($result['data']);
+        return $rep ? Result::success($rep) : Result::error("查询失败");
+    }
+
+    public function downloadFile(RequestInterface $request, ResponseInterface $response)
+    {
+        //验证是否有传参数
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'files' => 'required',
+            ],
+            [
+                'files.required' => '文件不能为空',
+            ]
+        );
+        if ($validator->fails()){
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['fileName'] = $requireData['fileName']??'政讯通';
+        //打包文件
+        $zip = new ZipArchive();
+        $fileType = 'zip';
+        $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 = $requireData['fileName'].time().mt_rand(1, 1000000) . '.zip';
+        $zipFileName = $allDir.DIRECTORY_SEPARATOR.$requireData['fileName'].time().mt_rand(1, 1000000) . '.zip';
+//        $zipFileName = 'public/zip/files.zip';
+
+
+        if ($zip->open($zipFileName, ZipArchive::CREATE) === TRUE) {
+            // 将要下载的文件逐个添加到zip文件中
+            $string = trim($requireData['files'], "[]'"); // 去掉最外层的方括号和单引号(注意:这里假设了单引号,如果是双引号则替换为 ")
+            $string = str_replace("'", '', $string); // 去掉所有剩余的单引号(如果原字符串中使用的是双引号,则替换为双引号)
+            $filePaths = explode(',', $string);
+            foreach ($filePaths as $filePathu) {
+                $attachmentItem = 'public'.$filePathu;
+                $zip->addFile($attachmentItem, pathinfo($attachmentItem, PATHINFO_BASENAME));
+            }
+            // 关闭zip文件
+            $zip->close();
+            // 将zip文件提供给用户进行下载
+//            readfile($zipFileName);
+            $fileUrlName =  explode("public", $zipFileName);
+            return Result::success(['fileUrl'=>env('HOST').$fileUrlName[1]]);
+        } else {
+            return Result::error('无法创建zip文件');
+        }
+
+
+        // 假设我们从请求中获取一个名为'filename'的查询参数
+//        $filenameParam = $request->input('filename', 'files.zip'); // 如果没有提供'filename',则使用'default_filename.csv'
+//
+//        // 构造完整的文件路径(这里假设文件都存放在public目录下)
+//        $filePath = BASE_PATH . '/public/zip/files.zip'; // 注意:这里应该是你实际文件的路径
+//
+//        // 注意:download方法的第二个参数是可选的,用于指定下载时的文件名
+//        // 如果不需要动态设置下载文件名,可以省略第二个参数或传递null
+//        return $response->download($filePath, $filenameParam);
+    }
+
+
+
 
 }

+ 1 - 1
app/Controller/UserController.php

@@ -112,7 +112,7 @@ class UserController extends AbstractController
     public function getUserInfo()
     {
 
-        $result =  $this->userServiceClient->getUserInfo($this->UserId);
+        $result =  $this->userServiceClient->getUserInfo((int)$this->UserId);
         if ($result['code'] != ErrorCode::SUCCESS) {
             return Result::error($result['message'],0,[]);
         }

+ 1 - 1
app/Exception/Handler/AppExceptionHandler.php

@@ -22,7 +22,7 @@ class AppExceptionHandler extends ExceptionHandler
      */
     public function handle(Throwable $throwable, ResponseInterface $response)
     {
-        var_dump($throwable->getMessage());
+//        var_dump($throwable->getMessage());
         // 格式化输出
         $data = json_encode([
             'code' => $throwable->getCode(),

+ 73 - 0
app/JsonRpc/PublicRpcService.php

@@ -60,4 +60,77 @@ class PublicRpcService extends AbstractServiceClient implements PublicRpcService
     public function updateUserLevel(array $data){
         return $this->__request(__FUNCTION__, $data);
     }
+
+    /**
+     * @param array $data
+     * @return array|mixed
+     */
+    public function getLetterOfComplaint(array $data){
+        return $this->__request(__FUNCTION__, $data);
+    }
+
+    /**
+     * @param array $data
+     * @return array|mixed
+     */
+    public function addLetterOfComplaint(array $data){
+        return $this->__request(__FUNCTION__, $data);
+    }
+
+    /**
+     * @param array $data
+     * @return array|mixed
+     */
+    public function upLetterOfComplaint(array $data){
+        return $this->__request(__FUNCTION__, $data);
+    }
+
+    /**
+     * @param array $data
+     * @return array|mixed
+     */
+    public function getLetterOfComplaintInfo(array $data){
+        return $this->__request(__FUNCTION__, $data);
+    }
+
+    /**
+     * @param array $data
+     * @return array|mixed
+     */
+    public function delLetterOfComplaint(array $data){
+        return $this->__request(__FUNCTION__, $data);
+    }
+
+    /**
+     * @param array $data
+     * @return array|mixed
+     */
+    public function getLetterType(array $data){
+        return $this->__request(__FUNCTION__, $data);
+    }
+
+    /**
+     * @param array $data
+     * @return array|mixed
+     */
+    public function upLetterType(array $data){
+        return $this->__request(__FUNCTION__, $data);
+    }
+
+    /**
+     * @param array $data
+     * @return array|mixed
+     */
+    public function addLetterType(array $data){
+        return $this->__request(__FUNCTION__, $data);
+    }
+
+    /**
+     * @param array $data
+     * @return array|mixed
+     */
+    public function delLetterType(array $data){
+        return $this->__request(__FUNCTION__, $data);
+    }
+
 }

+ 53 - 0
app/JsonRpc/PublicRpcServiceInterface.php

@@ -26,4 +26,57 @@ interface PublicRpcServiceInterface
      */
     public function updateUserLevel(array $data);
 
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function getLetterOfComplaint(array $data);
+
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function addLetterOfComplaint(array $data);
+
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function upLetterOfComplaint(array $data);
+
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function getLetterOfComplaintInfo(array $data);
+
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function delLetterOfComplaint(array $data);
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function getLetterType(array $data);
+
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function upLetterType(array $data);
+
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function addLetterType(array $data);
+
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function delLetterType(array $data);
+
 }

+ 10 - 10
app/Middleware/Auth/FooMiddleware.php

@@ -36,9 +36,9 @@ class FooMiddleware implements MiddlewareInterface
     {
 
         $header = $request->getHeaders();
-        if($this->request->getUri()->getPath()=="/api/login" || $this->request->getUri()->getPath()=="/verifyCode"){
-            return $handler->handle($request);
-        }
+//        if($this->request->getUri()->getPath()=="/api/login" || $this->request->getUri()->getPath()=="/verifyCode" || $this->request->getUri()->getPath()=="/index"){
+//            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]);
@@ -66,12 +66,12 @@ class FooMiddleware implements MiddlewareInterface
             );
         }
 
-        return $this->response->json(
-            [
-                'code' => 1,
-                'data' => [],
-                'message' => 'token无效,请重新登录',
-            ]
-        );
+//        return $this->response->json(
+//            [
+//                'code' => 1,
+//                'data' => [],
+//                'message' => 'token无效,请重新登录',
+//            ]
+//        );
     }
 }

+ 1 - 1
app/Tools/PublicData.php

@@ -1,8 +1,8 @@
 <?php
 namespace App\Tools;
-use App\Constants\ErrorCode;
 use Hyperf\Snowflake\IdGeneratorInterface;
 use Hyperf\Context\ApplicationContext;
+
 class PublicData
 {
     /**

+ 5 - 0
config/api/complaint.php

@@ -0,0 +1,5 @@
+<?php
+
+declare(strict_types=1);
+use Hyperf\HttpServer\Router\Router;
+Router::post('/api/addComplaint', 'App\Controller\publicController@addComplaint');

+ 6 - 0
config/api/public.php

@@ -0,0 +1,6 @@
+<?php
+
+declare(strict_types=1);
+use Hyperf\HttpServer\Router\Router;
+Router::addRoute(['GET', 'POST', 'HEAD'], '/verifyCode', 'App\Controller\IndexController@verifyCode');
+

+ 6 - 0
config/api/user.php

@@ -0,0 +1,6 @@
+<?php
+
+declare(strict_types=1);
+use Hyperf\HttpServer\Router\Router;
+Router::post('/api/login', 'App\Controller\LoginController@login');
+

+ 1 - 1
config/autoload/middlewares.php

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

+ 1 - 1
config/autoload/redis.php

@@ -14,7 +14,7 @@ use function Hyperf\Support\env;
 return [
     'default' => [
         'host' => env('REDIS_HOST', '127.0.0.1'),
-        'auth' => env('REDIS_AUTH', ''),
+        'auth' => env('REDIS_AUTH', '123456'),
         'port' => (int) env('REDIS_PORT', 6379),
         'db' => (int) env('REDIS_DB', 0),
         'pool' => [

+ 5 - 7
config/routes.php

@@ -10,21 +10,19 @@ declare(strict_types=1);
  * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
  */
 use Hyperf\HttpServer\Router\Router;
-Router::addRoute(['GET', 'POST', 'HEAD'], '/', 'App\Controller\IndexController@index');
-Router::addRoute(['GET', 'POST', 'HEAD'], '/verifyCode', 'App\Controller\IndexController@verifyCode');
 
-Router::post('/api/login', 'App\Controller\LoginController@login');
+Router::addRoute(['GET', 'POST', 'HEAD'], '/index', 'App\Controller\IndexController@index');
+Router::addRoute(['GET', 'POST', 'HEAD'], '/download', 'App\Controller\IndexController@download');
 Router::get('/api/getData', 'App\Controller\LoginController@getData');
 
 
-
-
 Router::get('/favicon.ico', function () {
     return '';
 });
 
 Router::addServer('ws', function () {
     Router::get('/', 'App\Controller\WebSocketController');
+});
 
-
-});
+require __DIR__.'/api/user.php';
+require __DIR__.'/api/public.php';

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

@@ -42,7 +42,7 @@ abstract class AbstractController
         $headers = $this->request->getHeaders();
         if ($headers && isset($headers['token']) && $headers['token'][0] != 'null' && isset($headers['token'][0])) {
             $userInfo = $this->jwt->getClaimsByToken($headers['token'][0]);
-            var_dump("用户信息:", $userInfo, $headers);
+            //            var_dump("用户信息:",$userInfo,$headers);
             $this->UserId = $userInfo['uid'];
             $this->websiteId = $userInfo['website_id'] ?? 0;
         }

+ 4 - 1
runtime/container/proxy/App_Controller_AuthorityController.proxy.php

@@ -136,7 +136,10 @@ class AuthorityController extends AbstractController
     public function getRecursionMenu()
     {
         $header = $this->request->getHeaders();
-        $reqData = ['user_id' => $this->UserId, 'logindevice' => $header['logindevice'][0]];
+        //        var_dump($header);
+        $origin = $header['origin'][0];
+        $logindevice = explode("//", $origin);
+        $reqData = ['user_id' => $this->UserId, 'logindevice' => $logindevice[1]];
         $result = $this->authorityServiceClient->getRecursionMenu($reqData);
         $rep = PublicData::buildMenuTree($result['data']);
         return $rep ? Result::success($rep) : Result::error("查询失败");

+ 7 - 1
runtime/container/proxy/App_Controller_IndexController.proxy.php

@@ -4,11 +4,14 @@ declare (strict_types=1);
 namespace App\Controller;
 
 use App\Tools\CommonService;
+use App\Tools\PublicData;
 use Hyperf\Di\Annotation\Inject;
 use Hyperf\HttpServer\Contract\RequestInterface;
 use Hyperf\Validation\Contract\ValidatorFactoryInterface;
 use App\Request\FooRequest;
 use App\Request\SceneRequest;
+use App\Tools\Result;
+use ZipArchive;
 class IndexController extends AbstractController
 {
     use \Hyperf\Di\Aop\ProxyTrait;
@@ -33,6 +36,8 @@ class IndexController extends AbstractController
     }
     public function verifyCode()
     {
+        //        $header = $this->request->getHeaders();
+        //        var_dump($header);
         $comm = new CommonService();
         $ip = $comm->userIp();
         $redis = $this->container->get(\Hyperf\Redis\Redis::class);
@@ -49,6 +54,7 @@ class IndexController extends AbstractController
         $img_code = $result->getImageCode();
         //写入缓存 用于其他方法验证 并且设置过期时间
         $redis->set('code' . $ip, $img_code, 60000);
-        return $result->getImageBase64();
+        return $result ? Result::success($result->getImageBase64()) : Result::error('失败');
+        //        return $result->getImageBase64();
     }
 }

+ 8 - 0
runtime/container/proxy/App_Controller_LoginController.proxy.php

@@ -73,11 +73,19 @@ class LoginController extends AbstractController
             'rong_token' => $userInfos['data']['rong_token'],
             'level_id' => $userInfos['data']['level_id'],
         ];
+        var_dump($userData);
         // 使用默认场景登录
         $token = $jwt->getToken('default', $userData);
         $data = ['token' => $token->toString(), 'exp' => $jwt->getTTL($token->toString())];
         return Result::success($data);
     }
+    /**
+     * 注册或登陆
+     * @return void
+     */
+    public function registerOrLogin()
+    {
+    }
     # http头部必须携带token才能访问的路由
     public function getData(Jwt $jwt)
     {

+ 149 - 0
runtime/container/proxy/App_Controller_PublicController.proxy.php

@@ -9,6 +9,12 @@ use Hyperf\HttpServer\Annotation\AutoController;
 use App\Tools\Result;
 use App\Tools\CommonService;
 use Hyperf\Validation\Contract\ValidatorFactoryInterface;
+use App\Tools\PublicData;
+use Hyperf\HttpServer\Annotation\RequestMapping;
+use Hyperf\HttpServer\Contract\RequestInterface;
+use Hyperf\HttpServer\Contract\ResponseInterface;
+use ZipArchive;
+use function Hyperf\Support\env;
 /**
  * Class PublicController
  * @package App\Controller
@@ -128,4 +134,147 @@ class PublicController extends AbstractController
         $result = $this->publicServiceClient->getDistrictList($requireData);
         return $result ? Result::success($result['data']) : Result::error($result['message']);
     }
+    /**
+     * 投诉举报
+     * @return void
+     */
+    public function addComplaint()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make($requireData, ['title' => 'required', 'nature' => 'required', 'nature_level' => 'required', 'type' => 'required', 'name' => 'required', 'mobile' => 'required', 'describe' => 'required', 'type_level' => 'required'], ['title.required' => '标题不能为空', 'nature.required' => '性质不能为空', 'nature_level.required' => '进度不能为空', 'type.required' => '类型不能为空', 'name.required' => '姓名不能为空', 'mobile.required' => '手机号码不能为空', 'describe.required' => '详细说明不能为空', 'type_level.required' => '详细说明不能为空']);
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData = $this->request->all();
+        $requireData['user_id'] = $this->UserId;
+        $result = $this->publicServiceClient->addLetterOfComplaint($requireData);
+        return $result ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 更新投诉举报信息
+     * @return array
+     */
+    public function upComplaint()
+    {
+        $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);
+        }
+        var_dump($requireData);
+        if (isset($requireData['is_admin']) && !empty($requireData['is_admin'])) {
+            $requireData['admin_id'] = $this->UserId;
+        }
+        $result = $this->publicServiceClient->upLetterOfComplaint($requireData);
+        return $result ? Result::success([]) : Result::error($result['message']);
+    }
+    /**
+     * 获取投诉列表
+     * @return array
+     */
+    public function getComplaint()
+    {
+        $requireData = $this->request->all();
+        $requireData['user_id'] = $this->UserId;
+        if (isset($data['is_admin']) && !empty($data['is_admin'])) {
+            unset($requireData['user_id']);
+        }
+        $result = $this->publicServiceClient->getLetterOfComplaint($requireData);
+        return $result ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 获取投诉举报信息
+     * @return array
+     */
+    public function getLetterOfComplaintInfo()
+    {
+        $requireData = $this->request->all();
+        $requireData['user_id'] = $this->UserId;
+        if (isset($data['is_admin']) && !empty($data['is_admin'])) {
+            unset($requireData['user_id']);
+        }
+        $result = $this->publicServiceClient->getLetterOfComplaintInfo($requireData);
+        return $result ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 删除投诉举报信息
+     * @return array
+     */
+    public function delLetterOfComplaint()
+    {
+        $requireData = $this->request->all();
+        $requireData['user_id'] = $this->UserId;
+        if (isset($data['is_admin']) && !empty($data['is_admin'])) {
+            unset($requireData['user_id']);
+        }
+        $result = $this->publicServiceClient->delLetterOfComplaint($requireData);
+        return $result ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 获取投诉分类信息
+     * @return array
+     */
+    public function getLetterType()
+    {
+        $requireData = $this->request->all();
+        $result = $this->publicServiceClient->getLetterType($requireData);
+        $rep = PublicData::buildMenuTree($result['data']);
+        return $rep ? Result::success($rep) : Result::error("查询失败");
+    }
+    public function downloadFile(RequestInterface $request, ResponseInterface $response)
+    {
+        //验证是否有传参数
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make($requireData, ['files' => 'required'], ['files.required' => '文件不能为空']);
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['fileName'] = $requireData['fileName'] ?? '政讯通';
+        //打包文件
+        $zip = new ZipArchive();
+        $fileType = 'zip';
+        $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 = $requireData['fileName'] . time() . mt_rand(1, 1000000) . '.zip';
+        $zipFileName = $allDir . DIRECTORY_SEPARATOR . $requireData['fileName'] . time() . mt_rand(1, 1000000) . '.zip';
+        //        $zipFileName = 'public/zip/files.zip';
+        if ($zip->open($zipFileName, ZipArchive::CREATE) === TRUE) {
+            // 将要下载的文件逐个添加到zip文件中
+            $string = trim($requireData['files'], "[]'");
+            // 去掉最外层的方括号和单引号(注意:这里假设了单引号,如果是双引号则替换为 ")
+            $string = str_replace("'", '', $string);
+            // 去掉所有剩余的单引号(如果原字符串中使用的是双引号,则替换为双引号)
+            $filePaths = explode(',', $string);
+            foreach ($filePaths as $filePathu) {
+                $attachmentItem = 'public' . $filePathu;
+                $zip->addFile($attachmentItem, pathinfo($attachmentItem, PATHINFO_BASENAME));
+            }
+            // 关闭zip文件
+            $zip->close();
+            // 将zip文件提供给用户进行下载
+            //            readfile($zipFileName);
+            $fileUrlName = explode("public", $zipFileName);
+            return Result::success(['fileUrl' => env('HOST') . $fileUrlName[1]]);
+        } else {
+            return Result::error('无法创建zip文件');
+        }
+        // 假设我们从请求中获取一个名为'filename'的查询参数
+        //        $filenameParam = $request->input('filename', 'files.zip'); // 如果没有提供'filename',则使用'default_filename.csv'
+        //
+        //        // 构造完整的文件路径(这里假设文件都存放在public目录下)
+        //        $filePath = BASE_PATH . '/public/zip/files.zip'; // 注意:这里应该是你实际文件的路径
+        //
+        //        // 注意:download方法的第二个参数是可选的,用于指定下载时的文件名
+        //        // 如果不需要动态设置下载文件名,可以省略第二个参数或传递null
+        //        return $response->download($filePath, $filenameParam);
+    }
 }

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

@@ -91,7 +91,7 @@ class UserController extends AbstractController
      */
     public function getUserInfo()
     {
-        $result = $this->userServiceClient->getUserInfo($this->UserId);
+        $result = $this->userServiceClient->getUserInfo((int) $this->UserId);
         if ($result['code'] != ErrorCode::SUCCESS) {
             return Result::error($result['message'], 0, []);
         }

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

@@ -2,7 +2,7 @@
 
 namespace App\JsonRpc;
 
-class PublicRpcServiceInterface_2205b8cebb7963395cb55f07aa4b0fc5 extends \Hyperf\RpcClient\Proxy\AbstractProxyService implements PublicRpcServiceInterface
+class PublicRpcServiceInterface_a00970922e7faac88522fc2e8e85818d extends \Hyperf\RpcClient\Proxy\AbstractProxyService implements PublicRpcServiceInterface
 {
     /**
      * @param array $data
@@ -39,4 +39,76 @@ class PublicRpcServiceInterface_2205b8cebb7963395cb55f07aa4b0fc5 extends \Hyperf
     {
         return $this->client->__call(__FUNCTION__, func_get_args());
     }
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function getLetterOfComplaint(array $data)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function addLetterOfComplaint(array $data)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function upLetterOfComplaint(array $data)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function getLetterOfComplaintInfo(array $data)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function delLetterOfComplaint(array $data)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function getLetterType(array $data)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function upLetterType(array $data)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function addLetterType(array $data)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function delLetterType(array $data)
+    {
+        return $this->client->__call(__FUNCTION__, func_get_args());
+    }
 }

Plik diff jest za duży
+ 0 - 0
runtime/container/scan.cache


+ 1 - 1
runtime/hyperf.pid

@@ -1 +1 @@
-15784
+22613

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików