Commit 2a44d1e9a32acce30970ae83a1194d4c618abbbc

Authored by teemitop
1 parent 946741db

首页基本数据展示

@@ -57,13 +57,54 @@ class Index extends Common @@ -57,13 +57,54 @@ class Index extends Common
57 } 57 }
58 return $date; 58 return $date;
59 } 59 }
60 - public function main(){  
61 60
62 - if(Request::isAjax()) { 61 + //构建地图分布
  62 + private function address_map(){
  63 + $arr = array(
  64 + array("name"=>"北京","value"=>0),
  65 + array("name"=>"天津","value"=>0),
  66 + array("name"=>"上海","value"=>0),
  67 + array("name"=>"重庆","value"=>0),
  68 + array("name"=>"河北","value"=>0),
  69 + array("name"=>"河南","value"=>0),
  70 + array("name"=>"云南","value"=>0),
  71 + array("name"=>"辽宁","value"=>0),
  72 + array("name"=>"黑龙江","value"=>0),
  73 + array("name"=>"湖南","value"=>0),
  74 + array("name"=>"安徽","value"=>0),
  75 + array("name"=>"山东","value"=>0),
  76 + array("name"=>"新疆","value"=>0),
  77 + array("name"=>"江苏","value"=>0),
  78 + array("name"=>"浙江","value"=>0),
  79 + array("name"=>"江西","value"=>0),
  80 + array("name"=>"湖北","value"=>0),
  81 + array("name"=>"广西","value"=>0),
  82 + array("name"=>"甘肃","value"=>0),
  83 + array("name"=>"山西","value"=>0),
  84 + array("name"=>"内蒙古","value"=>0),
  85 + array("name"=>"陕西","value"=>0),
  86 + array("name"=>"吉林","value"=>0),
  87 + array("name"=>"福建","value"=>0),
  88 + array("name"=>"贵州","value"=>0),
  89 + array("name"=>"广东","value"=>0),
  90 + array("name"=>"青海","value"=>0),
  91 + array("name"=>"西藏","value"=>0),
  92 + array("name"=>"四川","value"=>0),
  93 + array("name"=>"宁夏","value"=>0),
  94 + array("name"=>"海南","value"=>0),
  95 + array("name"=>"台湾","value"=>0),
  96 + array("name"=>"香港","value"=>0),
  97 + array("name"=>"澳门","value"=>0)
  98 + );
  99 + return $arr;
  100 + }
  101 + //主页
  102 + public function main() {
63 103
  104 + if(Request::isAjax()) {
64 $arr = cache('time_total'); 105 $arr = cache('time_total');
65 106
66 - if(!$arr){ 107 + if($arr){
67 $arr = array(); 108 $arr = array();
68 $time = $this->GetDate(); 109 $time = $this->GetDate();
69 foreach ($time as $key => $value) { 110 foreach ($time as $key => $value) {
@@ -107,6 +148,65 @@ class Index extends Common @@ -107,6 +148,65 @@ class Index extends Common
107 $arr['unline_sum'] = array_sum($arr['unline']); //最近7天内部订单 148 $arr['unline_sum'] = array_sum($arr['unline']); //最近7天内部订单
108 $arr['cancel_sum'] = array_sum($arr['cancel']); //最近7天取消的 149 $arr['cancel_sum'] = array_sum($arr['cancel']); //最近7天取消的
109 $arr['refuse_sum'] = array_sum($arr['refuse']); //最近7天拒单的 150 $arr['refuse_sum'] = array_sum($arr['refuse']); //最近7天拒单的
  151 +
  152 + //获取全国商家分布图(合作与推广的商家)
  153 + $seller_total = Db::query("SELECT
  154 + province as `name`,
  155 + count( province ) AS `value`
  156 + FROM
  157 + `xt-member-two-LINE`.xt_dc_dz_address AS a
  158 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS r ON a.sid = r.sid
  159 + WHERE
  160 + province != ''
  161 + AND r.type_id IN ( 1, 2 )
  162 + GROUP BY
  163 + province ");
  164 + $arr['seller_total'] = $this->address_map();
  165 + foreach ($seller_total as $key => $value) {
  166 + foreach ($arr['seller_total'] as $k => $v) {
  167 + if(strstr($value['name'],$v['name']) !==false){
  168 + $arr['seller_total'][$k]['value'] = $value['value'];
  169 + }
  170 + }
  171 + }
  172 + array_multisort(array_column($arr['seller_total'],'value'),SORT_DESC,$arr['seller_total']); //按照商家数量排序
  173 +
  174 + //获取首页基础数据
  175 + $user_total = Db::query("SELECT
  176 + count(*) AS total
  177 + FROM
  178 + `xt-member-two-LINE`.xt_dc_dz_wechat
  179 + WHERE
  180 + openid IS NOT NULL
  181 + AND openid != ''");
  182 + $res_total = Db::query("SELECT
  183 + count(*) AS total
  184 + FROM
  185 + `xt-member-two-LINE`.xt_dc_reserve AS r
  186 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS rel ON r.sid = rel.sid
  187 + WHERE
  188 + rel.type_id =1");
  189 + $price_total = Db::query(" SELECT
  190 + SUM(f.price) as total
  191 + FROM
  192 + `xt-member-two-LINE`.xt_dc_sms_flowing AS f
  193 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON f.sellerid = s.id
  194 + WHERE
  195 + f.paystatus = 1 and f.channel is null");
  196 + $seller_dv_total = Db::query(" SELECT
  197 + count(
  198 + DISTINCT ( d.sid )) AS total
  199 + FROM
  200 + `xt-member-two-LINE`.xt_dc_dz_seller_app_dv AS d
  201 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS r ON d.sid = r.sid
  202 + WHERE
  203 + r.type_id = 1");
  204 +
  205 + $arr['user_total'] = $user_total ? $user_total[0]['total'] : 0;
  206 + $arr['res_total'] = $res_total ? $res_total[0]['total'] : 0;
  207 + $arr['sms_price_total'] = $price_total ? $price_total[0]['total'] : '0.00';
  208 + $arr['seller_dv_total'] = $seller_dv_total ? $seller_dv_total[0]['total'] : 0;
  209 +
110 cache('time_total', $arr, 3600); //将数据集加入缓存 210 cache('time_total', $arr, 3600); //将数据集加入缓存
111 } 211 }
112 212
@@ -114,6 +214,7 @@ class Index extends Common @@ -114,6 +214,7 @@ class Index extends Common
114 } 214 }
115 215
116 $version = Db::query('SELECT VERSION() AS ver'); 216 $version = Db::query('SELECT VERSION() AS ver');
  217 +
117 $config = [ 218 $config = [
118 'url' => $_SERVER['HTTP_HOST'], 219 'url' => $_SERVER['HTTP_HOST'],
119 'document_root' => $_SERVER['DOCUMENT_ROOT'], 220 'document_root' => $_SERVER['DOCUMENT_ROOT'],
@@ -129,6 +230,7 @@ class Index extends Common @@ -129,6 +230,7 @@ class Index extends Common
129 $this->assign('config', $config); 230 $this->assign('config', $config);
130 return $this->fetch(); 231 return $this->fetch();
131 } 232 }
  233 +
132 public function welcome(){ 234 public function welcome(){
133 $config = "Welcome"; 235 $config = "Welcome";
134 $this->assign('config', $config); 236 $this->assign('config', $config);
1 {include file="common/head"/} 1 {include file="common/head"/}
2 -<div class="admin-main layui-anim layui-anim-upbit">  
3 - <div class="table-responsive">  
4 - <table class="layui-table" lay-even lay-skin="line">  
5 - <colgroup>  
6 - <col width="40%">  
7 - <col>  
8 - </colgroup>  
9 - <fieldset class="layui-elem-field layui-field-title">  
10 - <legend>预订数据概览</legend>  
11 - </fieldset>  
12 - <!--<div class="layui-col-sm6 layui-col-md3">  
13 - <div class="layui-card">  
14 - <div class="layui-card-header">  
15 - 访问量  
16 - <span class="layui-badge layui-bg-blue layuiadmin-badge">周</span>  
17 - </div>  
18 - <div class="layui-card-body layuiadmin-card-list">  
19 - <p class="layuiadmin-big-font">9,999,666</p>  
20 - <p>  
21 - 总计访问量  
22 - <span class="layuiadmin-span-color">88万 <i class="layui-inline layui-icon layui-icon-flag"></i></span>  
23 - </p>  
24 - </div>  
25 - </div>  
26 - </div>--> 2 +<link rel="stylesheet" href="https://www.layui.com/admin/std/dist/layuiadmin/style/admin.css" media="all">
  3 +<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
  4 +<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script>
  5 +<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-stat/dist/ecStat.min.js"></script>
  6 +<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/dataTool.min.js"></script>
  7 +<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/china.js"></script>
  8 +<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/world.js"></script>
  9 +<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=1iGjZaNqCgMp0vtQ8xB2ilbAcX9zTugj&__ec_v__=20190126"></script>
  10 +<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/bmap.min.js"></script>
  11 +<div class="layui-fluid">
  12 + <div class="layui-row layui-col-space15">
  13 +
  14 + <div class="layui-col-sm6 layui-col-md3">
  15 + <div class="layui-card">
  16 + <div class="layui-card-header">
  17 + 用户量
  18 + <span class="layui-badge layui-bg-blue layuiadmin-badge">至今</span>
  19 + </div>
  20 + <div class="layui-card-body layuiadmin-card-list">
  21 + <p class="layuiadmin-big-font" id="user_total"></p>
  22 + </div>
  23 + </div>
  24 + </div>
  25 + <div class="layui-col-sm6 layui-col-md3">
  26 + <div class="layui-card">
  27 + <div class="layui-card-header">
  28 + 订单量
  29 + <span class="layui-badge layui-bg-cyan layuiadmin-badge">至今</span>
  30 + </div>
  31 + <div class="layui-card-body layuiadmin-card-list">
  32 + <p class="layuiadmin-big-font" id="res_total"></p>
  33 + </div>
  34 + </div>
  35 + </div>
  36 + <div class="layui-col-sm6 layui-col-md3">
  37 + <div class="layui-card">
  38 + <div class="layui-card-header">
  39 + 短信收入
  40 + <span class="layui-badge layui-bg-green layuiadmin-badge">至今</span>
  41 + </div>
  42 + <div class="layui-card-body layuiadmin-card-list">
  43 + <p class="layuiadmin-big-font" id="sms_price_total"></p>
  44 + </div>
  45 + </div>
  46 + </div>
  47 + <div class="layui-col-sm6 layui-col-md3">
  48 + <div class="layui-card">
  49 + <div class="layui-card-header">
  50 + 商家使用过设备
  51 + <span class="layui-badge layui-bg-orange layuiadmin-badge">至今</span>
  52 + </div>
  53 + <div class="layui-card-body layuiadmin-card-list">
  54 + <p class="layuiadmin-big-font" id="seller_dv_total"></p>
  55 + </div>
  56 + </div>
  57 + </div>
  58 + </div>
  59 + </div>
27 60
28 - <div id="container" style="width: 60%;height:400px;float:left;"></div>  
29 - <div id="container1" style="width: 500px;height:400px;margin-left:65%"></div> 61 +<div class="layui-col-sm12">
  62 + <div class="layui-card">
  63 + <div class="layui-card-header">商家全国分布(合作与推广的商家,且在商家管理中进行地理位置转换的)</div>
  64 + <div class="layui-card-body">
  65 + <div class="layui-row layui-col-space15">
  66 + <div class="layui-col-sm8">
  67 + <table class="layui-table layuiadmin-page-table" lay-skin="line">
  68 + <thead>
  69 + <tr>
  70 + <th>排名</th>
  71 + <th>地区</th>
  72 + <th>人数</th>
  73 + </tr>
  74 + </thead>
  75 + <tbody id="seller_total">
  76 +
  77 + </tbody>
  78 + </table>
  79 + </div>
  80 + <div class="layui-col-sm4">
30 81
31 - <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>  
32 - <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script>  
33 - <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-stat/dist/ecStat.min.js"></script>  
34 - <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/dataTool.min.js"></script>  
35 - <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/china.js"></script>  
36 - <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/world.js"></script>  
37 - <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=1iGjZaNqCgMp0vtQ8xB2ilbAcX9zTugj&__ec_v__=20190126"></script>  
38 - <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/bmap.min.js"></script>  
39 - <fieldset class="layui-elem-field layui-field-title">  
40 - <legend>系统信息</legend>  
41 - </fieldset>  
42 - <thead>  
43 - </thead>  
44 - <tbody>  
45 - <tr>  
46 - <td>网站域名</td>  
47 - <td>{$config.url}</td>  
48 - </tr>  
49 - <tr>  
50 - <td>网站目录</td>  
51 - <td>{$config.document_root}</td>  
52 - </tr>  
53 - <tr>  
54 - <td>服务器操作系统</td>  
55 - <td>{$config.server_os}</td>  
56 - </tr>  
57 - <tr>  
58 - <td>服务器端口</td>  
59 - <td>{$config.server_port}</td>  
60 - </tr>  
61 - <tr>  
62 - <td>服务器IP</td>  
63 - <td>{$config.server_ip}</td>  
64 - </tr>  
65 - <tr>  
66 - <td>MySQL数据库版本</td>  
67 - <td>{$config.mysql_version}</td>  
68 - </tr>  
69 - <tr>  
70 - <td>运行PHP版本</td>  
71 - <td>{$config.php_version}</td>  
72 - </tr> 82 + <div class="layui-carousel layadmin-carousel layadmin-dataview" data-anim="fade" lay-filter="LAY-index-pagethree" lay-anim="fade" style="width: 100%; height: 280px;" id="seller_main">
  83 + </div>
73 84
74 - <tr>  
75 - <td>最大上传限制</td>  
76 - <td>{$config.max_upload_size}</td>  
77 - </tr>  
78 - </tbody>  
79 - </table> 85 + </div>
  86 + </div>
  87 + </div>
  88 + </div>
  89 +</div>
  90 +<br>
  91 +<div class="layui-col-sm12">
  92 + <div class="layui-card">
  93 + <div class="layui-card-header">数据概览</div>
  94 + <div class="layui-col-sm8">
  95 + <div class="layui-carousel layadmin-carousel layadmin-dataview" id="container"></div>
  96 + </div>
  97 + <div class="layui-col-sm4">
  98 + <div class="layui-carousel layadmin-carousel layadmin-dataview" id="container1"></div>
  99 + </div>
80 </div> 100 </div>
81 </div> 101 </div>
  102 +<div class="layui-col-sm12">
  103 + <div class="layui-card-body layui-text">
  104 + <table class="layui-table">
  105 + <colgroup>
  106 + <col width="100">
  107 + <col>
  108 + </colgroup>
  109 + <tbody>
  110 + <tr>
  111 + <td width="100">服务器操作系统</td>
  112 + <td>{$config.server_os}</td>
  113 + </tr>
  114 + <tr>
  115 + <td>PHP版本</td>
  116 + <td>
  117 + {$config.php_version}
  118 + </td>
  119 + </tr>
  120 + <tr>
  121 + <td>基于框架</td>
  122 + <td>
  123 + ThinkPHP5.1 + LayUi
  124 + </td>
  125 + </tr>
  126 + <tr>
  127 + <td>MySQL版本</td>
  128 + <td>{$config.mysql_version}</td>
  129 + </tr>
  130 + <tr>
  131 + <td width="100">最大上传限制</td>
  132 + <td style="padding-bottom: 0;">
  133 + {$config.max_upload_size}
  134 + </td>
  135 + </tr>
  136 + <tr>
  137 + <td width="120" >首页数据缓存说明</td>
  138 + <td style="padding-bottom: 0;color:red;">
  139 + 首页数据缓存时间均为 1小时。
  140 + </td>
  141 + </tr>
  142 + </tbody>
  143 + </table>
  144 + </div>
  145 +</div>
82 {include file="common/foot"/} 146 {include file="common/foot"/}
83 <script type="text/javascript"> 147 <script type="text/javascript">
  148 +function randomData() {
  149 + return Math.round(Math.random()*500);
  150 +}
  151 +
84 layui.use(['table', 'layer'], function(){ 152 layui.use(['table', 'layer'], function(){
  153 +
85 var table = layui.table; 154 var table = layui.table;
86 var layer = layui.layer; 155 var layer = layui.layer;
87 var $ = layui.jquery; 156 var $ = layui.jquery;
@@ -96,11 +165,73 @@ layui.use(['table', 'layer'], function(){ @@ -96,11 +165,73 @@ layui.use(['table', 'layer'], function(){
96 datType: "json", 165 datType: "json",
97 success: function(data){ 166 success: function(data){
98 layer.close(loading); 167 layer.close(loading);
99 - var dom = document.getElementById("container");  
100 - var dom1 = document.getElementById("container1");  
101 - var myChart = echarts.init(dom,'light');  
102 - var myChart1 = echarts.init(dom1,'light'); 168 + //赋值:
  169 + $('#user_total').html(data.data.user_total+' 位');
  170 + $('#res_total').html(data.data.res_total+' 单');
  171 + $('#sms_price_total').html(data.data.sms_price_total+' 元');
  172 + $('#seller_dv_total').html(data.data.seller_dv_total+' 家');
  173 +
  174 + var myChart2 = echarts.init(document.getElementById('seller_main'));
  175 + var myChart = echarts.init(document.getElementById("container"),'light');
  176 + var myChart1 = echarts.init(document.getElementById("container1"),'light');
103 var app = {}; 177 var app = {};
  178 +
  179 + var html='';
  180 + var index = 1;
  181 + //表格替换
  182 + $.each(data.data.seller_total.slice(0, 7),function(index,item){
  183 + html+='<tr><td>'+(index+1)+'</td><td>'+item.name+'</td><td>'+item.value+'</td></tr>';
  184 + })
  185 + $('#seller_total').html(html);
  186 + //商家分布数据
  187 + var mydata = data.data.seller_total;
  188 +
  189 + var optionMap = {
  190 + backgroundColor: '#FFFFFF',
  191 + title: {
  192 + text: '一键订商家全国分布图',
  193 + subtext: '',
  194 + x:'center'
  195 + },
  196 + toolbox: {
  197 + feature: {
  198 + saveAsImage: {}
  199 + }
  200 + },
  201 + tooltip : {
  202 + trigger: 'item'
  203 + },
  204 +
  205 + //左侧小导航图标
  206 + visualMap: {
  207 + show : true,
  208 + x: 'left',
  209 + y: 'center',
  210 + splitList: [
  211 + {start: 800, end:10000},{start: 400, end: 800},
  212 + {start: 300, end: 400},{start: 200, end: 300},
  213 + {start: 100, end: 200},{start: 0, end: 100},
  214 + ],
  215 + color: ['#f70202', '#9feaa5', '#85daef','#74e2ca', '#e6ac53', '#bef8f8']
  216 + },
  217 +
  218 + //配置属性
  219 + series: [{
  220 + name: '数据',
  221 + type: 'map',
  222 + mapType: 'china',
  223 + roam: true,
  224 + label: {
  225 + normal: {
  226 + show: true //省份名称
  227 + },
  228 + emphasis: {
  229 + show: false
  230 + }
  231 + },
  232 + data:mydata //数据
  233 + }]
  234 + };
104 option = null; 235 option = null;
105 option = { 236 option = {
106 title: { 237 title: {
@@ -240,6 +371,9 @@ layui.use(['table', 'layer'], function(){ @@ -240,6 +371,9 @@ layui.use(['table', 'layer'], function(){
240 } 371 }
241 ] 372 ]
242 }; 373 };
  374 + if (optionMap && typeof optionMap === "object") {
  375 + myChart2.setOption(optionMap, true);
  376 + }
243 if (option1 && typeof option1 === "object") { 377 if (option1 && typeof option1 === "object") {
244 myChart1.setOption(option1, true); 378 myChart1.setOption(option1, true);
245 } 379 }