Merge remote-tracking branch 'origin/dev' into dev_lww

master
liuweiwen 5 years ago
commit fb39008cb5

@ -319,7 +319,7 @@ class AutoPackController extends Think
$launchCountList = M('apply_launch', 'tab_')->field(['apply_id', 'count(*) count'])->where(['apply_id' => ['in', $applyIds]])->group('apply_id')->select();
$launchCountList = index_by_column('apply_id', $launchCountList);
$gameSources = M('game_source', 'tab_')->field(['id', 'file_name', 'source_version', 'file_type', 'bao_name', 'game_id'])->where(['game_id' => ['in', $gameIds]])->select();
$gameSources = M('game_source', 'tab_')->field(['id', 'file_name', 'source_version', 'file_type', 'bao_name', 'game_id', 'is_new_sdk'])->where(['game_id' => ['in', $gameIds]])->select();
$gameSources = index_by_column('game_id', $gameSources);
$gameSourceService = new GameSourceService();

@ -102,15 +102,21 @@ class ExportController extends Controller
break;
case 2:
$xlsName = $xlsName?$xlsName:"渠道注册";
// $xlsCell = array(
// array('account', "玩家账号"),
// array('fgame_name', "注册游戏"),
// array('promote_account', L('Subordinate_channel')),
// array('register_time', L('Registration_time'), 'time_format', '*'),
// array('register_ip', L('Register_iP')),
// array('parent_id', "上级推广员"),
// array('ba_id', '商务专员'),
// );
$xlsCell = array(
array('account', "玩家账号"),
array('fgame_name', "注册游戏"),
array('promote_account', L('Subordinate_channel')),
array('register_time', L('Registration_time'), 'time_format', '*'),
array('register_ip', L('Register_iP')),
array('parent_id', "上级推广员"),
array('ba_id', '商务专员', 'get_business_affairs_account', '*'),
"玩家账号", "注册游戏", L('Subordinate_channel'), L('Registration_time'), L('Register_iP'),
"上级推广员", '商务专员',
);
if (isset($_REQUEST['game_name'])) {
if ($_REQUEST['game_name'] == L('All')) {
unset($_REQUEST['game_name']);
@ -121,16 +127,41 @@ class ExportController extends Controller
}
$map['tab_user.promote_id'] = array("neq", 0);
if (isset($_REQUEST['promote_name'])) {
if ($_REQUEST['promote_name'] == L('All')) {
if ($_REQUEST['promote_name']=='全部') {
unset($_REQUEST['promote_name']);
} else if ($_REQUEST['promote_name'] == "官方渠道") {
$map['tab_user.promote_id'] = array("elt", 0);
} elseif ($_REQUEST['promote_name']=='自然注册') {
$map['tab_user.promote_id']=array("elt",0);
unset($_REQUEST['promote_name']);
} else {
$map['tab_user.promote_id'] = get_promote_id($_REQUEST['promote_name']);
$promoteid = get_promote_id($_REQUEST['promote_name']);
$map['tab_user.promote_id']=array('eq',get_promote_id($_REQUEST['promote_name']));
unset($_REQUEST['promote_name']);
if (isset($_REQUEST['parent_id'])) {
$parent_id = get_promote_id($_REQUEST['parent_id']);
if ($promoteid == $parent_id) {
$map['tab_user.promote_id'] = $promoteid;
} else {
$parent_id = get_promote_id($_REQUEST['parent_id']);
}
} else {
$map['tab_user.promote_id'] = $promoteid;
}
}
} else {
if (isset($_REQUEST['parent_id'])) {
$parent_id = get_promote_id($_REQUEST['parent_id']);
$pro = M('promote', 'tab_')->field('id,account')->where("chain like '%/{$parent_id}/%'")->select();
$pro_ids = array_column($pro, 'id');
$pro_ids[] = get_promote_id($_REQUEST['parent_id']);
if (!empty($pro_ids)) {
$map['tab_user.promote_id'] = ['in',$pro_ids];
} else {
$map['tab_user.promote_id'] = array('eq',-1);
}
}
}
if (isset($_REQUEST['is_check']) && $_REQUEST['is_check'] != L('All')) {
$map['is_check'] = check_status($_REQUEST['is_check']);
unset($_REQUEST['is_check']);
@ -172,7 +203,8 @@ class ExportController extends Controller
'promote_account',
'tab_user.parent_name',
'is_check',
'tab_promote.ba_id'
'tab_promote.ba_id',
"REPLACE(substring_index(tab_promote.chain, '/', 2),'/','') as top_promote"
),
'key' => array('tab_user.account', 'tab_game.fgame_name'),
'map' => $map,
@ -180,8 +212,21 @@ class ExportController extends Controller
'title' => "渠道注册",
'template_list' => 'ch_reg_list',
);
$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流中
$name = $model['m_name'];
$xlsData = M($name, "tab_")
$xlsData = M($name, "tab_",'union_table')
->field($model['fields'])
->join($model['join'])
->join($model['joins'])
@ -189,10 +234,65 @@ class ExportController extends Controller
->where($model['map'])
->order($model['order'])
->group($model['group'])
->select();
foreach ($xlsData as $key => &$value) {
$xlsData[$key]['parent_id'] = get_top_promote($value['promote_id'], $value['parent_id']);
->select(false);
$accessNum = M()->table("({$xlsData}) as a")
->field("a.id,count(a.account) as count")
->join("left join tab_promote ON a.top_promote = tab_promote.id")
->join("left join tab_business_affairs ON tab_business_affairs.id=a.ba_id")
->order("id desc")
->find();
$accessNum =$accessNum['count'];
$perSize = 2000;//每次查询的条数
$pages = ceil($accessNum / $perSize);
$lastId = 0;
// $xlsCell = array(
// array('account', "玩家账号"),
// array('fgame_name', "注册游戏"),
// array('promote_account', L('Subordinate_channel')),
// array('register_time', L('Registration_time'), 'time_format', '*'),
// array('register_ip', L('Register_iP')),
// array('parent_id', "上级推广员"),
// array('ba_id', '商务专员'),
// );
for($i = 1; $i <= $pages; $i++) {
$xlsData = M($name, "tab_",'union_table')
->field($model['fields'])
->join($model['join'])
->join($model['joins'])
->join($model['joinss'])
->where($model['map'])
->limit(($i-1)*$perSize ,$perSize)
->order($model['order'])
->group($model['group'])
->select(false);
$xlsData = M()->table("({$xlsData}) as a")
->field("a.account,a.fgame_name,a.promote_account,a.register_time,a.register_ip,tab_promote.account as parent_id,tab_business_affairs.account as ba_id")
->join("left join tab_promote ON a.top_promote = tab_promote.id")
->join("left join tab_business_affairs ON tab_business_affairs.id=a.ba_id")
->order("a.id desc")
->select();
foreach($xlsData as $value) {
if (!$value['ba_id']) {
$value['ba_id'] = "暂无";
}
$value['register_time'] = date("Y-m-d H:i:s",$value['register_time']);
mb_convert_variables('GBK', 'UTF-8', $value);
fputcsv($fp, $value);
$lastId = $value['id'];
}
unset($xlsData);//释放变量的内存
//刷新输出缓冲到浏览器
ob_flush();
flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
}
fclose($fp);
exit();
break;
case 3:
if($_REQUEST['type']==2){
@ -922,28 +1022,76 @@ class ExportController extends Controller
} else {
$total = sprintf("%.2f", $total);
}
$xlsData = D('Spend')
->field('pay_order_number,pay_time,user_account,game_name,promote_account,spend_ip,pay_amount,pay_amount,pay_status,pay_game_status,pay_way,server_name,game_player_name,cost')
$xlsCell = array(
"支付订单号","CP订单号", "充值时间", "玩家账号", "游戏名称", L('Subordinate_channel'), "充值ip","区服ID", "游戏区服",
"角色ID","角色名称", "订单金额", "实付金额", "充值方式", L('Order_status'), "游戏通知状态", "消费"."{$total}"
);
$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 = D('Spend')
->field('pay_order_number,pay_time,user_account,game_name,promote_account,spend_ip,server_name,game_player_id,game_player_name,cost,pay_amount,pay_way,pay_status,pay_game_status')
->where($map)
->join($tab_promote_join)
->order('pay_time DESC')
->select();
$xlsCell = array(
array('pay_order_number', "订单号"),
array('pay_time', "充值时间", 'time_format', '*'),
array('user_account', "玩家账号"),
array('game_name', "游戏名称"),
array('promote_account', L('Subordinate_channel')),
array('spend_ip', "充值ip"),
array('server_name', "游戏区服"),
array('game_player_name', "角色名称"),
array('cost', "订单金额"),
array('pay_amount', "实付金额"),
array('pay_way', "充值方式", 'get_pay_way', '*'),
array('pay_status', L('Order_status'), 'get_info_status', '*', '9'),
array('pay_game_status', "游戏通知状态", 'get_info_status', '*', '14'),
array('', "消费"."{$total}")
);
->count();
$perSize = 10000;//每次查询的条数
$pages = ceil($accessNum / $perSize);
// var_dump($count);die();
for($i = 1; $i <= $pages; $i++) {
$xlsData = D('Spend')
->field('pay_order_number,extend,pay_time,user_account,game_name,promote_account,spend_ip,server_id,server_name,game_player_id,game_player_name,cost,pay_amount,pay_way,pay_status,pay_game_status')
->where($map)
->limit(($i-1)*$perSize ,$perSize)
->join($tab_promote_join)
->order('pay_time DESC')
->select();
foreach($xlsData as $value) {
$value['pay_time'] = date('Y-m-d H:i:s',$value['pay_time']);
$value['pay_way'] = get_pay_way($value['pay_way']);
$value['pay_status'] = get_info_status($value['pay_status'],9);
$value['pay_game_status'] = get_info_status($value['pay_game_status'],14);
mb_convert_variables('GBK', 'UTF-8', $value);
fputcsv($fp, $value);
}
unset($xlsData);//释放变量的内存
//刷新输出缓冲到浏览器
ob_flush();
flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
}
fclose($fp);
exit();
// $xlsCell = array(
// array('pay_order_number', "订单号"),
// array('pay_time', "充值时间", 'time_format', '*'),
// array('user_account', "玩家账号"),
// array('game_name', "游戏名称"),
// array('promote_account', L('Subordinate_channel')),
// array('spend_ip', "充值ip"),
// array('server_name', "游戏区服"),
// array('game_player_name', "角色名称"),
// array('cost', "订单金额"),
// array('pay_amount', "实付金额"),
// array('pay_way', "充值方式", 'get_pay_way', '*'),
// array('pay_status', L('Order_status'), 'get_info_status', '*', '9'),
// array('pay_game_status', "游戏通知状态", 'get_info_status', '*', '14'),
// array('', "消费"."{$total}")
// );
break;
case 8:
$xlsName = $xlsName?$xlsName:L('Platform_currency_recharge');
@ -1132,20 +1280,23 @@ class ExportController extends Controller
break;
case 11:
$xlsName = $xlsName?$xlsName:"礼包领取";
// $xlsCell = array(
// array('user_account', "玩家账号"),
// array('game_name', "游戏名称"),
// array('gift_name', '礼包名称'),
// array('novice', '礼包卡号'),
// array('gift_id', '运营平台', 'get_operation_platform', '*', 'giftbag'),
// array('create_time', '领取时间', 'time_format', '*'),
// );
$xlsCell = array(
array('user_account', "玩家账号"),
array('game_name', "游戏名称"),
array('gift_name', '礼包名称'),
array('novice', '礼包卡号'),
array('gift_id', '运营平台', 'get_operation_platform', '*', 'giftbag'),
array('create_time', '领取时间', 'time_format', '*'),
"玩家账号", "游戏名称", '礼包名称', '礼包卡号', '运营平台', '领取时间',
);
if (isset($_REQUEST['game_name'])) {
$extend['game_name'] = trim($_REQUEST['game_name']);
$extend['tab_gift_record.game_name'] = trim($_REQUEST['game_name']);
unset($_REQUEST['game_name']);
}
if (isset($_REQUEST['user_account'])) {
$extend['user_account'] = trim($_REQUEST['user_account']);
$extend['tab_gift_record.user_account'] = trim($_REQUEST['user_account']);
unset($_REQUEST['user_account']);
}
if (isset($_REQUEST['sdk_version'])) {
@ -1155,14 +1306,70 @@ class ExportController extends Controller
$map['sdk_version'] = $_REQUEST['sdk_version'];
$game_ids = M('game', 'tab_')->field('id')->where($map)->select();
$game_ids = array_column($game_ids, 'id');
$extend['sdk_version'] = ['in', $game_ids];
$extend['tab_gift_record.game_id'] = ['in', $game_ids];
unset($_REQUEST['sdk_version']);
}
}
$xlsData = M('gift_record', 'tab_')
// var_dump($extend);die();
$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('gift_record', 'tab_')
->field("user_account,game_name,gift_name,novice,gift_id,FROM_UNIXTIME(create_time) as create_time")
->where($extend)
->order("id DESC")
->select();
->count();
$perSize = 5000;//每次查询的条数
$pages = ceil($accessNum / $perSize);
// var_dump($count);die();
for($i = 1; $i <= $pages; $i++) {
$xlsData = M('gift_record', 'tab_')
->field("tab_gift_record.user_account,tab_gift_record.game_name,tab_gift_record.gift_name,tab_gift_record.novice,giftbag_version,FROM_UNIXTIME(tab_gift_record.create_time) as create_time")
->join("left join tab_giftbag on tab_gift_record.gift_id = tab_giftbag.id")
->where($extend)
->limit(($i-1)*$perSize ,$perSize)
->order("tab_gift_record.id DESC")
->select();
foreach($xlsData as $value) {
if($value['giftbag_version']==0){
$value['giftbag_version']= '双平台';
}elseif($value['giftbag_version']==1){
$value['giftbag_version']= "安卓";
}elseif($value['giftbag_version']==2){
$value['giftbag_version']= "苹果";
} else {
$value['giftbag_version']= "";
}
// $value['gift_id'] = get_operation_platform($value['gift_id'],'giftbag');
mb_convert_variables('GBK', 'UTF-8', $value);
fputcsv($fp, $value);
}
unset($xlsData);//释放变量的内存
//刷新输出缓冲到浏览器
ob_flush();
flush();//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
}
fclose($fp);
exit();
break;
case 12:
get_info_status();
@ -4908,11 +5115,12 @@ if ($key == 'model'){
}
$map['id']=array('in',$zid);
}
$map['level'] = I('promote_level');
if (I("promote_level")) {
$map['level'] = I("promote_level");
}
if(I('oa_associated',-1) != -1) {
$map['oa_associated'] = I('oa_associated');
}
}

@ -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.'失败');
}
}
}

@ -114,6 +114,7 @@ class TimingController extends AdminController {
}
public function caculateTodayDevice() {
$start = strtotime(date("Ymd",time()));

@ -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){

@ -96,7 +96,6 @@ class SourceEvent extends Controller
}
}
$data['source_version'] = $game_source['source_version'] + 1;
$version = '';
$packageName = '';
if ($data['file_type'] == 1) {

@ -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;
}
}
}

@ -91,6 +91,14 @@
<input type="hidden" id="file_type" name="file_type" value="" />
</td>
</tr>
<tr id="is-new-sdk" style="display: none;">
<td class="l">是否新包</td>
<td class="r table_radio">
<span class="form_radio">
<label><input type="radio" class="inp_radio" checked value="1" name="is_new_sdk" ></label>
<label><input type="radio" class="inp_radio" checked value="0" name="is_new_sdk" ></label>
</td>
</tr>
<tr class="picbox">
<td class="l"><i class="mustmark" style="margin-left:-7px">*</i>上传原包</td>
@ -420,8 +428,10 @@ $("#game_id").change(function(){
$("#game_name").val($("#game_id option:selected").text());
$("#file_type").val(type);
if (type == 2){
$('#is-new-sdk').show();
$('#apply_bz').show();
}else{
$('#is-new-sdk').hide();
$('#apply_bz').hide();
}
//if(type == 1){$('.pack_name_class').show();}else{$('.pack_name_class').hide();}

@ -78,7 +78,16 @@
</volist></span>
</td>
</tr>
<?php if($data['file_type'] == 2):?>
<tr>
<td class="l">是否新包</td>
<td class="r table_radio">
<span class="form_radio">
<label><input type="radio" value="1" name="is_new_sdk" <?php if($data['is_new_sdk']==='1'):?>checked<?php endif;?>> 是</label>
<label><input type="radio" value="0" name="is_new_sdk" <?php if($data['is_new_sdk']==='0'):?>checked<?php endif;?>> 否</label>
</td>
</tr>
<?php endif;?>
<tr>
<td class="l">上传原包</td>
<td class="r" colspan='1'>

@ -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>

@ -92,7 +92,8 @@ class GameSourceService {
return false;
}
if (self::IS_FIXED_IOS13 && $game['sdk_version'] == 2) {
$isNewSdk = (isset($gameSource['is_new_sdk']) && $gameSource['is_new_sdk'] == 1);
if ($isNewSdk && $game['sdk_version'] == 2) {
$channelFolder = $this->getChannelConfigFolder($zip, $packData);
return $this->packChannelFolder($zip, $channelFolder);
} else {

@ -1639,7 +1639,7 @@ class DownloadController extends BaseController {
$map["apply_time"] = ["between",[strtotime($begtime1),strtotime($endtime1)]];
}
if(!empty($begtime) && !empty($endtime)) {
$map["apply_time"] = ["between",[strtotime($begtime),strtotime($endtime) + 3600 * 24 -1]];
$map["apply_time"] = ["between",[strtotime($begtime),strtotime($endtime) + 3600 * 24]];
}
$serverField = '';
$serverJoin = '';
@ -1760,26 +1760,59 @@ class DownloadController extends BaseController {
public function registerExcelInfo($id,$map) {
$xlsName = "注册明细";
$xlsCell = array(
array('account','玩家账号'),
array('promote_account','推广账号'),
array('device_number','设备IMIE/IDFA'),
array('register_time','注册时间'),
array('register_ip','注册ip'),
array('login_time','登陆时间'),
array('login_ip','登陆ip')
'玩家账号',
'推广账号',
'设备IMIE/IDFA',
'注册时间',
'注册ip',
'登陆时间',
'登陆ip'
);
$model = M('user','tab_');
$data = $model->field('account,device_number,promote_account,register_time,register_ip,login_time,login_ip')->where($map)->order('tab_user.id desc')->select();
$xlsData = [];
foreach ($data as $key1 => $value1) {
$value1['register_time'] = date("Y-m-d H:i:s",$value1['register_time']);
$value1['login_time'] = date("Y-m-d H:i:s",$value1['login_time']);
$value1['account'] = $this->encryption($value1['account']);
$value1['device_number'] = $this->encryption($value1['device_number']);
$xlsData[] = $value1;
$data1 = $model->field('account')->where($map)->order('tab_user.id desc')->select();
$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('gb2312', 'UTF-8', $xlsCell);
fputcsv($fp, $xlsCell);//将数据格式化为CSV格式并写入到output流中
$accessNum = '100000';//从数据库获取总量,假设是十万
$accessNum = count($data1)?:0 ;
$perSize = 5000;//每次查询的条数
$pages = ceil($accessNum / $perSize);
for($i = 1; $i <= $pages; $i++) {
$model = M('user','tab_');
$data = $model
->field('account,device_number,promote_account,register_time,register_ip,login_time,login_ip')
->where($map)
->limit(($i-1)*$perSize ,$perSize)
->order('tab_user.id desc')
->select();
foreach($data as $value1) {
$csvData['account'] = $this->encryption($value1['account']);
$csvData['promote_account'] = $value1['promote_account'];
$csvData['device_number'] = $this->encryption($value1['device_number']);
$csvData['register_time'] = date("Y-m-d H:i:s",$value1['register_time']);
$csvData['register_ip'] = $value1['register_ip'];
$csvData['login_time'] = date("Y-m-d H:i:s",$value1['login_time']);
$csvData['login_ip'] = $value1['login_ip'];
mb_convert_variables('GBK', 'UTF-8', $csvData);
fputcsv($fp, $csvData);
}
unset($csvData);
ob_flush();
flush();
}
$this->exportExcel($xlsName, $xlsCell, $xlsData,$id);
fclose($fp);
$this->backSuccessExport($id);
}
//玩家角色excel信息
@ -1838,12 +1871,12 @@ class DownloadController extends BaseController {
$begTime = strtotime($initBegTime);
$endTime = strtotime($initEndTime);
$params['begin_time'] = $begTime;
$params['end_time'] = $endTime +3600 * 24 -1;
$params['end_time'] = $endTime -1;
if(!empty($map['apply_time'][1])) {
$begTime = $map['apply_time'][1][0];
$endTime = $map['apply_time'][1][1];
$params['begin_time'] = $begTime;
$params['end_time'] = $endTime + 3600 * 24 -1;
$params['end_time'] = $endTime -1;
unset($map['apply_time']);
}
if(!empty($map['tab_server.server_id'])) {
@ -2736,7 +2769,20 @@ class DownloadController extends BaseController {
$spendGenericList = $spendRepository->getPayAmountGroupByDayAndType($params);//通用币充值
$params['pay_way'] = -1;
$spendBindingList = $spendRepository->getPayAmountGroupByDayAndType($params);//绑定币充值
$allData['role_num'] = 0;
$allData['user_num'] = 0;
$allData['new_user_num'] = 0;
$allData['new_device_num'] = 0;
$allData['new_ip_num'] = 0;
$allData['login_user_num'] = 0;
$allData['spend_user_num'] = 0;
$allData['spend_num'] = 0;
$allData['spend_all_amount'] = 0;
$allData['spend_cash'] = 0;
$allData['spend_generic'] = 0;
$allData['spend_binding'] = 0;
$allData['spend_discount'] = 0;
$allData['spend_voucher'] = 0;
foreach ($params['dayList'] as $day) {
$date = date('Ymd', strtotime($day));
$records[] = [
@ -2756,12 +2802,29 @@ class DownloadController extends BaseController {
'spend_discount' => 0,
'spend_voucher' => 0,
];
$allData['role_num'] += $roleNumList[$day];
$allData['user_num'] += $userNumList[$day];
$allData['new_user_num'] += $newUserNumList[$day];
$allData['new_device_num'] += $newDeviceNumList[$day];
$allData['new_ip_num'] += $newIpNumList[$day];
$allData['login_user_num'] += $loginUserNumList[$day];
$allData['spend_user_num'] += $spendUserNumList[$day];
$allData['spend_num'] += $spendNumList[$day];
$allData['spend_all_amount'] = bcadd($allData['spend_all_amount'], $spendAllAmountList[$day], 2);
$allData['spend_cash'] = bcadd($allData['spend_cash'], $spendCashList[$day], 2);
$allData['spend_generic'] = bcadd($allData['spend_generic'], $spendGenericList[$day], 2);
$allData['spend_binding'] = bcadd($allData['spend_binding'], $spendBindingList[$day], 2);
$allData['spend_discount'] = bcadd($allData['spend_discount'], 0, 2);
$allData['spend_voucher'] = bcadd($allData['spend_voucher'], 0, 2);
}
$allData['day'] = '合计';
$records[] = $allData;
$xlsData = [];
foreach ($records as $key1 => $value1) {
$xlsData[] = $value1;
}
$this->exportExcel($xlsName, $xlsCell, $xlsData,$id);
}
@ -2892,18 +2955,18 @@ class DownloadController extends BaseController {
public function userRechargeExcelInfo($id,$map) {
$xlsName = "充值玩家";
$xlsCell = array(
array('user_account','玩家账号'),
array('game_name','游戏名称'),
array('server_name','游戏区服'),
array('sdk_version','平台'),
array('role_name','角色名'),
array('role_level','等级'),
array('recharge_cost','充值总额'),
array('recharge_count','充值次数'),
array('recharge_cost_today','昨日充值'),
array('unlogin_day','未登录天数'),
array('play_time','最后登录时间'),
array('promote_account','推广员账号'),
'玩家账号',
'游戏名称',
'游戏区服',
'平台',
'角色名',
'等级',
'充值总额',
'充值次数',
'昨日充值',
'未登录天数',
'最后登录时间',
'推广员账号',
);
$subMap = [];
@ -2957,6 +3020,7 @@ class DownloadController extends BaseController {
unset($map['begintime']);
unset($map['endtime']);
//$spendMap['_string'] = 'uc.game_id = tab_user_play_info.game_id and uc.server_id = tab_user_play_info.server_id and uc.role_id = tab_user_play_info.role_id';
$fieldUC = "sum(uc.recharge_cost) recharge_cost,sum(uc.recharge_count) recharge_count,sum(if(uc.create_time = {$nowTime},uc.recharge_cost,0)) as recharge_cost_today";
$fieldUI = "ui.user_account,ui.game_name,ui.role_name,ui.role_level,ui.server_name,ui.play_time,ui.play_ip,ui.promote_account,ui.sdk_version";
$field = $fieldUC . ',' . $fieldUI;
@ -2975,55 +3039,72 @@ class DownloadController extends BaseController {
->join('left join tab_user_play_info as ui on ui.game_id = uc.game_id and ui.server_id = uc.server_id and ui.role_id = uc.role_id')
->where($map)
->find();
foreach ($roles as $role) {
$records[] = [
'user_account' => empty($role['user_account']) ? '--' : encryption($role['user_account']),
'game_name' => empty($role['game_name']) ? '--' : $role['game_name'],
'role_name' => empty($role['role_name']) ? '--' : $role['role_name'],
'role_id' => empty($role['role_id']) ? '--' : $role['role_id'],
'role_level' => empty($role['role_level']) ? '--' : $role['role_level'],
'server_id' => empty($role['server_id']) ? '--' : $role['server_id'],
'server_name' => empty($role['server_name']) ? '--' : $role['server_name'],
'recharge_cost' => empty($role['recharge_cost']) ? 0 : $role['recharge_cost'],
'recharge_count' => empty($role['recharge_count']) ? 0 : $role['recharge_count'],
'recharge_cost_today' => empty($role['recharge_cost_today']) ? 0 : $role['recharge_cost_today'],
'play_time' => empty($role['play_time']) ? '--' : $role['play_time'],
'play_ip' => empty($role['play_ip']) ? '--' : $role['play_ip'],
'promote_id' => empty($role['promote_id']) ? '--' : $role['promote_id'],
'promote_account' => empty($role['promote_account']) ? '--' : $role['promote_account'],
'sdk_version' => empty($role['sdk_version']) ? '--' : $role['sdk_version'],
'unlogin_day' => empty($role['play_time']) ? '--' : intval((strtotime(date('Y-m-d 00:00:00')) - strtotime(date('Y-m-d 00:00:00', $role['play_time']))) / (24 * 3600))
];
}
$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('gb2312', 'UTF-8', $xlsCell);
fputcsv($fp, $xlsCell);//将数据格式化为CSV格式并写入到output流中
$accessNum = '100000';//从数据库获取总量,假设是十万
$accessNum = count($roles)?:0 ;
$perSize = 5000;//每次查询的条数
$pages = ceil($accessNum / $perSize);
for($i = 1; $i <= $pages; $i++) {
$data = M()->alias('record')
->table($subQuery)
->limit(($i-1)*$perSize ,$perSize)
->select();
foreach($data as $key => $value) {
$csvData['user_account'] = empty($value['user_account']) ? '--' : encryption($value['user_account']);
$csvData['game_name'] = empty($value['game_name']) ? '--' :$value['game_name'];
$csvData['server_name'] = empty($value['server_name']) ? '--' :$value['server_name'];
if($value['sdk_version'] == 1) {
$csvData['sdk_version'] = "Android";
}else if($value['sdk_version'] == 2) {
$csvData['sdk_version'] = "ios";
} else {
$csvData['sdk_version'] = "--";
}
$csvData['role_name'] = empty($value['role_name']) ? '--' :$value['role_name'];
$csvData['role_level'] = empty($value['role_level']) ? '--' :$value['role_level'];
$csvData['recharge_cost'] = empty($value['recharge_cost']) ? 0 : $value['recharge_cost'];
$csvData['recharge_count'] = empty($value['recharge_count']) ? 0 : $value['recharge_count'];
$csvData['recharge_cost_today'] = empty($value['recharge_cost_today']) ? 0 : $value['recharge_cost_today'];
$csvData['unlogin_day'] = empty($value['play_time']) ? '--' : intval((strtotime(date('Y-m-d 00:00:00')) - strtotime(date('Y-m-d 00:00:00', $value['play_time']))) / (24 * 3600));
$csvData['play_time'] = empty($value['play_time']) ? '--' :date('Y-m-d H:i:s',$value['play_time']);
$csvData['promote_account'] = empty($value['promote_account']) ? '--' :$value['promote_account'];
mb_convert_variables('GBK', 'UTF-8', $csvData);
fputcsv($fp, $csvData);
$xlsData[] = $csvData;
}
unset($xlsData);
ob_flush();
flush();
}
$allData['user_account'] = '合计';
$allData['game_name'] = '--';
$allData['server_name'] = '--';
$allData['sdk_version'] = '--';
$allData['role_name'] = '--';
$allData['role_id'] = '--';
$allData['role_level'] = '--';
$allData['server_id'] = '--';
$allData['server_name'] = '--';
$allData['recharge_cost'] = $total['recharge_cost'];
$allData['recharge_count'] = $total['recharge_count'];
$allData['recharge_cost_today'] = $total['recharge_cost_today'];
$allData['unlogin_day'] = '--';
$allData['play_time'] = '--';
$allData['play_ip'] = '--';
$allData['promote_id'] = '--';
$allData['promote_account'] = '--';
$allData['sdk_version'] = '--';
$allData['unlogin_day'] = '--';
$xlsData = [];
foreach ($records as $key1 => $value1) {
$value1['user_account'] = $this->encryption($value1['user_account']);
$value1['play_time'] = date('Y-m-d H:i:s',$value1['play_time']);
if($value1['sdk_version'] == 1) {
$value1['sdk_version'] = "Android";
}else {
$value1['sdk_version'] = "ios";
}
$xlsData[] = $value1;
}
mb_convert_variables('GBK', 'UTF-8', $allData);
fputcsv($fp, $allData);
$xlsData[] = $allData;
$this->exportExcel($xlsName, $xlsCell, $xlsData,$id);
fclose($fp);
$this->backSuccessExport($id);
}
public function rechargeExcelInfo($id,$map) {

@ -198,7 +198,7 @@ class HomeController extends Controller
->find();
$game['icon'] = get_cover($game['icon'], 'path');
$gameSource = M('GameSource', 'tab_')->field(['create_time', 'org_plist_url'])->where(array('game_id' => $game['id']))->find();
$gameSource = M('GameSource', 'tab_')->field(['create_time', 'org_plist_url', 'is_new_sdk'])->where(array('game_id' => $game['id']))->find();
$imageIds = explode(',', $game['flooring_page_imgs']) ?? [];
$imageUrls = [];
@ -208,9 +208,9 @@ class HomeController extends Controller
$game['flooring_page_imgs'] = $imageUrls;
$isNewIos = false;
/* if ($gameSource['create_time'] > strtotime(date('2019-11-27 00:00:00'))) {
if ($gameSource['is_new_sdk'] == 1) {
$isNewIos = true;
} */
}
$downloadUrl = '';
if (!$isNewIos && $isIOS13) {

@ -100,7 +100,7 @@ class PromoteController extends BaseController
$today_start = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
$today_end = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;
$today_open_server_list = M("server as sv", "tab_")
$today_open_server_list = M("ServerNotice as sv", "tab_")
->where(
array("sv.start_time" => array("BETWEEN", array($today_start, $today_end)),
"sv.show_status" => 1))
@ -110,7 +110,7 @@ class PromoteController extends BaseController
->page(1, 20)
->select();
$count = M("server", "tab_")
$count = M("ServerNotice", "tab_")
->where(
array("start_time" => array("BETWEEN", array($today_start, $today_end)),
"show_status" => 1))
@ -240,121 +240,79 @@ class PromoteController extends BaseController
private function caculateSpend($pay_time, $condition, $create = [], $type = 0)
{
$map1['promote_id'] = $map['promote_id'] = array('egt', 0);
$map['promote_id'] = array('egt', 0);
$spend = M('Spend', 'tab_');
$map1['pay_status'] = $map['pay_status'] = 1;
$map['pay_status'] = 1;
$today = total(1);
$yesterday = total(5);
$week = total(2);
$mounth = total(3);
unset( $map['create_time']);
$promote_id = get_pid();
$promoteId = M("promote", "tab_")
->field("id")
->where(array('chain' => ['like', '/'.$promote_id . '/%'],'id'=>$promote_id,'_logic'=>'or'))
->select();
$promoteId = implode(',',array_column($promoteId,'id'));
$whereUser['promote_id'] = ['IN', $promoteId];
if ($type == 1) {
$pay_time = total(1);
$start = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
$end = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;
$whereUser['register_time'] = ['between', array($start, $end - 1)];
$userId = M('user', 'tab_')->field('id')->where($whereUser)->select();
} else if ($type == 2) {
$pay_time = total(3);
$start = mktime(0, 0, 0, date('m'), 1, date('Y'));
$end = mktime(0, 0, 0, date('m') + 1, 1, date('Y')) - 1;
$this->getLoginPromote();
$promoteId = $this->loginPromote['id'];
$promoteIds = M("promote", "tab_")
->where(array('chain' => ['like', $this->loginPromote['chain'] . $promoteId . '/%']))
->getField('id', true);
$promoteIds[] = $promoteId;
$map['promote_id'] = ['IN', $promoteIds];
if (in_array($type, [1, 2])) {
$whereUser['promote_id'] = $map['promote_id'];
if ($type == 1) {
$pay_time = total(1);
$start = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
$end = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;
} else {
$pay_time = total(3);
$start = mktime(0, 0, 0, date('m'), 1, date('Y'));
$end = mktime(0, 0, 0, date('m') + 1, 1, date('Y')) - 1;
}
$whereUser['register_time'] = ['between', array($start, $end - 1)];
$userId = M('user', 'tab_')->field('id')->where($whereUser)->select();
}
// if ($userId) {
// var_dump($userId);
// }
if ($userId) {
$userId = M('user', 'tab_')->where($whereUser)->getField('id', true);
$userId = implode(',', array_column($userId, 'id'));
// var_dump($userId);
$map1['user_id'] = $map['user_id'] = ['IN', $userId];
} else if (!$userId && $type != 0) {
return array('sum_mounth' => 0, 'sum_today' => 0);
if ($userId) {
$map['user_id'] = ['IN', $userId];
} else if (!$userId && $type != 0) {
return array('sum_mounth' => 0, 'sum_today' => 0);
}
}
//获取所有会长
$promote_map = "`chain` = '%/{$promote_id}/%' OR id = {$promote_id}";
$promote = M("promote","tab_")->field("id,account")->where($promote_map)->select();
$data =array();
for ($i=0; $i < count($promote); $i++) {
# code...
$proid = M("promote","tab_")->field("id")->where("`chain` like '%/{$promote[$i]['id']}/%'")->select();
$str = '';
for($k=0; $k<count($proid); $k++){
# code...
$str .= ($proid[$k]['id'].",");
if (isset($_REQUEST['game_name'])) {
$map['game_name'] = $_REQUEST['game_name'];
if (isset($_REQUEST['server_id'])) {
$map['server_name'] = $_REQUEST['server_id'];
unset($_REQUEST['server_id']);
}
$str .= "{$promote[$i]['id']}";
$map['promote_id'] = array("in",$str);
if (isset($_REQUEST['game_name'])) {
$map['game_name'] = $_REQUEST['game_name'];
if (isset($_REQUEST['server_id'])) {
$map['server_name'] = $_REQUEST['server_id'];
unset($_REQUEST['server_id']);
}
$dbdata = $spend
->field('
floor(sum(IF(pay_time ' . $pay_time . ',pay_amount,0))*100) as count,
floor(sum(IF(pay_time ' . $today . ',pay_amount,0))*100) as today,
$data = $spend
->field('
floor(sum(IF(pay_time ' . $pay_time . ',pay_amount,0))*100) as sum_count,
floor(sum(IF(pay_time ' . $today . ',pay_amount,0))*100) as sum_today,
floor(sum(IF(pay_time ' . $yesterday . ',pay_amount,0))*100) as yesterday,
floor(sum(IF(pay_time ' . $week . ',pay_amount,0))*100) as week,
floor(sum(IF(pay_time ' . $mounth . ',pay_amount,0))*100) as mounth')
->where($map)
->where("pay_time".$pay_time)
->find();
$dbdata['promote_account'] = $promote[$i]['account'];
} else {
$dbdata = $spend
->field('
floor(sum(IF(pay_time ' . $pay_time . ',pay_amount,0))*100) as count,
floor(sum(IF(pay_time ' . $today . ',pay_amount,0))*100) as today,
floor(sum(IF(pay_time ' . $week . ',pay_amount,0))*100) as sum_week,
floor(sum(IF(pay_time ' . $mounth . ',pay_amount,0))*100) as sum_mounth')
->where($map)
->where("pay_time".$pay_time)
->find();
} else {
$data = $spend
->field('
floor(sum(IF(pay_time ' . $pay_time . ',pay_amount,0))*100) as sum_count,
floor(sum(IF(pay_time ' . $today . ',pay_amount,0))*100) as sum_today,
floor(sum(IF(pay_time ' . $yesterday . ',pay_amount,0))*100) as yesterday,
floor(sum(IF(pay_time ' . $week . ',pay_amount,0))*100) as week,
floor(sum(IF(pay_time ' . $mounth . ',pay_amount,0))*100) as mounth')
->where($map)
->where("pay_time".$pay_time)
->find();
$dbdata['promote_account'] = $promote[$i]['account'];
}
$data[] = $dbdata;
}
// if ($userId) {
// echo $spend->_sql();die();
// }
foreach ($data as $key => $value) {
$value['count'] ?: 0;
$value['today'] ?: 0;
$value['week'] ?: 0;
$value['mounth'] ?: 0;
static $i = 0;
$i++;
$data[$key]['rand'] = $i;
$data[$key]['count'] = $value['count'] / 100;
$data[$key]['today'] = $value['today'] / 100;
$data[$key]['yesterday'] = $value['yesterday'] / 100;
$data[$key]['week'] = $value['week'] / 100;
$data[$key]['mounth'] = $value['mounth'] / 100;
}
$total = $this->data_total($data);
return $total;
//
floor(sum(IF(pay_time ' . $week . ',pay_amount,0))*100) as sum_week,
floor(sum(IF(pay_time ' . $mounth . ',pay_amount,0))*100) as sum_mounth')
->where($map)
->where("pay_time".$pay_time)
->find();
}
$data['sum_count'] = empty($data['sum_count']) ? 0 : bcdiv($data['sum_count'], 100 ,2);
$data['sum_today'] = empty($data['sum_today']) ? 0 : bcdiv($data['sum_today'], 100 ,2);
$data['yesterday'] = empty($data['yesterday']) ? 0 : bcdiv($data['yesterday'], 100 ,2);
$data['sum_week'] = empty($data['sum_week']) ? 0 : bcdiv($data['sum_week'], 100 ,2);
$data['sum_mounth'] = empty($data['sum_mounth']) ? 0 : bcdiv($data['sum_mounth'], 100 ,2);
return $data;
}
public function data_total($data)
@ -484,7 +442,7 @@ class PromoteController extends BaseController
$map['sv.show_status'] = 1;
$count_map['show_status'] = 1;
$open_server_list = M("server as sv", "tab_")
$open_server_list = M("ServerNotice as sv", "tab_")
->where($map)
->join("left join tab_game gm on gm.id=sv.game_id")
->field('sv.*,gm.icon')
@ -492,7 +450,7 @@ class PromoteController extends BaseController
->page($pg, 20)
->select();
$count = M("server", "tab_")
$count = M("ServerNotice", "tab_")
->where($count_map)
->count();
//var_dump($count);

@ -17,7 +17,7 @@
<link rel="stylesheet" type="text/css" href="__CSS__/index2.css">
<title>{$game['relation_game_name']}</title>
</head>
<body>
<body onclick="checkSafari()">
<style>
.layui-layer-btn0 {
font-size: 18px;
@ -75,7 +75,7 @@
</div>
<div class="grade">14.48K个评分</div>
</div>
<div class="evaluate-box">
<div class="evaluate-box" style="display: none">
<span>#{$game['recommend_level']}</span>
<div class="grade">网络游戏</div>
</div>
@ -273,13 +273,71 @@
?>
<input type="hidden" id="cur_url" name="cur_url" value="{$cur_url}">
<input type="hidden" id="is_new_sdk" name="is_new_sdk" value="{$is_new_sdk}">
<div class="safari" style="display: none">
<div class="safari-heard">
<div>请选择在“Safari”中打开</div>
<img src="__IMG__/arror.png" alt="">
</div>
<div class="safari-info">
<img src="__IMG__/safari.png" alt="">
<div>
<div>该链接只支持<a href="#">Safari</a></div>
<div>请在<a href="#">Safari</a>中打开</div>
</div>
</div>
</div>
</body>
</html>
<script src="__STATIC__/ios9/js/layer/layer.js?VerNo=20190923" type="text/javascript"></script>
<script>
function is_tip_safari() {
var isTipSafari = false;
var ua = navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == "micromessenger") {
isTipSafari = true;
//$('.safari').show();
} else if(ua.match(/QQ/i) == "qq") {
isTipSafari = true;
//$('.safari').show();
} else if(ua.match(/dingtalk/i) == "dingtalk") {
isTipSafari = true;
//$('.safari').show();
}
return isTipSafari;
}
function checkSafari(){
/*var ua = navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == "micromessenger") {
alert(111);
isTipSafari = true;
$('.safari').show();
} else if(ua.match(/QQ/i) == "qq") {
alert(222);
isTipSafari = true;
$('.safari').show();
} else if(ua.match(/aliapp/i) == "aliapp") {
alert(333);
isTipSafari = true;
$('.safari').show();
} else {
isTipSafari = false
}*/
var isTipSafari = is_tip_safari();
if (isTipSafari) {
$(".safari").css("position", "fixed");
$('.safari').show();
}
}
$(function(){
$('#go_confirm').click(function () {
var isTipSafari = is_tip_safari();
if (isTipSafari) {
$('.safari').show();
return;
}
layer.confirm('请您回到手机桌面查看安装包情况,<br/>并在安装完成后点击"点我去信任"进行<br/>快速信任证书即可', {
title: "请确认游戏是否已安装?",
btn: ['已安装', '取消'], //按钮
@ -289,6 +347,11 @@
});
});
$('.down-link').on('click', function () {
var isTipSafari = is_tip_safari();
if (isTipSafari) {
$('.safari').show();
return;
}
var downLink = $(this).attr('down-link');
// if ($('.bn-rule').length > 0) {
@ -296,26 +359,30 @@
// $('.bn-rule').css('z-index','12')
// return
// }
if ($('input[name=isNewIos]').val() == 0 && $('input[name=isIOS13]').val() == 1) {
var iosDownUrl = "{:U('iosDown',array('gid'=>$apply['game_id'],'pid'=>$apply['promote_id'],'status'=>1))}";
if (parseInt("{:I('get.status', 0)}") > 0) {
location.href = "{:U('iosDown',array('gid'=>$apply['game_id'],'pid'=>$apply['promote_id'],'status'=>1))}"
location.href = iosDownUrl;
return
} else {
layer.confirm('请先到官网注册', {title: '提示'}, function () {
// location.href = '{:U("User/login",array("url"=>base64_encode(base64_encode(U("Game/detail",array("id"=>$_GET["id"], "pid" => $apply.promote_id, "gid" => $apply.game_id))))))}';
location.href = "/mobile.php?s=/User/login/pid/" + "{$apply.promote_id}" + "/gid/" + "{$apply.game_id}" + "/url/"+ cur_url + ".html"
});
layer.confirm('请先到官网注册', {title: '提示'}, function () {
// location.href = '{:U("User/login",array("url"=>base64_encode(base64_encode(U("Game/detail",array("id"=>$_GET["id"], "pid" => $apply.promote_id, "gid" => $apply.game_id))))))}';
location.href = "/mobile.php?s=/User/login/pid/" + "{$apply.promote_id}" + "/gid/" + "{$apply.game_id}" + "/url/"+ cur_url + ".html"
});
return
}
}
$.post("/mobile.php?s=/AjaxDown/down_file/game_id/{$apply.game_id}/type/2", {}, function (res) {
location.href = downLink
});
location.href = downLink
});
$('.no-package').click(function() {
var isTipSafari = is_tip_safari();
if (isTipSafari) {
$('.safari').show();
return;
}
layer.msg('暂无下载', {
icon: 7,
time: 2000
@ -326,6 +393,11 @@
$("#look_more").hide();
}
$(".more").click(function(){
var isTipSafari = is_tip_safari();
if (isTipSafari) {
$('.safari').show();
return;
}
$("#look_more").hide();
$("#brief_introduction").css("overflow", "visible");
$("#brief_introduction").css("display", "block");
@ -352,14 +424,29 @@
};
swiperGet();
$(".download").click(function(){
var isTipSafari = is_tip_safari();
if (isTipSafari) {
$('.safari').show();
return;
}
$(".window").show();
document.body.style.overflow = 'hidden';
});
$(".window").click(function(){
var isTipSafari = is_tip_safari();
if (isTipSafari) {
$('.safari').show();
return;
}
$(".window").hide();
document.body.style.overflow = 'auto';
});
$(".gray-btn").click(function(){
var isTipSafari = is_tip_safari();
if (isTipSafari) {
$('.safari').show();
return;
}
event.stopPropagation();
$(".second").show();
// swiperGet();
@ -367,10 +454,20 @@
$(".window").hide();
})
$(".second").click(function(){
var isTipSafari = is_tip_safari();
if (isTipSafari) {
$('.safari').show();
return;
}
$(".second").hide();
document.body.style.overflow = 'auto';
})
$(".doubt").click(function(){
var isTipSafari = is_tip_safari();
if (isTipSafari) {
$('.safari').show();
return;
}
$(".second").show();
document.body.style.overflow = 'hidden';
// swiperGet();

@ -20,7 +20,7 @@ class SsgController extends BaseController {
const CODE_ERROR = -97; //验证码错误
const RETURN_SUCCESS = 1;
const RETURN_FALSE = 2;
const signprice = 10; //充值金额
const signprice = 0.01; //充值金额
public function login()
@ -130,15 +130,15 @@ class SsgController extends BaseController {
$_SESSION['user_id'] = $user_id;
$user = M('user', 'tab_')->where(array(
'id' => $user_id
'id' => $user_id
))->find();
if (!$user['promote_id'] && $promote) {
M('user', 'tab_')->where(array(
'id' => $user_id
))->save(array(
'promote_id' => $promoteId,
'promote_account' => $promote['account']
));
M('user', 'tab_')->where(array(
'id' => $user_id
))->save(array(
'promote_id' => $promoteId,
'promote_account' => $promote['account']
));
}
}
$this->ajaxReturn(array("ErrorCode"=>$res_code,"ResultMsg"=>$res_msg),'JSON');
@ -182,15 +182,15 @@ class SsgController extends BaseController {
#验证短信验证码
$this -> sms_verify($user['account'], $user['code']);
$res = $this -> doRegister($user['account'],$user['password'],$user['account'],$promoteId,4,2, $game_id);
if(empty($res)){
$res = $this -> doRegister($user['account'],$user['password'],$user['account'],$promoteId,4,2, $game_id);
if(empty($res)){
$this -> set_message(1017, "fail", "添加失败");
}
//添加自动登录
$userApi = new MemberApi();
$user_id = $userApi->login($user['account'], $user['password'],1);
}
//添加自动登录
$userApi = new MemberApi();
$user_id = $userApi->login($user['account'], $user['password'],1);
$this -> set_message(1, "success", "添加成功");
$this -> set_message(1, "success", "添加成功");
}
//忘记密码
@ -229,18 +229,18 @@ class SsgController extends BaseController {
$res = $this -> doRegister($account,$password,'',$promoteId,4,1);
if(empty($res)){
$this -> set_message(1017, "fail", "添加失败");
}
}
//添加自动登录
$userApi = new MemberApi();
$user_id = $userApi->login($account, $password,1);
//添加自动登录
$userApi = new MemberApi();
$user_id = $userApi->login($account, $password,1);
$this -> set_message(1, "success", "添加成功");
$this -> set_message(1, "success", "添加成功");
# code...
}
//消息返回
public function set_message($status=0,$return_code="fail",$return_msg="操作失败"){
public function set_message($status=0,$return_code="fail",$return_msg="操作失败"){
$msg = array(
"status" => $status,
"return_code" => $return_code,
@ -482,15 +482,14 @@ class SsgController extends BaseController {
))->find();
$payLog = M('game_supersign', 'tab_')->where(array(
$isPay = M('game_supersign', 'tab_')->where(array(
'user_id' => $userId,
'game_id' => $gameId
'game_id' => $gameId,
'pay_status' =>1
))->find();
if($payLog && $payLog['pay_status']==1){
//$this->assign("error","亲~您已购买过了~<br/>请到【订单查询】查看订单信息哟~");
//$this->display('blank');
redirect("/mobile.php/Ssg/install_show/user_id/$userId/game_id/$gameId/order_id/".$payLog['order_id']);
if($isPay){
redirect("/mobile.php/Ssg/install_show/user_id/$userId/game_id/$gameId/order_id/".$isPay['order_id']);
}else{
if (!$gameInfo['supersign_token']) {
//$this->error("超级签token未填写");
@ -527,27 +526,19 @@ class SsgController extends BaseController {
exit();
}
$payLog = M('game_supersign', 'tab_')->where(array(
$isPay = M('game_supersign', 'tab_')->where(array(
'user_id' => $userId,
'game_id' => $gameId
))->find();
'game_id' => $gameId,
'pay_status' => 1
))->find(); //是否有已支付订单
$gameInfo = M('game', 'tab_')->field('game_name,supersign_token')->where(array(
'id' => $gameId,
))->find();
if ($payLog && $payLog['pay_status']==0) {
$orderId = $payLog['order_id'];
}elseif ($payLog && $payLog['pay_status']==1){
/*$orderId = $payLog['order_id'];
if(stripos($_SERVER['HTTP_HOST'], '.wmtxkj.cn') || $_SERVER['HTTP_HOST']=='127.0.0.1' || stripos($_SERVER['HTTP_HOST'], '.free.idcfengye.com')){
redirect("http://".$_SERVER['HTTP_HOST']."/mobile.php/Ssg/install_show/user_id/$userId/game_id/$gameId/order_id/$orderId");
}else{
redirect("https://".$_SERVER['HTTP_HOST']."/mobile.php/Ssg/install_show/user_id/$userId/game_id/$gameId/order_id/$orderId");
}*/
if ($isPay){
$this->assign("error","亲~您已购买过了~<br/>请到【订单查询】查看订单信息哟~");
$this->display('blank');
//$this->error("亲~您已购买过了~请到【订单查询】查看订单信息哟~");
exit();
} else {
$orderId = "SS_" . date('Ymd') . date('His') . sp_random_string(4); // 超级签

@ -662,6 +662,8 @@ class UserController extends BaseController
if (IS_POST) {
$new_pwd = $_REQUEST['new_pwd'];
$u_uid['phone'] = $_REQUEST['phone'];
//验证短信验证码
$this->checksafecode($u_uid['phone'], $_REQUEST['code'], false);
$result = M('user', 'tab_')->where($u_uid)->setField('password', think_ucenter_md5($new_pwd, UC_AUTH_KEY));
if ($result != false) {
$this->success("修改成功", U('User/login'));
@ -893,8 +895,6 @@ class UserController extends BaseController
} else {
$model = M('User', 'tab_')->where($map)->save(array('phone' => ''));
}
$this->suser->set_login_info('phone', $_REQUEST['phone']);
if ($model !== false) {
@ -1419,10 +1419,13 @@ class UserController extends BaseController
$this->redirect('Mobile/User/login');
}
$map['user_id'] = $this->suser->login_info('user_id');
$data = D('DownRecord')->table('tab_down_record AS tdr')
->field('tab_game.id,tab_game.dow_status,tab_game.game_name,tab_game.game_size,tab_game.dow_num,tab_game.icon,tab_game.features,tdr.user_id,tab_game.and_dow_address,tab_game.add_game_address,tab_game.ios_dow_address,tab_game.ios_game_address,tab_game.game_score,tab_game.sdk_version')
$data = D('DownRecord')->table('tab_user_game_login_record AS tdr')
->field('tab_game.id,tab_game.dow_status,tab_game.game_name,tab_game.game_size,tab_game.dow_num,
tab_game.icon,tab_game.features,tdr.user_id,tab_game.and_dow_address,tab_game.add_game_address,
tab_game.ios_dow_address,tab_game.ios_game_address,tab_game.game_score,tab_game.sdk_version')
->join("tab_game ON tdr.game_id = tab_game.id")
->where($map)
->group("tdr.user_id, tdr.game_id")
->select();
$this->assign("data", $data);

@ -1,48 +1,47 @@
<extend name="Public/bases" />
<block name="body">
<link href="__CSS__/user.css" rel="stylesheet" >
<script src="__JS__/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="__JS__/getRem.js"></script>
<link rel="stylesheet" type="text/css" href="__CSS__/reset.css">
<link rel="stylesheet" type="text/css" href="__CSS__/name.css">
<link rel="stylesheet" type="text/css" href="__CSS__/remove.css">
<link rel="stylesheet" type="text/css" href="__CSS__/forgetPass.css">
<style>
body {
background: white;
}
input,button{
padding: 0;
}
</style>
<div class="name">
<div class="loginPhTwo">
<!-- 子页公共头部 -->
<div class="subpage-heard">找回密码
<div class="subpage-heard">忘记密码
<a href="javascript:window.history.go(-1);" class="arrows"></a>
</div>
<div class="remove-info">
<div class="name-input">
<div class="name-inputBox">
<img src="__IMG__/shoujibangding.png" alt="">
<div>手机号</div>
<form action="">
<div class="login-box">
<div class="login-input">
<img src="__IMG__/shouji.png" alt="">
<input type="text" placeholder="请输入手机号" name="mobile" id="mobile" value="{$user['phone']}">
</div>
<input type="text" placeholder="请输入手机号" style="padding: 0" name="mobile" id="mobile" value="{$user['phone']}">
</div>
<div class="remove-input">
<div class="remove-inputBox">
<img src="__IMG__/mingzibianji.png" alt="">
<div>验证码</div>
<input type="text" placeholder="请输入验证码" id="code" name="code" value="">
<div class="login-input">
<img src="__IMG__/suo.png" alt="">
<input type="password" placeholder="请输入密码" name="new_pwd" id="new_pwd" value="">
</div>
<div class="login-input">
<img src="__IMG__/suo.png" alt="">
<input type="password" placeholder="请输入确认密码" name="new_pwd_confirm" id="new_pwd_confirm" value="">
</div>
<div class="login-code">
<input type="text" placeholder="输入验证码" id="code" name="code" value="">
<div class="code g-btn jsgetcode" id="sendSafeCode">获取验证码</div>
</div>
<div class="login-btn submit">保存修改</div>
<div class="forget-text">
<div>通过手机号找回密码只适用于手机号注册的账号</div>
<div>用户名注册的账号可<a href="mqqwpa://im/chat?chat_type=wpa&uin={:C('PC_SET_SERVER_QQ')}&version=1&src_type=web&web_src=oicqzone.com">联系客服</a></div>
</div>
<div class="code g-btn jsgetcode" id="sendSafeCode">获取验证码</div>
</div>
<div class="save submit">下一步</div>
<div>
<p class="forget-notice" style="font-size: 0.28rem;text-align: center;line-height: 0.4rem;">
通过手机号找回密码只适用于手机号注册的账号<br>用户名注册的账号可
<a href="mqqwpa://im/chat?chat_type=wpa&uin={:C('PC_SET_SERVER_QQ')}&version=1&src_type=web&web_src=oicqzone.com"
target="_blank" style="color: #21B1EB;">联系客服</a>
</p>
</div>
</div>
</form>
</div>
<div class="popmsg pop-dialog"></div>
@ -90,27 +89,49 @@
$(".submit").click(function(){
var mobile = $.trim($("#mobile").val());
var code = $.trim($("#code").val());
var new_pwd = $.trim($("#new_pwd").val());
var new_pwd_confirm = $.trim($("#new_pwd_confirm").val());
if(mobile.length == 0){
pmsg.msg('请输入手机号码');
return false;
}
if(new_pwd.length == 0){
pmsg.msg('请输入密码');
return false;
}
if(new_pwd_confirm.length == 0){
pmsg.msg('请输入确认密码');
return false;
}
if(code.length == 0){
pmsg.msg('请输入验证码');
return false;
}
if(new_pwd.length < 6 || new_pwd.length > 12){
pmsg.msg('密码长度6-12个字符');
return false;
}
if(new_pwd != new_pwd_confirm){
pmsg.msg('两次密码输入不一致');
return false;
}
$.ajax({
url:"{:U('forget')}",
url:"{:U('forget1')}",
type:"POST",
dataType:"json",
data:{phone:$.trim($('#mobile').val()),code:$("#code").val()},
data:{
phone:$.trim($('#mobile').val()),
code:$("#code").val(),
new_pwd:new_pwd
},
success:function(result){
if(result.status == 1){
pmsg.msg("验证成功");
pmsg.msg("修改成功");
setTimeout(function () {
window.location.href = result.url;
}, 2000);
} else {
pmsg.msg(result.msg);
pmsg.msg(result.info ? result.info : result.msg);
}
},
error:function(){

@ -13,7 +13,7 @@
<link href="__CSS__/common-cz.css" rel="stylesheet" >
</head>
<body>
<div class="my">
<div class="my" style="padding-bottom: 1.6rem;min-height: 100vh;">
<div class="register">
<div class="logo"><img src="__IMG__/user/logo2.png" alt=""></div>
<div class="account">

@ -1,12 +1,18 @@
<extend name="Public/bases" />
<block name="body" >
<link href="__CSS__/user.css" rel="stylesheet" >
<script src="__JS__/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="__JS__/getRem.js"></script>
<link rel="stylesheet" type="text/css" href="__CSS__/reset.css">
<link rel="stylesheet" type="text/css" href="__CSS__/name.css">
<section class="trunker">
<section class="container">
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link href="__CSS__/user.css" rel="stylesheet" >
<script src="__JS__/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="__JS__/getRem.js"></script>
<link rel="stylesheet" type="text/css" href="__CSS__/reset.css">
<link rel="stylesheet" type="text/css" href="__CSS__/name.css">
<link rel="stylesheet" type="text/css" href="__CSS__/common-cz.css">
<title>万盟天下</title>
</head>
<body>
<form id="form" action="" method="post" onsubmit="return false" class="">
<div class="name">
<!-- 子页公共头部 -->
@ -14,59 +20,39 @@
<a href="javascript:window.history.go(-1);" class="arrows"></a>
</div>
<?php if(empty($user['real_name'])){ ?>
<div class="name-input">
<div class="name-inputBox">
<img src="__IMG__/shimingrenzhengmoren.png" alt="">
<div>真实姓名</div>
</div>
<input type="text" placeholder="请输入真实姓名" style="padding: 0;color: #292929" name="real_name" id="real_name" value="">
</div>
<?php }else{ ?>
<div class="name-input">
<div class="name-inputBox">
<img src="__IMG__/shimingrenzhengmoren.png" alt="">
<div>真实姓名</div>
<if condition="$user.age_status eq 0">
<div class="login-box">
<div class="login-input">
<img src="__IMG__/user/mingzibianji2.png" alt="">
<input id="real_name" type="text" placeholder="请输入真实姓名">
</div>
<div class="login-input">
<img src="__IMG__/user/shimingrenzhengmoren2.png" alt="">
<input id="idcard" type="text" placeholder="请输入身份证号码">
</div>
<button class="login-btn jssubmit">提交</button>
</div>
<else />
<div class="remove-info">
<div class="remove-title">您已进行过实名认证</div>
<div class="remove-input">
<div>真实姓名:{$user['real_name']}</div>
<div>身份证号:{$user['idcard']}</div>
</div>
<div class="save back">返回个人中心</div>
</div>
<input type="text" placeholder="请输入真实姓名" style="padding: 0;color: #292929;" readonly name="real_name" id="real_name" value="{$user['real_name']}">
</div>
<?php }?>
<?php if(empty($user['idcard'])){ ?>
<div class="name-input">
<div class="name-inputBox">
<img src="__IMG__/haoma.png" alt="">
<div>证件号码</div>
</div>
<input type="text" placeholder="请输入证件号码" style="padding: 0;color: #292929" name="idcard" id="idcard" value="">
</div>
<div class="save jssubmit">提交</div>
<?php }else{ ?>
<div class="name-input">
<div class="name-inputBox">
<img src="__IMG__/haoma.png" alt="">
<div>证件号码</div>
</div>
<input type="text" placeholder="请输入证件号码" style="padding: 0" name="idcard" id="idcard" readonly value="{$user['idcard']}">
</div>
<div class="save back" >返回</div>
<?php }?>
</div>
</if>
</div>
</form>
</section>
</section>
<style>
.pop-dialog span{
top:35%;
top:25%;
line-height: 1.5;
max-width: 3rem;
padding: 10px;
font-size: .32rem;
}
</style>
<div class="popmsg pop-dialog"></div>
@ -84,26 +70,22 @@
if(real_name == ""){
pmsg.msg("请输入真实姓名");
$('#real_name').focus();
return false;
}
if(idcard.length == 0){
pmsg.msg("身份证号码不能为空");
$('#idcard').focus();
return false;
}
if(real_name.length <2){
pmsg.msg("真实姓名必须大于两个字");
$('#real_name').focus();
return false;
}
var reg = /^[\u4E00-\u9FA5]+$/;
if(reg.test(real_name) == false){
pmsg.msg("输入姓名不合法");
$('#real_name').focus();
return false;
}
@ -111,7 +93,10 @@
cache:true,
type:'post',
url:"{:U('User/userauth')}",
data:$('#form').serialize(),
data:{
"idcard":idcard,
"real_name":real_name
},
dataType:'json',
success:function(result){
pmsg.msg(result.info);
@ -130,4 +115,4 @@
});
</script>
</block>
</body>

@ -34,42 +34,42 @@
<img src="{:get_img_url($vo['icon'])}" onerror="this.src='__IMG__/empty.jpg';this.onerror=null">
<span>{$vo.game_name}</span>
</div>
<if condition='$vo.and_dow_address eq "" && $vo.add_game_address eq "" && $vo.ios_dow_address eq "" && $vo.ios_game_address eq "" '>
<a class="btn disabled">立即进入</a>
<else/>
<?php $devicetype = get_device_type();?>
<eq name='devicetype' value='1'>
<eq name="vo.down_port" value="2">
<a href="{$vo['add_game_address']}" class="btn">立即进入</a>
<else />
<a url="<if condition='$vo.dow_status eq 0'>#<else/>{:U('AjaxDown/down_file?game_id='.$vo['relation_game_id'].'&type=1')}</if>" class="btn down">立即进入</a>
</eq>
<else />
<eq name='devicetype' value='2'>
<eq name="vo.down_port" value="2">
<a href="{$vo['add_game_address']}" class="btn">立即进入</a>
<else />
<a url="<if condition='$vo.dow_status eq 0'>#<else/>{:U('AjaxDown/down_file?game_id='.$vo['relation_game_id'].'&type=2')}</if>" class="btn down">立即进入</a>
</eq>
<else/>
<!-- <a url="#" class="btn disabled">下载</a> -->
<eq name="vo.sdk_version" value="1">
<eq name="vo.down_port" value="2">
<a href="{$vo['add_game_address']}" class="btn">立即进入</a>
<else />
<a url="<if condition='$vo.dow_status eq 0'>#<else/>{:U('AjaxDown/down_file?game_id='.$vo['relation_game_id'].'&type=1')}</if>" class="btn down">立即进入</a>
</eq>
</eq>
<eq name="vo.sdk_version" value="2">
<eq name="vo.down_port" value="2">
<a href="{$vo['ios_game_address']}" class="btn">立即进入</a>
<else />
<a url="<if condition='$vo.dow_status eq 0'>#<else/>{:U('AjaxDown/down_file?game_id='.$vo['relation_game_id'].'&type=2')}</if>" class="btn down">立即进入</a>
</eq>
</eq>
</eq>
</eq>
</if>
<!-- <if condition='$vo.and_dow_address eq "" && $vo.add_game_address eq "" && $vo.ios_dow_address eq "" && $vo.ios_game_address eq "" '>-->
<!-- <a class="btn disabled">立即进入</a>-->
<!-- <else/>-->
<!-- <?php $devicetype = get_device_type();?>-->
<!-- <eq name='devicetype' value='1'>-->
<!-- <eq name="vo.down_port" value="2">-->
<!-- <a href="{$vo['add_game_address']}" class="btn">立即进入</a>-->
<!-- <else />-->
<!-- <a url="<if condition='$vo.dow_status eq 0'>#<else/>{:U('AjaxDown/down_file?game_id='.$vo['relation_game_id'].'&type=1')}</if>" class="btn down">立即进入</a>-->
<!-- </eq>-->
<!-- <else />-->
<!-- <eq name='devicetype' value='2'>-->
<!-- <eq name="vo.down_port" value="2">-->
<!-- <a href="{$vo['add_game_address']}" class="btn">立即进入</a>-->
<!-- <else />-->
<!-- <a url="<if condition='$vo.dow_status eq 0'>#<else/>{:U('AjaxDown/down_file?game_id='.$vo['relation_game_id'].'&type=2')}</if>" class="btn down">立即进入</a>-->
<!-- </eq>-->
<!-- <else/>-->
<!-- &lt;!&ndash; <a url="#" class="btn disabled">下载</a> &ndash;&gt;-->
<!-- <eq name="vo.sdk_version" value="1">-->
<!-- <eq name="vo.down_port" value="2">-->
<!-- <a href="{$vo['add_game_address']}" class="btn">立即进入</a>-->
<!-- <else />-->
<!-- <a url="<if condition='$vo.dow_status eq 0'>#<else/>{:U('AjaxDown/down_file?game_id='.$vo['relation_game_id'].'&type=1')}</if>" class="btn down">立即进入</a>-->
<!-- </eq>-->
<!-- </eq>-->
<!-- <eq name="vo.sdk_version" value="2">-->
<!-- <eq name="vo.down_port" value="2">-->
<!-- <a href="{$vo['ios_game_address']}" class="btn">立即进入</a>-->
<!-- <else />-->
<!-- <a url="<if condition='$vo.dow_status eq 0'>#<else/>{:U('AjaxDown/down_file?game_id='.$vo['relation_game_id'].'&type=2')}</if>" class="btn down">立即进入</a>-->
<!-- </eq>-->
<!-- </eq>-->
<!-- </eq>-->
<!-- </eq>-->
<!-- </if>-->
<!-- <a href="{$vo['add_game_address']}">立即进入</a> -->
</div>
</div>

@ -4,47 +4,39 @@
<script src="__JS__/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="__JS__/getRem.js"></script>
<link rel="stylesheet" type="text/css" href="__CSS__/reset.css">
<link rel="stylesheet" type="text/css" href="__CSS__/name.css">
<section class="trunker">
<section class="container">
<form id="form" action="" method="post" onsubmit="return false" class="">
<div class="name">
<!-- 子页公共头部 -->
<div class="subpage-heard">修改密码
<a href="javascript:window.history.go(-1);" class="arrows"></a>
</div>
<div class="name-info">
<div class="name-input">
<div class="name-inputBox">
<img src="__IMG__/xiugaimima.png" alt="">
<div>原始密码</div>
</div>
<input type="text" placeholder="请输入原始密码" style="padding: 0" name="old_pwd" id="old_pwd" value="">
</div>
<div class="name-input">
<div class="name-inputBox">
<img src="__IMG__/xiugaimima.png" alt="">
<div>新密码</div>
</div>
<input type="text" placeholder="请输入新密码" style="padding: 0" name="new_pwd" id="new_pwd" value="">
</div>
<div class="name-input">
<div class="name-inputBox">
<img src="__IMG__/xiugaimima.png" alt="">
<div>确认密码</div>
</div>
<input type="text" placeholder="请输入确认密码" style="padding: 0" name="com_pwd" id="com_pwd" value="">
</div>
<div class="save jssubmit">保存修改</div>
</div>
<link rel="stylesheet" type="text/css" href="__CSS__/password.css">
<style>
body {
background: white;
}
input,button{
padding: 0;
}
</style>
<div class="name">
<!-- 子页公共头部 -->
<div class="subpage-heard">修改密码
<a href="javascript:window.history.go(-1);" class="arrows"></a>
</div>
<form action="" id="form">
<div class="login-box">
<div class="login-input">
<img src="__IMG__/suo.png" alt="">
<input type="text" placeholder="请输入原始密码" name="old_pwd" id="old_pwd" value="">
</div>
</form>
</section>
</section>
<div class="login-input">
<img src="__IMG__/suo.png" alt="">
<input type="password" placeholder="请输入新密码" name="new_pwd" id="new_pwd" value="">
</div>
<div class="login-input">
<img src="__IMG__/suo.png" alt="">
<input type="password" placeholder="请输入新密码" name="com_pwd" id="com_pwd" value="">
</div>
<div class="login-btn jssubmit">提交</div>
</div>
</form>
</div>
<div class="popmsg pop-dialog"></div>
<script src="__JS__/pop.lwx.min.js"></script>
<script>

@ -4,58 +4,40 @@
<script src="__JS__/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="__JS__/getRem.js"></script>
<link rel="stylesheet" type="text/css" href="__CSS__/reset.css">
<link rel="stylesheet" type="text/css" href="__CSS__/name.css">
<link rel="stylesheet" type="text/css" href="__CSS__/remove.css">
<style>
body {
background: white;
}
input,button{
padding: 0;
}
</style>
<div class="name">
<!-- 子页公共头部 -->
<div class="subpage-heard"><empty name="user.phone">绑定手机<else/>解除绑定</empty>
<a href="javascript:window.history.go(-1);" class="arrows"></a>
</div>
<div class="remove-info">
<form id='form' action="" method="post" class="">
<?php if(!empty($user['phone'])){ ?>
<div class="remove-input">
<div class="remove-inputBox">
<img src="__IMG__/shoujibangding.png" alt="">
<div>手机号</div>
<form action="" id="form">
<div class="login-box">
<?php if(!empty($user['phone'])){ ?>
<div class="login-input">
<img src="__IMG__/shouji.png" alt="">
<input style="color: #292929" type="text" placeholder="请输入手机号" readonly style="padding: 0" name="phone" id="phone" value="{$user['phone']}">
</div>
<div style="color: #292929">{$user['phone']}</div>
<input type="hidden" name="phone" id="phone" value="{$user['phone']}">
</div>
<?php }else{ ?>
<div class="name-input">
<div class="name-inputBox">
<img src="__IMG__/shoujibangding.png" alt="">
<div>手机号</div>
<?php }else{ ?>
<div class="login-input">
<img src="__IMG__/shouji.png" alt="">
<input type="text" placeholder="请输入手机号" name="phone" id="phone" value="{$user['phone']}">
</div>
<input type="text" placeholder="请输入手机号" style="padding: 0" name="phone" id="phone" value="{$user['phone']}">
</div>
<?php }?>
<div class="remove-input">
<div class="remove-inputBox">
<img src="__IMG__/mingzibianji.png" alt="">
<div>验证码</div>
<?php }?>
<div class="login-code">
<input type="text" placeholder="请输入验证码" id="scode" name="scode" value="">
<div id="sendSafeCode">获取验证码</div>
</div>
<div class="code g-btn" id="sendSafeCode">获取验证码</div>
<div class="login-btn jssubmit">提交</div>
</div>
<div class="save jssubmit">保存修改</div>
</form>
</div>
</form>
</div>
<div class="popmsg pop-dialog"></div>

@ -84,7 +84,7 @@
</div>
<a href="{:U('usernick')}" class="right">{$user['nickname']}</a>
</div>
<div class="setting-info arror">
<div class="setting-info arror" style="display: none">
<div class="left">
<img src="__IMG__/xingbie2.png" alt="">
<span>性别</span>

@ -615,4 +615,40 @@ ALTER TABLE `tab_device_bans`
MODIFY COLUMN `type` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '类型 0未知 1设备号 2IP 3落地页链接 4下载链接' AFTER `tag`;
-- user表注册类型添加7虚拟
ALTER TABLE `tab_user` MODIFY COLUMN `register_type` tinyint(2) DEFAULT '1' COMMENT '注册方式 0游客1账号 2 手机 3微信 4QQ 5百度 6微博 7虚拟'
ALTER TABLE `tab_user` MODIFY COLUMN `register_type` tinyint(2) DEFAULT '1' COMMENT '注册方式 0游客1账号 2 手机 3微信 4QQ 5百度 6微博 7虚拟';
ALTER TABLE `tab_game_source` add COLUMN `is_new_sdk` tinyint(2) DEFAULT '0' COMMENT '是否新SDK(IOS)';
--1 2019-12-03 ---
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='游戏区服预告表';
INSERT INTO `sys_model` ( `name`, `title`, `extend`, `relation`, `need_pk`, `field_sort`, `field_group`, `attribute_list`, `attribute_alias`, `template_list`, `template_add`, `template_edit`, `list_grid`, `list_row`, `search_key`, `search_list`, `create_time`, `update_time`, `status`, `engine_type`)
VALUES ('ServerNotice', '游戏区服预告', '0', '', '1', '{\"1\":[\"289\",\"288\",\"290\",\"291\",\"293\",\"292\",\"287\",\"286\",\"282\",\"281\",\"283\",\"284\",\"285\",\"280\"]}', '1:基础', '', '', '', '', '', 'id:编号\r\ngame_name:游戏名称\r\nserver_name:区服名称\r\nshow_status|get_info_status:区服状态\r\nstart_time|set_show_time:开服时间\r\nserver_version:运营平台\r\ndevelopers:开发商\r\nid:操作:[EDIT]&id=[id]|编辑,ServerNotice/del?ids=[id]|删除', '10', '', '', '1480318911', '1493879217', '1', 'MyISAM');

@ -456,3 +456,58 @@
bottom: -9px !important;
}
.safari{
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
background-color: rgba(0, 0, 0, 0.4);
display: flex;
flex-direction: column;
align-items: center;
font-family:PingFang SC;
}
.safari-heard{
width: 6.3rem;
margin-top: 1.4rem;
font-size:0.36rem;
font-weight:500;
color:rgba(255,255,255,1);
display: flex;
justify-content: flex-end;
}
.safari-heard>div{
margin-top: 0.65rem;
}
.safari-heard>img{
width: 1rem;
height: 0.8rem;
margin-left: 0.25rem;
}
.safari-info{
margin-top: 2.4rem;
background: url("../images/safari_bg.png") no-repeat;
width: 6.3rem;
height: 2.8rem;
background-size: 100% 100%;
display: flex;
align-items: center;
justify-content: center;
}
.safari-info>img{
width: 1.5rem;
height: 1.5rem;
margin-right: 0.24rem;
}
.safari-info>div{
color: #fff;
font-size: 0.32rem;
font-weight: 500;
}
.safari-info>div a{
color: #FCE44B;
font-size: 0.32rem;
font-weight: 500;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 895 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

@ -0,0 +1,95 @@
.loginPhTwo{
width: 100%;
font-family:PingFang SC;
}
.login-box{
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.login-input{
margin-top: 0.6rem;
width: 5.5rem;
height: 0.8rem;
display: flex;
align-items: center;
justify-content: center;
background:rgba(245,245,245,1);
border-radius:0.4rem;
}
.login-input>img{
width: 0.42rem;
height: 0.42rem;
}
.login-input>input{
font-size: 0.28rem;
border: 0;
outline: 0;
height: 0.6rem;
width: 4rem;
margin-left: 0.16rem;
background-color: rgba(245,245,245,1);
}
.login-input>input::placeholder{
color: #A9A9A9;
}
.login-code{
margin-top: 0.6rem;
display: flex;
align-items: center;
justify-content: center;
}
.login-code>input{
width: 3rem;
height: 0.8rem;
background-color: #F5F5F5;
border-radius: 0.4rem;
font-size: 0.28rem;
text-align: center;
border: 0;
outline: 0;
}
.login-code>input::placeholder{
text-align: center;
color: #A9A9A9;
}
.login-code>div{
width: 2.3rem;
height: 0.8rem;
background-color: #389AED;
font-size: 0.28rem;
color: #FFFFFF;
border-radius: 0.4rem;
margin-left: 0.2rem;
text-align: center;
line-height: 0.8rem;
}
.login-btn{
margin-top: 0.6rem;
width: 5.5rem;
height: 0.8rem;
background-color: #389AED;
border-radius: 0.4rem;
font-size: 0.32rem;
color: #fff;
text-align: center;
line-height: 0.8rem;
outline: 0;
border: 0;
}
.forget-text{
font-size: 0.24rem;
color: #292929;
margin-top: 0.3rem;
font-weight: 400;
text-align: center;
line-height: 0.4rem;
}
.forget-text a{
color: #389AED;
font-size: 0.24rem;
font-weight: 400;
margin-left: 0.1rem;
cursor: pointer;
}

@ -45,4 +45,142 @@
line-height: 0.8rem;
text-align: center;
margin: 0.3rem auto 0 auto;
}
}
.remove-info{
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
font-family:PingFang SC;
}
.remove-title{
margin-top: 1.2rem;
font-size:0.4rem;
font-weight:500;
color:rgba(33,177,235,1);
}
.remove-input {
width: 3.6rem;
height: 0.78rem;
font-size: 0.28rem;
margin-top: 0.52rem;
color: #292929;
font-size: 0.24rem;
font-weight: 400;
}
.remove-input>div:last-child{
margin-top: 0.28rem;
}
.save{
margin-top: 1.2rem;
width:5rem;
height:0.8rem;
background:rgba(33,177,235,1);
border-radius:0.4rem;
font-size:0.32rem;
font-family:PingFang SC;
font-weight:500;
color:rgba(255,255,255,1);
line-height: 0.8rem;
text-align: center;
}
.loginPhTwo{
width: 100%;
font-family:PingFang SC;
}
.login-box{
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.login-input{
margin-top: 0.6rem;
width: 5.5rem;
height: 0.8rem;
display: flex;
align-items: center;
justify-content: center;
background:rgba(245,245,245,1);
border-radius:0.4rem;
}
.login-input>img{
width: 0.42rem;
height: 0.42rem;
}
.login-input>input{
font-size: 0.28rem;
border: 0;
outline: 0;
height: 0.6rem;
width: 4rem;
margin-left: 0.16rem;
background-color: rgba(245,245,245,1);
}
.login-input>input::placeholder{
color: #A9A9A9;
}
.login-code{
margin-top: 0.6rem;
display: flex;
align-items: center;
justify-content: center;
}
.login-code>input{
width: 3rem;
height: 0.8rem;
background-color: #F5F5F5;
border-radius: 0.4rem;
font-size: 0.28rem;
text-align: center;
border: 0;
outline: 0;
}
.login-code>input::placeholder{
text-align: center;
color: #A9A9A9;
}
.login-code>div{
width: 2.3rem;
height: 0.8rem;
background-color: #389AED;
font-size: 0.28rem;
color: #FFFFFF;
border-radius: 0.4rem;
margin-left: 0.2rem;
text-align: center;
line-height: 0.8rem;
}
.login-btn{
margin-top: 0.6rem;
width: 5.5rem;
height: 0.8rem;
background-color: #389AED;
border-radius: 0.4rem;
font-size: 0.32rem;
color: #fff;
text-align: center;
line-height: 0.8rem;
outline: 0;
border: 0;
}
.forget-text{
font-size: 0.24rem;
color: #292929;
margin-top: 0.3rem;
font-weight: 400;
text-align: center;
line-height: 0.4rem;
}
.forget-text a{
color: #389AED;
font-size: 0.24rem;
font-weight: 400;
margin-left: 0.1rem;
cursor: pointer;
}

@ -0,0 +1,95 @@
.loginPhTwo{
width: 100%;
font-family:PingFang SC;
}
.login-box{
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.login-input{
margin-top: 0.6rem;
width: 5.5rem;
height: 0.8rem;
display: flex;
align-items: center;
justify-content: center;
background:rgba(245,245,245,1);
border-radius:0.4rem;
}
.login-input>img{
width: 0.42rem;
height: 0.42rem;
}
.login-input>input{
font-size: 0.28rem;
border: 0;
outline: 0;
height: 0.6rem;
width: 4rem;
margin-left: 0.16rem;
background-color: rgba(245,245,245,1);
}
.login-input>input::placeholder{
color: #A9A9A9;
}
.login-code{
margin-top: 0.6rem;
display: flex;
align-items: center;
justify-content: center;
}
.login-code>input{
width: 3rem;
height: 0.8rem;
background-color: #F5F5F5;
border-radius: 0.4rem;
font-size: 0.28rem;
text-align: center;
border: 0;
outline: 0;
}
.login-code>input::placeholder{
text-align: center;
color: #A9A9A9;
}
.login-code>div{
width: 2.3rem;
height: 0.8rem;
background-color: #389AED;
font-size: 0.28rem;
color: #FFFFFF;
border-radius: 0.4rem;
margin-left: 0.2rem;
text-align: center;
line-height: 0.8rem;
}
.login-btn{
margin-top: 0.6rem;
width: 5.5rem;
height: 0.8rem;
background-color: #389AED;
border-radius: 0.4rem;
font-size: 0.32rem;
color: #fff;
text-align: center;
line-height: 0.8rem;
outline: 0;
border: 0;
}
.forget-text{
font-size: 0.24rem;
color: #292929;
margin-top: 0.3rem;
font-weight: 400;
text-align: center;
line-height: 0.4rem;
}
.forget-text a{
color: #389AED;
font-size: 0.24rem;
font-weight: 400;
margin-left: 0.1rem;
cursor: pointer;
}

@ -1,61 +1,95 @@
.remove-info{
.loginPhTwo{
width: 100%;
font-family:PingFang SC;
}
.remove-input {
padding: 0.15rem 0.3rem;
.login-box{
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #F5F5F5;
height: 0.78rem;
font-size: 0.28rem;
justify-content: center;
}
.remove-inputBox {
.login-input{
margin-top: 0.6rem;
width: 5.5rem;
height: 0.8rem;
display: flex;
align-items: center;
font-size:0.28rem;
font-family:PingFang SC;
font-weight:500;
color:rgba(41,41,41,1)
justify-content: center;
background:rgba(245,245,245,1);
border-radius:0.4rem;
}
.remove-inputBox>img{
width: 0.3rem;
height: 0.3rem;
margin-right: 0.23rem;
.login-input>img{
width: 0.42rem;
height: 0.42rem;
}
.remove-inputBox>input{
width: 1.8rem;
height: 0.5rem;
.login-input>input{
font-size: 0.28rem;
border: 0;
outline: 0;
padding: 0;
height: 0.6rem;
width: 4rem;
margin-left: 0.16rem;
background-color: rgba(245,245,245,1);
}
.login-input>input::placeholder{
color: #A9A9A9;
}
.login-code{
margin-top: 0.6rem;
display: flex;
align-items: center;
justify-content: center;
}
.login-code>input{
width: 3rem;
height: 0.8rem;
background-color: #F5F5F5;
border-radius: 0.4rem;
font-size: 0.28rem;
margin-left: 0.33rem;
}
.code{
width:1.84rem;
height:0.6rem;
background:rgba(33,177,235,1);
border-radius:0.3rem;
font-size:0.28rem;
font-family:PingFang SC;
font-weight:400;
color:rgba(255,255,255,1);
text-align: center;
line-height: 0.6rem;
border: 0;
outline: 0;
}
.login-code>input::placeholder{
text-align: center;
color: #A9A9A9;
}
.save{
width:5rem;
height:0.8rem;
background:rgba(33,177,235,1);
border-radius:0.4rem;
font-size:0.32rem;
font-family:PingFang SC;
font-weight:500;
color:rgba(255,255,255,1);
.login-code>div{
width: 2.3rem;
height: 0.8rem;
background-color: #389AED;
font-size: 0.28rem;
color: #FFFFFF;
border-radius: 0.4rem;
margin-left: 0.2rem;
text-align: center;
line-height: 0.8rem;
}
.login-btn{
margin-top: 0.6rem;
width: 5.5rem;
height: 0.8rem;
background-color: #389AED;
border-radius: 0.4rem;
font-size: 0.32rem;
color: #fff;
text-align: center;
margin: 0.3rem auto 0 auto;
margin-bottom: 10px;
line-height: 0.8rem;
outline: 0;
border: 0;
}
.forget-text{
font-size: 0.24rem;
color: #292929;
margin-top: 0.3rem;
font-weight: 400;
text-align: center;
line-height: 0.4rem;
}
.forget-text a{
color: #389AED;
font-size: 0.24rem;
font-weight: 400;
margin-left: 0.1rem;
cursor: pointer;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 981 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Loading…
Cancel
Save