broadcast_order.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 2017/11/15
  6. * Time: 下午4:20
  7. */
  8. namespace async;
  9. use push_helper;
  10. use order_helper;
  11. use member_info;
  12. use Exception;
  13. use bonus;
  14. use bonus_helper;
  15. use Log;
  16. use util;
  17. class broadcast_order extends IAsync
  18. {
  19. private $simple_order;
  20. private $user_info;
  21. private $paysn;
  22. public function __construct($paysn)
  23. {
  24. $this->paysn = $paysn;
  25. $order = $this->order(['pay_sn' => $paysn]);
  26. if(empty($order)) throw new Exception("错误的订单");
  27. $this->simple_order = new simple_order($order);
  28. $user = $this->simple_order->user();
  29. $this->user_info = new member_info($user);
  30. }
  31. public function run()
  32. {
  33. }
  34. public function order_bonus($amount,$days = 30)
  35. {
  36. $mod_member = Model('member');
  37. $days = intval($days);
  38. $cond['member_time'] = ['gt',util::first_day_secs(time() - $days * 86400)];
  39. $i = 0;
  40. while (true)
  41. {
  42. $start = $i * 1000;
  43. $items = $mod_member->field('member_id')->where($cond)->order('member_id asc')->limit("{$start},1000")->select();
  44. if(empty($items)) {
  45. return;
  46. }
  47. $i++;
  48. $uids = [];
  49. foreach ($items as $item)
  50. {
  51. $user = intval($item['member_id']);
  52. if($user <= 0) continue;
  53. $uids[] = $user;
  54. }
  55. $num = count($uids);
  56. $params = bonus\parameters::order_complete_all($this->user_info->nickname(),$num,$amount);
  57. foreach ($params as $param)
  58. {
  59. $type = bonus_helper::create_type_input($param);
  60. $rate = $type->bonus_rate();
  61. $ret = bonus_helper::make_bonus($param,$param['rate_money']);
  62. if($ret != false)
  63. {
  64. $type_sn = $ret['type_sn'];
  65. bonus_helper::send($type_sn,$uids);
  66. foreach ($uids as $user)
  67. {
  68. try
  69. {
  70. push_helper::all_order_complete_bonus($user,$this->user_info,$amount,$rate,$type_sn);
  71. $this->add_reward($user,$amount);
  72. usleep(100000);
  73. }
  74. catch (Exception $ex) {
  75. Log::record(__METHOD__ . " error " . $ex->getTraceAsString(),Log::ERR);
  76. }
  77. }
  78. }
  79. else {
  80. return false;
  81. }
  82. }
  83. }
  84. return true;
  85. }
  86. private function order($condition)
  87. {
  88. $model_order = Model('order');
  89. $order_list = $model_order->getNormalOrderList($condition,0, '*', 'order_id desc', '', ['order_common','order_address', 'order_goods']);
  90. $order_helper = new order_helper($order_list);
  91. $orders = $order_helper->format();
  92. if(!empty($orders)) {
  93. return $orders[0];
  94. } else {
  95. return false;
  96. }
  97. }
  98. }