GiveCouponsCommand.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. /**
  3. * 老用户发放优惠券
  4. * @author >
  5. */
  6. class GiveCouponsCommand extends CConsoleCommand{
  7. public function run($args) {
  8. error_reporting(E_ALL);
  9. ini_set('memory_limit', '256M');
  10. set_time_limit(0);
  11. /*
  12. *给所有的上海市用户发放优惠券
  13. */
  14. $criteria = new EMongoCriteria();
  15. $criteria->addCond('city_info.province','==','上海市');
  16. // $criteria->addCond('user_name','==','逗你玩');
  17. //$criteria->addCond('user_name','==','charlie');
  18. var_dump(RUser::model()->count($criteria));
  19. sleep(3);
  20. $cursor = RUser::model()->findAll($criteria);
  21. $start_time = time(); //发放优惠券可用开始时间
  22. $end_time = $start_time + 86400*30; //发放优惠券过期时间
  23. $coupon_ids = array(); //发放优惠券id数组,可发放多张
  24. $coupon_ids[] = '56c58f37a84ea0554d8d3161';
  25. $coupon_ids[] = '56c58f80a84ea0a6258c51af';
  26. $coupon_ids[] = '56c58e2fa84ea0b14c8d448a';
  27. $i = 1;
  28. $cache = new ARedisCache();
  29. foreach ($cursor as $value) {
  30. $user_id = (string)$value->_id;
  31. $sendstat = $cache->get('sendcoupons_'.$user_id);
  32. echo $i++;
  33. if($sendstat){
  34. continue;
  35. }
  36. $cache->set('sendcoupons_'.$user_id,1,86400);
  37. $smsservice = Service::factory('SendSMSService');
  38. var_dump($this->SendCoupon($value->_id,$coupon_ids,$start_time,$end_time));
  39. //TODO:发送短信
  40. try {
  41. if($value->shop_address){
  42. foreach ($value->shop_address as $address) {
  43. if(isset($address['mobile'])){
  44. $status = $cache->get('sendsms_'.$address['mobile']);
  45. if(!$status){
  46. $sms_data['tpl'] = '【壹管家】送你60元代金券,可用于全部上门服务,下单立减→http://t.cn/ 回T退订';
  47. $sms_data['mobile'] = $address['mobile'];
  48. $list = new ARedisList('send_sms_list');
  49. $list->push(json_encode($sms_data));
  50. $cache->set('sendsms_'.$address['mobile'],1,86400);
  51. }
  52. }
  53. }
  54. }else{
  55. $data = array();
  56. $time_str = CommonFn::sgmdate("Y年n月d日", time(),1);
  57. $data['content'] = '送你60元代金券,可用于全部上门服务,下单立减→<a href="http://common.yiguanjia.club/index.php?r=o2o/web/index&need_header=0">点击这里</a>预约';
  58. $data['title'] = '系统通知';
  59. $data['custom'] = array(
  60. 'type'=>'user_status',
  61. 'data'=>array(
  62. 'status'=>1,
  63. 'user_id'=>$user_id,
  64. 'time'=>time(),
  65. 'time_str'=>$time_str
  66. )
  67. );
  68. $data['account'] = $user_id;
  69. $ios_data = array();
  70. $ios_data['alert'] = '系统通知:' . $data['content'];
  71. $ios_data['account'] = $user_id;
  72. $ios_data['custom'] = array(
  73. 't'=>'a',
  74. 'v'=>1,
  75. );
  76. $z_push = new ZPush();
  77. $z_push->PushSingleAccount($data,$ios_data);
  78. }
  79. } catch (Exception $e) {
  80. continue;
  81. }
  82. }
  83. }
  84. private function SendCoupon($user_id,$coupons,$start_time,$end_time){
  85. $cache = new ARedisCache();
  86. $status = $cache->get('send_coupon_status_20160526'.(string)$user_id);
  87. if(!$status){
  88. $status = true;
  89. foreach ($coupons as $coupon_id) {
  90. $coupon_id = new MongoId($coupon_id);
  91. $status = $status&&Service::factory('CouponService')->giveCoupon($user_id,$coupon_id,$start_time,$end_time);
  92. }
  93. $cache->set('send_coupon_status_'.(string)$user_id,1,86400);
  94. return $status;
  95. }else {
  96. return true;
  97. }
  98. }
  99. }