request->isAjax) { if (\Yii::$app->request->isGet) { $list = Yii::$app->services->setting->mall->get($this->mall_id, 'index_data'); $levels = UserLevel::getListIndexByLevelColumn($this->mall_id); if (empty($list)) { //没有数据设置默认值 $list = GlobalStatistics::getDefaultStatistics($levels); $temp = []; foreach ($list as $key => $val) { if ($key == 'upgrade_level') { foreach ($val as $level => $num) { $temp['today_upgrade_level'][] = ['level' => $level, 'name' => $levels[$level], 'num' => $num]; $temp['yesterday_upgrade_level'][] = ['level' => $level, 'name' => $levels[$level], 'num' => $num]; } } else { $temp['today_' . $key] = $val; $temp['yesterday_' . $key] = $val; } } $list = $temp; $list['today_money'] = $list['total_money'] = $list['user_num'] = $list['order_num'] = $list['pay_num'] = $list['total_browse_num'] = $list['total_visitor_num'] = $list['total_follow_num'] = $list['today_register_num'] = 0; $list['region_data'] = []; } else { //处理生成缓存后新增或删除等级 $list['today_upgrade_level'] = GlobalStatistics::removeLevel(json_decode($list['today_upgrade_level'], true), $levels); $list['yesterday_upgrade_level'] = GlobalStatistics::removeLevel(json_decode($list['yesterday_upgrade_level'], true), $levels); $today_upgrade_level = []; $yesterday_upgrade_level = []; foreach ($levels as $level => $name) { if (isset($list['today_upgrade_level'][$level])) { $today_upgrade_level[] = ['num' => $list['today_upgrade_level'][$level], 'level' => $level, 'name' => $name]; } if (isset($list['yesterday_upgrade_level'][$level])) { $yesterday_upgrade_level[] = ['num' => $list['yesterday_upgrade_level'][$level], 'level' => $level, 'name' => $name]; } } $list['today_upgrade_level'] = $today_upgrade_level; $list['yesterday_upgrade_level'] = $yesterday_upgrade_level; RegionStatistics::getDefaultRegion($this->mall_id); $list['region_data'] = $list['region_data'] ? RegionStatistics::setProvinceName(json_decode($list['region_data'], true)) : []; } if(isset($list['goods_list'])){ $list['goods_list'] = json_decode($list['goods_list'],true); $list['goods_ids'] = json_decode($list['goods_ids'],true); }else{ $list['goods_list'] = []; $list['goods_ids'] = []; } $list['province_data'] = []; return $this->success('操作成功', $list); } else { $post = \Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($post, [ [['status', 'total_money', 'today_money', 'today_register_num', 'user_num', 'today_visitor_num', 'yesterday_visitor_num', 'today_browse_num', 'yesterday_browse_num', 'order_num', 'pay_num', 'total_browse_num', 'total_visitor_num', 'total_follow_num'], 'required'], [['status', 'total_money', 'today_money', 'today_register_num', 'user_num', 'today_visitor_num','yesterday_visitor_num', 'today_browse_num', 'yesterday_browse_num', 'order_num', 'pay_num', 'total_browse_num', 'total_visitor_num', 'total_follow_num' ], 'integer'], [['region_data', 'today_upgrade_level', 'yesterday_upgrade_level', 'id','goods_list','goods_ids' ], 'safe'] ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $yesterday_upgrade_level = []; if (!isset($post['yesterday_upgrade_level'])) $post['yesterday_upgrade_level'] = []; foreach ($post['yesterday_upgrade_level'] as $yesterday_level) { $yesterday_upgrade_level[$yesterday_level['level']] = $yesterday_level['num']; } $post['yesterday_upgrade_level'] = json_encode($yesterday_upgrade_level); $today_upgrade_level = []; if (!isset($post['today_upgrade_level'])) $post['today_upgrade_level'] = []; foreach ($post['today_upgrade_level'] as $today_level) { $today_upgrade_level[$today_level['level']] = $today_level['num']; } $post['today_upgrade_level'] = json_encode($today_upgrade_level); RegionStatistics::getDefaultRegion($this->mall_id); $defaultProvince = array_column(RegionStatistics::$provinceStatistics, null, 'province_id'); if (isset($post['region_data']) && !empty($post['region_data'])) { $region_data = array_column($post['region_data'], null, 'province_id'); foreach ($defaultProvince as $province_id => &$val) { if (isset($region_data[$province_id])) { $val['pay_money'] = $region_data[$province_id]['pay_money']; } } } $post['region_data'] = json_encode(array_values($defaultProvince)); Yii::$app->services->setting->mall->set($this->mall_id, ['index_data' => $post]); return $this->success('操作成功'); } } return $this->render('index'); } /** * 获取省份 */ public function actionGetProvince() { $regionList = Region::find()->where(['level' => 1])->select(['name', 'id'])->asArray()->all(); return $this->success('操作成功', $regionList); } public function actionClean() { $request = Yii::$app->request; if ($request->isAjax) { if ($request->isPost) { $post = $request->post(); $res = Yii::$app->services->validate->validate($post, [ [['clean_data','clean_addons','clean_type','mobile','verify_code'], 'integer'], [['addons_name'], 'safe'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); if (empty($this->mall_id)) return $this->error('指定商城ID不能为空'); $skip_verify_code = Yii::$app->params['skip_verify_code']; if (empty($skip_verify_code)) { $verify_code = \Yii::$app->cache->get($post['mobile'] . '_haveVerifyCode'); if ($post['verify_code'] != $verify_code) { return $this->error('手机号验证码错误'); } } $cache_key = 'clear_data_'.$this->mall_id; $cache = \Yii::$app->cache; $cache_data = $cache->get($cache_key); if ($cache_data == 1) return $this->error('正在清除中,请勿重复提交'); // print_r(['clean_data' => $post['clean_data'], 'mall_id' => $this->mall_id, 'clean_addons' => $post['clean_addons'], 'clean_type' => $post['clean_type'], 'addons_name' => $post['addons_name']]);exit; $task_id = TaskHelper::pushTaskQueue( RabbitMqEnum::EXCHANGE_LONG_DURATION, RabbitMqEnum::LONG_DURATION_QUEUE, ['clean_data' => $post['clean_data'], 'mall_id' => $this->mall_id, 'clean_addons' => $post['clean_addons'], 'clean_type' => $post['clean_type'], 'addons_name' => $post['addons_name']], CleanService::class, 'batchHandle' ); if (!$task_id) return $this->error('提交队列失败'); return $this->success('已提交队列进行数据清除,请耐心等候'); } else { //获取缓存 $cache_key = 'clear_data_'.$this->mall_id; $cache = \Yii::$app->cache; $cache_data = $cache->get($cache_key); if (empty($cache_data)) $cache_data = 0; if ($cache_data == 2) { $cache->set($cache_key, 0); } $where = [['mall_id' => $this->mall_id], ['addons_status' => 2]]; $with = ['addons' => function($query) { $query->select('name,title'); }]; $mall_addons = MallAddons::getMallAddons($where, $with, true, 'addons_name'); $addons = []; foreach ($mall_addons as $item) { $addons[] = [ 'name' => $item['addons_name'], 'title' => $item['addons']['title'] ?? '', ]; } $admin = Admin::getOne([ ['mall_id' => $this->mall_id], ['admin_type' => 3], ['is_default' => 1], ], true); $admin_mobile = $admin['mobile'] ? $admin['mobile'] : $admin['username']; return $this->success('获取成功', compact('addons', 'cache_data', 'admin_mobile')); } } return $this->render($this->action->id); } }