Merge branch 'dev'

master
ELF 5 years ago
commit 4192533314

@ -8,6 +8,8 @@
namespace Admin\Controller;
use Admin\Model\PromoteModel;
class AjaxController extends ThinkController{
/**
@ -125,4 +127,9 @@ class AjaxController extends ThinkController{
$this->AjaxReturn($return_msg);
}
}
public function getPromotersByLevel($level=1)
{
$this->ajaxReturn(['code'=>1, 'msg'=>'获取成功', 'data'=>(new PromoteModel)->getPromotersByLevel($level)]);
}
}

@ -19,9 +19,15 @@ class MemberController extends ThinkController
if($_REQUEST['promote_id']=='UC'){
$maps['tab_user.promote_account'] = 'UC用户';
$hav .= "tab_user.promote_account = 'UC用户' ";
}else{
$maps['tab_user.promote_id'] = I('promote_id');
$hav .= "tab_user.promote_id = " . I('promote_id');
} else if ($_REQUEST['promote_id']==0) {
$maps['tab_user.promote_id'] = 0;
$hav .= "tab_user.promote_id = 0";
} else{
$promoter_ids = D("Promote")->where("parent_id={$_REQUEST['promote_id']} or grand_id={$_REQUEST['promote_id']} or id={$_REQUEST['promote_id']}")->field('id')->select();
if ($promoter_ids) {
$maps['tab_user.promote_id'] = ['in', implode(',', array_column($promoter_ids, 'id'))];
$hav .= "tab_user.promote_id in (".implode(',', array_column($promoter_ids, 'id')).") ";
}
}
}
if(I('type',1) == 1){
@ -56,8 +62,7 @@ class MemberController extends ThinkController
$maps['tab_user.register_type'] = ['in',[0,3,4,5,6]];
}
}
if (isset($_REQUEST['account'])) {
empty($hav) || $hav .= ' AND ';
$hav .= "tab_user.account like '%" . I('account') . "%'";
@ -105,10 +110,10 @@ class MemberController extends ThinkController
unset($_REQUEST['status']);
}
if (isset($_REQUEST['viplevel'])) {
$havs = get_vip_level_limit('recharge_total',$_REQUEST['viplevel']);
}
if (isset($_REQUEST['viplevel'])) {
$havs = get_vip_level_limit('recharge_total',$_REQUEST['viplevel']);
}
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
@ -158,13 +163,13 @@ class MemberController extends ThinkController
->select(false);
$data = $usermodel->table('('.$sql1.') as a ')->field('a.id,a.device_number,a.age_status,a.account,a.balance,a.gold_coin,a.alipay,a.promote_id,a.register_type,a.promote_account,a.register_time,a.lock_status,a.register_way,a.register_type,a.register_ip,a.login_time,(a.deposit_total+IFNULL(sum(ss.pay_amount),0)) as recharge_total,check_status')
->join('left join tab_spend as ss on ss.user_id=a.id AND ss.pay_status = 1')
->join('left join tab_spend as ss on ss.user_id=a.id AND ss.pay_status = 1')
->join(isset($_REQUEST['game_id']) ? "tab_user_play as up on up.user_id = a.id and up.game_id = {$_REQUEST['game_id']} " : false)
->page($page, $row)
->having($havs)
->group('a.id')
->order($order)
->select();
// var_dump($data);die;
//计数
@ -172,6 +177,7 @@ class MemberController extends ThinkController
$sql = M('user', 'tab_')->field('tab_user.id,(IFNULL(sum(b.pay_amount),0) + IFNULL(sum(ss.pay_amount),0)) AS recharge_total')
->join('left join tab_deposit AS b ON tab_user.id = b.user_id AND b.pay_status = 1')
->join('left join tab_spend as ss on ss.user_id=tab_user.id AND ss.pay_status = 1')
->join(isset($_REQUEST['game_id']) ? "tab_user_play as up on up.user_id = tab_user.id and up.game_id = {$_REQUEST['game_id']} " : false)
->where($map)
->group('tab_user.id')
->where($hav)

@ -215,4 +215,160 @@ class PromoteCoinController extends ThinkController {
$this->display();
}
//获取线下充值列表
public function offlineList($p=0)
{
//获取记录
$map = array();
$map['pay_type'] = 2;
$map['is_del'] = 0;
//其他条件查询
if(isset($_REQUEST['promote_account'])){
$map['promote_account']=array('like','%'.trim($_REQUEST['promote_account']).'%');
unset($_REQUEST['promote_account']);
}
if(isset($_REQUEST['time-start'])&&isset($_REQUEST['time-end'])){
$map['create_time'] =array('BETWEEN',array(strtotime($_REQUEST['time-start']),strtotime($_REQUEST['time-end'])+24*60*60-1));
unset($_REQUEST['time-start']);unset($_REQUEST['time-end']);
}elseif(isset($_REQUEST['time-start'])){
$map['create_time'] = ['GT',strtotime(I('time-start'))];
unset($_REQUEST['time-start']);
}elseif(isset($_REQUEST['time-end'])){
$map['create_time'] = ['LT',strtotime(I('time-end'))+86399];
unset($_REQUEST['time-end']);
}
if(isset($_REQUEST['order_status'])){
$map['order_status']=$_REQUEST['order_status'];
unset($_REQUEST['order_status']);
}
$data = D("CoinPayOrder")->lists($_GET["p"], $map, $order);
// dump($data);
//执行查询
// parent::order_lists("CoinPayOrder",$_GET["p"],$extend);
$this->meta_title = '线下充值审核列表';
$this->assign('list_data',$data['data']);
$this->assign('_page',$data['page']);
$this->display();
# code...
}
public function offlineOrderInfo()
{
if(!isset($_REQUEST['id'])){
exit("参数错误");
}
$id = $_REQUEST['id'];
$data = D("CoinPayOrder")->info($id);
$this->meta_title = '线下充值审核详情';
$this->assign('data', $data);
$this->display();
# code...
}
//审核通过
public function offlineAgree()
{
if(!isset($_REQUEST['ids']) || count($_REQUEST['ids']) < 1){
exit("参数错误");
}
$ids = I("ids");
$count = count($ids);
//执行操作
for ($i=0; $i <$count; $i++) {
$this->doOfflineAgree($ids[$i]);
}
$this->success("批量通过成功");
# code...
}
//批量审核拒绝
public function offlineReject()
{
if(!isset($_REQUEST['ids']) || count($_REQUEST['ids']) < 1){
exit("参数错误");
}
$ids = I("ids");
$count = count($ids);
//执行操作
for ($i=0; $i <$count; $i++) {
$this->orderReject($ids[$i]);
}
$this->success("批量拒绝成功");
# code...
}
public function doOfflineAgree($id)
{
//获取记录
$order = D("CoinPayOrder")->info($id);
if($order['order_status'] != 2){
return;
}
//
$balance_map['promote_id'] = $order['promote_id'];
$balance_map['game_id'] = 0;
$balance = M('promote_balance_coin', 'tab_')->where($balance_map)->find();
$this->balance_coin_update($order,$balance);//更新汇总
$this->coin_record_add($order,$balance); //添加流水
$this->promote_balance_coin_update($order); //更新推广员平台币余额
$this->orderAgree($id);//更新表
}
public function orderReject($id)
{
$order = D("CoinPayOrder")->info($id);
if($order['order_status'] != 2){
return;
}
$savedata = array();
$auth = $_SESSION['onethink_admin']['user_auth'];
$savedata['auditor_id']=$auth['uid'];
$savedata['auditor_account']=$auth['username'];
$savedata['auditor_time']=time();
$savedata['order_status']=-1;
D("CoinPayOrder")->updateData($savedata,$id);
# code...
}
public function orderAgree($id)
{
$savedata = array();
$auth = $_SESSION['onethink_admin']['user_auth'];
$savedata['auditor_id']=$auth['uid'];
$savedata['auditor_account']=$auth['username'];
$savedata['auditor_time']=time();
$savedata['order_status']=4;
D("CoinPayOrder")->updateData($savedata,$id);
# code...
}
// 添加流水
public function coin_record_add($order,$balance){
$data['sn']=date('Ymd') . date('His') . sp_random_num(6);
$data['type']=1;
$data['sub_type'] =1;
$data['target_id'] = $order['promote_id'];
$data['target_type'] = 1;
$data['ref_id'] = $order['id'];
$data['coin'] = $order['real_amount'];
$data['balance_coin'] = $balance['num']+$order['coin_num'];
$data['remark'] = $order['remark'];
$data['create_time']=time();
$data['description']='线下充值';
M('promote_coin_record', 'tab_')->data($data)->add();
}
//更新汇总
public function balance_coin_update($order,$balance){
if(!empty($balance)){
$map['promote_id'] = $order['promote_id'];
$map['game_id'] = 0;
M('promote_balance_coin', 'tab_')->where($map)->setInc('num',$order['coin_num']);
}else{
$balance['promote_id']= $order['promote_id'];
$balance['game_id'] = 0;
$balance['num']=$order['coin_num'];
M('promote_balance_coin', 'tab_')->data($balance)->add();
}
}
//更新推广员平台币余额
public function promote_balance_coin_update($order){
$map['id'] = $order['promote_id'];
M('promote', 'tab_')->where($map)->setInc('balance_coin',$order['coin_num']);
}
}

@ -1,5 +1,6 @@
<?php
namespace Admin\Controller;
use mysql_xdevapi\Exception;
use User\Api\PromoteApi;
use User\Api\UserApi;
use Org\XiguSDK\Xigu;
@ -899,4 +900,55 @@ unset($_REQUEST['parent_id']);
}
}
public function shortCutMenu($p = 1) {
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
$row=10;
$this->meta_title = '快捷菜单管理';
$this->m_title = '站点设置(推广员后台)';
$list = M("quick_menu","tab_")->page($page,$row)->select();
$count = M("quick_menu","tab_")->count();
$page = set_pagination($count,$row);
if($page) {$this->assign('_page', $page);}
$this->assign('list',$list);
$this->display();
}
public function shortCutMenuEdit() {
$id = I("id");
$where['id'] = $id;
$data = M("quick_menu","tab_")->where($where)->find();
$this->assign("data",$data);
$this->meta_title = '快捷菜单管理编辑';
$this->m_title = '站点设置(推广员后台)';
$this->display();
}
public function shortCutMenuSave() {
$where['id'] = I("id");
$save['icon'] = I("icon");
$save['name'] = I("name");
M('quick_menu', 'tab_')->startTrans(); //事物
try{
M('quick_menu', 'tab_')->where($where)->save($save);
}catch (Exception $e) {
M('quick_menu', 'tab_')->rollback();//回滚
}
M('quick_menu', 'tab_')->commit(); //提交事物
$this->success('保存成功',U("promote/shortCutMenu"));
}
}

@ -44,21 +44,23 @@ class RechargeSumController extends ThinkController{
$map['pay_way'] = array('egt',0);
}
if(!empty($_REQUEST['promote_id']) && $_REQUEST['promote_id'] != "ALL"){
switch ($_REQUEST['promote_id']) {
case 'GUANFANG':
$map['promote_id'] = 0;
$rmap['promote_id'] = 0;
break;
case 'PROMOTE':
$map['promote_id'] = array('neq',0);
$rmap['promote_id'] = array('neq',0);
break;
default:
$map['promote_id'] = $_REQUEST['promote_id'];
$rmap['promote_id'] = $_REQUEST['promote_id'];
break;
}
if(!empty($_REQUEST['promote_id'])){
// switch ($_REQUEST['promote_id']) {
// case 'GUANFANG':
// $map['promote_id'] = 0;
// $rmap['promote_id'] = 0;
// break;
// case 'PROMOTE':
// $map['promote_id'] = array('neq',0);
// $rmap['promote_id'] = array('neq',0);
// break;
// default:
// $map['promote_id'] = $_REQUEST['promote_id'];
// $rmap['promote_id'] = $_REQUEST['promote_id'];
// break;
// }
$promoter_ids = D("Promote")->where("parent_id={$_REQUEST['promote_id']} or grand_id={$_REQUEST['promote_id']} or id={$_REQUEST['promote_id']}")->field('id')->select();
$promoter_ids ? $rmap['promote_id'] = $map['promote_id'] = ['in', implode(',', array_column($promoter_ids, 'id'))] : null;
}
//当天注册人数

@ -11,65 +11,72 @@ class SpendController extends ThinkController {
const model_name = 'Spend';
public function lists(){
if(isset($_REQUEST['user_account'])){
$map['user_account']=array('like','%'.trim($_REQUEST['user_account']).'%');
$map['tab_spend.user_account']=array('like','%'.trim($_REQUEST['user_account']).'%');
unset($_REQUEST['user_account']);
}
if(isset($_REQUEST['spend_ip'])){
$map['spend_ip']=array('like','%'.trim($_REQUEST['spend_ip']).'%');
$map['tab_spend.spend_ip']=array('like','%'.trim($_REQUEST['spend_ip']).'%');
unset($_REQUEST['spend_ip']);
}
if(isset($_REQUEST['time-start'])&&isset($_REQUEST['time-end'])){
$map['pay_time'] =array('BETWEEN',array(strtotime($_REQUEST['time-start']),strtotime($_REQUEST['time-end'])+24*60*60-1));
$map['tab_spend.pay_time'] =array('BETWEEN',array(strtotime($_REQUEST['time-start']),strtotime($_REQUEST['time-end'])+24*60*60-1));
unset($_REQUEST['time-start']);unset($_REQUEST['time-end']);
}elseif(isset($_REQUEST['time-start'])){
$map['pay_time'] = ['GT',strtotime(I('time-start'))];
$map['tab_spend.pay_time'] = ['GT',strtotime(I('time-start'))];
unset($_REQUEST['time-start']);
}elseif(isset($_REQUEST['time-end'])){
$map['pay_time'] = ['LT',strtotime(I('time-end'))+86399];
$map['tab_spend.pay_time'] = ['LT',strtotime(I('time-end'))+86399];
unset($_REQUEST['time-end']);
}
if(isset($_REQUEST['start'])&&isset($_REQUEST['end'])){
$map['pay_time'] =array('BETWEEN',array(strtotime($_REQUEST['start']),strtotime($_REQUEST['end'])+24*60*60-1));
$map['tab_spend.pay_time'] =array('BETWEEN',array(strtotime($_REQUEST['start']),strtotime($_REQUEST['end'])+24*60*60-1));
unset($_REQUEST['start']);unset($_REQUEST['end']);
}elseif(isset($_REQUEST['start'])){
$map['pay_time'] = ['GT',strtotime(I('start'))];
$map['tab_spend.pay_time'] = ['GT',strtotime(I('start'))];
unset($_REQUEST['start']);
}elseif(isset($_REQUEST['end'])){
$map['pay_time'] = ['LT',strtotime(I('end'))+86399];
$map['tab_spend.pay_time'] = ['LT',strtotime(I('end'))+86399];
unset($_REQUEST['end']);
}
if(isset($_REQUEST['game_name'])){
if($_REQUEST['game_name']=='全部'){
unset($_REQUEST['game_name']);
}else{
$map['game_name']=$_REQUEST['game_name'];
$map['tab_spend.game_name']=$_REQUEST['game_name'];
unset($_REQUEST['game_name']);
}
}
if(isset($_REQUEST['server_name'])){
$map['server_name']=$_REQUEST['server_name'];
$map['tab_spend.server_name']=$_REQUEST['server_name'];
unset($_REQUEST['server_name']);
}
if(isset($_REQUEST['pay_order_number'])){
$map['pay_order_number']=array('like','%'.trim($_REQUEST['pay_order_number']).'%');
$map['tab_spend.pay_order_number']=array('like','%'.trim($_REQUEST['pay_order_number']).'%');
unset($_REQUEST['pay_order_number']);
}
if(isset($_REQUEST['pay_status'])){
$map['pay_status']=$_REQUEST['pay_status'];
$map['tab_spend.pay_status']=$_REQUEST['pay_status'];
unset($_REQUEST['pay_status']);
}
if(isset($_REQUEST['pay_way'])){
if($_REQUEST['pay_way']==2){
$map['pay_way']=['in','2,3,4'];
$map['tab_spend.pay_way']=['in','2,3,4'];
}else{
$map['pay_way']=$_REQUEST['pay_way'];
$map['tab_spend.pay_way']=$_REQUEST['pay_way'];
}
unset($_REQUEST['pay_way']);
}
if(isset($_REQUEST['pay_game_status'])){
$map['pay_game_status']=$_REQUEST['pay_game_status'];
$map['tab_spend.pay_game_status']=$_REQUEST['pay_game_status'];
unset($_REQUEST['pay_game_status']);
}
if(isset($_REQUEST['promote_id'])) {
$map['_complex'] = ['tp.parent_id'=>$_REQUEST['promote_id'], 'tp.grand_id'=>$_REQUEST['promote_id'], 'tp.id'=>$_REQUEST['promote_id'], '_logic' => 'or'];
$tab_promote_join = "left join tab_promote as tp on tp.id = tab_spend.promote_id";
//unset($_REQUEST['promote_id']);
} else {
$tab_promote_join = false;
}
if($_REQUEST['data_order']!=''){
$data_order=reset(explode(',',$_REQUEST['data_order']));
@ -84,9 +91,9 @@ class SpendController extends ThinkController {
$map1=$map;
$map1['pay_status']=1;
$total=null_to_0(D(self::model_name)->where($map1)->sum('pay_amount'));
$ttotal=null_to_0(D(self::model_name)->where('pay_time'.total(1))->where(array('pay_status'=>1))->sum('pay_amount'));
$ytotal=null_to_0(D(self::model_name)->where('pay_time'.total(5))->where(array('pay_status'=>1))->sum('pay_amount'));
$total=null_to_0(D(self::model_name)->where($map1)->join($tab_promote_join)->sum('pay_amount'));
$ttotal=null_to_0(D(self::model_name)->where('pay_time'.total(1))->where(array('pay_status'=>1))->join($tab_promote_join)->sum('pay_amount'));
$ytotal=null_to_0(D(self::model_name)->where('pay_time'.total(5))->where(array('pay_status'=>1))->join($tab_promote_join)->sum('pay_amount'));
$this->assign('total',$total);
$this->assign('ttotal',$ttotal);
$this->assign('ytotal',$ytotal);
@ -104,6 +111,6 @@ class SpendController extends ThinkController {
$this->assign('_page',$data['page']);
$this->display();
}
}

@ -199,9 +199,14 @@ class TestResourceController extends ThinkController
$arrUserId = array_column($data,'id');
$logId = implode(',',$arrUserId);
$logRead = M('protect_log_read','tab_')
->where("log_id IN({$logId}) and promote_id = {$promote_id}")
->select();
if ($logId) {
$logRead = M('protect_log_read','tab_')
->where("log_id IN({$logId}) and promote_id = {$promote_id}")
->select();
}
else {
$logRead = [];
}
$upsetData = array_column($logRead,'log_id');

@ -569,6 +569,11 @@ function think_ucenter_md5($str, $key = 'ThinkUCenter'){
$map['role_name'] = trim($_REQUEST['role_name']);
unset($_REQUEST['role_name']);
}
if (isset($_REQUEST['promote_id'])) {
$promoter_ids = D("Promote")->where("parent_id={$_REQUEST['promote_id']} or grand_id={$_REQUEST['promote_id']} or id={$_REQUEST['promote_id']}")->field('id')->select();
$promoter_ids ? $map['promote_id'] = ['in', implode(',', array_column($promoter_ids, 'id'))] : null;
}
empty(I('user_account')) || $map['user_account'] = ['like',"%".I('user_account')."%"];
$list = $this->lists(M('user_play_info', 'tab_'), $map, 'play_time desc');
$this->assign('list', $list);

@ -1 +0,0 @@
{"news":[{"time":"0:00","count":0},{"time":"1:00","count":0},{"time":"2:00","count":0},{"time":"3:00","count":0},{"time":"4:00","count":0},{"time":"5:00","count":0},{"time":"6:00","count":0},{"time":"7:00","count":0},{"time":"8:00","count":0},{"time":"9:00","count":0},{"time":"10:00","count":0},{"time":"11:00","count":0},{"time":"12:00","count":0},{"time":"13:00","count":0},{"time":"14:00","count":0},{"time":"15:00","count":0},{"time":"16:00","count":0},{"time":"17:00","count":0},{"time":"18:00","count":0},{"time":"19:00","count":0},{"time":"20:00","count":0},{"time":"21:00","count":0},{"time":"22:00","count":0},{"time":"23:00","count":0}],"sum":{"news":0,"active":0,"player":0,"money":0},"active":[{"time":"0:00","count":0},{"time":"1:00","count":0},{"time":"2:00","count":0},{"time":"3:00","count":0},{"time":"4:00","count":0},{"time":"5:00","count":0},{"time":"6:00","count":0},{"time":"7:00","count":0},{"time":"8:00","count":0},{"time":"9:00","count":0},{"time":"10:00","count":0},{"time":"11:00","count":0},{"time":"12:00","count":0},{"time":"13:00","count":0},{"time":"14:00","count":0},{"time":"15:00","count":0},{"time":"16:00","count":0},{"time":"17:00","count":0},{"time":"18:00","count":0},{"time":"19:00","count":0},{"time":"20:00","count":0},{"time":"21:00","count":0},{"time":"22:00","count":0},{"time":"23:00","count":0}],"player":[{"time":"0:00","count":0},{"time":"1:00","count":0},{"time":"2:00","count":0},{"time":"3:00","count":0},{"time":"4:00","count":0},{"time":"5:00","count":0},{"time":"6:00","count":0},{"time":"7:00","count":0},{"time":"8:00","count":0},{"time":"9:00","count":0},{"time":"10:00","count":0},{"time":"11:00","count":0},{"time":"12:00","count":0},{"time":"13:00","count":0},{"time":"14:00","count":0},{"time":"15:00","count":0},{"time":"16:00","count":0},{"time":"17:00","count":0},{"time":"18:00","count":0},{"time":"19:00","count":0},{"time":"20:00","count":0},{"time":"21:00","count":0},{"time":"22:00","count":0},{"time":"23:00","count":0}],"money":[{"time":"0:00","count":0},{"time":"1:00","count":0},{"time":"2:00","count":0},{"time":"3:00","count":0},{"time":"4:00","count":0},{"time":"5:00","count":0},{"time":"6:00","count":0},{"time":"7:00","count":0},{"time":"8:00","count":0},{"time":"9:00","count":0},{"time":"10:00","count":0},{"time":"11:00","count":0},{"time":"12:00","count":0},{"time":"13:00","count":0},{"time":"14:00","count":0},{"time":"15:00","count":0},{"time":"16:00","count":0},{"time":"17:00","count":0},{"time":"18:00","count":0},{"time":"19:00","count":0},{"time":"20:00","count":0},{"time":"21:00","count":0},{"time":"22:00","count":0},{"time":"23:00","count":0}]}

@ -0,0 +1,82 @@
<?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 CoinPayOrderModel extends Model{
/**
* 构造函数
* @param string $name 模型名称
* @param string $tablePrefix 表前缀
* @param mixed $connection 数据库连接信息
*/
public function __construct($name = '', $tablePrefix = '', $connection = '') {
/* 设置默认的表前缀 */
$this->tablePrefix ='tab_';
/* 执行构造方法 */
parent::__construct($name, $tablePrefix, $connection);
}
public function lists($p=1, $map=array(), $order, $field=true)
{
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
if(isset($_REQUEST['row'])) {
$row = $_REQUEST['row'];
} else {
$row = 10;
}
$list = $this->field($field?:true)
->where($map)
->page($page, $row)
->order($order?$order:'pay_time desc')
->select();
$count = $this->where($map)->count();
$data['data'] = $list;
$page = set_pagination($count,$row);
if($page) {
$data['page']=$page;
}
return $data;
}
//获取单个信息
public function info($id)
{
$info = $this->field($field?:true)
->where("id = '".$id."'")
->find();
if(!empty($info['voucher_img'])){
$info['voucher_img'] = get_cover($info['voucher_img'])['path'];
}
return $info;
# code...
}
//更新
public function updateData($save,$id)
{
if(!empty($save['id'])){
return false;
}
return $this->where("id = {$id}")->save($save);
# code...
}
}

@ -371,4 +371,21 @@ class PromoteModel extends Model{
return $user;
}
public function getPromotersByLevel($level=1)
{
$result = [];
switch ($level) {
case 1: // 会长
$result = $this->field("id, nickname")->where("grand_id = 0 and parent_id = 0")->select();
break;
case 2: // 组长
$result = $this->field("id, nickname")->where("grand_id = 0 and parent_id > 0")->select();
break;
case 3: //组员
$result = $this->field("id, nickname")->where("parent_id > 0 and grand_id > 0")->select();
break;
}
return $result;
}
}

@ -720,14 +720,14 @@ protected function _after_select(&$result,$options){
} else {
$row = 10;
}
$list = $this->field($field?:true)
$list = $this->field("tab_spend.*")
->join("left join tab_promote as tp on tp.id = tab_spend.promote_id")
->where($map)
->page($page, $row)
->order($order?$order:'pay_time desc')
->order($order?$order:'tab_spend.pay_time desc')
->select();
$count = $this->where($map)->count();
$count = $this->where($map)->join("left join tab_promote as tp on tp.id = tab_spend.promote_id")->count();
$data['data'] = $list;
@ -738,6 +738,7 @@ protected function _after_select(&$result,$options){
}
return $data;
}
}
}

@ -1051,16 +1051,31 @@ class UserModel extends Model{
}
}
public function login_sdk($account,$password,$type=1,$game_id,$game_name,$sdk_version){
public function login_sdk($account,$password,$type=1,$game_id,$game_name,$sdk_version,$unique_code){
$map['account'] = $account;
/* 获取用户数据 */
$user = $this->where($map)->find();
if(is_array($user) && $user['lock_status'] && $user['check_status']){
/* 验证用户密码 */
if(think_ucenter_md5($password, UC_AUTH_KEY) === $user['password']||$type==2){
$token = $this->updateLogin_($user['id'],$account,$password,$user['fgame_id'],$game_id,$game_name); //更新用户登录信息
$this->user_login_record2($user,$type,$game_id,$game_name,$sdk_version);
return array("user_id"=>$user['id'],"token"=>$token); //登录成功返回用户ID
$test_resource = M('test_resource','tab_')->where("user_id=%s and apply_status=2",$user['id'])->find();//测试资源(扶持号)
if($test_resource){ //扶持号
if($user['device_number'] && $unique_code && $user['device_number'] !=$unique_code){ //#当前登录设备信息与历史登录设备信息不一致,触发账户冻结
$this->sdklogin_device_error($user,$test_resource,$unique_code);
$this->sdklogin_ip_error($user,$test_resource,get_client_ip());
return -1;//扶持号被禁用
}else{
$token = $this->sdklogin_update($user,$account,$password,$user['fgame_id'],$game_id,$game_name,$unique_code); //更新用户登录信息
$this->user_login_record2($user,$type,$game_id,$game_name,$sdk_version);
$this->sdklogin_ip_error($user,$test_resource,get_client_ip());
return array("user_id"=>$user['id'],"token"=>$token); //登录成功返回用户ID
}
}else{
$token = $this->sdklogin_update($user,$account,$password,$user['fgame_id'],$game_id,$game_name,$unique_code); //更新用户登录信息
$this->user_login_record2($user,$type,$game_id,$game_name,$sdk_version);
return array("user_id"=>$user['id'],"token"=>$token); //登录成功返回用户ID
}
} else {
return -2; //密码错误
}
@ -1070,6 +1085,79 @@ class UserModel extends Model{
}
//更新用户登录信息
protected function sdklogin_update($user,$account,$password,$user_fgame_id,$game_id,$game_name,$unique_code=''){
$model = M('User','tab_');
$uid = $user['id'];
$data["id"] = $uid;
$data["login_time"] = NOW_TIME;
$data["login_ip"] = get_client_ip();
$data["device_number"] = $unique_code;
$data["last_login_ip"] = $user['login_ip'];
$data["last_device_number"] = $user['device_number'];
$data["token"] = $this->generateToken($uid,$account,$password);
if($user_fgame_id){
$model->save($data);
}else{
$data['fgame_id']=$game_id;
$data['fgame_name']=$game_name;
$model->save($data);
}
return $data["token"];
}
// 扶持号登录设备异常
protected function sdklogin_device_error($user,$resource,$unique_code){
$model = M('User','tab_');
$uid = $user['id'];
$data["id"] = $uid;
$data["device_number"] = $unique_code;
$data["last_device_number"] = $user['device_number'];
$data["lock_status"] = 0 ;
$model->save($data);
$protect_data['user_id']= $uid;
$protect_data['user_account']= $resource['user_account'];
$protect_data['server_id'] = $resource['server_id'];
$protect_data['server_name']= $resource['server_name'];
$protect_data['game_id']=$resource['game_id'];
$protect_data['game_name']=$resource['game_name'];
$protect_data['nickname']=$resource['role_name'];
$protect_data['promote_id']=$resource['promote_id'];
$protect_data['promote_account']=$resource['promote_account'];
$protect_data['type']=2;
$protect_data['detail']="登录设备号异常,本次异常设备号:".$unique_code.",历史登录设备号:".$user['device_number'];
$protect_data['create_time'] = NOW_TIME;
M('protect_log','tab_')->add($protect_data);
}
// 扶持号登录IP异常
protected function sdklogin_ip_error($user,$resource,$ip){
$newloginip_source = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip);
$aldloginip_source = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$user['login_ip']);
$newloginip_source = json_decode($newloginip_source,true);
$aldloginip_source = json_decode($aldloginip_source,true);
if($newloginip_source['data']['city']!=$aldloginip_source['data']['city']){ //登录城市不一致时触发IP异常
$uid = $user['id'];
$protect_data['user_id']= $uid;
$protect_data['user_account']= $resource['user_account'];
$protect_data['server_id'] = $resource['server_id'];
$protect_data['server_name']= $resource['server_name'];
$protect_data['game_id']=$resource['game_id'];
$protect_data['game_name']=$resource['game_name'];
$protect_data['nickname']=$resource['role_name'];
$protect_data['promote_id']=$resource['promote_id'];
$protect_data['promote_account']=$resource['promote_account'];
$protect_data['type']=1;
$protect_data['detail']="登录IP异常本次异常IP".$ip."历史登录IP".$user['login_ip'];
$protect_data['create_time'] = NOW_TIME;
M('protect_log','tab_')->add($protect_data);
}
}
//判断game_id是否有值
protected function updateLogin_($uid,$account,$password,$user_fgame_id,$game_id,$game_name){
$model = M('User','tab_');

@ -73,7 +73,7 @@
<span class="add-on"><i class="icon-th"></i></span>
</div>
</div>
<div class="input-list input-list-promote search_label_rehab">
<!-- <div class="input-list input-list-promote search_label_rehab">
<select style="width: 120px;" id="promote_id" name="promote_id" class="select_gallery" >
<option value="">所属推广员</option>
@ -83,7 +83,7 @@
<option promote-id="{$vo.id}" value="{$vo.id}">{$vo.account}</option>
</volist>
</select>
</div>
</div> -->
<if condition="I('type') eq 1 or I('type') eq ''">
<div class="input-list input-list-resway search_label_rehab">
@ -103,15 +103,38 @@
<option value="0" <if condition="I('status') eq '0'" >selected="true"</if>>已{:L('Lock')}</option>
</select>
</div>
<div class="sleft">
<select id="viplevel" name="viplevel" class="select_gallery">
<option value="">VIP等级</option>
<option value="0">VIP 0</option>
<option value="1">VIP 1</option>
<option value="2">VIP 2</option>
<option value="3">VIP 3</option>
</select>
</div>
<div class="sleft">
<select id="viplevel" name="viplevel" class="select_gallery">
<option value="">VIP等级</option>
<option value="0">VIP 0</option>
<option value="1">VIP 1</option>
<option value="2">VIP 2</option>
<option value="3">VIP 3</option>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="game_id" name="game_id" class="select_gallery" >
<option value="">游戏名称</option>
<volist name=":get_game_list()" id="vo">
<option game-id="{$vo.id}" value="{$vo.id}">{$vo.game_name}</option>
</volist>
</select>
</div>
<div class="input-list search_item input-list-gamenoticestatus">
<select name="promote_level" style="color:#444" class="select_gallery" id="promote_level">
<option value="">请选择推广员等级</option>
<option value="1" <?php if ($_POST['promote_level'] == 1):?>selected<?php endif;?>>会长</option>
<option value="2" <?php if ($_POST['promote_level'] == 2):?>selected<?php endif;?>>组长</option>
</select>
-
</div>
<div class="input-list search_item input-list-gamenoticestatus">
<select name="promote_id" style="color:#444" class="select_gallery" id="promote_id">
<option value="">请选择推广员</option>
<option value="0" <?php if ($_POST['promote_id'] == 0):?>selected<?php endif;?>>官方渠道</option>
<option value="UC" <?php if ($_POST['promote_id'] == 'UC'):?>selected<?php endif;?>>UC用户</option>
</select>
</div>
<input type="hidden" name="" value="" class="sortBy">
<input type="hidden" name="type" value="{:I('type')}" class="sortBy">
<input type="hidden" name="balance_status" value="" id="balance_status">
@ -375,6 +398,30 @@ $(function(){
autoclose:true,
pickerPosition:'bottom-left'
})
var promote_id = "{:I('promote_id')}";
$("#promote_level").change(function(){
$.ajax({
url:"{:U('Ajax/getPromotersByLevel')}",
type:"get",
data:{level:$("#promote_level option:selected").val()},
dataType:'json',
success:function(response){
str = '<option value="">请选择推广员</option><option value="0"'+(promote_id && 0 == promote_id?'selected':'')+'>官方渠道</option><option value="UC" '+(promote_id && 'UC' == promote_id?'selected':'')+'>UC用户</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].id+"' "+(promote_id && data[i].id == promote_id?'selected':'')+">"+data[i].nickname+"</option>"
}
$("#promote_id").empty();
$("#promote_id").append(str);
$("#promote_id").select2();
}
})
});
$("#promote_level").change();
})
function shenhe(){
var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) {

@ -0,0 +1,59 @@
<extend name="Public/base"/>
<block name="body">
<script type="text/javascript" src="__STATIC__/uploadify/jquery.uploadify.min.js"></script>
<div class="cf main-place top_nav_list navtab_list">
{:W('Index/navigation',array('value'=>'Site/channel'))}
<h3 class="page_title">快捷菜单管理</h3>
<p class="description_text"></p>
</div>
<div class="data_list">
<table>
<thead>
<tr>
<th>ID</th>
<th>菜单名称</th>
<th>菜单跳转地址</th>
<th>菜单图标</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<notempty name="list">
<volist name="list" id="list">
<tr>
<td>{$list.id}</td>
<td>{$list.name}</td>
<td>{$list.url}</td>
<td><img src="{$list.icon|get_cover='path'}" style="width: 100px"/></td>
<td><a href="{:U('promote/shortCutMenuEdit',array('id'=>$list['id']))}">编辑</a></td>
</tr>
</volist>
<else/>
<td colspan="6" class="text-center">aOh! 暂时还没有内容!</td>
</notempty>
</tbody>
</table>
</div>
<div class="page">
{$_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="Site/channel">
</form>
<a class="ajax-post add-butn <notempty name='commonset'>addSIsetted</notempty>" href="javascript:;" target-form="addShortcutIcon" url="{:U('Think/addShortcutIcon')}"><img src="__IMG__/zwmimages/icon_jia.png"><span><notempty name='commonset'>已添加<else />添加至常用设置</notempty></span></a>
</div>
</block>
<block name="script">
<script type="text/javascript">
//导航高亮
highlight_subnav('{:U('Site/channel')}');
</script>
</block>

@ -0,0 +1,184 @@
<extend name="Public/base" />
<block name="css">
<!-- <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/area1.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>
<script type="text/javascript" src="__JS__/jquery.mousewheel.js"></script>
<style>
#form .txt_area.download_url {width:400px;}
.tabcon1711 .table_radio2 .table_btn {width:215px;}
</style>
</block>
<block name="body">
<link rel="stylesheet" type="text/css" href="__CSS__/admin_table.css" media="all">
<script type="text/javascript" src="__STATIC__/layer/layer.js"></script>
<script type="text/javascript" src="__STATIC__/uploadify/jquery.uploadify.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">
{:W('Index/navigation',array('value'=>'Site/channel'))}
<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('shortCutMenuSave')}" method="post" class="form-horizontal">
<!-- 基础文档模型 -->
<div id="tab1" class="tab-pane in tab1">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="l">菜单名称:</td>
<td class="r">
<input type="text" class="txt " name="name" value="{$data['name']}" placeholder="请输入菜单名称">
</td>
</tr>
<tr>
<td class="l">菜单跳转地址:</td>
<td class="r">
<input type="text" class="txt " name="url" value="{$data['url']}" disabled="disabled" placeholder="请输入菜单跳转地址">
</td>
</tr>
<tr>
<td class="l">角色名称:</td>
<td class="r">
<div style="float:left;width:215px;padding:10px 0;">
<input type="hidden" name="id" value="{{$data['id']}}"/>
<input type="file" id="upload_picture">
<input type="hidden" name="cover_id" id="cover_id" value=""/>
<input type="hidden" name="icon" id="icon" value="{$data['icon']}"/>
<div class="upload-img-box">
<notempty name="data">
<div class="upload-pre-item">
<span class="placeholder-graphic"><img style="width:50px" src="{$data['icon']}"/></span>
</div>
</notempty>
</div>
<script type="text/javascript">
//上传图片
/* 初始化上传插件 */
$("#upload_picture").uploadify({
"height" : 30,
"swf" : "__STATIC__/uploadify/uploadify.swf",
"fileObjName" : "download",
"buttonText" : "上传图片",
"uploader" : "{:U('File/uploadPicture',array('session_id'=>session_id()))}",
"width" : 120,
'removeTimeout' : 1,
'fileTypeExts' : '*.jpg; *.jpeg; *.png; *.gif;',
"onUploadSuccess" : uploadPicture,
'onFallback' : function() {
alert('未检测到兼容版本的Flash.');
}
});
function uploadPicture(file, data){
var data = $.parseJSON(data);
var src = '';
if(data.status){
$("#cover_id").val(data.id);
src = data.url || '__ROOT__' + data.path;
$("#cover_id").parent().find('.upload-img-box').html(
'<div class="upload-pre-item"><span class="placeholder-graphic"><img style="width:50px" src="' + src + '"/></span></div>'
);
// console.log(data);
$("#icon").val(data.id);
} else {
updateAlert(data.info);
setTimeout(function(){
$('#top-alert').find('button').click();
$(that).removeClass('disabled').prop('disabled',false);
},1500);
}
}
</script>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<input type="hidden" name="id" value="{$data['id']}">
<input type="hidden" name="type" value="{$_GET['type']}">
<div class="form-item cf">
<button class="submit_btn ajax-post " id="submit" type="submit" target-form="form-horizontal" style="margin-left:210px;">
保存
</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="Giftbag/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" src="__JS__/select2.min.js"></script>
<script type="text/javascript">
//导航高亮
// $('.side-sub-menu').eq(0).show();
highlight_subnav('{:U('Site/channel')}');
</script>
</block>

@ -0,0 +1,342 @@
<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">
<h3 class="page_title">线下充值审核</h3>
<p class="description_text">说明:当用户在推广后台发起线下充值时,可在本页面审核是否通过,通过则自动发币</p>
</div>
<div class="cf top_nav_list">
<div class="fl button_list">
<div class="tools">
<a class="ajax-post " onclick="loadicon()" target-form="ids" url="{:U('PromoteCoin/offlineAgree')}"><span class="button_icon button_icon12"></span>审核通过</a>
<a class="ajax-post " onclick="loadicon()" target-form="ids" url="{:U('PromoteCoin/offlineReject')}"><span class="button_icon button_icon9"></span>审核不通过</a>
</div>
</div>
<!-- 高级搜索 -->
<div class="jssearch fl cf search_list">
<div class="input-list search-title-box">
<label>搜索:</label>
</div>
<div class="input-list">
<input type="text" name="promote_account" placeholder="充值账号" class=""
value="{:I('promote_account')}">
</div>
<div class="input-list">
<input type="text" id="time-start" name="time-start" class="" value="{:I('time-start')}"
placeholder="开始时间"/>
-
<div class="input-append date" id="datetimepicker" style="display:inline-block">
<input type="text" id="time-end" name="time-end" class="" value="{:I('time-end')}"
placeholder="结束时间"/>
<span class="add-on"><i class="icon-th"></i></span>
</div>
</div>
<div class="input-list search_item input-list-gamenoticestatus">
<select name="order_status" style="color:#444" class="select_gallery" id="pay_game_status">
<option value="">审核状态</option>
<option value="2">待审核</option>
<option value="4">审核通过</option>
<option value="-1">审核不通过</option>
</select>
</div>
<input type="hidden" name="" value="" class="sortBy">
<div class="input-list search_item">
<a class="sch-btn" href="javascript:;" id="search"
url="{:U('PromoteCoin/offlineList','model='.$model['name'] . '&row='.I('row'),false)}">搜索</a>
</div>
</div>
</div>
<!-- 数据列表 -->
<div class="data_list zdata_list">
<div class="">
<table>
<!-- 表头 -->
<thead>
<tr>
<th class="">
<input class="check-all" type="checkbox" name="ids[]">
</th>
<th>充值账号</th>
<th>提交时间</th>
<th>平台币数量</th>
<th>付款金额</th>
<th>汇入银行</th>
<th>支付凭证</th>
<th>备注</th>
<th>审核状态</th>
<th>操作</th>
</tr>
</thead>
<!-- 列表 -->
<tbody>
<empty name="list_data">
<td colspan="15" 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.promote_account}</td>
<td>{:set_show_time($data['create_time'])}</td>
<td>{$data.coin_num}</td>
<td>{$data.real_amount}</td>
<td>— —</td>
<td>{$data.pay_order_number}</td>
<td>{$data.remark}</td>
<td>
<if condition="($data.order_status eq 2)"> 待审核
<elseif condition="$data.order_status eq 4"/>审核通过
<else /> 审核不通过
</if>
</td>
<td>
<a href="{:U('PromoteCoin/offlineOrderInfo?id='.$data['id'])}">查看 </a>
</td>
</tr>
</volist>
</empty>
</tbody>
</table>
</div>
</div>
<div class="page">
<!-- <a class="sch-btn" href="{:U('Export/expUser',array_merge(array('id'=>7,'xlsname'=>'游戏订单_游戏充值'),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="PromoteCoin/offlineList">
</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 src="__STATIC__/layer/layer.js" type="text/javascript"></script>
<script>
<volist name = ":I('get.')" id = "vo">
Think.setValue('{$key}', "{$vo}");
</volist>
$(".select_gallery").select2();
</script>
<script type="text/javascript">
//导航高亮
highlight_subnav("{:U('PromoteCoin/offlineList')}");
function loadicon(){
layer.load(2,{shade:0.3,time:1.5*1000});
return true;
}
$(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;
}
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",
showMeridian:true,
pickDate:true,
minView: 2,
autoclose: true,
pickTime:true,
todayBtn:true,
}).on('change',function(ev){
var val = new Date($.trim($(this).val())).getTime();
var end = new Date($.trim($('#time-end').val())).getTime();
if (val>end) {
layer.msg('开始时间大于结束时间!');$(this).val('');
}
return false;
});
$("#time-end").datetimepicker({
format:"yyyy-mm-dd",
language: "zh-CN",
showMeridian:true,
minView:2,
autoclose:true,
todayBtn:true,
}).on('change',function(ev){
var val = new Date($.trim($(this).val())).getTime();
var start = new Date($.trim($('#time-start').val())).getTime();
if (val<start) {
layer.msg('开始时间大于结束时间!');$(this).val('');
}
return false;
});
$(".d_list").find(".drop-down11").hover(function () {
$(this).find(".nav-list").removeClass("hidden");
}, function () {
$(this).find(".nav-list").addClass("hidden");
});
$(".drop-down11 .nav-list li").find("a").each(function () {
var that = $(".drop-down11");
$(this).click(function () {
var text = $(this).text(), val = $(this).attr("value");
that.find(".sort-txt").text(text).attr("data", val);
that.find(".nav-list").addClass("hidden");
that.siblings('.hiddenvalue').val(val);
})
});
$(".d_list").find(".drop-down12").hover(function () {
$(this).find(".nav-list").removeClass("hidden");
}, function () {
$(this).find(".nav-list").addClass("hidden");
});
$(".drop-down12 .nav-list li").find("a").each(function () {
var that = $(".drop-down12");
$(this).click(function () {
var text = $(this).text(), val = $(this).attr("value");
that.find(".sort-txt").text(text).attr("data", val);
that.find(".nav-list").addClass("hidden");
that.siblings('.hiddenvalue').val(val);
})
});
$(".d_list").find(".drop-down13").hover(function () {
$(this).find(".nav-list").removeClass("hidden");
}, function () {
$(this).find(".nav-list").addClass("hidden");
});
$(".drop-down13 .nav-list li").find("a").each(function () {
var that = $(".drop-down13");
$(this).click(function () {
var text = $(this).text(), val = $(this).attr("value");
that.find(".sort-txt").text(text).attr("data", val);
that.find(".nav-list").addClass("hidden");
that.siblings('.hiddenvalue').val(val);
})
});
//下拉内容框
$(".drop-down2").on('click', function (event) {
var navlist = $(this).find('.i_list_li');
if (navlist.hasClass('hidden')) {
navlist.removeClass('hidden');
$('#i_list_id').focus().val('');
} else {
navlist.addClass('hidden');
}
$(document).one("click", function () {
navlist.addClass('hidden');
});
event.stopPropagation();
});
$('#i_list_id').on('keyup', function (event) {
var val = $.trim($(this).val()).toLowerCase();
$('#i_list_idh').val(val);
});
$("#i_list_li").find("a").each(function () {
$(this).click(function () {
var text = $.trim($(this).text()).toLowerCase();
$("#i_list_id").val(text);
$('#i_list_idh').val(text);
})
});
})
/**
* 初始化select2单选默认带搜索功能。
*/
//初始化页面加载
$(document).ready(function () {
//初始化select2单选
initSelect2WithSearch();
});
function initSelect2WithSearch() {
$("#pay_game_status").select2({
tags: true,
placeholder: '审核状态',
allowClear: false,
minimumResultsForSearch: Infinity, // 永久隐藏搜索框
});
}
</script>
</block>

@ -0,0 +1,154 @@
<extend name="Public/base" />
<block name="body">
<style>
.tabcon1711 .table_click,
.tabcon1711 .table_click:hover {
border: none;
}
.tabcon1711 .table_click .table_click_text {
border-bottom: 1px solid transparent;
}
.tabcon1711 .table_click:hover .table_click_text {
border-bottom-color: #145CCD;
}
.tabcon1711 .datainfo {
font-size: 14px;
}
.submit_btn {
background-image: none;
}
</style>
<script src="__STATIC__/layer/layer.js" type="text/javascript"></script>
<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>
<!-- 标签页导航 -->
<div class="tab-wrap">
<div class="tab-content tabcon1711">
<!-- 表单 -->
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">线下充值审核</h3>
<p class="description_text">说明:当用户在推广后台发起线下充值时,可在本页面审核是否通过,通过则自动发币</p>
</div>
<div class="tab-pane in tab1">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="l">充值账号:</td>
<td class="r">
<span class="datainfo">{$data['promote_account']}</span>
</td>
</tr>
<tr>
<td class="l">平台币数量:</td>
<td class="r">
<span class="datainfo">{$data['coin_num']}</span>
</td>
</tr>
<tr>
<td class="l">购买金额:</td>
<td class="r">
<span class="datainfo">{$data['real_amount']}</span>
</td>
</tr>
<tr>
<td class="l">汇入银行:</td>
<td class="r">
<span class="datainfo">--</span>
</td>
</tr>
<tr>
<td class="l">支付凭证:</td>
<td class="r">
<span class="datainfo">{$data['pay_order_number']}</span>
</td>
</tr>
<tr>
<td class="l">支付截图:</td>
<td class="r">
<img src="{$data['voucher_img']}" style="width: 200px;height: auto;">
</td>
</tr>
<tr>
<td class="l">备注:</td>
<td class="r">
<span class="datainfo">{$data['remark']}</span>
</td>
</tr>
<if condition="$data.order_status eq 2 ">
<tr>
<td class="l noticeinfo"></td>
<td class="r">
<div class="new_submit" data-id="{$data['id']}">
<button id="agree" class="submit_btn" style="background-color:rgba(51, 153, 255, 1);">
审核通过
</button>
<button id="reject" class="submit_btn " style="background-color:red;">
拒绝审核通过
</button>
</div>
</td>
</tr>
</if>
</table>
</div>
</div>
</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__/layer/extend/layer.ext.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('PromoteCoin/offlineList')}");
Think.setValue("prmoote_id_to", "{$data.promote_id |default= 0}");
$('#submit').click(function () {
$('#form').submit();
});
$("#agree").on("click",function(){
var id = $(this).parents(".new_submit").data("id");
var url= "{:U('PromoteCoin/offlineAgree')}"+"&ids[]="+id;
$.get(url, function(result){
if(result.status == 1){
layer.msg(result.info, {
icon: 1,
time: 1000 //2秒关闭如果不配置默认是3秒
}, function(){
window.location.reload()
});
}
});
})
$("#reject").on("click",function(){
var id = $(this).parents(".new_submit").data("id");
var url= "{:U('PromoteCoin/offlineReject')}"+"&ids[]="+id;
$.get(url, function(result){
if(result.status == 1){
layer.msg(result.info, {
icon: 1,
time: 1000 //2秒关闭如果不配置默认是3秒
}, function(){
window.location.reload()
});
}
});
// window.location.href = "{:U('PromoteCoin/offlineReject')}"+"&ids[]="+id;
})
$(function () {
});
</script>
</block>

@ -55,7 +55,7 @@
<span class="add-on"><i class="icon-th"></i></span>
</div>
</div>
<div class="input-list input-list-promote search_label_rehab">
<!-- <div class="input-list input-list-promote search_label_rehab">
<select id="promote_id" name="promote_id" class="select_gallery" >
<option value="">渠道来源</option>
<option value="GUANFANG">官方渠道</option>
@ -64,7 +64,7 @@
<option promote-id="{$vo.id}" value="{$vo.id}">{$vo.account}</option>
</volist>
</select>
</div>
</div> -->
<div class="input-list input-list-promote search_label_rehab">
<select id="game_id" name="game_id" class="select_gallery" >
<option value="">游戏名称</option>
@ -73,6 +73,20 @@
</volist>
</select>
</div>
<div class="input-list search_item input-list-gamenoticestatus">
<select name="promote_level" style="color:#444" class="select_gallery" id="promote_level">
<option value="">请选择推广员等级</option>
<option value="1" <?php if ($_POST['promote_level'] == 1):?>selected<?php endif;?>>会长</option>
<option value="2" <?php if ($_POST['promote_level'] == 2):?>selected<?php endif;?>>组长</option>
<option value="3" <?php if ($_POST['promote_level'] == 3):?>selected<?php endif;?>>组员</option>
</select>
-
</div>
<div class="input-list search_item input-list-gamenoticestatus">
<select name="promote_id" style="color:#444" class="select_gallery" id="promote_id">
<option value="">请选择推广员</option>
</select>
</div>
<div class="input-list">
<a class="sch-btn" href="javascript:;" id="search" url="{:U('RechargeSum/summation',array('row'=>I('row')))}">搜索</a>
</div>
@ -268,6 +282,32 @@ $(function(){
autoclose: true,
pickerPosition: 'bottom-left'
})
var promote_id = "{:I('promote_id')}";
console.log(promote_id);
$("#promote_level").change(function(){
$.ajax({
url:"{:U('Ajax/getPromotersByLevel')}",
type:"get",
data:{level:$("#promote_level 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].id+"' "+(promote_id && data[i].id == promote_id?'selected':'')+">"+data[i].nickname+"</option>"
}
$("#promote_id").empty();
$("#promote_id").append(str);
$("#promote_id").select2();
}
})
});
$("#promote_level").change();
})
</script>
</block>

@ -96,6 +96,20 @@
<option value="2">已退款</option>
</select>
</div>
<br>
<div class="input-list search_item input-list-gamenoticestatus">
<select name="promote_level" style="color:#444" class="select_gallery" id="promote_level">
<option value="">请选择推广员等级</option>
<option value="1" <?php if ($_POST['promote_level'] == 1):?>selected<?php endif;?>>会长</option>
<option value="2" <?php if ($_POST['promote_level'] == 2):?>selected<?php endif;?>>组长</option>
</select>
-
</div>
<div class="input-list search_item input-list-gamenoticestatus">
<select name="promote_id" style="color:#444" class="select_gallery" id="promote_id">
<option value="">请选择推广员</option>
</select>
</div>
<input type="hidden" name="" value="" class="sortBy">
<div class="input-list search_item">
@ -463,6 +477,33 @@
}
})
});
var promote_id = "{:I('promote_id')}";
console.log(promote_id);
$("#promote_level").change(function(){
$.ajax({
url:"{:U('Ajax/getPromotersByLevel')}",
type:"get",
data:{level:$("#promote_level 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].id+"' "+(promote_id && data[i].id == promote_id?'selected':'')+">"+data[i].nickname+"</option>"
}
$("#promote_id").empty();
$("#promote_id").append(str);
$("#promote_id").select2();
}
})
});
$("#promote_level").change();
var game_id = "{:I('game_name')}";
var game_server = "{:I('server_name')}";
if(game_id){

@ -31,10 +31,9 @@
<div class="cf main-place top_nav_list navtab_list">
<ul class="tabnav1711 fr jstabnav">
<li data-tab="tab1" class="current"><a href="javascript:void(0);">基本信息</a></li></li>
<li data-tab="tab2" ><a href="javascript:void(0);">结算信息</a></li>
<li data-tab="tab1" class="current"><a href="javascript:void(0);">新增测试账号</a></li></li>
</ul>
<h3 class="page_title">编辑推广员</h3>
<h3 class="page_title">新增测试账号</h3>
<p class="description_text">说明:此功是查看推广员的基础信息</p>
</div>
@ -152,7 +151,7 @@
<script type="text/javascript" src="__STATIC__/datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script type="text/javascript">
//导航高亮
highlight_subnav('{:U('Promote/lists')}');
highlight_subnav('{:U('testResource/index')}');
Think.setValue("game_type_id", {$data.game_type_id|default = 0});
Think.setValue("category", {$data.category|default = 0});
Think.setValue("ba_id", {$data.ba_id|default = 0});

@ -107,7 +107,7 @@
<script type="text/javascript" src="__JS__/select2.min.js"></script>
<script type="text/javascript">
//导航高亮
highlight_subnav('{:U('Giftbag/lists')}');
highlight_subnav('{:U('testResource/index')}');
if ("{$Think.get.game_id}" =="") {
Think.setValue("game_id", {$data.game_id|default = 0});
}else{

@ -141,7 +141,7 @@
<script type="text/javascript">
//导航高亮
$('.side-sub-menu').eq(0).show();
highlight_subnav('{:U('TestResource/index')}');
highlight_subnav('{:U('testResource/index')}');
$('#submit').click(function(){
$('#form').submit();
});

@ -184,8 +184,6 @@
<volist name=":I('get.')" id="vo">
Think.setValue('{$key}',"{$vo}");
</volist>
$('.side-sub-menu').eq(0).show();
$(".select_gallery").select2();
</script>
<script type="text/javascript">
//导航高亮
@ -440,7 +438,7 @@
});
param = str.join(',');
} else {
layer.msg('请选择要操作的数据');
layer.msg('请选择要操作的数据',{skin:'textColor'});
return false;
}
var url = "{:U('apply','','')}" + '/id/' + param;
@ -448,4 +446,7 @@
});
</script>
<style>
.textColor .layui-layer-content{color: #ffffff;background:#000; opacity: 0.8;text-align: center}
</style>
</block>

@ -203,8 +203,6 @@
<volist name=":I('get.')" id="vo">
Think.setValue('{$key}',"{$vo}");
</volist>
$('.side-sub-menu').eq(0).show();
$(".select_gallery").select2();
</script>
<script type="text/javascript">
//导航高亮

@ -169,8 +169,6 @@
<volist name=":I('get.')" id="vo">
Think.setValue('{$key}',"{$vo}");
</volist>
$('.side-sub-menu').eq(0).show();
$(".select_gallery").select2();
</script>
<script type="text/javascript">
//导航高亮

@ -172,8 +172,6 @@
<volist name=":I('get.')" id="vo">
Think.setValue('{$key}',"{$vo}");
</volist>
$('.side-sub-menu').eq(0).show();
$(".select_gallery").select2();
</script>
<script type="text/javascript">
//导航高亮
@ -183,14 +181,14 @@
$('.froze-btn').on({
click: function() {
var id = $(this).parents('tr').eq(0).attr('data-id')
layer.confirm('是否确认冻结帐号?', {icon: 3, title:'提示'}, function(index){
layer.confirm('是否确认冻结帐号?', {icon: 3, title:'提示',skin:'textColor'}, function(index){
$.ajax({
url: "{:U('TestResource/freezeSupport')}",
data: {support_id: id},
type: 'post',
dataType: 'json',
success: function(response) {
layer.msg(response.msg, {time: 1000}, function() {
layer.msg(response.msg, {time: 1000,skin:'msgClolor'}, function() {
window.location.href = window.location.href
})
}
@ -202,14 +200,14 @@
$('.unfroze-btn').on({
click: function() {
var id = $(this).parents('tr').eq(0).attr('data-id')
layer.confirm('是否确认启用帐号?', {icon: 3, title:'提示'}, function(index){
layer.confirm('是否确认启用帐号?', {icon: 3, title:'提示',skin:'textColor'}, function(index){
$.ajax({
url: "{:U('TestResource/unfreezeSupport')}",
data: {support_id: id},
type: 'post',
dataType: 'json',
success: function(response) {
layer.msg(response.msg, {time: 1000}, function() {
layer.msg(response.msg, {time: 1000,skin:'msgClolor'}, function() {
window.location.href = window.location.href
})
}
@ -222,7 +220,7 @@
click: function() {
var id = $(this).attr('data-id')
console.log(id);
layer.confirm('是否确认重置账号密码?', {icon: 3, title:'提示'}, function(index){
layer.confirm('是否确认重置账号密码?', {icon: 3, title:'提示',skin:'textColor'}, function(index){
$.ajax({
url: "{:U('TestResource/rechangePassward')}",
data: {support_id: id},
@ -230,7 +228,7 @@
dataType: 'json',
success: function(response) {
console.log(response)
layer.confirm(response.msg, {icon: 3, title:'提示'}, function() {
layer.confirm(response.msg, {icon: 3, title:'提示',skin:'textColor'}, function() {
window.location.href = window.location.href
})
}
@ -333,6 +331,7 @@
</script>
<script type="text/javascript">
//点击字母按照条件按钮筛选
@ -472,7 +471,7 @@
});
param = str.join(',');
} else {
layer.msg('请选择要操作的数据');
layer.msg('请选择要操作的数据',{skin:'textColor'});
return false;
}
var url = "{:U('apply','','')}" + '/id/' + param;
@ -480,4 +479,8 @@
});
</script>
<style>
.textColor .layui-layer-content{color: #000000;}
.msgClolor .layui-layer-content{color: #ffffff;background:#000; opacity: 0.8;text-align: center}
</style>
</block>

@ -69,7 +69,21 @@
<option value="">游戏区服</option>
</select>
</div>
<div class="input-list search_item input-list-gamenoticestatus">
<select name="promote_level" style="color:#444" class="select_gallery" id="promote_level">
<option value="">请选择推广员等级</option>
<option value="1" <?php if ($_POST['promote_level'] == 1):?>selected<?php endif;?>>会长</option>
<option value="2" <?php if ($_POST['promote_level'] == 2):?>selected<?php endif;?>>组长</option>
</select>
-
</div>
<div class="input-list search_item input-list-gamenoticestatus">
<select name="promote_id" style="color:#444" class="select_gallery" id="promote_id">
<option value="">请选择推广员</option>
<option value="0" <?php if ($_POST['promote_id'] == 0):?>selected<?php endif;?>>官方渠道</option>
<option value="UC" <?php if ($_POST['promote_id'] == 'UC'):?>selected<?php endif;?>>UC用户</option>
</select>
</div>
<div class="input-list">
<a class="sch-btn" href="javascript:;" id="search" url="{:U('rolelist',array('row'=>I('row')))}">搜索</a>
</div>
@ -224,5 +238,29 @@ $(".select_gallery").select2();
}
})
}
var promote_id = "{:I('promote_id')}";
$("#promote_level").change(function(){
$.ajax({
url:"{:U('Ajax/getPromotersByLevel')}",
type:"get",
data:{level:$("#promote_level 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].id+"' "+(promote_id && data[i].id == promote_id?'selected':'')+">"+data[i].nickname+"</option>"
}
$("#promote_id").empty();
$("#promote_id").append(str);
$("#promote_id").select2();
}
})
});
$("#promote_level").change();
</script>
</block>

@ -38,9 +38,9 @@ class PromoteController extends BaseController
$this->meta_title = "首页";
$loginPromote = $this->getLoginPromote();
$whiteList = [1, 8];
$isOpenQuery = in_array($loginPromote['id'], $whiteList) || in_array($loginPromote['parent_id'], $whiteList) || in_array($loginPromote['grand_id'], $whiteList) ? true : false;
$whiteList = [1, 8, 84];
$isOpenQuery = in_array($loginPromote['id'], $whiteList) || in_array($loginPromote['parent_id'], $whiteList) || in_array($loginPromote['grand_id'], $whiteList) ? true : false;
if (!$isOpenQuery) {
$this->display('prepare');
exit(0);
@ -100,32 +100,89 @@ class PromoteController extends BaseController
$page = $this->ajax_page($count, 20, 'seach');
$this->assign("_page", $page);
$user_count = M("user", "tab_")->where("promote_id=" . get_pid())->count();
$total_money = $this->pay_total(0, 0);
$today_add_user_money = $this->pay_total(1);
$month_add_user_money = $this->pay_total(3);
$promoteId = array(get_pid());
//计算当日用户充值数据
$map['_string'] = "promote_id = {$promote_id} or tab_promote.parent_id = {$promote_id} or tab_promote.grand_id = {$promote_id} ";
$pay_time = " between 0 and ".time();
$spendData = $this->caculateSpend($pay_time,$map['_string']);
$promoteId = implode(',',$promoteId);
if ($promoteId) {
$user_count = M("user", "tab_")->where("promote_id IN({$promoteId})")->count();
} else {
$user_count = 0;
}
$today=total(1);
$yesterdays = total(5);
$week=total(2);
$mounth=total(3);
//计算今日的统计数据
$data=M('User','tab_')
->field('promote_account,promote_id,date_format(FROM_UNIXTIME(register_time),"%Y-%m-%d") AS time, count(tab_user.id) as count,
IF(tab_promote.grand_id>0,tab_promote.grand_id,IF(tab_promote.grand_id=0 and tab_promote.parent_id >0,tab_promote.parent_id,promote_id)) as promote_id1 ,
count(IF(register_time '.$yesterdays.',1,null)) as yesterday,
count(IF(register_time '.$today.',1,null)) as today,
count(IF(register_time '.$week.',1,null)) as week,
count(IF(register_time '.$mounth.',1,null)) as mounth')
->join('tab_promote on promote_id = tab_promote.id','left')
->where($map)
->group('promote_id1')
->having('promote_id != 0')
->order('count desc,register_time')
->find();
// echo M('User','tab_')->_sql();die();
$total_money = $this->pay_total(0, 0,$promoteId);
$today_add_user_money = $this->pay_total(1,1,$promoteId);
$month_add_user_money = $this->pay_total(3,1,$promoteId);
$yesterday_start = mktime(0, 0, 0, date('m'), date('d') - 1, date('Y'));
$yesterday_end = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
//计算昨天用户的统计数据,当日用户充值数据
$pay_time = " between {$yesterday_start} and {$yesterday_end}";
$createTime = ['between',array($yesterday_start,$yesterday_end-1)];
$yesterdaySpendData = $this->caculateSpend($pay_time,$map['_string'],$createTime);
$todayAddSpendData = $this->caculateSpend($pay_time,$map['_string'],[],1);
$mounthAddSpendData = $this->caculateSpend($pay_time,$map['_string'],[],2);
$yesterday_user_regist_count = M("user", "tab_")->where(
array("promote_id" => get_pid(),
array("promote_id" => array('in',$promoteId),
"register_time" => array("BETWEEN", array($yesterday_start, $yesterday_end))))
->count();
$yesterday_total_money = $this->pay_total(5, 0);
$yesterday_regist_user_count = M("user", "tab_")
->where(array("promote_id" => get_pid(),
"register_time" => array("BETWEEN", array($yesterday_start, $yesterday_end))))
$yesterday_total_money = $this->pay_total(5, 0,$promoteId);
$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_regist_user_count = M("user", "tab_")
->where(array("promote_id" => array('in',$promoteId),
"register_time" => array("BETWEEN", array($today_start, $today_end))))
->count();
$today_total_money = $this->pay_total(1, 0,$promoteId);
$this->assign('data',$data);
// $this->assign('yesterdayData',$yesterdayData);
$this->assign('spendData',$spendData);
$this->assign('yesterdaySpendData',$yesterdaySpendData);
$this->assign('todayAddSpendData',$todayAddSpendData);
$this->assign('mounthAddSpendData',$mounthAddSpendData);
$yesterday_total_money = $this->pay_total(1, 0);
$this->assign("user_count", $user_count);
$this->assign("total_money", $total_money);
$this->assign("today_add_user_money", $today_add_user_money);
$this->assign("month_add_user_money", $month_add_user_money);
$this->assign("yesterday_user_regist_count", $yesterday_user_regist_count);
$this->assign("yesterday_total_money", $yesterday_total_money);
$this->assign("yesterday_regist_user_count", $yesterday_regist_user_count);
$this->assign("yesterday_total_money", $yesterday_total_money);
$this->assign("today_regist_user_count", $today_regist_user_count);
$this->assign("today_total_money", $today_total_money);
$this->assign("menu_list", $quick_menu_list);
$this->assign("gg_list", $gg_list);
@ -141,7 +198,94 @@ class PromoteController extends BaseController
$this->display();
}
private function pay_total($type = 0, $newadd = 1)
private function caculateSpend($pay_time,$condition,$create = [],$type = 0) {
$spend=M('Spend','tab_');
$today=total(1);
$week=total(2);
$mounth=total(3);
$map1['promote_id'] = $map['promote_id']=array('gt',0);
$map1['pay_status'] = $map['pay_status']=1;
$map1['pay_way'] = $map['pay_way'] = array('gt',0);
$userId = [];
$promoteId = M("promote", "tab_")->field('id')->where("parent_id=" . get_pid()." or grand_id=". get_pid())->select();
$promoteId = array_column($promoteId,'id');
$promoteId = implode(',',$promoteId).",".get_pid();
$whereUser['promote_id'] = ['IN',$promoteId];
if ($type == 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) {
$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();
}
$userId = implode(',',array_column($userId,'id'));
if ($userId) {
$map1['user_id'] = $map['user_id']=['IN',$userId];
} else if (!$userId&&$type!=0) {
return array('today'=>0,'mounth'=>0);
}
if ($create) {
$map['create_time'] = $create;
}
$bindrecharge_data = M('bind_recharge','tab_')
->field('max(id) as id,promote_account,promote_id,create_time as ordertime,date_format(FROM_UNIXTIME(create_time),"%Y-%m-%d") AS time,
floor(sum(IF(create_time '.$pay_time.',real_amount,0))*100) as scount,
floor(sum(IF(create_time '.$today.',real_amount,0))*100) as today,
floor(sum(IF(create_time '.$week.',real_amount,0))*100) as week,
floor(sum(IF(create_time '.$mounth.',real_amount,0))*100) as mounth')
->where($map1)
->group('promote_id')
->select(false);
$deposit_data = M('deposit','tab_')
->field('max(id) as id,promote_account,promote_id,create_time as ordertime,date_format(FROM_UNIXTIME(create_time),"%Y-%m-%d") AS time,
floor(sum(IF(create_time '.$pay_time.',pay_amount,0))*100) as scount,
floor(sum(IF(create_time '.$today.',pay_amount,0))*100) as today,
floor(sum(IF(create_time '.$week.',pay_amount,0))*100) as week,
floor(sum(IF(create_time '.$mounth.',pay_amount,0))*100) as mounth')
// ->join('tab_user on tab_user.id = tab_spend.user_id','left')
->where($map1)
->group('promote_id')
->select(false);
$spendData=$spend
->field('max(id) as id,promote_account,promote_id,pay_time as ordertime,date_format(FROM_UNIXTIME(pay_time),"%Y-%m-%d") AS time,
floor(sum(IF(pay_time '.$pay_time.',pay_amount,0))*100) as scount,
floor(sum(IF(pay_time '.$today.',pay_amount,0))*100) as today,
floor(sum(IF(pay_time '.$week.',pay_amount,0))*100) as week,
floor(sum(IF(pay_time '.$mounth.',pay_amount,0))*100) as mounth')
// ->join('tab_user on tab_user.id = tab_spend.user_id','left')
->where($map)
->union(' ('.$bindrecharge_data.') ')
->union(' ('.$deposit_data.') ')
->group('promote_id')
->select(false);
$spendData = $spend->field('a.promote_account,a.promote_id,a.time,sum(a.scount) as count,sum(a.today) as today,sum(a.week) as week,sum(a.mounth) as mounth,IF(tab_promote.grand_id>0,tab_promote.grand_id,IF(tab_promote.grand_id=0 and tab_promote.parent_id >0,tab_promote.parent_id,promote_id)) as promote_id1')
->join('tab_promote on promote_id = tab_promote.id','left')
->where($condition)
->table('('.$spendData.') as a')->group('promote_id1')->order('count desc,a.ordertime')->find();
$spendData['rand']=1;
$spendData['count']=$spendData['count']/100;
$spendData['today']=$spendData['today']/100;
$spendData['week']=$spendData['week']/100;
$spendData['mounth']=$spendData['mounth']/100;
return $spendData;
}
private function pay_total($type = 0, $newadd = 1,$promoteId="")
{
if ($_REQUEST['promote_id'] === null || $_REQUEST['promote_id'] === '0') {
$map['parent_id'] = get_pid();
@ -155,7 +299,7 @@ class PromoteController extends BaseController
} else {
$ids = array($_REQUEST['promote_id']);
}
$where['spend.promote_id'] = array('in', $ids);
$where['spend.promote_id'] = array('in', $promoteId);
$where['spend.pay_status'] = 1;
$where['spend.is_check'] = array('NEQ', 2);
switch ($type) {
@ -206,6 +350,7 @@ class PromoteController extends BaseController
$where['user.register_time'] = array("BETWEEN", array($start, $end));
}
}
if ($newadd == 1) {
$total = M('spend as spend', "tab_")->field("SUM(spend.pay_amount) as amount")->join("right join tab_user user on user.id=spend.user_id")->where($where)->select();
} else {
@ -349,7 +494,7 @@ class PromoteController extends BaseController
} elseif ($type == 50) {
$data_list = null;
$count = 0;
} else if($type == 0) {
} /*else if($type == 0) {
$field = 'id,game_name,server_name,user_account,nickname,promote_account,detail,create_time as update_time';
$data_list = M("protect_log","tab_")->field($field)->limit('0,5')->order("create_time desc")->select();
@ -358,7 +503,7 @@ class PromoteController extends BaseController
}
$count = M("protect_log","tab_")->field($field)->count();
} else {
}*/ else {
$data_list = M("document", "sys_")->limit('0,50')->where("category_id=56 and status=1")->order("update_time desc")->page($page, $row)->select(); //游戏公告
$count = M("document", "sys_")->where("category_id=56 and status=1")->count();
}
@ -860,6 +1005,15 @@ class PromoteController extends BaseController
$this->ajaxReturn(array('status' => -1, 'msg' => '身份证格式错误'));
}
}
if (mb_strlen($_POST['account']) < 6 || mb_strlen($_POST['account']) > 15) {
$this->error('账号长度为6-15个字符', U('Promote/edit_chlid', array('id' => $id, 'type' => I('type', 0))));
return false;
}
if (mb_strlen($_POST['real_name']) < 2 || mb_strlen($_POST['real_name']) > 4) {
$this->error('姓名长度为2-4个字符', U('Promote/edit_chlid', array('id' => $id, 'type' => I('type', 0))));
return false;
}
$res = $user->promote_add($_POST);
if (is_numeric($res)) {

@ -101,7 +101,7 @@ class QueryController extends BaseController
empty(I('sdk_version')) || $map['tab_game.sdk_version'] = I('sdk_version');
empty(I('server_id')) || $map['tab_spend.server_id'] = I('server_id');
empty(I('game_player_name')) || $map['tab_spend.game_player_name'] = ['like', '%' . I('game_player_name') . '%'];
empty(I('user_account')) || $map['tab_spend.user_account'] = ['like', '%' . I('user_account') . '%'];
empty(I('user_account')) || $map['tab_spend.user_account'] = I('user_account');
empty(I('order_number')) || $map['tab_spend.order_number'] = I('order_number');
$map['tab_spend.pay_status'] = 1;
$map['tab_spend.is_check'] = ['neq', 2];
@ -231,7 +231,7 @@ class QueryController extends BaseController
$map['tab_user.register_time'] = ['between', [strtotime(I('begtime')), strtotime(I('endtime')) + 86399]];
}
empty(I('account')) || $map['tab_user.account'] = ['like', '%' . I('account') . '%'];
empty(I('account')) || $map['tab_user.account'] = I('account');
empty(I('id')) || $map['tab_user.id'] = intval(I('id'));
$data = M('User', 'tab_')
@ -1155,7 +1155,9 @@ class QueryController extends BaseController
$newUserNumData = $userPlayInfoModel
->field('tab_user_play_info.create_time,count(distinct tab_user_play_info.user_id) as num')
->join($join)
->where($userPlayInfoWhere2)
->where($map)
->having('tab_user_play_info.create_time between ' . $begTime . ' and ' . ($endTime + 86399))
->order('tab_user_play_info.id')
->find();
@ -1163,7 +1165,9 @@ class QueryController extends BaseController
$newDeviceData = $userPlayInfoModel
->field('tab_user_play_info.create_time,count(distinct tab_user_play_info.create_device_number) as num')
->join($join)
->where($userPlayInfoWhere2)
->where($map)
->having('tab_user_play_info.create_time between ' . $begTime . ' and ' . ($endTime + 86399))
->order('tab_user_play_info.id')
->find();
@ -1171,7 +1175,9 @@ class QueryController extends BaseController
$newIpNumData = $userPlayInfoModel
->field('tab_user_play_info.create_time,count(distinct tab_user_play_info.create_ip) as num')
->join($join)
->where($userPlayInfoWhere2)
->where($map)
->having('tab_user_play_info.create_time between ' . $begTime . ' and ' . ($endTime + 86399))
->order('tab_user_play_info.id')
->find();
@ -1649,12 +1655,12 @@ class QueryController extends BaseController
$result['status'] = 0;
$result['data'] = [];
if (empty($relationGameId) && empty($sdkVersion)) {
if (empty($relationGameId)) {
return $result;
}
empty($relationGameId) || $map['relation_game_id'] = $relationGameId;
empty($sdkVersion) || $map['sdk_version'] = $sdkVersion;
$map['relation_game_id'] = intval($relationGameId);
empty($sdkVersion) || $map['sdk_version'] = intval($sdkVersion);
$gameIds = M('Game', 'tab_')
->where($map)

@ -33,8 +33,8 @@ class TestResourceController extends BaseController
if(!empty(I('user_account'))){
$map['tab_test_resource.user_account']=['like','%'.I('user_account').'%'];
}
if(!empty(I('promote_name'))){
$map['tab_test_resource.promote_account']=['like','%'.I('promote_name').'%'];
if(!empty(I('promote_id'))){
$map['tab_test_resource.promote_id']=I('promote_id');
}
$map['user.promote_id']=session("promote_auth.pid");
@ -45,7 +45,6 @@ class TestResourceController extends BaseController
->page($page,$row)
->order('tab_test_resource.create_time DESC')
->select();
// echo M('test_resource','tab_')->_sql();die();
foreach ($data as $key => $value) {
$data[$key]['create_time'] = date('Y-m-d H:m:i',$value['create_time']);
@ -197,6 +196,7 @@ class TestResourceController extends BaseController
M('protect_log_read', 'tab_')->startTrans(); //事物
try {
$arrUserId = array_column($data,'id');
$logId = implode(',',$arrUserId);
@ -214,7 +214,7 @@ class TestResourceController extends BaseController
$addData = [];
$k = 0;
foreach($arrUserId as $key => $value) {
if (in_array($value['id'],$upsetData)) {
if (in_array($value,$upsetData)) {
continue;
} else {
$addData[$k]['log_id'] = $value;
@ -605,5 +605,15 @@ class TestResourceController extends BaseController
$this->display();
}
public function getChildPromoteList()
{
$promoteId = intval(I('post.promote_id', 0));
$promoteId = empty($promoteId) ? PID : $promoteId;
$promoteList = getAllPromoteListByType(3, false, $promoteId);
$data['status'] = 1;
$data['data'] = $promoteList;
$this->ajaxReturn($data);
}
}

@ -37,13 +37,13 @@
<tr>
<td class="l"><span class="req">*</span>帐号:</td>
<td class="r">
<input type="text" class="name input-txt txt" name="account" id="account" placeholder="请输入帐号">
<input type="text" class="name input-txt txt" name="account" id="account" maxlength="15" minlength="6" placeholder="请输入帐号">
</td>
</tr>
<tr>
<td class="l"><span class="req">*</span>姓名:</td>
<td class="r">
<input type="text" class="name input-txt txt" name="real_name" id="real_name" placeholder="请输入姓名">
<input type="text" class="name input-txt txt" name="real_name" id="real_name" maxlength="4" minlength="2" placeholder="请输入姓名">
</td>
</tr>
<tr>
@ -141,8 +141,14 @@
if($('#account').val()==""){
return json_data = {'status':0,'msg':'子渠道账号不能为空'}
}
if($.trim($('#account').val()).length < 6){
return json_data = {'status':0,'msg':'子渠道账号不能小于6位字符'}
// if($.trim($('#account').val()).length < 6){
// return json_data = {'status':0,'msg':'子渠道账号不能小于6位字符'}
// }
if($.trim($('#account').val()).length < 6 || $.trim($('#account').val()).length > 15){
return json_data = {'status':0,'msg':'子渠道账号长度为6-15位字符'}
}
if($.trim($('#real_name').val()).length < 2 || $.trim($('#real_name').val()).length > 4){
return json_data = {'status':0,'msg':'子渠道姓名长度为2-4位字符'}
}
if($('#password').val()==""){
return json_data = {'status':0,'msg':'子渠道密码不能为空'}

@ -5,16 +5,16 @@
<block name="body">
<div class="page-overview promote-index-overview index-overview clearfix poll">
<ul>
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi1.png"/></span></div> <div class="text text2"><p>推广总用户</p><span>{$user_count}</span></div> </li>
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi2.png"/></span></div> <div class="text text1"><p>推广总充值</p><span>¥{$total_money}</span></div> </li>
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi3.png"/></span></div> <div class="text text3"><p>当日新增用户充值</p><span>¥{$today_add_user_money}</span></div> </li>
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi5.png"/></span></div> <div class="text text5"><p>当月新增用户充值</p><span>¥{$month_add_user_money}</span></div> </li>
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi1.png"/></span></div> <div class="text text2"><p>推广总用户</p><span>{$data.count}</span></div> </li>
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi2.png"/></span></div> <div class="text text1"><p>推广总充值</p><span>¥{$spendData.count}</span></div> </li>
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi3.png"/></span></div> <div class="text text3"><p>当日新增用户充值</p><span>¥{$todayAddSpendData.today}</span></div> </li>
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi5.png"/></span></div> <div class="text text5"><p>当月新增用户充值</p><span>¥{$mounthAddSpendData.mounth}</span></div> </li>
</ul>
<ul style="margin-top: 10px">
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi1.png"/></span></div> <div class="text text2"><p>昨日注册用户</p><span>{$yesterday_user_regist_count}</span></div> </li>
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi2.png"/></span></div> <div class="text text1"><p>昨日充值金额</p><span>¥{$yesterday_total_money}</span></div> </li>
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi3.png"/></span></div> <div class="text text3"><p>今日注册用户</p><span>{$yesterday_regist_user_count}</span></div> </li>
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi5.png"/></span></div> <div class="text text5"><p>今日充值金额</p><span>¥{$yesterday_total_money}</span></div> </li>
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi1.png"/></span></div> <div class="text text2"><p>昨日注册用户</p><span>{$data.yesterday}</span></div> </li>
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi2.png"/></span></div> <div class="text text1"><p>昨日充值金额</p><span>¥{$yesterdaySpendData.count}</span></div> </li>
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi3.png"/></span></div> <div class="text text3"><p>今日注册用户</p><span>{$data.today}</span></div> </li>
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi5.png"/></span></div> <div class="text text5"><p>今日充值金额</p><span>¥{$spendData.today}</span></div> </li>
</ul>
</div>
<div class="index-tab-list">

@ -21,11 +21,11 @@
</if>
</span>
<span class="fxui-tab-tit <if condition="$type==50">curr</if>"><a href="{:U('msg_list')}&type=50">消息</a>
<!-- <if condition="$gg_count neq 0">-->
<!-- <span style="width: 25px;height: 25px;float: left;position: relative;bottom:50px;left:55px;text-align: center;background: rgba(255, 0, 0, 1)">-->
<!-- <a style="line-height: 25px;padding: 0px;color: #fff">0</a>-->
<!-- </span>-->
<!-- </if>-->
<!-- <if condition="$gg_count neq 0">-->
<!-- <span style="width: 25px;height: 25px;float: left;position: relative;bottom:50px;left:55px;text-align: center;background: rgba(255, 0, 0, 1)">-->
<!-- <a style="line-height: 25px;padding: 0px;color: #fff">0</a>-->
<!-- </span>-->
<!-- </if>-->
</span>
<span class="fxui-tab-tit <if condition="$type==51">curr</if>"><a href="{:U('msg_list')}&type=51">游戏活动</a>
<if condition="$zx_count neq 0">
@ -34,12 +34,12 @@
</span>
</if>
</span>
<span class="fxui-tab-tit <if condition="$type==0">curr</if>"><a href="{:U('msg_list')}&type=0">资源号异常日志</a>
<if condition="$rz_count neq 0">
<span class="fxui-tab-tit <if condition="$type==0">curr</if>"><a href="index.php/Home/TestResource/protectLogList.html">资源号异常日志</a>
<!--<if condition="$rz_count neq 0">
<span style="width: 25px;height: 25px;float: left;position: relative;bottom:50px;left:125px;text-align: center;background: rgba(255, 0, 0, 1)">
<a style="line-height: 25px;padding: 0px;color: #fff">{$rz_count}</a>
</span>
</if>
</if>-->
</span>
</div>
<div class="fxui-tab-nav">
@ -49,7 +49,7 @@
<volist name="data_list" id="data">
<p>
<if condition="$type neq 0">
<span class="title"><a href="index.php?s=/Home/Article/detail/id/{$data.id}.html">{$data.title}</a></span>
<span class="title"><a href="index.php?s=/Home/Article/detail/id/{$data.id}.html">{$data.title}</a></span>
<else/>
<span class="title"><a href="index.php?s=/Home/TestResource/protectLogList/id/{$zx.id}.html">{$data.title}</a></span>
</if>
@ -58,11 +58,14 @@
</volist>
</empty>
</div>
<notempty name="data_list">
<div class="pagenation clearfix" >
{$_page}
</div>
</notempty>
</div>
</div>
<div class="pagenation clearfix">
{$_page}
</div>
</div>
</block>
<block name="script">

@ -48,7 +48,7 @@
</if>
</div>
<?php
$whiteList = [1, 8];
$whiteList = [1, 8, 2, 84];
$isOpenQuery = in_array($loginer['id'], $whiteList) || in_array($loginer['parent_id'], $whiteList) || in_array($loginer['grand_id'], $whiteList) ? true : false;
?>
<?php if($isOpenQuery):?>

@ -176,7 +176,7 @@
<div id="chart_box" class="trunk-content" style="width: calc(100% - 40px);height: 400px;"></div>
<div class="page-list apply-app_apply-list query-recharge-list">
<div class="page-list apply-app_apply-list query-recharge-list" style="margin-top: 20px;">
<div class="trunk-content article">
<div class="tabcon trunk-list">
<table class="table normal_table">
@ -184,13 +184,13 @@
<th>日期</th>
<th class="pointer-hand" title="创角数:统计时间范围内,成功创建角色数量(唯一)">创角数</th>
<th class="pointer-hand" title="创角用户:统计时间范围内,成功创角的用户数(去重)">创角用户</th>
<th class="pointer-hand" title="新创角用户当日24小时首次创建角色的用户数; 新创角设备当日24小时首次创建角色设备总数去重;">新创角用户|新创角设备
<th class="pointer-hand" title="新创角用户当日24小时首次创建角色的用户数新创角设备当日24小时首次创建角色设备总数去重">新创角用户|新创角设备
</th>
<th class="pointer-hand" title="新增创角IP统计时间范围内首次创建角色IP总数去重">新增创角IP</th>
<th class="pointer-hand" title="登录用户数:统计时间范围内,登录的用户数(去重)">登录用户数</th>
<th class="pointer-hand" title="充值人数:统计时间范围内,支付成功且处理成功的游戏充值订单用户数(去重)">充值人数</th>
<th class="pointer-hand" title="充值次数:统计时间范围内,游戏充值成功订单数">充值次数</th>
<th class="pointer-hand spend-btn" title="充值总额:统计时间范围内,在游戏内充值成功的订单金额总和" style="width: 200px;">充值总额<i
<th class="pointer-hand" title="充值人数:当日24小时在游戏内充值成功的订单的用户数(去重)">充值人数</th>
<th class="pointer-hand" title="充值次数:当日24小时在游戏内充值成功的订单数量">充值次数</th>
<th class="pointer-hand spend-btn" title="充值总额:当日24小时,在游戏内充值成功的订单金额总和" style="width: 200px;">充值总额<i
class="iconfont iconplus-square icon-spend"></i></th>
<th class="pointer-hand spend-element th-hide" title="现金充值:统计时间范围内,在游戏内充值成功的订单,使用现金支付金额总和">现金充值</th>
<th class="pointer-hand spend-element th-hide" title="通用币充值:统计时间范围内,在游戏内充值成功的订单,使用通用币支付金额总和">通用币充值</th>
@ -198,7 +198,7 @@
<th class="pointer-hand spend-element th-hide" title="折扣币充值:统计时间范围内,在游戏内充值成功的订单,使用折扣币支付金额总和,该部分不参与结算">
折扣币充值
</th>
<th class="pointer-hand spend-element th-hide" title="代金使用:统计时间范围内,在游戏内充值成功的订单,使用代金券金额总和,该部分不参与结算">
<th class="pointer-hand spend-element th-hide" title="代金使用:统计时间范围内,在游戏内充值成功的订单,使用代金券总和,该部分不参与结算">
代金劵使用
</th>
</tr>
@ -609,7 +609,9 @@
var sdkVersion = $(this).val();
var relationGameId = $('#relation_game_id').val();
getServerList(relationGameId, sdkVersion);
if (relationGameId > 0) {
getServerList(relationGameId, sdkVersion);
}
});
function getServerList(relationGameId, sdkVersion) {

@ -203,7 +203,7 @@
<else/>
<volist name="listData" id="vo">
<tr class="num2">
<td>{$vo.user_account}</td>
<td title="玩家ID{$vo.user_id}">{$vo.user_account}</td>
<td>{$vo.order_number}</td>
<td>{:get_pay_way($vo['pay_way'])}</td>
<td>{$vo.pay_amount}</td>
@ -343,7 +343,9 @@
var sdkVersion = $(this).val();
var relationGameId = $('#relation_game_id').val();
getServerList(relationGameId, sdkVersion);
if (relationGameId > 0) {
getServerList(relationGameId, sdkVersion);
}
});
function getServerList(relationGameId, sdkVersion)

@ -124,7 +124,7 @@
<else/>
<volist name="listData" id="vo">
<tr class="num2">
<td>{$vo.account}</td>
<td title="玩家ID{$vo.id}">{$vo.account}</td>
<td>{$vo.promote_account}({$vo.pro_real_name})</td>
<td>{$vo.device_number}</td>
<td>{$vo.register_time|date='Y-m-d H:i:s',###}</td>

@ -155,17 +155,23 @@
<th>平台</th>
<th class="pointer-hand" title="创角数:统计时间范围内,成功创建角色数量(唯一)">创角数</th>
<th class="pointer-hand" title="创角用户:统计时间范围内,成功创角的用户数(去重)">创角用户</th>
<th class="pointer-hand" title="新创角用户当日24小时首次创建角色的用户数; 新创角设备当日24小时首次创建角色设备总数去重;">新创角用户|新创角设备</th>
<th class="pointer-hand" title="新创角用户当日24小时首次创建角色的用户数新创角设备当日24小时首次创建角色设备总数去重">新创角用户|新创角设备
</th>
<th class="pointer-hand" title="新增创角IP统计时间范围内首次创建角色IP总数去重">新增创角IP</th>
<th class="pointer-hand" title="登录用户数:统计时间范围内,登录的用户数(去重)">登录用户数</th>
<th class="pointer-hand" title="充值人数:统计时间范围内,支付成功且处理成功的游戏充值订单用户数(去重)">充值人数</th>
<th class="pointer-hand" title="充值次数:统计时间范围内,游戏充值成功订单数">充值次数</th>
<th class="pointer-hand spend-btn" title="充值总额:统计时间范围内,在游戏内充值成功的订单金额总和" style="width: 200px;">充值总额<i class="iconfont iconplus-square icon-spend"></i></th>
<th class="pointer-hand" title="充值人数当日24小时在游戏内充值成功的订单的用户数去重">充值人数</th>
<th class="pointer-hand" title="充值次数当日24小时在游戏内充值成功的订单数量">充值次数</th>
<th class="pointer-hand spend-btn" title="充值总额当日24小时在游戏内充值成功的订单金额总和" style="width: 200px;">充值总额<i
class="iconfont iconplus-square icon-spend"></i></th>
<th class="pointer-hand spend-element th-hide" title="现金充值:统计时间范围内,在游戏内充值成功的订单,使用现金支付金额总和">现金充值</th>
<th class="pointer-hand spend-element th-hide" title="通用币充值:统计时间范围内,在游戏内充值成功的订单,使用通用币支付金额总和">通用币充值</th>
<th class="pointer-hand spend-element th-hide" title="绑定币充值:统计时间范围内,在游戏内充值成功的订单,使用绑定币支付金额总和">绑定币充值</th>
<th class="pointer-hand spend-element th-hide" title="折扣币充值:统计时间范围内,在游戏内充值成功的订单,使用折扣币支付金额总和,该部分不参与结算">折扣币充值</th>
<th class="pointer-hand spend-element th-hide" title="代金劵使用:统计时间范围内,在游戏内充值成功的订单,使用代金券金额总和,该部分不参与结算">代金劵使用</th>
<th class="pointer-hand spend-element th-hide" title="折扣币充值:统计时间范围内,在游戏内充值成功的订单,使用折扣币支付金额总和,该部分不参与结算">
折扣币充值
</th>
<th class="pointer-hand spend-element th-hide" title="代金券使用:统计时间范围内,在游戏内充值成功的订单,使用代金券总和,该部分不参与结算">
代金劵使用
</th>
</tr>
<empty name="listData">
<tr class="num2">
@ -376,7 +382,9 @@
var sdkVersion = $(this).val();
var relationGameId = $('#relation_game_id').val();
getServerList(relationGameId, sdkVersion);
if (relationGameId > 0) {
getServerList(relationGameId, sdkVersion);
}
});
function getServerList(relationGameId, sdkVersion)

@ -166,7 +166,9 @@
var sdkVersion = $(this).val();
var relationGameId = $('#relation_game_id').val();
getServerList(relationGameId, sdkVersion);
if (relationGameId > 0) {
getServerList(relationGameId, sdkVersion);
}
});
function getServerList(relationGameId, sdkVersion)

@ -48,7 +48,7 @@
<select id="server_id" name="server_name" class="reselect select_gallery" style="width:101px">
<option game-id="0" value="">请选择区服</option>
<volist name=":getServer_name_on($_POST['game_name'])" id="vo">
<option value="{$vo.server_name}" <if condition="$_REQUEST['server_name'] eq $vo['server_name']">selected="selected"</if>>{$_POST['server_name']}</option>
<option value="{$vo.server_name}" <if condition="$_REQUEST['server_name'] eq $vo['server_name']">selected="selected"</if>>{$vo.server_name}</option>
</volist>
</select>

@ -46,10 +46,13 @@
<div class="form-group normal_space fl">
<span id="server_js">
<select id="server_id" name="server_name" class="reselect select_gallery" style="width:101px">
<select id="server_id" name="server_name" class="reselect select_gallery"
style="width:101px">
<option game-id="0" value="">请选择区服</option>
<volist name=":getServer_name_on($_REQUEST['game_name'])" id="vo">
<option value="{$vo.server_name}" <if condition="$_REQUEST['server_name'] eq $vo['server_name']">selected="selected"</if>>{$_REQUEST['server_name']}</option>
<volist name=":getServer_name_on($_GET['game_name'])" id="vo">
<option value="{$vo.server_name}"
<if condition="$_REQUEST['server_name'] eq $vo['server_name']">selected="selected"</if>
>{$vo.server_name}</option>
</volist>
</select>
@ -64,9 +67,36 @@
<input type="text" name="user_account" id="user_account" class="txt normal_txt" style="width:110px;" placeholder="测试账号" value="{:I('user_account')}" onKeyDown="webchat_chkkeysend(event);">
</div>
<div class="form-group normal_space fl">
<input type="text" name="promote_name" id="promote_name" class="txt normal_txt" style="width:110px;" placeholder="推广员" value="{:I('promote_name')}" onKeyDown="webchat_chkkeysend(event);">
</div>
<!-- <div class="form-group normal_space fl">-->
<!-- <input type="text" name="promote_name" id="promote_name" class="txt normal_txt" style="width:110px;" placeholder="推广员" value="{:I('promote_name')}" onKeyDown="webchat_chkkeysend(event);">-->
<!-- </div>-->
<if condition="$thisParentPromoteId eq 0">
<div class="form-group normal_space fl">
<select id="team_leader_id" name="team_leader_id" class="reselect select_gallery" style="min-width:130px;">
<option value="0">组长账号</option>
<volist name=":getAllPromoteListByType(1)" id="vo">
<option value="{$vo.id}" <if condition="$vo.id eq $_GET['team_leader_id']"> selected="selected" </if>>{$vo['account']}({$vo['real_name']})</option>
</volist>
</select>
</div>
</if>
<input id="promotesid" value="{$_GET['promote_id']}" type="hidden"/>
<div class="form-group normal_space fl">
<select id="promote_id" name="promote_id" class="reselect select_gallery" style="min-width:130px;">
<option value="0">推广员账号</option>
<notempty name="teamLeaderData">
<volist name="teamLeaderData" id="vo">
<option value="{$vo.id}">{$vo['account']}({$vo['real_name']})</option>
</volist>
</notempty>
<if condition="$_GET['team_leader_id'] gt 0">
<volist name=":getAllPromoteListByType(3,false,empty(I('team_leader_id'))?PID:I('team_leader_id'))" id="vo">
<option value="{$vo.id}" <if condition="$vo.id eq $_GET['promote_id']"> selected="selected" </if>>{$vo['account']}({$vo['real_name']})</option>
</volist>
</if>
</select>
</div>
<div class="form-group normal_space fl">
<input type="submit" class="submit" id='submit' value="查询" style="cursor:pointer;">
@ -162,6 +192,7 @@
<script type="text/javascript">
$().ready(function(){
setValue('row','{:I("get.row",10)}');
$("#pagehtml a").on("click",function(event){
event.preventDefault();//使a自带的方法失效即无法调整到href中的URL(http://www.baidu.com)
@ -170,6 +201,43 @@
$('#data_form').submit();
});
$('#team_leader_id').change(function () {
var promoteId = parseInt($(this).val());
var promoteValue = $(this).find("option:selected").text();
var html = "<option value='' selected>推广员账号</option>";
if (promoteId > 0) {
html += "<option value='" + promoteId + "'>" + promoteValue + "</option>";
$.ajax({
url: "{:U('getChildPromoteList')}",
type: "post",
data: {promote_id:promoteId},
dataType: 'json',
success: function (data) {
var promoteData = data.data;
if (promoteData.length > 0) {
for (var i in promoteData) {
html += "<option value='" + promoteData[i]['id'] + "'>" + promoteData[i]['account'] + "(" + promoteData[i]['real_name'] + ")</option>";
}
}
showPromoteSelect(html);
}
});
} else {
showPromoteSelect(html);
}
});
function showPromoteSelect(html)
{
$("#promote_id").empty();
$('#promote_id').html(html);
$("#promote_id").select2();
}
$('#sdate').datetimepicker({
lang:'ch',
format:'Y-m-d',
@ -277,7 +345,9 @@
+'/game_name/'+$('#game_id').val()
+'/server_name/'+$('#server_id').val()
+'/role_name/'+$('#role_name').val()
+'/user_account/'+$('#user_account').val()+'/promote_name/'+$('#promote_name').val();
+'/user_account/'+$('#user_account').val()
+'/promote_id/'+$('#promote_id').val()
+'/team_leader_id/'+$('#team_leader_id').val();
console.log(formsUrl);
$('#forms').attr('action',formsUrl);
@ -397,6 +467,23 @@
})
}
})
checkPromote();
function checkPromote() {
var promoteId = parseInt($('#team_leader_id').val());
var promoteValue = $('#team_leader_id').find("option:selected").text();
var promote_id = $('#promotesid').val();
if (promoteId > 0) {
var html = "<option value='" + promoteId + "' ";
if (promote_id == promoteId) {
html += "selected='selected'";
}
html +=" >"+ promoteValue + "</option>";
$('#promote_id').children().first().after(html);
console.log(promote_id);
}
}
</script>
</block>

@ -229,8 +229,8 @@
</div>
<!--浮动层-->
<div class="float_contact_position ">
<div class="float_contact ">
<img src="/Public/Media/images/index_about/qrcode.png" width="270">
<div class="float_contact " style="right: 100px;">
<img src="/Public/Media/images/index_about/qrcode.png" width="200">
<!-- <div class="float-bg "></div>
<ul>
<li class="show kf ">

@ -12,105 +12,6 @@
</style>
<!--头部-->
<div class="zmarg_btm59">
<!--搜索框-->
<style>
.searchbox {
background: #E5E9EC;
padding: 1rem 0;
border-bottom: 1px solid #DCDDE0;
}
.searchbox .search {
margin: 0 6rem;
display: block;
position: relative;
text-align: center;
}
.searchbox .search .text {
box-sizing: border-box;
-webkit-sizing: border-box;
width: 100%;
font-size: 1.8rem;
border: none;
background: #FFF;
border-radius: 4rem;
padding: .5rem 1.5rem .5rem 4rem;
height: 3.2rem;
}
.searchbox .search .btn {
position: absolute;
top: 0.6rem;
left: 1.1rem;
}
.searchbox .search .btn .iconfont {
font-size: 2.4rem;
color: #bbb;
}
</style>
<div class="searchbox">
<form action="" method="post" class="search">
<span onclick="game_category()">
<input type="text" name="name" class="text" placeholder="请输入游戏名称" disabled>
</span>
<span class="btn searchbtn"><i class="iconfont icon-search"></i></span>
</form>
</div>
<script>
function game_category() {
window.location.href = "{:U('Category/index')}";
}
</script>
<!--end 搜索框-->
<!-- start推荐产品 -->
<div class="hot-game-box">
<div class="box-title" style="margin-top:0;">
<span>推荐产品</span>
<a href="{:U('Rank/index',array('rank'=>'hot'))}">&plus;更多</a>
</div>
<div class="swiper-container swiper-container-hotGame">
<div class="swiper-wrapper">
<style>
.g-list li {
list-style: none;
width: 47.8%;
margin-bottom: .4rem;
position: relative;
float: left;
margin-right: 2.2%;
}
.g-list li span{
color: #333;
font-size: 15px;
margin: .2rem 0 .06667rem;
overflow: hidden;
display: -webkit-box;
}
.g-list li p{
font-size: 15px;
color: #9c9c9c;
line-height: 1.4;
overflow: hidden;
display: -webkit-box;
}
</style>
<ul class="g-list">
<volist name="recommend" id="rec">
<li>
<a href="{:U('Game/detail?id='.$rec['id'])}" data-param=""><img src="{:get_cover($rec['cover'],'path')}">
<div class="rec-name">
<span>{:msubstr2($rec['relation_game_name'],0,10)}</span>
<p class="rec-p">{:msubstr2($rec['features'],0,10)}</p></div>
</a>
</li>
</volist>
</ul>
</div>
</div>
</div>
<!-- end推荐产品 -->
<!-- start轮播banner -->
<div class="banner" style="width:100%;">
<div class="swiper-container swiper-container-banner" style="width:100%;">

@ -139,6 +139,12 @@
<img src="__IMG__/icon_xiaofei@3x.png" class="icon"><p class="name">消费记录</p>
</a>
</li> -->
<li>
<?php $exchangerecord = $user['id'] ? U('exchangerecord') : U('login');?>
<a class="item" href="/mobile.php/ssg/home.html">
<img src="__IMG__/super_sign.png" class="icon"><p class="name">超级签</p>
</a>
</li>
<!-- 最后一个空矩形框,无内容 begin! -->
<li>
<a class="item" >

@ -40,7 +40,7 @@ class UserController extends BaseController
//1.登录成功,验证在本地是否有此账号
$user_res = M('user', 'tab_') -> where(['account' => $uc_username]) -> find();
if (!empty($user_res)) {//本地存在账号,验证密码直接登录
$result = $userApi -> login_sdk($user["account"], $user['password'], 1, $user["game_id"], get_game_name($user["game_id"]), $user['sdk_version']);#调用登录
$result = $userApi -> login_sdk($user["account"], $user['password'], 1, $user["game_id"], get_game_name($user["game_id"]), $user['sdk_version'],$user['unique_code']);#调用登录
$res_msg = array();
switch ($result) {
case - 1:
@ -112,7 +112,7 @@ class UserController extends BaseController
if ($res > 0) {
$result = $userApi -> login_sdk($user["account"], $user['password'], 1, $user["game_id"], get_game_name($user["game_id"]), $user['sdk_version']);#调用登录
$result = $userApi -> login_sdk($user["account"], $user['password'], 1, $user["game_id"], get_game_name($user["game_id"]), $user['sdk_version'],$user['unique_code']);#调用登录
$res_msg = array();
switch ($result) {
case - 1:
@ -173,7 +173,7 @@ class UserController extends BaseController
} elseif ($uc_uid == - 1) {
//用户不存在,验证本地用户账号密码
$result = $userApi -> login_sdk($user["account"], $user['password'], 1, $user["game_id"], get_game_name($user["game_id"]), $user['sdk_version']);#调用登录
$result = $userApi -> login_sdk($user["account"], $user['password'], 1, $user["game_id"], get_game_name($user["game_id"]), $user['sdk_version'],$user['unique_code']);#调用登录
$res_msg = array();
switch ($result) {
case - 1:
@ -236,7 +236,7 @@ class UserController extends BaseController
}
#实例化用户接口
$userApi = new MemberApi();
$result = $userApi -> login_sdk($user["account"], $user['password'], 1, $user["game_id"], get_game_name($user["game_id"]), $user['sdk_version']);#调用登录
$result = $userApi -> login_sdk($user["account"], $user['password'], 1, $user["game_id"], get_game_name($user["game_id"]), $user['sdk_version'],$user['unique_code']);#调用登录
$res_msg = array();
switch ($result) {
@ -1196,7 +1196,13 @@ class UserController extends BaseController
$data['create_ip'] = get_client_ip();
// $data['create_device_number'] = time();
$user_play->add($data);
// 修改重复插入问题 增加唯一索引 记录重复插入异常
try {
$user_play->add($data);
} catch (\Exception $e) {
Log::write('Duplicate Exception:' .json_encode($e->getMessage()), Log::ERR);
}
$this->updateLoginRecord($data);
}

@ -111,12 +111,12 @@ class MemberApi extends Api{
public function login_($account, $password,$type=2,$game_id=0,$game_name='',$sdk_version){
return $this->model->login_1($account, $password,$type,$game_id,$game_name,$sdk_version);
}
public function login_sdk($account, $password,$type=2,$game_id=0,$game_name='',$sdk_version){
return $this->model->login_sdk($account, $password,$type,$game_id,$game_name,$sdk_version);
public function login_sdk($account, $password,$type=2,$game_id=0,$game_name='',$sdk_version,$unique_code=''){
return $this->model->login_sdk($account, $password,$type,$game_id,$game_name,$sdk_version,$unique_code);
}
/**
*修改数据
*/

@ -168,15 +168,11 @@ ADD COLUMN `user_token` char(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT
-- ----------------------------
alter table `tab_giftbag` modify COLUMN `giftbag_version` tinyint(2) COMMENT '运营平台 0双平台 1and 2ios 3超级签'
-- ----------------------------
-- 2019-10-17 zyx
-- ----------------------------
ALTER TABLE `tab_test_resource`
MODIFY COLUMN `user_account` varchar(50) BINARY CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户帐号' AFTER `user_id`;
ALTER TABLE `tab_test_resource`
MODIFY COLUMN `role_name` varchar(50) BINARY CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色名' AFTER `phone`,
MODIFY COLUMN `promote_account` varchar(30) BINARY CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '所属推广员账号' AFTER `promote_id`;
-- 2019-10-22 cxj
UPDATE `sys_model` SET list_grid = "id:编号\r\nsort:排序\r\ngame_name:游戏名称\r\ngame_type_name:游戏类型\r\ngame_type_id:游戏类型\r\ngame_appid:游戏appid\r\ngame_status|get_info_status:显示状态\r\npay_status|get_info_status:支付状态\r\nicon:图片id\r\napply_status:审核状态\r\ncategory:开放类型\r\nrecommend_status|get_info_status*1:推荐状态\r\nrelation_game_id:关联游戏id\r\nrelation_game_name:关联游戏名称\r\nsdk_version:运营平台\r\ndevelopers:开发商\r\ndow_num:下载\r\nonline_status:上线状态\r\ncreate_time:创建时间\r\nserver_type:混服管理\r\nid:操作:[EDIT]&id=[id]|编辑,Game/del?ids=[id]|删除" where id = 15;
-- 2019-10-23 zcl
ALTER TABLE `tab_coin_pay_order` CHANGE COLUMN `currency_num` `coin_num` int(11) NULL DEFAULT 0 COMMENT '代币数量' AFTER `auditor_time`;
-- 2019-10-23 zcl
update tab_quick_menu set name='订单查询' where name='充值明细'

@ -40,8 +40,8 @@
.more{display: block;float: right;padding-top: 10px;font-size: 14px;color: #4A90F0}
.more:hover{color:#26C7DB}
.fxui-tab {font-size: 14px;}
.fxui-tab-hand{height: 45px;line-height: 35px;margin: 10px;border-bottom: 1px solid #ddd}
.fxui-tab {font-size: 14px;margin-left: 20px;margin-right: 20px;}
.fxui-tab-hand{height: 45px;line-height: 35px;margin: 10px;border-bottom: 1px solid #ddd;}
.fxui-tab-tit{display: block;float: left;font-size: 14px;height: 35px;line-height: 35px;cursor: pointer;border: 1px solid #ddd;}
.fxui-tab-tit a{display: block;height: 35px;line-height: 35px;padding: 0 20px ;}
.fxui-tab-tit:first-child{border-bottom-left-radius:3px;border-top-left-radius: 3px}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

@ -1,7 +1,7 @@
$(function(){
/*轮播banner*/
var mySwiper_banner = new Swiper('.swiper-container-banner', {
autoplay: true,
autoplay: img.length > 1,
loop: true,
pagination: {
el: '.swiper-container-banner .swiper-pagination',

Loading…
Cancel
Save