Merge branch 'dev' of 47.111.118.107:/srv/git/platform into dev

master
ELF 5 years ago
commit 0cbc9e5d8a

@ -886,11 +886,18 @@ class QueryController extends ThinkController
public function withdrawDetails($id)
{
$page = intval(I('p', 1));
$row = intval(I('row', 10));
$id = intval($id);
$map['withdraw_id'] = $id;
$data = M('Spend', 'tab_')
$model = M('Spend', 'tab_');
$data = $model
->field('pay_order_number,game_name,user_account,promote_account,pay_amount,pay_way,if(selle_ratio >= 0,selle_ratio,0) as selle_ratio,pay_time,selle_status,pay_status,withdraw_id')
->where($map)->select();
->where($map)
->order('id desc')
->page($page, $row)
->select();
$count = $model->where($map)->count('id');
//提现状态
$withdrawStatus = M('withdraw', 'tab_')
@ -903,6 +910,10 @@ class QueryController extends ThinkController
$list['pay_time'] = date('Y-m-d H:i:s', $list['pay_time']);
}
$page = set_pagination($count, $row);
if ($page) {
$this->assign('_page', $page);
}
$this->assign('listData', $data);
$this->assign('withdrawStatus', $withdrawStatus);
$this->display();

@ -2,175 +2,151 @@
namespace Admin\Controller;
class SdkMenuController extends ThinkController{
class SdkMenuController extends ThinkController
{
public $but_type = [
'0' => 'h5页面',
'1' => '原生',
'2' => '外部链接',
'3' => 'h5资源',
];
public $but_type = [
'0' => 'h5页面',
'1' => '原生',
'2' => '外部链接',
'3' => 'h5资源',
];
public $menu_version = [
'0' => '双平台',
'1' => '安卓',
'2' => 'ios',
];
public $menu_version = [
'0' => '双平台',
'1' => '安卓',
'2' => 'ios',
];
public function lists()
{
$menu_name = I('get.menu_name','sdk_menu');
$sdkMenus = M('tool','tab_')->where(['name' => $menu_name])->find();
$config = json_decode($sdkMenus['config'],true);
if(!empty($config))
{
foreach($config as $k => $v)
{
$config[$k]['icon'] = is_https()?'https://':'http://' . $_SERVER['HTTP_HOST'] . $v['icon'];
$config[$k]['type'] = $this->but_type[$v['type']];
$config[$k]['menu_version'] = $this->menu_version[$v['menu_version']];
}
}
$this->assign('list',$config);
$this->assign('menu_name',$menu_name);
$this->assign('menu_list',$this->getMenuList());
$this->meta_title = '悬浮球菜单';
$this->display('lists');
}
public function lists()
{
$menu_name = I('get.menu_name', 'sdk_menu');
$sdkMenus = M('tool', 'tab_')->where(['name' => $menu_name])->find();
$config = json_decode($sdkMenus['config'], true);
if (!empty($config)) {
foreach ($config as $k => $v) {
$config[$k]['icon'] = (substr($v['icon'], 0, 7) == "http://" || substr($v['icon'], 0, 8) == "https://" ) ? $v['icon'] : (is_https() ? 'https://' : 'http://' . $_SERVER['HTTP_HOST'] . $v['icon']);
$config[$k]['type'] = $this->but_type[$v['type']];
$config[$k]['menu_version'] = $this->menu_version[$v['menu_version']];
}
}
$this->assign('list', $config);
$this->assign('menu_name', $menu_name);
$this->assign('menu_list', $this->getMenuList());
$this->meta_title = '悬浮球菜单';
$this->display('lists');
}
public function add()
{
$menu_name = I('get.menu_name','sdk_menu');
$sdkMenus = M('tool','tab_')->where(['name' => $menu_name])->find();
$config = json_decode($sdkMenus['config'],true);
if(!empty($config))
{
$config1 = $config;
$id = array_pop($config1);
$id = $id['id'] + 1;
}else
{
$config = [];
$id = 1;
}
public function add()
{
$menu_name = I('get.menu_name', 'sdk_menu');
$sdkMenus = M('tool', 'tab_')->where(['name' => $menu_name])->find();
$config = json_decode($sdkMenus['config'], true);
if (!empty($config)) {
$config1 = $config;
$id = array_pop($config1);
$id = $id['id'] + 1;
} else {
$config = [];
$id = 1;
}
if(IS_POST)
{
$post = I('post.');
$cover = $_REQUEST['icon'];
$post['cover'] = $cover;
$post['id'] = $id;
array_push($config,$post);
$sdkMenus['config'] = json_encode($config);
if(empty($sdkMenus['name']))
{
$sdkMenus['name'] = $menu_name;
$sdkMenus['title'] = '悬浮球菜单';
M('tool','tab_')->data($sdkMenus)->add();
}else
{
M('tool','tab_')->where(['name' => $menu_name])->data($sdkMenus)->save();
}
$this->success('新增成功', U('lists',['menu_name' => $menu_name]));
}
if (IS_POST) {
$post = I('post.');
$post['cover'] = $post['icon'];
$post['id'] = $id;
$post['icon'] = get_cover($post['icon'], "path");
array_push($config, $post);
$sdkMenus['config'] = json_encode($config);
if (empty($sdkMenus['name'])) {
$sdkMenus['name'] = $menu_name;
$sdkMenus['title'] = '悬浮球菜单';
M('tool', 'tab_')->data($sdkMenus)->add();
} else {
M('tool', 'tab_')->where(['name' => $menu_name])->data($sdkMenus)->save();
}
$this->success('新增成功', U('lists', ['menu_name' => $menu_name]));
}
$data['sort'] = $id;
$this->meta_title = '悬浮球菜单';
$this->assign('type','add');
$this->assign('data',$data);
$this->assign('menu_name',$menu_name);
$this->assign('but_type',$this->but_type);
$this->assign('menu_version',$this->menu_version);
$this->display('add');
}
$data['sort'] = $id;
$this->meta_title = '悬浮球菜单';
$this->assign('type', 'add');
$this->assign('data', $data);
$this->assign('menu_name', $menu_name);
$this->assign('but_type', $this->but_type);
$this->assign('menu_version', $this->menu_version);
$this->display('add');
}
public function edit($id)
{
$menu_name = I('get.menu_name','sdk_menu');
$sdkMenus = M('tool','tab_')->where(['name' => $menu_name])->find();
$config = json_decode($sdkMenus['config'],true);
if(IS_POST)
{
foreach($config as $k => $v)
{
if($v['id'] == $id)
{
$post = I('post.');
foreach($post as $key => $val)
{
if($key == 'icon')
{
$picRes = M('picture')->where(['id'=>intval($val)])->find();
$path = $picRes['path'];
$config[$k][$key] = $path;
$config[$k]['cover'] = $val;
}else
{
$config[$k][$key] = $val;
$config[$k]['cover'] = '';
}
}
break;
}
}
$sdkMenus['config'] = json_encode($config);
M('tool','tab_')->where(['name' => $menu_name])->data($sdkMenus)->save();
$this->success('修改成功', U('lists',['menu_name' => $menu_name]));
}
$data = [];
foreach($config as $k => $v)
{
if($v['id'] == $id)
{
$v['icon'] = is_https()?'https://':'http://' . $_SERVER['HTTP_HOST'] . $v['icon'];
$data = $v;
break;
}
}
if(empty($data))
{
$this->error('菜单不存在','lists');
}
$img[0] = $data['cover'];
$this->meta_title = '悬浮球菜单';
$this->assign('type','edit');
$this->assign('data',$data);
$this->assign('img',$img);
$this->assign('menu_name',$menu_name);
$this->assign('but_type',$this->but_type);
$this->assign('menu_version',$this->menu_version);
$this->display('add');
}
public function edit($id)
{
$menu_name = I('get.menu_name', 'sdk_menu');
$sdkMenus = M('tool', 'tab_')->where(['name' => $menu_name])->find();
$config = json_decode($sdkMenus['config'], true);
if (IS_POST) {
foreach ($config as $k => $v) {
if ($v['id'] == $id) {
$post = I('post.');
foreach ($post as $key => $val) {
if ($key == 'icon') {
$config[$k]['cover'] = $post['icon'];
$config[$k]['icon'] = get_cover($post['icon'], "path");
} else {
$config[$k][$key] = $post[$key];
}
}
break;
}
}
$sdkMenus['config'] = json_encode($config);
M('tool', 'tab_')->where(['name' => $menu_name])->data($sdkMenus)->save();
$this->success('修改成功', U('lists', ['menu_name' => $menu_name]));
}
$data = [];
foreach ($config as $k => $v) {
if ($v['id'] == $id) {
$data = $v;
break;
}
}
if (empty($data)) {
$this->error('菜单不存在', 'lists');
}
$img[0] = $data['cover'];
$this->meta_title = '悬浮球菜单';
$this->assign('type', 'edit');
$this->assign('data', $data);
$this->assign('img', $img);
$this->assign('menu_name', $menu_name);
$this->assign('but_type', $this->but_type);
$this->assign('menu_version', $this->menu_version);
$this->display('add');
}
public function del($id)
{
$menu_name = I('get.menu_name', 'sdk_menu');
if (!is_array($id)) {
$data[] = $id;
} else {
$data = $id;
}
$sdkMenus = M('tool', 'tab_')->where(['name' => $menu_name])->find();
$config = json_decode($sdkMenus['config'], true);
foreach ($config as $k => $v) {
if (in_array($v['id'], $data)) {
unset($config[$k]);
}
}
$sdkMenus['config'] = json_encode($config);
M('tool', 'tab_')->where(['name' => $menu_name])->data($sdkMenus)->save();
$this->success('删除成功', U('lists', ['menu_name' => $menu_name]));
}
public function del($id)
{
$menu_name = I('get.menu_name','sdk_menu');
if(!is_array($id))
{
$data[] = $id;
}else
{
$data = $id;
}
$sdkMenus = M('tool','tab_')->where(['name' => $menu_name])->find();
$config = json_decode($sdkMenus['config'],true);
foreach($config as $k => $v)
{
if(in_array($v['id'], $data))
{
unset($config[$k]);
}
}
$sdkMenus['config'] = json_encode($config);
M('tool','tab_')->where(['name' => $menu_name])->data($sdkMenus)->save();
$this->success('删除成功', U('lists',['menu_name' => $menu_name]));
}
public function getMenuList()
{
$data = M('tool', 'tab_')->where(['type' => 5])->select();
return $data;
}
public function getMenuList()
{
$data = M('tool','tab_')->where(['type' => 5])->select();
return $data;
}
}
}

@ -48,10 +48,10 @@ class StatisticsController extends ThinkController {
$this->assign('pay',$list_data['pay']);
$this->assign('game_chart',$list_data['chart']);
$this->assign('promotereg',$promote_data['reg']);
$this->assign('promoteactive',$promote_data['active']);
$this->assign('promotepay',$promote_data['pay']);
$this->assign('promote_chart',$promote_data['chart']);
$this->assign('promotereg',array_slice($promote_data['reg'], 0, 10));
$this->assign('promoteactive',array_slice($promote_data['active'], 0, 10));
$this->assign('promotepay',array_slice($promote_data['pay'], 0, 10));
$this->assign('promote_chart', $promote_data['chart']);
// 日历

@ -3,17 +3,17 @@
<block name="body">
<link rel="stylesheet" type="text/css" href="__CSS__/admin_table.css" media="all">
<script type="text/javascript" src="__STATIC__/uploadify/jquery.uploadify.min.js"></script>
<script type="text/javascript" src="__STATIC__/provincecityarea/AreaData_min.js"></script><!--
<script type="text/javascript" src="__STATIC__/provincecityarea/AreaData_min.js"></script><!--
<script type="text/javascript" src="__STATIC__/provincecityarea/jquery-1.7.min.js"></script> -->
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">新增推广员</h3>
<p class="description_text">说明:此功是创建推广员时所需填写信息</p>
</div>
<!-- 标签页导航 -->
<div class="tab-wrap">

@ -171,7 +171,7 @@
<td class="l">二级密码:</td>
<td class="r">
<input type="text" class="txt" name="second_pwd" value="">
<span class="notice-text">二级密码为推广员后台会长代充时使用</span>
<span class="notice-text">二级密码适用于推广后台会长代充与财务管理功能</span>
</td>
</tr>
<tr>

@ -9,6 +9,10 @@
<link rel="stylesheet" type="text/css" href="__CSS__/module.css">
<link rel="stylesheet" type="text/css" href="__CSS__/style.css" media="all">
<link rel="stylesheet" type="text/css" href="__CSS__/default_color.css" media="all">
<!--[if lt IE 9]>
<script type="text/javascript" src="__STATIC__/jquery-1.10.2.min.js"></script>
<![endif]--><!--[if gte IE 9]><!-->
<script type="text/javascript" src="__STATIC__/jquery-2.0.3.min.js"></script>
</head>
<style>
body{ padding: 0px; }
@ -74,5 +78,22 @@ body{ padding: 0px; }

</div>
<script>
(function(){
var ThinkPHP = window.Think = {
"ROOT" : "__ROOT__", //当前网站地址
"APP" : "__APP__", //当前项目地址
"PUBLIC" : "__PUBLIC__", //项目公共目录地址
"DEEP" : "{:C('URL_PATHINFO_DEPR')}", //PATHINFO分割符
"MODEL" : ["{:C('URL_MODEL')}", "{:C('URL_CASE_INSENSITIVE')}", "{:C('URL_HTML_SUFFIX')}"],
"VAR" : ["{:C('VAR_MODULE')}", "{:C('VAR_CONTROLLER')}", "{:C('VAR_ACTION')}"]
}
})();
</script>
<script type="text/javascript" src="__STATIC__/think.js"></script>
<script type="text/javascript" src="__JS__/common.js"></script>
<script>
Think.setValue('row', "{:I('row', 10)}");
</script>
</body>
</html>

@ -109,7 +109,7 @@
</notempty>
</div>-->
<input type="hidden" name="id" value="{$data['id']}" />
<input type="hidden" name="icon" value="{$data['icon']}" />
<input type="hidden" name="icon" value="{$data['cover']}" />
<div id="uploadImg" class="wu-example">
<div class="btns">
<div id="icon">

@ -440,7 +440,7 @@ class DownloadController extends BaseController {
* @author sunke
*/
public function testresource_data_export() {
$map1['chain'] = ['like','%'.'/'.PID.'/'.'%'];
$map1['chain'] = ['like','%'.'/'.PID.'/'.'%'];
$rs = M('promote','tab_')->where($map1)->field('id,account,nickname')->select();
$childPromoteIds = '';
if(empty($rs)) {
@ -793,7 +793,14 @@ class DownloadController extends BaseController {
* @author sunke
*/
public function regist_data_export() {
if (empty(I('begtime')) || empty(I('endtime'))) {
$this->error('请选择起止时间');
}
$beginTime = strtotime(I('begtime') . ' 00:00:00');
$endtime = strtotime(I('endtime') . ' 23:59:59');
if (($endtime - $beginTime) > 31 * 24 * 3600) {
$this->error('时间范围不能超过31天');
}
$map1['chain'] = ['like','%'.'/'.PID.'/'.'%'];
$rs = M('promote','tab_')->where($map1)->field('id,account,nickname')->select();
$childPromoteIds = '';
@ -835,7 +842,7 @@ class DownloadController extends BaseController {
if (!empty(I('own_id'))) {
$map['tab_user.promote_id'] = $queryPromote['id'];//本账号
}
if (!empty(I('begtime')) && empty(I('endtime'))) {
$map['tab_user.register_time'] = ['egt', strtotime(I('begtime'))];
} elseif (empty(I('begtime')) && !empty(I('endtime'))) {
@ -912,7 +919,7 @@ class DownloadController extends BaseController {
$addtime = time();
$type = "/Home/Promote/children/promote_type/".$promoteType;
$data = [
'logid' => 'cz_'.time(),
'logid' => 'promote_'.time(),
'admin_id' => PID,
'type' => $type,
'dataname' => '渠道管理',
@ -1123,7 +1130,7 @@ class DownloadController extends BaseController {
}
$beginTime = strtotime(I('begtime') . ' 00:00:00');
$endtime = strtotime(I('endtime') . ' 23:59:59');
if (($endTime - $beginTime) > 31 * 24 * 3600) {
if (($endtime - $beginTime) > 31 * 24 * 3600) {
$this->error('时间范围不能超过31天');
}
$map1['chain'] = ['like','%'.'/'.PID.'/'.'%'];
@ -1280,7 +1287,7 @@ class DownloadController extends BaseController {
$map['promote_id'] = $promoteId;
}
}
$conditions = json_encode($map,TRUE);
$addtime = time();
$data = [
@ -1393,8 +1400,11 @@ class DownloadController extends BaseController {
$roleLevelBegin = intval(I('role_level_begin', 0));
$roleLevelEnd = intval(I('role_level_end', 0));
$headmanPromoteId = I('headman_promote_id', 0);
$playTime = I('play_time', '');
$playTime = I('create_time', '');
$promote = $this->getLoginPromote();
if (empty($playTime)) {
$this->error('请选择创建时间');
}
$map1['chain'] = ['like','%'.'/'.PID.'/'.'%'];
$rs = M('promote','tab_')->where($map1)->field('id,account,nickname')->select();
$childPromoteIds = '';
@ -1468,6 +1478,9 @@ class DownloadController extends BaseController {
$playTimeBegin = strtotime($playTimeRow[0] . ' 00:00:00');
$playTimeEnd = strtotime($playTimeRow[0] . ' 23:59:59');
}
if (($playTimeEnd - $playTimeBegin) > 31 * 24 * 3600) {
$this->error('时间范围不能超过31天');
}
$map['play_time'] = ['between', [$playTimeBegin, $playTimeEnd]];
}
if ($isSelf) {
@ -1629,7 +1642,6 @@ class DownloadController extends BaseController {
$this->rechargeExcelInfo($id,$map);
break;
case "充值玩家数据":
var_dump('ss');die();
$this->userRechargeExcelInfo($id,$map);
break;
case "推广员业绩":
@ -1689,21 +1701,22 @@ class DownloadController extends BaseController {
//注册明细excel信息
public function registerExcelInfo($id,$map) {
$xlsName = "注册明细";
$xlsCell = array(
$xlsName = "注册明细";
$xlsCell = array(
array('account','玩家账号'),
array('promote_account','推广账号'),
array('register_time','注册时间'),
array('register_ip','注册ip'),
array('login_time','登陆时间'),
array('login_ip','登陆ip')
);
);
$model = M('user','tab_');
$data = $model->field('account,promote_account,register_time,register_ip,login_time,login_ip')->where($map)->select();
//var_dump($data);
$xlsData = [];
foreach ($data as $key1 => $value1) {
$value1['account'] = $this->encryption($value1['account']);
$xlsData[] = $value1;
}
$this->exportExcel($xlsName, $xlsCell, $xlsData,$id);
@ -1711,19 +1724,20 @@ class DownloadController extends BaseController {
//玩家角色excel信息
public function userRolesExcelInfo($id,$map) {
$xlsName = "角色查询";
$xlsCell = array(
$xlsName = "角色查询";
$xlsCell = array(
array('user_account','玩家账号'),
array('promote_account','推广账号'),
array('game_name','游戏名称'),
array('server_name','区服'),
array('user_nickname','游戏昵称'),
array('role_level','等级'),
);
array('user_nickname','游戏昵称'),
array('role_level','等级'),
);
$model = M('user_play_info','tab_');
$data = $model->field('user_account,promote_account,game_name,server_name,user_nickname,role_level')->where($map)->select();
$xlsData = [];
foreach ($data as $key1 => $value1) {
$value1['user_account'] = $this->encryption($value1['user_account']);
$xlsData[] = $value1;
}
$this->exportExcel($xlsName, $xlsCell, $xlsData,$id);
@ -1731,31 +1745,30 @@ class DownloadController extends BaseController {
//数据汇总excel信息
public function summaryExcelInfo($id,$map) {
$xlsName = "数据汇总";
$xlsCell = array(
$xlsName = "数据汇总";
$xlsCell = array(
array('game_name','游戏名称'),
array('sdk_version','平台'),
array('role_num','创角数'),
array('user_num','创建用户'),
array('new_user_num','新创角用户'),
array('new_device_num','新创角设备'),
array('new_ip_num','新增创角ip'),
array('login_user_num','登陆用户数'),
array('spend_user_num','充值人数'),
array('spend_num','充值次数'),
array('spend_all_amount','充值总额'),
array('spend_cash','现金充值'),
array('spend_generic','通用币充值'),
array('spend_binding','绑定币充值'),
array('spend_discount','折扣币充值'),
array('spend_voucher','代金券使用'),
);
if(!empty($map['tab_apply.promote_id'][1])) {
array('new_user_num','新创角用户'),
array('new_device_num','新创角设备'),
array('new_ip_num','新增创角ip'),
array('login_user_num','登陆用户数'),
array('spend_user_num','充值人数'),
array('spend_num','充值次数'),
array('spend_all_amount','充值总额'),
array('spend_cash','现金充值'),
array('spend_generic','通用币充值'),
array('spend_binding','绑定币充值'),
array('spend_discount','折扣币充值'),
array('spend_voucher','代金券使用'),
);
if(!empty($map['tab_apply.promote_id'][1])) {
$params['promote_ids'] = $map['tab_apply.promote_id'][1];
}
$serverJoin = '';
}
$serverJoin = '';
$initBegTime = date('Y-m-d', strtotime('-6 day', strtotime($nowTime)));
$initBegTime = empty(I('begtime')) ? $initBegTime : I('begtime');
$initEndTime = $nowTime;
@ -1880,7 +1893,8 @@ class DownloadController extends BaseController {
if($value1['status'] == 2) {
$value1['promotestatus'] = "冻结中";
}
$value1['account'] = substr_replace($value1['account'],'****',2);
$value1['idcard'] = substr_replace($value1['idcard'],'************',3,12);
$value1['create_time'] = date('Y-m-d H:i:s',$value1['create_time']);
$xlsData[] = $value1;
}
@ -1939,7 +1953,7 @@ class DownloadController extends BaseController {
foreach ($data as $item) {
$records[] = [
'id' => $item['id'],
'sn' => $item['sn'],
'sn' => $this->encryption($item['sn']),
'type_text' => $service->getTypeText($item['type']),
'sub_type_text' => $service->getSubTypeText($item['sub_type']),
'target_type_text' => $service->getTargetTypeText($item['target_type'], $item['target_level']),
@ -1961,7 +1975,7 @@ class DownloadController extends BaseController {
$xlsName = "平台币转移";
$xlsCell = array(
array("sn","订单号"),
array("source_name","收款方账号"),
array("target_account","收款方账号"),
array("game_name","适用游戏"),
array("handle_type","账号类型"),
array("num","转账数量"),
@ -2010,8 +2024,8 @@ class DownloadController extends BaseController {
}
$records[] = [
'id' => $log['id'],
'sn' => $log['sn'],
'target_account' => $targetAccount,
'sn' => $this->encryption($log['sn']),
'target_account' => $this->encryption($targetAccount),
'game_name' => isset($games[$log['game_id']]) ? $games[$log['game_id']]['game_name'] : '所有游戏',
'target_type_text' => $service->getTargetTypeText($log['target_type'], $log['target_level']),
'num' => $log['num'],
@ -2049,6 +2063,7 @@ class DownloadController extends BaseController {
->select();
foreach ($data as $key => $value) {
$value['create_time'] = date("Y-m-d H:i:s", $value['create_time']);
$value['user_account'] = $this->encryption($value['user_account']);
//获取累计发放
$where = array(
"user_id"=>$value['user_id'],
@ -2092,6 +2107,7 @@ class DownloadController extends BaseController {
);
$data=M('test_resource','tab_')->where($map)->order('id desc')->select();
foreach($data as $key => $value) {
$data[$key]['user_account'] = $this->encryption($value['user_account']);
if($value['apply_status'] == 1) {
$data[$key]['apply_status'] = "审核未通过";
}
@ -2109,8 +2125,8 @@ class DownloadController extends BaseController {
}
public function supportNumberListExcelInfo($id,$map) {
$xlsName = "扶持号管理";
$xlsCell = array(
$xlsName = "扶持号管理";
$xlsCell = array(
array('game_name',"产品名称"),
array('server_name',"区服"),
array('user_account',"测试账号"),
@ -2128,6 +2144,7 @@ class DownloadController extends BaseController {
->select();
foreach ($data as $key => $value) {
$data[$key]['create_time'] = date('Y-m-d H:m:i',$value['create_time']);
$data[$key]['user_account'] = $this->encryption($value['user_account']);
if($value['check_status'] == 1) {
$data[$key]['check_status'] = "冻结";
}else {
@ -2139,21 +2156,21 @@ class DownloadController extends BaseController {
}
public function arpuExcelInfo($id,$params) {
$xlsName = "ARPU统计";
$xlsCell = array(
$xlsName = "ARPU统计";
$xlsCell = array(
array('day','日期'),
array('payGameCount','付费游戏数'),
array('payGameCount','付费游戏数'),
array('loginCount','活跃用户'),
array('registerCount','新增用户'),
array('payUserCount','付费用户'),
array('newPayUserCount','新增付费用户'),
array('payAmount','付费总额'),
array('payRate','付费率'),
array('newPayAmount','新增付费额'),
array('historyPayCount','累计付费用户'),
array('arpu','ARPU'),
array('arppu','ARPPU'),
);
array('payUserCount','付费用户'),
array('newPayUserCount','新增付费用户'),
array('payAmount','付费总额'),
array('payRate','付费率'),
array('newPayAmount','新增付费额'),
array('historyPayCount','累计付费用户'),
array('arpu','ARPU'),
array('arppu','ARPPU'),
);
$dayList = $params["dayList"];
$arr = explode(',', $params['promote_id'][1]);
$params['promote_id'] = $arr;
@ -2556,26 +2573,26 @@ class DownloadController extends BaseController {
}
public function achievementExcelInfo($tid,$map) {
$xlsName = "推广员业绩";
$xlsCell = array(
$xlsName = "推广员业绩";
$xlsCell = array(
array('account','账号'),
array('real_name','姓名'),
array('create_role_count','创角数'),
array('real_name','姓名'),
array('create_role_count','创角数'),
array('create_role_user_count','创角用户'),
array('new_create_role_user_count','新创角用户'),
array('new_create_role_device_count','新创角设备'),
array('new_create_role_ip_count','新创角ip'),
array('login_user_count','登陆用户数'),
array('recharge_count','充值人数'),
array('recharge_user_count','充值次数'),
array('recharge_amount','充值总额'),
array('recharge_by_ban_coin','现金充值'),
array('recharge_by_coin','通用币充值'),
array('recharge_by_cash','绑定币充值'),
array('new_create_role_ip_count','新创角ip'),
array('login_user_count','登陆用户数'),
array('recharge_count','充值人数'),
array('recharge_user_count','充值次数'),
array('recharge_amount','充值总额'),
array('recharge_by_ban_coin','现金充值'),
array('recharge_by_coin','通用币充值'),
array('recharge_by_cash','绑定币充值'),
);
$params['isContainSubs'] =$map['isContainSubs'];
);
$params['isContainSubs'] = $map['isContainSubs'];
$params['basicPromotes'] = json_decode($map['basicPromotes'],TRUE);
$ids = $map['ids'];
$promotes = json_decode($map["promotes"],TRUE);
@ -2593,9 +2610,7 @@ class DownloadController extends BaseController {
}
$params['begin_time'] = $map['begin_time'];
$params['end_time'] = $map['end_time'];
// var_dump($params);die();
$promoteRepository = new PromoteRepository();
$promoteRepository = new PromoteRepository();
$createRoleCountList = $promoteRepository->getCreateRoleCountByIds($ids, $params);
$createRoleUserCountList = $promoteRepository->getCreateRoleUserCountByIds($ids, $params);
$newCreateRoleUserCountList = $promoteRepository->getNewCreateRoleUserCountByIds($ids, $params);
@ -2605,9 +2620,8 @@ class DownloadController extends BaseController {
$rechargeCountList = $promoteRepository->getRechargeCountByIds($ids, $params);
$rechargeUserCountList = $promoteRepository->getRechargeUserCountByIds($ids, $params);
$rechargeAmountList = $promoteRepository->getRechargeAmountByIds($ids, $params);
$records = [];
foreach ($promotes as $promote) {
foreach ($promotes as $promote) {
$id = $promote['id'];
$records[] = [
'id' => $id,
@ -2631,10 +2645,84 @@ class DownloadController extends BaseController {
}
$xlsData = [];
foreach ($records as $key1 => $value1) {
$xlsData[] = $value1;
$value1['account'] = $this->encryption($value1['account']);
$xlsData[] = $value1;
}
$this->exportExcel($xlsName, $xlsCell, $xlsData,$tid);
}
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','组长|推广员'),
);
if(!empty($map['promote_id'])) {
$spendMap['promote_id'] = $map['promote_id'];
}
$map['create_time'] = ['between', [strtotime(date('Y-m-d 00:00:00')) - 31*24*3600, strtotime(date('Y-m-d 23:59:59'))]];
$roles = M('user_play_info','tab_')->where($map)->select();
$roleIds = array_column($roles, 'role_id');
$spendMap['pay_status'] = 1;
$spendMap['pay_game_status'] = 1;
if (count($roleIds) > 0) {
$spendMap['game_player_id'] = ['in', $roleIds];
} else {
$spendMap['_string'] = '1<>1';
}
$allRecharges = M('spend', 'tab_')->field('count(*) count, sum(cost) cost, game_player_id')->where($spendMap)->group('game_player_id')->select();
$allRecords = [];
foreach ($allRecharges as $recharge) {
$allRecords[$recharge['game_player_id']] = $recharge;
}
$map['pay_time'] = ['between', [strtotime(date('Y-m-d 00:00:00')), strtotime(date('Y-m-d 23:59:59'))]];
$todayRecharges = M('spend', 'tab_')->field('sum(cost) cost, game_player_id')->where($map)->group('game_player_id')->select();
$todayRecords = [];
foreach ($todayRecharges as $recharge) {
$todayRecords[$recharge['game_player_id']] = $recharge;
}
$records = [];
foreach ($roles as $role) {
$records[] = [
'user_account' => $role['user_account'],
'game_name' => $role['game_name'],
'role_name' => $role['role_name'],
'role_id' => $role['role_id'],
'role_level' => $role['role_level'],
'server_id' => $role['server_id'],
'server_name' => $role['server_name'],
'recharge_cost' => isset($allRecords[$role['role_id']]) ? round(floatval($allRecords[$role['role_id']]['cost']), 2) : 0,
'recharge_count' => isset($allRecords[$role['role_id']]) ? $allRecords[$role['role_id']]['count'] : 0,
'recharge_cost_today' => isset($todayRecords[$role['role_id']]) ? round(floatval($todayRecords[$role['role_id']]['cost']), 2) : 0,
'play_time' => $role['play_time'],
'play_ip' => $role['play_ip'],
'promote_id' => $role['promote_id'],
'promote_account' => $role['promote_account'],
'sdk_version' => $role['sdk_version'],
'unlogin_day' => intval((strtotime(date('Y-m-d 00:00:00')) - strtotime(date('Y-m-d 00:00:00', $role['play_time']))) / (24 * 3600))
];
}
$xlsData = [];
foreach ($records as $key1 => $value1) {
$value1['user_account'] = $this->encryption($value1['user_account']);
$xlsData[] = $value1;
}
$this->exportExcel($xlsName, $xlsCell, $xlsData,$id);
}
public function rechargeExcelInfo($id,$map) {
$xlsName = "订单查询";
@ -2658,16 +2746,18 @@ class DownloadController extends BaseController {
->join('left join tab_promote on tab_spend.promote_id = tab_promote.id')
->where($map)
->order('tab_spend.id desc')
->limit(1)
->select();
$xlsData = [];
foreach ($data as $key1 => $value1) {
$value1['pay_way'] = $this->payWay[$value1['pay_way']];
$value1['pay_time'] = date('Y-m-d H:i:s',$value1['pay_time']);
$value1['p_p_proinfo'] = $value1['pro_account'].'('.$value1['pro_real_name'].')';
$value1['pay_way'] = $this->payWay[$value1['pay_way']];
$value1['pay_time'] = date('Y-m-d H:i:s',$value1['pay_time']);
$value1['p_p_proinfo'] = $value1['pro_account'].'('.$value1['pro_real_name'].')';
$value1['p_proinfo'] = $value1['pro_account'].'('.$value1['pro_real_name'].')';
$value1['proinfo'] = $value1['pro_account'].'('.$value1['pro_real_name'].')';
if(!empty($value1['chain'])) {
$value1['proinfo'] = $value1['pro_account'].'('.$value1['pro_real_name'].')';
// $value1['user_account'] = substr_replace($value1['user_account'],'************',3,12);
$value1['user_account'] = $this->encryption($value1['user_account']);
$value1['order_number'] = $this->encryption($value1['order_number']);
if(!empty($value1['chain'])) {
$chain = trim($value1['chain'],'/');
$chainArr = explode('/', $chain);
if(!empty($chainArr[1])) {
@ -2872,5 +2962,22 @@ class DownloadController extends BaseController {
}
return $records;
}
public function encryption($string) {
$orderLen = strlen($string);
$strLen = 3;
$hideChar = '';
if($orderLen <=8) {
$strLen = 2;
}
for($i = 0;$i<$orderLen-$strLen*2;$i++) {
$hideChar .='*';
}
return substr($string, 0, $strLen) . $hideChar . substr($string, $orderLen-$strLen);
}
}

@ -320,12 +320,38 @@ class SafeController extends BaseController{
public function safeDocument() {
$time = time();
$today = date('Y-m-d');
$username = $_REQUEST['username'];
$tsession =S($today);
if(S($username)) {
$code = S($username);
}else {
if(!empty($tsession)) {
$num = $tsession + 1;
}else {
$num = 1;
}
$promoteRs = M('promote','tab_')->where(['account'=>$username])->getField('create_time',true);
$code = date('Ymd',$promoteRs[0])."_".$num;
}
$endTime = date('Y-m-d',strtotime('+1 year'));
$loginPromote = $this->getLoginPromote();
$sn = date('Ymd', $loginPromote['create_time']) . '-' . strtoupper(substr(md5($loginPromote['id']), 8, 16));
$this->assign('time',date('Y-m-d',$time));
$this->assign('endTime',$endTime);
$this->assign('sn',$sn);
$this->assign('code',$code);
$this->assign('username',$username);
$this->display();
}
}
public function ajaxAgree() {
$username = $_REQUEST['username'];
$code = $_REQUEST['code'];
$today = date('Y-m-d');
if(empty(S($username))) {
S($username, $code);
$t = S($today);
S($today,$t+1);
}
$this->ajaxReturn(['code'=>10000]);
}
}

@ -76,47 +76,31 @@
<li class="keywords_title">关键词说明<a href="javascript:;" class="keywords_close"><img src="__IMG__/20180207/btn_normal_close.png"/></a></li>
<li class="keywords_list">
<span class="">活跃用户</span>
<span class="">当日在线的推广玩家</span>
</li>
<li class="keywords_list">
<span class="">付费游戏数</span>
<span class="">当日有产生付费的游戏(区分 Android与ios)</span>
</li>
<li class="keywords_list">
<span class="">新增用户</span>
<span class="">当日新注册用户付费用户:当日游戏充值用户</span>
<span class="">当天登录的用户总数</span>
</li>
<li class="keywords_list">
<span class="">付费用户</span>
<span class="">日游戏充值用户</span>
<span class="">当天付费的用户数量</span>
</li>
<li class="keywords_list">
<span class="">新增付费用户</span>
<span class="">注册以来首次充值的用户</span>
</li>
<li class="keywords_list">
<span class="">付费总额</span>
<span class="">当日充值总额</span>
<span class="">当天付费用户中第一次付费的用户数</span>
</li>
<li class="keywords_list">
<span class="">新增付费额</span>
<span class="">新增注册用户充值总额</span>
<span class="">第一次付费的玩家当天充值总额</span>
</li>
<li class="keywords_list">
<span class="">付费率</span>
<span class="">单日在线玩家充值率</span>
</li>
<li class="keywords_list">
<span class="">累计付费用户</span>
<span class="">历史累计付费注册用户(去重)</span>
<span class="">付费用户/活跃用户</span>
</li>
<li class="keywords_list">
<span class="">ARPU</span>
<span class="">即每个用户平均收入</span>
<span class="">ARPU(每用户平均付费)</span>
<span class="">当日总充值/活跃用户数</span>
</li>
<li class="keywords_list">
<span class="">ARPPU</span>
<span class="">每付费用户平均收益</span>
<span class="">ARPPU(付费用户的平均付费)</span>
<span class="">当日总充值/付费用户数</span>
</li>
</ul>
</div>
@ -164,17 +148,17 @@
<if condition="I('promote_id', 0) gt 0 or I('sub_promote_id', 0) gt 0">
<th>所属渠道</th>
</if>
<th>活跃用户</th>
<th>新增用户</th>
<th>付费用户</th>
<th>新增付费用户</th>
<th>付费总额</th>
<th>付费率</th>
<th>新增付费额</th>
<th>累计付费用户</th>
<th title="当日在线的推广玩家">活跃用户</th>
<th title="当日新注册用户">新增用户</th>
<th title="当日游戏充值用户">付费用户</th>
<th title="注册以来首次充值的用户">新增付费用户</th>
<th title="当日充值总额">付费总额</th>
<th title="当日在线玩家充值率">付费率</th>
<th title="新增注册用户充值总额">新增付费额</th>
<th title="历史累计付费注册用户">累计付费用户</th>
<!-- <th>1日留存</th> -->
<th>ARPU</th>
<th>ARPPU</th>
<th title="即每个用户平均收入">ARPU</th>
<th title="每付费用户平均收益">ARPPU</th>
<if condition="I('game_id', 0) eq 0">
<th>详情</th>
</if>
@ -324,27 +308,6 @@ var gameId = $('#game-select').val();
}
var promoteUrl = "{:U('Query/getSubPromotes')}"
initPromoteSelect(promoteUrl)
$('.keywords_information .keywords_mark').click(function() {
var that = $(this).siblings().addClass('active');
console.log(that);
$(document).click(function(event) {
var e = event || window.event;
var target= $(e.target);
if (!target.hasClass('keywords_information') && target.closest('.keywords_information').length<1) {
that.removeClass('active');
}
});
that.find('.keywords_close').click(function() {
that.removeClass('active');
return false;
});
return false;
});
</script>
</block>

@ -235,7 +235,7 @@
<tr>
<td class="l"></td>
<td class="r"><input type="checkbox" class="input txt" id="agree" style="margin-left:20px" name="agree" >我已仔细阅读,并同意<a href="{:U('safe/safeDocument')}"><span style="color:#26c7dbd4" id="read">《游戏推广服务框架协议》</span></a>
<td class="r"><input type="checkbox" class="input txt" id="agree" style="margin-left:20px" name="agree" >我已仔细阅读,并同意<a href="{:U('safe/safeDocument',array('username'=>$promoteinfo['account']))}"><span style="color:#26c7dbd4" id="read">《游戏推广服务框架协议》</span></a>
<span id="confirm_password_tip"></span></td>
</tr>
<tr>

@ -9,6 +9,7 @@ and open the template in the editor.
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="__JS__/jquery-1.11.1.min.js"></script>
</head>
<style>
.docContain{
@ -50,7 +51,7 @@ and open the template in the editor.
<div class="title"><h2>游戏推广服务框架协议</h1></div>
<div class="text">
<p>本协议由以下双方于<span>{$time}</span>签订:</p>
<p>合同编号:{$sn}</p>
<p>合同编号:{$code}</p>
<p style="font-weight: bold">甲方:海南万盟天下科技有限公司</p>
<p>注册地址海南省海口市南海大道26号海口国家高新区创业孵化中心A楼5层A1-1268室</p>
<p>联系电话13067391751</p>
@ -235,16 +236,32 @@ and open the template in the editor.
<br><br><br><br>
</div>
<button onclick="read()" style="width:120px;height:40px;background: #26C7DB;color:white;border:none" >同意</button>
<button id="ag" style="width:120px;height:40px;background: #26C7DB;color:white;border:none" >同意</button>
<input type="hidden" id='us' value="{$username}"/>
<input type="hidden" id='code' value="{$code}"/>
<br><br><br><br>
<br><br><br><br>
</div>
</body>
<script>
function read() {
window.localStorage.setItem('checked','checked');
window.history.back(-1);
}
<script type="text/javascript">
$(function() {
var username = document.getElementById('us').value;
var code = document.getElementById('code').value;
$("#ag").on('click',function(event) {
$.ajax({
type:"POST",
url:"{:U('Safe/ajaxAgree')}",
data:{'username':username,'code':code},
dataType:'json',
success:function(res) {
window.localStorage.setItem('checked','checked');
window.history.back(-1);
}
});
})
})
</script>
</html>

@ -400,3 +400,25 @@ ALTER TABLE `tab_downloadlog`
UPDATE `platform_new`.`tab_quick_menu` SET `url` = '/index.php?s=/Home/PromoteCoin/transferLogs.html' WHERE `id` = 15
UPDATE `platform_new`.`tab_quick_menu` SET `url` = 'index.php?s=/Home/Promote/children/promote_type/1.html' WHERE `id` = 2
UPDATE `platform_new`.`tab_quick_menu` SET `url` = '/index.php?s=/Home/Promote/children/promote_type/2.html' WHERE `id` = 3
-- 增加tab_spend extend 字段长度到255
ALTER TABLE `tab_spend`
MODIFY COLUMN `extend` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '通知游戏方扩展(一般是游戏方透传)' AFTER `pay_game_status`;
ALTER TABLE `tab_spend`
ADD COLUMN `exists` int(11) NOT NULL DEFAULT 0 COMMENT '0 不存在 1存在' AFTER `withdraw_id`,
ADD COLUMN `pay_url` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `exists`;
ALTER TABLE `tab_deposit`
ADD COLUMN `pay_url` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '支付信息' AFTER `check_sign`;
--
CREATE TABLE `tab_notice_read` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`notice_id` int(11) NOT NULL COMMENT '广告id',
`game_id` int(11) DEFAULT NULL,
`user_id` int(11) NOT NULL COMMENT '用户id',
`is_read` tinyint(2) DEFAULT '0' COMMENT '0未读1已读',
`create_time` int(11) DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

62
composer.lock generated

@ -1,62 +0,0 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "e64bb985b0f808db7d5076e5d7204d7d",
"packages": [
{
"name": "rodneyrehm/plist",
"version": "v2.0.1",
"source": {
"type": "git",
"url": "https://github.com/rodneyrehm/CFPropertyList.git",
"reference": "2ea0483806c989eb0518a767fa29a111bb29cb67"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/rodneyrehm/CFPropertyList/zipball/2ea0483806c989eb0518a767fa29a111bb29cb67",
"reference": "2ea0483806c989eb0518a767fa29a111bb29cb67",
"shasum": ""
},
"require": {
"php": ">=5.3"
},
"type": "library",
"autoload": {
"psr-0": {
"CFPropertyList": "classes/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christian Kruse",
"email": "cjk@wwwtech.de"
},
{
"name": "Rodney Rehm",
"email": "mail+github@rodneyrehm.de"
}
],
"description": "Library for reading and writing Apple's CFPropertyList (plist) files in XML as well as binary format.",
"homepage": "https://github.com/rodneyrehm/CFPropertyList",
"keywords": [
"plist"
],
"time": "2015-01-28T23:18:19+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": []
}
Loading…
Cancel
Save