PublicController.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller;
  4. use App\JsonRpc\PublicRpcServiceInterface;
  5. use Hyperf\Di\Annotation\Inject;
  6. use Hyperf\HttpServer\Annotation\AutoController;
  7. use App\Tools\Result;
  8. use App\Tools\CommonService;
  9. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  10. use App\Tools\PublicData;
  11. use Hyperf\HttpServer\Contract\RequestInterface;
  12. use Hyperf\HttpServer\Contract\ResponseInterface;
  13. use ZipArchive;
  14. use function Hyperf\Support\env;
  15. use Hyperf\Context\Context;
  16. /**
  17. * Class PublicController
  18. * @package App\Controller
  19. */
  20. //#[AutoController]
  21. class PublicController extends AbstractController
  22. {
  23. #[Inject]
  24. protected ValidatorFactoryInterface $validationFactory;
  25. /**
  26. * @var PublicRpcServiceInterface
  27. */
  28. #[Inject]
  29. private $publicServiceClient;
  30. /**
  31. * 地区
  32. * @return array
  33. */
  34. public function getDistrictList()
  35. {
  36. $pid = $this->request->input("pid",0);
  37. $data = [
  38. 'pid'=>$pid
  39. ];
  40. $result = $this->publicServiceClient->getDistrictList($data);
  41. return $result ? Result::success($result['data']) : Result::error($result['message']);
  42. }
  43. /**
  44. * 获取用户等级
  45. * @return array
  46. */
  47. public function getUserLevelList()
  48. {
  49. $requireData = $this->request->all();
  50. $result = $this->publicServiceClient->getUserLevelList($requireData);
  51. return $result ? Result::success($result['data']) : Result::error($result['message']);
  52. }
  53. /**
  54. * 上传图片
  55. * @return array
  56. */
  57. public function uploadFile()
  58. {
  59. $urlN = new CommonService();
  60. $file = $this->request->file('file');
  61. $fileName = $this->request->input("fileName",'');
  62. try {
  63. if ($file == null) {
  64. return Result::error("未找到上传文件");
  65. }
  66. $data = CommonService::uploadFile($file, ['png','jpg','png','jpeg','gif','xls', 'xlsx', 'pdf', 'xls', 'xlsx', 'doc', 'docx', 'ppt', 'zip', 'pptx', 'mp4', 'flv'], 'image');
  67. $data['imgUrl'] = $urlN->imgUrl($data['src']);
  68. $data['oldFileName'] = $fileName;
  69. return Result::success($data, '上传成功');
  70. } catch (\Exception $e) {
  71. return Result::error($e->getMessage());
  72. }
  73. }
  74. /**
  75. * 添加用户等级
  76. * @return array
  77. */
  78. public function addUserLevel()
  79. {
  80. $requireData = $this->request->all();
  81. $validator = $this->validationFactory->make(
  82. $requireData,
  83. [
  84. 'name' => 'required',
  85. ],
  86. [
  87. 'name.required' => '等级名不能为空',
  88. ]
  89. );
  90. if ($validator->fails()){
  91. $errorMessage = $validator->errors()->first();
  92. return Result::error($errorMessage);
  93. }
  94. $result = $this->publicServiceClient->addUserLevel($requireData);
  95. return $result ? Result::success($result['data']) : Result::error($result['message']);
  96. }
  97. /**
  98. * 删除用户等级
  99. * @return array
  100. */
  101. public function delUserLevel()
  102. {
  103. $requireData = $this->request->all();
  104. $validator = $this->validationFactory->make(
  105. $requireData,
  106. [
  107. 'id' => 'required'
  108. ],
  109. [
  110. 'id.required' => 'ID不能为空'
  111. ]
  112. );
  113. if ($validator->fails()){
  114. $errorMessage = $validator->errors()->first();
  115. return Result::error($errorMessage);
  116. }
  117. $result = $this->publicServiceClient->delUserLevel($requireData);
  118. return $result ? Result::success($result['data']) : Result::error($result['message']);
  119. }
  120. /**
  121. * 更新用户等级
  122. * @return array
  123. */
  124. public function updateUserLevel()
  125. {
  126. $requireData = $this->request->all();
  127. $validator = $this->validationFactory->make(
  128. $requireData,
  129. [
  130. 'name' => 'required',
  131. 'id' => 'required'
  132. ],
  133. [
  134. 'id.required' => 'ID不能为空',
  135. 'name.required' => '名称不能为空'
  136. ]
  137. );
  138. if ($validator->fails()){
  139. $errorMessage = $validator->errors()->first();
  140. return Result::error($errorMessage);
  141. }
  142. $result = $this->publicServiceClient->updateUserLevel($requireData);
  143. return $result ? Result::success($result['data']) : Result::error($result['message']);
  144. }
  145. /**
  146. * 城市列表
  147. * @return array
  148. */
  149. public function getCityList()
  150. {
  151. $requireData = $this->request->all();
  152. var_dump($requireData);
  153. $result = $this->publicServiceClient->getDistrictList($requireData);
  154. return $result ? Result::success($result['data']) : Result::error($result['message']);
  155. }
  156. /**
  157. * 投诉举报
  158. * @return void
  159. */
  160. public function addComplaint()
  161. {
  162. $requireData = $this->request->all();
  163. $validator = $this->validationFactory->make(
  164. $requireData,
  165. [
  166. 'title' => 'required',
  167. 'nature' => 'required',
  168. 'nature_level'=> 'required',
  169. 'type'=> 'required',
  170. 'name'=> 'required',
  171. 'mobile'=> 'required',
  172. 'describe'=> 'required',
  173. 'type_level'=> 'required',
  174. ],
  175. [
  176. 'title.required' => '标题不能为空',
  177. 'nature.required' => '性质不能为空',
  178. 'nature_level.required' => '进度不能为空',
  179. 'type.required' => '类型不能为空',
  180. 'name.required' => '姓名不能为空',
  181. 'mobile.required' => '手机号码不能为空',
  182. 'describe.required' => '详细说明不能为空',
  183. 'type_level.required' => '详细说明不能为空',
  184. ]
  185. );
  186. if ($validator->fails()){
  187. $errorMessage = $validator->errors()->first();
  188. return Result::error($errorMessage);
  189. }
  190. $requireData = $this->request->all();
  191. $requireData['user_id'] =Context::get("UserId");
  192. if($requireData['id']){
  193. $result = $this->publicServiceClient->userUpLetterOfComplaint($requireData);
  194. }else{
  195. $result = $this->publicServiceClient->addLetterOfComplaint($requireData);
  196. }
  197. return $result ? Result::success($result['data']) : Result::error($result['message']);
  198. }
  199. /**
  200. * 更新投诉举报信息
  201. * @return array
  202. */
  203. public function upComplaint()
  204. {
  205. $requireData = $this->request->all();
  206. $validator = $this->validationFactory->make(
  207. $requireData,
  208. [
  209. 'id' => 'required',
  210. ],
  211. [
  212. 'id.required' => 'id不能为空',
  213. ]
  214. );
  215. if ($validator->fails()){
  216. $errorMessage = $validator->errors()->first();
  217. return Result::error($errorMessage);
  218. }
  219. var_dump($requireData);
  220. if(isset($requireData['is_admin']) && !empty($requireData['is_admin'])){
  221. $requireData['admin_id'] =Context::get("UserId");
  222. }
  223. $result = $this->publicServiceClient->upLetterOfComplaint($requireData);
  224. return $result ? Result::success([]) : Result::error($result['message']);
  225. }
  226. /**
  227. * 获取投诉列表
  228. * @return array
  229. */
  230. public function getComplaint()
  231. {
  232. $requireData = $this->request->all();
  233. $requireData['user_id'] = Context::get("UserId");
  234. var_dump("用户id:",Context::get("UserId"));
  235. if(isset($requireData['is_admin']) && !empty($requireData['is_admin'])){
  236. unset( $requireData['user_id']);
  237. }
  238. $result = $this->publicServiceClient->getLetterOfComplaint($requireData);
  239. return $result ? Result::success($result['data']) : Result::error($result['message']);
  240. }
  241. /**
  242. * 获取投诉举报信息
  243. * @return array
  244. */
  245. public function getLetterOfComplaintInfo()
  246. {
  247. $requireData = $this->request->all();
  248. $requireData['user_id'] =Context::get("UserId");
  249. if(isset($requireData['is_admin']) && !empty($requireData['is_admin'])){
  250. unset( $requireData['user_id']);
  251. }
  252. $result = $this->publicServiceClient->getLetterOfComplaintInfo($requireData);
  253. if($result){
  254. $result['data']['judgment'] = $result['data']['judgment']?json_decode($result['data']['judgment']):'';
  255. $result['data']['audio_and_video'] = $result['data']['audio_and_video']?json_decode($result['data']['audio_and_video']):'';
  256. $result['data']['contract'] = $result['data']['contract']?json_decode($result['data']['contract']):'';
  257. $result['data']['qualifications'] = $result['data']['qualifications']?json_decode($result['data']['qualifications']):'';
  258. }
  259. return $result ? Result::success($result['data']) : Result::error($result['message']);
  260. }
  261. /**
  262. * 删除投诉举报信息
  263. * @return array
  264. */
  265. public function delLetterOfComplaint()
  266. {
  267. $requireData = $this->request->all();
  268. $requireData['user_id'] =Context::get("UserId");
  269. if(isset($requireData['is_admin']) && !empty($requireData['is_admin'])){
  270. unset( $requireData['user_id']);
  271. }
  272. $result = $this->publicServiceClient->delLetterOfComplaint($requireData);
  273. return $result ? Result::success($result['data']) : Result::error($result['message']);
  274. }
  275. /**
  276. * 获取投诉分类信息
  277. * @return array
  278. */
  279. public function getLetterType()
  280. {
  281. $requireData = $this->request->all();
  282. $result = $this->publicServiceClient->getLetterType($requireData);
  283. $rep = PublicData::buildMenuTree($result['data']);
  284. return $rep ? Result::success($rep) : Result::error("查询失败");
  285. }
  286. public function downloadFile(RequestInterface $request, ResponseInterface $response)
  287. {
  288. //验证是否有传参数
  289. $requireData = $this->request->all();
  290. $validator = $this->validationFactory->make(
  291. $requireData,
  292. [
  293. 'files' => 'required',
  294. ],
  295. [
  296. 'files.required' => '文件不能为空',
  297. ]
  298. );
  299. if ($validator->fails()){
  300. $errorMessage = $validator->errors()->first();
  301. return Result::error($errorMessage);
  302. }
  303. $requireData['fileName'] = $requireData['fileName']??'政讯通';
  304. //打包文件
  305. $zip = new ZipArchive();
  306. $fileType = 'zip';
  307. $date = date('Ymd');
  308. $filePath = $fileType . DIRECTORY_SEPARATOR . $date ;
  309. $allDir = 'public' . DIRECTORY_SEPARATOR . $filePath;
  310. if (!is_dir($allDir)) {
  311. if (!mkdir($allDir, 0755, true)) {
  312. return Result::error('创建文件夹失败');
  313. }
  314. }
  315. $fileName = $requireData['fileName'].time().mt_rand(1, 1000000) . '.zip';
  316. $zipFileName = $allDir.DIRECTORY_SEPARATOR.$requireData['fileName'].time().mt_rand(1, 1000000) . '.zip';
  317. // $zipFileName = 'public/zip/files.zip';
  318. if ($zip->open($zipFileName, ZipArchive::CREATE) === TRUE) {
  319. // 将要下载的文件逐个添加到zip文件中
  320. // $string = trim($requireData['files'], "[]'"); // 去掉最外层的方括号和单引号(注意:这里假设了单引号,如果是双引号则替换为 ")
  321. // $string = str_replace("'", '', $string); // 去掉所有剩余的单引号(如果原字符串中使用的是双引号,则替换为双引号)
  322. // $filePaths = explode(',', $string);
  323. foreach ($requireData['files'] as $filePathu) {
  324. $attachmentItem = 'public/'.$filePathu;
  325. $zip->addFile($attachmentItem, pathinfo($attachmentItem, PATHINFO_BASENAME));
  326. }
  327. // 关闭zip文件
  328. $zip->close();
  329. // 将zip文件提供给用户进行下载
  330. // readfile($zipFileName);
  331. $fileUrlName = explode("public", $zipFileName);
  332. return Result::success(['fileUrl'=>env('HOST').$fileUrlName[1]]);
  333. } else {
  334. return Result::error('无法创建zip文件');
  335. }
  336. }
  337. /**
  338. * 检测是否被处理
  339. * @return array
  340. */
  341. public function checkMeasure()
  342. {
  343. $requireData = $this->request->all();
  344. $validator = $this->validationFactory->make(
  345. $requireData,
  346. [
  347. 'id' => 'required',
  348. ],
  349. [
  350. 'id.required' => 'id不能为空',
  351. ]
  352. );
  353. if ($validator->fails()){
  354. $errorMessage = $validator->errors()->first();
  355. return Result::error($errorMessage);
  356. }
  357. $requireData['user_id'] =Context::get("UserId");
  358. $result = $this->publicServiceClient->checkMeasure($requireData);
  359. return $result['code']==200 ? Result::success() : Result::error("已经处理了");
  360. }
  361. }