stat.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  1. <?php
  2. /**
  3. * 任务计划 - 统计数据缓存
  4. *
  5. *
  6. *
  7. *
  8. */
  9. defined('InShopNC') or exit('Access Invalid!');
  10. class statControl {
  11. public function __construct(){
  12. register_shutdown_function(array($this,"shutdown"));
  13. }
  14. /**
  15. * 统计数据缓存
  16. */
  17. public function indexOp(){
  18. //缓存订单及订单商品相关数据
  19. $this->cron_ordergoods();
  20. //会员相关数据缓存
  21. $this->memberstat();
  22. //店铺分类及店铺缓存
  23. //$this->storeclass();
  24. //更新商品表旧数据的分类ID
  25. $this->update_goodsgc();
  26. }
  27. /**
  28. * 更新商品表父级分类ID
  29. */
  30. public function update_goodsgc(){
  31. $gc_list = H('goods_class') ? H('goods_class') : H('goods_class', true);
  32. $goodscommon_list = Model()->table('goods_common')->field('goods_commonid,gc_id')->limit(false)->select();
  33. foreach ($goodscommon_list as $k=>$v){
  34. //处理分类信息,分类的一二级
  35. $gc_depth = $gc_list[$v['gc_id']]['depth'];
  36. $parent_gcidarr = array();
  37. $gc_id = $v['gc_id'];
  38. for ($i=$gc_depth; $i>0; $i--){
  39. $parent_gcidarr[$i] = $gc_id;
  40. $gc_id = $gc_list[$gc_id]['gc_parent_id'];
  41. }
  42. $update = array();
  43. $update['gc_id_1'] = $parent_gcidarr[1]?$parent_gcidarr[1]:0;
  44. $update['gc_id_2'] = $parent_gcidarr[2]?$parent_gcidarr[2]:0;
  45. $update['gc_id_3'] = $parent_gcidarr[3]?$parent_gcidarr[3]:0;
  46. Model()->table('goods_common')->where(array('goods_commonid'=>$v['goods_commonid']))->update($update);
  47. Model()->table('goods')->where(array('goods_commonid'=>$v['goods_commonid']))->update($update);
  48. }
  49. }
  50. /**
  51. * 缓存订单及订单商品相关数据
  52. */
  53. private function cron_ordergoods(){
  54. $model = Model('stat');
  55. //查询最后统计的记录
  56. $latest_record = Model()->table('stat_ordergoods')->order('stat_updatetime desc,rec_id desc')->find();
  57. $stime = 0;
  58. if ($latest_record){
  59. $start_time = strtotime(date('Y-m-d',$latest_record['stat_updatetime']));
  60. } else {
  61. $start_time = strtotime(date('Y-m-d',strtotime(C('setup_date'))));//从系统的安装时间开始统计
  62. }
  63. for ($stime = $start_time; $stime < time(); $stime = $stime+86400){
  64. $etime = $stime + 86400 - 1;
  65. //避免重复统计,开始时间必须大于最后一条记录的记录时间
  66. $search_stime = $latest_record['stat_updatetime'] > $stime?$latest_record['stat_updatetime']:$stime;
  67. //统计一天的数据,如果结束时间大于当前时间,则结束时间为当前时间,避免因为查询时间的延迟造成数据遗落
  68. $search_etime = ($t = ($stime + 86400 - 1)) > time() ? time() : ($stime + 86400 - 1);
  69. //查询时间段内新订单或者更新过的订单,在缓存表中需要将新订单和更新过的订单进行重新缓存
  70. $where = array();
  71. $where['log_time'] = array('between',array($search_stime,$search_etime));
  72. //查询记录总条数
  73. $countnum_arr = $model->table('order_log')->field('COUNT(DISTINCT order_id) as countnum')->where($where)->find();
  74. $countnum = intval($countnum_arr['countnum']);
  75. $field = 'DISTINCT order_id';
  76. for ($i=0; $i<$countnum; $i+=100){//每次查询100条
  77. $orderlog_list = array();
  78. $orderlog_list = Model()->table('order_log')->field($field)->where($where)->limit($i.',100')->select();
  79. if ($orderlog_list){
  80. //店铺ID数组
  81. $storeid_arr = array();
  82. //商品ID数组
  83. $goodsid_arr = array();
  84. //商品公共表ID数组
  85. $goods_commonid_arr = array();
  86. //订单ID数组
  87. $orderid_arr = array();
  88. //整理需要缓存的订单ID
  89. foreach ((array)$orderlog_list as $k=>$v){
  90. $orderid_arr[] = $v['order_id'];
  91. }
  92. unset($orderlog_list);
  93. //查询订单数据
  94. $field = 'order_id,order_sn,store_id,buyer_id,buyer_name,add_time,payment_code,order_amount,shipping_fee,evaluation_state,order_state,refund_state,refund_amount,order_from';
  95. $order_list_tmp = Model()->table('order')->field($field)->where(array('order_id'=>array('in',$orderid_arr)))->select();
  96. $order_list = array();
  97. foreach ((array)$order_list_tmp as $k=>$v){
  98. //判读订单是否计入统计(在线支付订单已支付或者经过退款的取消订单或者货到付款订单订单已成功)
  99. $v['order_isvalid'] = 0;
  100. if ($v['payment_code'] != 'offline' && $v['order_state'] != ORDER_STATE_NEW && $v['order_state'] != ORDER_STATE_CANCEL){//在线支付并且已支付并且未取消
  101. $v['order_isvalid'] = 1;
  102. } elseif ($v['order_state'] == ORDER_STATE_CANCEL && $v['refund_state'] != 0) {//经过退款的取消订单
  103. $v['order_isvalid'] = 1;
  104. } elseif ($v['payment_code'] == 'offline' && $v['order_state'] == ORDER_STATE_SUCCESS) {//货到付款订单,订单成功之后才计入统计
  105. $v['order_isvalid'] = 1;
  106. }
  107. $order_list[$v['order_id']] = $v;
  108. $storeid_arr[] = $v['store_id'];
  109. }
  110. unset($order_list_tmp);
  111. //查询订单扩展数据
  112. $field = 'order_id,reciver_province_id';
  113. $order_common_list_tmp = Model()->table('order_common')->field($field)->where(array('order_id'=>array('in',$orderid_arr)))->select();
  114. $order_common_list = array();
  115. foreach ((array)$order_common_list_tmp as $k=>$v){
  116. $order_common_list[$v['order_id']] = $v;
  117. }
  118. unset($order_common_list_tmp);
  119. //查询店铺信息
  120. $field = 'store_id,store_name,grade_id,sc_id';
  121. $store_list_tmp = Model()->table('store')->field($field)->where(array('store_id'=>array('in',$storeid_arr)))->select();
  122. $store_list = array();
  123. foreach ((array)$store_list_tmp as $k=>$v){
  124. $store_list[$v['store_id']] = $v;
  125. }
  126. unset($store_list_tmp);
  127. //查询订单商品
  128. $field = 'rec_id,order_id,goods_id,goods_name,goods_price,goods_num,goods_image,goods_pay_price,store_id,buyer_id,goods_type,promotions_id,commis_rate,gc_id';
  129. $ordergoods_list = Model()->table('order_goods')->field($field)->where(array('order_id'=>array('in',$orderid_arr)))->select();
  130. foreach ((array)$ordergoods_list as $k=>$v){
  131. $goodsid_arr[] = $v['goods_id'];
  132. }
  133. //查询商品信息
  134. $field = 'goods_id,goods_commonid,goods_price,goods_serial,gc_id,goods_image';
  135. $goods_list_tmp = Model()->table('goods')->field($field)->where(array('goods_id'=>array('in',$goodsid_arr)))->select();
  136. foreach ((array)$goods_list_tmp as $k=>$v){
  137. $goods_commonid_arr[] = $v['goods_commonid'];
  138. }
  139. //查询商品公共信息
  140. $field = 'goods_commonid,goods_name,brand_id,brand_name';
  141. $goods_common_list_tmp = Model()->table('goods_common')->field($field)->where(array('goods_commonid'=>array('in',$goods_commonid_arr)))->select();
  142. $goods_common_list = array();
  143. foreach ((array)$goods_common_list_tmp as $k=>$v){
  144. $goods_common_list[$v['goods_commonid']] = $v;
  145. }
  146. unset($goods_common_list_tmp);
  147. //处理商品数组
  148. $goods_list = array();
  149. $gc_list = H('goods_class') ? H('goods_class') : H('goods_class', true);
  150. foreach ((array)$goods_list_tmp as $k=>$v){
  151. $v['goods_commonname'] = $goods_common_list[$v['goods_commonid']]['goods_name'];
  152. $v['brand_id'] = $goods_common_list[$v['goods_commonid']]['brand_id'];
  153. $v['brand_name'] = $goods_common_list[$v['goods_commonid']]['brand_name'];
  154. //处理分类信息,分类的一二级
  155. $gc_depth = $gc_list[$v['gc_id']]['depth'];
  156. $parent_gcidarr = array();
  157. $gc_id = $v['gc_id'];
  158. for ($i=$gc_depth; $i>0; $i--){
  159. $parent_gcidarr[$i] = $gc_id;
  160. $gc_id = $gc_list[$gc_id]['gc_parent_id'];
  161. }
  162. $v['gc_parentid_1'] = $parent_gcidarr[1]?$parent_gcidarr[1]:0;
  163. $v['gc_parentid_2'] = $parent_gcidarr[2]?$parent_gcidarr[2]:0;
  164. $v['gc_parentid_3'] = $parent_gcidarr[3]?$parent_gcidarr[3]:0;
  165. $goods_list[$v['goods_id']] = $v;
  166. }
  167. unset($goods_list_tmp);
  168. //查询订单缓存是否存在,存在则删除
  169. Model()->table('stat_ordergoods')->where(array('order_id'=>array('in',$orderid_arr)))->delete();
  170. //查询订单缓存是否存在,存在则删除
  171. Model()->table('stat_order')->where(array('order_id'=>array('in',$orderid_arr)))->delete();
  172. //整理新增数据
  173. $ordergoods_insert_arr = array();
  174. foreach ((array)$ordergoods_list as $k=>$v){
  175. $tmp = array();
  176. $tmp['rec_id'] = $v['rec_id'];
  177. $tmp['stat_updatetime'] = $search_etime;
  178. $tmp['order_id'] = $v['order_id'];
  179. $tmp['order_sn'] = $order_list[$v['order_id']]['order_sn'];
  180. $tmp['order_add_time'] = $order_list[$v['order_id']]['add_time'];
  181. $tmp['payment_code'] = $order_list[$v['order_id']]['payment_code'];
  182. $tmp['order_state'] = $order_list[$v['order_id']]['order_state'];
  183. $tmp['refund_state'] = $order_list[$v['order_id']]['refund_state'];
  184. $tmp['order_from'] = $order_list[$v['order_id']]['order_from'];
  185. $tmp['order_isvalid'] = $order_list[$v['order_id']]['order_isvalid'];
  186. $tmp['reciver_province_id'] = $order_common_list[$v['order_id']]['reciver_province_id'];
  187. $tmp['store_id'] = $v['store_id'];
  188. $tmp['store_name'] = $store_list[$v['store_id']]['store_name'];
  189. $tmp['grade_id'] = $store_list[$v['store_id']]['grade_id'];
  190. $tmp['sc_id'] = $store_list[$v['store_id']]['sc_id'];
  191. $tmp['buyer_id'] = $order_list[$v['order_id']]['buyer_id'];
  192. $tmp['buyer_name'] = $order_list[$v['order_id']]['buyer_name'];
  193. $tmp['goods_id'] = $v['goods_id'];
  194. $tmp['goods_name'] = $v['goods_name'];
  195. $tmp['goods_commonid'] = $goods_list[$v['goods_id']]['goods_commonid'];
  196. $tmp['goods_commonname'] = $goods_list[$v['goods_id']]['goods_commonname'];
  197. $tmp['gc_id'] = $goods_list[$v['goods_id']]['gc_id'];
  198. $tmp['gc_parentid_1'] = $goods_list[$v['goods_id']]['gc_parentid_1'];
  199. $tmp['gc_parentid_2'] = $goods_list[$v['goods_id']]['gc_parentid_2'];
  200. $tmp['brand_id'] = $goods_list[$v['goods_id']]['brand_id'];
  201. $tmp['brand_name'] = $goods_list[$v['goods_id']]['brand_name'];
  202. $tmp['goods_serial'] = $goods_list[$v['goods_id']]['goods_serial'];
  203. $tmp['goods_price'] = $goods_list[$v['goods_id']]['goods_price'];
  204. $tmp['goods_num'] = $v['goods_num'];
  205. $tmp['goods_image'] = $goods_list[$v['goods_id']]['goods_image'];
  206. $tmp['goods_pay_price'] = $v['goods_pay_price'];
  207. $tmp['goods_type'] = $v['goods_type'];
  208. $tmp['promotions_id'] = $v['promotions_id'];
  209. $tmp['commis_rate'] = $v['commis_rate'];
  210. $ordergoods_insert_arr[] = $tmp;
  211. }
  212. Model()->table('stat_ordergoods')->insertAll($ordergoods_insert_arr);
  213. $order_insert_arr = array();
  214. foreach ((array)$order_list as $k=>$v){
  215. $tmp = array();
  216. $tmp['order_id'] = $v['order_id'];
  217. $tmp['order_sn'] = $v['order_sn'];
  218. $tmp['order_add_time'] = $v['add_time'];
  219. $tmp['payment_code'] = $v['payment_code'];
  220. $tmp['order_amount'] = $v['order_amount'];
  221. $tmp['shipping_fee'] = $v['shipping_fee'];
  222. $tmp['evaluation_state'] = $v['evaluation_state'];
  223. $tmp['order_state'] = $v['order_state'];
  224. $tmp['refund_state'] = $v['refund_state'];
  225. $tmp['refund_amount'] = $v['refund_amount'];
  226. $tmp['order_from'] = $v['order_from'];
  227. $tmp['order_isvalid'] = $v['order_isvalid'];
  228. $tmp['reciver_province_id'] = $order_common_list[$v['order_id']]['reciver_province_id'];
  229. $tmp['store_id'] = $v['store_id'];
  230. $tmp['store_name'] = $store_list[$v['store_id']]['store_name'];
  231. $tmp['grade_id'] = $store_list[$v['store_id']]['grade_id'];
  232. $tmp['sc_id'] = $store_list[$v['store_id']]['sc_id'];
  233. $tmp['buyer_id'] = $v['buyer_id'];
  234. $tmp['buyer_name'] = $v['buyer_name'];
  235. $order_insert_arr[] = $tmp;
  236. }
  237. Model()->table('stat_order')->insertAll($order_insert_arr);
  238. }
  239. }
  240. }
  241. }
  242. /**
  243. * 会员相关数据统计
  244. */
  245. public function memberstat(){
  246. $model = Model('stat');
  247. //查询最后统计的记录
  248. $latest_record = $model->getOneStatmember(array(), '', 'statm_id desc');
  249. $stime = 0;
  250. if ($latest_record){
  251. $start_time = strtotime(date('Y-m-d',$latest_record['statm_updatetime']));
  252. } else {
  253. $start_time = strtotime(date('Y-m-d',strtotime(C('setup_date'))));//从系统的安装时间开始统计
  254. }
  255. $j = 1;
  256. for ($stime = $start_time; $stime < time(); $stime = $stime+86400){
  257. //数据库更新数据数组
  258. $insert_arr = array();
  259. $update_arr = array();
  260. $etime = $stime + 86400 - 1;
  261. //避免重复统计,开始时间必须大于最后一条记录的记录时间
  262. $search_stime = $latest_record['statm_updatetime'] > $stime?$latest_record['statm_updatetime']:$stime;
  263. //统计一天的数据,如果结束时间大于当前时间,则结束时间为当前时间,避免因为查询时间的延迟造成数据遗落
  264. $search_etime = ($t = ($stime + 86400 - 1)) > time() ? time() : ($stime + 86400 - 1);
  265. //统计订单下单量和下单金额
  266. $field = ' order.order_id,add_time,buyer_id,buyer_name,order_amount';
  267. $where = array();
  268. $where['order.order_state'] = array('neq',ORDER_STATE_NEW);//去除未支付订单
  269. $where['order.refund_state'] = array('exp',"!(order.order_state = '".ORDER_STATE_CANCEL."' and order.refund_state = 0)");//没有参与退款的取消订单,不记录到统计中
  270. $where['order_log.log_time'] = array('between',array($search_stime,$search_etime));//按照订单付款的操作时间统计
  271. //货到付款当交易成功进入统计,非货到付款当付款后进入统计
  272. $where['payment_code'] = array('exp',"(order.payment_code='offline' and order_log.log_orderstate = '".ORDER_STATE_SUCCESS."') or (order.payment_code<>'offline' and order_log.log_orderstate = '".ORDER_STATE_PAY."' )");
  273. $orderlist_tmp = $model->statByOrderLog($where, $field, 0, 0, 'order_id');//此处由于底层的限制,仅能查询1000条,如果日下单量大于1000,则需要limit的支持
  274. $order_list = array();
  275. $orderid_list = array();
  276. foreach ((array)$orderlist_tmp as $k=>$v){
  277. $addtime = strtotime(date('Y-m-d',$v['add_time']));
  278. if ($addtime != $stime){//订单如果隔天支付的话,需要进行统计数据更新
  279. $update_arr[$addtime][$v['buyer_id']]['statm_membername'] = $v['buyer_name'];
  280. $update_arr[$addtime][$v['buyer_id']]['statm_ordernum'] = intval($update_arr[$addtime][$v['buyer_id']]['statm_ordernum'])+1;
  281. $update_arr[$addtime][$v['buyer_id']]['statm_orderamount'] = floatval($update_arr[$addtime][$v['buyer_id']]['statm_orderamount']) + (($t = floatval($v['order_amount'])) > 0?$t:0);
  282. } else {
  283. $order_list[$v['buyer_id']]['buyer_name'] = $v['buyer_name'];
  284. $order_list[$v['buyer_id']]['ordernum'] = intval($order_list[$v['buyer_id']]['ordernum']) + 1;
  285. $order_list[$v['buyer_id']]['orderamount'] = floatval($order_list[$v['buyer_id']]['orderamount']) + (($t = floatval($v['order_amount'])) > 0?$t:0);
  286. }
  287. //记录订单ID数组
  288. $orderid_list[] = $v['order_id'];
  289. }
  290. //统计下单商品件数
  291. if ($orderid_list){
  292. $field = ' add_time,order.buyer_id,order.buyer_name,goods_num ';
  293. $where = array();
  294. $where['order.order_id'] = array('in',$orderid_list);
  295. $ordergoods_tmp = $model->statByOrderGoods($where, $field, 0, 0, 'order.order_id');
  296. $ordergoods_list = array();
  297. foreach ((array)$ordergoods_tmp as $k=>$v){
  298. $addtime = strtotime(date('Y-m-d',$v['add_time']));
  299. if ($addtime != $stime){//订单如果隔天支付的话,需要进行统计数据更新
  300. $update_arr[$addtime][$v['buyer_id']]['statm_goodsnum'] = intval($update_arr[$addtime][$v['buyer_id']]['statm_goodsnum']) + (($t = floatval($v['goods_num'])) > 0?$t:0);
  301. } else {
  302. $ordergoods_list[$v['buyer_id']]['goodsnum'] = $ordergoods_list[$v['buyer_id']]['goodsnum'] + (($t = floatval($v['goods_num'])) > 0?$t:0);
  303. }
  304. }
  305. }
  306. //统计的预存款记录
  307. $field = ' lg_member_id,lg_member_name,SUM(IF(lg_av_amount>=0,lg_av_amount,0)) as predincrease, SUM(IF(lg_av_amount<=0,lg_av_amount,0)) as predreduce ';
  308. $where = array();
  309. $where['lg_add_time'] = array('between',array($stime,$etime));
  310. $predeposit_tmp = $model->getPredepositInfo($where, $field, 0, 'lg_member_id', 0, 'lg_member_id');
  311. $predeposit_list = array();
  312. foreach ((array)$predeposit_tmp as $k=>$v){
  313. $predeposit_list[$v['lg_member_id']] = $v;
  314. }
  315. //统计的积分记录
  316. $field = ' pl_memberid,pl_membername,SUM(IF(pl_points>=0,pl_points,0)) as pointsincrease, SUM(IF(pl_points<=0,pl_points,0)) as pointsreduce ';
  317. $where = array();
  318. $where['pl_addtime'] = array('between',array($stime,$etime));
  319. $points_tmp = $model->statByPointslog($where, $field, 0, 0, '', 'pl_memberid');
  320. $points_list = array();
  321. foreach ((array)$points_tmp as $k=>$v){
  322. $points_list[$v['pl_memberid']] = $v;
  323. }
  324. //处理需要更新的数据
  325. foreach ((array)$update_arr as $k=>$v){
  326. foreach ($v as $m_k=>$m_v){
  327. //查询记录是否存在
  328. $statmember_info = $model->getOneStatmember(array('statm_time'=>$k,'statm_memberid'=>$m_k));
  329. if ($statmember_info){
  330. $m_v['statm_ordernum'] = intval($statmember_info['statm_ordernum']) + $m_v['statm_ordernum'];
  331. $m_v['statm_orderamount'] = floatval($statmember_info['statm_ordernum']) + $m_v['statm_orderamount'];
  332. $m_v['statm_updatetime'] = $search_etime;
  333. $model->updateStatmember(array('statm_time'=>$k,'statm_memberid'=>$m_k),$m_v);
  334. } else {
  335. $tmp = array();
  336. $tmp['statm_memberid'] = $m_k;
  337. $tmp['statm_membername'] = $m_v['statm_membername'];
  338. $tmp['statm_time'] = $k;
  339. $tmp['statm_updatetime'] = $search_etime;
  340. $tmp['statm_ordernum'] = ($t = intval($m_v['statm_ordernum'])) > 0?$t:0;
  341. $tmp['statm_orderamount'] = ($t = floatval($m_v['statm_orderamount']))>0?$t:0;
  342. $tmp['statm_goodsnum'] = ($t = intval($m_v['statm_goodsnum']))?$t:0;
  343. $tmp['statm_predincrease'] = 0;
  344. $tmp['statm_predreduce'] = 0;
  345. $tmp['statm_pointsincrease'] = 0;
  346. $tmp['statm_pointsreduce'] = 0;
  347. $insert_arr[] = $tmp;
  348. }
  349. unset($statmember_info);
  350. }
  351. }
  352. //处理获得所有会员ID数组
  353. $memberidarr_order = $order_list?array_keys($order_list):array();
  354. $memberidarr_ordergoods = $ordergoods_list?array_keys($ordergoods_list):array();
  355. $memberidarr_predeposit = $predeposit_list?array_keys($predeposit_list):array();
  356. $memberidarr_points = $points_list?array_keys($points_list):array();
  357. $memberid_arr = array_merge($memberidarr_order,$memberidarr_ordergoods,$memberidarr_predeposit,$memberidarr_points);
  358. //查询会员信息
  359. $memberid_list = Model('member')->getMemberList(array('member_id'=>array('in',$memberid_arr)), '*', 0);
  360. //查询记录是否存在
  361. $statmemberlist_tmp = $model->statByStatmember(array('statm_time'=>$stime));
  362. $statmemberlist = array();
  363. foreach ((array)$statmemberlist_tmp as $k=>$v){
  364. $statmemberlist[$v['statm_memberid']] = $v;
  365. }
  366. foreach ((array)$memberid_list as $k=>$v){
  367. $tmp = array();
  368. $tmp['statm_memberid'] = $v['member_id'];
  369. $tmp['statm_membername'] = $v['member_name'];
  370. $tmp['statm_time'] = $stime;
  371. $tmp['statm_updatetime'] = $search_etime;
  372. //因为记录可能已经存在,所以加上之前的统计记录
  373. $tmp['statm_ordernum'] = intval($statmemberlist[$tmp['statm_memberid']]['statm_ordernum']) + (($t = intval($order_list[$tmp['statm_memberid']]['ordernum'])) > 0?$t:0);
  374. $tmp['statm_orderamount'] = floatval($statmemberlist[$tmp['statm_memberid']]['statm_orderamount']) + (($t = floatval($order_list[$tmp['statm_memberid']]['orderamount']))>0?$t:0);
  375. $tmp['statm_goodsnum'] = intval($statmemberlist[$tmp['statm_memberid']]['statm_goodsnum']) + (($t = intval($ordergoods_list[$tmp['statm_memberid']]['goodsnum']))?$t:0);
  376. $tmp['statm_predincrease'] = (($t = floatval($predeposit_list[$tmp['statm_memberid']]['predincrease']))?$t:0);
  377. $tmp['statm_predreduce'] = (($t = floatval($predeposit_list[$tmp['statm_memberid']]['predreduce']))?$t:0);
  378. $tmp['statm_pointsincrease'] = (($t = intval($points_list[$tmp['statm_memberid']]['pointsincrease']))?$t:0);
  379. $tmp['statm_pointsreduce'] = (($t = intval($points_list[$tmp['statm_memberid']]['pointsreduce']))?$t:0);
  380. $insert_arr[] = $tmp;
  381. }
  382. //删除旧的统计数据
  383. $model->delByStatmember(array('statm_time'=>$stime));
  384. $model->table('stat_member')->insertAll($insert_arr);
  385. }
  386. }
  387. /**
  388. * 执行完成提示信息
  389. *
  390. */
  391. public function shutdown(){
  392. exit("success at ".date('Y-m-d H:i:s',time())."\n");
  393. }
  394. }