123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576 |
- <?php
- /**
- * Created by PhpStorm.
- * User: hp
- * Date: 2017/11/30
- * Time: 17:24
- */
- namespace App\Http\Controllers\Manage\Trade;
- use App\Http\Controllers\Manage\Finance\BaseController;
- use App\Http\Controllers\Manage\Trade\Transformers\OrderDayStatOutPayTransformer;
- use App\Http\Controllers\Manage\Trade\Transformers\OrderDayStatTransformer;
- use App\Http\Controllers\Manage\Trade\Transformers\OrderDaySumStatTransformer;
- use App\Http\Controllers\Manage\Trade\Transformers\OrderMonthTransformer;
- use App\Http\Controllers\Manage\Trade\Transformers\OrderChannelMonthTransformer;
- use App\Modules\Trade\Services\OrderDayStatService;
- use Illuminate\Http\Request;
- use App\Modules\User\Services\UserSignService;
- use App\Modules\Channel\Services\ChannelService;
- use App\Modules\SendOrder\Services\SendOrderService;
- use DB;
- class OrderDayStatsController extends BaseController
- {
- /**
- * @apiDefine Trade 交易订单
- */
- /**
- * @apiVersion 1.0.0
- * @api {GET} trade/orderDayStats 获取渠道日统计列表
- * @apiGroup Trade
- * @apiName orderDayStats
- * @apiParam {Number} distribution_channel_id 分销渠道ID
- * @apiParam {String} begin_time 开始时间
- * @apiParam {String} begin_time 结束时间
- * @apiSuccess {String} date 日期.
- * @apiSuccess {Number} distribution_channel_id 渠道id.
- * @apiSuccess {Number} pay_success_user_num 总付费用户数.
- * @apiSuccess {Number} total_recharge_amount 总付费总额.
- * @apiSuccess {Number} unpaid_num 未付费订单数.
- * @apiSuccess {Number} paid_num 付费订单数.
- * @apiSuccess {Number} promotion_total_uv 推广uv数.
- * @apiSuccess {Number} promotion_total_pv 推广pv数.
- * @apiSuccess {Number} send_order_num 派单数.
- * @apiSuccess {Number} register_user_num 注册用户数.
- * @apiSuccess {Number} force_user_num 关注用户数.
- * @apiSuccess {Number} ticket_recharge_user_num 普通充值用户数
- * @apiSuccess {Number} year_recharge_user_num 包年VIP充值用户数
- * @apiSuccess {Number} actual_send_order_num 实际派单数
- * @apiSuccess {Number} sign_num 签到人数
- * @apiSuccess {String} created_at 创建时间
- * @apiSuccess {String} updated_at 更新时间
- */
- function index(Request $request)
- {
- //根据名称查渠道ID
- $temp_distribution_channel_name = $distribution_channel_name = $request->has('name') ?$request->input('name') : '';
- $distribution_channel_id = $request->has('distribution_channel_id') ? (int)$request->input('distribution_channel_id') : null;
- $temp_distribution_channel_id = $distribution_channel_id;
- $orderBy = $request->has('orderBy') ? $request->input('orderBy') : '';
- if ($distribution_channel_name) {
- $distribution_channel_id = [];
- $channels = ChannelService::getChannelList(['company_name' => $distribution_channel_name]);
- foreach ($channels as $channel) {
- $distribution_channel_id[] = $channel->id;
- }
- }
- $begin_time = $request->has('begin_time') ? $request->input('begin_time') : '';
- $end_time = $request->has('end_time') ? $request->input('end_time') : '';
- $stats = OrderDayStatService::search(compact('distribution_channel_id', 'begin_time', 'end_time', 'orderBy'));
- $stats = $this->OrderDayStatAndSign($stats, compact('distribution_channel_id', 'begin_time', 'end_time'));
- $ret = [];
- $trans = new OrderDayStatTransformer();
- $ret['list'] = [];
- $empty_fill = false;
- $temp_res = [];
- $where = [];
- if ($stats->isEmpty()) {
- if($temp_distribution_channel_id){
- $where[] = ['distribution_channels.id','=',$temp_distribution_channel_id];
- }
- if($temp_distribution_channel_name){
- $where[] = ['companies.name','like','%'.$temp_distribution_channel_name.'%'];
- }
- if($where){
- $temp_res = DB::table('distribution_channels')
- ->join('channel_users','channel_users.id','=','distribution_channels.channel_user_id')
- ->join('companies','companies.id','=','channel_users.company_id')
- ->where($where)
- ->select('distribution_channels.id as distribution_channel_id','companies.name as distribution_channel_name','companies.fans_gender')
- ->get();
- if ($temp_res) {
- $empty_fill = true;
- }
- }
- }
- if ($empty_fill) {
- foreach ($temp_res as $item) {
- $ret['list'][] = $trans->transformDefault($item);
- }
- }
- foreach ($stats as $item) {
- switch ($item['fans_gender']){
- case 1:$item['fans_gender']='男粉';break;
- case 2:$item['fans_gender']='女粉';break;
- case 3:$item['fans_gender']='混合粉';break;
- default:$item['fans_gender']='';
- }
- $ret['list'][] = $trans->transform($item);
- }
- $ret['meta'] = [
- 'total' => (int)$stats->total(),
- 'per_page' => (int)$stats->perPage(),
- 'current_page' => (int)$stats->currentPage(),
- 'last_page' => (int)$stats->lastPage(),
- 'next_page_url' => (string)$stats->nextPageUrl(),
- 'prev_page_url' => (string)$stats->previousPageUrl()
- ];
- return response()->success($ret);
- }
- /**
- * @apiVersion 1.0.0
- * @api {GET} trade/getStatByChannel 获取渠道日统计列表
- * @apiGroup Trade
- * @apiName getStatByChannel
- * @apiParam {String} begin_time 开始时间
- * @apiParam {String} begin_time 结束时间
- * @apiSuccess {String} date 日期.
- * @apiSuccess {Number} distribution_channel_id 渠道id.
- * @apiSuccess {Number} pay_success_user_num 总付费用户数.
- * @apiSuccess {Number} total_recharge_amount 总付费总额.
- * @apiSuccess {Number} unpaid_num 未付费订单数.
- * @apiSuccess {Number} paid_num 付费订单数.
- * @apiSuccess {Number} promotion_total_uv 推广uv数.
- * @apiSuccess {Number} promotion_total_pv 推广pv数.
- * @apiSuccess {Number} send_order_num 派单数.
- * @apiSuccess {Number} register_user_num 注册用户数.
- * @apiSuccess {Number} force_user_num 关注用户数.
- * @apiSuccess {Number} ticket_recharge_user_num 普通充值用户数
- * @apiSuccess {Number} year_recharge_user_num 包年VIP充值用户数
- * @apiSuccess {String} created_at 创建时间
- * @apiSuccess {String} updated_at 更新时间
- */
- function getStatByChannel(Request $request)
- {
- $begin_time = $request->has('begin_time') ? $request->input('begin_time') : date("Y-m-d", strtotime('-7 days'));
- $end_time = $request->has('end_time') ? $request->input('end_time') : date("Y-m-d");
- $stat = OrderDayStatService::getStatByChannel(compact('begin_time', 'end_time'));
- return response()->collection(new OrderDaySumStatTransformer(), $stat);
- }
- function exportStatByChannel(Request $request)
- {
- $begin_time = $request->has('begin_time') ? $request->input('begin_time') : date("Y-m-d", strtotime('-7 days'));
- $end_time = $request->has('end_time') ? $request->input('end_time') : date("Y-m-d");
- $stats = OrderDayStatService::getStatByChannel(compact('begin_time', 'end_time'));
- header("Content-type:application/vnd.ms-excel");
- header("Content-Disposition:attachment;filename=" . "日统计列表" . date("YmdHis") . ".csv");
- echo iconv("UTF-8", "GBK", "\"日期\",\"付费用户数\",\"充值总额\",\"外部通道充值总额\",\"uv\",\"pv\",\"创建派单数\",\"实际派单数\",\"注册用户数\",\"实际注册用户数\",\"强关用户数\",\"首充用户数\",\"首充金额\",\"非首充用户数\",\"非首充金额\",\"订单成功率\",\"首日注册充值金额\",\"首日注册付费人数\"\r\n");
- if ($stats) {
- foreach ($stats as $stat) {
- echo("\"" . $stat->date . "\",");
- echo("\"" . (int)$stat->pay_success_user_num . "\",");
- echo("\"" . (float)$stat->total_recharge_amount . "\",");
- echo("\"" . (float)$stat->channel_merchant_recharge_amount . "\",");
- echo("\"" . (int)$stat->promotion_total_uv . "\",");
- echo("\"" . (int)$stat->promotion_total_pv . "\",");
- echo("\"" . (int)$stat->send_order_num . "\",");
- echo("\"" . (int)$stat->real_send_order_num . "\",");
- echo("\"" . (int)$stat->register_user_num . "\",");
- echo("\"" . (int)$stat->real_register_user_num . "\",");
- echo("\"" . (int)$stat->force_user_num . "\",");
- echo("\"" . (int)$stat->first_recharge_user_num . "\",");
- echo("\"" . (float)$stat->first_recharge_amount . "\",");
- echo("\"" . ((int)$stat->pay_success_user_num - (float)$stat->first_recharge_user_num) . "\",");
- echo("\"" . ((float)$stat->total_recharge_amount - (float)$stat->first_recharge_amount) . "\",");
- $per = (float)$stat->unpaid_num + (float)$stat->paid_num > 0 ? round(((float)$stat->paid_num / ((float)$stat->unpaid_num + (float)$stat->paid_num)) * 100, 2) : 0;
- echo("\"" . $per . "%\",");
- echo("\"" . (float)$stat->reg_user_first_recharge_amount . "\",");
- echo("\"" . (float)$stat->reg_user_first_recharge_user_num . "\"\r\n");
- }
- }
- exit();
- }
- function export(Request $request)
- {
- $distribution_channel_id = $request->has('distribution_channel_id') ? (int)$request->input('distribution_channel_id') : null;
- $begin_time = $request->has('begin_time') ? $request->input('begin_time') : '';
- $end_time = $request->has('end_time') ? $request->input('end_time') : '';
- $stats = OrderDayStatService::search(compact('distribution_channel_id', 'begin_time', 'end_time'), true);
- $stats = $this->OrderDayStatAndSign($stats, compact('distribution_channel_id', 'begin_time', 'end_time'));
- header("Content-type:application/vnd.ms-excel");
- header("Content-Disposition:attachment;filename=" . "日统计列表" . date("YmdHis") . ".csv");
- echo iconv("UTF-8", "GBK", "\"渠道ID\",\"渠道名称\",\"日期\",\"充值总额\",\"创建派单数\",\"实际派单数\",\"uv\",\"总点击数\",\"新增关注数\",\"注册用户数\",\"普通付费人数\",\"包年付费人数\",\"订单成功率\",\"签到人数\",\"首充用户数\",\"首充金额\",\"注册用户首充金额\",\"注册用户首充用户数\"\r\n");
- if ($stats) {
- foreach ($stats as $stat) {
- echo("\"" . $stat->distribution_channel_id . "\",");
- echo("\"" . iconv("UTF-8", "GBK", $stat->distribution_channel_name) . "\",");
- echo("\"" . $stat->date . "\",");
- echo("\"" . (float)$stat->total_recharge_amount . "\",");
- echo("\"" . (int)$stat->send_order_num . "\",");
- echo("\"" . (int)$stat->real_send_order_num . "\",");
- echo("\"" . (int)$stat->promotion_total_uv . "\",");
- echo("\"" . (int)$stat->promotion_total_pv . "\",");
- echo("\"" . (int)$stat->force_user_num . "\",");
- echo("\"" . (int)$stat->register_user_num . "\",");
- echo("\"" . (int)$stat->ticket_recharge_user_num . "\",");
- echo("\"" . $stat->year_recharge_user_num . "\",");
- $per = (float)$stat->unpaid_num + (float)$stat->paid_num > 0 ? round(((float)$stat->paid_num / ((float)$stat->unpaid_num + (float)$stat->paid_num)) * 100, 2) : 0;
- echo("\"" . $per . "%\",");
- echo("\"" . (int)$stat->sign_num . "\",");
- echo("\"" . (int)$stat->first_recharge_user_num . "\",");
- echo("\"" . (float)$stat->first_recharge_amount . "\",");
- echo("\"" . (float)$stat->reg_user_first_recharge_amount . "\",");
- echo("\"" . (float)$stat->reg_user_first_recharge_user_num . "\"\r\n");
- }
- }
- exit();
- }
- private function OrderDayStatAndSign($target, $data)
- {
- //$sing_data = UserSignService::getSignTotalByChnnelId($data);
- if (true) {
- foreach ($target as &$v) {
- //实际派单数
- $v->actual_send_order_num = 0;
- $v->sign_num = 0;
- /*
- $v->actual_send_order_num = SendOrderService::getActualSendOrderNum($v->distribution_channel_id,$v->date);
- if(!$v->actual_send_order_num){
- }
- foreach ($sing_data as $val){
- if($v->distribution_channel_id == $val->distribution_channel_id && $v->date == $val->day){
- $v->sign_num = $val->sign_num;
- break;
- }
- }
- */
- }
- }
- return $target;
- }
- public function getAllGroupbyMonth()
- {
- $data = OrderDayStatService::getAllGroupbyMonth();
- return response()->collection(new OrderMonthTransformer(), $data);
- }
- public function getAllGroupbyMonthChannel(Request $request)
- {
- $month = $request->has('month') ? $request->input('month') : '';
- $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';
- $distribution_channel_name = $request->has('distribution_channel_name') ? $request->input('distribution_channel_name') : '';
- $data = OrderDayStatService::getAllGroupbyMonthChannel(compact('month', 'distribution_channel_id', 'distribution_channel_name'), 1);
- return response()->collection(new OrderChannelMonthTransformer(), $data);
- }
- public function exportAllGroupbyMonthChannel(Request $request)
- {
- $month = $request->has('month') ? $request->input('month') : '';
- $stats = OrderDayStatService::getAllGroupbyMonthChannel(compact('month'), 1);
- header("Content-type:application/vnd.ms-excel");
- header("Content-Disposition:attachment;filename=" . "渠道按月统计列表" . date("YmdHis") . ".csv");
- echo iconv("UTF-8", "GBK", "\"渠道ID\",\"渠道名称\",\"月份\",\"充值总额\",\"派单数\",\"实际派单数\",\"uv\",\"实际注册用户数\",\"pv\",\"新增关注数\",\"普通付费人数\",\"包年付费人数\",\"订单成功率\",\"签到人数\"\r\n");
- if ($stats) {
- foreach ($stats as $stat) {
- echo("\"" . $stat->distribution_channel_id . "\",");
- echo("\"" . iconv("UTF-8", "GBK", $stat->distribution_channel_name) . "\",");
- echo("\"" . date("Y-m", strtotime($stat->date)) . "\",");
- echo("\"" . (float)$stat->total_recharge_amount . "\",");
- echo("\"" . (int)$stat->send_order_num . "\",");
- echo("\"" . (int)$stat->actual_send_order_num . "\",");
- echo("\"" . (int)$stat->promotion_total_uv . "\",");
- echo("\"" . (int)$stat->real_register_user_num . "\",");
- echo("\"" . (int)$stat->promotion_total_pv . "\",");
- echo("\"" . (int)$stat->force_user_num . "\",");
- echo("\"" . (int)$stat->ticket_recharge_user_num . "\",");
- echo("\"" . $stat->year_recharge_user_num . "\",");
- $per = (float)$stat->unpaid_num + (float)$stat->paid_num > 0 ? round(((float)$stat->paid_num / ((float)$stat->unpaid_num + (float)$stat->paid_num)) * 100, 2) : 0;
- echo("\"" . $per . "%\",");
- echo("\"" . (int)$stat->sign_num . "\r\n");
- }
- }
- }
- /**
- * @apiVersion 1.0.0
- * @apiDescription 站外支付数据
- * @api {GET} trade/getOutPayData
- * @apiGroup Trade
- * @apiName getOutPayData
- * @apiParam {String} [distribution_channel_id] 渠道ID
- * @apiParam {String} [search_name] 搜索名称
- * @apiParam {String} [start_time] 开始时间2017-01-01.(可不传)
- * @apiParam {String} [end_time] 结束时间2017-02-01.(可不传)
- *
- * @apiSuccess {String} distribution_channel_id 渠道ID
- * @apiSuccess {String} distribution_channel_name 渠道名称
- * @apiSuccess {String} date 日期.
- * @apiSuccess {String} month 日期.
- * @apiSuccess {Number} channel_merchant_recharge_amount 站外总金额.
- * @apiSuccess {Number} pay_merchant_id 支付渠道ID.
- * @apiSuccessExample {json} Success-Response:
- *
- * {
- * "code": 0,
- * "msg": "",
- * "data":
- * {
- * "list":[
- * {
- * "distribution_channel_id": 70,
- * "distribution_channel_name": "梦嘉男号50",
- * "month": "2018-05",
- * "date": "",
- * "channel_merchant_recharge_amount": 18,
- * "pay_merchant_id": 0
- * }
- * ]
- * "meta":{
- * "total": 4,
- * "per_page": 15,
- * "current_page": 1,
- * "last_page": 1,
- * "next_page_url": "",
- * "prev_page_url": ""
- * }
- * }
- * }
- */
- function getOutPayData(Request $request)
- {
- $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';
- $start_time = $request->has('start_time') && !empty($request->input('start_time')) ? date('Ymd', strtotime($request->input('start_time'))) : '';
- $end_time = $request->has('end_time') && !empty($request->input('end_time')) ? date('Ymd', strtotime($request->input('end_time'))) : '';
- $end_time = self::getMaxDay($end_time);
- $search_name = $request->has('search_name') ? $request->input('search_name') : '';
- $params = [
- 'distribution_channel_id' => $distribution_channel_id,
- 'distribution_channel_name' => $search_name,
- 'start_date' => $start_time,
- 'end_date' => $end_time,
- ];
- $data = OrderDayStatService::getOutPayData($params);
- return response()->pagination(new OrderDayStatOutPayTransformer(), $data);
- }
- /**
- * @apiVersion 1.0.0
- * @apiDescription 站外支付数据导出
- * @api {GET} trade/getOutPayDataExport
- * @apiGroup Trade
- * @apiName getOutPayDataExport
- * @apiParam {String} [distribution_channel_id] 渠道ID
- * @apiParam {String} [search_name] 搜索名称
- * @apiParam {String} [start_time] 开始时间2017-01-01.(可不传)
- * @apiParam {String} [end_time] 结束时间2017-02-01.(可不传)
- *
- * @apiSuccess {String} distribution_channel_id 渠道ID
- * @apiSuccess {String} distribution_channel_name 渠道名称
- * @apiSuccess {String} date 日期.
- * @apiSuccess {String} month 日期.
- * @apiSuccess {Number} channel_merchant_recharge_amount 站外总金额.
- * @apiSuccess {Number} pay_merchant_id 支付渠道ID.
- * @apiSuccessExample {json} Success-Response:
- *
- * {
- * "code": 0,
- * "msg": "",
- * "data":
- * {
- * "list":[
- * {
- * "distribution_channel_id": 70,
- * "distribution_channel_name": "梦嘉男号50",
- * "month": "2018-05",
- * "date": "",
- * "channel_merchant_recharge_amount": 18,
- * "pay_merchant_id": 0
- * }
- * ]
- * "meta":{
- * "total": 4,
- * "per_page": 15,
- * "current_page": 1,
- * "last_page": 1,
- * "next_page_url": "",
- * "prev_page_url": ""
- * }
- * }
- * }
- */
- function getOutPayDataExport(Request $request)
- {
- $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';
- $start_time = $request->has('start_time') && !empty($request->input('start_time')) ? date('Ymd', strtotime($request->input('start_time'))) : '';
- $end_time = $request->has('end_time') && !empty($request->input('end_time')) ? date('Ymd', strtotime($request->input('end_time'))) : '';
- $end_time = self::getMaxDay($end_time);
- $search_name = $request->has('search_name') ? $request->input('search_name') : '';
- $params = [
- 'distribution_channel_id' => $distribution_channel_id,
- 'distribution_channel_name' => $search_name,
- 'start_date' => $start_time,
- 'end_date' => $end_time,
- ];
- $data = OrderDayStatService::getOutPayData($params, true);
- header("Content-type:application/vnd.ms-excel");
- header("Content-Disposition:attachment;filename=" . "站外渠道支付数据" . date("YmdHis") . ".csv");
- echo iconv("UTF-8", "GBK", "\"渠道ID\",\"渠道名称\",\"月份\",\"日期\",\"站外金额(元)\",\"支付渠道ID\"\r\n");
- if ($data) {
- foreach ($data as $item) {
- echo("\"" . iconv("UTF-8", "GBK", trim($item->distribution_channel_id)) . "\",");
- echo("\"" . iconv("UTF-8", "GBK", trim($item->distribution_channel_name)) . "\",");
- echo("\"" . iconv("UTF-8", "GBK", trim($item->month)) . "\",");
- echo("\"" . iconv("UTF-8", "GBK", trim($item->date)) . "\",");
- echo("\"" . iconv("UTF-8", "GBK", trim($item->channel_merchant_recharge_amount)) . "\",");
- echo("\"" . iconv("UTF-8", "GBK", trim($item->pay_merchant_id)) . "\"\r\n");
- }
- }
- exit();
- }
- function getStatByCompany(Request $request)
- {
- $begin_time = $request->has('begin_time') ? $request->input('begin_time') : date("Y-m-d", strtotime('-7 days'));
- $end_time = $request->has('end_time') ? $request->input('end_time') : date("Y-m-d");
- $company_id = $request->has('company_id') && $request->input('company_id') ? $request->input('company_id') : 0;
- $company_name = $request->has('company_name') && $request->input('company_name') ? $request->input('company_name') : '';
- $where = "order_day_stats.date >= '{$begin_time}' and order_day_stats.date <= '{$end_time}'";
- if ($company_id) $where .= " and company_id = {$company_id}";
- if ($company_name) $where .= " and company_name like '%{$company_name}%'";
- $data = DB::select("select company_id,
- company_name,
- fans_gender,
- sum(pay_success_user_num) pay_success_user_num,
- sum(total_recharge_amount) total_recharge_amount,
- sum(unpaid_num) unpaid_num,
- sum(paid_num) paid_num,
- sum(promotion_total_uv) promotion_total_uv,
- sum(promotion_total_pv) promotion_total_pv,
- sum(send_order_num) send_order_num,
- sum(real_send_order_num) real_send_order_num,
- sum(register_user_num) register_user_num,
- sum(real_register_user_num) real_register_user_num,
- sum(force_user_num) force_user_num,
- sum(ticket_recharge_user_num) ticket_recharge_user_num,
- sum(year_recharge_user_num) year_recharge_user_num,
- sum(first_recharge_user_num) first_pay_user_num,
- sum(first_recharge_amount) first_pay_amount,
- sum(reg_user_first_recharge_user_num) reg_user_first_recharge_user_num,
- sum(reg_user_first_recharge_amount) reg_user_first_recharge_amount from order_day_stats,companies,channel_users where {$where} and channel_users.id = order_day_stats.channel_user_id and companies.id = channel_users.company_id group by company_id");
- if ($data) {
- foreach ($data as $k => $v) {
- $data[$k]->unpaid_num = (int)$v->unpaid_num;
- $data[$k]->paid_num = (int)$v->paid_num;
- $data[$k]->total_recharge_amount = (int)$v->total_recharge_amount;
- $data[$k]->first_pay_amount = (int)$v->first_pay_amount;
- $data[$k]->not_first_pay_user_num = (float)$v->pay_success_user_num - (float)$v->first_pay_user_num;
- $data[$k]->not_first_pay_amount = round((float)$v->total_recharge_amount - (float)$v->first_pay_amount, 2);
- switch ($v->fans_gender){
- case 1:$v->fans_gender = '男';break;
- case 2:$v->fans_gender = '女';break;
- case 3:$v->fans_gender = '混合粉';break;
- default:$v->fans_gender = '';
- }
- $data[$k]->fans_gender = $v->fans_gender;
- }
- }
- return response()->success($data);
- }
- function exportStatByCompany(Request $request)
- {
- $begin_time = $request->has('begin_time') ? $request->input('begin_time') : date("Y-m-d", strtotime('-7 days'));
- $end_time = $request->has('end_time') ? $request->input('end_time') : date("Y-m-d");
- $company_id = $request->has('company_id') && $request->input('company_id') ? $request->input('company_id') : 0;
- $company_name = $request->has('company_name') && $request->input('company_name') ? $request->input('company_name') : '';
- $where = "order_day_stats.date >= '{$begin_time}' and order_day_stats.date <= '{$end_time}'";
- if ($company_id) $where .= " and company_id = {$company_id}";
- if ($company_name) $where .= " and company_name like '%{$company_name}%'";
- $data = DB::select("select company_id,
- company_name,
- sum(pay_success_user_num) pay_success_user_num,
- sum(total_recharge_amount) total_recharge_amount,
- sum(unpaid_num) unpaid_num,
- sum(paid_num) paid_num,
- sum(promotion_total_uv) promotion_total_uv,
- sum(promotion_total_pv) promotion_total_pv,
- sum(send_order_num) send_order_num,
- sum(real_send_order_num) real_send_order_num,
- sum(register_user_num) register_user_num,
- sum(real_register_user_num) real_register_user_num,
- sum(force_user_num) force_user_num,
- sum(ticket_recharge_user_num) ticket_recharge_user_num,
- sum(year_recharge_user_num) year_recharge_user_num,
- sum(first_recharge_user_num) first_pay_user_num,
- sum(first_recharge_amount) first_pay_amount,
- sum(reg_user_first_recharge_user_num) reg_user_first_recharge_user_num,
- sum(reg_user_first_recharge_amount) reg_user_first_recharge_amount from order_day_stats,companies,channel_users where {$where} and channel_users.id = order_day_stats.channel_user_id and companies.id = channel_users.company_id group by company_id");
- header("Content-type:application/vnd.ms-excel");
- header("Content-Disposition:attachment;filename=" . "按公司统计列表" . date("YmdHis") . ".csv");
- echo iconv("UTF-8", "GBK", "\"公司ID\",\"公司名称\",\"充值总额\",\"创建派单数\",\"实际派单数\",\"uv\",\"总点击数\",\"新增关注数\",\"注册用户数\",\"普通付费人数\",\"包年付费人数\",\"订单成功率\",\"首充用户数\",\"首充金额\",\"注册用户首充金额\",\"注册用户首充用户数\"\r\n");
- if ($data) {
- foreach ($data as $stat) {
- echo("\"" . $stat->company_id . "\",");
- echo("\"" . iconv("UTF-8", "GBK", $stat->company_name) . "\",");
- echo("\"" . (float)$stat->total_recharge_amount . "\",");
- echo("\"" . (int)$stat->send_order_num . "\",");
- echo("\"" . (int)$stat->real_send_order_num . "\",");
- echo("\"" . (int)$stat->promotion_total_uv . "\",");
- echo("\"" . (int)$stat->promotion_total_pv . "\",");
- echo("\"" . (int)$stat->force_user_num . "\",");
- echo("\"" . (int)$stat->register_user_num . "\",");
- echo("\"" . (int)$stat->ticket_recharge_user_num . "\",");
- echo("\"" . $stat->year_recharge_user_num . "\",");
- $per = (float)$stat->unpaid_num + (float)$stat->paid_num > 0 ? round(((float)$stat->paid_num / ((float)$stat->unpaid_num + (float)$stat->paid_num)) * 100, 2) : 0;
- echo("\"" . $per . "%\",");
- echo("\"" . (int)$stat->first_pay_user_num . "\",");
- echo("\"" . (float)$stat->first_pay_amount . "\",");
- echo("\"" . (float)$stat->reg_user_first_recharge_amount . "\",");
- echo("\"" . (float)$stat->reg_user_first_recharge_user_num . "\"\r\n");
- }
- }
- exit;
- }
- }
|