PublicController.php 93 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546
  1. <?php
  2. declare (strict_types = 1);
  3. namespace App\Controller;
  4. use App\JsonRpc\PublicRpcServiceInterface;
  5. use App\Model\Couplet;
  6. use App\Model\HistoryToday;
  7. use App\Model\Riddle;
  8. use App\Tools\CommonService;
  9. use App\Tools\PublicData;
  10. use App\Tools\Result;
  11. use function Hyperf\Support\env;
  12. use Hyperf\Context\Context;
  13. use Hyperf\Di\Annotation\Inject;
  14. use Hyperf\HttpServer\Contract\RequestInterface;
  15. use Hyperf\HttpServer\Contract\ResponseInterface;
  16. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  17. use ZipArchive;
  18. use App\JsonRpc\NewsServiceInterface;
  19. /**
  20. * Class PublicController
  21. * @package App\Controller
  22. */
  23. //#[AutoController]
  24. class PublicController extends AbstractController
  25. {
  26. #[Inject]
  27. protected ValidatorFactoryInterface $validationFactory;
  28. /**
  29. * @var PublicRpcServiceInterface
  30. */
  31. #[Inject]
  32. private $publicServiceClient;
  33. /**
  34. * @var NewsServiceInterface
  35. */
  36. #[Inject]
  37. private $newsServiceClient;
  38. /**
  39. * 地区
  40. * @return array
  41. */
  42. public function getDistrictList()
  43. {
  44. $pid = $this->request->input("pid", 0);
  45. $data = [
  46. 'pid' => $pid,
  47. ];
  48. $result = $this->publicServiceClient->getDistrictList($data);
  49. return $result ? Result::success($result['data']) : Result::error($result['message']);
  50. }
  51. /**
  52. * 获取用户等级
  53. * @return array
  54. */
  55. public function getUserLevelList()
  56. {
  57. $requireData = $this->request->all();
  58. $result = $this->publicServiceClient->getUserLevelList($requireData);
  59. return $result ? Result::success($result['data']) : Result::error($result['message']);
  60. }
  61. /**
  62. * 上传图片
  63. * @return array
  64. */
  65. public function uploadFile()
  66. {
  67. $urlN = new CommonService();
  68. $file = $this->request->file('file');
  69. try {
  70. if ($file == null) {
  71. return Result::error("未找到上传文件");
  72. }
  73. $data = CommonService::uploadFile($file, ['txt','png', 'jpg', 'png', 'jpeg', 'gif', 'xls', 'xlsx', 'pdf', 'xls', 'xlsx', 'doc', 'docx', 'ppt', 'zip', 'pptx', 'mp4', 'flv'], 'image');
  74. var_dump($data);
  75. if (isset($data['code'])&&$data['code'] != 200) {
  76. return Result::error($data['message']);
  77. }
  78. $data['imgUrl'] = $urlN->imgUrl($data['src']);
  79. $fileName = $file->getClientFilename();
  80. $data['oldFileName'] = $fileName;
  81. return Result::success($data, '上传成功');
  82. } catch (\Exception $e) {
  83. return Result::error($e->getMessage());
  84. }
  85. }
  86. /**
  87. * 添加用户等级
  88. * @return array
  89. */
  90. public function addUserLevel()
  91. {
  92. $requireData = $this->request->all();
  93. $validator = $this->validationFactory->make(
  94. $requireData,
  95. [
  96. 'name' => 'required',
  97. ],
  98. [
  99. 'name.required' => '等级名不能为空',
  100. ]
  101. );
  102. if ($validator->fails()) {
  103. $errorMessage = $validator->errors()->first();
  104. return Result::error($errorMessage);
  105. }
  106. $result = $this->publicServiceClient->addUserLevel($requireData);
  107. return $result ? Result::success($result['data']) : Result::error($result['message']);
  108. }
  109. /**
  110. * 删除用户等级
  111. * @return array
  112. */
  113. public function delUserLevel()
  114. {
  115. $requireData = $this->request->all();
  116. $validator = $this->validationFactory->make(
  117. $requireData,
  118. [
  119. 'id' => 'required',
  120. ],
  121. [
  122. 'id.required' => 'ID不能为空',
  123. ]
  124. );
  125. if ($validator->fails()) {
  126. $errorMessage = $validator->errors()->first();
  127. return Result::error($errorMessage);
  128. }
  129. $result = $this->publicServiceClient->delUserLevel($requireData);
  130. return $result ? Result::success($result['data']) : Result::error($result['message']);
  131. }
  132. /**
  133. * 更新用户等级
  134. * @return array
  135. */
  136. public function updateUserLevel()
  137. {
  138. $requireData = $this->request->all();
  139. $validator = $this->validationFactory->make(
  140. $requireData,
  141. [
  142. 'name' => 'required',
  143. 'id' => 'required',
  144. ],
  145. [
  146. 'id.required' => 'ID不能为空',
  147. 'name.required' => '名称不能为空',
  148. ]
  149. );
  150. if ($validator->fails()) {
  151. $errorMessage = $validator->errors()->first();
  152. return Result::error($errorMessage);
  153. }
  154. $result = $this->publicServiceClient->updateUserLevel($requireData);
  155. return $result ? Result::success($result['data']) : Result::error($result['message']);
  156. }
  157. /**
  158. * 城市列表
  159. * @return array
  160. */
  161. public function getCityList()
  162. {
  163. $requireData = $this->request->all();
  164. // var_dump($requireData);
  165. $result = $this->publicServiceClient->getDistrictList($requireData);
  166. return $result ? Result::success($result['data']) : Result::error($result['message']);
  167. }
  168. /**
  169. * 投诉举报
  170. * @return void
  171. */
  172. public function addComplaint()
  173. {
  174. $requireData = $this->request->all();
  175. $validator = $this->validationFactory->make(
  176. $requireData,
  177. [
  178. 'title' => 'required',
  179. 'nature' => 'required',
  180. 'nature_level0' => 'required',
  181. 'name' => 'required',
  182. 'mobile' => 'required',
  183. 'describe' => 'required',
  184. ],
  185. [
  186. 'title.required' => '标题不能为空',
  187. 'nature.required' => '类型不能为空',
  188. 'nature_level0.required' => '类型进度不能为空',
  189. 'name.required' => '姓名不能为空',
  190. 'mobile.required' => '手机号码不能为空',
  191. 'describe.required' => '详细说明不能为空',
  192. ]
  193. );
  194. if ($validator->fails()) {
  195. $errorMessage = $validator->errors()->first();
  196. return Result::error($errorMessage);
  197. }
  198. $requireData = $this->request->all();
  199. $requireData['user_id'] = Context::get("UserId");
  200. if ($requireData['id']) {
  201. $result = $this->publicServiceClient->userUpLetterOfComplaint($requireData);
  202. } else {
  203. $result = $this->publicServiceClient->addLetterOfComplaint($requireData);
  204. }
  205. return $result ? Result::success($result['data']) : Result::error($result['message']);
  206. }
  207. /**
  208. * 更新投诉举报信息
  209. * @return array
  210. */
  211. public function upComplaint()
  212. {
  213. $requireData = $this->request->all();
  214. $validator = $this->validationFactory->make(
  215. $requireData,
  216. [
  217. 'id' => 'required',
  218. ],
  219. [
  220. 'id.required' => 'id不能为空',
  221. ]
  222. );
  223. if ($validator->fails()) {
  224. $errorMessage = $validator->errors()->first();
  225. return Result::error($errorMessage);
  226. }
  227. // var_dump($requireData);
  228. if (isset($requireData['is_admin']) && !empty($requireData['is_admin'])) {
  229. $requireData['admin_id'] = Context::get("UserId");
  230. }
  231. $result = $this->publicServiceClient->upLetterOfComplaint($requireData);
  232. return $result ? Result::success([]) : Result::error($result['message']);
  233. }
  234. /**
  235. * 获取投诉列表
  236. * @return array
  237. */
  238. public function getComplaint()
  239. {
  240. $requireData = $this->request->all();
  241. $requireData['user_id'] = Context::get("UserId");
  242. if (isset($requireData['is_admin']) && !empty($requireData['is_admin'])) {
  243. unset($requireData['user_id']);
  244. }
  245. $result = $this->publicServiceClient->getLetterOfComplaint($requireData);
  246. if($result['code']==200){
  247. foreach ($result['data']['rows']as $key=>$val){
  248. $result['data']['rows'][$key]['created_at'] = date("Y-m-d",strtotime($val['created_at']));
  249. }
  250. }
  251. return $result ? Result::success($result['data']) : Result::error($result['message']);
  252. }
  253. /**
  254. * 获取投诉举报信息
  255. * @return array
  256. */
  257. public function getLetterOfComplaintInfo()
  258. {
  259. $requireData = $this->request->all();
  260. $requireData['user_id'] = Context::get("UserId");
  261. if (isset($requireData['is_admin']) && !empty($requireData['is_admin'])) {
  262. unset($requireData['user_id']);
  263. }
  264. $result = $this->publicServiceClient->getLetterOfComplaintInfo($requireData);
  265. if ($result) {
  266. $result['data']['judgment'] = $result['data']['judgment'] ? json_decode($result['data']['judgment']) : '';
  267. $result['data']['audio_and_video'] = $result['data']['audio_and_video'] ? json_decode($result['data']['audio_and_video']) : '';
  268. $result['data']['contract'] = $result['data']['contract'] ? json_decode($result['data']['contract']) : '';
  269. $result['data']['qualifications'] = $result['data']['qualifications'] ? json_decode($result['data']['qualifications']) : '';
  270. }
  271. return $result ? Result::success($result['data']) : Result::error($result['message']);
  272. }
  273. /**
  274. * 删除投诉举报信息
  275. * @return array
  276. */
  277. public function delLetterOfComplaint()
  278. {
  279. $requireData = $this->request->all();
  280. $requireData['user_id'] = Context::get("UserId");
  281. if (isset($requireData['is_admin']) && !empty($requireData['is_admin'])) {
  282. unset($requireData['user_id']);
  283. }
  284. $result = $this->publicServiceClient->delLetterOfComplaint($requireData);
  285. return $result ? Result::success($result['data']) : Result::error($result['message']);
  286. }
  287. /**
  288. * 获取投诉分类信息
  289. * @return array
  290. */
  291. public function getLetterType()
  292. {
  293. $requireData = $this->request->all();
  294. $validator = $this->validationFactory->make(
  295. $requireData,
  296. [
  297. 'type' => 'required',
  298. ],
  299. [
  300. 'type.required' => '类型不能为空',
  301. ]
  302. );
  303. if ($validator->fails()) {
  304. $errorMessage = $validator->errors()->first();
  305. return Result::error($errorMessage);
  306. }
  307. $result = $this->publicServiceClient->getLetterType($requireData);
  308. $rep = PublicData::buildMenuTree($result['data']);
  309. return $rep ? Result::success($rep) : Result::error("查询失败");
  310. }
  311. /**
  312. * @return array
  313. */
  314. public function getLetterTypeChildren()
  315. {
  316. $requireData = $this->request->all();
  317. $validator = $this->validationFactory->make(
  318. $requireData,
  319. [
  320. 'type' => 'required',
  321. 'pid' => 'required',
  322. ],
  323. [
  324. 'type.required' => '类型不能为空',
  325. 'pid.required' => 'PID不能为空',
  326. ]
  327. );
  328. if ($validator->fails()) {
  329. $errorMessage = $validator->errors()->first();
  330. return Result::error($errorMessage);
  331. }
  332. $result = $this->publicServiceClient->getLetterType($requireData);
  333. return $result['code']==200 ? Result::success($result['data']) : Result::error("查询失败");
  334. }
  335. public function downloadFile(RequestInterface $request, ResponseInterface $response)
  336. {
  337. // 放开执行时限,避免大量文件导致的超时
  338. ignore_user_abort(true);
  339. @set_time_limit(0);
  340. //验证是否有传参数
  341. $requireData = $this->request->all();
  342. $validator = $this->validationFactory->make(
  343. $requireData,
  344. [
  345. 'files' => 'required',
  346. ],
  347. [
  348. 'files.required' => '文件不能为空',
  349. ]
  350. );
  351. if ($validator->fails()) {
  352. $errorMessage = $validator->errors()->first();
  353. return Result::error($errorMessage);
  354. }
  355. $requireData['fileName'] = $requireData['fileName'] ?? '政讯通';
  356. //打包文件
  357. $zip = new ZipArchive();
  358. $fileType = 'zip';
  359. $date = date('Ymd');
  360. $filePath = $fileType . DIRECTORY_SEPARATOR . $date;
  361. // 使用绝对路径并规范化
  362. $allDir = BASE_PATH . DIRECTORY_SEPARATOR . 'public' . DIRECTORY_SEPARATOR . $filePath;
  363. $allDir = realpath($allDir) ?: $allDir;
  364. // 打印目录路径以便调试
  365. error_log("DownloadFile: Full directory path: $allDir");
  366. if (!is_dir($allDir)) {
  367. if (!mkdir($allDir, 0755, true)) {
  368. error_log("DownloadFile: Failed to create directory: $allDir");
  369. return Result::error('创建文件夹失败');
  370. }
  371. }
  372. // 生成绝对路径的ZIP文件名
  373. $zipFileName = $allDir . DIRECTORY_SEPARATOR . $requireData['fileName'] . time() . mt_rand(1, 1000000) . '.zip';
  374. error_log("DownloadFile: ZIP file path: $zipFileName");
  375. error_log("DownloadFile: Directory exists: " . (is_dir($allDir) ? 'yes' : 'no'));
  376. error_log("DownloadFile: Directory writable: " . (is_writable($allDir) ? 'yes' : 'no'));
  377. // 添加OVERWRITE标志确保文件可以被创建
  378. if ($zip->open($zipFileName, ZipArchive::CREATE | ZipArchive::OVERWRITE) === true) {
  379. // 将要下载的文件逐个添加到zip文件中
  380. /** @var array<string> $files */
  381. $files = [];
  382. if (is_array($requireData['files'])) {
  383. $files = $requireData['files'];
  384. } elseif (is_string($requireData['files'])) {
  385. $files = [$requireData['files']];
  386. }
  387. // 添加进度日志
  388. error_log("DownloadFile: Processing " . count($files) . " files");
  389. $addedCount = 0;
  390. $failedCount = 0;
  391. foreach ($files as $key => $filePathu) {
  392. if (!is_string($filePathu)) {
  393. continue;
  394. }
  395. // 生成文件名:key + 1
  396. $innerFileName = $requireData['names'][$key] ?? 'file_' . ($key + 1); //($key + 1) . $this->getFileExtension($filePathu);
  397. // 处理远程URL文件
  398. if (filter_var($filePathu, FILTER_VALIDATE_URL)) {
  399. error_log("DownloadFile: Processing remote file $key: $filePathu");
  400. $this->addRemoteFileToZip($zip, $filePathu, $innerFileName);
  401. $addedCount++;
  402. } else {
  403. // 处理本地文件
  404. error_log("DownloadFile: Processing local file $key: $filePathu");
  405. if (!file_exists($filePathu)) {
  406. // 尝试添加public前缀
  407. $fullPath = 'public/' . $filePathu;
  408. if (!file_exists($fullPath)) {
  409. var_dump("local路径:",BASE_PATH);
  410. // 尝试使用绝对路径
  411. $fullPath = BASE_PATH . '/public/' . $filePathu;
  412. if (!file_exists($fullPath)) {
  413. error_log("DownloadFile: File not found: $filePathu");
  414. $failedCount++;
  415. continue; // 跳过不存在的文件
  416. }
  417. }
  418. $filePathu = $fullPath;
  419. }
  420. // 确保文件存在且可读
  421. if (is_file($filePathu) && is_readable($filePathu)) {
  422. if ($zip->addFile($filePathu, $innerFileName)) {
  423. $addedCount++;
  424. error_log("DownloadFile: Successfully added local file: $innerFileName");
  425. } else {
  426. $failedCount++;
  427. error_log("DownloadFile: Failed to add local file: $innerFileName");
  428. }
  429. } else {
  430. $failedCount++;
  431. error_log("DownloadFile: File not readable: $filePathu");
  432. }
  433. }
  434. }
  435. error_log("DownloadFile: Summary - Added: $addedCount, Failed: $failedCount");
  436. // 关闭zip文件
  437. $closeResult = $zip->close();
  438. error_log("DownloadFile: ZIP close result: " . ($closeResult ? 'success' : 'failed'));
  439. if (!$closeResult) {
  440. error_log("DownloadFile: Failed to close ZIP file: $zipFileName");
  441. return Result::error('ZIP文件关闭失败');
  442. }
  443. // 检查ZIP文件是否创建成功
  444. if (!file_exists($zipFileName)) {
  445. error_log("DownloadFile: ZIP file does not exist after close: $zipFileName");
  446. return Result::error('ZIP文件创建失败');
  447. }
  448. $zipFileSize = filesize($zipFileName);
  449. if ($zipFileSize === false || $zipFileSize === 0) {
  450. error_log("DownloadFile: ZIP file is empty or cannot get size: $zipFileName");
  451. return Result::error('ZIP文件为空');
  452. }
  453. error_log("DownloadFile: ZIP file created successfully: $zipFileName (size: $zipFileSize bytes)");
  454. // 将zip文件提供给用户进行下载
  455. $fileUrlName = explode("public", $zipFileName);
  456. if (count($fileUrlName) < 2) {
  457. return Result::error('无法生成下载链接');
  458. }
  459. $downloadUrl = env('HOST') . $fileUrlName[1];
  460. error_log("DownloadFile: Download URL: $downloadUrl");
  461. return Result::success(['fileUrl' => $downloadUrl]);
  462. } else {
  463. return Result::error('无法创建zip文件');
  464. }
  465. if (!is_dir($allDir)) {
  466. if (!mkdir($allDir, 0755, true)) {
  467. error_log("DownloadFile: Failed to create directory: $allDir");
  468. return Result::error('创建文件夹失败');
  469. }
  470. }
  471. // 生成绝对路径的ZIP文件名
  472. $zipFileName = $allDir . DIRECTORY_SEPARATOR . $requireData['fileName'] . time() . mt_rand(1, 1000000) . '.zip';
  473. // $zipFileName = 'public/zip/files.zip';
  474. error_log("DownloadFile: ZIP file path: $zipFileName");
  475. error_log("DownloadFile: Directory exists: " . (is_dir($allDir) ? 'yes' : 'no'));
  476. error_log("DownloadFile: Directory writable: " . (is_writable($allDir) ? 'yes' : 'no'));
  477. // 添加OVERWRITE标志确保文件可以被创建
  478. if ($zip->open($zipFileName, ZipArchive::CREATE | ZipArchive::OVERWRITE) === true) {
  479. // 将要下载的文件逐个添加到zip文件中
  480. /** @var array<string> $files */
  481. $files = [];
  482. if (is_array($requireData['files'])) {
  483. $files = $requireData['files'];
  484. } elseif (is_string($requireData['files'])) {
  485. $files = [$requireData['files']];
  486. }
  487. // 添加进度日志
  488. error_log("DownloadFile: Processing " . count($files) . " files");
  489. $addedCount = 0;
  490. $failedCount = 0;
  491. foreach ($files as $key => $filePathu) {
  492. if (!is_string($filePathu)) {
  493. continue;
  494. }
  495. // 生成文件名:key + 1
  496. $innerFileName = $requireData['names'][$key] ?? 'file_' . ($key + 1); //($key + 1) . $this->getFileExtension($filePathu);
  497. // 处理远程URL文件
  498. if (filter_var($filePathu, FILTER_VALIDATE_URL)) {
  499. error_log("DownloadFile: Processing remote file $key: $filePathu");
  500. $this->addRemoteFileToZip($zip, $filePathu, $innerFileName);
  501. $addedCount++;
  502. } else {
  503. // 处理本地文件
  504. error_log("DownloadFile: Processing local file $key: $filePathu");
  505. if (!file_exists($filePathu)) {
  506. // 尝试添加public前缀
  507. $fullPath = 'public/' . $filePathu;
  508. if (!file_exists($fullPath)) {
  509. var_dump("local路径:",BASE_PATH);
  510. // 尝试使用绝对路径
  511. $fullPath = BASE_PATH . '/public/' . $filePathu;
  512. if (!file_exists($fullPath)) {
  513. error_log("DownloadFile: File not found: $filePathu");
  514. $failedCount++;
  515. continue; // 跳过不存在的文件
  516. }
  517. }
  518. $filePathu = $fullPath;
  519. }
  520. // 确保文件存在且可读
  521. if (is_file($filePathu) && is_readable($filePathu)) {
  522. if ($zip->addFile($filePathu, $innerFileName)) {
  523. $addedCount++;
  524. error_log("DownloadFile: Successfully added local file: $innerFileName");
  525. } else {
  526. $failedCount++;
  527. error_log("DownloadFile: Failed to add local file: $innerFileName");
  528. }
  529. } else {
  530. $failedCount++;
  531. error_log("DownloadFile: File not readable: $filePathu");
  532. }
  533. }
  534. }
  535. error_log("DownloadFile: Summary - Added: $addedCount, Failed: $failedCount");
  536. // 关闭zip文件
  537. $closeResult = $zip->close();
  538. error_log("DownloadFile: ZIP close result: " . ($closeResult ? 'success' : 'failed'));
  539. if (!$closeResult) {
  540. error_log("DownloadFile: Failed to close ZIP file: $zipFileName");
  541. return Result::error('ZIP文件关闭失败');
  542. }
  543. // 检查ZIP文件是否创建成功
  544. if (!file_exists($zipFileName)) {
  545. error_log("DownloadFile: ZIP file does not exist after close: $zipFileName");
  546. return Result::error('ZIP文件创建失败');
  547. }
  548. $zipFileSize = filesize($zipFileName);
  549. if ($zipFileSize === false || $zipFileSize === 0) {
  550. error_log("DownloadFile: ZIP file is empty or cannot get size: $zipFileName");
  551. return Result::error('ZIP文件为空');
  552. }
  553. error_log("DownloadFile: ZIP file created successfully: $zipFileName (size: $zipFileSize bytes)");
  554. // 将zip文件提供给用户进行下载
  555. $fileUrlName = explode("public", $zipFileName);
  556. if (count($fileUrlName) < 2) {
  557. return Result::error('无法生成下载链接');
  558. }
  559. $downloadUrl = env('HOST') . $fileUrlName[1];
  560. error_log("DownloadFile: Download URL: $downloadUrl");
  561. return Result::success(['fileUrl' => $downloadUrl]);
  562. } else {
  563. return Result::error('无法创建zip文件');
  564. }
  565. }
  566. /**
  567. * 添加远程文件到zip
  568. */
  569. private function addRemoteFileToZip($zip, $url, $fileName = null): void
  570. {
  571. var_dump("$$$$$$$$$$$$$$$$$$$$");
  572. $tempFile = null;
  573. try {
  574. // 创建临时文件
  575. $tempFile = tempnam(sys_get_temp_dir(), 'remote_file_');
  576. if ($tempFile === false) {
  577. error_log("DownloadFile: Failed to create temp file for URL: $url");
  578. return;
  579. }
  580. // 设置更长的超时时间和更好的下载参数
  581. $context = stream_context_create([
  582. 'http' => [
  583. 'timeout' => 120, // 增加到120秒
  584. 'user_agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
  585. 'follow_location' => true, // 允许重定向
  586. 'max_redirects' => 5,
  587. 'protocol_version' => 1.1,
  588. 'header' => [
  589. 'Accept: */*',
  590. 'Accept-Encoding: gzip, deflate',
  591. 'Connection: keep-alive'
  592. ]
  593. ],
  594. 'ssl' => [
  595. 'verify_peer' => false,
  596. 'verify_peer_name' => false,
  597. 'allow_self_signed' => true
  598. ]
  599. ]);
  600. // 使用cURL作为备选方案
  601. $fileContent = $this->downloadFileWithCurl($url);
  602. if ($fileContent === false) {
  603. // 如果cURL失败,尝试file_get_contents
  604. $fileContent = file_get_contents($url, false, $context);
  605. }
  606. if ($fileContent === false) {
  607. error_log("DownloadFile: Failed to download remote file: " . $url);
  608. return; // 下载失败,跳过
  609. }
  610. // 验证文件内容
  611. if (empty($fileContent) || strlen($fileContent) < 100) {
  612. error_log("DownloadFile: Downloaded file is too small or empty: " . $url . " (size: " . strlen($fileContent) . ")");
  613. return;
  614. }
  615. // 写入临时文件并验证
  616. $bytesWritten = file_put_contents($tempFile, $fileContent);
  617. if ($bytesWritten === false || $bytesWritten !== strlen($fileContent)) {
  618. error_log("DownloadFile: Failed to write file content: " . $url . " (written: $bytesWritten, expected: " . strlen($fileContent) . ")");
  619. return;
  620. }
  621. // 验证文件是否可读
  622. if (!is_readable($tempFile) || filesize($tempFile) < 100) {
  623. error_log("DownloadFile: Temporary file is not readable or too small: " . $tempFile . " (size: " . filesize($tempFile) . ")");
  624. return;
  625. }
  626. // 获取文件名
  627. if ($fileName === null) {
  628. $fileName = basename(parse_url($url, PHP_URL_PATH));
  629. if (empty($fileName)) {
  630. $fileName = 'remote_file_' . time() . '.jpg';
  631. }
  632. }
  633. // 添加到zip并验证
  634. if (!$zip->addFile($tempFile, $fileName)) {
  635. error_log("DownloadFile: Failed to add file to zip: " . $fileName);
  636. return;
  637. }
  638. error_log("DownloadFile: Successfully added remote file to ZIP: $fileName");
  639. } catch (\Exception $e) {
  640. // 记录错误但继续处理其他文件
  641. error_log("DownloadFile: Exception while downloading remote file: " . $url . " - " . $e->getMessage());
  642. } finally {
  643. // 清理临时文件
  644. if ($tempFile !== null && file_exists($tempFile)) {
  645. @unlink($tempFile);
  646. }
  647. }
  648. }
  649. /**
  650. * 使用cURL下载文件
  651. */
  652. private function downloadFileWithCurl($url): string|false
  653. {
  654. if (!function_exists('curl_init')) {
  655. return false;
  656. }
  657. $ch = curl_init();
  658. curl_setopt_array($ch, [
  659. CURLOPT_URL => $url,
  660. CURLOPT_RETURNTRANSFER => true,
  661. CURLOPT_TIMEOUT => 120, // 120秒超时
  662. CURLOPT_CONNECTTIMEOUT => 30, // 连接超时30秒
  663. CURLOPT_FOLLOWLOCATION => true,
  664. CURLOPT_MAXREDIRS => 5,
  665. CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
  666. CURLOPT_SSL_VERIFYPEER => false,
  667. CURLOPT_SSL_VERIFYHOST => false,
  668. CURLOPT_ENCODING => '', // 自动处理编码
  669. CURLOPT_HTTPHEADER => [
  670. 'Accept: image/*, */*',
  671. 'Accept-Encoding: gzip, deflate',
  672. 'Connection: keep-alive',
  673. 'Cache-Control: no-cache'
  674. ]
  675. ]);
  676. $content = curl_exec($ch);
  677. $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  678. $contentLength = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
  679. $actualLength = strlen($content);
  680. $error = curl_error($ch);
  681. curl_close($ch);
  682. // 检查HTTP状态码和内容长度
  683. if ($content === false || $httpCode !== 200) {
  684. error_log("DownloadFile: cURL download failed for URL: $url, HTTP Code: $httpCode, Error: $error");
  685. return false;
  686. }
  687. // 检查内容长度是否匹配
  688. if ($contentLength > 0 && $actualLength !== $contentLength) {
  689. error_log("DownloadFile: Content length mismatch for URL: $url, Expected: $contentLength, Actual: $actualLength");
  690. return false;
  691. }
  692. // 检查文件是否为空或太小
  693. if (empty($content) || $actualLength < 100) {
  694. error_log("DownloadFile: File too small or empty for URL: $url, Size: $actualLength");
  695. return false;
  696. }
  697. return $content;
  698. }
  699. /**
  700. * 获取文件扩展名
  701. */
  702. private function getFileExtension($filePath): string
  703. {
  704. $extension = pathinfo($filePath, PATHINFO_EXTENSION);
  705. if (empty($extension)) {
  706. // 如果是URL,尝试从URL中获取扩展名
  707. if (filter_var($filePath, FILTER_VALIDATE_URL)) {
  708. $parsedUrl = parse_url($filePath, PHP_URL_PATH);
  709. $extension = pathinfo($parsedUrl, PATHINFO_EXTENSION);
  710. }
  711. // 如果还是没有扩展名,默认为jpg
  712. if (empty($extension)) {
  713. $extension = 'jpg';
  714. }
  715. }
  716. return '.' . $extension;
  717. }
  718. /**
  719. * 检测是否被处理
  720. * @return array
  721. */
  722. public function checkMeasure()
  723. {
  724. $requireData = $this->request->all();
  725. $validator = $this->validationFactory->make(
  726. $requireData,
  727. [
  728. 'id' => 'required',
  729. ],
  730. [
  731. 'id.required' => 'id不能为空',
  732. ]
  733. );
  734. if ($validator->fails()) {
  735. $errorMessage = $validator->errors()->first();
  736. return Result::error($errorMessage);
  737. }
  738. $requireData['user_id'] = Context::get("UserId");
  739. $result = $this->publicServiceClient->checkMeasure($requireData);
  740. return $result['code'] == 200 ? Result::success() : Result::error("已经处理了");
  741. }
  742. /**
  743. * 获取职能部门
  744. * @return void
  745. */
  746. public function getDepartment()
  747. {
  748. $requireData = $this->request->all();
  749. $validator = $this->validationFactory->make(
  750. $requireData,
  751. [
  752. 'pid' => 'required',
  753. ],
  754. [
  755. 'pid.required' => 'id不能为空',
  756. ]
  757. );
  758. if ($validator->fails()) {
  759. $errorMessage = $validator->errors()->first();
  760. return Result::error($errorMessage);
  761. }
  762. $result = $this->publicServiceClient->getDepartment($requireData);
  763. return $result['code'] == 200 ? Result::success($result['data']) : Result::error("查询失败");
  764. }
  765. /**
  766. * 获取职能部门
  767. * @return array
  768. */
  769. public function getZhinengbumenList()
  770. {
  771. // 获取请求参数
  772. $requireData = $this->request->all();
  773. // 参数验证
  774. $validator = $this->validationFactory->make(
  775. $requireData,
  776. [
  777. 'page' => 'integer|min:1',
  778. 'pagesize' => 'integer|min:1',
  779. 'search' => 'string|nullable',
  780. ],
  781. [
  782. 'page.integer' => 'page 必须是整数',
  783. 'page.min' => 'page 必须大于等于 1',
  784. 'pagesize.integer' => 'pagesize 必须是整数',
  785. 'pagesize.min' => 'pagesize 必须大于等于 1',
  786. 'search.string' => 'search 必须是字符串',
  787. ]
  788. );
  789. if ($validator->fails()) {
  790. $errorMessage = $validator->errors()->first();
  791. return Result::error($errorMessage);
  792. }
  793. // 添加用户 ID
  794. $requireData['user_id'] = Context::get("UserId");
  795. // 调用服务客户端方法获取分页数据
  796. $result = $this->publicServiceClient->getZhinengbumenList($requireData);
  797. // 处理结果
  798. return $result['code'] == 200 ? Result::success($result['data']) : Result::error("查询失败");
  799. }
  800. /**
  801. * 添加职能部门
  802. * @return array
  803. */
  804. public function addZhinengbumen()
  805. {
  806. // 获取请求参数
  807. $requireData = $this->request->all();
  808. $validator = $this->validationFactory->make(
  809. $requireData,
  810. [
  811. 'name' => 'required|string|regex:/^[\x{4e00}-\x{9fa5}]+$/u',
  812. 'pid' => 'required|integer',
  813. ],
  814. [
  815. 'name.required' => 'name 不能为空',
  816. 'name.string' => 'name 必须是字符串',
  817. 'name.regex' => 'name 必须是汉字',
  818. 'pid.required' => 'pid 不能为空',
  819. 'pid.integer' => 'pid 必须是整数',
  820. ]
  821. );
  822. if ($validator->fails()) {
  823. $errorMessage = $validator->errors()->first();
  824. return Result::error($errorMessage);
  825. }
  826. // $requireData['user_id'] = Context::get("UserId");
  827. $result = $this->publicServiceClient->addZhinengbumen($requireData);
  828. return $result['code'] == 200 ? Result::success() : Result::error("添加失败");
  829. }
  830. /**
  831. * 删除职能部门
  832. * @return array
  833. */
  834. public function delZhinengbumen()
  835. {
  836. $requireData = $this->request->all();
  837. $validator = $this->validationFactory->make(
  838. $requireData,
  839. [
  840. 'id' => 'required|integer',
  841. ],
  842. [
  843. 'id.required' => 'id 不能为空',
  844. 'id.integer' => 'id 必须是整数',
  845. ]
  846. );
  847. if ($validator->fails()) {
  848. $errorMessage = $validator->errors()->first();
  849. return Result::error($errorMessage);
  850. }
  851. $requireData['user_id'] = Context::get("UserId");
  852. $result = $this->publicServiceClient->delZhinengbumen($requireData);
  853. return $result['code'] == 200 ? Result::success() : Result::error("删除失败");
  854. }
  855. /**
  856. * 职能部门详情
  857. * @return array
  858. */
  859. public function getZhinengbumen()
  860. {
  861. $requireData = $this->request->all();
  862. $validator = $this->validationFactory->make(
  863. $requireData,
  864. [
  865. 'id' => 'required|integer',
  866. ],
  867. [
  868. 'id.required' => 'id 不能为空',
  869. 'id.integer' => 'id 必须是整数',
  870. ]
  871. );
  872. if ($validator->fails()) {
  873. $errorMessage = $validator->errors()->first();
  874. return Result::error($errorMessage);
  875. }
  876. $requireData['user_id'] = Context::get("UserId");
  877. $result = $this->publicServiceClient->getZhinengbumen($requireData);
  878. return $result['code'] == 200 ? Result::success($result['data']) : Result::error("查询失败");
  879. }
  880. /**
  881. * 获取职能部门某pid的所有子级,默认0级
  882. * @return array
  883. */
  884. public function getPidZhinengbumen()
  885. {
  886. // 获取请求参数
  887. $requireData = $this->request->all();
  888. // 参数验证
  889. $validator = $this->validationFactory->make(
  890. $requireData,
  891. [
  892. 'pid' => 'integer|min:0',
  893. ],
  894. [
  895. 'pid.integer' => 'pid 必须是整数',
  896. 'pid.min' => 'pid 必须大于等于 0',
  897. ]
  898. );
  899. if ($validator->fails()) {
  900. $errorMessage = $validator->errors()->first();
  901. return Result::error($errorMessage);
  902. }
  903. $requireData['user_id'] = Context::get("UserId");
  904. $result = $this->publicServiceClient->getPidZhinengbumen($requireData);
  905. return $result['code'] == 200 ? Result::success($result['data']) : Result::error("查询失败");
  906. }
  907. /**
  908. * 修改职能部门名称
  909. * @return array
  910. */
  911. public function modZhinengbumen()
  912. {
  913. $requireData = $this->request->all();
  914. // 参数验证
  915. $validator = $this->validationFactory->make(
  916. $requireData,
  917. [
  918. 'id' => 'required|integer',
  919. 'name' => 'required|string|regex:/^[\x{4e00}-\x{9fa5}]+$/u',
  920. ],
  921. [
  922. 'id.required' => 'id 不能为空',
  923. 'id.integer' => 'id 必须是整数',
  924. 'name.required' => 'name 不能为空',
  925. 'name.string' => 'name 必须是字符串',
  926. 'name.regex' => 'name 必须是汉字',
  927. ]
  928. );
  929. if ($validator->fails()) {
  930. $errorMessage = $validator->errors()->first();
  931. return Result::error($errorMessage);
  932. }
  933. $requireData['user_id'] = Context::get("UserId");
  934. $result = $this->publicServiceClient->modZhinengbumen($requireData);
  935. return $result['code'] == 200 ? Result::success() : Result::error("修改失败");
  936. }
  937. /**
  938. * 获取风格
  939. * @return void
  940. */
  941. public function getTemplateClassList()
  942. {
  943. $requireData = $this->request->all();
  944. $validator = $this->validationFactory->make(
  945. $requireData,
  946. [
  947. 'page' =>'required|integer',
  948. 'pageSize' =>'required|integer',
  949. ],
  950. [
  951. 'page.required' => '页码不能为空',
  952. 'page.integer' => '页码必须为整数',
  953. 'pageSize.required' => '每页条数不能为空',
  954. 'pageSize.integer' => '每页条数必须为整数',
  955. ]
  956. );
  957. if ($validator->fails()) {
  958. $errorMessage = $validator->errors()->first();
  959. return Result::error($errorMessage);
  960. }
  961. // return Result::success($requireData);
  962. $result = $this->publicServiceClient->getTemplateClassList($requireData);
  963. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  964. }
  965. /**
  966. * 添加风格
  967. * @return void
  968. */
  969. public function addTemplateClass()
  970. {
  971. $requireData = $this->request->all();
  972. $validator = $this->validationFactory->make(
  973. $requireData,
  974. [
  975. 'name' => 'required',
  976. 'keyword' =>'required',
  977. 'class_id' =>'required',
  978. ],
  979. [
  980. 'name.required' => '风格名称不能为空',
  981. 'keyword.required' => '风格关键词不能为空',
  982. 'class_id' =>'风格编号不能为空'
  983. ]
  984. );
  985. if ($validator->fails()) {
  986. $errorMessage = $validator->errors()->first();
  987. return Result::error($errorMessage);
  988. }
  989. $result = $this->publicServiceClient->addTemplateClass($requireData);
  990. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  991. }
  992. /**
  993. * 更新风格
  994. * @return array
  995. */
  996. public function upTemplateClass()
  997. {
  998. $requireData = $this->request->all();
  999. $validator = $this->validationFactory->make(
  1000. $requireData,
  1001. [
  1002. 'name' => 'required',
  1003. 'id' => 'required',
  1004. 'keyword' =>'required',
  1005. ],
  1006. [
  1007. 'name.required' => '风格名称不能为空',
  1008. 'id.required' => '风格ID不能为空',
  1009. 'keyword.required' => '风格关键词不能为空'
  1010. ]
  1011. );
  1012. if ($validator->fails()) {
  1013. $errorMessage = $validator->errors()->first();
  1014. return Result::error($errorMessage);
  1015. }
  1016. $result = $this->publicServiceClient->upTemplateClass($requireData);
  1017. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1018. }
  1019. /**
  1020. * 删除风格
  1021. * @return array
  1022. */
  1023. public function delTemplateClass()
  1024. {
  1025. $requireData = $this->request->all();
  1026. $validator = $this->validationFactory->make(
  1027. $requireData,
  1028. [
  1029. 'id' => 'required'
  1030. ],
  1031. [
  1032. 'id.required' => '风格id不能为空'
  1033. ]
  1034. );
  1035. if ($validator->fails()) {
  1036. $errorMessage = $validator->errors()->first();
  1037. return Result::error($errorMessage);
  1038. }
  1039. $result = $this->publicServiceClient->delTemplateClass($requireData);
  1040. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1041. }
  1042. /**
  1043. * 获取风格下拉框
  1044. * @return void
  1045. */
  1046. public function getTemplateClass()
  1047. {
  1048. $requireData = $this->request->all();
  1049. $result = $this->publicServiceClient->getTemplateClass($requireData);
  1050. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1051. }
  1052. /**
  1053. * 获取皮肤列表
  1054. * @return array
  1055. */
  1056. public function getTemplateList()
  1057. {
  1058. $requireData = $this->request->all();
  1059. $validator = $this->validationFactory->make(
  1060. $requireData,
  1061. [
  1062. 'page' => 'required|integer|min:1',
  1063. 'page_size' => 'required|integer|min:1',
  1064. 'template_name' => 'string|nullable',
  1065. 'template_class_id' =>'integer|nullable',
  1066. ],
  1067. [
  1068. 'page.required' => 'page 不能为空',
  1069. 'page.integer' => 'page 必须是整数',
  1070. 'page.min' => 'page 必须大于等于 1',
  1071. 'page_size.required' => 'page_size 不能为空',
  1072. 'page_size.integer' => 'page_size 必须是整数',
  1073. 'page_size.min' => 'page_size 必须大于等于 1',
  1074. 'template_name.string' => 'template_name 必须是字符串',
  1075. 'template_class_id.integer' => 'template_class_id 必须是整数',
  1076. ]
  1077. );
  1078. if ($validator->fails()) {
  1079. $errorMessage = $validator->errors()->first();
  1080. return Result::error($errorMessage);
  1081. }
  1082. $requireData['user_id'] = Context::get("UserId");
  1083. $result = $this->publicServiceClient->getTemplateList($requireData);
  1084. return $result['code'] == 200 ? Result::success($result['data']) : Result::error("查询失败");
  1085. }
  1086. /**
  1087. * 获取皮肤详情
  1088. * @return array
  1089. */
  1090. public function getTemplateInfo()
  1091. {
  1092. $requireData = $this->request->all();
  1093. $validator = $this->validationFactory->make(
  1094. $requireData,
  1095. [
  1096. 'id' => 'required|integer',
  1097. ],
  1098. [
  1099. 'id.required' => 'id 不能为空',
  1100. 'id.integer' => 'id 必须是整数',
  1101. ]
  1102. );
  1103. if ($validator->fails()) {
  1104. $errorMessage = $validator->errors()->first();
  1105. return Result::error($errorMessage);
  1106. }
  1107. $requireData['user_id'] = Context::get("UserId");
  1108. $result = $this->publicServiceClient->getTemplateInfo($requireData);
  1109. return $result['code'] == 200 ? Result::success($result['data']) : Result::error("查询失败");
  1110. }
  1111. /**
  1112. * 删除皮肤
  1113. */
  1114. public function delTemplate()
  1115. {
  1116. $requireData = $this->request->all();
  1117. var_dump($requireData);
  1118. $validator = $this->validationFactory->make(
  1119. $requireData,
  1120. [
  1121. 'id' => 'required|integer',
  1122. ],
  1123. [
  1124. 'id.required' => 'id 不能为空',
  1125. 'id.integer' => 'id 必须是整数',
  1126. ]
  1127. );
  1128. if ($validator->fails()) {
  1129. $errorMessage = $validator->errors()->first();
  1130. return Result::error($errorMessage);
  1131. }
  1132. $requireData['user_id'] = Context::get("UserId");
  1133. $result = $this->publicServiceClient->delTemplate($requireData);
  1134. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1135. }
  1136. /**
  1137. * 更新皮肤
  1138. */
  1139. public function updateTemplate()
  1140. {
  1141. $requireData = $this->request->all();
  1142. $validator = $this->validationFactory->make(
  1143. $requireData,
  1144. [
  1145. 'id' => 'required',
  1146. ],
  1147. [
  1148. 'id.required' => 'id不能为空',
  1149. ]
  1150. );
  1151. if ($validator->fails()) {
  1152. $errorMessage = $validator->errors()->first();
  1153. return Result::error($errorMessage);
  1154. }
  1155. $requireData['user_id'] = Context::get("UserId");
  1156. $result = $this->publicServiceClient->updateTemplate($requireData);
  1157. // var_dump($result,'1001010');
  1158. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1159. }
  1160. /**
  1161. * 新增皮肤
  1162. */
  1163. public function addTemplate()
  1164. {
  1165. $requireData = $this->request->all();
  1166. $validator = $this->validationFactory->make($requireData, [
  1167. 'template_name' => 'required',
  1168. 'template_class_id' => 'required',
  1169. 'template_img' => 'required',
  1170. 'template_keyword' =>'required',
  1171. 'template_id' =>'required',
  1172. ],
  1173. [
  1174. 'template_name.required' => '请输入皮肤名称',
  1175. 'template_class_id.required' => '请选择风格分类',
  1176. 'template_img.required' => '请上传皮肤图片',
  1177. 'template_keyword.required' => '请输入皮肤关键词',
  1178. 'template_id.required' => '请输入皮肤编号',
  1179. ]
  1180. );
  1181. if ($validator->fails()) {
  1182. $errorMessage = $validator->errors()->first();
  1183. return Result::error($errorMessage);
  1184. }
  1185. $requireData['user_id'] = Context::get("UserId");
  1186. $result = $this->publicServiceClient->addTemplate($requireData);
  1187. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1188. }
  1189. /**
  1190. * 新增通栏
  1191. */
  1192. public function addSector()
  1193. {
  1194. $requireData = $this->request->all();
  1195. $validator = $this->validationFactory->make(
  1196. $requireData,
  1197. [
  1198. // 'id' => 'required|integer',
  1199. 'template_id'=>'required|integer',
  1200. 'sector_name'=>'required|string',
  1201. 'page_type'=>'required',
  1202. 'sector_img'=>'required|string',
  1203. ],
  1204. [
  1205. // 'id.required' => 'id 不能为空',
  1206. // 'id.integer' => 'id 必须是整数',
  1207. 'template_id.required' => '皮肤id不能为空',
  1208. 'template_id.integer' => '皮肤id必须是整数',
  1209. 'sector_name.required' => '通栏名称不能为空',
  1210. 'sector_name.string' => '通栏名称必须是字符串',
  1211. 'sector_img.required' => '通栏图片不能为空',
  1212. 'sector_img.string' => '通栏代码必须是字符串',
  1213. 'page_type.required' => '页面类型不能为空',
  1214. ]
  1215. );
  1216. if ($validator->fails()) {
  1217. $errorMessage = $validator->errors()->first();
  1218. return Result::error($errorMessage);
  1219. }
  1220. $requireData['user_id'] = Context::get("UserId");
  1221. $result = $this->publicServiceClient->addSector($requireData);
  1222. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1223. }
  1224. /**
  1225. * 获取通栏信息
  1226. */
  1227. public function getSectorInfo()
  1228. {
  1229. $requireData = $this->request->all();
  1230. $validator = $this->validationFactory->make(
  1231. $requireData,
  1232. [
  1233. 'id' => 'required|integer',
  1234. ],
  1235. [
  1236. 'id.required' => 'id 不能为空',
  1237. 'id.integer' => 'id 必须是整数',
  1238. ]
  1239. );
  1240. if ($validator->fails()) {
  1241. $errorMessage = $validator->errors()->first();
  1242. return Result::error($errorMessage);
  1243. }
  1244. $requireData['user_id'] = Context::get("UserId");
  1245. $result = $this->publicServiceClient->getSectorInfo($requireData);
  1246. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1247. }
  1248. /**
  1249. * 删除通栏
  1250. */
  1251. public function delSector()
  1252. {
  1253. $requireData = $this->request->all();
  1254. $validator = $this->validationFactory->make(
  1255. $requireData,
  1256. [
  1257. 'id' => 'required|integer',
  1258. ],
  1259. [
  1260. 'id.required' => 'id 不能为空',
  1261. 'id.integer' => 'id 必须是整数',
  1262. ]
  1263. );
  1264. if ($validator->fails()) {
  1265. $errorMessage = $validator->errors()->first();
  1266. return Result::error($errorMessage);
  1267. }
  1268. $requireData['user_id'] = Context::get("UserId");
  1269. $result = $this->publicServiceClient->delSector($requireData);
  1270. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1271. }
  1272. /**
  1273. * 更新通栏
  1274. */
  1275. public function updateSector()
  1276. {
  1277. $requireData = $this->request->all();
  1278. $validator = $this->validationFactory->make(
  1279. $requireData,
  1280. [
  1281. 'id' => 'required|integer',
  1282. ],
  1283. [
  1284. 'id.required' => 'id 不能为空',
  1285. 'id.integer' => 'id 必须是整数',
  1286. ]
  1287. );
  1288. if ($validator->fails()) {
  1289. $errorMessage = $validator->errors()->first();
  1290. return Result::error($errorMessage);
  1291. }
  1292. $requireData['user_id'] = Context::get("UserId");
  1293. $result = $this->publicServiceClient->updateSector($requireData);
  1294. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1295. }
  1296. /**
  1297. * 获取所有皮肤
  1298. */
  1299. public function getAllTemplate()
  1300. {
  1301. $requireData = $this->request->all();
  1302. $requireData['user_id'] = Context::get("UserId");
  1303. $result = $this->publicServiceClient->getAllTemplate($requireData);
  1304. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1305. }
  1306. /**
  1307. * 获取所有尺寸
  1308. */
  1309. public function getAllSize()
  1310. {
  1311. $requireData = $this->request->all();
  1312. $requireData['user_id'] = Context::get("UserId");
  1313. $result = $this->publicServiceClient->getAllSize($requireData);
  1314. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1315. }
  1316. /**
  1317. * 获取通栏信息列表
  1318. */
  1319. public function getSectorList(){
  1320. $requireData = $this->request->all();
  1321. $validator = $this->validationFactory->make(
  1322. $requireData,
  1323. [
  1324. 'page' => 'required|integer|min:1',
  1325. 'page_size' => 'required|integer|min:1',
  1326. ],
  1327. [
  1328. 'page.required' => 'page 不能为空',
  1329. 'page.integer' => 'page 必须是整数',
  1330. 'page.min' => 'page 必须大于等于 1',
  1331. 'page_size.required' => 'page_size 不能为空',
  1332. 'page_size.integer' => 'page_size 必须是整数',
  1333. 'page_size.min' => 'page_size 必须大于等于 1',
  1334. ]
  1335. );
  1336. if ($validator->fails()) {
  1337. $errorMessage = $validator->errors()->first();
  1338. return Result::error($errorMessage);
  1339. }
  1340. $requireData['user_id'] = Context::get("UserId");
  1341. $result = $this->publicServiceClient->getSectorList($requireData);
  1342. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1343. }
  1344. /*
  1345. * 获取通栏列表
  1346. */
  1347. public function getComponentInfo()
  1348. {
  1349. $requireData = $this->request->all();
  1350. $validator = $this->validationFactory->make(
  1351. $requireData,
  1352. [
  1353. 'id' => 'required|integer',
  1354. ],
  1355. [
  1356. 'id.required' => 'id 不能为空',
  1357. 'id.integer' => 'id 必须是整数',
  1358. ]
  1359. );
  1360. if ($validator->fails()) {
  1361. $errorMessage = $validator->errors()->first();
  1362. return Result::error($errorMessage);
  1363. }
  1364. $requireData['user_id'] = Context::get("UserId");
  1365. $result = $this->publicServiceClient->getComponentInfo($requireData);
  1366. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1367. }
  1368. /**
  1369. * 删除通栏
  1370. */
  1371. public function delComponent()
  1372. {
  1373. $requireData = $this->request->all();
  1374. $validator = $this->validationFactory->make(
  1375. $requireData,
  1376. [
  1377. 'id' => 'required|integer',
  1378. ],
  1379. [
  1380. 'id.required' => 'id 不能为空',
  1381. 'id.integer' => 'id 必须是整数',
  1382. ]
  1383. );
  1384. if ($validator->fails()) {
  1385. $errorMessage = $validator->errors()->first();
  1386. return Result::error($errorMessage);
  1387. }
  1388. $requireData['user_id'] = Context::get("UserId");
  1389. $result = $this->publicServiceClient->delComponent($requireData);
  1390. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1391. }
  1392. public function addComponent()
  1393. {
  1394. $requireData = $this->request->all();
  1395. $validator = $this->validationFactory->make(
  1396. $requireData,
  1397. [
  1398. 'component_name' => 'required|string',
  1399. 'component_type' => 'required|integer',
  1400. 'component_img' => 'required|string',
  1401. 'type_id' => 'required|integer',
  1402. ],
  1403. [
  1404. 'component_name.required' => '组件名称不能为空',
  1405. 'component_name.string' => '组件名称必须是字符串',
  1406. 'component_type.required' => '组件编号不能为空',
  1407. 'component_type.integer' => '组件编号必须是整数',
  1408. 'component_img.required' => '组件图片不能为空',
  1409. 'component_img.string' => '组件图片必须是字符串',
  1410. 'type_id.required' => '组件类型不能为空',
  1411. 'type_id.integer' => '组件类型必须是整数',
  1412. ]
  1413. );
  1414. if ($validator->fails()) {
  1415. $errorMessage = $validator->errors()->first();
  1416. return Result::error($errorMessage);
  1417. }
  1418. // $requireData['user_id'] = Context::get("UserId");
  1419. $result = $this->publicServiceClient->addComponent($requireData);
  1420. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1421. }
  1422. public function getComponentList()
  1423. {
  1424. $requireData = $this->request->all();
  1425. $validator = $this->validationFactory->make(
  1426. $requireData,
  1427. [
  1428. 'page' => 'required|integer|min:1',
  1429. 'page_size' => 'required|integer|min:1',
  1430. ],
  1431. [
  1432. 'page.required' => 'page 不能为空',
  1433. 'page.integer' => 'page 必须是整数',
  1434. 'page.min' => 'page 必须大于等于 1',
  1435. 'page_size.required' => 'page_size 不能为空',
  1436. 'page_size.integer' => 'page_size 必须是整数',
  1437. 'page_size.min' => 'page_size 必须大于等于 1',
  1438. ]
  1439. );
  1440. if ($validator->fails()) {
  1441. $errorMessage = $validator->errors()->first();
  1442. return Result::error($errorMessage);
  1443. }
  1444. $requireData['user_id'] = Context::get("UserId");
  1445. $result = $this->publicServiceClient->getComponentList($requireData);
  1446. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1447. }
  1448. public function updateComponent()
  1449. {
  1450. $requireData = $this->request->all();
  1451. $validator = $this->validationFactory->make(
  1452. $requireData,
  1453. [
  1454. 'id' => 'required|integer',
  1455. ],
  1456. [
  1457. 'id.required' => 'id 不能为空',
  1458. 'id.integer' => 'id 必须是整数',
  1459. ]
  1460. );
  1461. if ($validator->fails()) {
  1462. $errorMessage = $validator->errors()->first();
  1463. return Result::error($errorMessage);
  1464. }
  1465. // $requireData['user_id'] = Context::get("UserId");
  1466. $result = $this->publicServiceClient->updateComponent($requireData);
  1467. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1468. }
  1469. public function getWebsiteTemplateInfo()
  1470. {
  1471. $requireData = $this->request->all();
  1472. $validator = $this->validationFactory->make(
  1473. $requireData,
  1474. [
  1475. 'id' => 'required|integer',
  1476. ],
  1477. [
  1478. 'id.required' => 'id 不能为空',
  1479. 'id.integer' => 'id 必须是整数',
  1480. ]
  1481. );
  1482. if ($validator->fails()) {
  1483. $errorMessage = $validator->errors()->first();
  1484. return Result::error($errorMessage);
  1485. }
  1486. $requireData['user_id'] = Context::get("UserId");
  1487. $result = $this->publicServiceClient->getWebsiteTemplateInfo($requireData);
  1488. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1489. }
  1490. /**
  1491. * 获取所有的职能部门
  1492. * @return array
  1493. */
  1494. public function getAllDepartment()
  1495. {
  1496. $result = $this->publicServiceClient->getDepartment([]);
  1497. $result['data'] = PublicData::buildMenuTree($result['data']);
  1498. return $result['code'] == 200 ? Result::success($result['data']) : Result::error("查询失败");
  1499. }
  1500. /**
  1501. * 获取黑名单列表
  1502. * @return array
  1503. */
  1504. public function getBlackWordList()
  1505. {
  1506. $requireData = $this->request->all();
  1507. $validator = $this->validationFactory->make(
  1508. $requireData,
  1509. [
  1510. 'page' => 'integer|min:1',
  1511. 'pagesize' => 'integer|min:1',
  1512. 'search' => 'string|nullable',
  1513. ],
  1514. [
  1515. 'page.integer' => 'page 必须是整数',
  1516. 'page.min' => 'page 必须大于等于 1',
  1517. 'pagesize.integer' => 'pagesize 必须是整数',
  1518. 'pagesize.min' => 'pagesize 必须大于等于 1',
  1519. 'search.string' => 'search 必须是字符串',
  1520. ]
  1521. );
  1522. if ($validator->fails()) {
  1523. $errorMessage = $validator->errors()->first();
  1524. return Result::error($errorMessage);
  1525. }
  1526. $result = $this->publicServiceClient->getBlackWordList($requireData);
  1527. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1528. }
  1529. /**
  1530. * 添加黑名单
  1531. * @return array
  1532. */
  1533. public function addBlackWord()
  1534. {
  1535. $requireData = $this->request->all();
  1536. $validator = $this->validationFactory->make(
  1537. $requireData,
  1538. [
  1539. 'name' => 'required',
  1540. ],
  1541. [
  1542. 'name.required' => '过滤词不能为空',
  1543. ]
  1544. );
  1545. if ($validator->fails()) {
  1546. $errorMessage = $validator->errors()->first();
  1547. return Result::error($errorMessage);
  1548. }
  1549. $result = $this->publicServiceClient->addBlackWord($requireData);
  1550. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1551. }
  1552. /**
  1553. * 删除黑名单
  1554. * @return array
  1555. */
  1556. public function delBlackWord()
  1557. {
  1558. $requireData = $this->request->all();
  1559. $validator = $this->validationFactory->make(
  1560. $requireData,
  1561. [
  1562. 'name' => 'required',
  1563. ],
  1564. [
  1565. 'name.required' => 'name不能为空',
  1566. ]
  1567. );
  1568. if ($validator->fails()) {
  1569. $errorMessage = $validator->errors()->first();
  1570. return Result::error($errorMessage);
  1571. }
  1572. $result = $this->publicServiceClient->delBlackWord($requireData);
  1573. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1574. }
  1575. /**
  1576. * 修改违禁词
  1577. * @return array
  1578. */
  1579. public function upBlackWord()
  1580. {
  1581. $requireData = $this->request->all();
  1582. $validator = $this->validationFactory->make(
  1583. $requireData,
  1584. [
  1585. 'id' => 'required',
  1586. 'name' => 'required',
  1587. ],
  1588. [
  1589. 'id.required' => 'id不能为空',
  1590. 'name.required' => 'name不能为空',
  1591. ]
  1592. );
  1593. if ($validator->fails()) {
  1594. $errorMessage = $validator->errors()->first();
  1595. return Result::error($errorMessage);
  1596. }
  1597. $result = $this->publicServiceClient->upBlackWord($requireData);
  1598. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1599. }
  1600. /**
  1601. * 获取ip信息-经纬度
  1602. * @return array
  1603. */
  1604. public function getIpInfo()
  1605. {
  1606. $ip = $this->getClientIp();
  1607. $result = $this->publicServiceClient->getIpInfo(['ip' => $ip]);
  1608. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1609. }
  1610. /**
  1611. * 获取客户端IP地址.
  1612. * @return string
  1613. */
  1614. private function getClientIp(): string
  1615. {
  1616. if ($this->request->hasHeader('x-forwarded-for')) {
  1617. $ip = trim(explode(',', $this->request->getHeaderLine('x-forwarded-for'))[0]);
  1618. if ($ip) {
  1619. return $ip;
  1620. }
  1621. }
  1622. if ($this->request->hasHeader('x-real-ip')) {
  1623. $ip = $this->request->getHeaderLine('x-real-ip');
  1624. if ($ip) {
  1625. return $ip;
  1626. }
  1627. }
  1628. return $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
  1629. }
  1630. /**
  1631. * 获取天气信息
  1632. * @return array
  1633. */
  1634. public function getWeatherInfo()
  1635. {
  1636. $requireData = $this->request->all();
  1637. $validator = $this->validationFactory->make(
  1638. $requireData,
  1639. [
  1640. 'latitude' => 'required',
  1641. 'longitude' => 'required',
  1642. ],
  1643. [
  1644. 'latitude.required' => '纬度不能为空',
  1645. 'longitude.required' => '经度不能为空',
  1646. ]
  1647. );
  1648. if ($validator->fails()) {
  1649. $errorMessage = $validator->errors()->first();
  1650. return Result::error($errorMessage);
  1651. }
  1652. $result = $this->publicServiceClient->getWeatherInfo($requireData);
  1653. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1654. }
  1655. /**
  1656. * 获取日历信息
  1657. * @return array
  1658. */
  1659. public function getCalendar()
  1660. {
  1661. $year = $this->request->input('year', date('Y'));
  1662. $month = $this->request->input('month', date('m'));
  1663. $day = $this->request->input('day', date('d'));
  1664. $hour = $this->request->input('day', date('H'));
  1665. $data['year'] = $year;
  1666. $data['month'] = $month;
  1667. $data['day'] = $day;
  1668. $data['hour'] = $hour;
  1669. $result = $this->publicServiceClient->getCalendar($data);
  1670. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1671. }
  1672. /**
  1673. * 添加历史上的今天
  1674. * @return void
  1675. */
  1676. public function addHistoryToday()
  1677. {
  1678. $result = PublicData::getHistoryToday();
  1679. if($result['code']!=200){
  1680. return Result::error($result['msg']);
  1681. }
  1682. $dataList = $result['data']??[];
  1683. if($dataList){
  1684. foreach ($dataList as $value){
  1685. preg_match('/^(-?\d+)年(\d+)月(\d+)日$/', $value['year'], $matches);
  1686. if (isset($matches[1], $matches[2], $matches[3])) {
  1687. $year = $matches[1];
  1688. $month = str_pad($matches[2], 2, '0', STR_PAD_LEFT); // 补零至两位
  1689. $day = str_pad($matches[3], 2, '0', STR_PAD_LEFT); // 补零至两位
  1690. $formattedDate = "{$year}-{$month}-{$day}";
  1691. // echo $formattedDate; // 输出:-1184-04-24
  1692. } else {
  1693. return Result::error($result['msg']);
  1694. }
  1695. $value['year'] = $formattedDate;
  1696. HistoryToday::updateOrInsert(
  1697. ['title' => $value['title']],
  1698. ['title' => $value['title']??'','year' => $value['year']]
  1699. );
  1700. }
  1701. }
  1702. return Result::success($result['data']);
  1703. }
  1704. /**
  1705. * 添加对联
  1706. * @return void
  1707. */
  1708. public function addCouplet()
  1709. {
  1710. $requireData = $this->request->all();
  1711. // $validator = $this->validationFactory->make(
  1712. // $requireData,
  1713. // [
  1714. // 'type' => 'required',
  1715. // ],
  1716. // [
  1717. // 'type.required' => 'type不能为空',
  1718. // ]
  1719. // );
  1720. // if ($validator->fails()) {
  1721. // $errorMessage = $validator->errors()->first();
  1722. // return Result::error($errorMessage);
  1723. // }
  1724. $result = PublicData::getCouplet($requireData['type']??"");
  1725. if($result['code']!=200){
  1726. return Result::error($result['msg']);
  1727. }
  1728. $dataList = $result['result']['list']??[];
  1729. if($dataList){
  1730. foreach ($dataList as $value){
  1731. Couplet::updateOrInsert(
  1732. ['first' => $value['shanglian']],
  1733. ['center' => $value['hengpi']??'','first' => $value['shanglian'],'second'=>$value['xialian'],'type'=>$value['fenlei']??'']
  1734. );
  1735. }
  1736. }
  1737. return Result::success($result['result']['list']);
  1738. }
  1739. /**
  1740. * 添加对联
  1741. * @return void
  1742. */
  1743. public function addRiddle()
  1744. {
  1745. for ($i = 0; $i < 5; $i++) {
  1746. $result = PublicData::addRiddle();
  1747. if($result['code']!=1){
  1748. return Result::error("没资源了");
  1749. }
  1750. var_dump($result);
  1751. Riddle::updateOrInsert(
  1752. ['riddle_title' => $result['mt']],
  1753. ['riddle_title' => $result['mt']??'','riddle_bottom' => $result['md']??'','type' => $result['lx']??'','prompt' => $result['ts']??'']
  1754. );
  1755. $i++;
  1756. sleep(2);
  1757. }
  1758. return Result::success($result);
  1759. }
  1760. /**
  1761. * 添加采集数据
  1762. * @return \Psr\Http\Message\ResponseInterface
  1763. */
  1764. public function addArticle()
  1765. {
  1766. $requireData = $this->request->all();
  1767. $validator = $this->validationFactory->make(
  1768. $requireData,
  1769. [
  1770. 'title' => 'required',
  1771. 'content' => 'required',
  1772. 'web_site_id' => 'required',
  1773. 'catid' => 'required',
  1774. 'copyfrom' => 'required',
  1775. 'fromurl' => 'required',
  1776. 'author' => 'required',
  1777. ],
  1778. [
  1779. 'title.required' => '标题不能为空',
  1780. 'content.required' => '内容不能为空',
  1781. 'web_site_id.required' => '网站不能为空',
  1782. 'catid.required' => '栏目不能为空',
  1783. 'copyfrom.required' => '来源不能为空',
  1784. 'fromurl.required' => '来源网址不能为空',
  1785. 'author.required' => '作者不能为空',
  1786. ]
  1787. );
  1788. if ($validator->fails()) {
  1789. $errorMessage = $validator->errors()->first();
  1790. var_dump($errorMessage);
  1791. return $this->response->json(
  1792. [
  1793. 'id'=>uniqid(),
  1794. 'target'=>"采集失败",
  1795. 'desc'=>$errorMessage,
  1796. 'error'=>$errorMessage
  1797. ]
  1798. );
  1799. }
  1800. $arr_catid = explode(',',$requireData['catid']);
  1801. $arr_web_site_id = explode(',',$requireData['web_site_id']);
  1802. if(count($arr_catid) != count($arr_web_site_id)){
  1803. return $this->response->json(
  1804. [
  1805. 'id'=>uniqid(),
  1806. 'target'=>"采集失败",
  1807. 'desc'=>"网站栏目不匹配",
  1808. 'error'=>"网站栏目不匹配"
  1809. ]
  1810. );
  1811. }
  1812. // var_dump($arr_catid,$arr_web_site_id);
  1813. // die();
  1814. if($arr_catid){
  1815. foreach ($arr_catid as $key=>$val){
  1816. $categoryInfo = $this->newsServiceClient->getCategoryInfo(['id'=>$val]);
  1817. if($categoryInfo['code']!=200){
  1818. return $this->response->json(
  1819. [
  1820. 'id'=>uniqid(),
  1821. 'error'=>"栏目不存在"
  1822. ]
  1823. );
  1824. }
  1825. if($categoryInfo['data']['pid']!=0){
  1826. $pid_arr = json_decode($categoryInfo['data']['pid_arr'],true);
  1827. $requireData['cat_arr_id'] = array_push($pid_arr,intval($val));
  1828. $requireData['cat_arr_id'] = isset($pid_arr) ? json_encode($pid_arr) : '';
  1829. }else{
  1830. $requireData['cat_arr_id'] = json_encode([intval($val)]);
  1831. }
  1832. $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
  1833. $requireData['ip'] = $loginIp;
  1834. $requireData['admin_user_id'] = 32;
  1835. $requireData['level'] = isset($requireData['level']) && $requireData['level'] ? $requireData['level'] : 0;
  1836. $requireData['hits'] = isset($requireData['hits']) && $requireData['hits'] ? $requireData['hits'] : 0;
  1837. $requireData['is_original'] = isset($requireData['is_original']) && $requireData['is_original'] ? $requireData['is_original'] : 0;
  1838. $requireData['status'] = isset($requireData['status']) && $requireData['status'] ? $requireData['status'] : 1;
  1839. $requireData['imgurl'] = '';
  1840. $requireData['user_type'] = 10000;
  1841. $requireData['level'] = "[0]";
  1842. $requireData['nav_add_pool_id'] = [];
  1843. $requireData['city_id'] = 0;
  1844. $requireData['city_arr_id'] = "[]";
  1845. $requireData['department_arr_id'] = "[]";
  1846. $requireData['department_id'] = 0;
  1847. $requireData['islink'] = 0;
  1848. $requireData['linkurl'] = "";
  1849. $requireData['keyword'] = "";
  1850. $requireData['introduce'] = "";
  1851. $requireData['is_survey'] = 0;
  1852. $requireData['survey_name'] = "";
  1853. $requireData['suvey_array'] = "";
  1854. $requireData['survey_type'] = 0;
  1855. $requireData['commend_id'] = "[]";
  1856. $requireData['catid'] = $val;
  1857. $requireData['web_site_id'] = $arr_web_site_id[$key];
  1858. $result = $this->newsServiceClient->addArticle($requireData);
  1859. $data = [
  1860. 'id'=>$result['data']['id'],
  1861. 'target'=>$categoryInfo['data']['name'],
  1862. 'desc'=>$requireData['title'],
  1863. ];
  1864. }
  1865. }
  1866. return $this->response->json(
  1867. $data
  1868. );
  1869. }
  1870. /**
  1871. * 自助建站-1.选择页面回显相关数据
  1872. * @return array
  1873. */
  1874. public function getWebPageType()
  1875. {
  1876. $requireData = $this->request->all();
  1877. $validator = $this->validationFactory->make(
  1878. $requireData,
  1879. [
  1880. 'website_id' =>'required',
  1881. ],
  1882. [
  1883. 'website_id.required' => '网站id 不能为空',
  1884. ]
  1885. );
  1886. if ($validator->fails()) {
  1887. $errorMessage = $validator->errors()->first();
  1888. return Result::error($errorMessage);
  1889. }
  1890. $result = $this->publicServiceClient->getWebPageType($requireData);
  1891. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  1892. }
  1893. /**
  1894. * 自助建站-2.选择页面类型
  1895. * @return array
  1896. */
  1897. public function addWebPageType()
  1898. {
  1899. $requireData = $this->request->all();
  1900. $validator = $this->validationFactory->make(
  1901. $requireData,
  1902. [
  1903. 'is_search' =>'required',
  1904. 'website_id' =>'required',
  1905. ],
  1906. [
  1907. 'is_search.required' => '是否带搜索页面',
  1908. 'website_id.required' => '网站id 不能为空',
  1909. ]
  1910. );
  1911. if ($validator->fails()) {
  1912. $errorMessage = $validator->errors()->first();
  1913. return Result::error($errorMessage);
  1914. }
  1915. $requireData['user_id'] = Context::get("UserId");
  1916. $result = $this->publicServiceClient->addWebPageType($requireData);
  1917. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  1918. }
  1919. /**
  1920. * 自助建站-3.皮肤列表
  1921. * @return array
  1922. */
  1923. public function getWebsiteTemplateList()
  1924. {
  1925. $requireData = $this->request->all();
  1926. $validator = $this->validationFactory->make(
  1927. $requireData,
  1928. [
  1929. 'page' => 'required|integer|min:1',
  1930. 'page_size' => 'required|integer|min:1',
  1931. 'website_id' =>'required',
  1932. ],
  1933. [
  1934. 'page.required' => 'page 不能为空',
  1935. 'page.integer' => 'page 必须是整数',
  1936. 'page.min' => 'page 必须大于等于 1',
  1937. 'page_size.required' => 'page_size 不能为空',
  1938. 'page_size.integer' => 'page_size 必须是整数',
  1939. 'page_size.min' => 'page_size 必须大于等于 1',
  1940. 'website_id.required' => '网站id 不能为空',
  1941. ]
  1942. );
  1943. if ($validator->fails()) {
  1944. $errorMessage = $validator->errors()->first();
  1945. return Result::error($errorMessage);
  1946. }
  1947. // return Result::success($requireData);
  1948. $requireData['user_id'] = Context::get("UserId");
  1949. $result = $this->publicServiceClient->getWebsiteTemplateList($requireData);
  1950. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  1951. }
  1952. /**
  1953. * 自助建站-4.添加网站
  1954. * @return array
  1955. */
  1956. public function chooseWebsiteTemplate()
  1957. {
  1958. $requireData = $this->request->all();
  1959. $validator = $this->validationFactory->make(
  1960. $requireData,
  1961. [
  1962. 'website_id' =>'required',
  1963. 'template_id' =>'required',
  1964. ],
  1965. [
  1966. 'website_id.required' => '网站id不能为空',
  1967. 'template_id.required' => '皮肤id不能为空',
  1968. ]
  1969. );
  1970. if ($validator->fails()) {
  1971. $errorMessage = $validator->errors()->first();
  1972. return Result::error($errorMessage);
  1973. }
  1974. $requireData['user_id'] = Context::get("UserId");
  1975. $result = $this->publicServiceClient->chooseWebsiteTemplate($requireData);
  1976. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  1977. }
  1978. /**
  1979. * 自助建站-5.保存到草稿箱
  1980. * @return array
  1981. */
  1982. public function saveWebsiteTemplate()
  1983. {
  1984. $requireData = $this->request->all();
  1985. $validator = $this->validationFactory->make(
  1986. $requireData,
  1987. [
  1988. 'website_id' =>'required',
  1989. 'template_data' =>'required',
  1990. 'canvas_data' =>'required',
  1991. ],
  1992. [
  1993. 'website_id.required' => '网站名称不能为空',
  1994. 'template_data.required' => '网站名称不能为空',
  1995. 'canvas_data.required' => 'canvas_data不能为空',
  1996. ]
  1997. );
  1998. if ($validator->fails()) {
  1999. $errorMessage = $validator->errors()->first();
  2000. return Result::error($errorMessage);
  2001. }
  2002. $requireData['user_id'] = Context::get("UserId");
  2003. $result = $this->publicServiceClient->saveWebsiteTemplate($requireData);
  2004. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2005. }
  2006. /**
  2007. * 自助建站-6.返显保存的模版
  2008. * @return array
  2009. */
  2010. public function getWebsiteTemplate()
  2011. {
  2012. $requireData = $this->request->all();
  2013. $validator = $this->validationFactory->make(
  2014. $requireData,
  2015. [
  2016. 'website_id' =>'required',
  2017. ],
  2018. [
  2019. 'website_id.required' => '网站id不能为空',
  2020. ]
  2021. );
  2022. if ($validator->fails()) {
  2023. $errorMessage = $validator->errors()->first();
  2024. return Result::error($errorMessage);
  2025. }
  2026. $requireData['user_id'] = Context::get("UserId");
  2027. $result = $this->publicServiceClient->getWebsiteTemplate($requireData);
  2028. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2029. }
  2030. /**
  2031. * 通栏版式管理-通栏版式列表
  2032. * @return array
  2033. */
  2034. public function getSectorPlaceList()
  2035. {
  2036. $requireData = $this->request->all();
  2037. $validator = $this->validationFactory->make(
  2038. $requireData,
  2039. [
  2040. 'page' => 'required|integer|min:1',
  2041. 'page_size' => 'required|integer|min:1',
  2042. 'type_id' => 'required|integer',
  2043. ],
  2044. [
  2045. 'page.required' => 'page 不能为空',
  2046. 'page.integer' => 'page 必须是整数',
  2047. 'page.min' => 'page 必须大于等于 1',
  2048. 'page_size.required' => 'page_size 不能为空',
  2049. 'page_size.integer' => 'page_size 必须是整数',
  2050. 'page_size.min' => 'page_size 必须大于等于 1',
  2051. 'type_id.required' => '版式类型不能为空',
  2052. 'type_id.integer' => '版式类型必须为整数',
  2053. ]
  2054. );
  2055. if ($validator->fails()) {
  2056. $errorMessage = $validator->errors()->first();
  2057. return Result::error($errorMessage);
  2058. }
  2059. $requireData['user_id'] = Context::get("UserId");
  2060. $result = $this->publicServiceClient->getSectorPlaceList($requireData);
  2061. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2062. }
  2063. /**
  2064. * 通栏版式管理-添加通栏版式
  2065. * @return array
  2066. */
  2067. public function addSectorPlace()
  2068. {
  2069. $requireData = $this->request->all();
  2070. $validator = $this->validationFactory->make(
  2071. $requireData,
  2072. [
  2073. 'name' => 'required',
  2074. 'size_id' => 'required|integer',
  2075. 'sector_img' => 'required',
  2076. 'type' => 'required|integer',
  2077. 'type_id' => 'required|integer',
  2078. ],
  2079. [
  2080. 'name.required' => '版式名称不能为空',
  2081. 'size_id.required' => '通栏尺寸不能为空',
  2082. 'size_id.integer' => '通栏尺寸必须为整数',
  2083. 'sector_img.required' => '通栏图片不能为空',
  2084. 'type.required' => '版式编号不能为空',
  2085. 'type.integer' => '版式编号必须为整数',
  2086. 'type_id.required' => '版式类型id不能为空',
  2087. 'type_id.integer' => '版式类型id必须为整数',
  2088. ]
  2089. );
  2090. if ($validator->fails()) {
  2091. $errorMessage = $validator->errors()->first();
  2092. return Result::error($errorMessage);
  2093. }
  2094. $requireData['user_id'] = Context::get("UserId");
  2095. $result = $this->publicServiceClient->addSectorPlace($requireData);
  2096. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2097. }
  2098. /**
  2099. * 通栏版式管理-编辑通栏版式
  2100. * @return array
  2101. */
  2102. public function upSectorPlace()
  2103. {
  2104. $requireData = $this->request->all();
  2105. $validator = $this->validationFactory->make(
  2106. $requireData,
  2107. [
  2108. 'id' => 'required|integer',
  2109. 'name' => 'required',
  2110. 'size_id' => 'required|integer',
  2111. 'sector_img' => 'required',
  2112. 'type' => 'required|integer',
  2113. 'type_id' => 'required|integer',
  2114. ],
  2115. [
  2116. 'id.required' => '通栏版式id不能为空',
  2117. 'id.integer' => '通栏版式id必须为整数',
  2118. 'name.required' => '版式名称不能为空',
  2119. 'size_id.required' => '通栏尺寸不能为空',
  2120. 'size_id.integer' => '通栏尺寸必须为整数',
  2121. 'sector_img.required' => '通栏图片不能为空',
  2122. 'type.required' => '通栏类型不能为空',
  2123. 'type.integer' => '通栏类型必须为整数',
  2124. 'type_id.required' => '通栏类型id不能为空',
  2125. 'type_id.integer' => '通栏类型id必须为整数',
  2126. ]
  2127. );
  2128. if ($validator->fails()) {
  2129. $errorMessage = $validator->errors()->first();
  2130. return Result::error($errorMessage);
  2131. }
  2132. $requireData['user_id'] = Context::get("UserId");
  2133. $result = $this->publicServiceClient->upSectorPlace($requireData);
  2134. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2135. }
  2136. /**
  2137. * 通栏版式管理-删除通栏版式
  2138. * @return array
  2139. */
  2140. public function delSectorPlace()
  2141. {
  2142. $requireData = $this->request->all();
  2143. $validator = $this->validationFactory->make(
  2144. $requireData,
  2145. [
  2146. 'id' => 'required',
  2147. ],
  2148. [
  2149. 'id.required' => '版式id不能为空',
  2150. ]
  2151. );
  2152. if ($validator->fails()) {
  2153. $errorMessage = $validator->errors()->first();
  2154. return Result::error($errorMessage);
  2155. }
  2156. $requireData['user_id'] = Context::get("UserId");
  2157. $result = $this->publicServiceClient->delSectorPlace($requireData);
  2158. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2159. }
  2160. /**
  2161. * 通栏版式管理-获取通栏详情
  2162. * @return array
  2163. */
  2164. public function getSectorPlaceInfo()
  2165. {
  2166. $requireData = $this->request->all();
  2167. $validator = $this->validationFactory->make(
  2168. $requireData,
  2169. [
  2170. 'id' => 'required',
  2171. ],
  2172. [
  2173. 'id.required' => '通栏版式id不能为空',
  2174. ]
  2175. );
  2176. if ($validator->fails()) {
  2177. $errorMessage = $validator->errors()->first();
  2178. return Result::error($errorMessage);
  2179. }
  2180. $requireData['user_id'] = Context::get("UserId");
  2181. $result = $this->publicServiceClient->getSectorPlaceInfo($requireData);
  2182. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2183. }
  2184. /**
  2185. * 获取企业列表
  2186. * @return array
  2187. */
  2188. public function getCompanyList()
  2189. {
  2190. $requireData = $this->request->all();
  2191. $validator = $this->validationFactory->make(
  2192. $requireData,
  2193. [
  2194. 'page' =>'required',
  2195. 'pageSize' =>'required',
  2196. 'website_id' =>'nullable|integer',
  2197. 'status' =>'nullable|integer',
  2198. 'title' =>'nullable|string',
  2199. 'ischeck' =>'required|integer',
  2200. ],
  2201. [
  2202. 'page.required' => '第几页不能为空',
  2203. 'pageSize.required' => '每页数量不能为空',
  2204. 'website_id.integer' => '网站id必须是整数',
  2205. 'status.integer' => '状态必须是整数',
  2206. 'title.string' => '标题必须是字符串',
  2207. 'ischeck.integer' => '是否审核必须是整数',
  2208. 'ischeck.required' => '是否审核不能为空',
  2209. ]
  2210. );
  2211. if ($validator->fails()) {
  2212. $errorMessage = $validator->errors()->first();
  2213. return Result::error($errorMessage);
  2214. }
  2215. $requireData['user_id'] = Context::get("UserId");
  2216. $result = $this->newsServiceClient->getCompanyList($requireData);
  2217. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2218. }
  2219. /**
  2220. * 添加企业
  2221. * @return array
  2222. */
  2223. public function addCompany()
  2224. {
  2225. $requireData = $this->request->all();
  2226. $validator = $this->validationFactory->make(
  2227. $requireData,
  2228. [
  2229. 'website_id' =>'required',
  2230. 'title' =>'required',
  2231. ],
  2232. [
  2233. 'website_id.required' => '网站名称不能为空',
  2234. 'title.required' => '标题不能为空',
  2235. ]
  2236. );
  2237. if ($validator->fails()) {
  2238. $errorMessage = $validator->errors()->first();
  2239. return Result::error($errorMessage);
  2240. }
  2241. $requireData['user_id'] = Context::get("UserId");
  2242. $result = $this->newsServiceClient->addCompany($requireData);
  2243. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2244. }
  2245. /**
  2246. * 修改企业
  2247. * @return array
  2248. */
  2249. public function upCompany()
  2250. {
  2251. $requireData = $this->request->all();
  2252. $validator = $this->validationFactory->make(
  2253. $requireData,
  2254. [
  2255. 'id' =>'required',
  2256. 'website_id' =>'required',
  2257. 'cat_arr_id' =>'required',
  2258. 'title' =>'required',
  2259. ],
  2260. [
  2261. 'id.required' => 'id不能为空',
  2262. 'website_id.required' => '网站名称不能为空',
  2263. 'cat_arr_id.required' => '栏目不能为空',
  2264. 'title.required' => '标题不能为空',
  2265. ]
  2266. );
  2267. if ($validator->fails()) {
  2268. $errorMessage = $validator->errors()->first();
  2269. return Result::error($errorMessage);
  2270. }
  2271. $requireData['user_id'] = Context::get("UserId");
  2272. $result = $this->newsServiceClient->upCompany($requireData);
  2273. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2274. }
  2275. /**
  2276. * 删除企业
  2277. * @return array
  2278. */
  2279. public function delCompany()
  2280. {
  2281. $requireData = $this->request->all();
  2282. $validator = $this->validationFactory->make(
  2283. $requireData,
  2284. [
  2285. 'id' =>'required',
  2286. ],
  2287. [
  2288. 'id.required' => '网站名称不能为空',
  2289. ]
  2290. );
  2291. if ($validator->fails()) {
  2292. $errorMessage = $validator->errors()->first();
  2293. return Result::error($errorMessage);
  2294. }
  2295. $requireData['user_id'] = Context::get("UserId");
  2296. $result = $this->newsServiceClient->delCompany($requireData);
  2297. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2298. }
  2299. /**
  2300. * 审核企业
  2301. * @return array
  2302. */
  2303. public function checkCompany()
  2304. {
  2305. $requireData = $this->request->all();
  2306. $validator = $this->validationFactory->make(
  2307. $requireData,
  2308. [
  2309. 'id' =>'required',
  2310. 'status' =>'required',
  2311. ],
  2312. [
  2313. 'id.required' => '网站名称不能为空',
  2314. 'status.required' => '网站名称不能为空',
  2315. ]
  2316. );
  2317. if ($validator->fails()) {
  2318. $errorMessage = $validator->errors()->first();
  2319. return Result::error($errorMessage);
  2320. }
  2321. $requireData['user_id'] = Context::get("UserId");
  2322. $result = $this->newsServiceClient->checkCompany($requireData);
  2323. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2324. }
  2325. /**
  2326. * 企业详情
  2327. * @return array
  2328. */
  2329. public function getCompanyInfo()
  2330. {
  2331. $requireData = $this->request->all();
  2332. $validator = $this->validationFactory->make(
  2333. $requireData,
  2334. [
  2335. 'id' =>'required',
  2336. ],
  2337. [
  2338. 'id.required' => '企业id不能为空',
  2339. ]
  2340. );
  2341. if ($validator->fails()) {
  2342. $errorMessage = $validator->errors()->first();
  2343. return Result::error($errorMessage);
  2344. }
  2345. $requireData['user_id'] = Context::get("UserId");
  2346. $result = $this->newsServiceClient->getCompanyInfo($requireData);
  2347. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2348. }
  2349. /**
  2350. * 通栏版式管理-通栏版式位置
  2351. * @return array
  2352. */
  2353. public function getSectorPlaceSort()
  2354. {
  2355. $requireData = $this->request->all();
  2356. $validator = $this->validationFactory->make(
  2357. $requireData,
  2358. [
  2359. 'sector_type' => 'required',
  2360. ],
  2361. [
  2362. 'sector_type.required' => '通栏版式id不能为空',
  2363. ]
  2364. );
  2365. if ($validator->fails()) {
  2366. $errorMessage = $validator->errors()->first();
  2367. return Result::error($errorMessage);
  2368. }
  2369. $requireData['user_id'] = Context::get("UserId");
  2370. $result = $this->publicServiceClient->getSectorPlaceSort($requireData);
  2371. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2372. }
  2373. /**
  2374. * 通栏版式管理-获取所有的通栏版式
  2375. * @return array
  2376. */
  2377. public function getAllSectorPlace()
  2378. {
  2379. $requireData = $this->request->all();
  2380. $validator = $this->validationFactory->make(
  2381. $requireData,
  2382. [
  2383. 'type_id' => 'required|integer',
  2384. ],
  2385. [
  2386. 'type_id.required' => '版式类型不能为空',
  2387. 'type_id.integer' => '版式类型必须为整数',
  2388. ]
  2389. );
  2390. if ($validator->fails()) {
  2391. $errorMessage = $validator->errors()->first();
  2392. return Result::error($errorMessage);
  2393. }
  2394. $requireData['user_id'] = Context::get("UserId");
  2395. $result = $this->publicServiceClient->getAllSectorPlace($requireData);
  2396. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2397. }
  2398. /**
  2399. * 通栏版式管理-获取组件类型
  2400. * @return array
  2401. */
  2402. public function getComponentType()
  2403. {
  2404. $requireData = $this->request->all();
  2405. $requireData['user_id'] = Context::get("UserId");
  2406. $result = $this->publicServiceClient->getComponentType($requireData);
  2407. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2408. }
  2409. /**
  2410. * 组件管理-获取所有通栏
  2411. * @return array
  2412. */
  2413. public function getAllSector()
  2414. {
  2415. $requireData = $this->request->all();
  2416. $requireData['user_id'] = Context::get("UserId");
  2417. $result = $this->publicServiceClient->getAllSector($requireData);
  2418. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2419. }
  2420. /**
  2421. * 自助建站-流程管理-获取所有组件
  2422. * @return array
  2423. */
  2424. public function getAllComponent()
  2425. {
  2426. $requireData = $this->request->all();
  2427. $requireData['user_id'] = Context::get("UserId");
  2428. $result = $this->publicServiceClient->getAllComponent($requireData);
  2429. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  2430. }
  2431. }