新增游戏区服开服预告

master
chenzhi 5 years ago
parent 914c9a5cf8
commit 25cb177aea

@ -0,0 +1,260 @@
<?php
namespace Admin\Controller;
use User\Api\UserApi as UserApi;
use Admin\Event\BatchImportExcelEvent;
/**
* 后台首页控制器
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
class ServerNoticeController extends ThinkController {
const model_name = 'ServerNotice';
public function lists(){
if(isset($_REQUEST['show_status'])){
$extend['show_status']=$_REQUEST['show_status'];
unset($_REQUEST['show_status']);
}
if(isset($_REQUEST['server_version'])){
$extend['server_version']=$_REQUEST['server_version'];
unset($_REQUEST['server_version']);
}
if(isset($_REQUEST['timestart']) && isset($_REQUEST['timeend'])){
$extend['start_time'] = array('BETWEEN',array(strtotime($_REQUEST['timestart']),strtotime($_REQUEST['timeend'])+24*60*60-1));
unset($_REQUEST['timestart']);unset($_REQUEST['timeend']);
}elseif(isset($_REQUEST['timestart'])){
$extend['start_time']=array('EGT',strtotime($_REQUEST['timestart']));
}elseif(isset($_REQUEST['timeend'])){
$extend['start_time']=array('ELT',strtotime($_REQUEST['timeend']));
}
if(isset($_REQUEST['start']) && isset($_REQUEST['end'])){
$extend['start_time'] = array('BETWEEN',array(strtotime($_REQUEST['start']),strtotime($_REQUEST['end'])+24*60*60-1));
unset($_REQUEST['start']);unset($_REQUEST['end']);
}
if(isset($_REQUEST['game_name'])){
if($_REQUEST['game_name']=='全部'){
unset($_REQUEST['game_name']);
}else{
$extend['game_name']=['like', "{$_REQUEST['game_name']}%"];
unset($_REQUEST['game_name']);
}
}
if(isset($_REQUEST['server_name'])){
$extend['server_name']=$_REQUEST['server_name'];
unset($_REQUEST['server_name']);
}
if(empty($_GET['type']) || $_GET['type'] == 1) {
$extend['developers'] = array('EQ',0);
}else{
$extend['developers'] = array('NEQ',0);
$this->assign('show_status',1);
}
$this->m_title = '区服预告';
$this->assign('commonset',M('Kuaijieicon')->where(['url'=>'ServerNotice/lists','status'=>1])->find());
parent::order_lists(self::model_name,$_GET["p"],$extend);
}
public function add(){
$model = M('Model')->getByName(self::model_name);
$this->m_title = '区服预告';
$this->assign('commonset',M('Kuaijieicon')->where(['url'=>'ServerNotice/lists','status'=>1])->find());
parent::add($model["id"]);
}
public function edit($id=0){
$id || $this->error('请选择要编辑的用户!');
$this->m_title = '区服预告';
$this->assign('commonset',M('Kuaijieicon')->where(['url'=>'ServerNotice/lists','status'=>1])->find());
$model = M('Model')->getByName(self::model_name); /*通过Model名称获取Model完整信息*/
parent::edit($model['id'],$id);
}
public function del($model = null, $ids=null){
$model = M('Model')->getByName(self::model_name); /*通过Model名称获取Model完整信息*/
parent::del($model["id"],$ids);
}
/**
* 批量导入游戏区服区服
*/
public function batch(){
if(IS_POST){
switch($_POST['batchType']){
case 1:
$this->batchExcel();
break;
case 2:
$this->batchImport();
break;
}
}else{
$this->meta_title = '新增区服管理';
$this->m_title = '区服预告';
$this->assign('commonset',M('Kuaijieicon')->where(['url'=>'Server/lists','status'=>1])->find());
$this->display();
}
}
//批量新增
public function batchImport(){
$server_str = str_replace(array("\r\n", "\r", "\n"), "", I('server'));
$server_ar1 = explode(';',$server_str);
array_pop($server_ar1);
$num = count($server_ar1);
if ($num<1) {$this->error('请添加区服数据');}
if($num > 100 ){
$this->error('区服数量过多最多只允许添加100个');
}
$verify = ['game_id','server_name','time'];
$server_model = D('ServerNotice');
foreach ($server_ar1 as $key=>$value) {
$arr = explode(',',$value);
foreach ($arr as $k=>$v) {
$att = explode('=',$v);
if(in_array($att[0],$verify)){
switch ($att[0]){
case 'time' :
$patten = '/^\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])(\s+(0[0-9]|1[0-9]|2[0-3])\:(0[0-9]|[1-5][0-9])(\:(0[0-9]|[1-5][0-9]))?)$/';
if(!strtotime($att[1]) || !preg_match($patten,$att[1])){
$this->error('开服时间不正确');
}else{
$time = $server[$key]['start_time'] = strtotime($att[1]);
}
break;
case 'game_id':
$game = M('Game','tab_')->where('developers = 0')->find($att[1]);
if(empty($game)){
$this->error('game_id='.$att[1].' 数据错误,请重新上传');
}
$server[$key]['game_id'] = $att[1];
break;
default:
$server[$key][$att[0]] = $att[1];
}
}
}
$server[$key]['game_name'] = get_game_name($server[$key]['game_id']);
$server[$key]['server_num'] = 0;
$server[$key]['recommend_status'] = 1;
$server[$key]['show_status'] = 1;
$server[$key]['stop_status'] = 0;
$server[$key]['server_status'] = 0;
$server[$key]['parent_id'] = 0;
$server[$key]['create_time'] = time();
$version = get_sdk_version($server[$key]['game_id']);
$server[$key]['server_version'] = empty($version) ? 0 : $version;
if(!$server_model->create($server[$key])){
switch ($server_model->getError()) {
case '区服名称不能为空':
$msg = '游戏ID'.$server[$key]['game_id'].' <'.$server[$key]['server_name'].'> 区服名称不能为空';
break;
case '区服名称不能超过30个字符':
$msg = '游戏ID'.$server[$key]['game_id'].' <'.$server[$key]['server_name'].'> 区服名称不能超过30个字符';
break;
case '同游戏下区服名称已存在':
$msg = '游戏ID'.$server[$key]['game_id'].' <'.$server[$key]['server_name'].'> 区服名称重复';
break;
case '开始时间不能为空':
$msg = '游戏ID'.$server[$key]['game_id'].' <'.$server[$key]['server_name'].'> 开始时间不能为空';
break;
default:
$msg = "批量添加失败";
break;
}
$this->error($msg);
}
}
$server = $this->array_unset_tt($server);
$res = M('ServerNotice','tab_')->addAll($server);
if($res !== false){
$this->success('添加成功!',U('ServerNotice/lists'));
}else{
$this->error('添加失败!'.M()->getError());
}
}
function array_unset_tt($arr){
//建立一个目标数组
$res = array();
foreach ($arr as $key => $value) {
//查看有没有重复项
if($res[$key-1]['game_id'] == $value['game_id'] && $res[$key-1]['server_name'] == $value['server_name']){
$this->error("游戏ID{$value['game_id']} <{$value['server_name']}> 游戏区服名称重复");
//有:销毁
//unset($arr[$key]);
}
else{
$res[$key] = $value;
}
}
return $res;
}
/**
* excel 批量导入游戏区服
*/
public function batchExcel(){
$excel = new BatchImportExcelEvent();
if (empty($_FILES['fileExcel'])) {$this->ajaxReturn(["status"=>0,"info"=>'请选择文件']);exit;}
$info = $excel->uploadExcel($_FILES['fileExcel']);
$data = [];
if(is_array($info)){
$filename = './Uploads/' . $info['savepath'] . $info['savename'];
$data = $excel->importExcel($filename);
if(is_array($data)){
$excel->serverDataInsert($data,U('ServerNotice/lists'),true);
}else{
$this->ajaxReturn(["status"=>0,"info"=>$data]);
}
}else{
$this->ajaxReturn(["status"=>0,"info"=>$info]);
}
}
/**
* 区服状态修改
* @author 鹿文学
*/
public function change_status($field = null,$value=null) {
$id = array_unique((array)I('ids', 0));
$id = is_array($id) ? implode(',', $id) : $id;
if (empty($id)) {
$this->error('请选择要操作的数据!');
}
$map['id'] = array('in', $id);
$servermodel = D(self::model_name);
$server = $servermodel->where($map)->find();
//开发者区服
if($server['developers'] > 0){
$save[$field] = $value;
$result = $servermodel->where($map)->save($save);
}else{
$result = $servermodel->where($map)->setField($field,$value);
}
$msg = "操作";
if($result !== false){
$this->success($msg.'成功');
}else{
$this->error($msg.'失败');
}
}
}

@ -102,9 +102,15 @@ class BatchImportExcelEvent extends Controller{
/**
* 插入区服数据到数据库
* isnotice 是否是区服预告
*/
public function serverDataInsert($serverData,$url=''){
$serverModel = new \Admin\Model\ServerModel();
public function serverDataInsert($serverData,$url='',$isnotice=false){
if($isnotice){
$serverModel = new \Admin\Model\ServerNoticeModel();
}else{
$serverModel = new \Admin\Model\ServerModel();
}
$sData = [];
$key = 0;
foreach($serverData as $server){

@ -0,0 +1,102 @@
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: huajie <banhuajie@163.com>
// +----------------------------------------------------------------------
namespace Admin\Model;
use Think\Model;
/**
* 文档基础模型
*/
class ServerNoticeModel extends Model{
/* 自动验证规则 */
protected $_validate = array(
array('game_id', '/^[1-9]\d*$/', '请选择游戏', self::MUST_VALIDATE, 'regex', self::MODEL_BOTH),
array('server_name', 'require', '区服名称不能为空', self::MUST_VALIDATE, 'regex', self::MODEL_BOTH),
array('server_name', '1,30', '区服名称不能超过30个字符', self::VALUE_VALIDATE, 'length', self::MODEL_BOTH),
array("server_name,game_id,id", 'checkServerName', '同游戏下区服名称已存在', self::MUST_VALIDATE, 'callback', self::MODEL_BOTH),
array('start_time', 'require', '开始时间不能为空', self::MUST_VALIDATE, 'regex', self::MODEL_BOTH),
);
/* 自动完成规则 */
protected $_auto = array(
array('create_time', 'getCreateTime', self::MODEL_INSERT,'callback'),
array('server_num', 0, self::MODEL_INSERT),
array('start_time', 'strtotime', self::MODEL_BOTH, 'function'),
array('parent_id', 0,self::MODEL_INSERT,'string'),
);
/**
* 构造函数
* @param string $name 模型名称
* @param string $tablePrefix 表前缀
* @param mixed $connection 数据库连接信息
*/
public function __construct($name = '', $tablePrefix = '', $connection = '') {
/* 设置默认的表前缀 */
$this->tablePrefix ='tab_';
/* 执行构造方法 */
parent::__construct($name, $tablePrefix, $connection);
}
/**
* 创建时间不写则取当前时间
* @return int 时间戳
* @author huajie <banhuajie@163.com>
*/
protected function getCreateTime(){
$create_time = I('post.create_time');
return $create_time?strtotime($create_time):NOW_TIME;
}
/**
* 生成不重复的name标识
* @author huajie <banhuajie@163.com>
*/
private function generateName(){
$str = 'abcdefghijklmnopqrstuvwxyz0123456789'; //源字符串
$min = 10;
$max = 39;
$name = false;
while (true){
$length = rand($min, $max); //生成的标识长度
$name = substr(str_shuffle(substr($str,0,26)), 0, 1); //第一个字母
$name .= substr(str_shuffle($str), 0, $length);
//检查是否已存在
$res = $this->getFieldByName($name, 'id');
if(!$res){
break;
}
}
return $name;
}
/**
*判断同游戏下区服名称是否存在
*/
public function checkServerName($args=null){
$map['game_id'] = $args['game_id'];
$map['server_name'] = $args['server_name'];
if(empty($args['id'])){
$data = $this->field('id')->where($map)->find();
return empty($data);
}else{
$data = $this->field('id')->where($map)->find();
return empty($data['id'])?true:$data['id'] == $args['id'] ? true:false;
}
}
}

@ -0,0 +1,203 @@
<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="__JS__/select2.min.js"></script>
<link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" />
<style>
.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;}
.tabcon1711 .select2-container--default .select2-selection--single{
font-size: 12px;
color: #555;
vertical-align: middle;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
background-color: #fff;
border: 1px solid #ccc;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
-webkit-transition: border linear .2s, box-shadow linear .2s;
-moz-transition: border linear .2s, box-shadow linear .2s;
-o-transition: border linear .2s, box-shadow linear .2s;
transition: border linear .2s, box-shadow linear .2s;height:30px;}
.tabcon1711 .select2-container--default .select2-selection--single .select2-selection__rendered {line-height: 30px;}
.tabcon1711 .select2-container--default .select2-selection--single .select2-selection__arrow {height:30px;}
.tabcon1711 .select2-container--default .select2-search--dropdown .select2-search__field {
height:26px;line-height:26px;font-size:12px;
}
.tabcon1711 .select2-results__option[aria-selected] {font-size:12px;}
</style>
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">新增区服</h3>
<p class="description_text">说明:此功能为单个新增游戏区服的功能</p>
</div>
<!-- 标签页导航 -->
<div class="tab-wrap">
<div class="tab-content tabcon1711">
<!-- 表单 -->
<form id="form" action="{:U('add?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"><i class="mustmark" style="margin-left:-7px">*</i>游戏名称:</td>
<td class="r">
<select id="game_id" name="game_id">
<option value="0" selected="">请选择游戏</option>
<volist name=':get_game_list(1)' id='vo'>
<option value="{$vo.id}" sdk_version="{$vo.sdk_version}">{$vo.game_name}</option>
</volist>
</select>
<input type="hidden" id="game_name" name="game_name" value="" />
</td>
</tr>
<tr>
<td class="l">运营平台</td>
<td class="r table_radio">
<span class="form_radio">
<volist name=":get_systems_list()" id="vo">
<gt name="key" value="0">
<label id="type{$key}">
<input type="radio" class="inp_radio js-typeradio" value="{$key}" name="server_version" disabled="true" > <span class="type{$key}">{$vo}</span>
</label>
</gt>
</volist></span>
<input type="hidden" id="server_version" name="server_version" value="">
</td>
</tr>
<tr>
<td class="l"><i class="mustmark" style="margin-left:-7px">*</i>区服名称:</td>
<td class="r" >
<input type="text" class="txt " name="server_name" value="">
</td>
</tr>
<tr>
<td class="l">显示状态:</td>
<td class="r table_radio">
<span class="form_radio">
<label>
<input type="radio" class="inp_radio" value="0" name="show_status"> 关闭
</label>
<label>
<input type="radio" class="inp_radio" value="1" name="show_status" checked="checked"> 开启
</label>
</span>
</td>
</tr>
<tr>
<td class="l"><i class="mustmark" style="margin-left:-7px">*</i>开服时间:</td>
<td class="r" >
<input type="text" class="txt time" name="start_time" value="">
</td>
</tr>
<tr>
<td class="l">区服描述:</td>
<td class="r">
<input type="text" class="txt " name="desride" value="">
</td>
</tr>
</tbody>
</table>
</div>
<input type="hidden" name="developers" value="0">
<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="Server/lists">
</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">
<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 type="text/javascript">
//导航高亮
highlight_subnav("{:U('ServerNotice/lists')}");
Think.setValue("game_id", {$Think.get.game_id|default = 0});
$('#submit').click(function(){
$('#form').submit();
});
$(function(){
$("#game_id").select2();
$("#game_name").val($("#game_id option:selected").text());
$('.date').datetimepicker({
format: 'yyyy-mm-dd',
language:"zh-CN",
minView:2,
autoclose:true
});
$('.time').datetimepicker({
language:"zh-CN",
hour: 13,
minute: 15
});
showTab();
});
$("#game_id").change(function(){
$("#game_name").val($("#game_id option:selected").text());
var ratio_type=$("#game_id").children('option:selected').attr('sdk_version');
$("input[type='radio'][name='server_version'][value='"+ratio_type+"']").prop("checked",true);
$('#server_version').val(ratio_type);
});
// $(".inp_radio").click(function(){
// if($("#game_id option:selected").val()==0){
// alert('请选择游戏');
// return false;
// }
// var ratio_type=$("#game_id").children('option:selected').attr('sdk_version');
// if(ratio_type == 1){
// var file_type="apk";
// }else if(ratio_type == 2){
// var file_type="ipa";
// }
// var str = location.href,game_id=$("#game_id option:selected").val();
// str = str.replace('.html','');
// str = str+'/game_id/'+game_id+'/ratio_type/'+ratio_type;
// window.location.href=str;
// });
</script>
</block>

@ -0,0 +1,168 @@
<extend name="Public/base" />
<block name="body">
<link rel="stylesheet" type="text/css" href="__CSS__/admin_table.css" media="all">
<style>.tabcon1711 textarea {width:400px;}</style>
<script type="text/javascript" src="__STATIC__/uploadify/jquery.uploadify.min.js"></script>
<script type="text/javascript" src="__STATIC__/jquery.form.js"></script>
<script type="text/javascript" src="__STATIC__/layer/layer.js"></script>
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">批量加服</h3>
<p class="description_text">说明:此功能为批量新增游戏区服的功能</p>
</div>
<!-- 标签页导航 -->
<div class="tab-wrap">
<div class="tab-content tabcon1711">
<!-- 表单 -->
<form id="form1" action="{:U('batch')}" method="post" class="form-horizontal" enctype="multipart/form-data">
<!-- 基础文档模型 -->
<div id="tab1" class="tab-pane in tab1 ">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="l noticeinfo">添加方式:</td>
<td class="r table_radio">
<span class="form_radio">
<label>
<input type="radio" class="inp_radio" value="1" name='excel' checked="checked">Excel导入
</label>
<label>
<input type="radio" class="inp_radio" value="2" name='excel'> 批量输入
</label>
</span>
</td>
</tr>
</tbody>
</table>
<table id="excel" border="0" cellspacing="0" cellpadding="0" >
<tbody>
<tr>
<td class="r"> Execl模板:</td>
<td><a href="/Uploads/excel/区服列表-游戏名称.xls">下载模板</a></td>
</tr>
<tr>
<td class="r">导入模板</td>
<td class="r"><input type="file" name="fileExcel" accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"></td>
</tr>
</tbody>
</table>
<table id="batch" border="0" cellspacing="0" cellpadding="0" style="display:none">
<tbody>
<tr>
<td class="r">批量加服按模板样式添加一行一个最多可同时添加100行用“;”隔开)</td>
</tr>
<tr>
<td class="r" >
<textarea name="server" class="txt_area" placeholder="">game_id=1,server_name=初出茅庐,time=2017-01-04 15:00:00;</textarea><br>
说明game_id游戏IDserver_name区服名称time开服时间
</td>
</tr>
</tbody>
</table>
</div>
<div class="form-item cf">
<input type="hidden" id="batchType" name="batchType" value="1">
<button class="submit_btn" id="submit" type="button" 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="Server/lists">
</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">
<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 type="text/javascript">
//导航高亮
highlight_subnav("{:U('ServerNotice/lists')}");
$(function(){
$('#submit').click(function(){
$('#form1').ajaxSubmit({
url:"{:U('batch')}",
type:'POST',
cache:false,
contentType:false,
processData:false,
mimeType: 'multipart/form-data',
dataType:'json',
//data:new FormData($("#form1")[0]),
success:function(data){
if (data.status == 1) {
layer.msg(data.info);
setTimeout(function() {
if (data.url) {
window.location.href = data.url;
} else {
window.location.reload();
}
},3000);
} else {
layer.msg(data.info);
}
},error:function(){
layer.msg('服务器故障,请稍候再试');
}
});
});
$("#game_name").val($("#game_id option:selected").text());
$('.date').datetimepicker({
format: 'yyyy-mm-dd',
language:"zh-CN",
minView:2,
autoclose:true
});
$('.time').datetimepicker({
language:"zh-CN",
hour: 13,
minute: 15
});
showTab();
});
/*获取游戏名称*/
$("#game_id").change(function() {
$("#game_name").val($("#game_id option:selected").text());
});
$("input[name='excel']").change(function(){
switch($(this).val()){
case "1":
$("#excel").show();
$("#batch").hide();
break;
case "2":
$("#excel").hide();
$("#batch").show();
break
}
$("#batchType").val($(this).val());
})
</script>
</block>

@ -0,0 +1,196 @@
<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="__JS__/select2.min.js"></script>
<link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" />
<style>
.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;}
.tabcon1711 .select2-container--default .select2-selection--single{
font-size: 12px;
color: #555;
vertical-align: middle;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
background-color: #fff;
border: 1px solid #ccc;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
-webkit-transition: border linear .2s, box-shadow linear .2s;
-moz-transition: border linear .2s, box-shadow linear .2s;
-o-transition: border linear .2s, box-shadow linear .2s;
transition: border linear .2s, box-shadow linear .2s;height:30px;}
.tabcon1711 .select2-container--default .select2-selection--single .select2-selection__rendered {line-height: 30px;}
.tabcon1711 .select2-container--default .select2-selection--single .select2-selection__arrow {height:30px;}
.tabcon1711 .select2-container--default .select2-search--dropdown .select2-search__field {
height:26px;line-height:26px;font-size:12px;
}
.tabcon1711 .select2-results__option[aria-selected] {font-size:12px;}
</style>
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">编辑区服</h3>
<p class="description_text">说明:此功能为编辑游戏区服的功能</p>
</div>
<!-- 标签页导航 -->
<div class="tab-wrap">
<div class="tab-content tabcon1711">
<!-- 表单 -->
<form id="form" action="{:U('edit?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"><i class="mustmark" style="margin-left:-7px">*</i>游戏名称:</td>
<td class="r" >
<select id="game_id" name="game_id">
<volist name=":get_game_list()" id="vo">
<option value="{$vo.id}" sdk_version="{$vo.sdk_version}">{$vo.game_name}</option>
</volist>
</select>
<input type="hidden" id="game_name" name="game_name" value="">
</td>
</tr>
<tr>
<td class="l">运营平台:</td>
<td class="r table_radio">
<span class="form_radio">
<volist name=":get_systems_list()" id="vo">
<eq name="data.server_version" value="$key">
<label class="server_version_name"><input type="radio" class="inp_radio" checked value="{$key}" name="server_version" > {$vo}</label>
</eq>
</volist></span>
</td>
</tr>
<tr>
<td class="l"><i class="mustmark" style="margin-left:-7px">*</i>区服名称:</td>
<td class="r" >
<input type="text" class="txt " name="server_name" value="{$data['server_name']}">
</td>
</tr>
<tr>
<td class="l">显示状态:</td>
<td class="r table_radio">
<span class="form_radio">
<if condition="$data['show_status'] eq 1">
<label>
<input type="radio" class="inp_radio" value="0" name="show_status"> 关闭
</label>
<label>
<input type="radio" class="inp_radio" value="1" name="show_status" checked="checked"> 开启
</label>
<else/>
<label>
<input type="radio" class="inp_radio" value="0" name="show_status" checked="checked"> 关闭
</label>
<label>
<input type="radio" class="inp_radio" value="1" name="show_status" > 开启
</label>
</if>
</span>
</td>
</tr>
<tr>
<td class="l"><i class="mustmark" style="margin-left:-7px">*</i>开服时间:</td>
<td class="r" >
<input type="text" class="txt time" name="start_time" value="{:time_format($data['start_time'],'Y-m-d H:i')}">
</td>
</tr>
<tr>
<td class="l">区服描述:</td>
<td class="r">
<input type="text" class="txt " name="desride" value="{$data['desride']}">
</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="Server/lists">
</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">
<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 type="text/javascript">
//导航高亮
highlight_subnav("{:U('ServerNotice/lists')}");
Think.setValue("game_id", {$data.game_id|default = 0});
$('#submit').click(function(){
$('#form').submit();
});
$(function(){
$("#game_id").select2();
$("#game_name").val($("#game_id option:selected").text());
$('.date').datetimepicker({
format: 'yyyy-mm-dd',
language:"zh-CN",
minView:2,
autoclose:true
});
$('.time').datetimepicker({
language:"zh-CN",
hour: 13,
minute: 15
});
showTab();
});
/*获取游戏名称*/
$("#game_id").change(function(){
var ratio_type=$("#game_id").children('option:selected').attr('sdk_version');
$("#game_name").val($("#game_id option:selected").text());
$("input[name='server_version']").val('ratio_type');
if(ratio_type==2){
$(".server_version_name").html('<input type="radio" class="inp_radio" checked value="2" name="server_version" > 苹果');
}else{
$(".server_version_name").html('<input type="radio" class="inp_radio" checked value="1" name="server_version" > 安卓');
}
});
</script>
</block>

@ -0,0 +1,354 @@
<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;}
</style>
<div class="cf main-place top_nav_list navtab_list">
<div class="fr">
<a <if condition="(I('type') eq 1) or (I('type') eq '') "> class="tabchose" </if> href="{:U('lists',array('type'=>1))}">官方区服</a>
<a <if condition="I('type') eq 2"> class="tabchose" </if> href="{:U('lists',array('type'=>2))}">开发者区服</a>
</div>
<h3 class="page_title">区服预告</h3>
<if condition="(I('type',1) eq 1) ">
<p class="description_text">说明:此功能为上传、更新、查看官方游戏区服预告的功能</p>
<else/>
<p class="description_text">说明:此功能为上传、更新、查看开发者游戏区服预告的功能</p>
</if>
</div>
<div class="cf top_nav_list">
<div class="fl button_list">
<div class="tools">
<empty name="show_status">
<a class=" " href="{:U('add?model='.$model['id'])}"><span class="button_icon button_icon1"></span>新增</a>
<a class=" " href="{:U('batch?model='.$model['id'])}"><span class="button_icon button_icon1"></span>批量添加</a>
</empty>
<a class=" ajax-post confirm " target-form="ids" url="{:U('del?model='.$model['id'])}"><span class="button_icon button_icon2"></span>删除</a>
</div>
</div>
<!-- 高级搜索 -->
<div class="jssearch fl cf search_list" >
<div class="input-list search-title-box">
<label>搜索:</label>
</div>
<notempty name="show_status">
<div class="input-list input-list-game search_label_rehab">
<select id="developers" name="developers" class="select_gallery" >
<option value="">开发者账号</option>
<volist name=":get_developers_list()" id="vo">
<option value="{$vo.id}">{$vo.account}</option>
</volist>
</select>
</div>
</notempty>
<div class="input-list input-list-game search_label_rehab">
<select id="server_version" name="server_version" class="select_gallery" >
<option value="">设备类型</option>
<option value="1">安卓</option>
<option value="2">苹果</option>
</select>
</div>
<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> -->
</select>
</div>
<div class="input-list input-list-server search_label_rehab">
<select id="server_name" name="server_name" class="select_gallery" style="width:120px;">
<option value="">区服名称</option>
</select>
</div>
<div class="input-list" >
<input type="text" id="time-start" name="timestart" class="" value="{:I('timestart')}" placeholder="开服开始时间" />
-
<div class="input-append date" id="datetimepicker" style="display:inline-block">
<input type="text" id="time-end" name="timeend" class="" value="{:I('timeend')}" placeholder="开服结束时间" />
<span class="add-on"><i class="icon-th"></i></span>
</div>
</div>
<div class="input-list search_item input-list-displaystatus">
<select name="show_status">
<option value="">显示状态</option>
<option value="1">已开启</option>
<option value="0">已关闭</option>
</select>
</div>
<input type="hidden" name="type" value="{$_GET['type']}">
<div class="input-list">
<a class="sch-btn" href="javascript:;" id="search" url="{:U('lists','model='.$model['name'] . '&row='.I('row'),false)}">搜索</a>
</div>
</div>
</div>
<!-- 数据列表 -->
<div class="data_list">
<empty name="show_status">
<div class="">
<table>
<!-- 表头 -->
<thead>
<tr>
<th>
<input class="check-all" type="checkbox">
</th>
<th>游戏名称</th>
<th>区服名称</th>
<th>运营平台</th>
<th>显示状态</th>
<th>开服时间</th>
<th>操作</th>
</tr>
</thead>
<!-- 列表 -->
<tbody>
<empty name ="list_data">
<td colspan="7" class="text-center">aOh! 暂时还没有内容!</td>
<else />
<volist name="list_data" id="data">
<tr>
<td><input class="ids" type="checkbox" value="{$data['id']}" name="ids[]"></td>
<td >{$data.game_name}</td>
<td >{$data.server_name}</td>
<td >{:get_systems_name($data['server_version'])}</td>
<td >
<div class="display_status">
<span class="display_butnbox">
<eq name='data.show_status' value='1'>
<a href="{:U('change_status',array('field'=>'show_status','value'=>0,'ids'=>$data['id']))}" class="ajax-get ">
已开启<!--开启-->
</a>
<else/>
<a href="{:U('change_status',array('field'=>'show_status','value'=>1,'ids'=>$data['id']))}" class="ajax-get " style="color:#ff0000">
已关闭<!--关闭-->
</a>
</eq>
</span>
</div>
</td>
<td >{:set_show_time($data['start_time'])}</td>
<td >
<a href="{:U('edit',array('model'=>$model['id'],'id'=>$data['id']))}">编辑</a>
<a class="ajax-get confirm " href="{:U('del',array('model'=>$model['id'],'ids'=>$data['id']))}">删除</a>
</td>
</tr>
</volist>
</empty>
</tbody>
</table>
</div>
<else/>
<div class="">
<table>
<!-- 表头 -->
<thead>
<tr>
<th>
<input class="check-all" type="checkbox">
</th>
<th>开发者账号</th>
<th>游戏名称</th>
<th>区服名称</th>
<th>运营平台</th>
<th>显示状态</th>
<th>开服时间</th>
</tr>
</thead>
<!-- 列表 -->
<tbody>
<empty name="list_data" >
<tr>
<td colspan="8" class="text-center"> aOh! 暂时还没有内容! </td>
</tr>
<else />
<volist name="list_data" id="data">
<tr>
<td><input class="ids" type="checkbox" value="{$data['id']}" name="ids[]"></td>
<td>{:get_developer_account($data['developers'])}</td>
<td>{$data.game_name}</td>
<td>{$data.server_name}</td>
<td>{:get_systems_name($data['server_version'])}</td>
<td>
<div class="display_status">
<span class="display_butnbox">
<eq name='data.show_status' value='1'>
<a href="{:U('change_status',array('field'=>'show_status','value'=>0,'ids'=>$data['id']))}" class="ajax-get ">
已开启<!--开启-->
</a>
<else/>
<a href="{:U('change_status',array('field'=>'show_status','value'=>1,'ids'=>$data['id']))}" class="ajax-get " style="color:#ff0000">
已关闭<!--关闭-->
</a>
</eq>
</span>
</div>
</td>
<td>{:set_show_time($data['start_time'])}</td>
</tr>
</volist>
</empty>
</tbody>
</table>
</div>
</empty>
</div>
<div class="page">
<a class="sch-btn" href="{:U('Export/server_list',array_merge(['xlsname'=>'区服管理_区服列表'.((I('type',1)==2)?'_开发者区服':'_官方区服')],I('get.')))}">导出</a>
{$_page|default=''}
</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="Server/lists">
</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 src="__STATIC__/layer/layer.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>
$(".select_gallery").select2();
</script>
<script type="text/javascript">
//导航高亮
highlight_subnav("{:U('ServerNotice/lists')}");
$(function(){
//搜索功能
$("#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;
}
var start = $("#time-start").val();
var end = $("#time-end").val();
if (start !='' && end != ''){
if (Date.parse(start) > Date.parse(end)){
layer.msg('开始时间必须小于等于结束时间');
return false;
}
}
window.location.href = url;
});
//回车自动提交
$('.jssearch').find('input').keyup(function(event){
if(event.keyCode===13){
$("#search").click();
}
});
$('#time-start').datetimepicker({
format: 'yyyy-mm-dd',
language:"zh-CN",
minView:2,
autoclose:true
});
$('#datetimepicker').datetimepicker({
format: 'yyyy-mm-dd',
language:"zh-CN",
minView:2,
autoclose:true,
pickerPosition:'bottom-left'
});
var game_name = "{:I('game_name')}";
$("#server_version").change(function(){
$.ajax({
url:"{:U('Ajax/getGameList')}",
type:"get",
data:{sdk_type:$("#server_version option:selected").val()},
dataType:'json',
success:function(response){
str = '<option value="">游戏名称</option>';
// $.each(response.data, function(index, item){
// console.log(item.id);
// str += '<option value="'+item.id+' '+(promote_id && item.id == promote_id?'selected':'')+'">'+item.nickname+'</option>';
// });
data = response.data;
for (var i in data){
str += "<option value='"+data[i].relation_game_name+"' "+(game_name && data[i].relation_game_name == game_name?'selected':'')+">"+data[i].relation_game_name+"</option>"
}
$("#game_name").empty();
$("#game_name").append(str);
$("#game_name").select2();
$("#game_name").change();
}
})
});
$("#server_version").change();
var game_server = "{:I('server_name')}";
$("#game_name").change(function(){
$.ajax({
url:"{:U('Ajax/getGmeServer')}",
type:"post",
data:{sdk_version:$("#server_version option:selected").val(), game_name:$("#game_name option:selected").val()},
dataType:'json',
success:function(data){
str = "<option value=''>请选择区服</option>";
for (var i in data){
str += "<option value='"+data[i].server_name+"' "+(game_server && data[i].server_name == game_server?'selected':'')+">"+data[i].server_name+"</option>"
}
$("#server_name").empty();
$("#server_name").append(str);
$("#server_name").select2();
}
})
});
})
</script>
</block>

@ -621,4 +621,31 @@ ALTER TABLE `tab_game_source` add COLUMN `is_new_sdk` tinyint(2) DEFAULT '0' COM
--1 2019-12-03 ---
ALTER TABLE tab_game MODIFY COLUMN `game_score` double(3,1) DEFAULT '0' COMMENT '游戏评分';
ALTER TABLE tab_game MODIFY COLUMN `game_score` double(3,1) DEFAULT '0' COMMENT '游戏评分';
-- chenzhi 2019-12-04
CREATE TABLE `tab_server_notice` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增',
`game_id` int(11) NOT NULL COMMENT '游戏id',
`game_name` varchar(30) NOT NULL COMMENT '游戏名称',
`server_name` varchar(30) NOT NULL COMMENT '区服名称',
`server_num` int(11) DEFAULT NULL COMMENT '对接区服id',
`recommend_status` tinyint(2) DEFAULT '1' COMMENT '推荐状态(0:否,1:是)',
`show_status` tinyint(2) DEFAULT '1' COMMENT '显示状态(0:否,1:是)',
`stop_status` tinyint(2) DEFAULT '0' COMMENT '是否停服(0:否,1:是)',
`server_status` tinyint(2) DEFAULT '0' COMMENT '区服状态(0:正常,1拥挤,2爆满)',
`icon` int(11) DEFAULT NULL COMMENT '区服图标',
`start_time` int(11) DEFAULT NULL COMMENT '开始时间',
`desride` varchar(300) DEFAULT NULL COMMENT '描述',
`prompt` varchar(300) DEFAULT NULL COMMENT '停服提示',
`parent_id` int(11) DEFAULT NULL COMMENT '父类id',
`create_time` int(11) DEFAULT NULL COMMENT '创建时间',
`server_version` tinyint(2) DEFAULT NULL COMMENT '运营平台 1and 2ios 0双平台',
`developers` int(11) DEFAULT '0' COMMENT '开发商',
`server_id` varchar(50) NOT NULL DEFAULT '' COMMENT '对接区服id',
PRIMARY KEY (`id`),
KEY `game_id` (`game_id`),
KEY `show_status` (`show_status`),
KEY `start_time` (`start_time`),
KEY `create_time` (`create_time`)
) ENGINE=InnoDB AUTO_INCREMENT=488 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='游戏区服预告表';
Loading…
Cancel
Save