OrderController.php 18 KB

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