123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Bear
- * Date: 2019/9/12
- * Time: 下午7:31
- */
- namespace app\main\service;
- use app\main\constants\OrderContents;
- use app\main\constants\UserConstants;
- use app\main\model\object\OrdersCollectObject;
- use app\main\model\object\ReturnObject;
- use think\Config;
- use think\Db;
- use think\Env;
- /**
- * Class OrdersCollectUpdateService
- * @package app\main\service
- */
- class OrdersCollectUpdateService extends BaseService
- {
- private static $self = NULL;
- /**
- * @var int 截止时间
- */
- public $end_time;
- /**
- * @return $this|OrdersCollectUpdateService
- */
- public static function instance()
- {
- if (self::$self == NULL) {
- self::$self = new self();
- self::$self->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();
- }
- }
|