SyncOrder.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. "pay_at" => date("Y-m-d H:i:s",$data['pay_time']),
  45. "start_time" => date("Y-m-d H:i:s",$val['start_time']),
  46. ];
  47. } else {
  48. $orderEx->save([
  49. "expire_at" => date("Y-m-d H:i:s",$val['expire_time']),
  50. "out_id" => $val['sku_info']['sku_id'],
  51. "product_name" => $val['sku_info']['title'],
  52. "groupon_type" => $val['sku_info']['groupon_type'],
  53. "certificate_id" => $val['certificate_id']??'',
  54. "start_time" => date("Y-m-d H:i:s",$val['start_time']),
  55. ]);
  56. }
  57. }
  58. if (!empty($orderData)) {
  59. (new SaasOrderLife)->insertAll(array_values($orderData));
  60. }
  61. return true;
  62. }
  63. protected function getDyConfig(): array
  64. {
  65. return ["appid" => sConf('dy.appid'),'secret' => sConf('dy.secret')];
  66. }
  67. }