$actId, 'act_type' => $type, 'ref_date' => date('Ymd', strtotime($date)), 'pv' => (int)$pv, 'uv' => (int)$uv, 'uv_new' => $uvNewV, 'pay_order_count' => $payOrderCount, 'pay_user_count' => $payUserCount, 'pay_amount' => $payAmount, ]; $info = self::where('act_id', $actId)->where('act_type', $type)->where('ref_date', date('Ymd', strtotime($date)))->find(); if (empty($info)) { (new self)->save($insert); } else { $info->where('id', $info['id'])->update($insert); } } } private static function getPvUv($type, $startTime, $endTime) { // 访问量 $data = Db::name('visit_record')->where('visit_type', $type) ->whereBetween('create_time', [$startTime, $endTime]) ->field('sum(IF(v_type=0, 1, 0)) as pv,sum(IF(v_type=1, 1, 0)) as uv,visit_type_id as act_id') ->group('act_id') ->select()->toArray(); return $data; } private static function getUvNew($type, $startTime, $endTime) { $data = User::where('act_source', $type) ->whereBetween('create_time', [$startTime, $endTime]) ->group('act_source_id') ->column('count(act_source_id) as uv_new,act_source_id', 'act_source_id'); return $data; } private static function getPayData($type, $startTime, $endTime) { switch ($type) { case self::ACT_TYPE_GROUP_BUY_LB: $data = Db::name('order')->alias('order')->where('order.order_source', OrderSourceEnum::GROUPBUYLB) ->leftJoin('group_buy_lb_activity_help help', 'help.id=order.order_source_id') ->whereBetween('order.pay_time', [$startTime, $endTime]) ->where('order.is_delete', '=', 0) ->group('help.group_buy_lb_activity_id') ->column('count(distinct(order.user_id)) as pay_user_count,sum(order.pay_price + order.rice_card_money) as pay_amount,count(order.order_id) as pay_order_count,help.group_buy_lb_activity_id', 'help.group_buy_lb_activity_id'); break; case self::ACT_TYPE_GROUP_BUY: $data = Db::name('order')->alias('order')->where('order.order_source', OrderSourceEnum::GROUPBUY) ->leftJoin('group_buy_activity_help help', 'help.id=order.order_source_id') ->whereBetween('order.pay_time', [$startTime, $endTime]) ->where('order.is_delete', '=', 0) ->group('help.group_buy_activity_id') ->column('count(distinct(order.user_id)) as pay_user_count,sum(order.pay_price + order.rice_card_money) as pay_amount,count(order.order_id) as pay_order_count,help.group_buy_activity_id', 'help.group_buy_activity_id'); break; case self::ACT_TYPE_MIAOSHA: $data = Db::name('order')->alias('order')->where('order.order_source', OrderSourceEnum::MIAOSHA) ->leftJoin('ms_activity_goods goods', 'goods.id=order.order_source_id') ->whereBetween('order.pay_time', [$startTime, $endTime]) ->where('order.is_delete', '=', 0) ->group('goods.ms_activity_id') ->column('count(distinct(order.user_id)) as pay_user_count,sum(order.pay_price + order.rice_card_money) as pay_amount,count(order.order_id) as pay_order_count,goods.ms_activity_id', 'goods.ms_activity_id'); break; case self::ACT_TYPE_KJ: $data = Db::name('order')->alias('order')->where('order.order_source', OrderSourceEnum::BARGAIN) ->leftJoin('kj_activity_join join', 'join.id=order.order_source_id') ->whereBetween('order.pay_time', [$startTime, $endTime]) ->where('order.is_delete', '=', 0) ->group('join.activity_id') ->column('count(distinct(order.user_id)) as pay_user_count,sum(order.pay_price + order.rice_card_money) as pay_amount,count(order.order_id) as pay_order_count,join.activity_id', 'join.activity_id'); break; case self::ACT_TYPE_DISCOUNT: $data = Db::name('order_goods')->alias('og')->where('og.is_activity_discount', 1) ->leftJoin('order', 'order.order_id=og.order_id') ->whereBetween('order.pay_time', [$startTime, $endTime]) ->where('order.is_delete', '=', 0) ->group('og.activity_discount_id') ->column('count(distinct(order.user_id)) as pay_user_count,sum(og.total_pay_price + og.rice_card_money) as pay_amount,count(distinct(order.order_id)) as pay_order_count,og.activity_discount_id', 'og.activity_discount_id'); break; case self::ACT_TYPE_MJ_SEND: $data = Db::name('order_goods')->alias('og')->where('og.is_mj_send', 1) ->leftJoin('order', 'order.order_id=og.order_id') ->whereBetween('order.pay_time', [$startTime, $endTime]) ->where('order.is_delete', '=', 0) ->group('og.mj_send_activity_id') ->column('count(distinct(order.user_id)) as pay_user_count,sum(og.total_pay_price + og.rice_card_money) as pay_amount,count(distinct(order.order_id)) as pay_order_count,og.mj_send_activity_id', 'og.mj_send_activity_id'); break; case self::ACT_TYPE_FULL_SEND: $data = Db::name('order_goods')->alias('og')->where('og.is_full_send', 1) ->leftJoin('order', 'order.order_id=og.order_id') ->whereBetween('order.pay_time', [$startTime, $endTime]) ->where('order.is_delete', '=', 0) ->group('og.full_send_activity_id') ->column('count(distinct(order.user_id)) as pay_user_count,sum(og.total_pay_price + og.rice_card_money) as pay_amount,count(distinct(order.order_id)) as pay_order_count,og.full_send_activity_id', 'og.full_send_activity_id'); break; default: $data = []; break; } return $data; } }