OrderController.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  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. return Result::success($data);
  47. }
  48. /**
  49. * 获取广告尺寸及查询广告位
  50. */
  51. public function getAD()
  52. {
  53. $requireData = $this->request->all();
  54. if(!empty($requireData)){
  55. $validator = $this->validationFactory->make(
  56. $requireData,
  57. [
  58. 'ad_size_id' => 'required',
  59. 'starttime' => 'required',
  60. 'endtime' => 'required',
  61. 'pageSize' => 'required',
  62. 'page' => 'required',
  63. ],
  64. [
  65. 'ad_size_id.required' => '广告尺寸id不能为空',
  66. 'starttime.required' => '广告开始时间不能为空',
  67. 'endtime.required' => '广告结束时间不能为空',
  68. 'pageSize.required' => '显示条数不能为空',
  69. 'page.required' => '分页不能为空',
  70. ]
  71. );
  72. if ($validator->fails()) {
  73. $errorMessage = $validator->errors()->first();
  74. return Result::error($errorMessage);
  75. }
  76. }
  77. $result = $this->orderServiceClient->getAD($requireData);
  78. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  79. }
  80. /**
  81. * 根据网站查找广告位
  82. */
  83. public function getWebsiteAd()
  84. {
  85. $requireData = $this->request->all();
  86. $validator = $this->validationFactory->make(
  87. $requireData,
  88. [
  89. 'ad_size_id' => 'required',
  90. 'starttime' => 'required',
  91. 'endtime' => 'required',
  92. 'pageSize' => 'required',
  93. 'page' => 'required',
  94. ],
  95. [
  96. 'ad_size_id.required' => '广告尺寸id不能为空',
  97. 'starttime.required' => '广告开始时间不能为空',
  98. 'endtime.required' => '广告结束时间不能为空',
  99. 'pageSize.required' => '显示条数不能为空',
  100. 'page.required' => '分页不能为空'
  101. ]
  102. );
  103. if (!empty($requireData['website_id'])) {
  104. $validator = $this->validationFactory->make(
  105. $requireData,
  106. [
  107. 'website_id' => 'required'
  108. ],
  109. [
  110. 'website_id.required' => '网站id不能为空'
  111. ]
  112. );
  113. }
  114. if ($validator->fails()) {
  115. $errorMessage = $validator->errors()->first();
  116. return Result::error($errorMessage);
  117. }
  118. $result = $this->orderServiceClient->getWebsiteAd($requireData);
  119. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  120. }
  121. public function getOrderListAdmin()
  122. {
  123. $requireData = $this->request->all();
  124. $validator = $this->validationFactory->make(
  125. $requireData,
  126. [
  127. 'pageSize' => 'required',
  128. 'page' => 'required',
  129. ],
  130. [
  131. 'pageSize.required' => '显示条数不能为空',
  132. 'page.required' => '分页不能为空',
  133. ]
  134. );
  135. if ($validator->fails()) {
  136. $errorMessage = $validator->errors()->first();
  137. return Result::error($errorMessage);
  138. }
  139. $result = $this->orderServiceClient->getOrderListAdmin($requireData);
  140. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  141. }
  142. /**
  143. * 获取广告订单价格
  144. */
  145. public function getPrice(){
  146. $requireData = $this->request->all();
  147. $validator = $this->validationFactory->make(
  148. $requireData,
  149. [
  150. 'starttime' => 'required',
  151. 'endtime' => 'required',
  152. ],
  153. [
  154. 'starttime.required' => '广告开始时间不能为空',
  155. 'endtime.required' => '广告结束时间不能为空',
  156. ]
  157. );
  158. if ($validator->fails()) {
  159. $errorMessage = $validator->errors()->first();
  160. return Result::error($errorMessage);
  161. }
  162. // var_dump($requireData);
  163. $result = $this->orderServiceClient->getPrice($requireData);
  164. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  165. }
  166. /**
  167. * 添加订单
  168. */
  169. public function addAD()
  170. {
  171. $requireData = $this->request->all();
  172. $validator = $this->validationFactory->make(
  173. $requireData,
  174. [
  175. 'name' => 'required',
  176. 'ad_size_id' => 'required',
  177. 'starttime' => 'required',
  178. 'endtime' => 'required',
  179. 'imgurl' => 'required',
  180. 'imgsrc' => 'required',
  181. 'pid' => 'required',
  182. 'price' =>'required'
  183. ],
  184. [
  185. 'name.required' => '广告名称不能为空',
  186. 'ad_size_id.required' => '广告图片尺寸id不能为空',
  187. 'starttime.required' => '广告开始时间不能为空',
  188. 'endtime.required' => '广告结束时间不能为空',
  189. 'imgurl.required' => '图片广告链接不能为空',
  190. 'imgsrc.required' => '图片广告地址不能为空',
  191. 'pid.required' => '广告位id不能为空',
  192. 'price.required' => '价格不能为空'
  193. ]
  194. );
  195. if ($validator->fails()) {
  196. $errorMessage = $validator->errors()->first();
  197. return Result::error($errorMessage);
  198. }
  199. $requireData['user_id'] = Context::get("UserId");
  200. $result = $this->orderServiceClient->addAD($requireData);
  201. // return $requireData;
  202. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  203. }
  204. /**
  205. * 获取订单列表
  206. */
  207. public function getOrderList()
  208. {
  209. $requireData = $this->request->all();
  210. $validator = $this->validationFactory->make(
  211. $requireData,
  212. [
  213. 'pageSize' => 'required',
  214. 'page' => 'required',
  215. ],
  216. [
  217. 'pageSize.required' => '显示条数不能为空',
  218. 'page.required' => '分页不能为空',
  219. ]
  220. );
  221. if (isset($requireData['status'])) {
  222. $validator = $this->validationFactory->make(
  223. $requireData,
  224. [
  225. 'status' => 'required',
  226. ],
  227. [
  228. 'status.required' => '状态不能为空',
  229. ]
  230. );
  231. }
  232. if ($validator->fails()) {
  233. $errorMessage = $validator->errors()->first();
  234. return Result::error($errorMessage);
  235. }
  236. $requireData['user_id'] = Context::get("UserId");
  237. $result = $this->orderServiceClient->getOrderList($requireData);
  238. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  239. }
  240. /**
  241. * 获取订单详情
  242. */
  243. public function getOrderDetail()
  244. {
  245. $requireData = $this->request->all();
  246. $validator = $this->validationFactory->make(
  247. $requireData,
  248. [
  249. 'order_id' => 'required',
  250. 'pageSize' => 'required',
  251. 'page' => 'required',
  252. ],
  253. [
  254. 'name.required' => '订单id不能为空',
  255. 'pageSize.required' => '显示条数不能为空',
  256. 'page.required' => '分页不能为空',
  257. ]
  258. );
  259. if ($validator->fails()) {
  260. $errorMessage = $validator->errors()->first();
  261. return Result::error($errorMessage);
  262. }
  263. $requireData['user_id'] = Context::get("UserId");
  264. $result = $this->orderServiceClient->getOrderDetail($requireData);
  265. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  266. }
  267. /***
  268. * 撤回订单
  269. */
  270. public function cancelOrder()
  271. {
  272. $requireData = $this->request->all();
  273. $validator = $this->validationFactory->make(
  274. $requireData,
  275. [
  276. 'order_id' => 'required',
  277. ],
  278. [
  279. 'name.required' => '订单id不能为空',
  280. ]
  281. );
  282. if ($validator->fails()) {
  283. $errorMessage = $validator->errors()->first();
  284. return Result::error($errorMessage);
  285. }
  286. $requireData['user_id'] = Context::get("UserId");
  287. $result = $this->orderServiceClient->cancelOrder($requireData);
  288. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  289. }
  290. // 获取订单详情
  291. public function getOrderDetailAdmin()
  292. {
  293. $requireData = $this->request->all();
  294. $validator = $this->validationFactory->make(
  295. $requireData,
  296. [
  297. 'id' => 'required',
  298. ],
  299. [
  300. 'id.required' => '订单id不能为空',
  301. ]
  302. );
  303. if ($validator->fails()) {
  304. $errorMessage = $validator->errors()->first();
  305. return Result::error($errorMessage);
  306. }
  307. $result = $this->orderServiceClient->getOrderDetailAdmin($requireData);
  308. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  309. }
  310. /**
  311. * 删除订单
  312. */
  313. public function delOrderAdmin()
  314. {
  315. $requireData = $this->request->all();
  316. $validator = $this->validationFactory->make(
  317. $requireData,
  318. [
  319. 'id' => 'required',
  320. ],
  321. [
  322. 'id.required' => '订单id不能为空',
  323. ]
  324. );
  325. if ($validator->fails()) {
  326. $errorMessage = $validator->errors()->first();
  327. return Result::error($errorMessage);
  328. }
  329. $result = $this->orderServiceClient->delOrderAdmin($requireData);
  330. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  331. }
  332. //审核订单状态
  333. public function applyOrderStatusAdmin()
  334. {
  335. $requireData = $this->request->all();
  336. $validator = $this->validationFactory->make(
  337. $requireData,
  338. [
  339. 'id' => 'required',
  340. ],
  341. [
  342. 'id.required' => 'id不能为空',
  343. ]
  344. );
  345. if ($validator->fails()) {
  346. $errorMessage = $validator->errors()->first();
  347. return Result::error($errorMessage);
  348. }
  349. $result = $this->orderServiceClient->applyOrderStatusAdmin($requireData);
  350. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  351. }
  352. //修改订单价格
  353. public function editPriceOrderAdmin()
  354. {
  355. $requireData = $this->request->all();
  356. $validator = $this->validationFactory->make(
  357. $requireData,
  358. [
  359. 'id' => 'required',
  360. 'price' => 'required|decimal:2',
  361. ],
  362. [
  363. 'id.required' => 'id不能为空',
  364. 'price.required' => '价格不能为空',
  365. 'price.decimal' => '价格格式不正确',
  366. ]
  367. );
  368. if ($validator->fails()) {
  369. $errorMessage = $validator->errors()->first();
  370. return Result::error($errorMessage);
  371. }
  372. $result = $this->orderServiceClient->editPriceOrderAdmin($requireData);
  373. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  374. }
  375. public function rejectOrderAdmin()
  376. {
  377. $requireData = $this->request->all();
  378. $validator = $this->validationFactory->make(
  379. $requireData,
  380. [
  381. 'id' => 'required',
  382. 'reason' => 'required',
  383. ],
  384. [
  385. 'id.required' => 'id不能为空',
  386. 'reason.required' => '原因不能为空',
  387. ]
  388. );
  389. if ($validator->fails()) {
  390. $errorMessage = $validator->errors()->first();
  391. return Result::error($errorMessage);
  392. }
  393. $result = $this->orderServiceClient->rejectOrderAdmin($requireData);
  394. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  395. }
  396. public function endOrderAdmin()
  397. {
  398. $requireData = $this->request->all();
  399. $validator = $this->validationFactory->make(
  400. $requireData,
  401. [
  402. 'id' => 'required',
  403. ],
  404. [
  405. 'id.required' => 'id不能为空',
  406. ]
  407. );
  408. if ($validator->fails()) {
  409. $errorMessage = $validator->errors()->first();
  410. return Result::error($errorMessage);
  411. }
  412. $result = $this->orderServiceClient->endOrderAdmin($requireData);
  413. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  414. }
  415. /**
  416. * 用户删除自己已失效的订单
  417. */
  418. public function delOrderAD()
  419. {
  420. $requireData = $this->request->all();
  421. $validator = $this->validationFactory->make(
  422. $requireData,
  423. [
  424. 'id' => 'required',
  425. ],
  426. [
  427. 'id.required' => '订单id不能为空',
  428. ]
  429. );
  430. if ($validator->fails()) {
  431. $errorMessage = $validator->errors()->first();
  432. return Result::error($errorMessage);
  433. }
  434. $result = $this->orderServiceClient->delOrderAD($requireData);
  435. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  436. }
  437. }