CronController.class.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640
  1. <?php
  2. /**
  3. * lionfish 商城系统
  4. *
  5. * ==========================================================================
  6. * @link http://www.liofis.com/
  7. * @copyright Copyright (c) 2015 liofis.com.
  8. * @license http://www.liofis.com/license.html License
  9. * ==========================================================================
  10. *
  11. * @author fish
  12. *
  13. */
  14. namespace Home\Controller;
  15. class CronController extends CommonController {
  16. protected function _initialize()
  17. {
  18. parent::_initialize();
  19. }
  20. public function index()
  21. {
  22. ignore_user_abort();
  23. set_time_limit(0);
  24. //------------------系统未支付订单超时关闭
  25. $lasttime = S('closeorder_lasttime');
  26. $lasttime = strtotime($lasttime);
  27. $interval = 3;//1分钟
  28. $interval *= 60;
  29. $current = time();
  30. //shop_domain get_config_by_name($name)
  31. $url = D('Home/Front')->get_config_by_name('shop_domain');
  32. $url = $url."/index.php?s=/Cron/close";
  33. if (($lasttime + $interval) <= $current) {
  34. S('closeorder_lasttime', date('Y-m-d H:i:s', $current));
  35. $url = $url."/index.php?s=/Cron/close";
  36. ihttp_request($url, NULL, NULL, 1);
  37. //ihttp_request($url, $post = '', $extra = array(), $timeout = 60)
  38. }
  39. $url = D('Home/Front')->get_config_by_name('shop_domain');
  40. $url = $url."/index.php?s=/Cron/statement";
  41. $lasttimestatement = S('statementorder');
  42. if( empty($lasttimestatement) )
  43. {
  44. $lasttimestatement = 0;
  45. }
  46. $intervalstatement = 1;//1分钟
  47. $intervalstatement *= 60;
  48. $currentstatement = time();
  49. if (($lasttimestatement + $intervalstatement) <= $currentstatement) {
  50. S('statementorder', $currentstatement);
  51. ihttp_request($url, NULL, NULL, 1);
  52. }
  53. //---
  54. $lasttimeautoreciveorder = $resultstatement = S('autoreciveorder');
  55. $intervalstatement = 1;//1分钟
  56. $intervalstatement *= 60;
  57. $currentstatement = time();
  58. $url = D('Home/Front')->get_config_by_name('shop_domain');
  59. $url = $url."/index.php?s=/Cron/receive";
  60. if (($lasttimeautoreciveorder + $intervalstatement) <= $currentstatement) {
  61. S('autoreciveorder', $currentstatement);
  62. ihttp_request($url, NULL, NULL, 1);
  63. }
  64. echo 3;
  65. }
  66. /**
  67. **/
  68. public function receive()
  69. {
  70. ignore_user_abort();
  71. set_time_limit(0);
  72. $shop_list = M('lionfish_comshop_config')->field('value')->where( array('name' => 'open_auto_recive_order' ) )->select();
  73. foreach($shop_list as $shop)
  74. {
  75. $open_auto_recive_order = $shop['value'];
  76. if($open_auto_recive_order == 1)
  77. {
  78. $receive_day = D('Home/Front')->get_config_by_name('auto_recive_order_time');
  79. $receive_hour_time = time() - 86400 * $receive_day;
  80. $order_list = M('lionfish_comshop_order')->field('order_id')->where( "express_time <={$receive_hour_time} and order_status_id =4" )->select();
  81. foreach($order_list as $order )
  82. {
  83. //检查是否有部分退款
  84. $order_refund_info = M('lionfish_comshop_order_refund')->field('ref_id')->where( array('order_id' => $order['order_id'], 'state' => 0 ) )->find();
  85. if( !empty($order_refund_info) )
  86. {
  87. continue;
  88. }
  89. D('Home/Frontorder')->receive_order($order['order_id'], true);
  90. }
  91. }
  92. }
  93. }
  94. public function statement()
  95. {
  96. ignore_user_abort();
  97. set_time_limit(0);
  98. //S('closeorder_lasttime');
  99. $statementorder_flag = S('statementorder_flag');
  100. if( !empty($statementorder_flag) && $statementorder_flag == 1 )
  101. {
  102. S('statementorder_flag', 0);
  103. die();
  104. }
  105. S('statementorder_flag', 1);
  106. $shop_list = M('lionfish_comshop_config')->field('value')->where( array('name' => 'open_aftersale' ) )->select();
  107. foreach($shop_list as $shop)
  108. {
  109. $open_aftersale = $shop['value'];
  110. if($open_aftersale == 1)
  111. {
  112. $time = time();
  113. $sql = "SELECT o.order_id , og.order_goods_id FROM ".C('DB_PREFIX')."lionfish_comshop_order as o , ".C('DB_PREFIX')."lionfish_comshop_order_goods as og
  114. WHERE o.order_id = og.order_id and o.order_status_id in(6,11) and og.is_statements_state = 0 and og.statements_end_time<{$time} order by o.order_id desc ";
  115. $order_list = M()->query($sql);
  116. foreach($order_list as $order )
  117. {
  118. D('Home/Frontorder')->settlement_order($order['order_id']);
  119. }
  120. }
  121. }
  122. S('statementorder_flag', 0);
  123. $runtimelog_flag = S('runtimelog_flag');
  124. $next_time = time()+86400;
  125. if( empty($runtimelog_flag) || $runtimelog_flag > $next_time )
  126. {
  127. $hour = date('H');
  128. $hour = intval($hour);
  129. if( $hour == 2 )
  130. {
  131. $this->clear_runtimelog();
  132. S('statementorder_flag', time() );
  133. }
  134. }
  135. }
  136. private function clear_runtimelog()
  137. {
  138. $logs_path = ROOT_PATH.'Runtime/Logs';
  139. $cache_path = ROOT_PATH.'Runtime/Cache';
  140. $temp_path = ROOT_PATH.'Runtime/Temp';
  141. $this->removeDir($logs_path);
  142. $this->removeDir($cache_path);
  143. $this->removeDir($temp_path);
  144. echo 'ok';
  145. }
  146. /**
  147. * removeDir 删除文件夹下所有文件
  148. * @param $path
  149. */
  150. private function removeDir($path)
  151. {
  152. if(is_dir($path)){
  153. if($handle = opendir($path)){
  154. while($file = readdir($handle)){
  155. if(is_dir($path.'/'.$file.'/') && $file!='.' && $file!='..'){
  156. $this->removeDir($path.'/'.$file.'/');
  157. } else {
  158. if($file!='.' && $file!='..'){
  159. @unlink($path.'/'.$file);
  160. }
  161. }
  162. }
  163. closedir($handle);
  164. }
  165. }
  166. }
  167. public function refund()
  168. {
  169. ignore_user_abort();
  170. set_time_limit(0);
  171. $daytimenow_ev56_s = time();
  172. $condition = " state=0 and end_time < ".$daytimenow_ev56_s;
  173. $pin_list = M()->query("select * from ".C('DB_PREFIX')."lionfish_comshop_pin
  174. where state=0 and end_time <{$daytimenow_ev56_s} order by pin_id asc ");
  175. $weixin_model = D('Home/Weixin');
  176. $pintuan_isvirs_success = D('Home/Front')->get_config_by_name('pintuan_isvirs_success');
  177. if(!empty($pin_list)) {
  178. foreach($pin_list as $pin)
  179. {
  180. //暂时屏蔽
  181. if( isset($pintuan_isvirs_success) && $pintuan_isvirs_success == 1 )
  182. {
  183. $res = D('Home/Pin')->jia_over_order( $pin['pin_id'] );
  184. if( $res )
  185. {
  186. continue;
  187. }
  188. }
  189. M('lionfish_comshop_pin')->where( array('pin_id' => $pin['pin_id'] ) )->save( array('state' => 2) );
  190. $pin_order_list = M('lionfish_comshop_pin_order')->where( array('pin_id' => $pin['pin_id'] ) )->select();
  191. $order_ids = array();
  192. foreach($pin_order_list as $vv)
  193. {
  194. $order_ids[] = $vv['order_id'];
  195. }
  196. $order_ids_str = implode(',', $order_ids);
  197. //ims_
  198. $order_list = M('lionfish_comshop_order')->field('order_id,type')->where(" order_id in ({$order_ids_str}) and order_status_id=2 ")->select();
  199. //https://sqtg.shiziyu888.com/index.php?s=/cron/refund/
  200. $can_cg_state = true;
  201. foreach($order_list as $order)
  202. {
  203. if( $order['type'] != 'ignore' )
  204. {
  205. $res = $weixin_model->refundOrder($order['order_id'], 0);
  206. M('lionfish_comshop_order')->where( array('order_id' => $order['order_id']) )->save( array('order_status_id' => 7) );
  207. //拼团失败,订单退款
  208. $history_data = array();
  209. $history_data['order_id'] = $order['order_id'];
  210. $history_data['order_status_id'] = 7;
  211. $history_data['notify'] = 0;
  212. $history_data['comment'] = '拼团失败,订单退款';
  213. $history_data['date_added'] = time();
  214. M('lionfish_comshop_order_history')->add( $history_data );
  215. }else{
  216. M('lionfish_comshop_order')->where( array('order_id' => $order['order_id'] ) )->save( array('order_status_id' => 7) );
  217. $res = array('code' => 1);
  218. }
  219. if( $res['code'] == 1)
  220. {
  221. }else{
  222. $can_cg_state = false;
  223. }
  224. }
  225. if( !$can_cg_state )
  226. {
  227. M('lionfish_comshop_pin')->where( array('pin_id' => $pin['pin_id'] ) )->save( array('state' => 0) );
  228. }
  229. }
  230. }
  231. //--
  232. $infos = M('lionfish_comshop_config')->where( array('name' => 'statewaitorder') )->find();
  233. if( empty($infos) )
  234. {
  235. $lasttime = 0;
  236. }else{
  237. $lasttime = $infos['value'];
  238. }
  239. $interval = 3;
  240. $interval *= 60;
  241. $current = time();
  242. if (($lasttime + $interval) <= $current ) {
  243. if( empty($infos) )
  244. {
  245. $ins_data = array();
  246. $ins_data['name'] = 'statewaitorder';
  247. $ins_data['value'] = $current;
  248. M('lionfish_comshop_config')->add( $ins_data );
  249. }else{
  250. M('lionfish_comshop_config')->where( array('id' => $infos['id']) )->save( array('value' => $current) );
  251. }
  252. $sql ="SELECT ho.order_id,o.order_num_alias,ho.order_goods_id FROM ".
  253. C('DB_PREFIX')."lionfish_community_head_commiss_order as ho left join ".C('DB_PREFIX')."lionfish_comshop_order as o on ho.order_id = o.order_id where ho.state = 0 and o.order_status_id IN (6,11)";
  254. $xiufu_list = M()->query($sql);
  255. $need_order = array();
  256. //var_dump($xiufu_list);die();
  257. foreach( $xiufu_list as $vv )
  258. {
  259. $open_aftersale = D('Home/Front')->get_config_by_name('open_aftersale');
  260. if( empty($open_aftersale) )
  261. {
  262. $open_aftersale = 0;
  263. }
  264. if( $open_aftersale == 1 )
  265. {
  266. $n_sql = "select hco.*, og.order_goods_id from ".C('DB_PREFIX')."lionfish_comshop_order_goods as og left join ".
  267. C('DB_PREFIX')."lionfish_community_head_commiss_order as hco on og.order_goods_id = hco.order_goods_id where hco.state = 0 and og.is_statements_state=1 and og.order_id = ".$vv['order_id'];
  268. $info_list = M()->query($n_sql);
  269. if( !empty($info_list) )
  270. {
  271. foreach($info_list as $info)
  272. {
  273. M('lionfish_comshop_order_goods')->where( array('order_goods_id' => $info['order_goods_id'] ) )->save( array('is_statements_state' => 0) );
  274. }
  275. }
  276. }else{
  277. if( empty($need_order) || !in_array($vv['order_id'], $need_order) )
  278. {
  279. if( $vv['order_goods_id'] > 0 )
  280. {
  281. M('lionfish_comshop_order_goods')->where( array('order_goods_id' => $vv['order_goods_id'] ) )->save( array('is_statements_state' => 0) );
  282. }else{
  283. M('lionfish_comshop_order_goods')->where( array('order_id' => $vv['order_id'] ) )->save( array('is_statements_state' => 0) );
  284. }
  285. D('Home/Frontorder')->settlement_order($vv['order_id']);
  286. }
  287. }
  288. }
  289. }
  290. $sql ="SELECT ho.order_id,o.order_num_alias,ho.order_goods_id FROM ".C('DB_PREFIX').
  291. "lionfish_comshop_pintuan_commiss_order as ho left join ".C('DB_PREFIX')."lionfish_comshop_order as o on ho.order_id = o.order_id
  292. where ho.state = 0 and o.order_status_id IN (6,11)";
  293. $pintuan_xiufu_list = M()->query($sql);
  294. $need_order = array();
  295. foreach( $pintuan_xiufu_list as $vv )
  296. {
  297. $open_aftersale = D('Home/Front')->get_config_by_name('open_aftersale');
  298. if( empty($open_aftersale) )
  299. {
  300. $open_aftersale = 0;
  301. }
  302. if( $open_aftersale == 1 )
  303. {
  304. $n_sql = "select hco.*, og.order_goods_id from ".C('DB_PREFIX')."lionfish_comshop_order_goods as og left join ".C('DB_PREFIX')."lionfish_community_head_commiss_order as hco on og.order_goods_id = hco.order_goods_id where hco.state = 0 and og.is_statements_state=1 and og.order_id = ".$vv['order_id'];
  305. $info_list = M()->query($n_sql);
  306. if( !empty($info_list) )
  307. {
  308. foreach($info_list as $info)
  309. {
  310. M('lionfish_comshop_order_goods')->where( array('order_goods_id' => $info['order_goods_id'] ) )->save( array('is_statements_state' => 0) );
  311. }
  312. }
  313. }else{
  314. if( empty($need_order) || !in_array($vv['order_id'], $need_order) )
  315. {
  316. if( $vv['order_goods_id'] > 0 )
  317. {
  318. M('lionfish_comshop_order_goods')->where( array('order_goods_id' => $vv['order_goods_id'] ) )->save( array('is_statements_state' => 0) );
  319. }else{
  320. M('lionfish_comshop_order_goods')->where( array('order_id' => $vv['order_id'] ) )->save( array('is_statements_state' => 0) );
  321. }
  322. D('Home/Frontorder')->settlement_order($vv['order_id']);
  323. }
  324. }
  325. }
  326. echo 'ok';
  327. die();
  328. }
  329. public function close()
  330. {
  331. ignore_user_abort();
  332. set_time_limit(0);
  333. $redis_new_redis = D('Home/Front')->get_config_by_name('redis_new_redis');
  334. $open_redis_server = D('Home/Front')->get_config_by_name('open_redis_server');
  335. if( empty($redis_new_redis) && !empty($open_redis_server) && $open_redis_server == 1 )
  336. {
  337. D('Seller/Redisorder')->sysnc_allgoods_total();
  338. }
  339. $shop_list = M('lionfish_comshop_config')->field('value')->where( array('name' => 'open_auto_delete') )->select();
  340. foreach($shop_list as $shop)
  341. {
  342. $open_auto_delete = $shop['value'];
  343. if($open_auto_delete == 1)
  344. {
  345. //auto_cancle_order_time
  346. $cancle_hour = D('Home/Front')->get_config_by_name('auto_cancle_order_time');
  347. $cancle_hour_time = time() - 3600 * $cancle_hour;
  348. $sql = "select order_id from ".C('DB_PREFIX')."lionfish_comshop_order
  349. where date_added <={$cancle_hour_time} and order_status_id =3 ";
  350. $order_list = M()->query($sql);
  351. foreach($order_list as $order )
  352. {
  353. D('Home/Frontorder')->cancel_order($order['order_id'], true);
  354. }
  355. }
  356. }
  357. }
  358. public function templatemsg()
  359. {
  360. $template_list = M('lionfish_comshop_templatemsg')->where( array('state' => 0) )->order('id asc')->limit( 100 )->select();
  361. foreach($template_list as $template)
  362. {
  363. if( $template['type'] == 0 )
  364. {
  365. //发给个人
  366. $url = D('Home/Front')->get_config_by_name('shop_domain');
  367. $wx_template_data = array();
  368. $wx_template_data = unserialize($template['template_data']);
  369. $template_id = $template['template_id'];
  370. $pagepath = substr($template['url'],1);
  371. $member_info = M('lionfish_comshop_member')->field('member_id,we_openid')->where( array('we_openid' => $template['open_id'] ) )->find();
  372. $member_formid_info = M('lionfish_comshop_member_formid')->where( " member_id=".$member_info['member_id']." and formid != '' and state = 0 " )->order('id desc')->find();
  373. if( !empty($member_formid_info) )
  374. {
  375. $weixin_appid = D('Home/Front')->get_config_by_name('weixin_appid');
  376. $weixin_template_pay_order = D('Home/Front')->get_config_by_name('weixin_template_pay_order');
  377. $res = D('Seller/User')->send_wxtemplate_msg($wx_template_data,$url,$pagepath,$member_info['we_openid'],$template_id,$member_formid_info['formid'],0,array() );
  378. M('lionfish_comshop_member_formid')->where( array('id' => $member_formid_info['id'] ) )->save( array('state' => 1) );
  379. }
  380. M('lionfish_comshop_templatemsg')->where( array('id' => $template['id'] ) )->save( array('state' => 1) );
  381. }else if( $template['type'] == 1 )
  382. {
  383. //发送给所有人
  384. $offset = $template['send_total_count'];
  385. $limit = 50;
  386. $member_info_list = M('lionfish_comshop_member')->field('member_id ,we_openid')->order('member_id asc')->limit( $offset,$limit )->select();
  387. $url = D('Home/Front')->get_config_by_name('shop_domain');
  388. $wx_template_data = array();
  389. $wx_template_data = unserialize($template['template_data']);
  390. $template_id = $template['template_id'];
  391. $pagepath = substr($template['url'],1);
  392. foreach($member_info_list as $member_info )
  393. {
  394. $member_formid_info = M('lionfish_comshop_member_formid')->where( " member_id=".$member_info['member_id']." and formid != '' and state = 0 " )->order('id desc')->find();
  395. if( !empty($member_formid_info) )
  396. {
  397. $weixin_appid = D('Home/Front')->get_config_by_name('weixin_appid');
  398. $weixin_template_pay_order = D('Home/Front')->get_config_by_name('weixin_template_pay_order');
  399. $res = D('Seller/User')->send_wxtemplate_msg($wx_template_data,$url,$pagepath,$member_info['we_openid'],$template_id,$member_formid_info['formid'],0,array() );
  400. M('lionfish_comshop_member_formid')->where( array('id' => $member_formid_info['id'] ) )->save( array('state' => 1) );
  401. }
  402. }
  403. $new_f = $offset+$limit;
  404. M('lionfish_comshop_templatemsg')->where( array('id' => $template['id'] ) )->save( array('send_total_count' => $new_f ) );
  405. if( $offset+$limit >= $template['total_count'] )
  406. {
  407. M('lionfish_comshop_templatemsg')->where( array('id' => $template['id'] ) )->save( array('state' => 1) );
  408. }
  409. }
  410. /** ---end--- **/
  411. echo 'success <br/>';
  412. }
  413. echo 'ok';
  414. die();
  415. }
  416. }