HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot//ly.fwmnzf.com/application/admin/controller/FbDataReport.php
<?php
// +----------------------------------------------------------------------
// | Author: Moli <332287662@qq.com>
// +----------------------------------------------------------------------

// +----------------------------------------------------------------------
// | FB数据报表
// +----------------------------------------------------------------------
namespace app\admin\controller;

use app\common\controller\Adminbase;
use think\Db;
use think\facade\Session;

class FbDataReport extends Adminbase
{
    protected function initialize()
    {
        parent::initialize();
        // 投手数据
        $pitcherdata = [];
        $result = Db::name('admin')->select();
        foreach ($result as $k => $v) {
            $pitcherdata[$v['id']] = $v['nickname'];
        }
        // $pitcherdata=json($pitcherdata);
        $this->assign('pitcherdata', json_encode($pitcherdata, JSON_FORCE_OBJECT));
        // 公司数据
        $companydata = [];
        $result = Db::name('fb_data')
            ->alias('a')
            ->join('fb_company c', 'a.company = c.title')
            ->field('c.id,company')
            ->group('id,company')
            ->order(array('id' => 'DESC'))
            ->select();
        foreach ($result as $k => $v) {
            $companydata[$v['id']] = $v['company'];
        }
        $this->assign('companydata', json_encode($companydata, JSON_FORCE_OBJECT));
        // // 币种
        // $currencydata = [];
        // $result = Db::name('fb_data')
        //     ->alias('a')
        //     ->join('fb_currency c', 'a.currency = c.title')
        //     ->field('c.id,currency')
        //     ->group('id,currency')
        //     ->select();
        // foreach ($result as $k => $v) {
        //     $currencydata[$v['id']] = $v['currency'];
        // }
        // $this->assign('currencydata', json_encode($currencydata, JSON_FORCE_OBJECT));
        // 项目
        $projectdata = [];
        $result = Db::name('fb_data')
            ->alias('a')
            ->join('fb_project c', 'a.project = c.title')
            ->field('c.id,project')
            ->group('id,project')
            ->order(array('id' => 'DESC'))
            ->select();
        foreach ($result as $k => $v) {
            $projectdata[$v['id']] = $v['project'];
        }
        $this->assign('projectdata', json_encode($projectdata, JSON_FORCE_OBJECT));
    }
    public function index()
    {
        if ($this->request->isAjax()) {
            $data   = $this->request->get('');
            $page = $data['page'];
            $limit = $data['limit'];
            // 获取搜索条件
            $filter = $data['filter'];
            if ($filter) {
                $filter = json_decode($filter, true);
                // 获取投手信息
                $pitcher = Db::name('admin')->where('id', $filter['pitcher'])->value('nickname');
                // 获取公司信息
                $company = Db::name('fb_company')->where('id', $filter['company'])->value('title');
                // // 币种
                // $currency = Db::name('fb_currency')->where('id', $filter['currency'])->value('title');
                // 项目
                $project = Db::name('fb_project')->where('id', $filter['project'])->value('title');
                // 开始时间
                $startTime = $filter['startTime'];
                // 结束时间
                $endTime = $filter['endTime'];
                // // 查询条件
                $where = [];
                if (!empty($pitcher)) {
                    $where[] = ['pitcher', '=', $pitcher];
                }
                if (!empty($company)) {
                    $where[] = ['company', '=', $company];
                }
                // if (!empty($currency)) {
                //     $where[] = ['currency', '=', $currency];
                // }
                if (!empty($project)) {
                    $where[] = ['project', '=', $project];
                }
                if (!empty($startTime && $endTime)) {
                    $where[] = ['Ttime', 'between time', [$startTime, $endTime]];
                }
                $list = Db::name('fb_data')
                    ->where($where)
                    ->field('min(Ttime) as startTime,max(Ttime) as endTtime,company,project,area,channel,round(sum(consume),2) as consume,round(sum(add_fan),2) as add_fan,round((sum(consume)/sum(add_fan)),2) as cost,channel,GROUP_CONCAT(pitcher) as pitcher')
                    ->group('company,channel,project,area')
                    ->order(array('id' => 'DESC'))
                    ->select();
                // return $list;
                // 查询报表信息
                $consume = $add_fan = $cost = 0;
                $total = count($list);
                if ($total > 1) {
                    foreach ($list as $value) {
                        $c = $value['consume'];
                        $a_f = $value['add_fan'];
                        $consume += $c;
                        $add_fan += $a_f;
                    }
                }
                $consume = round($consume, 2);
                $add_fan = round($add_fan, 2);
                if ($add_fan != 0) {
                    $cost = round(($consume / $add_fan), 2);;
                }
                $totalRow = [
                    'consume' => $consume,
                    'add_fan' => $add_fan,
                    'cost' => $cost
                ];
                $result = array("code" => 0, 'count' => $total, "data" => $list, 'totalRow' => $totalRow);
                return json($result);
            } else {
                $count = Db::name('fb_data')->order(array('id' => 'DESC'))->count();
                $_list = Db::name('fb_data')->order(array('id' => 'DESC'))->page($page, $limit)->select();
                $consume = $add_fan = $cost = 0;
                if ($count > 1) {
                    foreach ($_list as $value) {
                        $c = $value['consume'];
                        $a_f = $value['add_fan'];
                        $consume += $c;
                        $add_fan += $a_f;
                    }
                }
                $consume = round($consume, 2);
                $add_fan = round($add_fan, 2);
                if ($add_fan != 0) {
                    $cost = round(($consume / $add_fan), 2);;
                }
                $totalRow = [
                    'consume' => $consume,
                    'add_fan' => $add_fan,
                    'cost' => $cost
                ];
                $result = array("code" => 0, 'count' => $count, "data" => $_list,
                'totalRow' => $totalRow);
                return json($result);
            }
        }

        return $this->fetch();
    }
}