123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- <?php
- namespace app\store\model;
- use app\common\library\helper;
- use app\common\model\ActEffectStatistics as ActEffectStatisticsModel;
- /**
- * 活动效果统计模型
- * @package app\store\model
- */
- class ActEffectStatistics extends ActEffectStatisticsModel
- {
- public function getList($params = [])
- {
- $filter = $this->getFilter($params);
- $actTable = str_replace([1,2,3,4,5,9],['group_buy_activity','kj_activity','activity_discount','mj_send_activity','full_send_activity','ms_activity'], $params['act_type']);
-
- if($params['act_type']==10){
- $actTable = 'group_buy_lb_activity';
- }
- if ($params['act_type'] == 1) { // 拼团
- $query = self::alias('stat')
- ->leftJoin("{$actTable} act",'act.id=stat.act_id')
- ->leftJoin('group_buy_goods gg','act.id=gg.group_buy_activity_id')
- ->leftJoin('goods', 'goods.goods_id=gg.goods_id')
- ->where($filter)
- ->where('gg.goods_id', '>', 0)
- ->field("stat.act_id,act.name as act_name,gg.goods_name,goods.goods_no,act.start_time,act.end_time,stat.act_type,sum(stat.pv) as pv,sum(stat.uv) as uv,sum(stat.uv_new) as uv_new,
- sum(stat.pay_order_count) as pay_order_count,sum(stat.pay_user_count) as pay_user_count,
- sum(stat.pay_amount) as pay_amount,convert((stat.pay_user_count/stat.uv)*100,decimal(10,2)) as ratio")
- ->group('stat.act_id')->order('stat.act_id', 'desc');
- } elseif ($params['act_type'] == 10){ //拼团裂变
- $query = self::alias('stat')
- ->leftJoin("{$actTable} act",'act.id=stat.act_id')
- ->leftJoin('group_buy_lb_goods gg','act.id=gg.group_buy_lb_activity_id')
- ->leftJoin('goods', 'goods.goods_id=gg.goods_id')
- ->where($filter)
- ->where('gg.goods_id', '>', 0)
- ->field("stat.act_id,act.name as act_name,gg.goods_name,goods.goods_no,act.start_time,act.end_time,stat.act_type,sum(stat.pv) as pv,sum(stat.uv) as uv,sum(stat.uv_new) as uv_new,
- sum(stat.pay_order_count) as pay_order_count,sum(stat.pay_user_count) as pay_user_count,
- sum(stat.pay_amount) as pay_amount,convert((stat.pay_user_count/stat.uv)*100,decimal(10,2)) as ratio")
- ->group('stat.act_id')->order('stat.act_id', 'desc');
- } elseif ($params['act_type']==9){ //秒杀
- $query = self::alias('stat')
- ->leftJoin("{$actTable} act",'act.id=stat.act_id')
- // ->leftJoin('ms_activity_goods gg','act.id=gg.ms_activity_id')
- // ->leftJoin('goods', 'goods.goods_id=gg.goods_id')
- ->where($filter)
- // ->where('gg.goods_id', '>', 0)
- ->field("stat.act_id,act.name as act_name,act.start_time,act.end_time,stat.act_type,sum(stat.pv) as pv,sum(stat.uv) as uv,sum(stat.uv_new) as uv_new,
- sum(stat.pay_order_count) as pay_order_count,sum(stat.pay_user_count) as pay_user_count,
- sum(stat.pay_amount) as pay_amount,convert((stat.pay_user_count/stat.uv)*100,decimal(10,2)) as ratio")
- ->group('stat.act_id')->order('stat.act_id', 'desc');
- }
- elseif ($params['act_type'] == 2) { // 砍价
- $query = self::alias('stat')
- ->leftJoin("{$actTable} act",'act.id=stat.act_id')
- ->leftJoin('kj_activity_goods gg','act.id=gg.activity_id')
- ->leftJoin('goods', 'goods.goods_id=gg.goods_id')
- ->where($filter)
- ->where('gg.goods_id', '>', 0)
- ->field("stat.act_id,act.name as act_name,goods.goods_name,goods.goods_no,act.start_time,act.end_time,stat.act_type,sum(stat.pv) as pv,sum(stat.uv) as uv,sum(stat.uv_new) as uv_new,
- sum(stat.pay_order_count) as pay_order_count,sum(stat.pay_user_count) as pay_user_count,
- sum(stat.pay_amount) as pay_amount,convert((stat.pay_user_count/stat.uv)*100,decimal(10,2)) as ratio")
- ->group('stat.act_id')->order('stat.act_id', 'desc');
- } else { // 其他活动
- $query = self::alias('stat')
- ->leftJoin("{$actTable} act",'act.id=stat.act_id')
- ->where($filter)
- ->where('act.id', '>', 0)
- ->field("stat.act_id,act.name as act_name,act.start_time,act.end_time,stat.act_type,sum(stat.pv) as pv,sum(stat.uv) as uv,sum(stat.uv_new) as uv_new,
- sum(stat.pay_order_count) as pay_order_count,sum(stat.pay_user_count) as pay_user_count,
- sum(stat.pay_amount) as pay_amount,convert((stat.pay_user_count/stat.uv)*100,decimal(10,2)) as ratio")
- ->group('stat.act_id')->order('stat.act_id', 'desc');
- }
- return $query->paginate(15)->each(function ($item) {
- $item['ratio'] = helper::number2($item['ratio']);
- });
- }
- /**
- * 获取查询条件
- * @param array $param
- * @return array
- */
- private function getFilter(array $param = [])
- {
- // 默认查询条件
- $params = $this->setQueryDefaultValue($param, [
- 'act_type' => 0, // 活动类型
- ]);
- // 检索查询条件
- $filter = [];
- $params['act_type'] > 0 && $filter[] = ['stat.act_type', '=', (int)$params['act_type']];
- $filter[] = ['stat.act_id', '>', 0];
- return $filter;
- }
- /**
- * 新增记录
- * @param array $data
- * @return bool
- */
- public function add(array $data)
- {
- $this->transaction(function () use ($data) {
- $this->save($data);
- });
- return true;
- }
- /**
- * 更新记录
- * @param array $data
- * @return bool
- */
- public function edit(array $data)
- {
- $this->transaction(function () use ($data) {
- $this->save($data);
- });
- return true;
- }
-
- }
|