123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- <?php
- namespace app\admin\controller;
- use think\exception\ValidateException;
- use app\model\Order;
- use app\model\Incomelog;
- use app\model\TechnicalIncomelog;
- use app\model\StoreIncomelog;
- use app\model\OperatingcityIncomelog;
- class StatisticalController extends Base
- {
- function index()
- {
- $weid = weid();
- $create_time = input('post.create_time', '', 'serach_in');
- $where[] = ['weid', '=', $weid];
- if (!empty($create_time)) {
- $where[] = ['create_time', 'between', [strtotime($create_time[0]), strtotime($create_time[1])]];
- } else {
- $interval = input('post.interval', '', 'serach_in');
- $create_time = [];
- if ($interval == '日') {
- $create_time[0] = date("Y-m-d", strtotime("-1 day"));
- $create_time[1] = date("Y-m-d", time());
- $where[] = ['create_time', 'between', [strtotime($create_time[0]), strtotime($create_time[1])]];
- } elseif ($interval == '周') {
- $create_time[0] = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") - date("w") + 1, date("Y")));
- $create_time[1] = date("Y-m-d", time());
- $where[] = ['create_time', 'between', [strtotime($create_time[0]), strtotime($create_time[1])]];
- } elseif ($interval == '月') {
- $create_time[0] = date('Y-m-d', mktime(0, 0, 0, date('m'), 1, date('Y')));
- $create_time[1] = date("Y-m-d", time());
- $where[] = ['create_time', 'between', [strtotime($create_time[0]), strtotime($create_time[1])]];
- } elseif ($interval == '年') {
- $create_time[0] = date('Y-m-d', mktime(0, 0, 0, 1, 1, date('Y')));
- $create_time[1] = date("Y-m-d", time());
- $where[] = ['create_time', 'between', [strtotime($create_time[0]), strtotime($create_time[1])]];
- }
- }
- $list[0]['ptypename'] = '服务';
- $list[1]['ptypename'] = '次卡';
- $list[2]['ptypename'] = '商品';
- foreach ($list as &$vo) {
- if ($vo['ptypename'] == '服务') {
- $whereService = $where;
- $whereService['ptype'] = 2;
- $vo['ordercount'] = Order::where($whereService)->count();
- $vo['total'] = Order::where($whereService)->where('pay_time', '>', 0)->sum('total');
- $vo['deposit'] = Order::where($whereService)->where('is_additional', 1)->sum('total');
- $vo['additional'] = Order::where($whereService)->where('is_additional', 1)->sum('additional');
- $vo['AgentIncome'] = Incomelog::where('order_id', 'IN', function ($query) use ($whereService) {
- $query->name('order')->where($whereService)->field('id');
- })
- ->sum('income');
- $vo['TechnicalIncome'] = TechnicalIncomelog::where('order_id', 'IN', function ($query) use ($whereService) {
- $query->name('order')->where($whereService)->field('id');
- })
- ->sum('income');
- $vo['StoreIncome'] = StoreIncomelog::where('order_id', 'IN', function ($query) use ($whereService) {
- $query->name('order')->where($whereService)->field('id');
- })
- ->sum('income');
- $vo['OperatingcityIncome'] = OperatingcityIncomelog::where('order_id', 'IN', function ($query) use ($whereService) {
- $query->name('order')->where($whereService)->field('id');
- })
- ->sum('income');
- } elseif ($vo['ptypename'] == '次卡') {
- $whereTimes = $where;
- $whereTimes['ptype'] = 2;
- $whereTimes['is_times'] = 1;
- $vo['ordercount'] = Order::where($whereTimes)->count();
- $vo['total'] = Order::where($whereTimes)->where('pay_time', '>', 0)->sum('total');
- $vo['deposit'] = '-';
- $vo['additional'] = '-';
- $vo['AgentIncome'] = Incomelog::where('order_id', 'IN', function ($query) use ($whereTimes) {
- $query->name('order')->where($whereTimes)->field('id');
- })
- ->sum('income');
- $vo['TechnicalIncome'] = TechnicalIncomelog::where('order_id', 'IN', function ($query) use ($whereTimes) {
- $query->name('order')->where($whereTimes)->field('id');
- })
- ->sum('income');
- $vo['StoreIncome'] = StoreIncomelog::where('order_id', 'IN', function ($query) use ($whereTimes) {
- $query->name('order')->where($whereTimes)->field('id');
- })
- ->sum('income');
- $vo['OperatingcityIncome'] = OperatingcityIncomelog::where('order_id', 'IN', function ($query) use ($whereTimes) {
- $query->name('order')->where($whereTimes)->field('id');
- })
- ->sum('income');
- } elseif ($vo['ptypename'] == '商品') {
- $whereGoods = $where;
- $whereGoods['ptype'] = 1;
- $vo['ordercount'] = Order::where($whereGoods)->count();
- $vo['total'] = Order::where($whereGoods)->where('pay_time', '>', 0)->sum('total');
- $vo['deposit'] = '-';
- $vo['additional'] = '-';
- $vo['TechnicalIncome'] = '-';
- $vo['AgentIncome'] = Incomelog::where('order_id', 'IN', function ($query) use ($whereGoods) {
- $query->name('order')->where($whereGoods)->field('id');
- })
- ->sum('income');
- $vo['StoreIncome'] = StoreIncomelog::where('order_id', 'IN', function ($query) use ($whereGoods) {
- $query->name('order')->where($whereGoods)->field('id');
- })
- ->sum('income');
- $vo['OperatingcityIncome'] = OperatingcityIncomelog::where('order_id', 'IN', function ($query) use ($whereGoods) {
- $query->name('order')->where($whereGoods)->field('id');
- })
- ->sum('income');
- }
- $vo['platformIncome'] = (int)$vo['total'] - (int)$vo['AgentIncome'] - (int)$vo['TechnicalIncome'] - (int)$vo['StoreIncome'] - (int)$vo['OperatingcityIncome'];
- $vo['starttime'] = $create_time[0];
- $vo['endtime'] = $create_time[1];
- }
- $data['data'] = $list;
- return $this->json($data);
- }
- }
|