Merge branch 'feature/ip_forbit' of wmtx/platform into release

ip限制白名单提示语修改
master
廖金灵 5 years ago committed by Gogs
commit ff5ff3ee80

@ -0,0 +1,237 @@
<?php
namespace Admin\Controller;
class AmericaIpForbitController extends ThinkController
{
public function index($p = 1) {
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
if (isset($_REQUEST['row'])) {
$row = $_REQUEST['row'];
} else {
$row = 10;
}
$map = [];
if ($_REQUEST['user_account']) {
$map['user_account'] = ['like',"%{$_REQUEST['user_account']}%"];
}
$data = M('forbit_ip','tab_')
->where($map)
->page($page,$row)
->order('create_time DESC')
->select();
foreach ( $data as $key => $value ) {
$data[$key]['create_time'] = date('Y-m-d H:i:s',$value['create_time']);
}
$count = M('forbit_ip','tab_')
->where($map)
->count();
$appleInteriorBuyStatus = M('tool','tab_')->where(['name'=>'apple_interior_buy'])->getField('status');
$setAppleInteriorBuyStatus = $appleInteriorBuyStatus?0:1;
$page = set_pagination($count, $row);
$this->assign('_page', $page);
$this->assign('apple_interior_buy',$appleInteriorBuyStatus);
$this->assign('set_apple_interior_buy',$setAppleInteriorBuyStatus);
$this->assign('data',$data);
$this->display();
}
public function export() {
$xlsName = 'ip限制白名单';
$xlsCell = array(
"玩家账号", "区域", '状态', '添加人', '添加时间'
);
$map = [];
if ($_REQUEST['user_account']) {
$map['user_account'] = ['like',"%{$_REQUEST['user_account']}%"];
}
$csvFileName = $xlsName.'.csv';
//设置好告诉浏览器要下载excel文件的headers
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="'. $csvFileName .'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$fp = fopen('php://output', 'a');//打开output流
mb_convert_variables('GBK', 'UTF-8', $xlsCell);
fputcsv($fp, $xlsCell);//将数据格式化为CSV格式并写入到output流中
$accessNum = M('forbit_ip','tab_')
->where($map)
->count();
$accessNum =$accessNum['count'];
$perSize = 2000;//每次查询的条数
$pages = ceil($accessNum / $perSize);
for($i = 1; $i <= $pages; $i++) {
$xlsData = M('forbit_ip','tab_')
->field('user_account,area,status,admin_account,create_time')
->where($map)
->limit(($i-1)*$perSize ,$perSize)
->order('create_time DESC')
->select();
foreach($xlsData as $value) {
$value['create_time'] = date("Y-m-d H:i:s",$value['create_time']);
if ($value['status'] == 0) {
$value['status'] = '限制';
} else {
$value['status'] = '不限制';
}
mb_convert_variables('GBK', 'UTF-8', $value);
fputcsv($fp, $value);
}
unset($xlsData);//释放变量的内存
//刷新输出缓冲到浏览器
ob_flush();
flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
}
fclose($fp);
$getData = $_GET;
unset($getData['id']);
unset($getData['xlsname']);
}
public function operateIp() {
if (!I('id')) {
$this->ajaxReturn(['code'=>1,'msg'=>'ID未选择']);
} else {
$id = I('id');
}
if (I('status')) {
$status = I('status');
} else {
$status = 0;
}
$map['id'] = ['in',$id];
$is_change = M('forbit_ip','tab_')->where(['id'=>['in',$id]])->save(['status'=>$status]);
if ($is_change) {
$this->ajaxReturn(['code'=>1]);
} else {
$this->ajaxReturn(['code'=>0]);
}
}
public function del() {
if (!I('id')) {
$this->ajaxReturn(['code'=>1,'msg'=>'ID未选择']);
} else {
$id = I('id');
}
$is_del = $is_change = M('forbit_ip','tab_')->where(['id'=>['in',$id]])->delete();
if ($is_del) {
$this->ajaxReturn(['code'=>1]);
} else {
$this->ajaxReturn(['code'=>0]);
}
}
public function add() {
$this->display();
}
public function addUser() {
$insert = [];
$hav_user = M('user','tab_')->where(['account'=>I('account')])->find();
$auth = $_SESSION['onethink_admin']['user_auth'];
if (!$hav_user) {
$this->error('用户不存在');
}
$hav_firbit = M('forbit_ip','tab_')->where(['user_account'=>I('account')])->find();
if ($hav_firbit) {
$this->error('该用户已添加封禁');
}
$insert['user_id'] = $hav_user['id'];
$insert['user_account'] = I('account');
$insert['area'] = I('area');
$insert['status'] = I('status');
$insert['admin_id'] = $auth['uid'];
$insert['admin_account'] = $auth['username'];
$insert['create_time'] = time();
$insert['remarks'] = '';
$is_insert = M('forbit_ip','tab_')->add($insert);
if ($is_insert) {
$this->success('添加成功',U('AmericaIpForbit/index'));
} else {
$this->error('添加失败');
}
}
public function setAppleInteriorBuyStatus() {
$status = I('status');
if (!$status && $status!='0') {
$this->ajaxReturn(['code'=>0]);
}
$is_success = M('tool','tab_')->where(['name'=>'apple_interior_buy'])->save(['status'=>$status]);
if ($is_success) {
$this->ajaxReturn(['code'=>1]);
} else {
$this->ajaxReturn(['code'=>0]);
}
}
}

@ -0,0 +1,139 @@
<extend name="Public/base" />
<block name="body">
<link rel="stylesheet" type="text/css" href="__CSS__/admin_table.css" media="all">
<script type="text/javascript" src="__STATIC__/uploadify/jquery.uploadify.min.js"></script>
<script type="text/javascript" src="__STATIC__/provincecityarea/AreaData_min.js"></script><!--
<script type="text/javascript" src="__STATIC__/provincecityarea/jquery-1.7.min.js"></script> -->
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">新增IP限制账号</h3>
<p class="description_text">说明此功能是新增IP限制白名单</p>
</div>
<!-- 标签页导航 -->
<div class="tab-wrap">
<div class="tab-content tabcon1711">
<!-- 表单 -->
<form id="form" action="{:U('addUser?model='.$model['id'])}" method="post" class="form-horizontal">
<!-- 基础文档模型 -->
<div id="tab1" class="tab-pane in tab1">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="l">玩家账号:</td>
<td class="r">
<input type="text" class="txt" name="account" value="" placeholder="输入玩家账号" onKeyUp="value=value.replace(/[^\w\.\/]/ig,'')">
</td>
</tr>
<tr>
<td class="l">状态:</td>
<td class="r table_radio">
<span class="form_radio table_btn">
<label >
<input type="radio" value="0" name="status" checked="checked"> 限制
</label >
<label >
<input type="radio" value="1" name="status" > 不限制
</label>
</span>
</td>
</tr>
<tr>
<td class="l">区域</td>
<td class="r">
<select name="area" id="area">
<option value="">请选择区域</option>
<option value="美国">美国</option>
</select>
</td>
</tr>
</tbody>
</table>
</div>
<input type="hidden" name="id" value="{$data['id']}" />
<div class="form-item cf">
<button class="submit_btn ajax-post mlspacing" id="submit" type="submit" target-form="form-horizontal">
保存
</button>
<a class="submit_btn " alt="返回上一页" title="返回上一页" href="javascript:window.history.back();" >
返回
</a>
</div>
</form>
</div>
</div>
<div class="common_settings">
<span class="plus_icon"><span><img src="__IMG__/zwmimages/icon_jia.png"></span></span>
<form class="addShortcutIcon">
<input type="hidden" name="title" value="{$m_title}">
<input type="hidden" name="url" value="Promote/lists/type/1">
</form>
<a class="ajax-post add-butn <notempty name='commonset'>addSIsetted</notempty>" href="javascript:;" target-form="addShortcutIcon" url="{:U('Think/addShortcutIcon')}"><img src="__IMG__/zwmimages/icon_jia.png"><span><notempty name='commonset'>已添加<else />添加至常用设置</notempty></span></a>
</div>
</block>
<block name="script">
<script type="text/javascript" src="__STATIC__/datetimepicker/js/bootstrap-datetimepicker.min.js"></script><script type="text/javascript" src="__STATIC__/provincecityarea/area1.js"></script>
<script type="text/javascript">
//导航高亮
highlight_subnav('{:U('AmericaIpForbit/index')}');
Think.setValue("game_type_id", {$data.game_type_id|default = 0});
Think.setValue("category", {$data.category|default = 0});
$(function(){
showTab();
prov="{:substr($data['bank_area'],0,2)}";
city="{:substr($data['bank_area'],2,2)}";
ciarea="{:substr($data['bank_area'],4,2)}";
$("input[name=company_belong]").click(function () {
if ($(this).val() == 1) {
$('#company_relation').show();
} else {
$('#company_relation').hide();
}
});
});
//得到地区码
function getAreaID(){
var area = 0;
if($("#seachdistrict").val() != "0"){
area = $("#seachdistrict").val();
}else if ($("#seachcity").val() != "0"){
area = $("#seachcity").val();
}else{
area = $("#seachprov").val();
}
return area;
}
//根据地区码查询地区名
function getAreaNamebyID(areaID){
var areaName = "";
if(areaID.length == 2){
areaName = area_array[areaID];
}else if(areaID.length == 4){
var index1 = areaID.substring(0, 2);
areaName = area_array[index1] + " " + sub_array[index1][areaID];
}else if(areaID.length == 6){
var index1 = areaID.substring(0, 2);
var index2 = areaID.substring(0, 4);
areaName = area_array[index1] + " " + sub_array[index1][index2] + " " + sub_arr[index2][areaID];
}
return areaName;
}
</script>
</block>

@ -0,0 +1,546 @@
<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;
}
.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;}
.layui-layer-dialog .layui-layer-content{color:red}
.butnbox {padding:10px 0 10px;}
.butnbox .butnlist {overflow:hidden;clear:both;}
.butnbox .butnlist .butn,.butnbox .butnlist .butn:hover {text-decoration:none;border:none;}
.butnbox .butnlist .butn {display:inline-block;width:120px;height:28px;line-height:28px;text-align:center;color:#FFF;background:#3C95C8;border-radius:3px;}
.butnbox .butnlist .butn.last {background:#009900;}
.butnbox .butnlist .butn~.butn {margin-left:20px;}
.data_list table tbody tr a.disabled,.data_list table tbody tr a.disabled:hover {color:#999;cursor:default;}
.layui-layer-title {
text-align: center;
height: 80px;
line-height: 80px;
font-weight: 600;
font-size: 18px;
}
.chk_1,.chk_2,.chk_3,.chk_4 {
display: none;
}
/*******STYLE 3*******/
.chk_3 + label {
background-color: #fafbfa;
padding: 9px;
border-radius: 50px;
display: inline-block;
position: relative;
margin-right: 30px;
-webkit-transition: all 0.1s ease-in;
transition: all 0.1s ease-in;
width: 40px;
height: 15px;
}
.chk_3 + label:after {
content: ' ';
position: absolute;
top: 0;
-webkit-transition: box-shadow 0.1s ease-in;
transition: box-shadow 0.1s ease-in;
left: 0;
width: 100%;
height: 100%;
border-radius: 100px;
box-shadow: inset 0 0 0 0 #eee, 0 0 1px rgba(0,0,0,0.4);
}
.chk_3 + label:before {
content: ' ';
position: absolute;
background: white;
top: 1px;
left: 1px;
z-index: 999999;
width: 31px;
-webkit-transition: all 0.1s ease-in;
transition: all 0.1s ease-in;
height: 31px;
border-radius: 100px;
box-shadow: 0 3px 1px rgba(0,0,0,0.05), 0 0px 1px rgba(0,0,0,0.3);
}
.chk_3:active + label:after {
box-shadow: inset 0 0 0 20px #eee, 0 0 1px #eee;
}
.chk_3:active + label:before {
width: 37px;
}
.chk_3:checked:active + label:before {
width: 37px;
left: 20px;
}
.chk_3 + label:active {
box-shadow: 0 1px 2px rgba(0,0,0,0.05), inset 0px 1px 3px rgba(0,0,0,0.1);
}
.chk_3:checked + label:before {
content: ' ';
position: absolute;
left: 26px;
border-radius: 100px;
}
.chk_3:checked + label:after {
content: ' ';
font-size: 1.5em;
position: absolute;
background: #4cda60;
box-shadow: 0 0 1px #4cda60;
}
#checkbox_d2 + label:after, #checkbox_d2 + label:before, #checkbox label {
-webkit-transition: all 0.1s ease-in;
transition: all 0.1s ease-in;
}
</style>
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">ip限制白名单</h3>
<p class="description_text">说明:苹果内购白名单,名单中的用户支付成功可通知游戏</p>
<div class="demo">
<div class="wrap" ><span style="float: right;margin-top: 7px;margin-right: 120px"></span>
<input type="checkbox" id="checkbox_c2" class="chk_3" <if condition="$apple_interior_buy eq 1">checked</if> /><label for="checkbox_c2" style="float: right;margin-right: 5px" onclick="setAppleInteriorBuyStatus({$set_apple_interior_buy})"></label>
<span style="float: right;margin-top: 7px;margin-right: 5px"></span>
<span style="float: right;margin-top: 7px;margin-right: 30px">全游戏苹果内购支付成功通知默认限制</span>
</div>
</div>
<!-- <div class="fr">-->
<!-- <a class="tabchose" href="">游戏充值统计</a>-->
<!-- <a class="" href="{:U('Finance/payTypeStatistics')}">充值方式统计</a>-->
<!-- </div>-->
</div>
<div class="cf top_nav_list">
<!-- 高级搜索 -->
<div class="jssearch fl cf search_list">
<!--游戏类型搜索END-->
<div class="input-list">
<input type="text" id="user_account" name="user_account" class="" value="{:I('user_account')}" placeholder="玩家账号" autocomplete="off"/>
</div>
<input type="hidden" name="" value="" class="sortBy">
<div class="input-list">
<a class="sch-btn" href="javascript:;" id="search"
style="width: 100px;border: #3C95C8 solid 1px; " url="{:U('AmericaIpForbit/index','model='.$model['name'].'&row='.I('row'),false)}">搜索</a>
</div>
<div class="input-list">
<a class="sch-btn" href="javascript:;" id="forbit"
style="width: 150px;background: #fff;color: #000;border:1px solid #000;">批量限制</a>
</div>
<div class="input-list">
<a class="sch-btn" href="javascript:;" id="noforbit"
style="width: 150px;background: #fff;color: #000;border:1px solid #000;">批量不限制</a>
</div>
<div class="input-list">
<a class="sch-btn" href="javascript:;" id="delete"
style="width: 150px;background: #fff;color: #000;border:1px solid #000;">批量删除</a>
</div>
<div class="input-list">
<a class="sch-btn" href="{:U('AmericaIpForbit/add')}"
style="width: 150px;background: #fff;color: #000;border:1px solid #000;">添加玩家账号</a>
</div>
</div>
</div>
<!-- 数据列表 -->
<div class="data_list">
<empty name="show_status">
<div class="">
<table>
<!-- 表头 -->
<thead>
<tr>
<th class="" style="width: 50px;">
<input class="check-all" type="checkbox">
</th>
<th >玩家账号</th>
<th >区域</th>
<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="14" class="text-center">aOh! 暂时还没有内容!</td>
</tr>
</if>
<notemtpy name = "data">
<volist name="data" id="data">
<tr>
<td ><input class="ids" type="checkbox" value="{$data.id}" name="ids[]"></td>
<td >{$data.user_account}</td>
<td>{$data.area}</td>
<td ><if condition="$data.status eq 1">不限制<else/>限制</if></td>
<td >{$data.admin_account}</td>
<td >{$data.create_time}</td>
<td >
<a href="javascript:;" onclick="del({$data.id})">删除 </a>
<if condition="$data.status eq 1">
<a class="ajax-get" href="javascript:;" onclick="limit({$data.id},0)">限制 </a>
<else />
<a href="javascript:;" id="lock" onclick="limit({$data.id},1)">不限制</a>
</if>
</td>
</tr>
</volist>
</notemtpy>
</tbody>
</table>
</div>
</empty>
</div>
<div class="page">
<if condition="$is_admin eq true ">
<a class="sch-btn export-btn"
href="{:U('AmericaIpForbit/export',array_merge(['export'=>1],I('get.')))}" target="_blank">导出</a>
<!-- <a class="sch-btn" href="{:U('Export/expUser',array_merge(['id'=>3,'xlsname'=>'玩家_玩家列表_'.(I('get.type')==2?'第三方玩家':'本站玩家')],I('get.')))}">导出</a> -->
</if>
{$_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('AmericaIpForbit/index')}');
$('#forbit').click(function () {
var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) {
return $(elem).val();
}).get().join(",");
layer.confirm('【警告】是否确认此操作', {
btn: ['确认','取消'],
title:false
}, function(index) {
if (!text) {
layer.msg("<em style='color:white'>" + '请选择后再进行操作' + "</em>");
return;
}
$.ajax({
url: "{:U('AmericaIpForbit/operateIp')}",
type: "get",
data: {id: text,status:0},
dataType: 'json',
success: function (data) {
if (data.code == 0) {
layer.msg("<em style='color:white'>" + '批量限制失败' + "</em>");
} else {
layer.msg("<em style='color:white'>" + '批量限制成功' + "</em>")
setTimeout(function(){
window.location.reload();
},1500);
}
}
});
});
});
//搜索功能
$("#search").click(function(){
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();
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;
});
$('#noforbit').click(function () {
var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) {
return $(elem).val();
}).get().join(",");
layer.confirm('【警告】是否确认此操作', {
btn: ['确认','取消'],
title:false
}, function(index) {
if (!text) {
layer.msg("<em style='color:white'>" + '请选择后再进行操作' + "</em>");
return;
}
$.ajax({
url: "{:U('AmericaIpForbit/operateIp')}",
type: "get",
data: {id: text,status:1},
dataType: 'json',
success: function (data) {
if (data.code == 0) {
layer.msg("<em style='color:white'>" + '批量不限制失败' + "</em>");
} else {
layer.msg("<em style='color:white'>" + '批量不限制成功' + "</em>")
setTimeout(function(){
window.location.reload();
},1500);
}
}
});
});
});
$('#delete').click(function () {
var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) {
return $(elem).val();
}).get().join(",");
layer.confirm('【警告】撤销后将不可回退,如需继续请点击确认', {
btn: ['确认','取消'],
title:false
}, function(index) {
if (!text) {
layer.msg("<em style='color:white'>" + '请选择后再进行操作' + "</em>");
return;
}
$.ajax({
url: "{:U('AmericaIpForbit/del')}",
type: "get",
data: {id: text},
dataType: 'json',
success: function (data) {
if (data.code == 0) {
layer.msg("<em style='color:white'>" + '批量删除失败' + "</em>");
} else {
layer.msg("<em style='color:white'>" + '批量删除成功' + "</em>")
setTimeout(function(){
window.location.reload();
},1500);
}
}
});
});
});
$('#add').click(function () {
});
function limit(id,status) {
layer.confirm('【警告】是否确认此操作', {
btn: ['确认','取消'],
title:false
}, function(index) {
$.ajax({
url: "{:U('AmericaIpForbit/operateIp')}",
type: "get",
data: {id: id,status: status},
dataType: 'json',
success: function (data) {
if (data.code == 0) {
layer.msg("<em style='color:white'>" + '操作失败' + "</em>");
} else {
layer.msg("<em style='color:white'>" + '操作成功' + "</em>")
setTimeout(function(){
window.location.reload();
},1500);
}
}
});
});
}
function del(id) {
layer.confirm('【警告】撤销后将不可回退,如需继续请点击确认', {
btn: ['确认','取消'],
title:false
}, function(index) {
$.ajax({
url: "{:U('AmericaIpForbit/del')}",
type: "get",
data: {id: id},
dataType: 'json',
success: function (data) {
if (data.code == 0) {
layer.msg("<em style='color:white'>" + '操作失败' + "</em>");
} else {
layer.msg("<em style='color:white'>" + '操作成功' + "</em>")
setTimeout(function(){
window.location.reload();
},1500);
}
}
});
});
}
function setAppleInteriorBuyStatus(status) {
layer.confirm('【警告】是否确认打开全游戏苹果内购支付成功通知', {
btn: ['确认','取消'],
area: ['380px','120px'],
title: false
}, function(index) {
$.ajax({
url: "{:U('AmericaIpForbit/setAppleInteriorBuyStatus')}",
type: "get",
data: {status: status},
dataType: 'json',
success: function (data) {
if (data.code == 0) {
layer.msg("<em style='color:white'>" + '操作失败' + "</em>");
} else {
layer.msg("<em style='color:white'>" + '操作成功' + "</em>")
setTimeout(function(){
window.location.reload();
},1500);
}
}
});
});
}
</script>
</block>

@ -1469,6 +1469,21 @@ ALTER TABLE `tab_spend`
ADD INDEX `pay_channel`(`pay_way`, `pay_status`, `game_id`) USING BTREE,
ADD INDEX `pay_channel_type`(`pay_status`, `pay_way`) USING BTREE;
-- 2020-03-16 zyx 添加ip限制白名单表内购tool表状态配置列
INSERT INTO `tab_tool`(`name`, `title`, `config`, `template`, `type`, `status`, `create_time`) VALUES ('apple_interior_buy', '苹果内购通知开启', NULL, NULL, 1, 0, 1584345308);
CREATE TABLE `tab_forbit_ip` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NULL DEFAULT 0 COMMENT '用户id',
`user_account` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '用户账号',
`area` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '区域',
`status` tinyint(2) NULL DEFAULT 1 COMMENT '状态 1:不限制 0:限制',
`admin_id` int(11) NULL DEFAULT 1 COMMENT '管理员账号id',
`admin_account` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '管理员账号',
`create_time` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '创建时间',
`remarks` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 30 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
-- 为游戏统计新增spend索引 chenzhi 2020/03/11
ALTER TABLE `tab_spend`
ADD INDEX `game_time`(`game_id`,`pay_time`) USING BTREE;
@ -1479,5 +1494,5 @@ ADD INDEX `promote_time`(`promote_id`,`pay_time`) USING BTREE;
-- liaojinling 用户重复标识
ALTER TABLE `tab_user`
ADD INDEX `index_device_ip` (`device_number`, `last_login_ip`) USING BTREE ;
ALTER TABLE `tab_user`
ALTER TABLE `tab_user`
ADD COLUMN `is_repeat` tinyint(1) not null default 0 comment '是否重复用户[设备/IP]';

Loading…
Cancel
Save