CreateOrder.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace app\event;
  3. use app\model\saas\SaasCart;
  4. use app\model\saas\SaasOrder;
  5. use app\model\saas\SaasOrderDetail;
  6. use Webman\RedisQueue\Redis;
  7. class CreateOrder
  8. {
  9. public function createOrder(array $data = [])
  10. {
  11. try {
  12. $cart = (new SaasCart)->where("shop_id",$data['shop'])->where("openid",$data['openid'])->where("print_id",$data['print'])->order("create_at desc")->select();
  13. if ($cart->isEmpty()) return success('ok',['cart' => []]);
  14. $order = (new SaasOrder)->where("order_sn",$data['order'])->findOrEmpty();
  15. $orderDetail = [];
  16. $print_name = !empty($order['print_name']) ? explode("-",$order['print_name']) : [];
  17. $printNameOut = $print_name[1] ?? '';
  18. // echo "订单号:{$data['order']}====打印机名:{$printNameOut}====打印机id:{$order['print_id']}\n";
  19. foreach ($cart->toArray() as $key=>$val)
  20. {
  21. unset($val['id']);
  22. $orderDetail[$key] = $val;
  23. $orderDetail[$key]['order_sn'] = $data['order'];
  24. $orderDetail[$key]['print_id'] = $order['print_id']?$order['print_id']:$val['print_id'];
  25. $orderDetail[$key]['print_name'] = $print_name[1] ?? $val['print_name'];
  26. $orderDetail[$key]['status'] = 1;
  27. // if ($val['extension'] == "pdf") {
  28. // $orderDetail[$key]['status'] = 1;
  29. // } else {
  30. // $orderDetail[$key]['status'] = 0;
  31. // }
  32. }
  33. $state = (new SaasOrderDetail)->strict(false)->insertAll($orderDetail);
  34. events("push-print",['type' => 'order' , 'order' => $data['order']]);
  35. // Redis::send("push-print",['type' => 'order' , 'order' => $data['order']]);
  36. // events("merge-pdf",$data);
  37. if (empty($printNameOut)) {
  38. $order->print_name = $cart[0]['print_name']??'';
  39. $order->save();
  40. }
  41. (new SaasCart)->where("shop_id",$data['shop'])->where("openid",$data['openid'])->delete();
  42. } catch (\Throwable $throwable) {
  43. echo "写入订单详情错误\n";
  44. echo $throwable->getLine()."\n";
  45. echo $throwable->getFile()."\n";
  46. echo $throwable->getMessage()."\n";
  47. return error($throwable->getMessage());
  48. }
  49. }
  50. }