Order.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace app\controller\admin;
  3. use app\extra\life\data\LifeOrder;
  4. use app\model\hx\HxOrderLife;
  5. use app\model\hx\HxStorePoi;
  6. use app\service\hx\GoodsService;
  7. use app\service\hx\OrderService;
  8. use support\Request;
  9. use support\Response;
  10. class Order
  11. {
  12. public function getOrderList(Request $request): Response
  13. {
  14. try {
  15. $param = $request->all();
  16. if (!empty($request->user['agent_id'])) {
  17. $param['agent'] = $request->user['agent_id'];
  18. }
  19. $data = (new OrderService)->setModel()->getList($param,['agent' => function($query){
  20. $query->field("agent_id,name");
  21. },'goods' => function($query){
  22. $query->field("product_id,product_name,actual_amount");
  23. },'poi' => function($query){
  24. $query->field("poi_id,poi_name");
  25. }]);
  26. return successTrans('success.data',pageFormat($data),200);
  27. } catch (\Throwable $throwable) {
  28. return error($throwable->getMessage());
  29. }
  30. }
  31. public function doneOrder(Request $request): Response
  32. {
  33. try {
  34. $param = v_valid([
  35. "order.require" => "订单信息错误",
  36. ], "post");
  37. if (!is_array($param)) return error($param);
  38. $order = (new HxOrderLife)->where("order_id", $param["order"])->with(['agent'])->findOrEmpty();
  39. if ($order->isEmpty()) return error("订单信息错误");
  40. if ($order['status'] <> 3) return error("订单状态不支持该操作");
  41. $order->status = 4;
  42. $order->order_status = "交易关闭";
  43. $order->save();
  44. } catch (\Throwable $throwable) {
  45. return error($throwable->getMessage());
  46. }
  47. }
  48. public function verifyOrder(Request $request): Response
  49. {
  50. try {
  51. $param = v_valid([
  52. "order.require" => "订单信息错误",
  53. "poi.require" => "POI信息错误"
  54. ],"post");
  55. if (!is_array($param)) return error($param);
  56. $order = (new HxOrderLife)->where("order_id",$param["order"])->with(['agent'])->findOrEmpty();
  57. if ($order->isEmpty()) return error("订单信息错误");
  58. if ($order['status'] <> 1) return error("该订单状态不支持核销");
  59. $poi = (new HxStorePoi)->where("poi_id",$param['poi'])->findOrEmpty();
  60. if ($poi->isEmpty()) return error("订单信息错误");
  61. $startTime = $poi['order_start']??'09:00';
  62. $endTime = $poi['order_end']??'22:30';
  63. $startTimeStamp = strtotime(date("Y-m-d {$startTime}:00"));
  64. $endTimeStamp = strtotime(date("Y-m-d {$endTime}:00"));
  65. if (time() > $startTimeStamp && time() < $endTimeStamp)
  66. {
  67. // 先查下券码信息
  68. $order['agent']['version'] = "res";
  69. $orderCert = (new LifeOrder)->config($order['agent']->toArray())->token()->getCertificate($order['order_id'],$order['agent']['account']);
  70. if (!isset($orderCert['certificates'][0]['encrypted_code'])) return error("订单券码信息获取失败,请重试!");
  71. $encrypted_code = array_map(function ($v) {
  72. return $v['encrypted_code'];
  73. }, $orderCert['certificates']);
  74. $verifyResp = (new LifeOrder)->config($order['agent']->toArray())->token()->verifyCertificate([
  75. "account_id" => $order['agent']['account'],
  76. "order_id" => $order['order_id'],
  77. "poi_id" => $param['poi'],
  78. "encrypted_code" => $encrypted_code
  79. ]);
  80. if ($verifyResp['error_code'] <> 0) return error($verifyResp['description']);
  81. $order->status = 4;
  82. $order->order_status = '已核销';
  83. $order->poi_id = $param['poi'];
  84. $order->done_at = getDateFull();
  85. $order->save();
  86. return success("核销成功");
  87. }
  88. return error("当前时间段不支持核销");
  89. } catch (\Throwable $throwable) {
  90. echo getDateFull()."==核销报错\n";
  91. echo $throwable->getMessage()."\n";
  92. echo $throwable->getFile()."【".$throwable->getLine()."】\n";
  93. return error($throwable->getMessage());
  94. }
  95. }
  96. }