OrderController.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581
  1. <?php
  2. declare (strict_types = 1);
  3. namespace App\Controller;
  4. use App\JsonRpc\OrderServiceInterface;
  5. use App\Tools\Result;
  6. use Hyperf\Context\Context;
  7. use Hyperf\Di\Annotation\Inject;
  8. use Hyperf\HttpServer\Contract\RequestInterface;
  9. use Hyperf\HttpServer\Contract\ResponseInterface;
  10. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  11. /**
  12. * Class OrderController
  13. * @package App\Controller
  14. */
  15. class OrderController extends AbstractController
  16. {
  17. #[Inject]
  18. protected ValidatorFactoryInterface $validationFactory;
  19. /**
  20. * @var OrderServiceInterface
  21. */
  22. #[Inject]
  23. private $orderServiceClient;
  24. public function index(RequestInterface $request, ResponseInterface $response)
  25. {
  26. return $response->raw('Hello Hyperf!');
  27. }
  28. /***
  29. * 状态说明
  30. */
  31. public function getStatus()
  32. {
  33. $data['order'] = [
  34. 1 => '已通过',
  35. 2 => '已驳回',
  36. 3 => '已取消',
  37. 5 => '已过期',
  38. 6 => '待审核',
  39. 7 => '已完成'
  40. ];
  41. $data['order_ad'] = [
  42. 1 => '待投放',
  43. 2 => '已失效',
  44. 3 => '已失效',
  45. 5 => '待审核',
  46. 6 => '待审核',
  47. 7 => '已失效',
  48. 8 => '投放中'
  49. ];
  50. $data['check'] = [
  51. 1 => '已通过',
  52. 2 => '已驳回',
  53. 6 => '待审核',
  54. ];
  55. return Result::success($data);
  56. }
  57. /**
  58. * 获取广告尺寸及查询广告位
  59. */
  60. public function getAD()
  61. {
  62. $requireData = $this->request->all();
  63. if(!empty($requireData)){
  64. $validator = $this->validationFactory->make(
  65. $requireData,
  66. [
  67. 'ad_size_id' => [
  68. 'nullable',
  69. function ($attribute, $value, $fail) {
  70. if ($value === null) {
  71. return true;
  72. }
  73. if (is_numeric($value)) {
  74. return true;
  75. }
  76. if (is_array($value) && count(array_filter($value, 'is_numeric')) === count($value)) {
  77. return true;
  78. }
  79. $fail($attribute.' 必须是一个数字或者一个只包含数字的数组');
  80. },
  81. ],
  82. 'starttime' => 'required',
  83. 'endtime' => 'required',
  84. 'pageSize' => 'required',
  85. 'page' => 'required',
  86. ],
  87. [
  88. 'starttime.required' => '广告开始时间不能为空',
  89. 'endtime.required' => '广告结束时间不能为空',
  90. 'pageSize.required' => '显示条数不能为空',
  91. 'page.required' => '分页不能为空',
  92. ]
  93. );
  94. if ($validator->fails()) {
  95. $errorMessage = $validator->errors()->first();
  96. return Result::error($errorMessage);
  97. }
  98. }
  99. $requireData['website_id'] = Context::get("WebsiteId")??'2';
  100. // return Result::success($requireData);
  101. $result = $this->orderServiceClient->getAD($requireData);
  102. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  103. }
  104. /**
  105. * 根据网站查找广告位
  106. */
  107. public function getWebsiteAd()
  108. {
  109. $requireData = $this->request->all();
  110. $validator = $this->validationFactory->make(
  111. $requireData,
  112. [
  113. 'ad_size_id' => 'required',
  114. 'starttime' => 'required',
  115. 'endtime' => 'required',
  116. 'pageSize' => 'required',
  117. 'page' => 'required',
  118. ],
  119. [
  120. 'ad_size_id.required' => '广告尺寸id不能为空',
  121. 'starttime.required' => '广告开始时间不能为空',
  122. 'endtime.required' => '广告结束时间不能为空',
  123. 'pageSize.required' => '显示条数不能为空',
  124. 'page.required' => '分页不能为空'
  125. ]
  126. );
  127. if ($validator->fails()) {
  128. $errorMessage = $validator->errors()->first();
  129. return Result::error($errorMessage);
  130. }
  131. $result = $this->orderServiceClient->getWebsiteAd($requireData);
  132. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  133. }
  134. public function getOrderListAdmin()
  135. {
  136. $requireData = $this->request->all();
  137. $validator = $this->validationFactory->make(
  138. $requireData,
  139. [
  140. 'pageSize' => 'required',
  141. 'page' => 'required',
  142. ],
  143. [
  144. 'pageSize.required' => '显示条数不能为空',
  145. 'page.required' => '分页不能为空',
  146. ]
  147. );
  148. if ($validator->fails()) {
  149. $errorMessage = $validator->errors()->first();
  150. return Result::error($errorMessage);
  151. }
  152. $result = $this->orderServiceClient->getOrderListAdmin($requireData);
  153. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  154. }
  155. /**
  156. * 获取广告订单价格
  157. */
  158. public function getPrice(){
  159. $requireData = $this->request->all();
  160. $validator = $this->validationFactory->make(
  161. $requireData,
  162. [
  163. 'starttime' => 'required',
  164. 'endtime' => 'required',
  165. ],
  166. [
  167. 'starttime.required' => '广告开始时间不能为空',
  168. 'endtime.required' => '广告结束时间不能为空',
  169. ]
  170. );
  171. if ($validator->fails()) {
  172. $errorMessage = $validator->errors()->first();
  173. return Result::error($errorMessage);
  174. }
  175. var_dump($requireData);
  176. $result = $this->orderServiceClient->getPrice($requireData);
  177. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  178. }
  179. /**
  180. * 添加订单
  181. */
  182. public function addAD()
  183. {
  184. $requireData = $this->request->all();
  185. $validator = $this->validationFactory->make(
  186. $requireData,
  187. [
  188. 'name' => 'required',
  189. 'ad_size_id' => 'required',
  190. 'starttime' => 'required',
  191. 'endtime' => 'required',
  192. 'imgurl' => 'required',
  193. 'imgsrc' => 'required',
  194. 'pid' => 'required',
  195. 'price' =>'required'
  196. ],
  197. [
  198. 'name.required' => '广告名称不能为空',
  199. 'ad_size_id.required' => '广告图片尺寸id不能为空',
  200. 'starttime.required' => '广告开始时间不能为空',
  201. 'endtime.required' => '广告结束时间不能为空',
  202. 'imgurl.required' => '图片广告链接不能为空',
  203. 'imgsrc.required' => '图片广告地址不能为空',
  204. 'pid.required' => '广告位id不能为空',
  205. 'price.required' => '价格不能为空'
  206. ]
  207. );
  208. if ($validator->fails()) {
  209. $errorMessage = $validator->errors()->first();
  210. return Result::error($errorMessage);
  211. }
  212. $requireData['user_id'] = Context::get("UserId");
  213. $result = $this->orderServiceClient->addAD($requireData);
  214. // return $requireData;
  215. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  216. }
  217. /**
  218. * 获取订单列表
  219. */
  220. public function getOrderList()
  221. {
  222. $requireData = $this->request->all();
  223. $validator = $this->validationFactory->make(
  224. $requireData,
  225. [
  226. 'pageSize' => 'required',
  227. 'page' => 'required',
  228. ],
  229. [
  230. 'pageSize.required' => '显示条数不能为空',
  231. 'page.required' => '分页不能为空',
  232. ]
  233. );
  234. if (isset($requireData['status'])) {
  235. $validator = $this->validationFactory->make(
  236. $requireData,
  237. [
  238. 'status' => 'required',
  239. ],
  240. [
  241. 'status.required' => '状态不能为空',
  242. ]
  243. );
  244. }
  245. if ($validator->fails()) {
  246. $errorMessage = $validator->errors()->first();
  247. return Result::error($errorMessage);
  248. }
  249. $requireData['user_id'] = Context::get("UserId");
  250. $result = $this->orderServiceClient->getOrderList($requireData);
  251. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  252. }
  253. /**
  254. * 获取订单详情
  255. */
  256. public function getOrderDetail()
  257. {
  258. $requireData = $this->request->all();
  259. $validator = $this->validationFactory->make(
  260. $requireData,
  261. [
  262. 'order_id' => 'required',
  263. 'pageSize' => 'required',
  264. 'page' => 'required',
  265. ],
  266. [
  267. 'name.required' => '订单id不能为空',
  268. 'pageSize.required' => '显示条数不能为空',
  269. 'page.required' => '分页不能为空',
  270. ]
  271. );
  272. if ($validator->fails()) {
  273. $errorMessage = $validator->errors()->first();
  274. return Result::error($errorMessage);
  275. }
  276. $requireData['user_id'] = Context::get("UserId");
  277. $result = $this->orderServiceClient->getOrderDetail($requireData);
  278. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  279. }
  280. /***
  281. * 撤回订单
  282. */
  283. public function cancelOrder()
  284. {
  285. $requireData = $this->request->all();
  286. $validator = $this->validationFactory->make(
  287. $requireData,
  288. [
  289. 'order_id' => 'required',
  290. ],
  291. [
  292. 'name.required' => '订单id不能为空',
  293. ]
  294. );
  295. if ($validator->fails()) {
  296. $errorMessage = $validator->errors()->first();
  297. return Result::error($errorMessage);
  298. }
  299. $requireData['user_id'] = Context::get("UserId");
  300. $result = $this->orderServiceClient->cancelOrder($requireData);
  301. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  302. }
  303. // 获取订单详情
  304. public function getOrderDetailAdmin()
  305. {
  306. $requireData = $this->request->all();
  307. $validator = $this->validationFactory->make(
  308. $requireData,
  309. [
  310. 'id' => 'required',
  311. ],
  312. [
  313. 'id.required' => '订单id不能为空',
  314. ]
  315. );
  316. if ($validator->fails()) {
  317. $errorMessage = $validator->errors()->first();
  318. return Result::error($errorMessage);
  319. }
  320. $result = $this->orderServiceClient->getOrderDetailAdmin($requireData);
  321. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  322. }
  323. /**
  324. * 删除订单
  325. */
  326. public function delOrderAD()
  327. {
  328. $requireData = $this->request->all();
  329. $validator = $this->validationFactory->make(
  330. $requireData,
  331. [
  332. 'id' => 'required',
  333. ],
  334. [
  335. 'id.required' => 'id不能为空',
  336. 'order_id' => 'required',
  337. ],
  338. [
  339. 'name.required' => '订单id不能为空',
  340. ]
  341. );
  342. if ($validator->fails()) {
  343. $errorMessage = $validator->errors()->first();
  344. return Result::error($errorMessage);
  345. }
  346. $result = $this->orderServiceClient->getOrderDetailAdmin($requireData);
  347. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  348. }
  349. //审核订单状态
  350. public function applyOrderStatusAdmin()
  351. {
  352. $requireData = $this->request->all();
  353. $validator = $this->validationFactory->make(
  354. $requireData,
  355. [
  356. 'id' => 'required',
  357. ],
  358. [
  359. 'id.required' => 'id不能为空',
  360. ]
  361. );
  362. if ($validator->fails()) {
  363. $errorMessage = $validator->errors()->first();
  364. return Result::error($errorMessage);
  365. }
  366. $result = $this->orderServiceClient->applyOrderStatusAdmin($requireData);
  367. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  368. }
  369. //修改订单价格
  370. public function editPriceOrderAdmin()
  371. {
  372. $requireData = $this->request->all();
  373. $validator = $this->validationFactory->make(
  374. $requireData,
  375. [
  376. 'id' => 'required',
  377. 'price' => 'required|decimal:2',
  378. ],
  379. [
  380. 'id.required' => 'id不能为空',
  381. 'price.required' => '价格不能为空',
  382. 'price.decimal' => '价格格式不正确',
  383. ]
  384. );
  385. if ($validator->fails()) {
  386. $errorMessage = $validator->errors()->first();
  387. return Result::error($errorMessage);
  388. }
  389. $result = $this->orderServiceClient->editPriceOrderAdmin($requireData);
  390. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  391. }
  392. public function rejectOrderAdmin()
  393. {
  394. $requireData = $this->request->all();
  395. $validator = $this->validationFactory->make(
  396. $requireData,
  397. [
  398. 'id' => 'required',
  399. 'reason' => 'required',
  400. ],
  401. [
  402. 'id.required' => 'id不能为空',
  403. 'reason.required' => '原因不能为空',
  404. ]
  405. );
  406. if ($validator->fails()) {
  407. $errorMessage = $validator->errors()->first();
  408. return Result::error($errorMessage);
  409. }
  410. $result = $this->orderServiceClient->rejectOrderAdmin($requireData);
  411. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  412. }
  413. public function endOrderAdmin()
  414. {
  415. $requireData = $this->request->all();
  416. $validator = $this->validationFactory->make(
  417. $requireData,
  418. [
  419. 'id' => 'required',
  420. ],
  421. [
  422. 'id.required' => 'id不能为空',
  423. ]
  424. );
  425. if ($validator->fails()) {
  426. $errorMessage = $validator->errors()->first();
  427. return Result::error($errorMessage);
  428. }
  429. $result = $this->orderServiceClient->endOrderAdmin($requireData);
  430. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  431. }
  432. public function delOrderAdmin()
  433. {
  434. $requireData = $this->request->all();
  435. $validator = $this->validationFactory->make(
  436. $requireData,
  437. [
  438. 'id' => 'required',
  439. ],
  440. [
  441. 'id.required' => 'id不能为空',
  442. ]
  443. );
  444. if ($validator->fails()) {
  445. $errorMessage = $validator->errors()->first();
  446. return Result::error($errorMessage);
  447. }
  448. $result = $this->orderServiceClient->delOrderAdmin($requireData);
  449. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  450. }
  451. /**
  452. * 用户创建购物车
  453. */
  454. public function addShoppingCart()
  455. {
  456. // return Result::success('ok');
  457. $requireData['user_id'] = Context::get("UserId");
  458. $result = $this->orderServiceClient->addShoppingCart($requireData);
  459. // Result::success($result['data']);
  460. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  461. }
  462. /**
  463. * 用户添加购物车中的广告位
  464. */
  465. public function addShoppingCartAD()
  466. {
  467. $requireData = $this->request->all();
  468. $validator = $this->validationFactory->make(
  469. $requireData,
  470. [
  471. 'shopping_id' =>'required|integer',
  472. 'pid' =>'required|integer'
  473. ],
  474. [
  475. 'shopping_id.required' => '购物订单id不能为空',
  476. 'shopping_id.integer' => '购物订单id格式不正确',
  477. 'pid.required' => '广告位id不能为空',
  478. 'pid.integer' => '广告位id格式不正确'
  479. ]
  480. );
  481. if ($validator->fails()) {
  482. $errorMessage = $validator->errors()->first();
  483. return Result::error($errorMessage);
  484. }
  485. $requireData['user_id'] = Context::get("UserId");
  486. $result = $this->orderServiceClient->addShoppingCartAD($requireData);
  487. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  488. }
  489. /**
  490. * 用户获取购物车中的广告位
  491. */
  492. public function getShoppingCartAD()
  493. {
  494. $requireData = $this->request->all();
  495. $validator = $this->validationFactory->make(
  496. $requireData,
  497. [
  498. 'shopping_id' =>'required|integer'
  499. ],
  500. [
  501. 'shopping_id.required' => '购物订单id不能为空',
  502. 'shopping_id.integer' => '购物订单id格式不正确'
  503. ]
  504. );
  505. if ($validator->fails()) {
  506. $errorMessage = $validator->errors()->first();
  507. return Result::error($errorMessage);
  508. }
  509. $requireData['user_id'] = Context::get("UserId");
  510. $result = $this->orderServiceClient->getShoppingCartAD($requireData);
  511. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  512. }
  513. /**
  514. * 用户删除购物车中的广告位
  515. */
  516. public function delShoppingCartAD()
  517. {
  518. $requireData = $this->request->all();
  519. $validator = $this->validationFactory->make(
  520. $requireData,
  521. [
  522. 'shopping_id' =>'required|integer',
  523. 'pid' =>'required|integer'
  524. ],
  525. [
  526. 'shopping_id.required' => '购物订单id不能为空',
  527. 'shopping_id.integer' => '购物订单id格式不正确',
  528. 'pid.required' => '广告位id不能为空',
  529. 'pid.integer' => '广告位id格式不正确',
  530. ]
  531. );
  532. if ($validator->fails()) {
  533. $errorMessage = $validator->errors()->first();
  534. return Result::error($errorMessage);
  535. }
  536. $requireData['user_id'] = Context::get("UserId");
  537. $result = $this->orderServiceClient->delShoppingCartAD($requireData);
  538. return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
  539. }
  540. }