新增退款统计

master
chenzhi 4 years ago
parent f349603e7c
commit 06202851c2

@ -1512,6 +1512,22 @@ function getMonth() {
return $range;
}
function showMonthRange($start, $end)
{
$end = date('Y-m', strtotime($end)); // 转换为月
$range = [];
$i = 0;
do {
$month = date('Y-m', strtotime($start . ' + ' . $i . ' month'));
//echo $i . ':' . $month . '<br>';
$range[] = $month;
$i++;
} while ($month < $end);
rsort($range);
return $range;
}
function getPayType($type) {
$return = '';

@ -8,52 +8,112 @@ use User\Api\UserApi as UserApi;
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
class RefundController extends ThinkController {
public function lists(){
if(isset($_REQUEST['user_account'])){
public function userCount(){
if(!array_key_exists("count_date",$_REQUEST) && !array_key_exists("user_account",$_REQUEST)){
$this->redirect(ACTION_NAME, array('count_date' => date('Y-m')));
}
$page = I('p', 1);
$row = I('row', 10);
if(isset($_REQUEST['user_account'])){
$map['user_account']=array('like','%'.trim($_REQUEST['user_account']).'%');
unset($_REQUEST['user_account']);
}
if(isset($_REQUEST['time-start'])&&isset($_REQUEST['time-end'])){
$map['pay_time'] =array('BETWEEN',array(strtotime($_REQUEST['time-start']),strtotime($_REQUEST['time-end'])+24*60*60-1));
unset($_REQUEST['time-start']);unset($_REQUEST['time-end']);
if(isset($_REQUEST['count_date'])){
$map['pay_time'] = ["BETWEEN",$this->getMonthTimeRange($_REQUEST['count_date'])];
}
if(isset($_REQUEST['game_name'])){
if($_REQUEST['game_name']=='全部'){
unset($_REQUEST['game_name']);
}else{
$map['game_name']=$_REQUEST['game_name'];
unset($_REQUEST['game_name']);
}
//
$model = SM("spend_refund",'tab_');
$data = $model
->where($map)
->group("month,user_id")
->order("month desc,refund_amount desc");
if(isset($_REQUEST['export'])){
$data = $data->field("CONCAT(' ',FROM_UNIXTIME(`pay_time`,'%Y-%m')) as month,user_id,user_account,sum(refund_amount) refund_amount")->select();
data2csv($data,'退款统计',array(
"month"=>"月份",
"user_account"=>"玩家账号",
"refund_amount"=>"退款金额"
));
}
if(isset($_REQUEST['pay_order_number'])){
$map['pay_order_number']=array('like','%'.trim($_REQUEST['pay_order_number']).'%');
unset($_REQUEST['pay_order_number']);
$data = $data->field("FROM_UNIXTIME(`pay_time`,'%Y-%m') as month,user_id,user_account,sum(refund_amount) refund_amount")->page($page, $row)->select();
foreach ($data as $k => &$v) {
$between = $this->getMonthTimeRange($v['month'],true);
$v['jump_url'] = U("Spend/lists",['timestart'=>$between[0],'timeend'=>$between[1],'user_account'=>$v['user_account'],'is_refund'=>1]);
}
if(isset($_REQUEST['pay_status'])){
$map['tui_status']=$_REQUEST['pay_status'];
unset($_REQUEST['pay_status']);
$allcount = $model->where($map)->getField("sum(refund_amount) refund_amount");
$count_sql = $model->field("FROM_UNIXTIME(`pay_time`,'%Y-%m') as month,user_id")->group("month,user_id")->where($map)->select(false);
$count = SM()->table( '('.$count_sql.') a' )->count();
$page = set_pagination($count, $row);
if ($page) {
$this->assign('_page', $page);
}
if(isset($_REQUEST['pay_way'])){
$map['pay_way']=$_REQUEST['pay_way'];
unset($_REQUEST['pay_way']);
$this->assign("allcount",$allcount);
$this->assign("data",$data);
$this->assign("date_count",showMonthRange('2019-09-01',date('Y-m-d',time())));
$this->display();
}
protected function getMonthTimeRange($date,$isdate = false)
{
$start = strtotime( $date . "-1 00:00:00" );
$mdays = date('t', $start);
if($isdate){
return [$date."-1",$date.'-'.$mdays];
}
$model = array(
'm_name' => 'RefundRecord',
'map' => $map,
'order' =>'id desc',
'title' => '退款记录',
'template_list' =>'lists',
);
$total=null_to_0(M('RefundRecord','tab_')->where(['tui_status'=>1])->sum('tui_amount'));
$ttotal=null_to_0(M('RefundRecord','tab_')->where('pay_time'.total(1))->where(array('tui_status'=>1))->sum('tui_amount'));
$ytotal=null_to_0(M('RefundRecord','tab_')->where('pay_time'.total(5))->where(array('tui_status'=>1))->sum('tui_amount'));
$this->assign('total',$total);
$this->assign('ttotal',$ttotal);
$this->assign('ytotal',$ytotal);
$user = A('User','Event');
$user->user_join_($model,$_GET['p']);
$end = strtotime( $date.'-'.$mdays.' 23:59:59');
return [$start,$end];
}
// public function lists(){
// if(isset($_REQUEST['user_account'])){
// $map['user_account']=array('like','%'.trim($_REQUEST['user_account']).'%');
// unset($_REQUEST['user_account']);
// }
// if(isset($_REQUEST['time-start'])&&isset($_REQUEST['time-end'])){
// $map['pay_time'] =array('BETWEEN',array(strtotime($_REQUEST['time-start']),strtotime($_REQUEST['time-end'])+24*60*60-1));
// unset($_REQUEST['time-start']);unset($_REQUEST['time-end']);
// }
// if(isset($_REQUEST['game_name'])){
// if($_REQUEST['game_name']=='全部'){
// unset($_REQUEST['game_name']);
// }else{
// $map['game_name']=$_REQUEST['game_name'];
// unset($_REQUEST['game_name']);
// }
// }
// if(isset($_REQUEST['pay_order_number'])){
// $map['pay_order_number']=array('like','%'.trim($_REQUEST['pay_order_number']).'%');
// unset($_REQUEST['pay_order_number']);
// }
// if(isset($_REQUEST['pay_status'])){
// $map['tui_status']=$_REQUEST['pay_status'];
// unset($_REQUEST['pay_status']);
// }
// if(isset($_REQUEST['pay_way'])){
// $map['pay_way']=$_REQUEST['pay_way'];
// unset($_REQUEST['pay_way']);
// }
// $model = array(
// 'm_name' => 'RefundRecord',
// 'map' => $map,
// 'order' =>'id desc',
// 'title' => '退款记录',
// 'template_list' =>'lists',
// );
// $total=null_to_0(M('RefundRecord','tab_')->where(['tui_status'=>1])->sum('tui_amount'));
// $ttotal=null_to_0(M('RefundRecord','tab_')->where('pay_time'.total(1))->where(array('tui_status'=>1))->sum('tui_amount'));
// $ytotal=null_to_0(M('RefundRecord','tab_')->where('pay_time'.total(5))->where(array('tui_status'=>1))->sum('tui_amount'));
// $this->assign('total',$total);
// $this->assign('ttotal',$ttotal);
// $this->assign('ytotal',$ytotal);
// $user = A('User','Event');
// $user->user_join_($model,$_GET['p']);
// }
}

@ -0,0 +1,202 @@
<extend name="Public/base"/>
<block name="body">
<link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" />
<script type="text/javascript" src="__JS__/bootstrap.min.js"></script>
<script type="text/javascript" src="__JS__/select2.min.js"></script>
<style>
.select2-container--default .select2-selection--single {
color: #000;
resize: none;
border-width: 1px;
border-style: solid;
border-color: #a7b5bc #ced9df #ced9df #a7b5bc;
box-shadow: 0px 3px 3px #F7F8F9 inset;height:35px;
height:28px;border-radius:3px;font-size:12px;
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
line-height:35px;
line-height:28px;
}
.select2-container--default .select2-selection--single .select2-selection__arrow {
height:26px;
}
.select2-container--default .select2-search--dropdown .select2-search__field {
height:26px;line-height:26px;font-size:12px;
}
.select2-results__option[aria-selected] {font-size:12px;}
.tooltip {
position: relative;
display: inline-block;
color: #056dae;
}
.tooltip .tooltiptext {
visibility: hidden;
width: 250%;
background-color: #fff;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px 0;
position: absolute;
z-index: 1;
bottom: 80%;
left: 0;
margin-left: -70%;
border: #000 solid 1px;
}
.tooltip .tooltiptext::after {
content: "";
position: absolute;
top: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: black transparent transparent transparent;
}
.tooltip:hover .tooltiptext {
color: #000;
visibility: visible;
line-height: 20px;
}
</style>
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">退款统计</h3>
<p class="description_text"></p>
</div>
<div class="cf top_nav_list">
<!-- 高级搜索 -->
<div class="jssearch fl cf search_list">
<!--游戏类型搜索END-->
<div class="input-list input-list-promote search_label_rehab">
<select id="count_date" name="count_date" class="select_gallery" style="width:150px;">
<option value="">请选择月份</option>
<volist name="date_count" id="vo">
<option value="{$vo}" <if condition="$vo eq $_GET['count_date']">selected=selected</if>>{$vo}</option>
</volist>
</select>
</div>
<div class="input-list">
<input style="width: 200px;" type="text" name="user_account" class="search-input" value="{:I('user_account')}" placeholder="请输入玩家账号">&nbsp;
</div>
<div class="input-list">
<a class="sch-btn" href="javascript:;" id="search" url="{:U('userCount','model='.$model['name'].'&row='.I('row'),false)}"
style="width: 100px;border: #3C95C8 solid 1px;">搜索</a>
</div>
</div>
</div>
<!-- 数据列表 -->
<div class="data_list">
<empty name="show_status">
<div class="">
<table>
<!-- 表头 -->
<thead>
<tr>
<th >月份</th>
<th >玩家账号</th>
<th >退款金额</th>
<th >操作</th>
</tr>
</thead>
<!-- 列表 -->
<tbody>
<style>
.data-table thead th, .data-table tbody td{text-align:center}
.data-table tbody td{border-right:1px solid #DDDDDD;}
.d_list .drop-down ul {z-index:999;}
</style>
<if condition = "empty($data)">
<tr>
<td colspan="16" class="text-center">aOh! 暂时还没有内容!</td>
</tr>
</if>
<notemtpy name = "data">
<volist name="data" id="data">
<tr>
<td >{$data.month}</td>
<td >{$data.user_account}</td>
<td >{$data.refund_amount}</td>
<td >
<a href="{$data['jump_url']}" >查看</a>
</td>
</tr>
</volist>
<tr>
<td><span>汇总</span></td>
<td colspan="13" style="text-align: left;">累计退款:&nbsp;{$allcount|default=0}</td>
</tr>
</notemtpy>
</tbody>
</table>
</div>
</empty>
</div>
<div class="page">
<a class="sch-btn" href="{:U(CONTROLLER_NAME.'/'.ACTION_NAME,array_merge(['export'=>1],I('get.')))}" target="_blank">导出</a>
{$_page|default=''}
</div>
</block>
<block name="script">
<script src="__STATIC__/layer/layer.js" type="text/javascript"></script>
<script type="text/javascript" src="__STATIC__/layer/extend/layer.ext.js" ></script>
<link href="__STATIC__/datetimepicker/css/datetimepicker.css" rel="stylesheet" type="text/css">
<php>if(C('COLOR_STYLE')=='blue_color') echo '<link href="__STATIC__/datetimepicker/css/datetimepicker_blue.css" rel="stylesheet" type="text/css">';</php>
<link href="__STATIC__/datetimepicker/css/dropdown.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="__STATIC__/datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script type="text/javascript" src="__STATIC__/datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js" charset="UTF-8"></script>
<script>
<volist name=":I('get.')" id="vo">
Think.setValue('{$key}',"{$vo}");
</volist>
</script>
<script type="text/javascript">
//导航高亮
highlight_subnav("{:U('userCount')}");
$(function(){
$(".select_gallery").select2();
//搜索功能
$("#search").click(function(){
var url = $(this).attr('url');
var query = $('.jssearch').find('input').serialize();
query += "&" + $('.jssearch').find('select').serialize();
query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g,'');
query = query.replace(/^&/g,'');
if( url.indexOf('?')>0 ){
url += '&' + query;
}else{
url += '?' + query;
}
window.location.href = url;
});
//回车自动提交
$('.jssearch').find('input').keyup(function(event){
if(event.keyCode===13){
$("#search").click();
}
});
})
</script>
</block>
Loading…
Cancel
Save