arrival_notice.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. /**
  3. * 商品到货通知提醒
  4. *
  5. * 建议每天触发一次
  6. *
  7. *
  8. */
  9. defined('InShopNC') or exit('Access Invalid!');
  10. class arrival_noticeControl {
  11. private $_num = 100; // 每次通知消息数量
  12. /**
  13. * 初始化对象
  14. */
  15. public function __construct(){
  16. register_shutdown_function(array($this,"shutdown"));
  17. }
  18. /**
  19. * 通知
  20. */
  21. public function indexOp() {
  22. $strat_time = strtotime("-30 day"); // 只通知最近30天的记录
  23. $model_arrtivalnotice = Model('arrival_notice');
  24. $count = $model_arrtivalnotice->getArrivalNoticeCount(array());
  25. $times = ceil($count/$this->_num);
  26. if ($times == 0) return false;
  27. for ($i = 0; $i <= $times; $i++) {
  28. // 删除30天之前的记录
  29. $model_arrtivalnotice->delArrivalNotice(array('an_addtime' => array('lt', $strat_time)));
  30. $notice_list = $model_arrtivalnotice->getArrivalNoticeList(array(), '*', $i.','.$this->_num);
  31. if (empty($notice_list)) continue;
  32. // 查询商品是否已经上架
  33. $goodsid_array = array();
  34. foreach ($notice_list as $val) {
  35. $goodsid_array[] = $val['goods_id'];
  36. }
  37. $goodsid_array = array_unique($goodsid_array);
  38. $goods_list = Model('goods')->getGoodsOnlineList(array('goods_id' => array('in', $goodsid_array), 'goods_storage' => array('gt', 0)), 'goods_id');
  39. if (empty($goods_list)) continue;
  40. // 需要通知到货的商品
  41. $goodsid_array = array();
  42. foreach ($goods_list as $val) {
  43. $goodsid_array[] = $val['goods_id'];
  44. }
  45. // 根据商品id重新查询需要通知的列表
  46. $notice_list = $model_arrtivalnotice->getArrivalNoticeList(array('goods_id' => array('in', $goodsid_array)), '*');
  47. if (empty($notice_list)) continue;
  48. foreach ($notice_list as $val) {
  49. $param = array();
  50. $param['code'] = 'arrival_notice';
  51. $param['member_id'] = $val['member_id'];
  52. $param['param'] = array(
  53. 'goods_name' => $val['goods_name'],
  54. 'goods_url' => urlShop('goods', 'index', array('goods_id' => $val['goods_id']))
  55. );
  56. QueueClient::push('sendMemberMsg', $param);
  57. }
  58. // 清楚发送成功的数据
  59. $model_arrtivalnotice->delArrivalNotice(array('goods_id' => array('in', $goodsid_array)));
  60. }
  61. }
  62. /**
  63. * 执行完成提示信息
  64. *
  65. */
  66. public function shutdown(){
  67. exit("success at ".date('Y-m-d H:i:s',time())."\n");
  68. }
  69. }