| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- <?php
- namespace backend\modules\mall\controllers;
- use backend\controllers\MallController;
- use backend\modules\mall\services\CleanService;
- use common\models\common\Region;
- use common\enums\StatusEnum;
- use common\models\mall\MallAddons;
- use common\models\user\UserLevel;
- use common\models\statistics\GlobalStatistics;
- use common\models\statistics\RegionStatistics;
- use common\helpers\TaskHelper;
- use common\enums\RedisKeyEnum;
- use common\enums\RabbitMqEnum;
- use common\models\backend\Admin;
- use Yii;
- class DataController extends MallController
- {
- public $enableCsrfValidation = false;
- public function actionIndex() {
- if (Yii::$app->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);
- }
- }
|