Commit 21bdd5ea4f9b742036618d4f5db08e983ab5330e

Authored by teemitop
1 parent a737d6d1

数据统计

@@ -446,7 +446,187 @@ class Card extends Common @@ -446,7 +446,187 @@ class Card extends Common
446 WHERE s.owner = 1"); 446 WHERE s.owner = 1");
447 return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1]; 447 return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
448 } 448 }
449 - $this->assign ( 'title','商家卡券'); 449 + $this->assign ( 'title','平台卡券');
  450 + return $this->fetch();
  451 + }
  452 +
  453 + /**
  454 + * 商家卡券-数据统计-统计列表
  455 + */
  456 + public function sellercarddatalist(){
  457 + if(Request::isAjax()){
  458 + $data = Request::except('file');
  459 +
  460 + $where = '';
  461 + $channel = $data['channel'] ? $data['channel'] : 1;
  462 +
  463 + $where .= ($channel && $channel==4) ? ' AND rel.type_id in (1,2,3)' : " AND rel.type_id in ($channel)";
  464 + $where .= $data['key'] ? ' AND s.sellername like "%'.$data['key'].'%"' : "";
  465 +
  466 + //日期
  467 + $time = $data['time'] ? explode(' - ', $data['time']) : '';
  468 + $start = $time ? strtotime(date($time[0],time())) : 0;
  469 + $end = $time ? strtotime(date($time[1],time())) : 0;
  470 +
  471 + $where .= $data['time'] ? ' AND i.contributor_time BETWEEN '.$start.' AND '.$end : '';
  472 +
  473 + $offset = ($data["page"] - 1) * $data["limit"];
  474 + $limit = " LIMIT $offset,".$data['limit'];
  475 +
  476 + //卡券信息
  477 + $rs = Db::query("SELECT
  478 + i.*,
  479 + s.sellername
  480 + FROM
  481 + `xt-member-two-LINE`.xt_dc_dz_card_info AS i
  482 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON i.sid = s.id
  483 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel as rel ON rel.sid = s.id
  484 + WHERE
  485 + i.`owner` = 2
  486 + AND i.STATUS IN (1,3)
  487 + ".$where.$limit);
  488 + //格式化数据
  489 + foreach ($rs as $key => $value) {
  490 + $rs[$key]['contributor_time'] = date("Y年m月d日",$value['contributor_time']);
  491 + switch ($value['status']) {
  492 + case '1':
  493 + $rs[$key]['status'] = '已投放';
  494 + break;
  495 + case '2':
  496 + $rs[$key]['status'] = '未投放';
  497 + break;
  498 + case '3':
  499 + $rs[$key]['status'] = '停止投放';
  500 + break;
  501 + default:
  502 + # code...
  503 + break;
  504 + }
  505 + //领取人数
  506 + $receive_people_number = Db::query("SELECT
  507 + count(
  508 + DISTINCT ( openid )) AS total
  509 + FROM
  510 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel
  511 + WHERE
  512 + cid = ".$value['id']);
  513 + $rs[$key]['receive_people_number'] = $receive_people_number[0]['total'];
  514 + //领取次数
  515 + $receive_frequency = Db::query("SELECT
  516 + count(1) as total
  517 + FROM
  518 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel
  519 + WHERE
  520 + cid = ".$value['id']);
  521 + $rs[$key]['receive_frequency'] = $receive_frequency[0]['total'];
  522 + //核销人数
  523 + $write_off_people_number = Db::query("SELECT
  524 + count(
  525 + DISTINCT ( openid )) AS total
  526 + FROM
  527 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel
  528 + WHERE
  529 + status = 1 and cid = ".$value['id']);
  530 + $rs[$key]['write_off_people_number'] = $write_off_people_number[0]['total'];
  531 + //核销次数
  532 + $write_off_people_frequency = Db::query("SELECT
  533 + count(1) as total
  534 + FROM
  535 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel
  536 + WHERE
  537 + status = 1 and cid = ".$value['id']);
  538 + $rs[$key]['write_off_people_frequency'] = $write_off_people_frequency[0]['total'];
  539 + //应收金额: 需要先查询出该卡券都在哪些账单中核销,并计算该卡券所牵扯账单的总的应收金额
  540 + $amount_receivable = Db::query("SELECT
  541 + SUM(should_price) as should_price,
  542 + SUM(actual_price) as actual_price
  543 + FROM
  544 + `xt-member-two-LINE`.xt_dc_dz_seller_flowing_log
  545 + WHERE
  546 + rid IN (
  547 + SELECT
  548 + rid
  549 + FROM
  550 + `xt-member-two-LINE`.xt_dc_dz_card_data_rel
  551 + WHERE
  552 + STATUS = 1
  553 + AND cid = ".$value['id'].")");
  554 + $rs[$key]['amount_receivable'] = $amount_receivable[0]['should_price'];
  555 + $rs[$key]['paid_in_amount'] = $amount_receivable[0]['actual_price'];
  556 + }
  557 +
  558 + //获取总条数
  559 + $total = Db::query("SELECT
  560 + i.*,
  561 + s.sellername
  562 + FROM
  563 + `xt-member-two-LINE`.xt_dc_dz_card_info AS i
  564 + LEFT JOIN `xt-member-two-LINE`.xt_seller AS s ON i.sid = s.id
  565 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel as rel ON rel.sid = s.id
  566 + WHERE
  567 + i.`owner` = 2
  568 + AND i.STATUS IN (1,3)
  569 + ".$where."");
  570 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
  571 + }
  572 + $this->assign ( 'title','商家卡券信息统计');
  573 + return $this->fetch();
  574 + }
  575 +
  576 + /**
  577 + * 商家卡券-数据统计-统计列表
  578 + */
  579 + public function sellercarddatalog(){
  580 + if(Request::isAjax()){
  581 + $data = Request::except('file');
  582 +
  583 + $where = '';
  584 + $channel = $data['channel'] ? $data['channel'] : 1;
  585 +
  586 + $where .= ($channel && $channel==4) ? ' re.type_id in (1,2,3)' : " re.type_id in ($channel)";
  587 + $where .= $data['key'] ? ' and s.sellername like "%'.$data['key'].'%"' : "";
  588 +
  589 + $offset = ($data["page"] - 1) * $data["limit"];
  590 + $limit = " LIMIT $offset,".$data['limit'];
  591 +
  592 + //卡券信息
  593 + $rs = Db::query("SELECT
  594 + s.*
  595 + FROM
  596 + `xt-member-two-LINE`.xt_dc_dz_card_info AS s
  597 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.sid
  598 + WHERE s.owner = 2 AND
  599 + ".$where." order by s.sid".$limit);
  600 + //格式化数据
  601 + foreach ($rs as $key => $value) {
  602 + $rs[$key]['create_time'] = date("Y年m月d日",$value['create_time']);
  603 + switch ($value['status']) {
  604 + case '1':
  605 + $rs[$key]['status'] = '已投放';
  606 + break;
  607 + case '2':
  608 + $rs[$key]['status'] = '未投放';
  609 + break;
  610 + case '3':
  611 + $rs[$key]['status'] = '停止投放';
  612 + break;
  613 + default:
  614 + # code...
  615 + break;
  616 + }
  617 + }
  618 +
  619 + //获取总条数
  620 + $total = Db::query("SELECT
  621 + s.id
  622 + FROM
  623 + `xt-member-two-LINE`.xt_dc_dz_card_info AS s
  624 + LEFT JOIN `xt-member-two-LINE`.xt_dc_dz_seller_type_rel AS re ON re.sid = s.sid
  625 + WHERE s.owner = 2 AND
  626 + ".$where."");
  627 + return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$rs,'count'=>count($total),'rel'=>1];
  628 + }
  629 + $this->assign ( 'title','商家卡券信息统计');
450 return $this->fetch(); 630 return $this->fetch();
451 } 631 }
452 } 632 }
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 <a href="{:url('card/cardwriteoff')}" class="layui-btn layui-btn-lg"> 13 <a href="{:url('card/cardwriteoff')}" class="layui-btn layui-btn-lg">
14 <i class="fa fa-file-image-o"></i> 卡券核销 14 <i class="fa fa-file-image-o"></i> 卡券核销
15 </a> 15 </a>
16 - <a href="{:url('card/carddata')}" class="layui-btn layui-btn-lg"> 16 + <a href="{:url('card/sellercarddatalist')}" class="layui-btn layui-btn-lg">
17 <i class="fa fa-file-image-o"></i> 数据统计 17 <i class="fa fa-file-image-o"></i> 数据统计
18 </a> 18 </a>
19 </blockquote> 19 </blockquote>
  1 +{include file="common/head"/}
  2 +<div class="admin-main layui-anim layui-anim-upbit">
  3 + <fieldset class="layui-elem-field layui-field-title">
  4 + <legend>{:$title}</legend>
  5 + </fieldset>
  6 + <blockquote class="layui-elem-quote">
  7 + <a href="{:url('card/sellercard')}" class="layui-btn">
  8 + <i class="fa fa-file-image-o"></i> 优惠券
  9 + </a>
  10 + <a href="{:url('card/cardput')}" class="layui-btn layui-btn-lg">
  11 + <i class="fa fa-file-image-o"></i> 卡券投放
  12 + </a>
  13 + <a href="{:url('card/cardwriteoff')}" class="layui-btn layui-btn-lg">
  14 + <i class="fa fa-file-image-o"></i> 卡券核销
  15 + </a>
  16 + <a href="{:url('card/sellercarddatalist')}" class="layui-btn layui-btn-lg layui-btn-danger">
  17 + <i class="fa fa-file-image-o"></i> 数据统计
  18 + </a>
  19 + </blockquote>
  20 + <blockquote class="layui-elem-quote">
  21 + <a href="{:url('card/sellercarddatalist')}" class="layui-btn layui-btn-sm layui-btn-danger">
  22 + <i class="fa fa-file-image-o"></i> 卡券数据
  23 + </a>
  24 + <a href="{:url('card/sellercarddatalog')}" class="layui-btn layui-btn-sm">
  25 + <i class="fa fa-file-image-o"></i> 使用记录
  26 + </a>
  27 + </blockquote>
  28 +
  29 + <div class="demoTable">
  30 + 商家名称:<div class="layui-inline">
  31 + <input class="layui-input" name="key" id="key" placeholder="{:lang('pleaseEnter')}店铺名称" autocomplete="off">
  32 + </div>
  33 + 商家来源:
  34 + <div class="layui-input-inline layui-form">
  35 + <div class="layui-input-8">
  36 + <select name="class" id="channel" lay-filter="myselect">
  37 + <option value="4">全部</option>
  38 + <option value="1" selected>合作</option>
  39 + <option value="2">推广</option>
  40 + <option value="3">测试</option>
  41 + </select>
  42 + </div>
  43 + </div>
  44 + <div class="layui-inline">
  45 + <label class="layui-form-label">日期范围</label>
  46 + <div class="layui-input-inline">
  47 + <input type="text" class="layui-input" id="time" placeholder="默认查询所有">
  48 + </div>
  49 + </div>
  50 + <button class="layui-btn" id="search" data-type="reload">查询统计</button>
  51 + </div>
  52 + <table class="layui-table" id="list" lay-filter="list"></table>
  53 +</div>
  54 +{include file="common/foot"/}
  55 +
  56 +<script>
  57 + layui.use(['table','form','laydate'], function() {
  58 + var table = layui.table,laydate = layui.laydate,form = layui.form,$ = layui.jquery,layer = layui.layer;
  59 + var tableIn = table.render({
  60 + elem: '#list',
  61 + url: '{:url("sellercarddatalist")}',
  62 + method: 'post',
  63 + title: '卡券列表',
  64 + cols: [[
  65 + {field: 'id', title: '商家卡券编号',hide:true, fixed: true},
  66 + {field: 'sid', title: '商家编号', fixed: true},
  67 + {field: 'sellername', title: '商家名称'},
  68 + {field: 'card_title', title: '卡券名称'},
  69 + {field: 'price', align: 'center',title: '金额'},
  70 + {field: 'contributor_time', align: 'center', title: '投放日期'},
  71 + {field: 'status', align: 'center',title: '状态'},
  72 + {field: 'receive_people_number', align: 'center', title: '领取人数'},
  73 + {field: 'receive_frequency', align: 'center', title: '领取次数'},
  74 + {field: 'write_off_people_number', align: 'center', title: '核销人数'},
  75 + {field: 'write_off_people_frequency', align: 'center', title: '核销次数'},
  76 + {field: 'amount_receivable', align: 'center', title: '应收金额'},
  77 + {field: 'paid_in_amount', align: 'center', title: '实收金额'}
  78 + ]]
  79 + ,id: 'cardReload'
  80 + ,page: true
  81 + });
  82 +
  83 + //搜索
  84 + $('#search').on('click', function() {
  85 + //关键字
  86 + var key = $('#key').val();
  87 + var channel = $('#channel').val();
  88 + //查询日期
  89 + var time = $('#time').val();
  90 + //传参
  91 + tableIn.reload({ page: {page: 1},where: {key: key,channel: channel,time:time}});
  92 + });
  93 +
  94 + var $ = layui.$, active = {
  95 + reload: function(){
  96 + var channel = $('#channel');
  97 + var key = $('#key');
  98 + //执行重载
  99 + table.reload('cardReload', {
  100 + page: {
  101 + curr: 1 //重新从第 1 页开始
  102 + }
  103 + ,where: {
  104 + key: {
  105 + id: key.val(),
  106 + channel: channel.val()
  107 + }
  108 + }
  109 + });
  110 + }
  111 + };
  112 +
  113 + //日期插件
  114 + laydate.render({
  115 + elem: '#time'
  116 + ,range: true
  117 + })
  118 + })
  119 +</script>
  1 +{include file="common/head"/}
  2 +<div class="admin-main layui-anim layui-anim-upbit">
  3 + <fieldset class="layui-elem-field layui-field-title">
  4 + <legend>{:$title}</legend>
  5 + </fieldset>
  6 + <blockquote class="layui-elem-quote">
  7 + <a href="{:url('card/sellercard')}" class="layui-btn">
  8 + <i class="fa fa-file-image-o"></i> 优惠券
  9 + </a>
  10 + <a href="{:url('card/cardput')}" class="layui-btn layui-btn-lg">
  11 + <i class="fa fa-file-image-o"></i> 卡券投放
  12 + </a>
  13 + <a href="{:url('card/cardwriteoff')}" class="layui-btn layui-btn-lg">
  14 + <i class="fa fa-file-image-o"></i> 卡券核销
  15 + </a>
  16 + <a href="{:url('card/sellercarddatalist')}" class="layui-btn layui-btn-lg layui-btn-danger">
  17 + <i class="fa fa-file-image-o"></i> 数据统计
  18 + </a>
  19 + </blockquote>
  20 + <blockquote class="layui-elem-quote">
  21 + <a href="{:url('card/sellercarddatalist')}" class="layui-btn layui-btn-sm">
  22 + <i class="fa fa-file-image-o"></i> 卡券数据
  23 + </a>
  24 + <a href="{:url('card/sellercarddatalog')}" class="layui-btn layui-btn-sm layui-btn-danger">
  25 + <i class="fa fa-file-image-o"></i> 使用记录
  26 + </a>
  27 + </blockquote>
  28 +
  29 + <div class="demoTable">
  30 + 商家名称:<div class="layui-inline">
  31 + <input class="layui-input" name="key" id="key" placeholder="{:lang('pleaseEnter')}店铺名称" autocomplete="off">
  32 + </div>
  33 + 商家来源:
  34 + <div class="layui-input-inline layui-form">
  35 + <div class="layui-input-8">
  36 + <select name="class" id="channel" lay-filter="myselect">
  37 + <option value="4">全部</option>
  38 + <option value="1" selected>合作</option>
  39 + <option value="2">推广</option>
  40 + <option value="3">测试</option>
  41 + </select>
  42 + </div>
  43 + </div>
  44 + <div class="layui-inline">
  45 + <label class="layui-form-label">日期范围</label>
  46 + <div class="layui-input-inline">
  47 + <input type="text" class="layui-input" id="start" placeholder="yyyy-MM-dd">
  48 + </div>至
  49 + <div class="layui-input-inline">
  50 + <input type="text" class="layui-input" id="end" placeholder="yyyy-MM-dd">
  51 + </div>
  52 + </div>
  53 + <button class="layui-btn" id="search" data-type="reload">查询统计</button>
  54 + </div>
  55 + <table class="layui-table" id="list" lay-filter="list"></table>
  56 +</div>
  57 +{include file="common/foot"/}
  58 +
  59 +<script>
  60 + layui.use(['table','form','laydate'], function() {
  61 + var table = layui.table,laydate = layui.laydate,form = layui.form,$ = layui.jquery,layer = layui.layer;
  62 + var tableIn = table.render({
  63 + elem: '#list',
  64 + url: '{:url("sellercarddatalist")}',
  65 + method: 'post',
  66 + title: '卡券列表',
  67 + toolbar: '#toolbarDemo',
  68 + cols: [[
  69 + {field: 'id', title: '商家卡券编号',hide:true, fixed: true},
  70 + {field: 'sid', title: '商家编号', fixed: true},
  71 + {field: 'sellername', title: '商家名称'},
  72 + {field: 'card_title', title: '卡券名称'},
  73 + {field: 'price', align: 'center',title: '金额'},
  74 + {field: 'create_time', align: 'center', title: '创建日期'},
  75 + {field: 'creator', align: 'center', title: '创建人'},
  76 + {field: 'status', align: 'center',title: '状态'}
  77 + ]]
  78 + ,id: 'cardReload'
  79 + ,page: true
  80 + });
  81 +
  82 + //搜索
  83 + $('#search').on('click', function() {
  84 + //关键字
  85 + var key = $('#key').val();
  86 + var channel = $('#channel').val();
  87 +
  88 + //查询日期
  89 + var start = $('#start').val();
  90 + var date_start = new Date(start);
  91 +
  92 + var end = $('#end').val();
  93 + var date_end = new Date(end);
  94 +
  95 + var time_start = date_start.getTime();
  96 + var time_end = date_end.getTime();
  97 +
  98 + if(time_end < time_start)
  99 + layer.msg('结束日期不能小于开始日期!',{time:1000,icon:2});return;
  100 +
  101 + //传参
  102 + tableIn.reload({ page: {page: 1},where: {key: key,channel: channel,start:start,end:end}});
  103 + });
  104 +
  105 + var $ = layui.$, active = {
  106 + reload: function(){
  107 + var channel = $('#channel');
  108 + var key = $('#key');
  109 + //执行重载
  110 + table.reload('cardReload', {
  111 + page: {
  112 + curr: 1 //重新从第 1 页开始
  113 + }
  114 + ,where: {
  115 + key: {
  116 + id: key.val(),
  117 + channel: channel.val()
  118 + }
  119 + }
  120 + });
  121 + }
  122 + };
  123 +
  124 + //开启公历节日
  125 + laydate.render({
  126 + elem: '#start'
  127 + ,calendar: true
  128 + });
  129 + laydate.render({
  130 + elem: '#end'
  131 + ,calendar: true
  132 + });
  133 + })
  134 +</script>