Merge branch 'dev' of 47.111.118.107:wmtx/platform into dev

master
ELF 5 years ago
commit 6cd566e152

@ -1748,7 +1748,8 @@ function data2csv(&$data,$title,$fields){
foreach ($data as $row) {
$a = [];
foreach($field as $k=>$v){
$a[$v] = $row[$v] . "\t";//防止格式错误
// $a[$v] = $row[$v] . "\t";//防止格式错误
$a[$v] = $row[$v];
}
if ($index == 10000) { //每次写入1000条数据清除内存
$index = 0;

@ -759,7 +759,7 @@ class FinanceController extends ThinkController
}
public function gameStatisticsDetail($p = 1) {
set_time_limit(0);
if (isset($_REQUEST['pay_way'])) {
$map['pay_way'] = $_REQUEST['pay_way'];
@ -831,6 +831,7 @@ class FinanceController extends ThinkController
$order = "pay_time DESC";
$data = D('spend')->getSpendData($map,$field,$group,$order,$page,$row);
foreach($data as $key => $value) {
$data[$key]['pay_way'] = getPayType($value['pay_way']);
}
@ -847,16 +848,15 @@ class FinanceController extends ThinkController
$this->assign('sumInside', $sumInside);
$this->assign('sumAll', null_to_0($sumAll));
$count = D("spend")->getSpendData($map,$field,$group,$order);
$count = D("spend")->getSpendData($map,'count(*) as count',$group,$order);
$count = count($count);
$count = $count[0]['count'];
$page = set_pagination($count,$row);
if($page) {$this->assign('_page', $page);}
$this->meta_title = '游戏订单查看';
$this->assign('data',$data);
$from = I('from', '');
$this->display($from);
$this->display();
}
public function coinDetail($p = 1) {
@ -1001,11 +1001,12 @@ class FinanceController extends ThinkController
} elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
$time = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
}
setPowerPromoteIds($map);
//获取现金充值
$cashStatistics = M('spend', 'tab_')
->field('pay_way,"" as pay_type,SUM(pay_amount) AS pay_amount')
->where(['pay_status' => 1,'pay_way'=>['egt',1],'pay_time'=>$time])
->where(['pay_status' => 1,'pay_way'=>['egt',1],'pay_time'=>$time,'promote_id'=>$map['promote_id']])
->group('pay_way')
->select();
foreach ($cashStatistics as $key => $value) {
@ -1020,7 +1021,8 @@ class FinanceController extends ThinkController
'tab_deposit.pay_status' => 1,
'tab_deposit.pay_way' => ['gt', 0],
'extend'=>['eq','']
,'tab_deposit.create_time'=>$time
,'tab_deposit.create_time'=>$time,
'tab_deposit.promote_id'=>$map['promote_id']
])->field('tab_deposit.pay_way,"" as pay_type, SUM(tab_deposit.pay_amount) AS balance')
->join("inner join tab_pay_info on tab_pay_info.order_id=tab_deposit.pay_order_number")
->group('tab_deposit.pay_way')
@ -1059,7 +1061,8 @@ class FinanceController extends ThinkController
->where([
'pay_status' => 1,
'pay_way' => ['gt', 0],
'create_time'=>$time
'create_time'=>$time,
'promote_id'=>$map['promote_id']
])
->group('pay_way')
->select();
@ -1084,7 +1087,8 @@ class FinanceController extends ThinkController
->field("pay_way,'' as pay_type,sum(real_amount) as pay_amount")
->where([
'order_status'=>['egt',1],
'pay_way'=>['egt',1],'pay_time'=>$time
'pay_way'=>['egt',1],'pay_time'=>$time,
'promote_id'=>$map['promote_id']
])
->group('pay_way')
->select();
@ -1114,7 +1118,8 @@ class FinanceController extends ThinkController
'pay_status'=>1,
'pay_way'=>['egt',1],
'pay_source'=>0,
'create_time'=>$time
'create_time'=>$time,
'promote_id'=>$map['promote_id']
])
->group('pay_way')
->select();

@ -121,7 +121,7 @@ class FinancePromoteController extends AdminController
}
private function getJoinPromoteData($map,$istimeselect,$type="spend")
{
setPowerPromoteIds($map,"s.promote_id");
// setPowerPromoteIds($map,"s.promote_id");
if ($_REQUEST['promote_id'] != '') {
if ($_REQUEST['promote_id'] == 0) {
$map['s.promote_id'] = 0;
@ -277,7 +277,7 @@ class FinancePromoteController extends AdminController
}
private function promoteUserData($map,$istimeselect,$type="spend")
{
setPowerPromoteIds($map,"s.promote_id");
// setPowerPromoteIds($map,"s.promote_id");
if ($_REQUEST['promote_id'] != '') {
if ($_REQUEST['promote_id'] == 0) {
$map['s.promote_id'] = 0;

@ -50,6 +50,9 @@ class PayChannelController extends ThinkController
$map['pay_status'] = $coinMap['pay_status'] = 1;
$map['pay_way'] = array('egt',1);
// setPowerPromoteIds($map,'promote_id');
//游戏币计算
$data = M('spend','tab_')
->field("game_name,sum(pay_amount) as pay_amount,game_id")
@ -61,6 +64,8 @@ class PayChannelController extends ThinkController
//平台币充值金额计算
$coinMap['pay_source'] = 2;
$coinMap['extend'] = array('eq','');
// setPowerPromoteIds($coinMap,'tab_deposit.promote_id');
$coinData = M('pay_info','tab_')
->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number")
->field("tab_pay_info.game_name,0 as pay_amount,sum(tab_deposit.pay_amount) as platform_coin,0 as test_coin,tab_pay_info.game_id")
@ -118,15 +123,16 @@ class PayChannelController extends ThinkController
$data[$key]['test_platform_coin'] = $handleTestCoinData[$value['game_id']]?$handleTestCoinData[$value['game_id']]:0;
}
$superMap = $map;
// unset($superMap['promote_id']);
//超级签数据
$superSignData = M('game_supersign','tab_')
->field("0 as game_name,sum(pay_price) as pay_amount,0 as platform_coin,0 as test_coin")
->where($map)
->where($superMap)
->find();
$testSuperSignCost = M('game_supersign','tab_')
->join("inner join tab_test_white_list on tab_game_supersign.user_id=tab_test_white_list.user_id")
->where($map)
->where($superMap)
->sum('pay_price');
$superSignData['test_coin'] = $testSuperSignCost?$testSuperSignCost:0;
$superSignData['sum'] = $superSignData['pay_amount']?$superSignData['pay_amount']:0;
@ -137,6 +143,7 @@ class PayChannelController extends ThinkController
$offcialmap['pay_status'] = 1;
$offcialmap['pay_way'] = array('egt',1);
$offcialmap['pay_source'] = 0;
// setPowerPromoteIds($offcialmap,'promote_id');
$offcialData = M('deposit','tab_')
->field("id as game_name,sum(pay_amount) as pay_amount,0 as platform_coin,0 as test_coin")
@ -151,6 +158,7 @@ class PayChannelController extends ThinkController
$bindMap['pay_status'] = 1;
$bindMap['pay_way'] = array('egt',1);
// setPowerPromoteIds($bindMap,'promote_id');
$bindRechargeData = M('bind_recharge','tab_')
->field('sum(real_amount) as pay_amount')
@ -165,6 +173,7 @@ class PayChannelController extends ThinkController
$spreadMap['order_status'] = array('egt',1);
$spreadMap['pay_way'] = array('egt',1);
// setPowerPromoteIds($spreadMap,'promote_id');
//推广后台
$spreadData = M("coin_pay_order","tab_")
->field("0 as game_name,sum(real_amount) as pay_amount,0 as platform_coin,id as test_coin")
@ -343,11 +352,13 @@ class PayChannelController extends ThinkController
if($map['pay_time']) {
$spreadMap['create_time'] = $map['pay_time'];
}
// $spreadMap['promote_id'] = $map['promote_id'];
//推广后台
$spreadDataPay = M("coin_pay_order","tab_")
->field("sum(pay_amount) as pay_amount,pay_way")
->where($spreadMap)
->select(false);
if ($map['pay_time']) {
$map['create_time'] = $map['pay_time'];
unset($map['pay_time']);
@ -367,6 +378,7 @@ class PayChannelController extends ThinkController
if ($map['pay_time']) {
$bindMap['create_time'] = $map['pay_time'];
}
// $bindMap['promote_id'] = $map['promote_id'];
$bindRechargeData = M('bind_recharge','tab_')
->field('sum(real_amount) as pay_amount,pay_way')
@ -439,6 +451,9 @@ class PayChannelController extends ThinkController
$page = $p ? $p : 1; //默认显示第一页数据
// setPowerPromoteIds($map,'promote_id');
// setPowerPromoteIds($coinMap,'tab_deposit.promote_id');
$spendData = M('spend','tab_')
->field("pay_order_number,pay_time,user_account,game_name,promote_account,spend_ip,server_name,game_player_name,cost,pay_amount,pay_way")
->where($map)
@ -454,6 +469,7 @@ class PayChannelController extends ThinkController
->select(false);
$spreadMap['order_status'] = array('egt',1);
// setPowerPromoteIds($spreadMap,'promote_id');
// $spreadMap['pay_way'] = array('egt',1);
$coin_pay_order = M('coin_pay_order','tab_')
->field("pay_order_number,create_time as pay_time,promote_account,pay_amount as cost,real_amount as pay_amount,pay_way")
@ -463,6 +479,7 @@ class PayChannelController extends ThinkController
//官网数据
$offcialmap['pay_status'] = 1;
$offcialmap['pay_source'] = 0;
// setPowerPromoteIds($offcialmap,'promote_id');
$offcialData = M('deposit','tab_')
->field("pay_order_number,create_time as pay_time,user_account,promote_account,pay_ip as spend_ip,pay_amount as cost,pay_amount,pay_way")
@ -478,6 +495,7 @@ class PayChannelController extends ThinkController
unset($map['pay_order_number']);
}
// unset($map['promote_id']);
//超级签数据
$superSignData = M('game_supersign','tab_')
->field("order_id as pay_order_number,pay_time,tab_user.account as user_account,tab_user.promote_account,pay_price as cost,pay_price as pay_amount,pay_way")
@ -601,8 +619,9 @@ class PayChannelController extends ThinkController
$_REQUEST['game_id']?$map['game_id'] = $_REQUEST['game_id']:false;
$_REQUEST['game_id']?$coinMap['game_id'] = $_REQUEST['game_id']:false;
$map['pay_status'] = 1;
// setPowerPromoteIds($map,'promote_id');
// setPowerPromoteIds($coinMap,'tab_deposit.promote_id');
// $_REQUEST['model']?$model= $_REQUEST['model']:false;
if ($_REQUEST['model']) {
@ -624,6 +643,7 @@ class PayChannelController extends ThinkController
->select(false);
$spreadMap['order_status'] = array('egt',1);
// setPowerPromoteIds($spreadMap,'promote_id');
$coin_pay_order = M('coin_pay_order','tab_')
->field("pay_order_number,create_time as pay_time,promote_account,pay_amount as cost,real_amount as pay_amount,pay_way")
@ -633,6 +653,7 @@ class PayChannelController extends ThinkController
//官网数据
$offcialmap['pay_status'] = 1;
$offcialmap['pay_source'] = 0;
// setPowerPromoteIds($offcialmap,'promote_id');
$offcialData = M('deposit','tab_')
->field("pay_order_number,create_time as pay_time,user_account,promote_account,pay_ip as spend_ip,pay_amount as cost,pay_amount,pay_way")
@ -648,6 +669,7 @@ class PayChannelController extends ThinkController
unset($map['pay_order_number']);
}
// unset($map['promote_id']);
//超级签数据
$superSignData = M('game_supersign','tab_')
->field("order_id as pay_order_number,pay_time,tab_user.account as user_account,tab_user.promote_account,pay_price as cost,pay_price as pay_amount,pay_way")
@ -798,7 +820,7 @@ class PayChannelController extends ThinkController
if ($_REQUEST['game_id']) {
$map['game_id'] = $_REQUEST['game_id'];
}
// setPowerPromoteIds($map,'promote_id');
$data = M('spend','tab_')
->field("pay_order_number,order_number,user_account,pay_time,game_name,server_name,game_player_name,cost,pay_amount,pay_way as pay_type,pay_way,pay_game_status")
->join('inner join tab_test_white_list on tab_spend.user_id=tab_test_white_list.user_id')
@ -811,8 +833,12 @@ class PayChannelController extends ThinkController
}
$coinMap = $map;
$coinMap['tab_deposit.create_time'] = $map['pay_time'];
unset($coinMap['pay_time']);
if ($map['pay_time']) {
$coinMap['tab_deposit.create_time'] = $map['pay_time'];
unset($coinMap['pay_time']);
}
// unset($coinMap['promote_id']);
// setPowerPromoteIds($coinMap,'tab_deposit.promote_id');
$coinData = M('pay_info','tab_')
->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number")
@ -822,6 +848,7 @@ class PayChannelController extends ThinkController
tab_deposit.pay_amount,tab_deposit.pay_way as pay_type,tab_deposit.pay_way,'' as pay_game_status")
->where($coinMap)
->select(false);
$page = ($page-1) * $row;
$count = "select count(*) as count from ({$data} UNION ALL {$coinData})t;";
@ -939,6 +966,7 @@ class PayChannelController extends ThinkController
$map['create_time'] = $map['pay_time'];
unset($map['pay_time']);
}
// setPowerPromoteIds($map,'tab_deposit.promote_id');
$data = M('deposit','tab_')
->field("pay_order_number,order_number,user_account,create_time as pay_time,pay_amount as cost,pay_amount,pay_way as pay_type,pay_way")
->join('inner join tab_test_white_list on tab_deposit.user_id=tab_test_white_list.user_id')
@ -1098,6 +1126,7 @@ class PayChannelController extends ThinkController
if ($_REQUEST['game_id']) {
$map['game_id'] = $_REQUEST['game_id'];
}
// setPowerPromoteIds($map,'promote_id');
$data = M('spend','tab_')
->field("pay_order_number,order_number,user_account,pay_time,game_name,server_name,game_player_name,cost,pay_amount,pay_way as pay_type,pay_way,pay_game_status")
@ -1112,8 +1141,14 @@ class PayChannelController extends ThinkController
$coinMap = $map;
$coinMap['tab_deposit.create_time'] = $map['pay_time'];
unset($coinMap['pay_time']);
if($map['pay_time']) {
$coinMap['tab_deposit.create_time'] = $map['pay_time'];
unset($coinMap['pay_time']);
}
// unset($coinMap['promote_id']);
// setPowerPromoteIds($coinMap,'tab_deposit.promote_id');
$coinData = M('pay_info','tab_')
->join("inner join tab_deposit on tab_pay_info.order_id=tab_deposit.pay_order_number")
->join("inner join tab_test_white_list on tab_test_white_list.user_id=tab_pay_info.user_id")
@ -1283,6 +1318,7 @@ class PayChannelController extends ThinkController
$map['create_time'] = $map['pay_time'];
unset($map['pay_time']);
}
// setPowerPromoteIds($map,'tab_deposit.promote_id');
$accessNum = M('deposit','tab_')
->field("pay_order_number,order_number,user_account,create_time as pay_time,pay_amount as cost,pay_amount,pay_way as pay_type,pay_way")
@ -1446,5 +1482,17 @@ class PayChannelController extends ThinkController
fputcsv($fp, $sumDataPay);
}
function getGameList() {
if (I('partner_id')) {
$map['partner_id'] = I('partner_id');
}
if (I('sdk_type')) {
$map['sdk_version'] = I('sdk_type');
}
$data = M('game','tab_')->field("id,game_name")->where($map)->select();
$this->ajaxReturn($data,'json');
}
}

@ -15,6 +15,7 @@
<style>
html {
min-width:100%;
height: 1000px;
}
body {
padding: 0px;

@ -65,7 +65,9 @@
visibility: visible;
line-height: 20px;
}
.layui-layer{
overflow: scroll;
}
</style>
@ -91,9 +93,10 @@
<div class="input-list input-list-game search_label_rehab">
<select id="game_name" name="game_name" class="select_gallery" >
<option value="">游戏名称</option>
<!-- <volist name=":get_game_list(null, $_GET['game_type'])" id="vo">
<option game-id="{$vo.id}" value="{$vo.id}">{$vo.game_name}</option>
</volist> -->
<volist name=":getAllGame()" id="vo">
<option value="{$vo.game_name}" <if condition="$vo.game_name eq I('game_name')">selected</if>
>{$vo.game_name}</option>
</volist>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
@ -253,9 +256,11 @@
<volist name=":I('get.')" id="vo">
Think.setValue('{$key}',"{$vo}");
</volist>
$(".select_gallery").select2();
</script>
<script type="text/javascript">
$(".select_gallery").select2();
function reloadIframe(url) {
$("iframe").attr('src', url);
// document.getElementsByTagName('iframe').src=url;
@ -280,25 +285,23 @@
var href = $(this).attr('href');
$(this).removeAttr('href');
window.location.replace(href)
console.log(href)
});
//导航高亮
highlight_subnav('{:U('Finance/gameStatistics')}');
$(function(){
//搜索功能
$("#search").click(function(){
console.log(111);
var starttime = $.trim($('#time-start').val());
var endtime = $.trim($('#time-end').val());
if (starttime && endtime && starttime > endtime) {layer.msg('开始时间必须小于等于结束时间');return false;}
var url = $(this).attr('url');
var query = $('.jssearch').find('input').serialize();
console.log(url);
query += "&" + $('.jssearch').find('select').serialize();
console.log(query);
query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g,'');
query = query.replace(/^&/g,'');
if( url.indexOf('?')>0 ){
@ -329,13 +332,18 @@
});
});
function get_game_list()
/* function get_game_list()
{
var game_name = "{:I('game_name')}";
var partner_id = $("#partner_id option:selected").val();
var sdk_type = $("#sdk_version1 option:selected").val();
$.ajax({
url:"{:U('Finance/getGameList')}",
type:"post",
data:{partner_id:$("#partner_id option:selected").val(), sdk_type:$("#sdk_version1 option:selected").val()},
data:{
partner_id:partner_id,
sdk_type:sdk_type
},
dataType:'json',
success:function(data){
var str = "<option value=''>请选择游戏</option>";
@ -352,7 +360,7 @@
}
$("#partner_id, #sdk_type").change(function(){
get_game_list();
});
});*/
$('#time-start').datetimepicker({
format: 'yyyy-mm-dd',
@ -388,7 +396,7 @@
return false;
});
$("#partner_id").change();
/* $("#partner_id").change();
function get_partnet_list()
{
@ -416,6 +424,11 @@
});
$("#game_name").change();
if ("{:I('get.game_name')}") {
$('#select2-game_name-container').text("{:I('get.game_name')}");
}*/
})
</script>
</block>

@ -41,7 +41,7 @@
<!--游戏类型搜索END-->
<div class="input-list">
<a class="sch-btn" href="javascript:history.go(-1)" style="background:#fff;color: #000;border: #000 solid 1px;width: 100px">返回</a>
<a class="sch-btn" href="{:U('Finance/gameStatistics')}" style="background:#fff;color: #000;border: #000 solid 1px;width: 100px">返回</a>
</div>
<input type="hidden" name="count_date" value="{$_GET['count_date']}"/>
<input type="hidden" name="game_id" value="{$_GET['game_id']}"/>

@ -95,6 +95,9 @@
<!-- 高级搜索 -->
<div class="jssearch fl cf search_list">
<!--游戏类型搜索END-->
<div class="input-list search-title-box">
<a class="sch-btn" href="javascript:history.go(-1)" style="background:#fff;color: #000;border: #000 solid 1px;width: 100px">返回</a>
</div>
<div class="input-list input-list-server search_label_rehab">
<select id="partner_id" name="partner_id" class="select_gallery" style="width:120px;">
<option value="">请选择合作公司</option>
@ -127,6 +130,9 @@
</div>
<input type="hidden" name="from" value="{$_GET['from']}"/>
<input type="hidden" name="promote_id" value="{$_GET['promote_id']}"/>
<input type="hidden" name="promote_type" value="{$_GET['promote_type']}"/>
<div class="input-list">
<a class="sch-btn" href="javascript:;" id="search" url="{:U('FinancePromote/gameStatistics','model='.$model['name'].'&row='.I('row'),false)}"
style="width: 100px;border: #3C95C8 solid 1px;">搜索</a>

@ -222,9 +222,9 @@
<td>
<a
href="{:U('FinancePromote/gameStatistics',array_merge(['promote_id'=>$data['p_id'],'company_id'=>$data['company_id'],'promote_type'=>1],I('get.')))}">游戏查看</a>
href="{:U('FinancePromote/gameStatistics',array_merge(['promote_id'=>$data['p_id'],'company_id'=>$data['company_id'],'promote_type'=>1],I('get.'),['p'=>1]))}">游戏查看</a>
<a
href="{:U('FinancePromote/promoteUser',array_merge(['promote_id'=>$data['p_id'],'company_id'=>$data['company_id']],I('get.')))}">渠道查看</a>
href="{:U('FinancePromote/promoteUser',array_merge(['promote_id'=>$data['p_id'],'company_id'=>$data['company_id']],I('get.'),['p'=>1]))}">渠道查看</a>
</td>
</tr>
</volist>

@ -87,6 +87,9 @@
<div class="cf top_nav_list">
<!-- 高级搜索 -->
<div class="jssearch search_list fl cf">
<div class="input-list search-title-box">
<a class="sch-btn" href="javascript:history.go(-1)" style="background:#fff;color: #000;border: #000 solid 1px;width: 100px">返回</a>
</div>
<div class="input-list search-title-box">
<label>搜索:</label>
</div>
@ -209,7 +212,7 @@
<td>
<a href="{:U('FinancePromote/gameStatistics',array_merge(I('get.'),['promote_id'=>$data['promote_id'],'company_id'=>$data['company_id'],'promote_type'=>2]))}" >游戏查看</a>
<a href="{:U('FinancePromote/gameStatistics',array_merge(I('get.'),['promote_id'=>$data['promote_id'],'company_id'=>$data['company_id'],'promote_type'=>2,'p'=>1]))}" >游戏查看</a>
</td>
</tr>
</volist>

@ -101,13 +101,11 @@
<!-- </select>-->
<!-- </div>-->
<div class="input-list input-list-game search_label_rehab">
<select id="game_id" name="game_id" class="select_gallery" style="width:120px;">
<option value="">请选择游戏</option>
<volist name=":getGameList($_GET['partner_id'])" id="vo">
<option value="{$vo.id}" <if condition="$vo.id eq $_GET['game_id']">selected=selected</if>>{$vo.game_name}</option>
</volist>
<select id="game_name" name="game_id" class="select_gallery" >
<option value="">游戏名称</option>
</select>
</div>
<div class="input-list">
<input type="text" id="timestart" name="timestart" class="" value="{:I('timestart')}" placeholder="下单开始时间" />
-
@ -280,6 +278,28 @@
});
}
function get_game_list()
{
var game_name = "{:I('game_id')}";
$.ajax({
url:"{:U('PayChannel/getGameList')}",
type:"post",
data:{partner_id:$("#partner_id option:selected").val(), sdk_type:$("#sdk_version1 option:selected").val()},
dataType:'json',
success:function(data){
var str = "<option value=''>请选择游戏</option>";
for (var i in data){
str += "<option value='"+data[i].id+"'"+(game_name && data[i].id == game_name?'selected':'')+">"+data[i].game_name+"</option>"
}
// console.log(str);
$("#game_name").empty();
$("#game_name").append(str);
$("#game_name").select2();
}
})
}
get_game_list();
$(function(){
$('#timestart').datetimepicker({

@ -10,11 +10,12 @@
<div class="cf main-place top_nav_list navtab_list">
<ul class="tabnav1711 fr jstabnav">
<li data-tab="tab1" class="current"><a href="javascript:void(0);">基本信息</a></li></li>
<li data-tab="tab2" ><a href="javascript:void(0);">结算信息</a></li>
</ul>
<!-- <ul class="tabnav1711 fr jstabnav">-->
<!-- <li data-tab="tab1" class="current"><a href="javascript:void(0);">基本信息</a></li></li>-->
<!-- <li data-tab="tab2" ><a href="javascript:void(0);">结算信息</a></li>-->
<!-- </ul>-->
<h3 class="page_title">{$title}测试账号</h3>
<p class="description_text">说明:此功能是新增测试白名单</p>
</div>

Loading…
Cancel
Save