end_time = time(); } return self::$self; } /** * 设置时间 * @param $time */ public function setCurrentTime($time) { $this->end_time = $time; } /** * 获取昨日有数据的账号 * @param $flag * @return ReturnObject */ public function getAdminIdsToUpdate($flag) { $admin_ids = OrderService::instance()->getOrderCollectModel() ->where('createdate', date('Ymd', $this->end_time)) ->where('type', OrderContents::ORDER_COLLECT_TYPE_DAY) ->where('flag', $flag) ->group('admin_id') ->column('admin_id'); return $this->setData($admin_ids)->getReturn(); } /** * 获取月度汇总 * @param $type * @param $flag * @param $admin_ids * @return ReturnObject */ public function getOrderCollectData($type, $flag, $admin_ids) { $fields = [ 'admin_id', 'business_line', 'IFNULL(sum(recharge_money),0)' => 'recharge_money', 'IFNULL(sum(recharge_money_benefit),0)' => 'recharge_money_benefit', 'IFNULL(sum(normal_recharge_orders_count),0)' => 'normal_recharge_orders_count', 'IFNULL(sum(normal_recharge_orders),0)' => 'normal_recharge_orders', 'IFNULL(sum(normal_recharge_money),0)' => 'normal_recharge_money', 'IFNULL(sum(normal_recharge_money_benefit),0)' => 'normal_recharge_money_benefit', 'IFNULL(sum(normal_recharge_guide_orders),0)' => 'normal_recharge_guide_orders', 'IFNULL(sum(noraml_recharge_guide_money),0)' => 'noraml_recharge_guide_money', 'IFNULL(sum(noraml_recharge_guide_money_benefit),0)' => 'noraml_recharge_guide_money_benefit', 'IFNULL(sum(vip_recharge_orders_count),0)' => 'vip_recharge_orders_count', 'IFNULL(sum(vip_recharge_orders),0)' => 'vip_recharge_orders', 'IFNULL(sum(vip_recharge_money),0)' => 'vip_recharge_money', 'IFNULL(sum(vip_recharge_money_benefit),0)' => 'vip_recharge_money_benefit', 'IFNULL(sum(vip_recharge_guide_orders),0)' => 'vip_recharge_guide_orders', 'IFNULL(sum(vip_recharge_guide_money),0)' => 'vip_recharge_guide_money', 'IFNULL(sum(vip_recharge_guide_money_benefit),0)' => 'vip_recharge_guide_money_benefit', 'IFNULL(sum(kandian_recharge_orders_count),0)' => 'kandian_recharge_orders_count', 'IFNULL(sum(kandian_recharge_orders),0)' => 'kandian_recharge_orders', 'IFNULL(sum(split_money),0)' => 'split_money', ]; $query = OrderService::instance()->getOrderCollectModel(); //查询月度统计数计 if ($type == OrderContents::ORDER_COLLECT_TYPE_MONTH) { $from = date('Ym01', $this->end_time); $to = date('Ymd', $this->end_time); $query ->whereBetween('createdate', "$from,$to") ->whereIn('admin_id', $admin_ids) ->where('type', OrderContents::ORDER_COLLECT_TYPE_DAY); //查询汇总数据 } else { $query->where('type', OrderContents::ORDER_COLLECT_TYPE_MONTH) ->whereIn('admin_id', $admin_ids); } $data = $query->where('flag', $flag) ->field($fields) ->group('admin_id,business_line') ->select(); $return = []; if ($data) { foreach ($data as $item) { $collect = (new OrdersCollectObject())->bind($item->getData()); $collect->type = $type; $collect->flag = $flag; $return[] = $collect; } } return $this->setData($return)->getReturn(); } /** * 数据更新 * @param $list */ public function insertOrUpdateCollect($list) { foreach ($list as $item) { $check = OrderService::instance()->getOrderCollectModel()->mkParamsForCheck($item); $data = OrderService::instance()->getOrderCollectModel()->where($check)->field('id')->find(); if (!$data) { try{ $insert = OrderService::instance()->getOrderCollectModel()->mkParamsForInsert($item); $result = OrderService::instance()->getOrderCollectModel()->insert($insert); if ($result) { LogService::debug('订单统计新增完成:' . json_encode($insert, JSON_UNESCAPED_UNICODE)); } else { LogService::error('订单统计新增失败:' . json_encode($insert, JSON_UNESCAPED_UNICODE)); } continue; }catch (\Exception $e) { LogService::exception($e); } } $update = OrderService::instance()->getOrderCollectModel()->mkParamsForUpdate($item); $result = OrderService::instance()->getOrderCollectModel()->update($update, $check); if ($result) { LogService::debug('订单统计更新完成:' . json_encode($update, JSON_UNESCAPED_UNICODE) . json_encode($check, JSON_UNESCAPED_UNICODE)); } else { LogService::error('订单统计更新失败:' . json_encode($update, JSON_UNESCAPED_UNICODE) . json_encode($check, JSON_UNESCAPED_UNICODE)); } } } /** * 获取统计时期 * @param $type * @return ReturnObject */ public function getCreateDate($type) { $date = date('Ym01', $this->end_time); if ($type == OrderContents::ORDER_COLLECT_TYPE_TOTAL) { $date = '20180101'; } return $this->setData($date)->getReturn(); } }