SyncOrder.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace app\queue\redis;
  3. use app\extra\douyin\Client;
  4. use app\extra\life\OrderLife;
  5. use app\model\saas\SaasOrderLife;
  6. use app\model\saas\SaasOrderLog;
  7. use app\model\saas\SaasStore;
  8. use Webman\RedisQueue\Consumer;
  9. use Webman\RedisQueue\Redis;
  10. class SyncOrder implements Consumer
  11. {
  12. public $queue = "sync-order";
  13. public $connection = "default";
  14. public function consume($data): bool
  15. {
  16. if (empty($data['order'])) return true;
  17. if (empty($data['openid'])) return true;
  18. $order = (new SaasOrderLife)->where("order_id",$data['order'])->findOrEmpty();
  19. if (!$order->isEmpty()) return true;
  20. $resp = (new Client)->config($this->getDyConfig())->token()->queryOrderStore($data['order']);
  21. if (empty($resp['data']['certificates'])) return true;
  22. echo getDateFull()."同步订单\n";
  23. print_r($data);
  24. echo json_encode($resp);
  25. $lifeOrder = $resp['data'];
  26. $orderData = [];
  27. foreach ($lifeOrder['certificates'] as $key=>$val) {
  28. $orderEx = (new SaasOrderLife)->where("order_id",$lifeOrder['order_id'])->where("certificate_id",$val['certificate_id'])->findOrEmpty();
  29. if ($orderEx->isEmpty()) {
  30. $store = (new SaasStore)->where("store_id",$val['sku_info']['account_id'])->findOrEmpty();
  31. $orderData[$key] = [
  32. "open_id" => $data['openid'],
  33. "agent_id" => $store['agent_id']??'',
  34. "store_id" => $store['store_id']??'',
  35. "order_id" => $lifeOrder['order_id'],
  36. "pay_amount" => $val['amount']['pay_amount'],
  37. "order_amount" => $val['amount']['original_amount'],
  38. "expire_at" => date("Y-m-d H:i:s",$val['expire_time']),
  39. "out_id" => $val['sku_info']['sku_id'],
  40. "product_name" => $val['sku_info']['title'],
  41. "groupon_type" => $val['sku_info']['groupon_type'],
  42. "certificate_id" => $val['certificate_id']??'',
  43. "status" => 1,
  44. "start_time" => date("Y-m-d H:i:s",$val['start_time']),
  45. ];
  46. } else {
  47. $orderEx->save([
  48. "expire_at" => date("Y-m-d H:i:s",$val['expire_time']),
  49. "out_id" => $val['sku_info']['sku_id'],
  50. "product_name" => $val['sku_info']['title'],
  51. "groupon_type" => $val['sku_info']['groupon_type'],
  52. "certificate_id" => $val['certificate_id']??'',
  53. "start_time" => date("Y-m-d H:i:s",$val['start_time']),
  54. ]);
  55. }
  56. }
  57. if (!empty($orderData)) {
  58. (new SaasOrderLife)->insertAll(array_values($orderData));
  59. }
  60. return true;
  61. }
  62. protected function getDyConfig(): array
  63. {
  64. return ["appid" => sConf('dy.appid'),'secret' => sConf('dy.secret')];
  65. }
  66. }