minutes.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <?php
  2. /**
  3. * 任务计划 - 分钟执行的任务
  4. *
  5. *
  6. *
  7. *
  8. */
  9. defined('InShopNC') or exit('Access Invalid!');
  10. class minutesControl extends BaseCronControl {
  11. /**
  12. * 默认方法
  13. */
  14. public function indexOp() {
  15. $this->_cron_common();
  16. $this->_web_index_update();
  17. $this->_cron_mail_send();
  18. }
  19. /**
  20. * 更新首页的商品价格信息
  21. */
  22. private function _web_index_update(){
  23. Model('web_config')->updateWebGoods();
  24. }
  25. /**
  26. * 发送邮件消息
  27. */
  28. private function _cron_mail_send() {
  29. //每次发送数量
  30. $_num = 50;
  31. $model_storemsgcron = Model('mail_cron');
  32. $cron_array = $model_storemsgcron->getMailCronList(array(), $_num);
  33. if (!empty($cron_array)) {
  34. $email = new Email();
  35. $mail_array = array();
  36. foreach ($cron_array as $val) {
  37. $return = $email->send_sys_email($val['mail'],$val['subject'],$val['contnet']);
  38. if ($return) {
  39. // 记录需要删除的id
  40. $mail_array[] = $val['mail_id'];
  41. }
  42. }
  43. // 删除已发送的记录
  44. $model_storemsgcron->delMailCron(array('mail_id' => array('in', $mail_array)));
  45. }
  46. }
  47. /**
  48. * 执行通用任务
  49. */
  50. private function _cron_common(){
  51. //查找待执行任务
  52. $model_cron = Model('cron');
  53. $cron = $model_cron->getCronList(array('exetime'=>array('elt',TIMESTAMP)));
  54. if (!is_array($cron)) return ;
  55. $cron_array = array(); $cronid = array();
  56. foreach ($cron as $v) {
  57. $cron_array[$v['type']][$v['exeid']] = $v;
  58. }
  59. foreach ($cron_array as $k=>$v) {
  60. // 如果方法不存是,直接删除id
  61. if (!method_exists($this,'_cron_'.$k)) {
  62. $tmp = current($v);
  63. $cronid[] = $tmp['id'];continue;
  64. }
  65. $result = call_user_func_array(array($this,'_cron_'.$k),array($v));
  66. if (is_array($result)){
  67. $cronid = array_merge($cronid,$result);
  68. }
  69. }
  70. //删除执行完成的cron信息
  71. if (!empty($cronid) && is_array($cronid)){
  72. $model_cron->delCron(array('id'=>array('in',$cronid)));
  73. }
  74. }
  75. /**
  76. * 上架
  77. *
  78. * @param array $cron
  79. */
  80. private function _cron_1($cron = array()){
  81. $condition = array('goods_commonid' => array('in',array_keys($cron)));
  82. $update = Model('goods')->editProducesOnline($condition);
  83. if ($update){
  84. //返回执行成功的cronid
  85. $cronid = array();
  86. foreach ($cron as $v) {
  87. $cronid[] = $v['id'];
  88. }
  89. }else{
  90. return false;
  91. }
  92. return $cronid;
  93. }
  94. /**
  95. * 根据商品id更新商品促销价格
  96. *
  97. * @param array $cron
  98. */
  99. private function _cron_2($cron = array()){
  100. $condition = array('goods_id' => array('in',array_keys($cron)));
  101. $update = Model('goods')->editGoodsPromotionPrice($condition);
  102. if ($update){
  103. //返回执行成功的cronid
  104. $cronid = array();
  105. foreach ($cron as $v) {
  106. $cronid[] = $v['id'];
  107. }
  108. }else{
  109. return false;
  110. }
  111. return $cronid;
  112. }
  113. /**
  114. * 优惠套装过期
  115. *
  116. * @param array $cron
  117. */
  118. private function _cron_3($cron = array()) {
  119. $condition = array('store_id' => array('in', array_keys($cron)));
  120. $update = Model('p_bundling')->editBundlingQuotaClose($condition);
  121. if ($update) {
  122. //返回执行成功的cronid
  123. $cronid = array();
  124. foreach ($cron as $v) {
  125. $cronid[] = $v['id'];
  126. }
  127. } else {
  128. return false;
  129. }
  130. return $cronid;
  131. }
  132. /**
  133. * 推荐展位过期
  134. *
  135. * @param array $cron
  136. */
  137. private function _cron_4($cron = array()) {
  138. $condition = array('store_id' => array('in', array_keys($cron)));
  139. $update = Model('p_booth')->editBoothClose($condition);
  140. if ($update) {
  141. //返回执行成功的cronid
  142. $cronid = array();
  143. foreach ($cron as $v) {
  144. $cronid[] = $v['id'];
  145. }
  146. } else {
  147. return false;
  148. }
  149. return $cronid;
  150. }
  151. /**
  152. * 抢购开始更新商品促销价格
  153. *
  154. * @param array $cron
  155. */
  156. private function _cron_5($cron = array()) {
  157. $condition = array();
  158. $condition['goods_commonid'] = array('in', array_keys($cron));
  159. $condition['start_time'] = array('lt', TIMESTAMP);
  160. $condition['end_time'] = array('gt', TIMESTAMP);
  161. $groupbuy = Model('groupbuy')->getGroupbuyList($condition);
  162. foreach ($groupbuy as $val) {
  163. Model('goods')->editGoods(array('goods_promotion_price' => $val['groupbuy_price'], 'goods_promotion_type' => 1), array('goods_commonid' => $val['goods_commonid']));
  164. }
  165. //返回执行成功的cronid
  166. $cronid = array();
  167. foreach ($cron as $v) {
  168. $cronid[] = $v['id'];
  169. }
  170. return $cronid;
  171. }
  172. /**
  173. * 抢购过期
  174. *
  175. * @param array $cron
  176. */
  177. private function _cron_6($cron = array()) {
  178. $condition = array('goods_commonid' => array('in', array_keys($cron)));
  179. //抢购活动过期
  180. $update = Model('groupbuy')->editExpireGroupbuy($condition);
  181. if ($update){
  182. //返回执行成功的cronid
  183. $cronid = array();
  184. foreach ($cron as $v) {
  185. $cronid[] = $v['id'];
  186. }
  187. }else{
  188. return false;
  189. }
  190. return $cronid;
  191. }
  192. /**
  193. * 限时折扣过期
  194. *
  195. * @param array $cron
  196. */
  197. private function _cron_7($cron = array()) {
  198. $condition = array('xianshi_id' => array('in', array_keys($cron)));
  199. //限时折扣过期
  200. $update = Model('p_xianshi')->editExpireXianshi($condition);
  201. if ($update){
  202. //返回执行成功的cronid
  203. $cronid = array();
  204. foreach ($cron as $v) {
  205. $cronid[] = $v['id'];
  206. }
  207. }else{
  208. return false;
  209. }
  210. return $cronid;
  211. }
  212. }