| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- <?php
- namespace addons\Album\backend\controllers;
- use addons\Album\common\models\AddonsAlbum;
- use addons\Album\common\models\AddonsAlbumDateStatistics;
- use addons\Album\common\models\AddonsAlbumGoodsVisit;
- use addons\Album\common\models\AddonsAlbumOrder;
- use addons\Album\common\models\AddonsAlbumPageShare;
- use addons\Album\common\models\AddonsAlbumStatistics;
- use addons\Album\common\models\AddonsAlbumVisit;
- use common\enums\StatusEnum;
- use phpseclib3\Crypt\Random;
- use Yii;
- use common\controllers\AddonsController;
- use yii\db\Exception;
- /**
- * 默认控制器
- *
- * Class DefaultController
- * @package addons\Album\backend\controllers
- */
- class StatisticsController extends BaseController
- {
- public $enableCsrfValidation = false;
- /**
- * @Author: ltm
- * @DateTime: 2022/2/15 0015 10:01
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $data
- * @return string
- */
- public function actionIndex()
- {
- $retuest = Yii::$app->request;
- if ($retuest->isAjax) {
- if ($retuest->isGet) {
- $params = Yii::$app->request->get();
- $res = Yii::$app->services->validate->validate($params, [
- [['begin_date','end_date','type'],'safe']
- ]);
- $params = AddonsAlbumStatistics::exceptNullVal($params);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $begin_date = Yii::$app->request->get('begin_date') ?: date('Y-m-d');
- $end_date = Yii::$app->request->get('end_date') ?: date('Y-m-d',strtotime('+1 day'));
- $begin_time = strtotime($begin_date . ' 00:00:00');
- $end_time = strtotime($end_date . ' 23:59:59');
- //时间长度判断
- $days = round((strtotime($end_date) - strtotime($begin_date))/3600/24);
- if($days > 30){
- return $this->error('查询时间范围不得大于30天');
- }
- $where[] = ['=', 'mall_id', $this->mall_id];
- $where[] = ['between', 'created_at', $begin_time,$end_time];
- $order = 'id';
- $params = array('where' => $where, 'order'=>$order);
- if(!$params['type']){
- //柱状图数据
- $list['stat'] = AddonsAlbumDateStatistics::lists($params, true);
- //页面分析(20页)
- $album_params['with'] = ['statistics'];
- $album_params['where'] = [['status' => StatusEnum::ENABLED,'mall_id' => $this->mall_id]];
- $album_params['select'] = 'id,title,goods_count';
- $album_params['order'] = 'id desc';
- $album_params['limit'] = 10;
- $list['album'] = AddonsAlbum::listPage($album_params, false,true);
- if($list['album']['list']){
- foreach ($list['album']['list'] as $k => $v){
- $stop_time = AddonsAlbumStatistics::sec2Time($v['statistics']['stop_time']);
- $list['album']['list'][$k]['statistics']['stop_time'] = $stop_time?$stop_time:0;
- $list['album']['list'][$k]['statistics']['shares_count'] = $v['statistics']['shares_count']?$v['statistics']['shares_count']:0;
- $list['album']['list'][$k]['statistics']['shares_count'] = $v['statistics']['shares_count']?$v['statistics']['shares_count']:0;
- $list['album']['list'][$k]['statistics']['visit_count'] = $v['statistics']['visit_count']?$v['statistics']['visit_count']:0;
- $list['album']['list'][$k]['statistics']['views_count'] = $v['statistics']['views_count']?$v['statistics']['views_count']:0;
- $list['album']['list'][$k]['statistics']['order_count'] = $v['statistics']['order_count']?$v['statistics']['order_count']:0;
- $list['album']['list'][$k]['statistics']['goods_amount'] = $v['statistics']['goods_amount']?$v['statistics']['goods_amount']:0;
- $list['album']['list'][$k]['statistics']['pay_count'] = $v['statistics']['pay_count']?$v['statistics']['pay_count']:0;
- }
- }
- }
- //会员数据
- $params['with'] = ['album','user'];
- $params['group'] = 'user_id,album_id';
- $params['order'] = 'stay_time desc';
- $params['limit'] = 10;
- $params['select'] = 'album_id,id,album_page_id,mall_id,user_id,begin_time,end_time,sum(stay_time) as stay_time,date,created_at,count(id) as page_num';
- $list['user'] = AddonsAlbumVisit::listPage($params);
- if($list['user']['list']){
- foreach ($list['user']['list'] as $k => $v){
- $extra_where = [];
- $extra_where[] = ['=', 'mall_id', $this->mall_id];
- $extra_where[] = ['between', 'created_at', $begin_time,$end_time];
- $extra_where[] = ['=', 'album_id', $v['album_id']];
- $extra_where[] = ['=', 'user_id', $v['user_id']];
- $amount = AddonsAlbumOrder::getOne($extra_where,true,'','','sum(amount) as pay_money');
- $list['user']['list'][$k]['amount'] = $amount['pay_money']??0;
- $share_time = AddonsAlbumPageShare::getOne($extra_where,true,'','','count(*) as share_time');
- $list['user']['list'][$k]['share_time'] = $share_time['share_time'];
- $list['user']['list'][$k]['stay_time'] = AddonsAlbumStatistics::sec2Time($v['stay_time']);
- }
- }
- $this->success('获取成功', $list);
- }
- } else {
- return $this->render($this->action->id);
- }
- }
- public function actionAlbum(){
- $request = Yii::$app->request;
- if ($request->isGet) {
- $params = Yii::$app->request->get();
- $res = Yii::$app->services->validate->validate($params, [
- [['page',],'safe']
- ]);
- $params = AddonsAlbumStatistics::exceptNullVal($params);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- //页面分析(20页)
- $album_params['with'] = ['statistics'];
- $album_params['where'] = [['status' => StatusEnum::ENABLED,'mall_id' => $this->mall_id]];
- $album_params['select'] = 'id,title,goods_count';
- $album_params['order'] = 'id desc';
- $album_params['limit'] = 10;
- $list['album'] = AddonsAlbum::listPage($album_params, false,true);
- if($list['album']['list']){
- foreach ($list['album']['list'] as $k => $v){
- $stop_time = AddonsAlbumStatistics::sec2Time($v['statistics']['stop_time']);
- $list['album']['list'][$k]['statistics']['stop_time'] = $stop_time?$stop_time:0;
- $list['album']['list'][$k]['statistics']['shares_count'] = $v['statistics']['shares_count']?$v['statistics']['shares_count']:0;
- $list['album']['list'][$k]['statistics']['shares_count'] = $v['statistics']['shares_count']?$v['statistics']['shares_count']:0;
- $list['album']['list'][$k]['statistics']['visit_count'] = $v['statistics']['visit_count']?$v['statistics']['visit_count']:0;
- $list['album']['list'][$k]['statistics']['views_count'] = $v['statistics']['views_count']?$v['statistics']['views_count']:0;
- $list['album']['list'][$k]['statistics']['order_count'] = $v['statistics']['order_count']?$v['statistics']['order_count']:0;
- $list['album']['list'][$k]['statistics']['goods_amount'] = $v['statistics']['goods_amount']?$v['statistics']['goods_amount']:0;
- $list['album']['list'][$k]['statistics']['pay_count'] = $v['statistics']['pay_count']?$v['statistics']['pay_count']:0;
- }
- }
- $this->success('获取成功', $list);
- }
- }
- /**
- * 编辑
- * @Author: ltm
- * @DateTime: 2021/12/13 0021 18:29
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @return mixed|string|void
- */
- public function actionStatistics()
- {
- try {
- $request = Yii::$app->request;
- if ($request->isAjax) {
- //提交内容
- if ($request->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['id',],'required']
- ]);
- $params = AddonsAlbumStatistics::exceptNullVal($params);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $where[] = ['=', 'mall_id', $this->mall_id];
- $where[] = ['=', 'album_id', $params['id']];
- $detail = AddonsAlbumStatistics::getOne($where,true);
- if($detail['visit_count']>1){
- $time_data = $detail['stop_time']/$detail['visit_count'];
- }else{
- $time_data = $detail['stop_time'];
- }
- $detail['stop_time'] = AddonsAlbumStatistics::sec2Time($time_data);
- $detail['created_at'] ? $detail['created_at'] = date("Y-m-d",$detail['created_at']):'';
- $goods_where[] = ['=', 'album_id', $params['id']];
- $goods_where[] = ['=', 'mall_id', $this->mall_id];
- $goods_where[] = ['<>', 'status', StatusEnum::DELETE];
- $conf = ['where'=> $goods_where,'with'=> ['goods']];
- $detail['goods'] = AddonsAlbumGoodsVisit::lists($conf,true);
- if ($res === false) throw new Exception(AddonsAlbum::getStaticError());
- return $this->success('操作成功',$detail);
- }
- }
- } catch (\Exception $e) {
- return $this->error($e->getMessage(), []);
- }
- }
- }
|