File: /www/wwwroot//crm.jmfdbn.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();
}
}