小说推广数据系统

MaiBuOrderList.php 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Log;
  4. use App\Models\Order;
  5. use App\Models\VpOrder;
  6. use App\RedisModel;
  7. use Illuminate\Console\Command;
  8. class MaiBuOrderList extends Command
  9. {
  10. protected $signature = 'MaiBuOrderList';
  11. protected $description = '迈步订单数据处理';
  12. public function handle()
  13. {
  14. \DB::connection()->disableQueryLog();
  15. $this->info(date('m-d H:i:s') . ' 开始整理');
  16. $beginTime = time();
  17. while(true){
  18. $this->saveOrder();
  19. if (time() - $beginTime > 600) {
  20. break;
  21. }
  22. }
  23. $this->info(date('m-d H:i:s') . ' 整理结束');
  24. }
  25. private function saveOrder()
  26. {
  27. try {
  28. $rdsKey = Order::MAI_Bu_ORDER_LIST_RDS;
  29. $orderInfoJson = RedisModel::rPop($rdsKey);
  30. if(empty($orderInfoJson)) {
  31. sleep(3);
  32. return false;
  33. }
  34. $orderInfo = json_decode($orderInfoJson, true);
  35. $platformId = 4;
  36. $orderId = isset($orderInfo['orderId']) ? $orderInfo['orderId'] : '';
  37. $appId = isset($orderInfo['gzh_appid']) ? $orderInfo['gzh_appid'] : '';
  38. $this->info('订单ID:'.$orderId);
  39. $this->info('公众号AppId:'.$appId);
  40. if(empty($orderId) || empty($appId)) {
  41. Log::logError('迈步订单数据异常', $orderInfo, 'MaiBuOrderList');
  42. return false;
  43. }
  44. $insertData = [
  45. 'pay_money' => $orderInfo['amount'] * 10000,
  46. 'user_id' => isset($orderInfo['nickname']) ? $orderInfo['nickname'] : '',
  47. 'platform_created_at' => $orderInfo['order_create_time'],
  48. 'platform_updated_at' => $orderInfo['order_pay_time'],
  49. 'pay_status' => $orderInfo['pay_status'],
  50. 'openid' => $orderInfo['gzh_openid'],
  51. 'user_register_time' => $orderInfo['follow_time'],
  52. 'mp_user_register_time' => $orderInfo['follow_time'],
  53. 'playlet_id' => $orderInfo['product_id'],
  54. 'playlet_name' => $orderInfo['product_name'],
  55. 'channel' => '',
  56. 'app_id' => $appId,
  57. ];
  58. VpOrder::updateOrCreate(
  59. ['platform_id' => $platformId, 'order_id' => (string)$orderId], $insertData
  60. );
  61. } catch (\Exception $e) {
  62. Log::logError('嘉书订单数据写入过程发生异常', [
  63. 'line' => $e->getLine(),
  64. 'msg' => $e->getMessage(),
  65. ], 'MaiBuOrderList');
  66. $this->info('更新失败');
  67. return false;
  68. }
  69. $this->info('更新成功');
  70. return true;
  71. }
  72. }