sendSite(); } catch (\Throwable $th) { } try { $mall_list = Mall::getEnableMallList(true); $time = strtotime(date('Y-m-d', time()) . ' 00:00:00'); $config_list = CensusMallAnalysis::getConfigList(); foreach ($mall_list as $mall) { $rf_arr = []; $rm_arr = []; $rf_list = CensusMallRfAnalysis::lists(['where' => [['mall_id' => $mall['id']]], 'index' => 'purchase_interval']); $rm_list = CensusMallRmAnalysis::lists(['where' => [['mall_id' => $mall['id']]], 'index' => 'purchase_interval']); foreach ($config_list as $key => $item) { list($rf, $rm) = $this->getRfRm($mall, $time, $rf_list, $rm_list, $item['min'], $item['max'], $key); if (!empty($rf)) $rf_arr[] = $rf; if (!empty($rm)) $rm_arr[] = $rm; } //rf $redis = \Yii::$app->redis; if (!empty($rf_arr)) { $redis_key = RedisKeyEnum::suffix(RedisKeyEnum::CENSUS_MALL_RF_ANALYSIS, '', true) . ':' . $mall['id']; $redis->set($redis_key, json_encode($rf_arr)); foreach ($rf_arr as $item) { CensusMallRfAnalysis::setData($item); } } //rm if (!empty($rm_arr)) { $redis_key = RedisKeyEnum::suffix(RedisKeyEnum::CENSUS_MALL_RM_ANALYSIS, '', true) . ':' . $mall['id']; $redis->set($redis_key, json_encode($rm_arr)); foreach ($rm_arr as $item) { CensusMallRmAnalysis::setData($item); } } } return true; } catch (\Exception $e) { return false; } } protected function getRfRm($mall, $time, $rf_list, $rm_list, $start, $end, $purchase_interval = '1') { $head_date = date('Y-m-d', $time - $end * 24 * 3600); $tail_date = date('Y-m-d', $time - $start * 24 * 3600); if ($start != $end) { $head_date_start_time = strtotime($head_date . ' 00:00:00'); $head_date_end_time = strtotime($head_date . ' 23:59:59'); $head_list = CensusMallAnalysis::lists([ 'where' => [ ['mall_id' => $mall['id']], ['>=', 'created_at', $head_date_start_time], ['<=', 'created_at', $head_date_end_time], ], ]); } $tail_date_start_time = strtotime($tail_date . ' 00:00:00'); $tail_date_end_time = strtotime($tail_date . ' 23:59:59'); $where = [ ['mall_id' => $mall['id']], ['>=', 'created_at', $tail_date_start_time], ['<=', 'created_at', $tail_date_end_time], ]; $tail_list = CensusMallAnalysis::lists([ 'where' => $where, ]); if (isset($rf_list[$purchase_interval])) { $rf_row = $rf_list[$purchase_interval]; if (!empty($head_list)) { foreach ($head_list as $item) { switch ($item['buy_numbers']) { case 0: break; case 1: case 2: case 3: case 4: if ($rf_row['f_users' . $item['buy_numbers']] > 0) $rf_row['f_users' . $item['buy_numbers']]--; if ($rf_row['f_total_pay_money' . $item['buy_numbers']] > $item['total_pay_money']) { $rf_row['f_total_pay_money' . $item['buy_numbers']] -= $item['total_pay_money']; } break; default: if ($rf_row['f_users5'] > 0) $rf_row['f_users5']--; if ($rf_row['f_total_pay_money5'] > $item['total_pay_money']) $rf_row['f_total_pay_money5'] -= $item['total_pay_money']; } } } } else { $rf_row = ['purchase_interval' => $purchase_interval, 'f_users1' => 0, 'f_users2' => 0, 'f_users3' => 0, 'f_users4' => 0, 'f_users5' => 0, 'f_total_pay_money1' => 0, 'f_total_pay_money2' => 0, 'f_total_pay_money3' => 0, 'f_total_pay_money4' => 0, 'f_total_pay_money5' => 0, ]; } foreach ($tail_list as $item) { switch ($item['buy_numbers']) { case 0: break; case 1: case 2: case 3: case 4: $rf_row['f_users' . $item['buy_numbers']]++; $rf_row['f_total_pay_money' . $item['buy_numbers']] += $item['total_pay_money']; $rf_row['f_total_pay_money' . $item['buy_numbers']] = bcmul($rf_row['f_total_pay_money' . $item['buy_numbers']] ,1,2); break; default: $rf_row['f_users5']++; $rf_row['f_total_pay_money5'] += $item['total_pay_money']; $rf_row['f_total_pay_money5'] = bcmul($rf_row['f_total_pay_money5'],1,2); } } if (isset($rm_list[$purchase_interval])) { $rm_row = $rm_list[$purchase_interval]; if (!empty($head_list)) { foreach ($head_list as $item) { if ($item['total_pay_money'] >= 2000) { if ($rm_row['m_users5'] > 0) $rm_row['m_users1']--; if ($rm_row['m_total_pay_money5'] > $item['total_pay_money']) $rm_row['m_total_pay_money5'] -= $item['total_pay_money']; } elseif ($item['total_pay_money'] >= 1000 && $item['total_pay_money'] < 2000) { if ($rm_row['m_users4'] > 0) $rm_row['m_users4']--; if ($rm_row['m_total_pay_money4'] > $item['total_pay_money']) $rm_row['m_total_pay_money4'] -= $item['total_pay_money']; } elseif ($item['total_pay_money'] >= 500 && $item['total_pay_money'] < 1000) { if ($rm_row['m_users3'] > 0) $rm_row['m_users3']--; if ($rm_row['m_total_pay_money3'] > $item['total_pay_money']) $rm_row['m_total_pay_money3'] -= $item['total_pay_money']; } elseif ($item['total_pay_money'] >= 200 && $item['total_pay_money'] < 500) { if ($rm_row['m_users2'] > 0) $rm_row['m_users2']--; if ($rm_row['m_total_pay_money2'] > $item['total_pay_money']) $rm_row['m_total_pay_money2'] -= $item['total_pay_money']; } else { if ($rm_row['m_users1'] > 0) $rm_row['m_users1']--; if ($rm_row['m_total_pay_money1'] > $item['total_pay_money']) $rm_row['m_total_pay_money1'] -= $item['total_pay_money']; } } } } else { $rm_row = ['purchase_interval' => $purchase_interval, 'm_users1' => 0, 'm_users2' => 0, 'm_users3' => 0, 'm_users4' => 0, 'm_users5' => 0, 'm_total_pay_money1' => 0, 'm_total_pay_money2' => 0, 'm_total_pay_money3' => 0, 'm_total_pay_money4' => 0, 'm_total_pay_money5' => 0, ]; } foreach ($tail_list as $item) { if ($item['total_pay_money'] >= 2000) { $rm_row['m_users5']++; $rm_row['m_total_pay_money5'] += $item['total_pay_money']; $rm_row['m_total_pay_money5'] = bcmul($rm_row['m_total_pay_money5'],1,2); } elseif ($item['total_pay_money'] >= 1000 && $item['total_pay_money'] < 2000) { $rm_row['m_users4']++; $rm_row['m_total_pay_money4'] += $item['total_pay_money']; $rm_row['m_total_pay_money4'] = bcmul($rm_row['m_total_pay_money4'],1,2); } elseif ($item['total_pay_money'] >= 500 && $item['total_pay_money'] < 1000) { $rm_row['m_users3']++; $rm_row['m_total_pay_money3'] += $item['total_pay_money']; $rm_row['m_total_pay_money3'] = bcmul($rm_row['m_total_pay_money3'],1,2); } elseif ($item['total_pay_money'] >= 200 && $item['total_pay_money'] < 500) { $rm_row['m_users1']++; $rm_row['m_total_pay_money2'] += $item['total_pay_money']; $rm_row['m_total_pay_money2'] = bcmul($rm_row['m_total_pay_money2'],1,2); } else { $rm_row['m_users1']++; $rm_row['m_total_pay_money1'] += $item['total_pay_money']; $rm_row['m_total_pay_money1'] = bcmul($rm_row['m_total_pay_money1'],1,2); } } return [$rf_row, $rm_row]; } //初始化基础分析表 public function actionInitAna($mall_id = null) { $mall_list = Mall::getEnableMallList(true); if ($mall_id) { $mall = Mall::findOne(['id' => $mall_id]); $this->initAna($mall); } else { foreach ($mall_list as $mall) { $this->initAna($mall); } } } protected function initAna($mall) { $mall_id = $mall['id']; $sql = " SELECT t.mall_id, t.user_id,t.date,sum(t.pay_money) as total_pay_money,count(*) as buy_numbers from ( SELECT FROM_UNIXTIME(pay_time, '%Y-%m-%d') as date,user_id,mall_id, pay_money FROM qimall_order where mall_id = $mall_id and pay_status = 1 ) t GROUP BY t.user_id,t.date "; $list = \Yii::$app->getDb()->createCommand($sql)->queryAll(); foreach ($list as $item) { $model = CensusMallAnalysis::findOne(['mall_id' => $mall['id'], 'user_id' => $item['user_id'], 'date' => $item['date'], 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]); if (empty($model)) { $model = new CensusMallAnalysis(); $model->date = $item['date']; $model->user_id = $item['user_id']; $model->mall_id = $mall['id']; $model->loadDefaultValues(); } $model->buy_numbers = $item['buy_numbers']; $model->total_pay_money = $item['total_pay_money']; $model->save(); $item['created_at'] = strtotime($item['date'] . ' 00:20:00'); $res = CensusMallAnalysis::updateAll(['created_at' => strtotime($item['date'] . ' 00:20:00')], ['mall_id' => $item['mall_id'], 'user_id' => $item['user_id'], 'date' => $item['date']] ); var_dump($res); } } //初始化rf,rm表 public function actionInitRfm() { $mall_list = Mall::getEnableMallList(true); $time = strtotime(date('Y-m-d', time()) . ' 00:00:00'); $config_list = CensusMallAnalysis::getConfigList(); foreach ($mall_list as $mall) { $rf_arr = []; $rm_arr = []; foreach ($config_list as $key => $item) { list($rf, $rm) = $this->initRfRm($mall, $time, $item['min'], $item['max'], $key); if (!empty($rf)) $rf_arr[] = $rf; if (!empty($rm)) $rm_arr[] = $rm; } if (!empty($rf_arr)) { $redis_key = RedisKeyEnum::suffix(RedisKeyEnum::CENSUS_MALL_RF_ANALYSIS, '', true) . ':' . $mall['id']; $redis = \Yii::$app->redis; $redis->set($redis_key, json_encode($rf_arr)); foreach ($rf_arr as $item) { CensusMallRfAnalysis::setData($item); } } if (!empty($rm_arr)) { $redis_key = RedisKeyEnum::suffix(RedisKeyEnum::CENSUS_MALL_RM_ANALYSIS, '', true) . ':' . $mall['id']; $redis = \Yii::$app->redis; $redis->set($redis_key, json_encode($rm_arr)); foreach ($rm_arr as $item) { CensusMallRmAnalysis::setData($item); } } } } protected function initRfRm($mall, $time, $start, $end, $purchase_interval = 'r_1_30') { $start_time = strtotime(date('Y-m-d', $time - $start * 24 * 3600) . ' 23:59:59'); if ($end) { $end_time = strtotime(date('Y-m-d', $time - $end * 24 * 3600) . ' 23:59:59'); } $where[] = ['mall_id' => $mall['id']]; $where[] = ['<', 'created_at', $start_time]; if (isset($end_time)) $where[] = ['>=', 'created_at', $end_time]; $list = CensusMallAnalysis::lists([ 'where' => $where, 'group' => 'user_id', 'select' => 'mall_id,user_id,sum(total_pay_money) as total_pay_money,sum(buy_numbers) as buy_numbers,' ]); $rf_row = ['purchase_interval' => $purchase_interval, 'mall_id' => $mall['id'], 'f_users1' => 0, 'f_users2' => 0, 'f_users3' => 0, 'f_users4' => 0, 'f_users5' => 0, 'f_total_pay_money1' => 0, 'f_total_pay_money2' => 0, 'f_total_pay_money3' => 0, 'f_total_pay_money4' => 0, 'f_total_pay_money5' => 0, ]; foreach ($list as $item) { switch ($item['buy_numbers']) { case 0: break; case 1: case 2: case 3: case 4: $rf_row['f_users' . $item['buy_numbers']]++; $rf_row['f_total_pay_money' . $item['buy_numbers']] += $item['total_pay_money']; $rf_row['f_total_pay_money' . $item['buy_numbers']] = bcmul($rf_row['f_total_pay_money' . $item['buy_numbers']],1,2); break; default: $rf_row['f_users5']++; $rf_row['f_total_pay_money5'] += $item['total_pay_money']; $rf_row['f_total_pay_money5'] = bcmul($rf_row['f_total_pay_money5'],1,2); } } $rm_row = ['purchase_interval' => $purchase_interval, 'mall_id' => $mall['id'], 'm_users1' => 0, 'm_users2' => 0, 'm_users3' => 0, 'm_users4' => 0, 'm_users5' => 0, 'm_total_pay_money1' => 0, 'm_total_pay_money2' => 0, 'm_total_pay_money3' => 0, 'm_total_pay_money4' => 0, 'm_total_pay_money5' => 0, ]; foreach ($list as $item) { if ($item['total_pay_money'] >= 2000) { $rm_row['m_users5']++; $rm_row['m_total_pay_money5'] += $item['total_pay_money']; $rm_row['m_total_pay_money5'] = bcmul($rm_row['m_total_pay_money5'],1,2); } elseif ($item['total_pay_money'] >= 1000 && $item['total_pay_money'] < 2000) { $rm_row['m_users4']++; $rm_row['m_total_pay_money4'] += $item['total_pay_money']; $rm_row['m_total_pay_money4'] = bcmul($rm_row['m_total_pay_money4'],1,2); } elseif ($item['total_pay_money'] >= 500 && $item['total_pay_money'] < 1000) { $rm_row['m_users3']++; $rm_row['m_total_pay_money3'] += $item['total_pay_money']; $rm_row['m_total_pay_money3'] = bcmul($rm_row['m_total_pay_money3'],1,2); } elseif ($item['total_pay_money'] >= 200 && $item['total_pay_money'] < 500) { $rm_row['m_users2']++; $rm_row['m_total_pay_money2'] += $item['total_pay_money']; $rm_row['m_total_pay_money2'] = bcmul($rm_row['m_total_pay_money2'],1,2); } else { $rm_row['m_users1']++; $rm_row['m_total_pay_money1'] += $item['total_pay_money']; $rm_row['m_total_pay_money1'] = bcmul($rm_row['m_total_pay_money1'],1,2); } } return [$rf_row, $rm_row]; } //商城单日数据,需添加定时任务 public function actionMallSingleDay($mall_id=null) { $mall_list = Mall::getEnableMallList(true); $time = time(); $date = date('Y-m-d', $time); $start_time = strtotime($date . ' 00:00:00'); foreach ($mall_list as $mall) { $mall_id = $mall['id']; $goods_counts = $this->getCounts($mall['id'], $start_time); list($order_counts,$add_pay_orders,$add_pay_nums,$add_pay_people_nums,$add_refund_orders) = $this->getOrders($mall['id'], $start_time); list($settlement_commission,$expenditure_commission) = $this->fixCommissionDate($mall['id'], $start_time); $obj = CensusMallSingleDay::findOne(['mall_id'=>$mall_id,'date'=>$date]); if(empty($obj)){ $obj = new CensusMallSingleDay(); $obj->loadDefaultValues(); $obj->mall_id = $mall_id; $obj->date = $date; } $obj->add_goods = $goods_counts??0; $obj->add_orders = $order_counts??0; $obj->add_pay_orders = $add_pay_orders??0; $obj->add_pay_nums = $add_pay_nums??0; $obj->add_pay_people_nums = $add_pay_people_nums??0; $obj->add_refund_orders = $add_refund_orders??0; $obj->settlement_commission = $settlement_commission??0; $obj->expenditure_commission = $expenditure_commission??0; $res = $obj->save(); var_dump($res); } } protected function getCounts($mall_id, $start_time) { return Goods::find()->where(['mall_id' => $mall_id])->andWhere(['>=', 'created_at', $start_time])->count(); } protected function getOrders($mall_id, $start_time) { $order_counts = Order::find()->where(['mall_id' => $mall_id])->andWhere(['>=', 'created_at', $start_time])->count(); $add_pay_orders = Order::find()->where(['mall_id' => $mall_id,'pay_status'=>1])->andWhere(['>=', 'created_at', $start_time])->count(); $add_pay_nums = OrderDetail::find()->where(['mall_id' => $mall_id])->andWhere(['>=', 'created_at', $start_time])->andWhere(['<>','order_status',0])->sum('num'); $add_refund_orders = OrderRefund::find()->where(['mall_id' => $mall_id])->andWhere(['>=', 'created_at', $start_time])->count(); $add_pay_people_nums = Order::find()->where(['mall_id' => $mall_id,'pay_status'=>1]) ->andWhere(['>=', 'created_at', $start_time]) ->groupBy('user_id') ->count(); return [$order_counts,$add_pay_orders,$add_pay_nums,$add_pay_people_nums,$add_refund_orders]; } public function fixCommissionDate($mall_id,$start_time) { $query = CommissionLog::find()->where(['mall_id' => $mall_id])->andWhere(['>=', 'created_at', $start_time]); $list = $query->select(new Expression("mall_id, sum(change_num) as change_num,change_type")) ->groupBy('change_type')->asArray()->all(); $settlement_commission = 0; $expenditure_commission = 0; foreach ($list as $item){ if($item['change_type']=='add'){ $settlement_commission+=$item['change_num']; }else{ $expenditure_commission+=$item['change_num']; } } return [$settlement_commission,$expenditure_commission]; } //会员等级单日统计,需添加定时任务 public function actionUserLevelSingleDay($mall_id=null){ $mall_list = Mall::getEnableMallList(true); foreach ($mall_list as $mall) { $mall_id = $mall['id']; $this->userLevelSingle($mall_id); } } public function userLevelSingle($mall_id){ $list = User::lists( [ 'where' => [ ['mall_id' => $mall_id], ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]] ], 'select' => 'count(*) as counts,level', 'group' => 'level' ] ); foreach ($list as $item) { $date = date('Y-m-d', time()); $model = CensusMallUserLevelSingleDay::findOne(['mall_id' => $mall_id, 'date' => $date, 'level' => $item['level']]); if (empty($model)) { $model = new CensusMallUserLevelSingleDay(); $model->loadDefaultValues(); $model->mall_id = $mall_id; $model->level = $item['level']; $model->date = $date; } $model->numbers = $item['counts']; $res = $model->save(); } var_dump('userLevelSingle执行结束'); } //商城资金统计,需添加定时任务 public function actionCapital($mall_id = null) { if (!empty($mall_id)) { $mall = Mall::findOne(['id' => $mall_id]); if ($mall) { $this->capitalBalance($mall['id']); $this->capitalScore($mall['id']); $this->capitalCommission($mall['id']); } } else { $mall_list = Mall::getEnableMallList(true); foreach ($mall_list as $mall) { $this->capitalBalance($mall['id']); $this->capitalScore($mall['id']); $this->capitalCommission($mall['id']); } } } public function capitalBalance($mall_id) { $type = 'balance'; $total_nums = UserWallet::find()->where(['mall_id' => $mall_id, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])->sum('total_balance'); CapitalLog::$capitalType = $type; $use_nums = CapitalLog::find()->where(['mall_id' => $mall_id, 'change_type' => 'sub', 'status' => StatusEnum::ENABLED])->sum('change_num'); $surplus_nums = UserWallet::find()->where(['mall_id' => $mall_id, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])->sum('balance'); CapitalLog::$capitalType = $type; $withdrawal_nums = CapitalLog::find()->where(['mall_id' => $mall_id, 'change_type' => 'sub', 'from_type' => 'withdrawal', 'status' => StatusEnum::ENABLED])->sum('change_num'); $model = CensusMallCapital::findOne(['mall_id' => $mall_id, 'type' => $type]); if (empty($model)) { $model = new CensusMallCapital(); $model->mall_id = $mall_id; $model->type = $type; } $model->total_nums = $total_nums ?? 0; $model->use_nums = $use_nums ?? 0; $model->surplus_nums = $surplus_nums ?? 0; $model->withdrawal_nums = $withdrawal_nums ?? 0; $res = $model->save(); var_dump('capitalBalance执行结束'); } public function capitalScore($mall_id) { $type = 'score'; $result = UserWallet::find()->where(['mall_id' => $mall_id, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]) ->select('sum(total_score) as total_score,sum(total_use_score) as total_use_score,sum(score) as score') ->groupBy('mall_id') ->asArray() ->one(); $model = CensusMallCapital::findOne(['mall_id' => $mall_id, 'type' => $type]); if (empty($model)) { $model = new CensusMallCapital(); $model->mall_id = $mall_id; $model->type = $type; } $model->total_nums = $result['total_score'] ?? 0; $model->use_nums = $result['total_use_score'] ?? 0; $model->surplus_nums = $result['score'] ?? 0; $res = $model->save(); var_dump('capitalScore执行结束'); } public function capitalCommission($mall_id) { $type = 'commission'; $result = UserWallet::find()->where(['mall_id' => $mall_id, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]) ->select('sum(total_commission) as total_commission,sum(frozen_commission) as frozen_commission,sum(commission) as commission') ->asArray() ->one(); CapitalLog::$capitalType = $type . '_frozen'; $cancel_nums = CapitalLog::find()->where(['mall_id' => $mall_id, 'status' => StatusEnum::DELETE])->sum('change_num'); $frozen_commission = CapitalLog::find()->where(['mall_id' => $mall_id, 'status' => StatusEnum::DISABLED])->sum('change_num'); $model = CensusMallCapital::findOne(['mall_id' => $mall_id, 'type' => $type]); if (empty($model)) { $model = new CensusMallCapital(); $model->mall_id = $mall_id; $model->type = $type; } CapitalLog::$capitalType = $type; $commission_sum = CapitalLog::find()->where(['mall_id' => $mall_id, 'change_type' =>'add']) ->andWhere(['!=', 'from_type', 'withdrawal']) // 过滤提现驳回增加的记录 ->sum('change_num'); $withdrawal_nums = CapitalLog::find()->where([ 'mall_id' => $mall_id, 'change_type' => 'sub', 'from_type' => 'withdrawal' ])->sum('change_num'); if(empty($commission_sum)) $commission_sum = 0; if(empty($frozen_commission)) $frozen_commission = 0; $model->total_nums = $commission_sum; $model->surplus_nums = $result['commission'] ?? 0; $model->unsettled = $frozen_commission ?? 0; $model->cancel_nums = $cancel_nums ?? 0; $model->withdrawal_nums = $withdrawal_nums ?? 0; $res = $model->save(); var_dump('capitalCommission执行结束'); } public function sendSite() { $mall = []; $mall_list = Mall::find() ->select(['id', 'mall_sign', 'name']) ->where(['is_recycle' => 0, 'is_delete' => 0, 'status' => 1]) ->andWhere(['>', 'expired_at', time()]) ->orWhere(['=', 'expired_at', 0]) ->all(); $user_count_list = User::find() ->select(['mall_id', 'count(id) as user_total']) ->groupBy('mall_id') ->asArray() ->all(); $user_count_list = static::getArrByKey($user_count_list, 'mall_id'); $census_list = CensusMall::find()->asArray()->all(); $census_list = static::getArrByKey($census_list, 'mall_id'); $admin_list = Admin::find() ->select(['id', 'mall_id', 'username']) ->where(['>', 'mall_id', 0]) ->andWhere(['is_default' => 1]) ->all(); $admin_list = static::getArrByKey($admin_list, 'mall_id'); $total_commission_list = UserWallet::find()->select(['mall_id', 'sum(total_commission) as total'])->groupBy('mall_id')->asArray()->all(); $total_commission_list = static::getArrByKey($total_commission_list, 'mall_id'); foreach ($mall_list as $item) { $user_count = $user_count_list[$item->id]['user_total'] ?? 0; $total_pay_money = $census_list[$item->id]['total_pay_money'] ?? 0; $username = $admin_list[$item->id]['username'] ?? ''; $total_commission = !empty($total_commission_list[$item->id]['total']) ? $total_commission_list[$item->id]['total'] : 0; $mall[] = [ 'mall_id' => $item->id, 'mall_name' => $item->name, 'mobile' => $username, 'total_user' => $user_count, 'total_price' => $total_pay_money ?? 0, 'total_commission' => $total_commission, ]; } $data['host'] = \Yii::$app->services->setting->platform->get('system.api_url'); $data['data'] = $mall; $url = "https://middle-api.qijianshigw.com/qimall-statistics/data/submit"; $headers['Content-Type'] = 'application/json; charset=utf-8'; $client = new \GuzzleHttp\Client(); $result = $client->request('POST', $url, ['form_params' => $data]); } protected static function getArrByKey(array $array, string $key) { $res = []; foreach ($array as $item) { $res[$item[$key]] = $item; } return $res; } public function actionCapitalDate() { try { $mall_list = Mall::getEnableMallList(true); if (empty($mall_list)) { return true; } $now_time = time(); $date = date('Y-m-d', $now_time); $insert_data = []; foreach ($mall_list as $mall) { $data = CensusMallCapital::find()->where([ 'mall_id' => $mall['id'], 'type' => ['balance', 'score', 'commission'], 'status' => StatusEnum::ENABLED]) ->asArray()->all(); $data = array_column($data, null, 'type'); $insert_data[] = [ $mall['id'], $date, $data['balance']['surplus_nums'] ?? 0, $data['commission']['surplus_nums'] ?? 0, $data['score']['surplus_nums'] ?? 0, StatusEnum::ENABLED, $now_time, $now_time ]; } $fields = [ 'mall_id', 'statistics_date', 'balance_surplus_nums', 'commission_surplus_nums', 'score_surplus_nums', 'status', 'created_at', 'updated_at' ]; if ($insert_data) { Yii::$app->db->createCommand()->batchInsert( CensusMallCapitalStatistics::tableName(), $fields, $insert_data )->execute(); } return ExitCode::OK; } catch (\Exception $e) { echo $e->getMessage(); return ExitCode::UNSPECIFIED_ERROR; } } }