Merge remote-tracking branch 'origin/feature/platfrom_aggregate_finance' into feature/platfrom_aggregate_finance

# Conflicts:
#	Application/Admin/View/PromoteCompany/add.html
#	Application/Admin/View/PromoteCompany/edit.html
master
zhengyongxing 5 years ago
commit f63b115641

@ -293,7 +293,7 @@ function get_pay_way($id=null)
return "微信APP";
break;
case 4:
return "威富通";
return "汇付宝";
break;
case 5:
return "聚宝云";
@ -1485,6 +1485,7 @@ function cash_pay_way()
$pay_way[3]=array('key'=>2,'value'=>"微信");
// $pay_way[3]=array('key'=>3,'value'=>'微信APP');
// $pay_way[4]=array('key'=>4,'value'=>'威富通');
$pay_way[4]=array('key'=>4,'value'=>'汇付宝');
/* $pay_way[4]=array('key'=>5,'value'=>'聚宝云'); */
// $pay_way[5]=array('key'=>6,'value'=>'汇付宝');
/* $pay_way[6]=array('key'=>7,'value'=>"苹果支付");
@ -1823,7 +1824,7 @@ function all_pay_way_other($type=false)
// $pay_way[3]=array('key'=>3,'value'=>'微信APP');
// $pay_way[4]=array('key'=>4,'value'=>'威富通');
/* $pay_way[4]=array('key'=>5,'value'=>'聚宝云'); */
// $pay_way[5]=array('key'=>6,'value'=>'汇付宝');
$pay_way[5]=array('key'=>4,'value'=>'汇付宝');
/* $pay_way[6]=array('key'=>7,'value'=>"苹果支付");
*/
$pay_way[15]=array('key'=>15,'value'=>'双乾支付-快捷');

@ -14,6 +14,12 @@ class CompanyGameRatioController extends AdminController
"1"=>"市场部通过",
"2"=>"管理员通过"
];
public $SettlementType=[
"-1"=>"未设定",
"0"=>"无",
"1"=>"周结",
"2"=>"月结"
];
public function _initialize()
{
$this->admininfo = $_SESSION['onethink_admin']['user_auth'];
@ -36,23 +42,56 @@ class CompanyGameRatioController extends AdminController
$gamewhere['relation_game_id'] = $params['relation_game_id'];
$where['m.relation_game_id'] = $params['relation_game_id'];
}
$pwhere = false;
if(isset($params['company_belong'])){
$pwhere = " and p.company_belong = {$params['company_belong']}";
}
if(isset($params['company_id'])){
$where['m.company_id'] = $params['company_id'];
}
$this->checkListOrCountAuthRestMap($where);
if(isset($params['game_type'])){
$gamewhere['game_type_id'] = $params['game_type'];
}
if(isset($params['settlement_type'])){
$companyid = $this->returnSettlementTypeCompanyid($params['settlement_type']);
if(empty($companyid)){
$where['_string'] = "m.company_id = -1";
}else{
if($params['settlement_type'] != -1){
$where['_string'] = "m.company_id in ({$companyid})";
}else{
$where['_string'] = "m.company_id NOT IN ({$companyid})";
}
}
}
if (isset($_REQUEST['time_start']) && isset($_REQUEST['time_end'])) {
$time_start = strtotime($_REQUEST['time_start']);
$time_end = strtotime($_REQUEST['time_end'])+ 86399;
$where["_string"] = "(begin_time BETWEEN {$time_start} AND {$time_end}) OR (end_time BETWEEN {$time_start} AND {$time_end})";
} elseif (isset($_REQUEST['time_start'])) {
$time_start = strtotime($_REQUEST['time_start']);
$where["_string"] = "end_time >= {$time_start} OR end_time = 0";
} elseif (isset($_REQUEST['time_end'])) {
$time_end = strtotime($_REQUEST['time_end'])+ 86399;
$where["_string"] = "begin_time <= {$time_end}";
}
$gameres = M("game","tab_")->field("tab_game.relation_game_id,tab_game.relation_game_name,IF(tab_game.original_package_name='','未配置',tab_game.original_package_name) original_package_name,tab_game_type.type_name game_type_name")->where($gamewhere)->join("tab_game_type on tab_game.game_type_id = tab_game_type.id")->group("tab_game.relation_game_id")->select(false);
$dbres = M("company_game_ratio","tab_")
->alias('m')
->field("m.*,g.*,p.company_name,p.company_belong,IFNULL(r.settlement_type,0) settlement_type")
->join("left JOIN ({$gameres}) g ON m.relation_game_id = g.relation_game_id")
->join("left JOIN tab_promote_company p ON m.company_id = p.id")
->join("left JOIN tab_company_relation r ON (r.first_company_type =2 AND r.first_company_id = m.company_id) OR (r.second_company_type =2 AND r.second_company_id = m.company_id)")
->where($where);
->field("m.*,g.*,p.company_name,p.company_belong,IFNULL(r.settlement_type,-1) settlement_type")
->join("JOIN ({$gameres}) g ON m.relation_game_id = g.relation_game_id")
->join("JOIN tab_promote_company p ON ( m.company_id = p.id".$pwhere.")")
->join("left JOIN tab_company_relation r ON (r.first_company_type =2 AND r.first_company_id = m.company_id) OR (r.second_company_type =2 AND r.second_company_id = m.company_id)");
if(isset($params['export'])){
$dbres = $dbres->select();
$dbres = $dbres->where($where)->select();
}else{
$dbres = $dbres->page($page, $row)->select();
$dbres = $dbres->where($where)->page($page, $row)->select();
}
foreach($dbres as $k=>&$v){
$v['begin_time'] = date("Y-m-d",$v['begin_time']);
@ -66,11 +105,9 @@ class CompanyGameRatioController extends AdminController
} else {
$symbol = "<br>";
}
if($v['settlement_type'] == 0){
$v['settlement_type'] = '--';
}else{
$v['settlement_type'] = $v['settlement_type']== 1 ? "周结" : '月结';
}
$v['settlement_type'] = $this->SettlementType[$v['settlement_type']];
//新
$thisTurnoverRatios = $v['turnover_ratio'] ? json_decode($v['turnover_ratio'], true) : [];
$thisRatioDtl = "默认:{$v['ratio']}%";
@ -101,7 +138,10 @@ class CompanyGameRatioController extends AdminController
));
}
$count = M("company_game_ratio","tab_")->alias('m')->field("count(id) count")->where($where)->find()['count'];
$count = M("company_game_ratio","tab_")->alias('m')->field("count(m.id) count")
->join("JOIN ({$gameres}) g ON m.relation_game_id = g.relation_game_id")
->join("JOIN tab_promote_company p ON ( m.company_id = p.id".$pwhere.")")
->where($where)->find()['count'];
$this->assign('data', $dbres);
$page = set_pagination($count, $row);
if($page) {
@ -110,6 +150,7 @@ class CompanyGameRatioController extends AdminController
$this->assign("companyList",D("PromoteCompany")->getList());
$this->assign("gameList",D("Game")->getRelationGameLits());
$this->assign("SettlementType",$this->SettlementType);
$this->display();
}
@ -129,20 +170,56 @@ class CompanyGameRatioController extends AdminController
$gamewhere['relation_game_id'] = $params['relation_game_id'];
$where['m.relation_game_id'] = $params['relation_game_id'];
}
if(isset($params['status'])){
$where['m.status'] = $params['status'];
}
$pwhere = false;
if(isset($params['company_belong'])){
$pwhere = " and p.company_belong = {$params['company_belong']}";
}
if(isset($params['company_id'])){
$where['m.company_id'] = $params['company_id'];
}
if(isset($params['status'])){
$where['m.status'] = $params['status'];
if(isset($params['game_type'])){
$gamewhere['game_type_id'] = $params['game_type'];
}
if(isset($params['settlement_type'])){
$companyid = $this->returnSettlementTypeCompanyid($params['settlement_type']);
if(empty($companyid)){
$where['_string'] = "m.company_id = -1";
}else{
if($params['settlement_type'] != -1){
$where['_string'] = "m.company_id in ({$companyid})";
}else{
$where['_string'] = "m.company_id NOT IN ({$companyid})";
}
}
}
if (isset($_REQUEST['time_start']) && isset($_REQUEST['time_end'])) {
$time_start = strtotime($_REQUEST['time_start']);
$time_end = strtotime($_REQUEST['time_end'])+ 86399;
$where["_string"] = "(begin_time BETWEEN {$time_start} AND {$time_end}) OR (end_time BETWEEN {$time_start} AND {$time_end})";
} elseif (isset($_REQUEST['time_start'])) {
$time_start = strtotime($_REQUEST['time_start']);
$where["_string"] = "end_time >= {$time_start} OR end_time = 0";
} elseif (isset($_REQUEST['time_end'])) {
$time_end = strtotime($_REQUEST['time_end'])+ 86399;
$where["_string"] = "begin_time <= {$time_end}";
}
//TODO:未计算公司类型
$this->checkListOrCountAuthRestMap($where);
// $this->checkListOrCountAuthRestMap($where);
$gameres = M("game","tab_")->field("tab_game.relation_game_id,tab_game.relation_game_name,IF(tab_game.original_package_name='','未配置',tab_game.original_package_name) original_package_name,tab_game_type.type_name game_type_name")->where($gamewhere)->join("tab_game_type on tab_game.game_type_id = tab_game_type.id")->group("tab_game.relation_game_id")->select(false);
$dbres = M("company_game_ratio_log","tab_")
->alias('m')
->field("m.*,g.*,p.company_name,p.company_belong,IFNULL(r.settlement_type,0) settlement_type")
->join("left JOIN ({$gameres}) g ON m.relation_game_id = g.relation_game_id")
->join("left JOIN tab_promote_company p ON m.company_id = p.id")
->join("JOIN ({$gameres}) g ON m.relation_game_id = g.relation_game_id")
->join("JOIN tab_promote_company p ON ( m.company_id = p.id".$pwhere.")")
->join("left JOIN tab_company_relation r ON (r.first_company_type =2 AND r.first_company_id = m.company_id) OR (r.second_company_type =2 AND r.second_company_id = m.company_id)")
->where($where)
->order("FIELD(m.status,0,1,-1,-2,2),id desc");
@ -152,11 +229,7 @@ class CompanyGameRatioController extends AdminController
$dbres = $dbres->page($page, $row)->select();
}
foreach($dbres as $k=>&$v){
if($v['settlement_type'] == 0){
$v['settlement_type'] = '--';
}else{
$v['settlement_type'] = $v['settlement_type']== 1 ? "周结" : '月结';
}
$v['settlement_type'] = $this->SettlementType[$v['settlement_type']];
$v['begin_time'] = date("Y-m-d",$v['begin_time']);
$v['end_time'] = $v['end_time'] ? date('Y-m-d', $v['end_time']) : '永久';
@ -239,7 +312,10 @@ class CompanyGameRatioController extends AdminController
));
}
$count = M("company_game_ratio_log","tab_")->alias('m')->field("count(id) count")->where($where)->find()['count'];
$count =M("company_game_ratio_log","tab_")->alias('m')->field("count(m.id) count")
->join("JOIN ({$gameres}) g ON m.relation_game_id = g.relation_game_id")
->join("JOIN tab_promote_company p ON ( m.company_id = p.id".$pwhere.")")
->where($where)->find()['count'];
$this->assign('data', $dbres);
$page = set_pagination($count, $row);
if($page) {
@ -251,6 +327,7 @@ class CompanyGameRatioController extends AdminController
$this->assign("companyList",D("PromoteCompany")->getList());
$this->assign("gameList",D("Game")->getRelationGameLits());
$this->assign("SettlementType",$this->SettlementType);
$this->display();
}
@ -646,6 +723,31 @@ class CompanyGameRatioController extends AdminController
$data =json_encode(['msg'=>$data,"code"=>4000],JSON_UNESCAPED_UNICODE);
exit($data);
}
protected function returnSettlementTypeCompanyid($st)
{
if($st != -1){
$setwhere = [
"settlement_type"=>$st,
"_string"=>"first_company_type=2 OR second_company_type=2"
];
}else{
$setwhere = [
"_string"=>"first_company_type=2 OR second_company_type=2"
];
}
$scompany_id = M("company_relation","tab_")->field("first_company_type,second_company_type,first_company_id,second_company_id")->where($setwhere)->select();
$company_id = [];
foreach($scompany_id as $k=>$v){
if($v['first_company_type'] == 0){
$company_id[] = $v['second_company_id'];
}else{
$company_id[] = $v['first_company_id'];
}
}
unset($scompany_id);
$company_id = implode(",",$company_id);
return $company_id;
}
}

@ -72,7 +72,7 @@ class CompanyRelationController extends AdminController
$where['is_payment'] = $params['is_payment'];
}
$this->checkListOrCountAuthRestMap($where);//导出权限
// $this->checkListOrCountAuthRestMap($where);//导出权限
$dbres = $this->DBModel->where($where)->order("id desc");;
if(isset($params['export'])){
$dbres = $dbres->select();
@ -153,7 +153,7 @@ class CompanyRelationController extends AdminController
if(isset($params['status'])){
$where['status'] = $params['status'];
}
$this->checkListOrCountAuthRestMap($where);//导出权限
// $this->checkListOrCountAuthRestMap($where);//导出权限
$dbres = $this->DBlogModel->where($where)->order("FIELD(status,0,1,-1,-2,2),id desc");;
if(isset($params['export'])){
$dbres = $dbres->select();

@ -727,7 +727,7 @@ class CompanyStatementController extends ThinkController
$upwhere = "(first_company_type = 1 AND first_company_id NOT IN ({$up_company_id}) ) OR ( second_company_type = 1 AND second_company_id NOT IN ({$up_company_id}) )";
}
$uprelation = M("company_relation","tab_")->field("first_company_id,first_company_type,second_company_id,second_company_type")->where($upwhere)->select();
foreach($uprelation as $k=>$v){
if($v['first_company_type'] == 0){
$senddata["up_company_id"][] = $v['second_company_id'];
@ -741,7 +741,7 @@ class CompanyStatementController extends ThinkController
$downwhere = "1=1";
}else{
$dowm_company_id =implode(",",$dowm_company_id);
$downwhere = "(first_company_type = 1 AND first_company_id NOT IN ({$dowm_company_id}) ) OR ( second_company_type = 1 AND second_company_id NOT IN ({$dowm_company_id}) )";
$downwhere = "(first_company_type = 2 AND first_company_id NOT IN ({$dowm_company_id}) ) OR ( second_company_type = 2 AND second_company_id NOT IN ({$dowm_company_id}) )";
}
$downrelation = M("company_relation","tab_")->field("first_company_id,first_company_type,second_company_id,second_company_type")->where($downwhere)->select();

@ -9,6 +9,11 @@ use Think\Controller;
*/
class CompanyStatementSetController extends Controller {
public $cpapihost;
public $TYPE=[
"0"=>"周结",
"1"=>"月结",
"2"=>"补点"
];
public $token = "LYHTQDJS";
public function _initialize(){
@ -71,7 +76,7 @@ class CompanyStatementSetController extends Controller {
echo "∟----推广公司周结统计ok".PHP_EOL;
$this->promoteUserPool(0,$stime);
echo "∟----推广个人月结&补点统计ok".PHP_EOL;
echo "∟----推广个人周结ok".PHP_EOL;
}
if($d == 1){
echo $nowdate.":".PHP_EOL;
@ -86,7 +91,7 @@ class CompanyStatementSetController extends Controller {
echo "∟----推广公司月结&补点统计ok".PHP_EOL;
$this->promoteUserPool(1,$stime);
$this->promoteUserPool(2,$stime);
// $this->promoteUserPool(2,$stime);
echo "∟----推广个人月结&补点统计ok".PHP_EOL;
}
}else{
@ -665,10 +670,54 @@ class CompanyStatementSetController extends Controller {
$pcList[$k]['list'] = $v;
}
}
public function promoteUserPool($type,$stime,$recount = false){
$t = $this->setBeginAndEndTime($type,$stime);
$begintime = $t[0];
$endtime = $t[1];
$basedata = [
"pay_amount"=>0,
"statement_money"=>0,
"lack_statement_money"=>0,
"withdraw_type"=>$type,
"platform_amount"=>0,
"create_lack_ids"=>[],
"del_lack_ids"=>[],
"statement_begin_time"=>$begintime,
"statement_end_time"=>$endtime,
"fine"=>0,
"reward"=>0,
"verify_status"=>0,
"company_type"=>2,
"verify_log"=>json_encode(["create_user"=>"system","create_time"=>date("Y-m-d H:i:s")]),
"op_time"=>time()
];
$users = $user = $basedata;
$users['is_payment'] = 1;
$users['statement_num'] = "PL_".date('Ymd').date('His').sp_random_num(3);
$user['is_payment'] = 2;
$user['statement_num'] = "PL_".date('Ymd').date('His').sp_random_num(3);
if($type == 0){//周结
$this->doPromoteUserPool($user,$users,$type,$stime,$recount);
}else{
$users['withdraw_type'] = 1;
$user['withdraw_type'] = 1;
//月结&补点
$this->doPromoteUserPool($user,$users,1,$stime,$recount);
$this->doPromoteUserPool($user,$users,2,$stime,$recount);
}
$this->savePromotateUserPool($users);
$this->savePromotateUserPool($user);
}
/**
* 下游个人汇总单
*/
public function promoteUserPool($type,$stime,$recount = false)
public function doPromoteUserPool(&$user,&$users,$type,$stime,$recount = false)
{
$t = $this->setBeginAndEndTime($type,$stime);
$begintime = $t[0];
@ -718,33 +767,7 @@ class CompanyStatementSetController extends Controller {
$RewardRecord = M("RewardRecord","tab_");
$LackStatement = M("company_lack_statement_info","tab_");
$StatementInfo = M("company_statement_info","tab_");
$basedata = [
"pay_amount"=>0,
"statement_money"=>0,
"lack_statement_money"=>0,
"withdraw_type"=>$type,
"platform_amount"=>0,
"create_lack_ids"=>[],
"del_lack_ids"=>[],
"statement_begin_time"=>$begintime,
"statement_end_time"=>$endtime,
"fine"=>0,
"reward"=>0,
"verify_status"=>0,
"company_type"=>2,
"verify_log"=>json_encode(["create_user"=>"system","create_time"=>date("Y-m-d H:i:s")]),
"op_time"=>time()
];
$users = $user = $basedata;
$users['is_payment'] = 1;
$users['statement_num'] = "PL_".date('Ymd').date('His').sp_random_num(3);
$user['is_payment'] = 2;
$user['statement_num'] = "PL_".date('Ymd').date('His').sp_random_num(3);
//
foreach($pc as $k=>&$v){
//获取其他信息
$v = $this->getCompanyOtherInfo($v,$k);
@ -916,15 +939,12 @@ class CompanyStatementSetController extends Controller {
}
}
}
$this->savePromotateUserPool($users,$type);
$this->savePromotateUserPool($user,$type);
}
/**
* 保存信息汇总信息
*/
public function savePromotateUserPool($data){
if(empty($data['create_lack_ids']) && empty($data['del_lack_ids']) && empty($data['info_ids'])){ return;}
if($data['statement_money'] == 0 && $type ==2){ return;}
if($data['statement_money'] == 0){
$data['verify_status'] = 5;
$data['verify_log'] = json_encode(["create_user"=>"system","create_time"=>date("Y-m-d H:i:s"),"verify_user"=>"system","verify_time"=>date("Y-m-d H:i:s"),"payment_user"=>"system","payment_time"=>date("Y-m-d H:i:s")]);

@ -434,7 +434,6 @@ class ConsoleController extends Think {
$start = I('start', date('Y-m-d'));
$end = I('end', date('Y-m-d'));
$gameIds = I('game_ids', '');
$startTime = strtotime($start . ' 00:00:00');
$endTime = strtotime($end . ' 23:59:59');
$gameIdRows = explode(',', $gameIds);

@ -1069,7 +1069,6 @@ class ExportController extends Controller
);
break;
case 7:
$startDate = empty($_REQUEST['timestart']) ? date('Y-m-d', strtotime('-6 day', time())) : $_REQUEST['timestart'];
$endDate = empty($_REQUEST['timeend']) ? date('Y-m-d') : $_REQUEST['timeend'];
@ -1175,7 +1174,7 @@ class ExportController extends Controller
$xlsCell = array(
"支付订单号","CP订单号", "充值时间","支付时间", "玩家账号", "游戏名称", L('Subordinate_channel'), "充值ip","区服ID", "游戏区服",
"支付订单号","CP订单号", "充值时间","支付时间", "玩家账号", "游戏名称", L('Subordinate_channel'), '所属推广公司', "充值ip","区服ID", "游戏区服",
"角色ID","角色名称", "订单金额", "实付金额", "充值方式", L('Order_status'), "游戏通知状态", "消费"."{$total}"
);
@ -1207,13 +1206,21 @@ class ExportController extends Controller
// ->join($tab_promote_join)
// ->order('pay_time DESC')
// ->select();
->field('pay_order_number,extend,pay_time,payed_time,user_account,game_name,promote_account,spend_ip,server_id,server_name,game_player_id,game_player_name,cost,pay_amount,pay_way,pay_status,pay_game_status')
->field('pay_order_number,extend,pay_time,payed_time,user_account,game_name,promote_account, 0 as company_name, spend_ip,server_id,server_name,game_player_id,game_player_name,cost,pay_amount,pay_way,pay_status,pay_game_status, promote_id')
// ->join('tab_promote on tab_promote.id = tab_spend.promote_id', 'left')
// ->join('tab_promote_company on tab_promote_company.id and tab_promote.company_id', 'left')
->where($map)
->limit(($i-1)*$perSize ,$perSize)
->order($order ? $order : 'pay_time desc')
->select();
$promoters = D('Promote')->where(['id'=>['in', array_unique(array_column($xlsData, 'promote_id'))]])->field('id, company_id')->select();
$promoters = $promoters ? array_column($promoters, 'company_id', 'id') : [];
$companys = $promoters ? M('promote_company', 'tab_')->where(['id'=>['in', array_unique(array_values($promoters))]])->field('id, company_name')->select() : [];
$companys = $companys ? array_column($companys, 'company_name', 'id') : [];
foreach($xlsData as $value) {
$value['company_name'] = $promoters[$value['promote_id']] == 0 ? '官方渠道' : ($companys[$promoters[$value['promote_id']]] ?? '');
unset($value['promote_id']);
$value['pay_time'] = date('Y-m-d H:i:s',$value['pay_time']);
if($value['pay_status'] == 1) {
$value['payed_time'] = date('Y-m-d H:i:s',$value['payed_time']);

@ -718,7 +718,7 @@ class FinanceController extends ThinkController
if (!empty(I('timestart'))) {
$timestart = strtotime(I('timestart'));
$map['_string'] = "s.pay_time >= {$timestart}";
$map['_string'] = "s.payed_time >= {$timestart}";
}
if (!empty(I('timeend'))) {
@ -726,7 +726,7 @@ class FinanceController extends ThinkController
if (!empty($map['_string'])) {
$map['_string'] .= " and ";
}
$map['_string'] .= " s.pay_time < {$timeend}";
$map['_string'] .= " s.payed_time < {$timeend}";
}
if (!empty(I('game_type_id'))) {
@ -736,7 +736,6 @@ class FinanceController extends ThinkController
//游戏统计列表
$data = D("spend")->gameStatistics($map, $row, $p);
$endTime = time();
foreach ($data as $key => $value) {
$data[$key]['all_cash_count'] = number_format($value['cash_count'] + $value['balance_coin_count'] + $value['inside_cash_count'],2,'.','');
}
@ -1221,6 +1220,7 @@ class FinanceController extends ThinkController
}
foreach ($cashStatistics as $key => $value) {
$cashStatistics[$key]['pay_rate'] = '';
$cashStatistics[$key]['total'] = $value['pay_amount'] + $value['balance'];//添加列表合计
}
@ -1237,11 +1237,12 @@ class FinanceController extends ThinkController
foreach($cashStatistics as $key =>$value) {
unset($cashStatistics[$key]['pay_way']);
$cashStatistics[$key]['pay_rate'] = strval(round($value['total']/$all_total, 4)*100) . "%";
}
db2csv(array_merge($cashStatistics,
[0=>['pay_type'=>'总计','pay_amount'=>$all_pay_amount,'balance'=>$all_balance,'total'=>$all_total]]),'平台统计'
,['支付方式','现金充值','平台币充值','合计']);
[0=>['pay_type'=>'总计','pay_amount'=>$all_pay_amount,'balance'=>$all_balance, 'pay_rate'=>'', 'total'=>$all_total]]),'平台统计'
,['支付方式','现金充值','平台币充值', '支付方式占比', '合计']);
}
$this->checkListOrCountAuthRestMap($map,[]);

@ -216,7 +216,7 @@ class FinancePromoteController extends AdminController
$map["s.game_id"] = array("in",implode(',', array_column(getGameByName($_REQUEST['game_name'], $_REQUEST['game_type']), 'id')) );
}
if($istimeselect){
$map['s.pay_time']=$istimeselect;
$map['s.payed_time']=$istimeselect;
}
$map['s.pay_status']=1;
$field= "SUM(CASE WHEN pay_way > 0 THEN pay_amount ELSE 0 END) as cash_count,

@ -9,6 +9,39 @@ namespace Admin\Controller;
*/
class OldCountController extends \Think\Controller
{
/**
* 新的游戏比例后的数据迁移
* 重复执行将会叠加数据,请勿重复执行
*/
public function PromoteToCompanyRatioInit()
{
//获取旧数据
$oldres = M("promote_game_ratio","tab_")->field("promote_id,relation_game_id,ratio,turnover_ratio,begin_time,end_time")->group("promote_id,relation_game_id")->select();
$adddata = [];
$CompanyGameRatio = M("company_game_ratio","tab_");
foreach ($oldres as $k => &$v) {
$comoany_id = $this->promoteIdToCompanyId($v['promote_id']);
unset($v['promote_id']);
$v['company_id'] = $comoany_id ;
$adddata[$comoany_id] = $v;
}
foreach($adddata as $k => &$v){
$map = [
"company_id"=>$v['company_id'],
"relation_game_id"=>$v['relation_game_id']
];
$cres = $CompanyGameRatio->where($map)->find();
if(empty($cres)){
$CompanyGameRatio->add($v);
}
}
echo "PromoteToCompanyRatioInit success";
}
protected function promoteIdToCompanyId($promote_id)
{
return M("promote","tab_")->field("company_id")->where("id='{$promote_id}'")->find()['company_id'];
}
/**
* 财务分类汇总统计旧数据聚合
*/

@ -25,23 +25,23 @@ class PayChannelController extends ThinkController
$map = [];
if (!empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
$map['pay_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
$coinMap['tab_deposit.create_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
$bindMap['create_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
$map['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
$coinMap['tab_deposit.payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
$bindMap['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
$offcialmap['create_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
$spreadMap['create_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
$maptestorder['pay_time'] = array('between', [strtotime($_REQUEST['timestart']), strtotime($_REQUEST['timeend']) + 86399]);
} elseif (!empty($_REQUEST['timestart']) && empty($_REQUEST['timeend'])) {
$map['pay_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
$coinMap['tab_deposit.create_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
$bindMap['create_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
$map['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
$coinMap['tab_deposit.payed_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
$bindMap['payed_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
$offcialmap['create_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
$spreadMap['create_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
$maptestorder['pay_time'] = array('between', [strtotime($_REQUEST['timestart']), time()]);
} elseif (empty($_REQUEST['timestart']) && !empty($_REQUEST['timeend'])) {
$map['pay_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
$coinMap['tab_deposit.create_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
$bindMap['create_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
$map['payed_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
$coinMap['tab_deposit.payed_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
$bindMap['payed_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
$offcialmap['create_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
$spreadMap['create_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
$maptestorder['pay_time'] = array('elt', (strtotime($_REQUEST['timeend']) + 86399));
@ -131,6 +131,8 @@ class PayChannelController extends ThinkController
$data[$key]['sdk_version'] =getGameTypeName($data[$key]['sdk_version']);
}
$superMap = $map;
unset($superMap['payed_time']);
$superMap['pay_time'] = $map['payed_time'];
// unset($superMap['promote_id']);
//超级签数据
$superSignData = M('game_supersign','tab_')
@ -193,12 +195,12 @@ class PayChannelController extends ThinkController
$this->assign('spreadData',$spreadData);
$channelData = $this->getPayChannel($map);
$testOrderChannelDatas = $this->getTestOrderPayChannel($maptestorder);
$payTypeData['支付宝支付金额'] = 0;
$payTypeData['微信支付金额'] = 0;
$payTypeData['快捷支付金额'] = 0;
$payTypeData['苹果支付金额'] = 0;
$payTypeData['汇付宝支付金额'] = 0;
$payTypeData['易宝支付金额'] = 0;
$payTypeData['其他支付金额'] = 0;
@ -206,6 +208,8 @@ class PayChannelController extends ThinkController
if ($value['pay_way']==1 || $value['pay_way']==9 ) {
$payTypeData['支付宝支付金额'] += number_format($value['pay_amount'],2,'.','');
} else if ($value['pay_way']==4 ) {
$payTypeData['汇付宝支付金额'] += number_format($value['pay_amount'],2,'.','');
} else if ($value['pay_way']==2 || $value['pay_way']==3 ) {
$payTypeData['微信支付金额'] += number_format($value['pay_amount'],2,'.','');
} else if ($value['pay_way']==15) {

@ -575,6 +575,11 @@ class PlatformController extends ThinkController
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
$arraypage = $page;
if(!array_key_exists("timestart",$_REQUEST)){
$this->redirect(ACTION_NAME, array('timestart' => date('Y-m-d',strtotime('-7 day')),"timeend"=>date('Y-m-d')));
}
if (isset($_REQUEST['row'])) {
$row = $_REQUEST['row'];
} else {

@ -273,6 +273,7 @@ class PromoteCompanyController extends ThinkController
));
}
} else {
$this->assign('serviceAgreements', M('service_agreement', 'tab_')->select());
$this->assign('commonset', M('Kuaijieicon')->where(['url' => 'PromoteCompany/add'])->find());
$this->meta_title = '新增推广公司';
$this->display();
@ -304,6 +305,12 @@ class PromoteCompanyController extends ThinkController
$this->assign('data', $data);
$this->display();
}
public function marketingDirectorShow($ids=[], $isShow=0)
{
$upt = M('promote_company','tab_')->where(['id'=>['in', $ids]])->save(['marketing_director_show'=>$isShow]);
return $upt ? $this->success('更新成功'): $this->error('更新失败');
}
//编辑
@ -378,7 +385,7 @@ class PromoteCompanyController extends ThinkController
if($data['resources'] == ''){
$data['resources'] ="[]";
}
$this->assign('serviceAgreements', M('service_agreement', 'tab_')->select());
$this->assign('data', $data);
$this->display();
}
@ -558,4 +565,91 @@ WHERE old_change_promote_id in ({$promoteData})";
}
public function serviceAgreementList($row = 10, $p = 1)
{
$map = [];
$map['_string'] = " 1=1 ";
if (isset($_GET['time-start'])) {
$map['_string'] .= " and created_time >= " . strtotime($_GET['time-start']);
}
if (isset($_GET['time-end'])) {
$map['_string'] .= " and created_time < " . (strtotime($_GET['time-end']) + 86400);
}
if (isset($_GET['type'])) {
$map['type'] = $_GET['type'];
}
if (!empty($_GET['title'])) {
$map['title'] = ['like', "%{$_GET['title']}%"];
}
$list = M('service_agreement', 'tab_')
->field("tab_service_agreement.*, group_concat(distinct(tab_promote_company.company_name)) as company_name")
->join('tab_promote_company on tab_promote_company.service_agreement_show = tab_service_agreement.id', 'LEFT')->where($map)->group('tab_service_agreement.id asc')->page($p, $row)->order("status desc")->select();
$count = M('service_agreement', 'tab_')->where($map)->count();
$page = set_pagination($count, $row);
if ($page) {
$this->assign('_page', $page);
}
$this->assign('list_data', $list);
$this->display('service_agreement_list');
}
public function serviceAgreementSave($id=0, $delete=0)
{
if (IS_POST) {
if (!empty(I('ids'))) {
$ids = is_array(I('ids')) ? I('ids') : [I('ids')];
if ($delete) {
// 获取默认合同id
$defaultService = M('service_agreement', 'tab_')->where(['status'=>2])->find();
if(in_array($defaultService['id'], $ids)) {
return $this->error('无法删除默认模板');
}
$usingService = M('promote_company', 'tab_')->where(['service_agreement_show'=>['in', $ids]])->find();
if (!empty($usingService)) return $this->error('有正在使用该服务合同的公司,无法删除');
$result = M('service_agreement', 'tab_')->where(['id'=>['in', $ids]])->delete();
return $result ? $this->success('删除完成') : $this->error('删除失败');
}
}
if (empty($_POST['name']) || empty($_POST['content'])) {
return $this->error('请填写完整内容');
}
if ($id) {
$result = M('service_agreement', 'tab_')->where(['id'=>$id])->save($_POST);
return $result ? $this->success('更新完成') : $this->error('更新失败');
} else {
$data = $_POST;
$data['creator'] = is_login();
$data['created_time'] = time();
$result = M('service_agreement', 'tab_')->add($data);
return $result ? $this->success('生成协议完成') : $this->error('生成协议失败');
}
} else {
if (!empty($id)) {
if ($delete) {
$ids = [$id];
// 获取默认合同id
$defaultService = M('service_agreement', 'tab_')->where(['status'=>2])->find();
if(in_array($defaultService['id'], $ids)) {
return $this->error('无法删除默认模板');
}
$usingService = M('promote_company', 'tab_')->where(['service_agreement_show'=>['in', $ids]])->find();
if (!empty($usingService)) return $this->error('有正在使用该服务合同的公司,无法删除');
$result = M('service_agreement', 'tab_')->where(['id'=>['in', $ids]])->delete();
return $result ? $this->success('删除完成') : $this->error('删除失败');
}
$info = M('service_agreement', 'tab_')->where(['id'=>$id])->find();
if (empty($info)) return $this->error('未找到协议');
$this->assign('info', $info);
}
$this->display('service_agreement_save');
}
}
public function serviceAgreementSetDefault($id)
{
M('service_agreement', 'tab_')->where('id > 0')->save(['status'=>1]);
M('service_agreement', 'tab_')->where(['id'=>$id])->save(['status'=>2]);
return $this->success('设置完成');
}
}

@ -1224,6 +1224,10 @@ class PromoteController extends ThinkController
if (empty($id)) {
$this->ajaxReturn(['code'=>0,'msg'=>'请选择推广员']);
}
$promoter = M('promote', 'tab_')->where(['id'=>$id])->find();
if (empty($promoter)) {
$this->ajaxReturn(['code'=>0,'msg'=>'未找到推广员']);
}
$game_ids = I('game_ids', '');
if (!empty($game_ids)) {
$game_ids = implode(',', $game_ids);
@ -1231,7 +1235,9 @@ class PromoteController extends ThinkController
} else {
$game_ids = 0;
}
$res = M('promote', 'tab_')->where(['id'=>$id])->save(['game_ids'=>$game_ids]);
// 获取下级id
$childrens = M('promote', 'tab_')->where("chain like '{$promoter['chain']}{$promoter['id']}/%'")->select();
$res = M('promote', 'tab_')->where(['id'=>['in', $childrens? array_merge([$id], array_column($childrens, 'id')) : [$id] ]])->save(['game_ids'=>$game_ids]);
if ($res) {
$this->ajaxReturn(['code'=>1,'msg'=>'更新成功']);
} else {

@ -0,0 +1,233 @@
<?php
namespace Admin\Controller;
use User\Api\UserApi as UserApi;
use Base\Service\PresidentDepositService;
/**
* 推广限制
*/
class PromoteLimitRuleController extends ThinkController
{
public function records()
{
$page = I('p', 1);
$row = I('row', 10);
$companyId = I('company_id', 0);
$promoteId = I('promote_id', 0);
$conditions = [];
$promoteIds = [];
if ($promoteId !== 0) {
$promoteIds = [$promoteId];
}
if ($companyId !== 0) {
$companyPromoteIds = M('promote', 'tab_')->field(['id'])->where(['company_id' => $companyId, 'level' => 1])->getField('id', true);
if (count($companyPromoteIds) > 0) {
$promoteIds = count($promoteIds) ? array_intersect($companyPromoteIds, $promoteIds) : $companyPromoteIds;
$promoteIds[] = 0;
} else {
$promoteIds = [0];
}
}
if (count($promoteIds)) {
$conditions['promote_id'] = ['in', $promoteIds];
}
$query = M('promote_limit_rules', 'tab_')->where($conditions);
$countQuery = clone $query;
$rules = $query->page($page, $row)->select();
$count = $countQuery->count();
$recordPromotes = [];
$recordCompanys = [];
if (count($rules) > 0) {
$recordPromotes = M('promote', 'tab_')->field(['id', 'account', 'company_id'])->where(['id' => ['in', array_column($rules, 'promote_id')]])->select();
$recordCompanyIds = array_column($recordPromotes, 'company_id');
if (count($recordCompanyIds) > 0) {
$recordCompanys = M('promote_company', 'tab_')->field(['id', 'company_name', 'company_belong'])->where(['id' => ['in', $recordCompanyIds]])->select();
}
$recordPromotes = index_by_column('id', $recordPromotes);
$recordCompanys = index_by_column('id', $recordCompanys);
}
$companyTypes = [
0 => '内团',
1 => '外团',
2 => '外团-分发联盟',
3 => '无'
];
$records = [];
foreach ($rules as $rule) {
$records[] = [
'id' => $rule['id'],
'promote_account' => $recordPromotes[$rule['promote_id']]['account'],
'company_name' => $recordCompanys[$recordPromotes[$rule['promote_id']]['company_id']]['company_name'],
'company_belong' => $companyTypes[$recordCompanys[$recordPromotes[$rule['promote_id']]['company_id']]['company_belong']],
'limit_rule' => $this->getDisplayRule($rule),
];
}
$companys = M('promote_company', 'tab_')->field(['id', 'company_name'])->select();
$page = set_pagination($count, $row);
if($page) {
$this->assign('_page', $page);
}
$this->assign('records', $records);
$this->assign('companys', $companys);
$this->display();
}
private function getDisplayRule($rule)
{
if ($rule['started_at'] === null && $rule['ended_at'] === null) {
return '永久';
} elseif ($rule['started_at'] === null && $rule['ended_at'] !== null) {
return '从前 至 '.$rule['ended_at'];
} elseif ($rule['started_at'] !== null && $rule['ended_at'] === null) {
return $rule['started_at'] . ' 至 永久';
} else {
return $rule['started_at'] . ' ~ ' . $rule['ended_at'];
}
}
public function edit()
{
$this->meta_title = '编辑推广限制';
$id = I('id', 0);
$companys = M('promote_company', 'tab_')->field(['id', 'company_name'])->select();
$record = M('promote_limit_rules', 'tab_')->where(['id' => $id])->find();
$promote = null;
$company = null;
if ($record) {
$promote = M('promote', 'tab_')->where(['id' => $record['promote_id']])->field(['id', 'company_id', 'account'])->find();
$company = M('promote_company', 'tab_')->where(['id' => $promote['company_id']])->field(['id', 'company_name'])->find();
}
$this->assign('promote', $promote);
$this->assign('company', $company);
$this->assign('companys', $companys);
$this->assign('record', $record);
$this->display('form');
}
public function save()
{
$id = I('id', 0);
$promoteId = I('promote_id', 0);
$startedAt = I('started_at', '');
$endedAt = I('ended_at', '');
$startedAt = $startedAt === '' ? null : $startedAt;
$endedAt = $endedAt === '' ? null : $endedAt;
if ($startedAt && $endedAt && strtotime($startedAt) > strtotime($endedAt)) {
return $this->error('开始时间不能大于结束时间');
}
$record = null;
if ($id > 0) {
$record = M('promote_limit_rules', 'tab_')->where(['id' => $id])->find();
if (!$record) {
return $this->error('修改记录不存在');
}
} else {
if (empty($promoteId)) {
return $this->error('请选择会长');
}
$promoteRecord = M('promote_limit_rules', 'tab_')->where(['promote_id' => $promoteId])->find();
if ($promoteRecord) {
return $this->error('该会长已经设定限制规则,请前往更新');
}
}
if ($record) {
$data = [];
$data['started_at'] = $startedAt;
$data['ended_at'] = $endedAt;
$data['update_time'] = time();
M('promote_limit_rules', 'tab_')->where(['id' => $id])->save($data);
addOperationLog([
'op_type' => 1,
'key'=> $promoteId . '/' . $startedAt . '/' . $endedAt,
'op_name' => '修改推广限制',
'url' => U('PresidentDeposit/edit', ['id'=>$id]), 'menu'=>'推广员-推广员管理-推广限制-修改推广限制'
]);
} else {
$data = [];
$data['promote_id'] = $promoteId;
$data['started_at'] = $startedAt;
$data['ended_at'] = $endedAt;
$data['create_time'] = time();
$data['update_time'] = time();
M('promote_limit_rules', 'tab_')->add($data);
addOperationLog([
'op_type' => 0,
'key'=> $promoteId . '/' . $startedAt . '/' . $endedAt,
'op_name' => '新增推广限制',
'url' => U('PresidentDeposit/edit', ['promote_id'=>$promoteId]), 'menu'=>'推广员-推广员管理-推广限制-新增推广限制'
]);
}
return $this->success('保存成功', U('records'));
}
public function delete()
{
$id = I('id', 0);
M('promote_limit_rules', 'tab_')->where(['id' => $id])->delete();
addOperationLog([
'op_type' => 2,
'key' => $id,
'op_name' => '删除会长推广限制',
'url' => U('PresidentDeposit/delete', ['id' => $id]),
'menu' => '推广员-推广员管理-推广限制-删除推广限制'
]);
$this->ajaxReturn([
'status' => 1,
'message' => '删除成功'
]);
}
public function batchDelete()
{
$ids = I('ids', []);
if (count($ids) == 0) {
$this->ajaxReturn([
'status' => 0,
'message' => '无选中项'
]);
}
M('promote_limit_rules', 'tab_')->where(['id' => ['in', $ids]])->delete();
addOperationLog([
'op_type' => 2,
'key' => implode(',', $ids),
'op_name' => '批量删除会长推广限制',
'url' => U('PresidentDeposit/batchDelete', ['ids' => implode(',', $ids)]),
'menu' => '推广员-推广员管理-推广限制-批量删除推广限制'
]);
$this->ajaxReturn([
'status' => 1,
'message' => '删除成功'
]);
}
public function getPromotesByCompany()
{
$companyId = I('company_id', 0);
$promotes = M('promote', 'tab_')->field(['id', 'account'])->where(['level' => 1, 'company_id' => $companyId])->select();
$this->ajaxReturn([
'status' => 1,
'message' => '获取成功',
'data' => [
'promotes' => $promotes
]
]);
}
}

@ -77,11 +77,8 @@ class PublicController extends \Think\Controller
public function cp_login($mobile = null, $verify = null)
{
if (IS_POST) {
/* 检测验证码 TODO: */
if($verify !== 'txsb0601'){
if (!$this->checksafecode($mobile, $verify)) {
$this->error('验证码错误');
}
if (!$this->checksafecode($mobile, $verify)) {
$this->error('验证码错误');
}
$promote = M('promote_company', 'tab_')->where(['contact_phone' => $mobile])->find();
if ($promote) {

@ -147,7 +147,8 @@ class StatController extends ThinkController
$start = I('start', date('Y-m-d',strtotime('-7 day')));
$end = empty(I('end')) ? time_format(time(),'Y-m-d') : I('end');
$dataOrder = I('data_order', '');
$gameId = I('game_id', 0);
$baseGameId = I('game_id', 0);
$deviceType = I('device_type', '');
$promoteId = I('promote_id', 0);
$orderType = 'asc';
@ -162,10 +163,14 @@ class StatController extends ThinkController
$status = true;
$data = false;
$error = '';
if ($gameId == 0) {
if ($baseGameId == 0) {
$error = '请选择游戏!';
$status = false;
}
if ($deviceType == '') {
$error = '请选择设备类型!';
$status = false;
}
$startTime = strtotime($start . ' 00:00:00');
$endTime = strtotime($end . ' 23:59:59') + 1;
if ((($endTime - $startTime)/(24*3600)) > 31) {
@ -173,6 +178,10 @@ class StatController extends ThinkController
$status = false;
}
if ($status) {
$baseGame = M('base_game', 'tab_')->where(['id' => $baseGameId])->find();
$gameId = $deviceType == 'android' ? $baseGame['android_game_id'] : $baseGame['ios_game_id'];
$client = new Client([
'base_uri' => C('TASK_URL'),
'timeout' => 10.0,
@ -218,6 +227,9 @@ class StatController extends ThinkController
$this->assign('error', $error);
}
$baseGames = M('base_game', 'tab_')->select();
$this->assign('baseGames', $baseGames);
$this->checkListOrCountAuthRestMap($map,[]);
$this->assign('data', $data);
@ -676,6 +688,165 @@ AND UNIX_TIMESTAMP(
}
public function userarpu($p=0)
{
$start = I('start', date('Y-m-d'));
$end = I('end', date('Y-m-d'));
$baseGameIds = I('game_ids', '');
$promoteId = I('promote_id', 0);
$dataOrder = I('data_order', '');
$deviceType = I('device_type', '');
$containBindCoins = I('contain_bind_coins', 0);
$orderType = '';
$order = 0;
if ($dataOrder != '') {
$dataOrderRow = explode(',', $dataOrder);
$order = $dataOrderRow[0];
$orderType = $dataOrderRow[1];
}
$promoteIds = [];
if ($promoteId > 0) {
$promote = M('promote', 'tab_')->field(['id', 'chain'])->where(['id' => $promoteId])->find();
$promoteIds = M('promote', 'tab_')->where(['chain' => ['like', $promote['chain'] . $promote['id'] . '/%']])->getField('id', true);
$promoteIds[] = $promote['id'];
}
$startTime = strtotime($start . ' 00:00:00');
$endTime = strtotime($end . ' 23:59:59');
$baseGameIdRows = $baseGameIds ? explode(',', $baseGameIds) : [];
$baseGames = M('base_game', 'tab_')->select();
$gameIds = null;
$conditions = [];
if (count($baseGameIdRows)) {
$tmpBaseGames = M('base_game', 'tab_')->where(['id' => ['in', $baseGameIdRows]])->select();
$gameIds = array_merge(array_column($tmpBaseGames, 'android_game_id'), array_column($tmpBaseGames, 'ios_game_id'));
}
if (count($promoteIds)) {
$conditions['promote_id'] = ['in', $promoteIds];
}
if ($deviceType != '') {
if ($gameIds) {
$gameIds = (
$deviceType == 'android' ?
array_intersect($gameIds, array_column($baseGames, 'android_game_id')) :
array_intersect($gameIds, array_column($baseGames, 'ios_game_id'))
);
} else {
$gameIds = (
$deviceType == 'android' ?
array_column($baseGames, 'android_game_id') :
array_column($baseGames, 'ios_game_id')
);
}
}
if ($gameIds && count($gameIds)) {
if (count($gameIds)) {
$conditions['game_id'] = ['in', $gameIds];
} else {
$conditions['game_id'] = ['in', 0];
}
}
// 新增用户
/* M('user', 'tab_')
->field('count(*) count, FROM_UNIXTIME(register_time, "%Y-%m-%d") date')
->where([
'game_id' => ['in', $gameIdRows],
'register_time' => ['between', [$startTime, $endTime]]
])
->group('date')
->select(); */
$newUsers = M('user_play', 'tab_')
->field('count(DISTINCT user_id) count, FROM_UNIXTIME(create_time, "%Y-%m-%d") date')
->where(array_merge($conditions, ['create_time' => ['between', [$startTime, $endTime]]]))
->group('date')
->select();
$newUsers = index_by_column('date', $newUsers);
// 活跃用户
$loginUsers = M('login_daily_record', 'tab_')
->field('count(DISTINCT user_id) count, FROM_UNIXTIME(create_time, "%Y-%m-%d") date')
->where(array_merge($conditions, ['create_time' => ['between', [$startTime, $endTime]]]))
->group('date')
->select();
$loginUsers = index_by_column('date', $loginUsers);
$spendConditions = array_merge($conditions, [
'pay_time' => ['between', [$startTime, $endTime]],
'pay_status' => 1,
]);
if ($containBindCoins == 0) {
$spendConditions['pay_way'] = ['gt', -1];
}
// 付费玩家,付费金额
$payLogs = M('spend', 'tab_')
->field('count(DISTINCT user_id) count, sum(pay_amount) amount, FROM_UNIXTIME(pay_time, "%Y-%m-%d") date')
->where($spendConditions)
->group('date')
->select();
$payLogs = index_by_column('date', $payLogs);
$rows = [];
for ($time = $startTime; $time < $endTime; $time = $time + 24*3600) {
$date = date('Y-m-d', $time);
$newUser = isset($newUsers[$date]) ? $newUsers[$date]['count'] : 0;
$loginUser = isset($loginUsers[$date]) ? $loginUsers[$date]['count'] : 0;
$payAmount = isset($payLogs[$date]) ? $payLogs[$date]['amount'] : 0;
$payUser = isset($payLogs[$date]) ? $payLogs[$date]['count'] : 0;
$rows[] = [
'date' => $date,
'new_user' => $newUser,
'login_user' => $loginUser,
'pay_amount' => $payAmount,
'pay_user' => $payUser,
'pay_rate' => $loginUser > 0 ? (round($payUser / $loginUser * 100, 2)) : '0',
'arpu' => $loginUser > 0 ? (round($payAmount / $loginUser, 2)) : '0.00',
'arppu' => $payUser > 0 ? (round($payAmount / $payUser, 2)) : '0.00',
];
}
if (I('export', 0) == 1) {
$fields = [
'date' => '日期',
'new_user' => '新增玩家',
'login_user' => '活跃玩家',
'pay_account' => '充值金额',
'pay_user' => '付费玩家',
'pay_rate' => '付费率',
'arpu' => 'ARPU',
'arppu' => 'ARPPU',
];
foreach ($rows as &$item) {
$item['pay_rate'] = $item['pay_rate'] . '%';
}
addOperationLog(['op_type'=>3,'key'=>getNowDate(),'op_name'=>'ARPU分析','url'=>U('Stat/userarpu'),'menu'=>'统计-数据分析-ARPU分析']);
data2csv($rows, '数据分析_ARPU分析', $fields);
exit;
}
if ($dataOrder) {
$sort = $order == 3 ? SORT_DESC : SORT_ASC;
$orderColumn = array_column($rows, $orderType);
array_multisort($orderColumn, $sort, SORT_REGULAR, $rows);
}
$this->meta_title = 'ARPU统计';
$this->assign('baseGames', $baseGames);
$this->assign('records', $rows);
$this->assign('order', $order);
$this->assign('orderType', $orderType);
$this->display();
}
public function userarpu_old($p=0)
{
$request=$_REQUEST;
$page = intval($p);

@ -711,10 +711,9 @@ class ToolController extends ThinkController {
$parameter['id'] = $id;
}
if (isset($_REQUEST['status']) && $_REQUEST['status'] !== '') {
$status = intval($_REQUEST['status']);
$map['tab_company_info.status'] = $status;
$parameter['status'] = $status;
if (isset($_REQUEST['partner']) && $_REQUEST['partner'] !== '') {
$map['p.partner'] = ["like","%{$_REQUEST['partner']}%"];
}
$page = intval(I('get.p', 0));
@ -733,6 +732,7 @@ class ToolController extends ThinkController {
/* 查询记录总数 */
$count = $model
->alias('p')
->where($map)
->count();

@ -80,6 +80,10 @@ class PromoteModel extends Model{
}
}
public function login_phone($user) {
$this->autoLogin($user);
}

@ -149,9 +149,37 @@
value: data2,
id: 'key123',
onchange: function(data, index){
dataTransfer = transfer.getData('key123'); //获取右侧数据
// layer.alert(JSON.stringify(dataTransfer));
$('#promote_data').val(JSON.stringify(dataTransfer));
if (index == 0) {
for (var i=0;i<data.length;i++) {
data2.push(data[i]['value']);
}
$('#promote_data').val(JSON.stringify(dataTransfer));
return;
} else if (index == 1){
for(var i=0;i<data2.length;i++)
{
console.log(data2[i])
for(var j=0;j<data.length;j++) {
if (data2[i]==data[j]['value']) {
data2.splice(i,1);
i=i-1;
}
}
}
// data2.push(data[0]['value']);
console.log(data2)
transfer.reload('key123',{elem: '#test4',data: JSON.parse(data1).list,title: ['全部成员', '选中成员'],showSearch: true,value: data2,id: 'key123'});
dataTransfer = transfer.getData('key123');
$('#promote_data').val(JSON.stringify(dataTransfer));
return;
}
}
})

@ -78,6 +78,14 @@
</volist>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="game_type" name="game_type" class="select_gallery" >
<option value="">游戏类型</option>
<volist name=":get_game_type_all()" id="vo">
<option value="{$vo.id}" <if condition="isset($_GET['game_type']) && $vo.id eq I('game_type')">selected</if> >{$vo.type_name}</option>
</volist>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="relation_game_id" name="relation_game_id" class="select_gallery" >
<option value="">现包名</option>
@ -86,6 +94,37 @@
</volist>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="company_belong" name="company_belong" class="select_gallery" >
<option value="">内外团</option>
<volist name=":getCompanyBlong()" id="vo">
<option value="{$vo.id}" <if condition="isset($_GET['company_belong']) && $vo.company_belong eq I('company_belong')">selected</if> >下游{$vo.name}</option>
</volist>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="settlement_type" name="settlement_type" class="select_gallery" >
<option value="">结算周期</option>
<volist name="SettlementType" id="vo">
<option value="{$key}" <if condition="isset($_GET['settlement_type']) && $vo eq I('settlement_type')">selected</if> >{$vo}</option>
</volist>
</select>
</div>
<div class="input-list">
<input type="text" readonly id="time_start" name="time_start" class="" value="{:I('time_start')}" placeholder="生效时间开始" />
&nbsp;-&nbsp;
<div class="input-append date" style="display:inline-block">
<input type="text" readonly 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">
<a class="sch-btn" href="javascript:;" id="search" url="{:U('index','&row='.I('row'),false)}">搜索</a>
@ -157,10 +196,8 @@
</div>
<div class="page">
<if condition="$role_export_check eq true ">
<a class="sch-btn export-btn"
href="{:U(CONTROLLER_NAME.'/'.ACTION_NAME,array_merge(['export'=>1],I('get.')))}" target="_blank">导出</a>
</if>
{$_page|default=''}
</div>
<!--弹出层-->
@ -186,6 +223,7 @@
</volist>
$(".select_gallery").select2();
</script>
<script src="__STATIC__/laydate/laydate.js" type="text/javascript"></script>
<script type="text/javascript">
//导航高亮
highlight_subnav("{:U('index')}");
@ -233,6 +271,12 @@ $(function(){
});
});
})
laydate.render({
elem: '#time_start'
});
laydate.render({
elem: '#time_end'
});
})

@ -78,6 +78,14 @@
</volist>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="game_type" name="game_type" class="select_gallery" >
<option value="">游戏类型</option>
<volist name=":get_game_type_all()" id="vo">
<option value="{$vo.id}" <if condition="isset($_GET['game_type']) && $vo.id eq I('game_type')">selected</if> >{$vo.type_name}</option>
</volist>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="relation_game_id" name="relation_game_id" class="select_gallery" >
<option value="">现包名</option>
@ -86,6 +94,23 @@
</volist>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="company_belong" name="company_belong" class="select_gallery" >
<option value="">内外团</option>
<volist name=":getCompanyBlong()" id="vo">
<option value="{$vo.id}" <if condition="isset($_GET['company_belong']) && $vo.company_belong eq I('company_belong')">selected</if> >下游{$vo.name}</option>
</volist>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="settlement_type" name="settlement_type" class="select_gallery" >
<option value="">结算周期</option>
<volist name="SettlementType" id="vo">
<option value="{$key}" <if condition="isset($_GET['settlement_type']) && $vo eq I('settlement_type')">selected</if> >{$vo}</option>
</volist>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="status" name="status" class="select_gallery" >
@ -214,10 +239,8 @@
</div>
<div class="page">
<if condition="$role_export_check eq true ">
<a class="sch-btn export-btn"
href="{:U(CONTROLLER_NAME.'/'.ACTION_NAME,array_merge(['export'=>1],I('get.')))}" target="_blank">导出</a>
</if>
{$_page|default=''}
</div>
<!--弹出层-->
@ -332,22 +355,25 @@ $(function(){
return;
}
if(flag){
layer.confirm(opname+"仅会对"+opst+"的申请进行处理,选择中包含其他的状态的申请将被忽略,点击取消停止操作",{title:false}, function(index){
layer.confirm(opname+"仅会对"+opst+"的申请进行处理,选择中包含其他的状态的申请将被忽略,点击取消停止操作",{title:false}, function(index){
layer.close(index);
_doAgreeApply();
layer.close(index);
});
}else{
_doAgreeApply();
}
function _doAgreeApply(){
layer.load(2);
//执行
$.ajax({
type: "POST",
url: opurl,
dataType: 'json',
async: false,
async: true,
data: {ids:text},
success:function(data){
layer.closeAll('loading');
if(data.status==1){
layer.msg("<font style='color:white'>" + data.info + "</font>");
setTimeout(function(){

@ -155,10 +155,8 @@
</div>
<div class="page">
<if condition="$role_export_check eq true ">
<a class="sch-btn export-btn"
href="{:U(CONTROLLER_NAME.'/'.ACTION_NAME,array_merge(['export'=>1],I('get.')))}" target="_blank">导出</a>
</if>
{$_page|default=''}
</div>

@ -228,10 +228,8 @@
</div>
<div class="page">
<if condition="$role_export_check eq true ">
<a class="sch-btn export-btn"
href="{:U(CONTROLLER_NAME.'/'.ACTION_NAME,array_merge(['export'=>1],I('get.')))}" target="_blank">导出</a>
</if>
{$_page|default=''}
</div>
@ -370,14 +368,16 @@ $(function(){
_doAgreeApply();
}
function _doAgreeApply(){
layer.load(2);
//执行
$.ajax({
type: "POST",
url: opurl,
dataType: 'json',
async: false,
async: true,
data: {ids:text},
success:function(data){
layer.closeAll('loading');
if(data.status==1){
layer.msg("<font style='color:white'>" + data.info + "</font>");
setTimeout(function(){

@ -467,7 +467,7 @@
}
//数据类
var DATAOBJ = {$data|json_encode=###,JSON_UNESCAPED_UNICODE};
var DATAOBJ = {$data|json_encode=###,JSON_UNESCAPED_UNICODE};
var YDATAOBJ = {$data|json_encode=###,JSON_UNESCAPED_UNICODE};
//事件类
var EVENT = {
@ -548,8 +548,15 @@
var td = DATAOBJ.statement_info[index];
var rname = $(this).attr("name");
var ratio = 0;
if( rname == "increment_ratio" || rname == "ratio"){
var ratio = val;
ratio = val;
}else{
if(DATAOBJ.withdraw_type==2){
ratio = td['increment_ratio'];
}else{
ratio = td['ratio'];
}
}
DATAOBJ.statement_money = PUBLIC.floatCut(DATAOBJ.statement_money,td['sum_money']);
td['sum_money'] = Math.round(td['pay_amount']*ratio*(100-td['fax_ratio'])/100,2)/100;

@ -372,8 +372,11 @@
var td = DATAOBJ.statement_info[index];
var rname = $(this).attr("name");
var ratio = 0;
if( rname == "increment_ratio" || rname == "ratio"){
var ratio = val;
ratio = val;
}else{
ratio = td['ratio'];
}
DATAOBJ.statement_money = PUBLIC.floatCut(DATAOBJ.statement_money,td['sum_money']);
td['sum_money'] = Math.round(td['pay_amount']*ratio)/100 - td['fine'] + (td['reward']-0);

@ -482,15 +482,17 @@
if(flag){
layer.confirm(opname+"仅会对"+opst+"的申请进行处理,选择中包含其他的状态的申请将被忽略,点击取消停止操作",{title:false}, function(index){
_doAgreeApply();
layer.close(index);
_doAgreeApply();
});
}else{
if(confirm){
layer.confirm('【警告】'+opname+'将不可回退,如需继续请点击确认', {
btn: ['确认','取消'],
title:false
}, function(){
}, function(index){
layer.close(index);
_doAgreeApply();
});
}else{
@ -500,13 +502,15 @@
}
function _doAgreeApply(){
//执行
layer.load(2);
$.ajax({
type: "POST",
url: opurl,
dataType: 'json',
async: false,
async: true,
data: {ids:text},
success:function(data){
layer.closeAll('loading');
if(data.status==1){
layer.msg("<font style='color:white'>" + data.info + "</font>");
setTimeout(function(){
@ -555,7 +559,7 @@
type: "POST",
url: "{:U('saveRemark')}",
dataType: 'json',
async: false,
async: true,
data: {id:id,remark:value},
success:function(data){
if(data.status==1){
@ -589,7 +593,7 @@
type: "POST",
url: "{:U('saveRemark')}",
dataType: 'json',
async: false,
async: true,
data: {id:id,remark:value},
success:function(data){
if(data.status==1){

@ -401,7 +401,11 @@
$(".cancelPool,.reCount").on("click",function(){
var id = $(this).data('id');
var url = "{:U('cancelPool')}";
cancelPoolAjax(url,{id:id});
layer.confirm("撤销汇总/重算都是不可逆操作,请慎重选择",{title:false}, function(index){
layer.close(index);
cancelPoolAjax(url,{id:id});
});
})
//线下打款
$(".setUlPayment").on("click",function(){
@ -437,13 +441,15 @@
function cancelPoolAjax(opurl,senddata){
//执行
layer.load(2);
$.ajax({
type: "POST",
url: opurl,
dataType: 'json',
async: false,
async: true,
data: senddata,
success:function(data){
layer.closeAll('loading');
if(data.status==1){
layer.msg("<font style='color:white'>" + data.info + "</font>");
setTimeout(function(){

@ -123,6 +123,7 @@
<th>充值方式</th>
<th >现金充值</th>
<th >平台币充值</th>
<th >充值方式占比</th>
<th >合计</th>
</tr>
</thead>
@ -144,6 +145,7 @@
<td ><if condition="$data.pay_type neq ''"><if condition="$data.pay_type eq '微信(扫码)'"> 微信<else/>{$data.pay_type}</if><else/></if></td>
<td ><if condition="$data.pay_amount neq ''">{$data.pay_amount}<else/></if></td>
<td ><if condition="$data.balance neq ''">{$data.balance}<else/>0</if></td>
<td ><?php echo round($data['total']/$all_total, 4)*100 ?? 0;?>%</td>
<td ><if condition="$data.total neq ''">{$data.total}<else/>0</if></td>
</tr>
</volist>
@ -151,6 +153,7 @@
<td><span>总计</span></td>
<td ><span><if condition="$all_pay_amount neq ''">{$all_pay_amount}<else/>0</if></span></td>
<td><if condition="$all_balance neq ''">{$all_balance}<else/>0</if></td>
<td></td>
<td><if condition="$all_total neq ''">{$all_total}<else/>0</if></td>
</tr>
</notemtpy>

@ -28,6 +28,47 @@
.pointer-hand {
cursor: pointer;
}
.tooltip {
position: relative;
display: inline-block;
color: #056dae;
}
.tooltip .tooltiptext {
visibility: hidden;
width: 250%;
background-color: #fff;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px 0;
position: absolute;
z-index: 1;
bottom: 80%;
left: 0;
margin-left: -70%;
border: #000 solid 1px;
}
.tooltip .tooltiptext::after {
content: "";
position: absolute;
top: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: black transparent transparent transparent;
}
.tooltip:hover .tooltiptext {
color: #000;
visibility: visible;
line-height: 20px;
}
</style>
<div class="cf main-place top_nav_list navtab_list">
@ -96,61 +137,61 @@
<thead>
<tr>
<if condition="$sorting eq 13">
<th class="pointer-hand" onclick="idsort(0)" id="zheng">账号ID<img src="__IMG__/paixu.png" width="13px"></th>
<elseif condition="$sorting eq 12" />
<th class="pointer-hand" onclick="idsort(1)" id="dao">账号ID<span ></span></th>
<elseif condition="$sorting eq 11" />
<th class="pointer-hand" onclick="idsort(2)" id="sheng">账号ID<span></span></th>
<else />
<th class="pointer-hand" onclick="idsort(0)" id="zheng">账号ID<img src="__IMG__/paixu.png" width="13px"></th>
</if>
<th class="pointer-hand" onclick="idsort(0)" id="zheng"><div class="tooltip">账号ID<img src="__IMG__/paixu.png" width="13px"><span class="tooltiptext"><span style="margin-left: -10px">检测时间最后一秒玩家留存的平台币</span></span></div></th>
<elseif condition="$sorting eq 12" />
<th class="pointer-hand" onclick="idsort(1)" id="dao"><div class="tooltip">账号ID<span ></span><span class="tooltiptext"><span style="margin-left: -10px">检测时间最后一秒玩家留存的平台币</span></span></div></th>
<elseif condition="$sorting eq 11" />
<th class="pointer-hand" onclick="idsort(2)" id="sheng"><div class="tooltip">账号ID<span></span><span class="tooltiptext"><span style="margin-left: -10px">检测时间最后一秒玩家留存的平台币</span></span></div></th>
<else />
<th class="pointer-hand" onclick="idsort(0)" id="zheng"><div class="tooltip">账号ID<img src="__IMG__/paixu.png" width="13px"><span class="tooltiptext"><span style="margin-left: -10px">检测时间最后一秒玩家留存的平台币</span></span></div></th>
</if>
<th>玩家账号</th>
<if condition="$sorting eq 13">
<th class="pointer-hand" onclick="idsort(19)" id="zheng1">平台币余额<img src="__IMG__/paixu.png" width="13px"></th>
<elseif condition="$sorting eq 19" />
<th class="pointer-hand" onclick="idsort(20)" id="dao1">平台币余额<span ></span></th>
<elseif condition="$sorting eq 20" />
<th class="pointer-hand" onclick="idsort(21)" id="sheng1">平台币余额<span ></span></th>
<else />
<th class="pointer-hand" onclick="idsort(19)" id="zheng1">平台币余额<img src="__IMG__/paixu.png" width="13px"></th>
<th class="pointer-hand" onclick="idsort(19)" id="zheng1"><div class="tooltip">平台币余额<img src="__IMG__/paixu.png" width="13px"><span class="tooltiptext"><span style="margin-left: -10px">检测时间最后一秒玩家留存的平台币</span></span></div></th>
<elseif condition="$sorting eq 19" />
<th class="pointer-hand" onclick="idsort(20)" id="dao1"><div class="tooltip">平台币余额<span ></span><span class="tooltiptext"><span style="margin-left: -10px">检测时间最后一秒玩家留存的平台币</span></span></div></th>
<elseif condition="$sorting eq 20" />
<th class="pointer-hand" onclick="idsort(21)" id="sheng1"><div class="tooltip">平台币余额<span ></span><span class="tooltiptext"><span style="margin-left: -10px">检测时间最后一秒玩家留存的平台币</span></span></div></th>
<else />
<th class="pointer-hand" onclick="idsort(19)" id="zheng1"><div class="tooltip">平台币余额<img src="__IMG__/paixu.png" width="13px"><span class="tooltiptext"><span style="margin-left: -10px">检测时间最后一秒玩家留存的平台币</span></span></div></th>
</if>
<if condition="$sorting eq 13">
<th class="pointer-hand" onclick="idsort(16)" id="zheng1">平台币直充余额<img src="__IMG__/paixu.png" width="13px"></th>
<elseif condition="$sorting eq 16" />
<th class="pointer-hand" onclick="idsort(17)" id="dao1">平台币直充余额<span ></span></th>
<elseif condition="$sorting eq 17" />
<th class="pointer-hand" onclick="idsort(18)" id="sheng1">平台币直充余额<span ></span></th>
<else />
<th class="pointer-hand" onclick="idsort(16)" id="zheng1">平台币直充余额<img src="__IMG__/paixu.png" width="13px"></th>
<th class="pointer-hand" onclick="idsort(16)" id="zheng1"><div class="tooltip">平台币直充余额<img src="__IMG__/paixu.png" width="13px"><span class="tooltiptext"><span style="margin-left: -10px">检测时间最后一秒玩家累计消耗的平台币(只记录直充部分)</span></span></div></th>
<elseif condition="$sorting eq 16" />
<th class="pointer-hand" onclick="idsort(17)" id="dao1"><div class="tooltip">平台币直充余额<span ></span><span class="tooltiptext"><span style="margin-left: -10px">检测时间最后一秒玩家累计消耗的平台币(只记录直充部分)</span></span></div></th>
<elseif condition="$sorting eq 17" />
<th class="pointer-hand" onclick="idsort(18)" id="sheng1"><div class="tooltip">平台币直充余额<span ></span><span class="tooltiptext"><span style="margin-left: -10px">检测时间最后一秒玩家累计消耗的平台币(只记录直充部分)</span></span></div></th>
<else />
<th class="pointer-hand" onclick="idsort(16)" id="zheng1"><div class="tooltip">平台币直充余额<img src="__IMG__/paixu.png" width="13px"><span class="tooltiptext"><span style="margin-left: -10px">检测时间最后一秒玩家累计消耗的平台币(只记录直充部分)</span></span></div></th>
</if>
<if condition="$sorting eq 13">
<th class="pointer-hand" onclick="idsort(3)" id="zheng1">平台币直充支出<img src="__IMG__/paixu.png" width="13px"></th>
<elseif condition="$sorting eq 3" />
<th class="pointer-hand" onclick="idsort(4)" id="dao1">平台币直充支出<span ></span></th>
<elseif condition="$sorting eq 4" />
<th class="pointer-hand" onclick="idsort(5)" id="sheng1">平台币直充支出<span ></span></th>
<else />
<th class="pointer-hand" onclick="idsort(3)" id="zheng1">平台币直充支出<img src="__IMG__/paixu.png" width="13px"></th>
<th class="pointer-hand" onclick="idsort(3)" id="zheng1"><div class="tooltip">平台币直充支出<img src="__IMG__/paixu.png" width="13px"><span class="tooltiptext"><span style="margin-left: -10px">检测时间内玩家累计消耗的平台币(只记录直充部分)</span></span></div></th>
<elseif condition="$sorting eq 3" />
<th class="pointer-hand" onclick="idsort(4)" id="dao1"><div class="tooltip">平台币直充支出<span ></span><span class="tooltiptext"><span style="margin-left: -10px">检测时间内玩家累计消耗的平台币(只记录直充部分)</span></span></div></th>
<elseif condition="$sorting eq 4" />
<th class="pointer-hand" onclick="idsort(5)" id="sheng1"><div class="tooltip">平台币直充支出<span ></span><span class="tooltiptext"><span style="margin-left: -10px">检测时间内玩家累计消耗的平台币(只记录直充部分)</span></span></div></th>
<else />
<th class="pointer-hand" onclick="idsort(3)" id="zheng1"><div class="tooltip">平台币直充支出<img src="__IMG__/paixu.png" width="13px"><span class="tooltiptext"><span style="margin-left: -10px">检测时间内玩家累计消耗的平台币(只记录直充部分)</span></span></div></th>
</if>
<if condition="$sorting eq 13">
<th class="pointer-hand" onclick="idsort(6)" id="zheng1">平台币直充金额<img src="__IMG__/paixu.png" width="13px"></th>
<elseif condition="$sorting eq 6" />
<th class="pointer-hand" onclick="idsort(7)" id="dao1">平台币直充金额<span ></span></th>
<elseif condition="$sorting eq 7" />
<th class="pointer-hand" onclick="idsort(8)" id="sheng1">平台币直充金额<span ></span></th>
<else />
<th class="pointer-hand" onclick="idsort(6)" id="zheng1">平台币直充金额<img src="__IMG__/paixu.png" width="13px"></th>
<th class="pointer-hand" onclick="idsort(6)" id="zheng1"><div class="tooltip">平台币直充金额<img src="__IMG__/paixu.png" width="13px"><span class="tooltiptext"><span style="margin-left: -10px">检测时间内玩家累计消耗的平台币(只记录直充部分)</span></span></div></th>
<elseif condition="$sorting eq 6" />
<th class="pointer-hand" onclick="idsort(7)" id="dao1"><div class="tooltip">平台币直充金额<span ></span><span class="tooltiptext"><span style="margin-left: -10px">检测时间内玩家累计消耗的平台币(只记录直充部分)</span></span></div></th>
<elseif condition="$sorting eq 7" />
<th class="pointer-hand" onclick="idsort(8)" id="sheng1"><div class="tooltip">平台币直充金额<span ></span><span class="tooltiptext"><span style="margin-left: -10px">检测时间内玩家累计消耗的平台币(只记录直充部分)</span></span></div></th>
<else />
<th class="pointer-hand" onclick="idsort(6)" id="zheng1"><div class="tooltip">平台币直充金额<img src="__IMG__/paixu.png" width="13px"><span class="tooltiptext"><span style="margin-left: -10px">检测时间内玩家累计消耗的平台币(只记录直充部分)</span></span></div></th>
</if>
<if condition="$sorting eq 13">
<th class="pointer-hand" onclick="idsort(9)" id="zheng1">后台发放平台币<img src="__IMG__/paixu.png" width="13px"></th>
<elseif condition="$sorting eq 9" />
<th class="pointer-hand" onclick="idsort(10)" id="dao1">后台发放平台币<span ></span></th>
<elseif condition="$sorting eq 10" />
<th class="pointer-hand" onclick="idsort(15)" id="sheng1">后台发放平台币<span ></span></th>
<else />
<th class="pointer-hand" onclick="idsort(9)" id="zheng1">后台发放平台币<img src="__IMG__/paixu.png" width="13px"></th>
<th class="pointer-hand" onclick="idsort(9)" id="zheng1"><div class="tooltip">后台发放平台币<img src="__IMG__/paixu.png" width="13px"><span class="tooltiptext"><span style="margin-left: -10px">检测时间内玩家累计后台发放的平台币(只记录直充部分)</span></span></div></th>
<elseif condition="$sorting eq 9" />
<th class="pointer-hand" onclick="idsort(10)" id="dao1"><div class="tooltip">后台发放平台币<span ></span><span class="tooltiptext"><span style="margin-left: -10px">检测时间内玩家累计后台发放的平台币(只记录直充部分)</span></span></div></th>
<elseif condition="$sorting eq 10" />
<th class="pointer-hand" onclick="idsort(15)" id="sheng1"><div class="tooltip">后台发放平台币<span ></span><span class="tooltiptext"><span style="margin-left: -10px">检测时间内玩家累计后台发放的平台币(只记录直充部分)</span></span></div></th>
<else />
<th class="pointer-hand" onclick="idsort(9)" id="zheng1"><div class="tooltip">后台发放平台币<img src="__IMG__/paixu.png" width="13px"><span class="tooltiptext"><span style="margin-left: -10px">检测时间内玩家累计后台发放的平台币(只记录直充部分)</span></span></div></th>
</if>
<th>操作</th>
</tr>

@ -105,6 +105,20 @@
</div>
</td>
</tr>
<tr>
<td class="l">是否展示合同服务协议:</td>
<td class="r" >
<div class="input-list input-list-server search_label_rehab" style="margin:0;">
<select id="service_agreement_show" name="service_agreement_show" class="select_gallery" style="width: 215px;">
<!-- <option value="">请选择是否签署合同</option> -->
<option value="0" selected>不显示</option>
<?php foreach($serviceAgreements as $index => $service):?>
<option value="{$service.id}" <?php if($service['status'] == 2):?>selected<?php endif;?>>{$service.name}</option>
<?php endforeach;?>
</select>
</div>
</td>
</tr>
<tr>
<td class="l">团体归属:</td>
<td class="r" >
@ -215,7 +229,20 @@
</div>
</td>
</tr>
<tr>
<td class="l noticeinfo">市场总监信息展示:</td>
<td class="r table_radio">
<span class="form_radio table_btn">
<label>
<input type="radio" class="inp_radio" value="1" name="marketing_director_show" >展示
</label>
<label>
<input type="radio" class="inp_radio" value="2" name="marketing_director_show" checked> 隐藏
</label>
</span>
<span class="notice-text"></span>
</td>
</tr>
</tbody>
</table>
<table border="1" style="width: 600px;text-align: center;" cellspacing="0" cellpadding="0" id="docShow">
@ -328,6 +355,9 @@
"ali_account":["nocheck","支付宝登陆账号不能为空"],
"content":["nocheck"],
"status":["nocheck","","radio"],
"service_agreement_show":["nocheck","","select"],
"marketing_director_show":["nocheck","","radio"],
"status":["nocheck","","radio"],
"develop_type":["nocheck","开发类型不能为空","select"]
}
var cres = CIC.checkAddInput(obj);

@ -109,6 +109,20 @@
</div>
</td>
</tr>
<tr>
<td class="l">是否展示合同服务协议:</td>
<td class="r" >
<div class="input-list input-list-server search_label_rehab" style="margin:0;">
<select id="service_agreement_show" name="service_agreement_show" class="select_gallery" style="width: 215px;">
<!-- <option value="">请选择是否签署合同</option> -->
<option value="0" selected>不显示</option>
<?php foreach($serviceAgreements as $index => $service):?>
<option value="{$service.id}" <?php if($service['id'] == $data['service_agreement_show']):?>selected<?php endif;?>>{$service.name}</option>
<?php endforeach;?>
</select>
</div>
</td>
</tr>
<tr>
<td class="l">团体归属:</td>
<td class="r" >
@ -224,7 +238,22 @@
</span>
</td>
</tr>
<tr>
<td class="l noticeinfo">市场总监信息展示:</td>
<td class="r table_radio">
<span class="form_radio table_btn">
<label>
<input type="radio" class="inp_radio" value="1" name="marketing_director_show" <if condition="$data['marketing_director_show'] eq 1">checked
</if>> 展示
</label>
<label>
<input type="radio" class="inp_radio" value="2" name="marketing_director_show" <if condition="$data['marketing_director_show'] eq 2">checked
</if>> 隐藏
</label>
</span>
<span class="notice-text"></span>
</td>
</tr>
</tbody>
</table>
<table border="1" style="width: 600px;text-align: center;margin:10px 0 0 60px;" cellspacing="0" cellpadding="0" id="docShow">
@ -398,6 +427,9 @@
"content":[["nocheck",true]],
"status":["nocheck","","radio"],
"develop_type":["nocheck","开发类型不能为空","select"]
"status":["nocheck","","radio"],
"service_agreement_show":["nocheck","","select"],
"marketing_director_show":["nocheck","","radio"],
}
var cres = CIC.checkAddInput(obj);
if(!cres){

@ -34,14 +34,18 @@
padding: 3px;
height: 30px;
}
.clearfix:after {
content:"";
display: block;
clear:both;
}
</style>
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">{$meta_title}</h3>
<p class="description_text">说明:该功能是用于录入工会所属的推广公司名称 / 如需删除公司请先将公司底下会长移走后方可操作</p>
</div>
<div class="cf top_nav_list">
<div class="cf top_nav_list clearfix" style="display: inline;">
<div class="fl button_list">
<div class="tools">
<a class="" href="{:U('add')}"><span class="button_icon button_icon1"></span>新增</a>
@ -91,6 +95,15 @@
</div>
</div>
<div class="cf top_nav_list clearfix">
<div class="fl button_list">
<div class="tools">
<a class="ajax-post" target-form="ids" url="{:U('PromoteCompany/marketingDirectorShow', ['isShow'=>1])}"><span class="button_icon "></span>展示市场总监信息</a>
<a class="ajax-post" target-form="ids" url="{:U('PromoteCompany/marketingDirectorShow', ['isShow'=>2])}"><span class="button_icon "></span>隐藏市场总监信息</a>
</div>
</div>
</div>
<!-- 数据列表 -->
<div class="data_list data_game_list">
<div class="">
@ -98,6 +111,9 @@
<!-- 表头 -->
<thead>
<tr>
<th class="">
<input class="check-all" type="checkbox">
</th>
<th style="width:10%;min-width:150px;">操作</th>
<th>合作方名称</th>
<th>对应平台</th>
@ -125,6 +141,7 @@
<else />
<volist name="listData" id="data" key="companykey">
<tr>
<td rowspan="{$data.row}"><input class="ids" type="checkbox" value="{$data['id']}" name="ids[]"></td>
<td rowspan="{$data.row}">
<a href="{:U('view',array('id'=>$data['id']))}">查看</a>
<a href="{:U('edit',array('id'=>$data['id']))}">编辑</a>

@ -0,0 +1,213 @@
<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>
</div>
<div class="cf top_nav_list">
<div class="fl button_list">
<a class="confirm ajax-post" id="dtnn" target-form="ids" url="{:U('PromoteCompany/serviceAgreementSave', ['delete'=>1])}"><span class="button_icon button_icon2 "></span>批量删除</a>
</div>
<!-- 高级搜索 -->
<div class="jssearch fl cf search_list">
<div class="input-list">
<a class="sch-btn" href="{:U('PromoteCompany/serviceAgreementSave')}">
新增
</a>
</div>
</div>
</div>
<!-- 数据列表 -->
<div class="data_list">
<div class="">
<table>
<!-- 表头 -->
<thead>
<tr>
<th class="">
<input class="check-all" type="checkbox">
</th>
<th>ID</th>
<th>标题</th>
<th>是否默认合同</th>
<th>应用公司</th>
<th>操作人</th>
<th>操作时间</th>
<th>操作</th>
</tr>
</thead>
<!-- 列表 -->
<tbody>
<empty name="list_data">
<td colspan="8" 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.id}</td>
<td>{$data.name}</td>
<td><?php echo $data['status'] == 1 ? '否' : '是';?></td>
<td style="width: 500px;">
<div style="height: 100px;overflow-x: hidden;overflow-y: scroll;">
{$data.company_name}
</div>
</td>
<td>{:get_admin_nickname($data['creator'])}</td>
<td>{$data.created_time|date='Y-m-d H:i:s',###}</td>
<td>
<?php if ($data['status'] == 1):?>
<a class="ajax-get" href="{:U('PromoteCompany/serviceAgreementSetDefault',array('id'=>$data['id']))}">设置默认 </a>
<?php endif;?>
<a href="{:U('PromoteCompany/serviceAgreementSave',array('id'=>$data['id']))}">编辑 </a>
<a class="ajax-get" href="{:U('PromoteCompany/serviceAgreementSave',array('id'=>$data['id'], 'delete'=>1))}">删除 </a>
</td>
</tr>
</volist>
</empty>
</tbody>
</table>
</div>
</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="Member/login_record">
</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 type="text/javascript">
</script>
<script type="text/javascript">
//导航高亮
highlight_subnav('{:U('PromoteCompany/serviceAgreementList')}');
$(function () {
<volist name = ":I('get.')" id = "vo" > Think.setValue('{$key}', "{$vo}");
</volist >
$(".select_gallery").select2();
//搜索功能
$("#search").click(function () {
var url = $(this).attr('url');
var query = $('.jssearch').find('input').serialize();
query += "&" + $('.jssearch').find('select').serialize();
query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g, '');
query = query.replace(/^&/g, '');
if (url.indexOf('?') > 0) {
url += '&' + query;
} else {
url += '?' + query;
}
var start = $("#time-start").val();
var end = $("#time-end").val();
if (start !='' && end != ''){
if (Date.parse(start) > Date.parse(end)){
layer.msg('开始时间必须小于等于结束时间');
return false;
}
}
window.location.href = url;
});
//回车自动提交
$('.jssearch').find('input').keyup(function (event) {
if (event.keyCode === 13) {
$("#search").click();
}
});
$('#time-start').datetimepicker({
format: 'yyyy-mm-dd',
language: "zh-CN",
minView: 2,
autoclose: true
});
$('#datetimepicker').datetimepicker({
format: 'yyyy-mm-dd',
language: "zh-CN",
minView: 2,
autoclose: true,
pickerPosition: 'bottom-left'
})
$(".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();
});
var a = $('.i_list_li li a');
$('#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);
})
});
})
</script>
</block>

@ -0,0 +1,52 @@
<extend name="Public/base" />
<!-- 管理员用户组新增和编辑页面 -->
<block name="body">
<form action="{:U('PromoteCompany/serviceAgreementSave')}" enctype="application/x-www-form-urlencoded" method="POST"
class="form-horizontal form_info_ml">
<div class="formtitle"><span>服务协议新增</span></div>
<ul class="form_info ">
<input type="hidden" name="id" value="{$info.id}" />
<li>
<label>标题</label>
<input type="text" name="name" maxlength="20" value="{$info['name']}">
</li>
<li>
<label>关键词</label>
<span>{sn}:合同编号&nbsp;&nbsp;&nbsp;&nbsp;{time}:合同开始时间&nbsp;&nbsp;&nbsp;&nbsp;{endTime}:合同结束时间 </span>
<div>
&nbsp;&nbsp;&nbsp;&nbsp;{account}:签约者账号
&nbsp;&nbsp;&nbsp;&nbsp;{email}:签约者邮箱
&nbsp;&nbsp;&nbsp;&nbsp;{realname}:签约者姓名
&nbsp;&nbsp;&nbsp;&nbsp;{phone}:签约者电话
&nbsp;&nbsp;&nbsp;&nbsp;{address}:签约者地址
</div>
</li>
<li>
<label>内容</label>
<span class="form_textarea">
<textarea name="content">{$info.content}</textarea>
{:hook('adminArticleEdit', array('name'=>'content','value'=>$info['content']))}
</span>
</textarea>
</li>
<li>
<label>&nbsp;</label><input type="submit" id="submit" value="确认保存" target-form="form-horizontal" class="form_btn ajax-post">
</li>
</ul>
</form>
<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="AuthManager/index">
</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('PromoteCompany/serviceAgreementList')}');
</script>
</block>

@ -0,0 +1,241 @@
<extend name="Public/base" />
<block name="body">
<link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="__CSS__/admin_table.css" media="all">
<link href="__STATIC__/icons_alibaba/iconfont.css" rel="stylesheet">
<script type="text/javascript" src="__STATIC__/uploadify/jquery.uploadify.min.js"></script>
<script type="text/javascript" src="__STATIC__/provincecityarea/AreaData_min.js"></script>
<script src="__STATIC__/layer/layer.js"></script>
<script type="text/javascript" src="__JS__/select2.min.js"></script>
<style>
.tabcon1711 input.time {
width: 150px;
}
#form .txt_area {
width: 300px;
height: 150px;
}
.tabcon1711 .form_unit {
margin-left: 2px;
}
.tabcon1711 .mustmark {
margin-left:-7px;
}
.list-ratio {
display: table;
}
.list-ratio .li-ratio {
display: flex;
margin-bottom: 20px;
align-items: center;
}
.list-ratio .li-ratio .turnover, .list-ratio .li-ratio .turnover-ratio {
position: relative;
}
.list-ratio .li-ratio .turnover span, .list-ratio .li-ratio .turnover-ratio .error-message {
color: red;
position: absolute;
left: 0;
top: 30px;
white-space: nowrap;
display: none;
}
.iconfont-btn {
cursor: pointer;
}
.iconfont-style {
font-size: 18px;
color: #fff;
border-radius: 4px;
border: 0;
padding: 5px;
margin-left: 10px;
}
.iconfont-selected {
background-color: #0A9AF2;
}
.iconfont-selected:hover {
background-color: #03a9f4;
}
.iconfont-unselected {
background-color: #999;
}
.iconfont-unselected:hover {
background-color: #ababab;
}
</style>
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">{$meta_title}</h3>
<!-- <p class="description_text">说明:此功是创建推广员时所需填写信息</p>-->
</div>
<!-- 标签页导航 -->
<div class="tab-wrap">
<div class="tab-content tabcon1711">
<!-- 表单 -->
<form id="form" action="{:U('save')}" method="post" class="form-horizontal">
<!-- 基础文档模型 -->
<div id="tab1" class="tab-pane in tab1">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="l"><i class="mustmark">*</i>推广公司:</td>
<td class="r">
<?php if($record):?>
<span class="form_radio table_btn" style="color: red;">{$company.company_name}</span>
<?php else:?>
<select name="company_id" id="company-select" class="select_gallery">
<option value="">请选择推广公司</option>
<?php foreach($companys as $company):?>
<option value="<?=$company['id']?>" <?php if($company['id'] == $promote['company_id']):?>selected<?php endif;?>><?=$company['company_name']?></option>
<?php endforeach;?>
</select>
<?php endif;?>
</td>
</tr>
<tr>
<td class="l"><i class="mustmark">*</i>会长:</td>
<td class="r">
<?php if($record):?>
<span class="form_radio table_btn" style="color: red;">{$promote.account}</span>
<?php else:?>
<select name="promote_id" id="promote-select" class="select_gallery">
<option value="">请选择会长</option>
</select>
<?php endif;?>
</td>
</tr>
<tr>
<td class="l">开始时间:</td>
<td class="r">
<input type="text" name="started_at" class="time" value="<?=$record['started_at']?>" placeholder="请选择开始时间" style="width: 200px"/>
</td>
</tr>
<tr>
<td class="l">结束时间:</td>
<td class="r">
<input type="text" name="ended_at" class="time" value="<?=$record['ended_at']?>" placeholder="请选择结束时间" style="width: 200px" />
</td>
</tr>
</tbody>
</table>
</div>
<input type="hidden" name="id" id="id" value="{$record.id}" />
<div class="form-item cf">
<button class="submit_btn mlspacing" id="submit" type="submit" target-form="form-horizontal">
确认
</button>
<a class="submit_btn " alt="返回上一页" title="返回上一页" href="javascript:window.history.back();" >
返回
</a>
</div>
</form>
</div>
</div>
<div class="common_settings">
<span class="plus_icon"><span><img src="__IMG__/zwmimages/icon_jia.png"></span></span>
<form class="addShortcutIcon">
<input type="hidden" name="title" value="{$m_title}">
<input type="hidden" name="url" value="Promote/lists/type/1">
</form>
<a class="ajax-post add-butn <notempty name='commonset'>addSIsetted</notempty>" href="javascript:;" target-form="addShortcutIcon" url="{:U('Think/addShortcutIcon')}"><img src="__IMG__/zwmimages/icon_jia.png"><span><notempty name='commonset'>已添加<else />添加至常用设置</notempty></span></a>
</div>
</block>
<block name="script">
<link href="__STATIC__/datetimepicker/css/datetimepicker.css" rel="stylesheet" type="text/css">
<php>if(C('COLOR_STYLE')=='blue_color') echo '<link href="__STATIC__/datetimepicker/css/datetimepicker_blue.css" rel="stylesheet" type="text/css">';</php>
<link href="__STATIC__/datetimepicker/css/dropdown.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="__STATIC__/datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script type="text/javascript" src="__STATIC__/datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js" charset="UTF-8"></script>
<script type="text/javascript">
//导航高亮
highlight_subnav("{:U('PromoteLimitRule/records')}");
$(".select_gallery").select2();
$(function(){
$('.time').datetimepicker({
format: 'yyyy-mm-dd',
language: "zh-CN",
autoclose: true,
scrollMonth: false,
scrollTime: false,
scrollInput: false,
startView: 'month',
minView:'month',
maxView:'month',
});
showTab();
$('#company-select').on({
change: function() {
var companyId = $(this).val()
getPromotesByCompany(companyId, function(promotes) {
var html = '<option value="">请选择会长</option>'
for (var key in promotes) {
html += '<option value="' + promotes[key].id + '">' + promotes[key].account + '</option>'
}
$('#promote-select').html(html)
$('#promote-select').select2()
})
}
})
function getPromotesByCompany(companyId, callback) {
$.ajax({
url: '{:U("getPromotesByCompany")}',
type: 'get',
dataType: 'json',
data: {company_id: companyId},
success: function(result) {
if (result.status == 1) {
callback(result.data.promotes)
} else {
layer.msg(result.message)
}
}
})
}
$('#submit').click(function (e) {
var target = $('form').get(0).action;
var query = $('form').serialize();
var that = this;
$(that).addClass('disabled').attr('autocomplete','off').prop('disabled',true);
$.post(target,query).success(function(data){
if(layer) {layer.closeAll('loading');}
if (data.status==1) {
if (data.url) {
updateAlert(data.info + ' 页面即将自动跳转~');
}else{
updateAlert(data.info);
}
setTimeout(function(){
$(that).removeClass('disabled').prop('disabled',false);
if (data.url) {
location.href=data.url;
} else if( $(that).hasClass('no-refresh')) {
$('#tip').find('.tipclose').click();
} else {
location.reload();
}
}, 1500);
}else{
updateAlert(data.info,'tip_error');
setTimeout(function(){
$(that).removeClass('disabled').prop('disabled',false);
if (data.url) {
location.href=data.url;
}else{
$('#tip').find('.tipclose').click();
}
},3000);
}
});
});
});
</script>
</block>

@ -0,0 +1,238 @@
<extend name="Public/base"/>
<block name="css">
<link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" />
<link rel="stylesheet" href="__CSS__/promote.css" type="text/css"/>
<link rel="stylesheet" type="text/css" href="__STATIC__/webuploader/webuploader.css" media="all">
<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;}
.textarea-style {
width: 200px;
height: 80px;
border-radius: 5px;
padding: 5px;
}
.mustmark {
color: #FF0000;
font-style: normal;
margin: 0 3px;
}
</style>
</block>
<block name="body">
<script type="text/javascript" src="__JS__/bootstrap.min.js"></script>
<script type="text/javascript" src="__JS__/select2.min.js"></script>
<script type="text/javascript" src="__JS__/jquery.form.js"></script>
<script type="text/javascript" src="__STATIC__/uploadify/jquery.uploadify.min.js"></script>
<script src="__STATIC__/md5.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" src="__STATIC__/webuploader/webuploader.js"></script>
<script src="__STATIC__/layer/layer.js" type="text/javascript"></script>
<script type="text/javascript" src="__STATIC__/layer/extend/layer.ext.js"></script>
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">推广限制</h3>
</div>
<div class="cf top_nav_list">
<!-- 高级搜索 -->
<div class="jssearch fl cf search_list">
<div class="input-list search-title-box">
<label>搜索:</label>
</div>
<div class="input-list input-list-promote search_label_rehab">
<select id="company_select" name="company_id" class="select_gallery" style="width:200px;">
<option value="">请选择公司</option>
<?php foreach($companys as $company):?>
<option value="<?=$company['id']?>"><?=$company['company_name']?></option>
<?php endforeach;?>
</select>
</div>
<div class="input-list input-list-promote search_label_rehab">
<select id="promote-select" name="promote_id" class="select_gallery" style="width:120px;">
<option value="">请选择会长</option>
<volist name=":get_promote_list_by_id()" id="vo">
<option value="{$vo.id}">{$vo.account}</option>
</volist>
</select>
</div>
<div class="input-list">
<a class="sch-btn" href="javascript:;" id="search" url="{:U('PromoteLimitRule/records')}">搜索</a>
<a class="sch-btn" href="{:U('PromoteLimitRule/edit')}">添加</a>
<a class="sch-btn" href="javascript:;" id="batch-delete-btn">删除</a>
</div>
<!-- <div class="input-list">
<a class="sch-btn" href="{:U('Export/expUser',array_merge(array('id'=>12,),I('get.')))}">导出</a>
</div> -->
</div>
</div>
<!-- 数据列表 -->
<div class="data_list">
<div class="">
<table>
<!-- 表头 -->
<thead>
<tr>
<th>
<input class="check-all" type="checkbox">
</th>
<th>推广公司</th>
<th>会长账号</th>
<th>内外团</th>
<th>限制时间</th>
<th>操作</th>
</tr>
</thead>
<!-- 列表 -->
<tbody>
<empty name ="records">
<td colspan="14" class="text-center">aOh! 暂时还没有内容!</td>
<else />
<volist name="records" id="data">
<tr data-id="<?=$data['id']?>">
<td>
<input class="ids" type="checkbox" value="{$data['id']}" name="ids[]">
</td>
<td>{$data.company_name}</td>
<td>{$data.promote_account}</td>
<td>{$data.company_belong}</td>
<td>{$data.limit_rule}</td>
<td>
<div class="partakebtn">
<a href="<?=U('edit', ['id' => $data['id']])?>">编辑</a>
<a class="delete-btn">删除</a>
</div>
</td>
</tr>
</volist>
</empty>
</tbody>
</table>
</div>
</div>
<div class="page">
<if condition="$role_export_check eq true ">
<!-- <a class="sch-btn export-btn"
href="{:U(CONTROLLER_NAME.'/'.ACTION_NAME,array_merge(['export'=>1],I('get.')))}" target="_blank">导出</a> -->
</if>
{$_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="Query/withdraw">
</form>
<a class="ajax-post add-butn <notempty name='commonset'>addSIsetted</notempty>" href="javascript:;" target-form="addShortcutIcon" url="{:U('Think/addShortcutIcon')}"><img src="__IMG__/zwmimages/icon_jia.png"><span><notempty name='commonset'>已添加<else />添加至常用设置</notempty></span></a>
</div>
</block>
<block name="script">
<script src="__STATIC__/layer/layer.js" type="text/javascript"></script>
<script type="text/javascript" src="__STATIC__/layer/extend/layer.ext.js" ></script>
<script src="__STATIC__/jquery.cookie.js" charset="utf-8"></script>
<script>
<volist name=":I('get.')" id="vo">
Think.setValue('{$key}',"{$vo}");
</volist>
$(".select_gallery").select2();
</script>
<script type="text/javascript">
//导航高亮
highlight_subnav("{:U('PromoteLimitRule/records')}");
$(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();
}
})
$('#batch-delete-btn').on({
click: function() {
var ids = getIds();
$.ajax({
url: '{:U("batchDelete")}',
type: 'post',
dataType: 'json',
data: {ids: ids},
success: function(result) {
if (result.status == 1) {
layer.msg(result.message)
setTimeout(function() {
window.location.href = window.location.href
}, 200)
} else {
layer.msg(result.message)
}
}
})
}
})
function getIds() {
var ids = [];
$('.ids:checked').each(function() {
ids.push($(this).val());
})
return ids;
}
$('.delete-btn').on({
click: function() {
var id = $(this).parents('tr').eq(0).attr('data-id');
$.ajax({
url: '{:U("delete")}',
type: 'post',
dataType: 'json',
data: {id: id},
success: function(result) {
if (result.status == 1) {
layer.msg(result.message)
setTimeout(function() {
window.location.href = window.location.href
}, 200)
} else {
layer.msg(result.message)
}
}
})
}
})
});
/* $(".export-btn").on("click",function(e){
e.preventDefault();
window.location.href=$(this).attr("href")
}) */
</script>
</block>

@ -48,18 +48,18 @@
<span class="">活跃玩家</span>
<span class="">当天登录的玩家总数</span>
</li>
<li class="keywords_list">
<!-- <li class="keywords_list">
<span class="">1日留存</span>
<span class="">注册第二天的登录率</span>
</li>
</li> -->
<li class="keywords_list">
<span class="">付费玩家</span>
<span class="">当天付费的玩家数量</span>
</li>
<li class="keywords_list">
<!-- <li class="keywords_list">
<span class="">新付费玩家</span>
<span class="">当天付费玩家中第一次付费的玩家数</span>
</li>
</li> -->
<li class="keywords_list">
<span class="">付费率</span>
<span class="">付费玩家/活跃玩家</span>
@ -83,12 +83,12 @@
<div class="bindcoinsbox">
参与统计设置:
<label class="radio radio-primary">
<input type="radio" class="coins" value="0" name="hasbindcoins">
<span>排除绑币</span>
</label>
<label class="radio radio-primary">
<input type="radio" class="coins" value="1" name="hasbindcoins">
<input type="radio" class="coins" value="1" name="contain_bind_coins" checked>
<span>包含绑币</span>
</label>
<label class="radio radio-primary">
<input type="radio" class="coins" value="0" name="contain_bind_coins">
<span>排除绑币</span>
</label>
</div>
</div>
@ -103,11 +103,18 @@
<input type="text" id="time-end" name="end" class="" value="{:I('end',date('Y-m-d',time()))}" placeholder="选择结束时间" />
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="game_id" name="game_id" class="select_gallery">
<select id="game_ids" name="game_ids" class="select_gallery">
<option value="">请选择游戏</option>
<volist name=":get_game_list()" id="vo">
<option game-id="{$vo.game_name}" value="{$vo.id}">{$vo.game_name}</option>
</volist>
<?php foreach($baseGames as $baseGame):?>
<option game-id="<?= $baseGame['id'] ?>" value="<?= $baseGame['id'] ?>"><?= $baseGame['name'] ?></option>
<?php endforeach;?>
</select>
</div>
<div class="input-list input-list-game search_label_rehab">
<select id="device_type" name="device_type" class="select_gallery">
<option value="">请选择设备类型</option>
<option value="android" <?php if(I('device_type', '') == 'android'):?>selected<?php endif;?>>安卓</option>
<option value="ios" <?php if(I('device_type', '') == 'ios'):?>selected<?php endif;?>>IOS</option>
</select>
</div>
<div class="input-list input-list-promote search_label_rehab">
@ -132,63 +139,35 @@
<!-- 表头 -->
<thead>
<tr>
<th ><a class="paixu" data-order='time'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'time'">日期▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'time'"/>日期▼<else />日期<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<if condition="$game_name neq ''">
<th>游戏名称</th>
</if>
<if condition="$promote_name neq ''">
<th>渠道名称</th>
</if>
<th ><a class="paixu" data-order='date'><if condition="$order eq 4 and $orderType eq 'date'">日期▲<elseif condition="$order eq 3 and $orderType eq 'date'"/>日期▼<else />日期<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='register_num'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'register_num'">新增玩家▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'register_num'"/>新增玩家▼<else />新增玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='new_user'><if condition="$order eq 4 and $orderType eq 'new_user'">新增玩家▲<elseif condition="$order eq 3 and $orderType eq 'new_user'"/>新增玩家▼<else />新增玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='act_user'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'act_user'">活跃玩家▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'act_user'"/>活跃玩家▼<else />活跃玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='login_user'><if condition="$order eq 4 and $orderType eq 'login_user'">活跃玩家▲<elseif condition="$order eq 3 and $orderType eq 'login_user'"/>活跃玩家▼<else />活跃玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='keep_num'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'keep_num'">1日留存▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'keep_num'"/>1日留存▼<else />1日留存<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='pay_amount'><if condition="$order eq 4 and $orderType eq 'pay_amount'">充值金额▲<elseif condition="$order eq 3 and $orderType eq 'pay_amount'"/>充值金额▼<else />充值金额<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='spend'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'spend'">充值▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'spend'"/>充值▼<else />充值<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='pay_user'><if condition="$order eq 4 and $orderType eq 'pay_user'">付费玩家▲<elseif condition="$order eq 3 and $orderType eq 'pay_user'"/>付费玩家▼<else />付费玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='spend_people'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'spend_people'">付费玩家▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'spend_people'"/>付费玩家▼<else />付费玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='pay_rate'><if condition="$order eq 4 and $orderType eq 'pay_rate'">付费率▲<elseif condition="$order eq 3 and $orderType eq 'pay_rate'"/>付费率▼<else />付费率<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='new_pop'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'new_pop'">新付费玩家▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'new_pop'"/>新付费玩家▼<else />新付费玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='spend_rate'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'spend_rate'">付费率▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'spend_rate'"/>付费率▼<else />付费率<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='ARPU'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'ARPU'">ARPU▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'ARPU'"/>ARPU▼<else />ARPU<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='arpu'><if condition="$order eq 4 and $orderType eq 'arpu'">ARPU▲<elseif condition="$order eq 3 and $orderType eq 'arpu'"/>ARPU▼<else />ARPU<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='ARPPU'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'ARPPU'">ARPPU▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'ARPPU'"/>ARPPU▼<else />ARPPU<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='pop_num'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'pop_num'">累计付费玩家▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'pop_num'"/>累计付费玩家▼<else />累计付费玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<if condition="$game_name eq ''">
<if condition="$game_name eq ''">
<th>详情</th>
</if>
<th ><a class="paixu" data-order='arppu'><if condition="$order eq 4 and $orderType eq 'arppu'">ARPPU▲<elseif condition="$order eq 3 and $orderType eq 'arppu'"/>ARPPU▼<else />ARPPU<img src="__IMG__/up-down.png" width="13px"></if></a></th>
</tr>
</thead>
<!-- 列表 -->
<tbody>
<volist name="data" id="vo">
<volist name="records" id="vo">
<tr>
<td>{$vo.time}</td>
<if condition="$game_name neq ''">
<td>{$game_name}</td>
</if>
<if condition="$promote_name neq ''">
<td>{$promote_name}</td>
</if>
<td>{$vo.register_num}</td>
<td>{$vo.act_user}</td>
<td>{$vo.keep_num}%</td>
<td>{$vo.spend}</td>
<td>{$vo.spend_people}</td>
<td>{$vo.new_pop}</td>
<td>{$vo.spend_rate}%</td>
<td>{$vo.ARPU}</td>
<td>{$vo.ARPPU}</td>
<td>{$vo.pop_num}</td>
<if condition="$game_name eq ''">
<td><a style="cursor:pointer;width:100%;text-align:center" class="chakan" timetitle="{$vo['time']}" ptitle="{$promote_name}" href-url="{:U('stat/cha_userarpu',array('time'=>$vo['time'],'hasbindcoins'=>I('hasbindcoins'),'promote_name'=>$promote_name,'promote_id'=>$_REQUEST['promote_id']))}">查看</td>
</if>
<td>{$vo.date}</td>
<td>{$vo.new_user}</td>
<td>{$vo.login_user}</td>
<td>{$vo.pay_amount}</td>
<td>{$vo.pay_user}</td>
<td>{$vo.pay_rate}%</td>
<td>{$vo.arpu}</td>
<td>{$vo.arppu}</td>
</tr>
</volist>
</tbody>
@ -197,13 +176,14 @@
</div>
<div class="page">
<if condition="$role_export_check eq true ">
<a class="sch-btn" href="{:U('Export/userarpuExport',array(
'start'=>$_GET['start'],
'end'=>$_GET['end'],
'game_id'=>$_GET['game_id'],
'promote_id'=>$_GET['promote_id'],
'xlsname'=>'数据分析_ARPU分析',
),false)}">导出</a>
<a class="sch-btn" href="{:U('Stat/userarpu',array(
'start'=>$_GET['start'],
'end'=>$_GET['end'],
'game_ids'=>$_GET['game_ids'],
'promote_id'=>$_GET['promote_id'],
'device_type'=>$_GET['device_type'],
'export'=>1,
),false)}">导出</a>
</if>
{$_page|default=''}
</div>
@ -212,11 +192,12 @@
<block name="script">
<script>
Think.setValue('hasbindcoins',{$Think.get.hasbindcoins|default=0});
Think.setValue('contain_bind_coins',{$Think.get.contain_bind_coins|default=0});
Think.setValue('start',"{$Think.get.start|default=''}");
Think.setValue('end',"{$Think.get.end|default=''}");
Think.setValue('promote_id',{$Think.get.promote_id|default='""'});
Think.setValue('game_id',{$Think.get.game_id|default='""'});
Think.setValue('game_ids',{$Think.get.game_ids|default='""'});
Think.setValue('device_type',{$Think.get.device_type|default='""'});
Think.setValue('row',{$Think.get.row|default=10});
$(".select_gallery").select2();
</script>
@ -251,8 +232,8 @@ $(function(){
if(interval < 0 || start == ''){
layer.msg('请选择搜索时间');
return false;
}else if(interval>90){
layer.msg('请选择90日内的时间段');
}else if(interval>31){
layer.msg('请选择31日内的时间段');
return false;
}
@ -285,8 +266,8 @@ $(function(){
$(".paixu").click(function(){
var that=$(this);
$data_order=that.attr('data-order');
$order_type='{$userarpu_order}';
if($order_type==''||$order_type=='4'){
$order_type='{$order}';
if($order_type==0||$order_type=='4'){
$(".sortBy").attr('name','data_order');
val='3,'+$data_order;
$(".sortBy").attr('value',val);

@ -0,0 +1,407 @@
<extend name="Public/base"/>
<block name="css">
<link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" />
<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;}
.bindcoinsbox {height:33px;line-height:37px;}
.bindcoinsbox .radio {cursor:pointer;}
.bindcoinsbox .radio input {cursor:pointer;}
</style>
</block>
<block name="body">
<style>.button_list2 {
margin: 9px 0;
margin: 5px 0 32px;
margin-right: 15px;
}</style>
<script type="text/javascript" src="__JS__/bootstrap.min.js"></script>
<script type="text/javascript" src="__JS__/select2.min.js"></script>
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">ARPU分析</h3>
<p class="description_text">说明根据日期游戏推广员分析ARPU等相关数据信息</p>
<div class="keywords_information">
<i class="keywords_mark"><span>关键词说明</span></i>
<ul class="keywords_content">
<li class="keywords_title">关键词说明<a href="javascript:;" class="keywords_close">X</a></li>
<li class="keywords_list">
<span class="">活跃玩家</span>
<span class="">当天登录的玩家总数</span>
</li>
<li class="keywords_list">
<span class="">1日留存</span>
<span class="">注册第二天的登录率</span>
</li>
<li class="keywords_list">
<span class="">付费玩家</span>
<span class="">当天付费的玩家数量</span>
</li>
<li class="keywords_list">
<span class="">新付费玩家</span>
<span class="">当天付费玩家中第一次付费的玩家数</span>
</li>
<li class="keywords_list">
<span class="">付费率</span>
<span class="">付费玩家/活跃玩家</span>
</li>
<li class="keywords_list">
<span class="">ARPU(每用户平均付费)</span>
<span class="">当日总充值数/活跃玩家数</span>
</li>
<li class="keywords_list">
<span class="">ARPPU(付费用户的平均付费)</span>
<span class="">当日总充值/付费玩家数</span>
</li>
</ul>
</div>
</div>
<div class="cf jssearch top_nav_list">
<div class="fl button_list2">
<div class="bindcoinsbox">
参与统计设置:
<label class="radio radio-primary">
<input type="radio" class="coins" value="0" name="hasbindcoins">
<span>排除绑币</span>
</label>
<label class="radio radio-primary">
<input type="radio" class="coins" value="1" name="hasbindcoins">
<span>包含绑币</span>
</label>
</div>
</div>
<!-- 高级搜索 -->
<div class=" fl cf search_list">
<div class="input-list search-title-box">
<label>搜索:</label>
</div>
<div class="input-list">
<input type="text" id="time-start" name="start" class="" value="{:I('start',date('Y-m-d',strtotime('-7 day')))}" placeholder="选择开始时间" />
&nbsp;-&nbsp;
<input type="text" id="time-end" name="end" class="" value="{:I('end',date('Y-m-d',time()))}" placeholder="选择结束时间" />
</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.game_name}" value="{$vo.id}">{$vo.game_name}</option>
</volist>
</select>
</div>
<div class="input-list input-list-promote search_label_rehab">
<select id="promote_id" name="promote_id" class="select_gallery" >
<option value="">推广员账号</option>
<volist name=":get_promote_list(1)" id="vo">
<option promote-id="{$vo.account}" value="{$vo.id}">{$vo.account}</option>
</volist>
</select>
</div>
<input type="hidden" name="" value="" class="sortBy">
<div class="input-list">
<a class="sch-btn" href="javascript:;" id="search" url="{:U('stat/userarpu','model='.$model['name'].'&row='.I('row'),false)}">搜索</a>
</div>
</div>
</div>
<!-- 数据列表 -->
<div class="data_list">
<div class="">
<table>
<!-- 表头 -->
<thead>
<tr>
<th ><a class="paixu" data-order='time'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'time'">日期▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'time'"/>日期▼<else />日期<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<if condition="$game_name neq ''">
<th>游戏名称</th>
</if>
<if condition="$promote_name neq ''">
<th>渠道名称</th>
</if>
<th ><a class="paixu" data-order='register_num'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'register_num'">新增玩家▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'register_num'"/>新增玩家▼<else />新增玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='act_user'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'act_user'">活跃玩家▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'act_user'"/>活跃玩家▼<else />活跃玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='keep_num'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'keep_num'">1日留存▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'keep_num'"/>1日留存▼<else />1日留存<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='spend'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'spend'">充值▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'spend'"/>充值▼<else />充值<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='spend_people'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'spend_people'">付费玩家▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'spend_people'"/>付费玩家▼<else />付费玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='new_pop'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'new_pop'">新付费玩家▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'new_pop'"/>新付费玩家▼<else />新付费玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='spend_rate'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'spend_rate'">付费率▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'spend_rate'"/>付费率▼<else />付费率<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='ARPU'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'ARPU'">ARPU▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'ARPU'"/>ARPU▼<else />ARPU<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='ARPPU'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'ARPPU'">ARPPU▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'ARPPU'"/>ARPPU▼<else />ARPPU<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<th ><a class="paixu" data-order='pop_num'><if condition="$userarpu_order eq 4 and $userarpu_order_type eq 'pop_num'">累计付费玩家▲<elseif condition="$userarpu_order eq 3 and $userarpu_order_type eq 'pop_num'"/>累计付费玩家▼<else />累计付费玩家<img src="__IMG__/up-down.png" width="13px"></if></a></th>
<if condition="$game_name eq ''">
<if condition="$game_name eq ''">
<th>详情</th>
</if>
</tr>
</thead>
<!-- 列表 -->
<tbody>
<volist name="data" id="vo">
<tr>
<td>{$vo.time}</td>
<if condition="$game_name neq ''">
<td>{$game_name}</td>
</if>
<if condition="$promote_name neq ''">
<td>{$promote_name}</td>
</if>
<td>{$vo.register_num}</td>
<td>{$vo.act_user}</td>
<td>{$vo.keep_num}%</td>
<td>{$vo.spend}</td>
<td>{$vo.spend_people}</td>
<td>{$vo.new_pop}</td>
<td>{$vo.spend_rate}%</td>
<td>{$vo.ARPU}</td>
<td>{$vo.ARPPU}</td>
<td>{$vo.pop_num}</td>
<if condition="$game_name eq ''">
<td><a style="cursor:pointer;width:100%;text-align:center" class="chakan" timetitle="{$vo['time']}" ptitle="{$promote_name}" href-url="{:U('stat/cha_userarpu',array('time'=>$vo['time'],'hasbindcoins'=>I('hasbindcoins'),'promote_name'=>$promote_name,'promote_id'=>$_REQUEST['promote_id']))}">查看</td>
</if>
</tr>
</volist>
</tbody>
</table>
</div>
</div>
<div class="page">
<a class="sch-btn" href="{:U('Export/userarpuExport',array(
'start'=>$_GET['start'],
'end'=>$_GET['end'],
'game_id'=>$_GET['game_id'],
'promote_id'=>$_GET['promote_id'],
'xlsname'=>'数据分析_ARPU分析',
),false)}">导出</a>
{$_page|default=''}
</div>
</block>
<block name="script">
<script>
Think.setValue('hasbindcoins',{$Think.get.hasbindcoins|default=0});
Think.setValue('start',"{$Think.get.start|default=''}");
Think.setValue('end',"{$Think.get.end|default=''}");
Think.setValue('promote_id',{$Think.get.promote_id|default='""'});
Think.setValue('game_id',{$Think.get.game_id|default='""'});
Think.setValue('row',{$Think.get.row|default=10});
$(".select_gallery").select2();
</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 type="text/javascript">
//导航高亮
highlight_subnav('{:U('stat/userarpu')}');
$(function(){
//计算天数差的函数,通用
function GetDateDiff(startDate,endDate)
{
var startTime = new Date(Date.parse(startDate.replace(/-/g, "/"))).getTime();
var endTime = new Date(Date.parse(endDate.replace(/-/g, "/"))).getTime();
var dates = Math.abs((startTime - endTime))/(1000*60*60*24);
return dates;
}
//搜索功能
$("#search").click(function(){
var start = $("#time-start").val();
start = start.substring(0,19);
var end = ($("#time-end").val() == "") ? "{:date('Y-m-d')}" : $("#time-end").val();
end = end.substring(0,19);
var interval = GetDateDiff(start,end);
if(interval < 0 || start == ''){
layer.msg('请选择搜索时间');
return false;
}else if(interval>90){
layer.msg('请选择90日内的时间段');
return false;
}
var url = $(this).attr('url');
var query = $('.jssearch').find('input').serialize();
query += "&"+$('.jssearch').find('select').serialize();
query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g,'');
query = query.replace(/^&/g,'');
if( url.indexOf('?')>0 ){
url += '&' + query;
}else{
url += '?' + query;
}
var start = $("#time-start").val();
var end = $("#time-end").val();
if (start !='' && end != ''){
if (Date.parse(start) > Date.parse(end)){
layer.msg('开始时间必须小于等于结束时间');
return false;
}
}
window.location.href = url;
});
$('input[name="hasbindcoins"]').click(function() {
$("#search").click();
});
$(".paixu").click(function(){
var that=$(this);
$data_order=that.attr('data-order');
$order_type='{$userarpu_order}';
if($order_type==''||$order_type=='4'){
$(".sortBy").attr('name','data_order');
val='3,'+$data_order;
$(".sortBy").attr('value',val);
$("#search").click();
}else if($order_type=='3'){
$(".sortBy").attr('name','data_order');
val='4,'+$data_order;
$(".sortBy").attr('value',val);
$("#search").click();
}
});
//回车自动提交
$('.jssearch').find('input').keyup(function(event){
if(event.keyCode===13){
$("#search").click();
}
});
$('#time-start').datetimepicker({
format: 'yyyy-mm-dd',
language:"zh-CN",
minView:2,
autoclose:1,
});
$('#time-end').datetimepicker({
format: 'yyyy-mm-dd',
language:"zh-CN",
minView:2,
autoclose:1,
pickerPosition:'bottom-right'
});
$(".chakan").click(function () {
that = $(this);
url = that.attr('href-url');
timetitle = that.attr('timetitle');
ptitle = ' ' + that.attr('ptitle') + ' ';
layer.open({
type: 2,
title: false,
closeBtn: 0, //不显示关闭按钮
shade: [0],
area: ['1px', '1px'],
offset: 'rb', //右下角弹出
time: 1, // 秒后自动关闭 这里设置成1ms 不显示过度页面
anim: 2,
content: ['', 'no'], //iframe的urlno代表不显示滚动条
end: function () { //
layer.open({
type: 2,
title: timetitle + ptitle + '游戏数据',
shadeClose: true,
shade: false,
maxmin: true, //开启最大化最小化按钮
area: ['50%', '45%'],
content: url//iframe的url
});
}
});
});
$("#game").on('click',function(event) {
var navlist = $(this).find('.i_list_li');
if (navlist.hasClass('hidden')) {
navlist.removeClass('hidden');
$(this).find('#i_list_id').focus().val('');
} else {
navlist.addClass('hidden');
}
$(document).one("click", function(){
navlist.addClass('hidden');
});
event.stopPropagation();
});
$('#game #i_list_id').on('keyup',function(event) {
var val = $.trim($(this).val()).toLowerCase();
$(this).closest('.drop-down').find('#i_list_idh').val(val);
});
$("#game #i_list_li").find("a").each(function(){
$(this).click(function(){
var text = $.trim($(this).text()).toLowerCase();
var val = $.trim($(this).attr('value'));
$(this).closest('.drop-down').find("#i_list_id").val(text);
$(this).closest('.drop-down').find('#i_list_idh').val(val);
})
});
$("#promote").on('click',function(event) {
var navlist = $(this).find('.i_list_li');
if (navlist.hasClass('hidden')) {
navlist.removeClass('hidden');
$(this).find('#i_list_id').focus().val('');
} else {
navlist.addClass('hidden');
}
$(document).one("click", function(){
navlist.addClass('hidden');
});
event.stopPropagation();
});
$('#promote #i_list_id').on('keyup',function(event) {
$(this).closest('.drop-down').find('#i_list_idh').val(-1);
});
$("#promote #i_list_li").find("a").each(function(){
$(this).click(function(){
var text = $.trim($(this).text()).toLowerCase();
$(this).closest('.drop-down').find("#i_list_id").val(text);
$(this).closest('.drop-down').find('#i_list_idh').val($(this).attr('value'));
})
});
paramnum="{:count(I('get.'))}";
if(paramnum==0){
$("#search").click();
}
})
</script>
</block>

@ -47,10 +47,17 @@
<div class="input-list 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>
<?php foreach($baseGames as $baseGame):?>
<option game-id="<?= $baseGame['id'] ?>" value="<?= $baseGame['id'] ?>"><?= $baseGame['name'] ?></option>
<?php endforeach;?>
</select>
</div>
<div class="input-list search_label_rehab">
<select id="device_type" name="device_type" class="select_gallery">
<option value="">请选择设备类型</option>
<option value="android" <?php if(I('device_type', '') == 'android'):?>selected<?php endif;?>>安卓</option>
<option value="ios" <?php if(I('device_type', '') == 'ios'):?>selected<?php endif;?>>IOS</option>
</select>
</div>
<div class="input-list input-list-promote search_label_rehab">
<select id="promote_id" name="promote_id" class="select_gallery" >

@ -42,23 +42,19 @@
<a class="ajax-post confirm " target-form="ids" url="{:U('company_del')}"><span class="button_icon button_icon2"></span>删除</a>
</div>
</div>
<!-- <div class="jssearch fl cf search_list" >-->
<!-- <div class="input-list search-title-box">-->
<!-- <label>搜索:</label>-->
<!-- </div>-->
<!-- <div class="input-list input-list-platform">-->
<!-- <select id="status" name="status" >-->
<!-- <option value="">显示状态</option>-->
<!-- <option value="1">已开启</option>-->
<!-- <option value="0">已关闭</option>-->
<!-- </select>-->
<!-- </div>-->
<!-- <div class="input-list">-->
<!-- <a class="sch-btn" href="javascript:;" id="search" url="{:U('lists','model='.$model['name'] .'&row='.I('row'),false)}">搜索</a>-->
<!-- </div>-->
<!-- </div>-->
<div class="jssearch fl cf search_list" >
<div class="input-list search-title-box">
<label>搜索:</label>
</div>
<div class="input-list">
<input type="text" name="partner" class="" placeholder="公司名称" value="{:I('partner')}" />&nbsp;
</div>
<div class="input-list">
<a class="sch-btn" href="javascript:;" id="search" url="{:U('company_info','model='.$model['name'] .'&row='.I('row'),false)}">搜索</a>
</div>
</div>
</div>
<!-- 数据列表 -->

@ -1127,4 +1127,28 @@ class PromoteService {
return $selfGameIds;
}
}
public function checkPromoteLimitRule($promote)
{
$topPromote = $this->getTopPromote($promote);
$rule = M('promote_limit_rules', 'tab_')->where(['promote_id' => $topPromote['id']])->order('created_at desc')->limit(1)->find();
if ($rule) {
if ($rule['started_at'] === null && $rule['ended_at'] === null) {
return false;
} elseif ($rule['started_at'] === null && $rule['ended_at'] !== null) {
if (time() < strtotime($rule['ended_at'] . ' 23:59:59')) {
return false;
}
} elseif ($rule['started_at'] !== null && $rule['ended_at'] === null) {
if (time() >= strtotime($rule['started_at'] . ' 00:00:00')) {
return false;
}
} else {
if (time() >= strtotime($rule['started_at'] . ' 00:00:00') && time() < strtotime($rule['ended_at'] . ' 23:59:59')) {
return false;
}
}
}
return true;
}
}

@ -46,6 +46,11 @@ class BaseController extends HomeController
define('G_SETTLEMENT_GRADE', 'sub_status,third_status');
}
if ($loginer['company_id']) {
$company = M('promote_company', 'tab_')->where(['id'=>$loginer['company_id']])->find();
$this->assign('company', $company);
}
$this->canViewUserRecharge = $this->promoteCan('view-user-recharge');
$this->checkUrlPermission();

@ -5,6 +5,7 @@ use Think\Controller;
use User\Api\MemberApi;
use Base\Facade\Request;
use Base\Service\ApplyService;
use Base\Service\PromoteService;
use Base\Service\PackageDownloadLogService;
use Base\Tool\MobileDetect;
@ -170,6 +171,16 @@ class HomeController extends Controller
$promoteId = $data['promote_id'];
}
$promote = M('promote', 'tab_')->field(['id', 'parent_id', 'chain', 'level'])->where(['id' => $promoteId])->find();
if (!$promote) {
$this->error('该链接已失效');
}
$promoteService = new PromoteService();
if (!$promoteService->checkPromoteLimitRule($promote)) {
$this->error('链接已失效');
}
$isWechat = Request::isWechat();
$isIOS = Request::isIOS() || Request::isIPadOS();
$isAndroid = Request::isAndroid();
@ -208,8 +219,6 @@ class HomeController extends Controller
$map = ['id' => intval($gameId)];
$game = M('game', 'tab_')->field($columns)->where($map)->find();
$promote = M('promote', 'tab_')->field(['id', 'parent_id', 'chain', 'level'])->where(['id' => $promoteId])->find();
if ($game['sdk_version'] == 1 && $isIOS) {
$map = [];
$map['relation_game_id'] = $game['relation_game_id'];

@ -14,6 +14,7 @@ use OT\DataDictionary;
use User\Api\PromoteApi;
use Home\Controller\DownController;
use Base\Tool\TaskClient;
/**
* 前台首页控制器
@ -74,6 +75,12 @@ class IndexController extends HomeController
$map['account'] = $account;
$data['last_login_time'] = time();
M("promote", "tab_")->where($map)->save($data);
$loginrecord['promote_id'] = get_pid();
$loginrecord['account'] = $_POST['account'];
$loginrecord['client_ip'] = $_SERVER['REMOTE_ADDR'];
$loginrecord['login_type'] = 1;
$loginrecord['create_time'] = time();
M("promote_login_record", "tab_")->add($loginrecord);
$this->ajaxReturn(array("status" => 1, "msg" => "登录成功", 'url' => U('Promote/index')));
} else {
$msg = "";
@ -99,6 +106,34 @@ class IndexController extends HomeController
}
}
public function doPhoneLogin() {
$mobile = $_POST['login_phone'];
$verify = $_POST['code'];
if (!$this->checksafecode($mobile, $verify)) {
$this->error('验证码错误');
}
$promote = M('promote', 'tab_')->where([
'login_phone' => $mobile,
])->find();
if($promote) {
$loginrecord['promote_id'] = $promote['id'];
$loginrecord['account'] = $promote['account'];
$loginrecord['client_ip'] = $_SERVER['REMOTE_ADDR'];
$loginrecord['login_type'] = 2;
$loginrecord['create_time'] = time();
M("promote_login_record", "tab_")->add($loginrecord);
setcookie('login_phone', $mobile, time() + 3600 * 10000, $_SERVER["HTTP_HOST"]);
$promote1 = new PromoteApi();
$result = $promote1->login_phone($promote['account']);
if ($result) {
$this->ajaxReturn(array("status" => 1, "msg" => "登录成功", 'url' => U('Promote/index')));
}
}else {
$this->error('此电话未注册,登录失败');
}
}
/* public function register()
{
if (IS_POST) {
@ -291,4 +326,51 @@ class IndexController extends HomeController
$Promote->logout();
redirect(U('Index/index'));
}
public function phoneLogin() {
$this->display();
}
/**
* 发动手机验证码
*/
public function telsafecode($phone = '', $exceptExists=1, $delay = 10, $flag = true)
{
$exists = M('promote', 'tab_')->where(['login_phone'=>$phone])->find();
if (!$exceptExists) {
if ($exists) {
return $this->ajaxReturn(['status'=>0,'msg'=>'手机号已被绑定']);
}
} else {
if (!$exists) {
return $this->ajaxReturn(['status'=>0,'msg'=>'手机号未被绑定']);
}
}
$taskClient = new TaskClient();
$result = $taskClient->sendSmsCode($phone, get_client_ip());
$data = [];
if ($result['code'] == TaskClient::SUCCESS) {
$data['status'] = 1;
} else {
$data['status'] = 0;
}
$data['msg'] = $result['message'];
echo json_encode($data);
exit;
}
/**
* 手机安全码验证
*/
public function checksafecode($phone, $code)
{
$taskClient = new TaskClient();
$result = $taskClient->checkSms($phone, $code);
$data = [];
if ($result && $result['code'] == TaskClient::SUCCESS) {
return true;
} else {
return false;
}
}
}

@ -54,6 +54,16 @@ class PackageController extends Controller
$promoteId = $data['promote_id'];
}
$promote = M('promote', 'tab_')->field(['id', 'parent_id', 'chain', 'level'])->where(['id' => $promoteId])->find();
if (!$promote) {
$this->error('该链接已失效');
}
$promoteService = new PromoteService();
if (!$promoteService->checkPromoteLimitRule($promote)) {
$this->error('链接已失效');
}
$map = [];
$map['status'] = 1;
$map['enable_status'] = 1;
@ -65,7 +75,6 @@ class PackageController extends Controller
$this->redirect("package/downloadError", ['message' => '该链接已经停止使用']);
}
$promote = M('promote', 'tab_')->field(['id', 'parent_id', 'chain', 'level'])->where(['id' => $promoteId])->find();
$game = M('game','tab_')->field(['id', 'game_name', 'sdk_version', 'apply_auth'])->where(['id' => $apply['game_id']])->find();
if (Request::isMobile() || Request::isTablet()) {

@ -9,6 +9,7 @@
namespace Home\Controller;
use Think\Controller;
use Base\Repository\PromoteRepository;
use Base\Tool\TaskClient;
/**
* 扩展控制器
@ -18,12 +19,19 @@ class SafeController extends BaseController{
public function setSafeIndex() {
$id = get_pid();
$safePwd = M('promote','tab_')->where(['id'=>$id])->field('second_pwd')->find();
if(empty($safePwd['second_pwd'])) {
return $this->display();
}else {
return $this->display("verifySafePwd");
}
$safePwd = M('promote','tab_')->where(['id'=>$id])->field('second_pwd, level, login_phone')->find();
if(!empty($safePwd['login_phone'])) {
$this->assign('login_phone', $safePwd['login_phone']);
}
if ($safePwd['level'] != 1) {
return $this->error('非会长无法更改');
}
return $this->display();
// if(empty($safePwd['second_pwd'])) {
// return $this->display();
// }else {
// return $this->display("verifySafePwd");
// }
}
@ -46,11 +54,9 @@ class SafeController extends BaseController{
$this->checkPaswwordFormat($confirmpassword);
$data['second_pwd'] = $this->think_ucenter_md5($confirmpassword, UC_AUTH_KEY);
$id = get_pid();
$updateRs = M("promote","tab_")->where(['id'=>$id])->save($data);
if($updateRs) {
recordPromoteLogs('安全管理','设置安全密码');
$this->success("安全密码设置成功");
}
M("promote","tab_")->where(['id'=>$id])->save($data);
recordPromoteLogs('安全管理','设置安全密码');
$this->success("安全密码设置成功");
}
public function think_ucenter_md5($str, $key = 'ThinkUCenter')
@ -77,30 +83,33 @@ class SafeController extends BaseController{
}
public function modifyPwdIndex() {
$id = get_pid();
$promote = M('promote', 'tab_')->where(['id' => $id])->find();
if(!empty($promote['login_phone'])) {
$this->assign('login_phone', $promote['login_phone']);
}
if($_POST) {
$oldpwd = $_POST['oldpwd'];
$safepwd = $_POST['safepwd'];
if(empty($oldpwd)) {
$this->error("旧密码不能为空");
if ($promote['level'] != 1) {
return $this->error('修改失败,非会长无法修改!');
}
//$oldpwd = $_POST['oldpwd'];
$safepwd = $_POST['safepwd'];
// if(empty($oldpwd)) {
// $this->error("旧密码不能为空");
// }
$this->checkPaswwordFormat($safepwd);
if(empty($safepwd)) {
$this->error("安全密码不能为空");
}
$id = get_pid();
$safePwd = M('promote','tab_')->where(['id'=>$id])->field('second_pwd')->find();
if($safePwd['second_pwd'] == $this->think_ucenter_md5($oldpwd, UC_AUTH_KEY)){
$data['second_pwd'] = $this->think_ucenter_md5($safepwd, UC_AUTH_KEY);
$updateRs = M("promote","tab_")->where(['id'=>$id])->save($data);
if($updateRs) {
$this->success("修改成功");
}else {
$this->error("修改失败,请重新操作");
}
}
else {
$this->error('旧密码错误,请确认');
if (!$this->checksafecode($promote['login_phone'], $_POST['code'])) {
return $this->error('验证码错误');
}
$id = get_pid();
$data['second_pwd'] = $this->think_ucenter_md5($safepwd, UC_AUTH_KEY);
M("promote","tab_")->where(['id'=>$id])->save($data);
$this->success("修改成功");
}
$this->display();
}
@ -338,7 +347,14 @@ class SafeController extends BaseController{
$this->assign('addr',json_decode($address)[1]);
}
$promoteInfo['address'] = json_decode($address);
// 获取推广员的公司
$promoteCompany = M('promote_company', 'tab_')->where(['id'=>$promoteInfo['company_id']])->find();
if ($promoteCompany['service_agreement_show'] > 0) {
$serviceAgreement = M('service_agreement', 'tab_')->where(['id'=>$promoteCompany['service_agreement_show']])->find();
$serviceAgreement['content'] = $this->renderServiceAgreement($serviceAgreement['content'], $promoteInfo);
$this->assign("serviceAgreement",$serviceAgreement);
}
$this->assign("promoteCompany",$promoteCompany);
$this->assign("ver_status",$promoteInfo['ver_status']);
$this->assign('promoteinfo', $promoteInfo);
@ -461,37 +477,63 @@ class SafeController extends BaseController{
$this->ajaxReturn($res);
}
public function safeDocument() {
$realname = $_REQUEST['realname'];
$phone = $_REQUEST['phone'];
$email = $_REQUEST['email'];
$address = $_REQUEST['address'];
if (empty($realname)) {
$realname = '您未填写真实姓名';
}
if (empty($email)) {
$email = '您未填写联系邮箱';
}
if (empty($address)) {
$address = '您未填写注册地址';
}
if (empty($phone)) {
$phone = '您未填写联系号码';
}
$time = time();
$loginPromote = $this->getLoginPromote();
$sn = date('Ymd') . '-' . strtoupper(substr(md5($loginPromote['id']), 8, 16));
$endTime = date('Y-m-d',strtotime('+1 year'));
$this->assign('time',date('Y-m-d',$time));
$this->assign('endTime',$endTime);
$this->assign('sn',$sn);
$this->assign('realname',$realname);
$this->assign('email',$email);
$this->assign('address',$address);
$this->assign('phone',$phone);
public function safeDocument($templateId=0) {
$template = M('service_agreement', 'tab_')->where(['id'=>$templateId])->find();
$promoteInfo = $this->getLoginPromote();
$sn = date('Ymd') . '-' . strtoupper(substr(md5($promoteInfo['id']), 8, 16));
$content = $template['content'];
$content = str_replace("{time}", date('Y-m-d'), $content);
$content = str_replace("{sn}", $sn, $content);
$content = str_replace("{endTime}", date('Y-m-d',strtotime('+1 year')), $content);
$content = str_replace("{account}", $promoteInfo['account'], $content);
$content = str_replace("{email}", $promoteInfo['email'], $content);
$content = str_replace("{realname}", $promoteInfo['real_name'], $content);
$content = str_replace("{phone}", $promoteInfo['mobile_phone'], $content);
$content = str_replace("{address}", json_decode($promoteInfo['address'],true)[1] ?? '', $content);
// $realname = $_REQUEST['realname'];
// $phone = $_REQUEST['phone'];
// $email = $_REQUEST['email'];
// $address = $_REQUEST['address'];
// if (empty($realname)) {
// $realname = '您未填写真实姓名';
// }
// if (empty($email)) {
// $email = '您未填写联系邮箱';
// }
// if (empty($address)) {
// $address = '您未填写注册地址';
// }
// if (empty($phone)) {
// $phone = '您未填写联系号码';
// }
// $time = time();
// $loginPromote = $this->getLoginPromote();
// $endTime = date('Y-m-d',strtotime('+1 year'));
// $this->assign('time',date('Y-m-d',$time));
// $this->assign('endTime',$endTime);
// $this->assign('sn',$sn);
// $this->assign('realname',$realname);
// $this->assign('email',$email);
// $this->assign('address',$address);
// $this->assign('phone',$phone);
$this->assign('content', $content);
$this->display();
}
private function renderServiceAgreement($content, $promoteInfo)
{
$content = str_replace("{account}", $promoteInfo['account'], $content);
$content = str_replace("{email}", $promoteInfo['email'], $content);
$content = str_replace("{real_name}", $promoteInfo['real_name'], $content);
$content = str_replace("{mobile_phone}", $promoteInfo['mobile_phone'], $content);
$content = str_replace("{addr}", $promoteInfo['addr'], $content);
return $content;
}
public function promoteLogs() {
$page = intval(I('p', 1));
$row = intval(I('row', 10));
@ -559,4 +601,83 @@ class SafeController extends BaseController{
$this->ajaxReturn(['code'=>0000,'mes'=>'删除成功']);
}
}
public function bindTel() {
$id = get_pid();
$promote = M('promote', 'tab_')->where(['id' => $id])->find();
if(!empty($promote['login_phone'])) {
$this->assign('login_phone', $promote['login_phone']);
}
return $this->display();
}
/**
* 发动手机验证码
*/
public function telsafecode($phone = '', $exceptExists=1, $delay = 10, $flag = true)
{
$exists = M('promote', 'tab_')->where(['login_phone'=>$phone])->find();
if (!$exceptExists) {
if ($exists) {
return $this->ajaxReturn(['status'=>0,'msg'=>'手机号已被绑定']);
}
} else {
if (!$exists) {
return $this->ajaxReturn(['status'=>0,'msg'=>'手机号未被绑定']);
}
}
$taskClient = new TaskClient();
$result = $taskClient->sendSmsCode($phone, get_client_ip());
$data = [];
if ($result['code'] == TaskClient::SUCCESS) {
$data['status'] = 1;
} else {
$data['status'] = 0;
}
$data['msg'] = $result['message'];
echo json_encode($data);
exit;
}
/**
* 手机安全码验证
*/
public function checksafecode($phone, $code)
{
$taskClient = new TaskClient();
$result = $taskClient->checkSms($phone, $code);
$data = [];
if ($result && $result['code'] == TaskClient::SUCCESS) {
return true;
} else {
return false;
}
}
public function addLoginMobile() {
if (IS_POST) {
/* 检测验证码 TODO: */
$mobile = $_POST['login_phone'];
$verify = $_POST['code'];
if (!$this->checksafecode($mobile, $verify)) {
$this->error('验证码错误');
}
$id = get_pid();
$promote = M('promote', 'tab_')->where([
'id' => $id
])->find();
if ($promote) {
$promote['login_phone'] = $mobile;
$updateRs = M('promote', 'tab_')->where(['id' => $id])->save($promote);
if($updateRs) {
$this->success("更新登陆手机号成功");
}else {
$this->error("更新登陆手机号失败");
}
}else {
$this->error("无此推广账号信息");
}
}
}
}

@ -37,6 +37,7 @@ class WithdrawController extends BaseController
$map["promote.id"] = get_pid();
$map['tab_company_statement_info.company_type'] = ['in',"1,2"];
$map['tab_company_statement_info.verify_status'] = 1;
if ($_REQUEST['pay_status'] || $_REQUEST['pay_status'] == '0') {
$map['pay_status'] = $_REQUEST['pay_status'];
@ -115,11 +116,12 @@ class WithdrawController extends BaseController
$dbres = M("company_statement_info","tab_")->where("id='{$id}'")->find();
// $this->ajaxReturn(["msg"=>"打款成功","data"=>$dbres,"status"=>1]);die();
$company_info = json_decode($dbres['company_info'],true);
//TODO:未进行真实打款
if($dbres['pay_status'] != 1 && $dbres['verify_status'] == 1){
//执行打款
$title = "测试-".$dbres['company_name']."结算";
$amount = $dbres['statement_money'];
//TODO:线上要关闭这个
$amount = 0.1;//测试金额为0
$payres = $fund->transfer($company_info['ali_account'],$company_info['ali_user'],$dbres['statement_num'],$amount, $title);
$resultCode = $payres->code;
@ -139,12 +141,18 @@ class WithdrawController extends BaseController
$savedata["pay_time"]=time();
} else {
$this->poolCount($dbres['pool_id']);
// $this->poolCount($dbres['pool_id']);
$this->ajaxReturn(["msg"=>"已经打款过","data"=>$dbres,"status"=>0]);
}
$this->poolCount($dbres['pool_id']);
M("company_statement_info","tab_")->save($savedata);
$this->ajaxReturn(["msg"=>"打款成功","data"=>$dbres,"status"=>1]);
// $this->poolCount($dbres['pool_id']);
if ($savedata["pay_status"] == -1) {
$this->ajaxReturn(["msg"=>"提现失败","data"=>$dbres,"status"=>0]);
}
$this->ajaxReturn(["msg"=>"提现成功","data"=>$dbres,"status"=>1]);
}
/**
@ -152,27 +160,22 @@ class WithdrawController extends BaseController
* 整合数据,全部成功则支付成功,否则为支付中
*/
public function poolCount($poolid){
$pool_id = $poolid;
$CompanyInfo = M("company_statement_info","tab_");
if(count($pool_id) > 0){
foreach($pool_id as $k=>$v){
$f = $CompanyInfo->where("pool_id = {$v} AND pay_status <> 1")->find();
if(empty($f)){
//全部完成
$this->setOneVerifyStatus(4,"payment",$v);
}else{
//打款中
$this->setOneVerifyStatus(3,"payment",$v);
}
}
$f = M("company_statement_info","tab_")->field("id")->where("pool_id = {$poolid} AND pay_status <> 1")->find();
if(isset($f['id'])){
//打款中
$this->setOneVerifyStatus(3,"payment",$poolid);
}else{
//全部完成
$this->setOneVerifyStatus(4,"payment",$poolid);
}
$this->ajaxReturn(["msg"=>"聚合成功","status"=>1]);
}
protected function setOneVerifyStatus($change_status,$op_pre,$id)
{
$dbres = M("company_statement_pool","tab_")->field("id,verify_status,verify_log")->where("id = {$id}")->find();
$dbres['verify_log'] = json_decode($dbres['verify_log'],true);
$dbres['verify_log'][$op_pre.'_user']=$this->admininfo["mobile"];
$dbres['verify_log'][$op_pre.'_user']=$_SESSION['onethink_home']['promote_auth']['account'];
$dbres['verify_log'][$op_pre.'_time']=date("Y-m-d H:i:s");
$dbres['verify_log'] = json_encode($dbres['verify_log']);
$dbres['verify_status']=$change_status;

@ -31,13 +31,13 @@
<li><div class="icon"><span class="placeholder-graphic"><img src="__IMG__/20180207/icon_chongzhi1.png"/></span></div> <div class="text text2"><p>历史收益</p><span>¥{$income.history_income}</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>¥{$income.this_month_income}</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>¥{$income.yesterday_income}</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>¥{$income.balance}</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>¥{$income.withdrawn_amount}</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>¥{$income.not_withdrawn_amount}</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>{$settlementCycle}</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>¥{$income.balance}</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>¥{$income.withdrawn_amount}</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>¥{$income.not_withdrawn_amount}</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>{$settlementCycle}</span></div> </li>-->
<!-- </ul>-->
</div>
<div style="margin-top: 2.4vh;">
<!-- <button class="withdraw" id="withdraw">提现</button>-->

@ -38,6 +38,7 @@
</div>
<div class="form-group ff clearfix">
<label class="tabbtn"><input type="checkbox" name="remm" id="remember" ><i></i><span>记住账号</span></label>
<label class="tabbtn" style="margin-left:10px"><a href="{:U('index/phoneLogin')}" style="color:rgb(8, 85, 185);text-decoration:underline;">短信登陆</a></label>
<!-- <a target="_blank" href="{:U('forget')}" class="forget_password right" ><span>忘记密码?</span></a> -->
</div>
<div >

@ -0,0 +1,264 @@
<extend name="Public/bases" />
<block name="css">
<link href="__CSS__/20170913/index.css" rel="stylesheet" >
</block>
<block name="body">
<div class="banner">
<div class="inner clearfix">
<!--<a href="http://wpa.qq.com/msgrd?v=3&uin={:C('CH_SET_SERVER_QQ')}&site=qq&menu=yes" class="qqbtn" target="_blank"><img src="__IMG__/20170913/qq.png">QQ咨询</a>-->
<div class="lrwrapper clearfix">
<div class="lrbox clearfix">
<div class="lrpane tab-pane fade active in" id="lr-login">
<h4 class="title"><span class="titletext">欢迎回来!</span></h4>
<form id="loginForm" class="form-horizontal" method="post" novalidate="novalidate">
<div class="form-group clearfix">
<div class="input-group input-format">
<span class="input-group-addon"><i class="input_icon input_icon_user" ></i></span>
<input type="text" name="login_phone" id="login_phone" class="account form-control" placeholder="手机号码" aria-describedby="basic-addon1">
</div>
<div class="input-status"></div>
</div>
<div class="form-group clearfix">
<div class="captchabox input-group input-format">
<span class="input-group-addon"><i class="input_icon input_icon_barcode"></i></span>
<input class="form-control" name="code" id="code" placeholder="短信验证码" autocomplete="off" maxlength="6">
</div>
<div class="f-wsn"><button id="sendtelCode" class="btn btn_primary" style="width:140px;" target-form="paw_info">发送验证码</button></div>
<div class="input-status"></div>
</div>
<div class="form-group ff clearfix">
<label class="tabbtn"><input type="checkbox" name="remm" id="remember" ><i></i><span>记住账号</span></label>
<label class="tabbtn" style="margin-left:10px"><a href="{:U('index/index')}" style="color:rgb(8, 85, 185);text-decoration:underline;">普通登陆</a></label>
<!-- <a target="_blank" href="{:U('forget')}" class="forget_password right" ><span>忘记密码?</span></a> -->
</div>
<div >
<input id="loginButton" type="submit" class="btn btn_primary" value="登 录">
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<notempty name="gg">
<div class="news">
<div class="inner clearfix txtScroll">
<span><i class="icon icon-voice"></i></span>
<a class="next" href="javascript:;"><i class="icon icon-angle_right"></i></a>
<div class="bd">
<ul>
<volist name="gg" id="vo">
<li>
<a href="{:U('Article/detail',array('id'=>$vo['id']))}" target="_blank" title="{$vo['title']}"><i>公告</i>{:msubstr2($vo['title'],0,70)}</a>
</li>
</volist>
</ul>
</div>
</div>
</div>
</notempty>
<div class="advantage page-aside">
<!-- <div class="inner">
<h2 class="aside-title"><span>平台优势</span></h2>
<div class="aside-content clearfix">
<ul>
<li><div class="item"><i class="icon icon1"></i><span class="contitle">收入丰厚</span><p class="context"><span>CPS+CPA双模式计费方式</span><span>可持续获得收益</span></p></div></li>
<li><div class="item"><i class="icon icon2"></i><span class="contitle">统计精准</span><p class="context"><span>每一笔收入都有迹可循</span><span>精准无误,永不扣量</span></p></div></li>
<li><div class="item"><i class="icon icon3"></i><span class="contitle">海量资源</span><p class="context"><span>优质内容,海量资源开放合作</span><span>提供最佳合作方式</span></p></div></li>
<li><div class="item"><i class="icon icon4"></i><span class="contitle">结算及时</span><p class="context"><span>结算快速,结算金额准确无误</span><span>绝不拖欠分成</span></p></div></li>
</ul>
</div>
</div>-->
</div>
<!--<div class="app page-aside">
<div class="inner">
<h2 class="aside-title"><span>精品应用推荐</span></h2>
<div class="aside-content slideColumn clearfix">
<div class="bd">
<div class="ulWrap">
<ul>
<volist name="rec_data" id="rec" mod="12">
<li>
<div class="pic"><a href="javascript:;"><span class="placeholder-graphic placeholder-graphic_icon"><img src="{$rec['icon']|get_cover='path'}"></span></a></div>
<div class="title" style="width:67%;"><a style="cursor:default" href="javascript:;" title="{$rec['game_name']}">{:msubstr2($rec['game_name'],0,10)}</a></div>
</li>
<eq name="mod" value="11"></ul><ul></eq>
</volist>
</ul>
</div>
</div>
<div class="hd"><ul>
<volist name="rec_data" id="rec" mod="12">
<eq name="mod" value="11"><li></li></eq>
</volist></ul>
</div>
<if condition="count($rec_data) gt 12">
<a class="prev" href="javascript:void(0)"></a>
<a class="next" href="javascript:void(0)"></a>
</if>
</div>
</div>
</div>-->
<div class="join page-aside">
<!-- <div class="inner">
<h2 class="aside-title"><span>如何加入我们</span></h2>
<div class="aside-content clearfix">
<ul class="clearfix">
<li><div class="item"><img class="icon" src="__IMG__/20170913/step1.png"><h5 class="contitle">注册账号</h5><p class="context"><span>注册账号,通过审核,加入联盟</span></p></div><div class="angle"><i class="iconangle"></i></div></li>
<li><div class="item"><img class="icon" src="__IMG__/20170913/step2.png"><h5 class="contitle">选择游戏资源</h5><p class="context"><span>选择推广的产品,游戏信息</span></p></div><div class="angle"><i class="iconangle"></i></div></li>
<li><div class="item"><img class="icon" src="__IMG__/20170913/step3.png"><h5 class="contitle">申请渠道分包</h5><p class="context"><span>获得自有渠道的游戏资源包</span></p></div><div class="angle"><i class="iconangle"></i></div></li>
<li><div class="item"><img class="icon" src="__IMG__/20170913/step4.png"><h5 class="contitle">推广分成</h5><p class="context"><span>每笔充值,后台申请结算的分成</span></p></div></li>
</ul>
<a href="{:U('register')}" class="joinbtn" >开始加入</a>
</div>
</div>-->
</div>
<div class="gotop"><img src="/Public/Home/images/index/gotop.png"></div>
</block>
<block name="script">
<script src="__JS__/20170913/jquery.SuperSlide.2.1.1.js"></script>
<script>
highlight_subnav('{:U("Index/index")}');
var regLogin = "";
// 如果登录有错误
$(document).ready(function(){
$(".slideColumn").slide({titCell:".hd ul",mainCell:".bd .ulWrap",autoPage:true,effect:"leftLoop",autoPlay:true,vis:1});
$(".txtScroll").slide({mainCell:".bd ul",autoPage:true,effect:"leftLoop",autoPlay:true});
$('#remember').change(function() {
var that = $(this);
if (that.prop('checked')) {
that.siblings('i').addClass('on');
} else {
that.siblings('i').removeClass('on');
}
});
/**
* 新增验证方法
*/
$.validator.addMethod("numOrLetter", function(value, element) {
return this.optional(element) || /^[a-zA-Z0-9_\.]+$/.test(value);
}, '只能是字母或数字或下划线');
// 登录验证
$("#loginForm").validate({
//定义规则
rules:{
account:{
required:true,
rangelength:[6,100],
numOrLetter:true,
},
password:{
required:true,
minlength:6
},
yzm:{
required:true,
rangelength:[4,4]
}
},
//定义错误消息
messages:{
account:{
required:"请输入登录账号",
rangelength:"账号必须是6-15位字符串",
},
password:{
required:"请输入登录密码",
minlength:'密码错误,请重新输入',
},
yzm:{
required:"请输入验证码",
rangelength:"验证码必须是4位字符串"
}
},
submitHandler:function(form){
data = $('#loginForm').serialize();
$.ajax({
type:'post',
url:"{:U('doPhoneLogin')}",
data:data,
success:function(data){
if(data.status==1){
layer.msg(data.info, {icon: 1});
window.location.href=data.url;
}else{
//if(data.code==0){}
$('img[name="changeCaptcha"]').click();
layer.msg(data.info, {icon: 2});
}
},error:function(){
}
});
}
});
});
</script>
<script type="text/javascript">
(function(){
var ThinkPHP = window.Think = {
"ROOT" : "", //当前网站地址
"APP" : "/index.php?s=", //当前项目地址
"PUBLIC" : "/Public", //项目公共目录地址
"DEEP" : "/", //PATHINFO分割符
"MODEL" : ["3", "", "html"],
"VAR" : ["m", "c", "a"]
}
})();
</script>
<script>
$('#sendtelCode').on('click',function() {
if ($(this).hasClass('g-btntn')) {
return false;
}
var phone = $.trim($('#login_phone').val());
if (phone == '') {
alert("手机号不能为空");
return false;
}
if (phone.length !== 11 || !(/^[1][35789][0-9]{9}$/.test(phone))) {
pmsg.msg("格式不正确");
return false;
}
$.ajax({
type:'post',
dataType:'json',
data:'phone='+phone,
url:'{:U("telsafecode")}',
success:function(data) {
if (data.status ==1) {
r(1);
} else {
alert(data.msg);
}
},
error:function() {
alert('服务器开小差了,请稍后再试。');
}
});
var r = function(i, t) {
var e = $('#sendtelCode');
var t = 60;
e.attr('disabled', true).text(t+'秒');
var a = setInterval(function() {
t--;
e.text(t+'秒');
t>0 || (clearInterval(a),e.attr('disabled', false).text('重新发送'));
},1000);
};
return false;
});
</script>
</block>

@ -103,6 +103,7 @@
<div class="subNav jssubNav"><i class="prev_icon icon_fenbao"></i><span>安全管理</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<!-- <a href="{:U('Apply/app_index')}" class="<if condition='CONTROLLER_NAME eq Apply and ACTION_NAME eq app_index '>active</if> ">APP列表</a>-->
<a href="{:U('Safe/bindTel')}" class="<if condition='CONTROLLER_NAME eq Safe and (ACTION_NAME eq bindTel or ACTION_NAME eq bindTel or ACTION_NAME eq bindTel or ACTION_NAME eq bindTel ) '>active</if> ">短信登陆设置</a>
<a href="{:U('Download/listsIndex')}" class="<if condition='CONTROLLER_NAME eq Download and (ACTION_NAME eq listsIndex or ACTION_NAME eq listsIndex or ACTION_NAME eq my_game_ch or ACTION_NAME eq child_game ) '>active</if> ">下载日志管理</a>
<a href="{:U('Safe/modifyloginpassword')}" class="<if condition='CONTROLLER_NAME eq Safe and (ACTION_NAME eq modifyloginpassword or ACTION_NAME eq my_game or ACTION_NAME eq my_game_ch or ACTION_NAME eq child_game ) '>active</if> ">修改登录密码</a>
<a href="{:U('Safe/setSafeIndex')}" class="<if condition='CONTROLLER_NAME eq Safe and (ACTION_NAME eq setSafeIndex or ACTION_NAME eq my_game or ACTION_NAME eq my_game_ch or ACTION_NAME eq child_game ) '>active</if> ">设置安全密码</a>
@ -150,10 +151,10 @@
<div class="trunk_con">
<!--头部个人信息-->
<div class="header">
<if condition="$loginer['level'] eq 1 and $loginer['company_belong'] eq 1">
<!-- <div style="position: absolute;padding-left: 1.5%;">
<if condition="$company['marketing_director_show'] eq 1">
<div style="position: absolute;padding-left: 1.5%;">
<span class="pinfo" style="color: #1239f2">市场总监联系方式:<span>13637338237(李总监)</span></span>
</div> -->
</div>
</if>
<div class="header-right">
<span class="pinfo jstime">今天是:<span></span></span>

@ -0,0 +1,261 @@
<extend name="Public/promote_base"/>
<block name="css">
<link href="__CSS__/20180207/account.css" rel="stylesheet" >
<style>.notice_tip {padding-left:20px;color:#999;font-size:12px;}
.formtxt{display:inline-block;width:232px;}
.trunk-list .table2 .r .qrcodeboxwrap {padding-left:0;padding-right:20px;padding-bottom:20px;}
.qrcodebox img {width:100px;height:100px;}
.qrcodebox p {font-size:12px;margin:0;color:#666;}
.qrcodebox p span{color:red;}
.qrcodeboxwrap~.notice_tip{vertical-align:top;display:inline-block;margin-top:20px;}
.mail_suffix {position: absolute;
top: 43px;
border: 1px solid rgb(229,229,229);
border-radius: 2px;
color: #666;
font-size: 11px;
width: 230px;
padding: 0 10px;
line-height: 1.4;
z-index: 1;
background: #FFF;
height: 200px;
overflow: hidden;
overflow-y: auto;}
.mail_suffix li {
padding: 2px 0;
cursor: pointer;
}
.mail_suffix li:first-child {padding-top:4px;}
.mail_suffix li:last-child{padding-bottom:4px;}
</style>
</block>
<block name="body">
<script type="text/javascript" src="__STATIC__/provincecityarea/area1.js" ></script>
<div class="page-list normal_list promote-base_info-form">
<div class="trunk-title">
<span class="title_main">手机号绑定</span>
</div>
<div class="trunk-content article">
<div class="trunk-list baseInfo">
<form action="{:U('Safe/addLoginMobile')}" novalidate="novalidate" method="post" class="paw_info">
<table class="table2" style="margin-top:50px;margin-left:50px">
<tr>
<td class="l"><span style="color:red">*</span>手机号码</td>
<td class="r">
<!-- <input type="text" class="input txt" name="login_phone" id="login_phone" style="width:430px" placeholder="请输入手机号码"> -->
<if condition="$login_phone neq null">
<input type="text" class="input txt" name="login_phone" id="login_phone" style="width:430px" value="{$login_phone}">
<else />
<input type="text" class="input txt" name="login_phone" id="login_phone" style="width:430px" placeholder="请输入手机号码">
</if>
<span id="confirm_password_tip"></span></td>
</tr>
<tr>
<td class="l"><span style="color:red">*</span>短信验证码</td>
<td class="r"><input type="text" class="input txt" name="code" id="code" style="width:230px" placeholder="请输入短信验证码">
<span id="confirm_password_tip"></span>
<button id="sendtelCode" class="tj btn" target-form="paw_info">发送验证码</button>
</td>
</tr>
<tr>
<td class="l"></td>
<td class="r">
<input type="hidden" name="id" value="{$data.id}">
<input type="submit" class="tj btn ajax-post" value="保存" style="width:200px" title="" target-form="paw_info">
</td>
</tr>
</table>
</form>
</div>
</div>
</div>
</block>
<block name="script">
<script type="text/javascript" src="__JS__/20170831/select2.min.js"></script>
<script type="text/javascript" src="__STATIC__/mail_suffix.js"></script>
<script type="text/javascript" src="__STATIC__/bank.js"></script>
<script type="text/javascript">
var ajaxurl="{:U('Account/getArea')}";
function loadArea(areaId,areaType) {
$.post(ajaxurl,{'areaId':areaId},function(data){
if(areaType=='city'){
$('#'+areaType).html('<option value="-1">市/县</option>');
$('#district').html('<option value="-1">镇/区</option>');
}else if(areaType=='district'){
$('#'+areaType).html('<option value="-1">镇/区</option>');
}
if(areaType!='null'){
$.each(data,function(no,items){
$('#'+areaType).append('<option value="'+items.area_id+'">'+items.area_name+'</option>');
});
}
});
}
var tot="";
$("#province").change(function() {
tot+=$("#province").val();
});
$("#city").change(function() {
tot+=","+$("#city").val()
});
$("#district").change(function() {
tot+=","+$("#district").val()
});
$(".btn").click(function() {
$("#town").val(tot);
});
function add_mail_suffix(that) {
var suffix = $(that).data('suffix');
var input = $(that).closest('.mail_suffix').prev();
if(input.attr('data-mail').length>0) {
input.val(input.attr('data-mail')+suffix);
}
}
$(function() {
$('.tab td').on('click',function() {
var that = $(this);
$('.tabpan').removeClass('current');
that.siblings().removeClass('current');
that.addClass('current');
$('.tabpan').eq(that.index()).addClass('current');
return false;
});
$(".select_gallery").select2();
$('#email').focus(function () {
var val = $.trim($(this).val());
if(val) {
var index = val.indexOf('@');
if(index>-1){
var suffix = val.substring(index);
val = val.substring(0,index);
$(this).val(val).attr('data-suffix',suffix).attr('data-mail',val);
}
}
var html = '<ul class="mail_suffix">';
for(var item in mail_suffix) {
html += '<li onclick="add_mail_suffix(this)" data-suffix="'+mail_suffix[item]+'">'+mail_suffix[item]+'</li>';
}
html += '</ul>';
$(this).after(html);
$('body').click(function (event) {
var e = event || window.event;
var target = e.target || e.srcElement;
if($(target).attr('id') != 'email' && $(target).attr('class') != 'mail_suffix') {
$('.mail_suffix').remove();
}
return false;
});
return false;
}).blur(function (event) {
var e = event || window.event;
var target = e.target || e.srcElement;
var that = $(this);
if($(target).attr('id') == 'email' && $(target).attr('class') == 'mail_suffix') {
$('.mail_suffix').remove();
}
if(that.attr('data-mail')) {
var data_mail_index = that.attr('data-mail').indexOf('@');
if(data_mail_index>-1){
var data_mail = that.attr('data-mail');
that.val(data_mail);
that.attr('data-mail',data_mail.substring(0,data_mail_index));
that.attr('data-suffix',data_mail.substring(data_mail_index));
} else {
that.val(that.attr('data-mail')+that.attr('data-suffix'));
}
}
return false;
}).keyup(function () {
var val = $.trim($(this).val());
if(val.length>64) {val = val.substr(0,64);$(this).val(val);}
$(this).attr('data-mail',val);
return false;
});
var data_bank_name = '{$data.bank_name}';
var bank_name = '<option value="">请选择收款银行</option>';console.log(bank);
for(var bn in bank) {
if(data_bank_name == bank[bn]) {
bank_name += '<option value="'+bank[bn]+'" selected>'+bank[bn]+'</option>';
} else {
bank_name += '<option value="'+bank[bn]+'">'+bank[bn]+'</option>';
}
}
$('#bank_name').html(bank_name).select2();
// AF.users.account_edit(1429);
// AF.users.account_content_edit(1429);
_init_area();
_reset_area('','','');
});
</script>
<script>
$('#sendtelCode').on('click',function() {
if ($(this).hasClass('g-btntn')) {
return false;
}
var phone = $.trim($('#login_phone').val());
if (phone == '') {
alert("手机号不能为空");
return false;
}
if (phone.length !== 11 || !(/^[1][35789][0-9]{9}$/.test(phone))) {
pmsg.msg("格式不正确");
return false;
}
$.ajax({
type:'post',
dataType:'json',
data:{'phone':phone, 'exceptExists':0},
url:'{:U("telsafecode")}',
success:function(data) {
if (data.status ==1) {
r(1);
} else {
alert(data.msg);
}
},
error:function() {
alert('服务器开小差了,请稍后再试。');
}
});
var r = function(i, t) {
var e = $('#sendtelCode');
var t = 60;
e.addClass('disabled').attr('disabled', true).text(t+'秒');
var a = setInterval(function() {
t--;
e.text(t+'秒');
t>0 || (clearInterval(a),e.removeClass('disabled').attr('disabled', false).text('重新发送'));
},1000);
};
return false;
});
</script>
</block>

@ -302,12 +302,14 @@
<span id="confirm_password_tip"></span></td>
</tr>
<?php if ($promoteCompany['service_agreement_show'] > 0):?>
<tr>
<td class="l"></td>
<!-- <td class="r"><input type="checkbox" class="input txt" id="agree" style="margin-left:20px" name="agree" >我已仔细阅读,并同意<a href="{:U('safe/safeDocument',array('username'=>$promoteinfo['account'],'email'=>$promoteinfo['email'],'realname'=>$promoteinfo['real_name'],'phone'=>$promoteinfo['mobile_phone'],'address'=>$promoteinfo['address']))}"><span style="color:#26c7dbd4" id="read">《游戏推广服务框架协议》</span></a> -->
<td class="r"><input type="checkbox" class="input txt" id="agree" style="margin-left:20px" name="agree" >我已仔细阅读,并同意<span style="color:#26c7dbd4" id="read" onclick="read_detail('{$promoteinfo.account}','{$promoteinfo.email}','{$promoteinfo.real_name}','{$promoteinfo.mobile_phone}','{$addr}')">《游戏推广服务框架协议</span>
<td class="r"><input type="checkbox" class="input txt" id="agree" style="margin-left:20px" name="agree" >我已仔细阅读,并同意<span style="color:#26c7dbd4" id="read" onclick="read_detail('{$serviceAgreement['name']}', {$serviceAgreement['id']})">《'{$serviceAgreement['name']}'</span>
<span id="confirm_password_tip"></span></td>
</tr>
<?php endif;?>
<tr>
<td class="l"></td>
<td class="r">
@ -333,19 +335,18 @@
<script src="__STATIC__/layer/layer.js" type="text/javascript"></script>
<script type="text/javascript" src="__STATIC__/layer/extend/layer.ext.js"></script>
<script>
function read_detail(username,email,realname,phone,address) {
console.log('xx')
console.log(address)
function read_detail(name, templateId) {
layer.open({
type: 2,
title: "游戏推广服务框架协议",
title: name,
shadeClose: true,
shade: 0.8,
area: ['70%', '82%'],
btn:['同意'],
content: ['index.php?s=/Home/safe/safeDocument/username/'+ username +'/email/' + email + '/realname/' + realname + '/phone/' + phone +'/address/' + address + '', 'no'],
content: "{:U('Safe/safeDocument')}&templateId="+templateId,
yes:function(index) {
window.localStorage.setItem('checked','checked');
$('#agree').prop('checked',true);
layer.close(index);
}
});

@ -44,17 +44,26 @@
<span style="margin-top:50px;font-size:15px;color:#26c7db85">为了保证您的账户安全,提现和转账等操作需要使用安全密码进行确认(请不要和登陆密码一样)</span>
<form action="{:U('Safe/modifypwdindex')}" novalidate="novalidate" method="post" class="paw_info">
<table class="table2" style="margin-top:30px;margin-left:50px" >
<tr>
<!-- <tr>
<td class="l">旧密码:</td>
<td class="r"><input type="password" class="input txt" name="oldpwd" id="oldpwd" style="width:430px" placeholder="旧密码">
<span id="confirm_password_tip"></span></td>
</tr>
</tr> -->
<tr>
<td class="l">安全密码:</td>
<td class="l">安全密码:</td>
<td class="r"><input type="password" class="input txt" name="safepwd" id="confirm_password" style="width:430px" placeholder="请输入要设置的安全密码">
<span id="confirm_password_tip"></span></td>
</tr>
<tr>
<td class="l"><span style="color:red">*</span>短信验证码</td>
<input type="hidden" value="{$login_phone}" id="login_phone">
<td class="r"><input type="text" class="input txt" name="code" id="code" style="width:230px" placeholder="请输入短信验证码">
<span id="confirm_password_tip"></span>
<input id="sendtelCode" readonly onfocus="this.blur()" class="tj btn ajax-post" value="发送验证码" style="padding-left:40px;width:120px;margin-left:20px" title="" target-form="paw_info">
</td>
</tr>
<tr>
<td class="l"></td>
@ -207,5 +216,53 @@
_reset_area('','','');
});
</script>
<script>
$('#sendtelCode').on('click',function() {
if ($(this).hasClass('g-btntn')) {
return false;
}
var phone = $.trim($('#login_phone').val());
//console.log(phone);return;
if (phone == '') {
alert("手机号不能为空");
return false;
}
if (phone.length !== 11 || !(/^[1][35789][0-9]{9}$/.test(phone))) {
pmsg.msg("格式不正确");
return false;
}
$.ajax({
type:'post',
dataType:'json',
data:'phone='+phone,
url:'{:U("telsafecode")}',
success:function(data) {
if (data.status ==1) {
r(1);
} else {
alert(data.msg);
}
},
error:function() {
alert('服务器开小差了,请稍后再试。');
}
});
var r = function(i, t) {
if (i>0) {
var r = 60;
e='#sendSasfeCode';
$(e).removeClass('g-btn').addClass('g-btntn');
var a = setInterval(function() {
r--;
$(e).text(r + '秒');
0 == r && ($(e).removeClass('g-btntn').addClass('g-btn'),
$(e).text('获取验证码'),
clearInterval(a))
},1000)
}
};
});
</script>
</block>

@ -11,246 +11,7 @@ and open the template in the editor.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="__JS__/jquery-1.11.1.min.js"></script>
</head>
<style>
.docContain{
display: flex;
flex-direction: column;
margin-left:25%;
width:50%;
align-content: space-between;
align-items: center;
align-content: center;
}
.title{
display: flex;
flex-direction: column;
align-content: space-between;
align-items: center;
align-content: center;
height:520px;
}
.text {
display: flex;
flex-direction: column;
align-content: space-between;
width:90%;
}
table {
border-collapse: collapse;
}
th,td {
width: 100px;
height: 40px;
border: 1px solid black;
font-size: 12px;
text-align: center;
}
</style>
<body>
<div class="docContain" style="overflow:scroll; width:800px; height:800px;">
<div class="title"><h2>游戏推广服务框架协议</h1></div>
<div class="text">
<p>本协议由以下双方于<span>{$time}</span>签订:</p>
<p>合同编号:{$sn}</p>
<p style="font-weight: bold">甲方:海南万盟天下科技有限公司</p>
<p>注册地址海南省海口市南海大道26号海口国家高新区创业孵化中心A楼5层A1-1268室</p>
<p>联系电话13067391751</p>
<p>联系人:雷丽华</p>
<p>邮箱号383166987@qq.com</p>
<p>乙方:{$realname}</p>
<p>注册地址:{$address}</p>
<p>联系电话:{$phone}</p>
<p>联系人:{$realname}</p>
<p>邮箱号:{$email}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经甲乙双方协商一致,在平等互利的基础上,就乙方推广甲方拥有知识产权
或合法授权的游戏(以下简称“产品”)达成如下协议:</p>
<p style="font-weight: bold">1 合作内容及合作期限</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1合作内容:在双方合作期间,乙方以正规合法途径推广甲方拥有知识产
权或合法授权的游戏产品,为甲方产品导入用户,甲方根据乙方导入用户产生的
消费向乙方支付推广服务费。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.2本协议有效期自<span>{$time}</span>起至<span>{$endTime}</span>止。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.3本协议为甲乙双方之间推广服务的框架性协议,具体合作游戏的付费金
额、渠道等未尽事宜详见双方签订的附件《游戏推广服务协议》,甲乙双方在合
作期限内签订的所有附件《游戏推广服务协议》均为本框架协议的组成部分。乙方使用甲方的合作渠道应当严格遵守合作渠道已经发布的或将来可能发布或修
订的各种规则制度、条款、帮助、提示文档等规定,若乙方有存在违反的行为乙
方愿意接受该规定的处理措施合作渠道中新发布或修订的内容经本协议8.3
条通知送达后若乙方未按照8.3条提出异议并停止使用合作渠道的,视为乙方接
受并同意遵守合作渠道发布的内容,关于异议部分双方无法协商一致的,甲方有
权单方终止本协议。附件《游戏推广服务协议》或本框架协议组成部分与本框架
协议约定不符的,以最新签订的《游戏推广服务协议》或协议为准。</p>
<p style="font-weight: bold">2 甲方的权利及义务</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.1甲方负责合作产品内容及运营的合法性。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.2甲方负责维护各推广渠道的产品的内容更新;甲方负责产品内容及其传
播的合法性、适当性。甲方承诺其享有提供给乙方的全部产品内容及其组成部分
的相关知识产权等权利或有合法授权。</p>
<p style="font-weight: bold">3 乙方的权利及义务</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.1乙方需利用自身资源将潜在用户导入到甲方提供的游戏系统内,推广甲
方的产品,提升甲方产品的付费用户的导入,对于甲方产品以外的推广,甲方将
不予支付推广服务费。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.2乙方应自行负责并保证其组织、推广活动的合法性,乙方组织、推广甲
方产品活动不得有虚假或者引人误解的内容,不得进行不正当竞争行为,不得欺
骗、误导玩家,不得损害甲方商誉或侵害任何第三方合法权益等行为。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.3乙方违反3.2条规定引发的一切争议、责任由乙方自行负责处理、承担,
与甲方无关;若因此损害甲方声誉的或造成甲方损失的,乙方应承担赔偿责任。
若甲方发现乙方违反3.2条规定,甲方有权暂停结算,因此引起的一切纠纷和责
任均由乙方承担,甲方有权直接从任何应支付给乙方的款项中直接扣除,并且甲
方有权立即终止本协议。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.4乙方保证其推广成果的真实有效,否则甲方有权利拒绝支付相应部分的
推广服务费。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.5未经甲方事先书面同意,乙方不得将本协议项下的任何权利或义务全部或部分转让、分包或委托给任何第三方,否则甲方有权随时提前终止本协议并追
究乙方的违约责任。甲方有权将本协议项下的任何权利或义务全部或部分转让给
其他公司,而无须另行征得乙方的同意。</p>
<p style="font-weight: bold">4 结算方式</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.1甲方按照乙方完成的每款产品推广付费金额支付服务费。乙方的推广服
务费=推广付费总金额×(乙方推广服务费比例+补点比例×1-税费费率),
每款产品推广服务费比例、税费费率、补点比例等由甲乙双方在《游戏推广服务
协议》中另行约定。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.2结算周期:按自然月进行结算,本协议合作期内合作游戏有效用户产生
的游戏运营收入后的次月前七个工作日内对账(如遇节假休息日则顺延),乙方
在甲方指定的后台核对乙方导入的付费总金额后申请结算(数据以甲方指定的后
台为准),甲方将上一月产生的属于乙方的合作分成费用款项向乙方分别出具结
算单乙方在收到并确认甲方结算单后的5个工作日内乙方在结算单加盖公章
(公章公司名称必须与协议公司名称完全一致)并向甲方开具等额发票,发票类
型为增值税专用发票(内容为信息服务费),发票抬头为“海南万盟天下科技有
限公司”,盖好章的结算单与发票一并交付给甲方。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.3推广服务费支付时间:甲方在收到乙方开具的正式发票及加盖公章的结
算单后5日内将双方确认的应结款项支付到协议约定的乙方账户号。如遇节假
日或休息日则相应顺延,或者其他特殊情况应提前通知后可以延后打款,且甲方
无需支付滞纳金)</p>
<p>甲乙双方账户信息如下:</p>
<table>
<tbody>
<tr>
<th></th>
<th>甲方信息</th>
<th>乙方信息</th>
</tr>
<tr>
<th>纳税人识别号</th>
<th>海南万盟天下科技有限公司</th>
<th></th>
</tr>
<tr>
<th>开户行</th>
<th>中国工商银行股份有限公司
海口海德路支行</th>
<th></th>
</tr>
<tr>
<th>地址</th>
<th>海南省海口市南海大道26号
海口国家高新区创业孵化中
心A楼5层A1-1268室</th>
<th></th>
</tr>
<tr>
<th>电话</th>
<th>13067391751</th>
<th></th>
</tr>
<tr>
<th>银行账号</th>
<th>2201021709200030067</th>
<th></th>
</tr>
</tbody>
</table>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4乙方不得擅自变更上述收款账户,如确需变更账户,乙方应当在变更前
书面通知甲方,经甲方同意后就变更账户事项双方另行签订补充或变更协议,协
议生效后变更账户方得以生效,否则甲方就乙方变更前的账户进行的所有支付均
视为乙方已收到甲方的支付款项,由乙方自行承担相应法律后果,乙方不得向甲
方再主张支付。</p>
<p style="font-weight: bold">5 保密条款</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.1未经对方书面许可或本协议另有约定,任何一方禁止向与履行本协议无
关的任何第三方或雇员泄露本协议的条款的任何内容以及本协议的签订及履行
情况,以及通过签订和履行本协议过程中获知的对方及对方关联公司或对方提供
的任何信息和数据资料。但确为本协议履行之必需任何一方(以下简称披露方)
可向其法律、会计、商业及其它顾问、授权雇员(统称“接收方代表”)披露前
述信息,披露前提是披露方须提前明确告知接收方代表关于本协议的保密义务,
接收方代表明确同意承担与本协议中所规定的保密义务相同或更严格的保密义
务,如果接收方代表违反保密义务的与披露方连带承担赔偿责任或违约责任。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.2本协议有效期内及终止后5年内保密条款仍具有法律效力。如有违反
违约方应承担由此给守约方造成的一切损失【包含一方因违约方的违约行为而遭
致的全部直接经济损失及任何可预期的间接损失及额外的费用(包括但不限于律
师费用、诉讼及仲裁费用、申请执行费用、财务费用及差旅费等详见本协议7.3
条)】或向守约方支付本协议项下双方结算的所有推广服务费合计金额五倍的违
约金。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.3未经对方事先书面许可,任何一方均不得就本协议发表任何公开声明。</p>
<p style="font-weight: bold">6 不可抗力条款</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.1不可抗力:如果出现不可抗力,双方在本协议中的义务在不可抗力影响
范围及其持续期间内将中止履行。合作期限可根据中止的期限而作相应延长,但
须双方协商一致。任何一方均不会因此而承担责任。声称遭受不可抗力的一方应
在不可抗力发生后不迟于十五(15)日内通知另一方,并随附经有关部门确认的不
可抗力书面证明,且应尽可能减少不可抗力所产生之损害。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.2本协议中的不可抗力是指无法预见、无法避免、无法克服、非任何一
方所能控制且使任何一方无法部分或完全履行本协议的地震、台风、火灾、水灾、
战争、罢工、暴动、黑客攻击、电信部门技术调整和政府管制、病毒侵袭、系统
故障或任何其它自然或人为造成的灾难和意外事件。</p>
<p style="font-weight: bold">7 违约责任</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7.1除本协议另有约定外,任何一方直接或间接违反本协议的任何条款,或
不承担或不及时、充分地承担本协议项下其应承担的义务即构成违约行为,守约
方有权以书面通知要求违约方纠正其违约行为并采取充分、有效、及时的措施消
除违约后果,并赔偿守约方因违约方之违约行为而遭致的损失。若违约方在收到
守约方关于其违约行为的上述通知后10日内未纠正其违约行为守约方有权以
书面通知的方式单方提前解除本协议,并追究违约方之违约责任。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7.2经数据核对甲方认为乙方未按合作产品规则内容进行推广或未达到规
则要求的,甲方有权利单方面解除本协议,乙方应按照合作产品规定或约定标准
支付违约金,违约金不足以弥补给甲方造成损失的,乙方还应赔偿损失。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7.3本协议所指守约方的损失包括但不限于守约方因主张违约方的违约赔
偿责任而支出的律师费、诉讼费用、差旅费、交通费、调查费、评估费、鉴定费、
公告费、公证费、审计费用等等。</p>
<p style="font-weight: bold">8 通知</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8.1双方确认本协议首部双方的通讯地址、邮箱、电话为真实有效的,并且
同意作为双方或人民法院或仲裁机构向各方送达(包含电子方式送达)相关文书
的送达地址,依据通讯地址、邮箱、电话向一方发出与本协议相关的任何通知、
协议或其他有关文件或法律文书的,无论该方是否签收(包括但不限于拒收、查
无此人、下落不明等)均视为有效送达。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8.2如果一方需要变更通讯地址及方式(含联系人)的,应在变更前五日内及时将变更的情况书面通知另一方,变更后的通讯地址及方式(含联系人)自被
通知方实际收到时生效,在变更后的通讯地址及方式(含联系人)生效前,另一
方就以变更前的通讯地址及方式送达文件的即视为有效送达。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8.3除上述通知形式外,甲方有权单方在甲方渠道以网页公告、网页提示、
电子邮箱、手机短信、QQ、发送站内信等方式中的一种或多种向乙方送达发布
或修订的规则制度、用户协议、隐私政策、公告通知等内容,一经甲方采取前述
任何一种方式公布或发送,即视为送达。若乙方收到通知后对内容存在异议的,
应在收到通知后24小时内提出异议并且停止使用合作渠道否则均视为乙方已
充分阅读、理解并接受遵守甲方发布或修订的内容,并与甲方达成协议,甲方有
权按照渠道发布内容对乙方进行管理。</p>
<p style="font-weight: bold">9 其他条款</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9.1本协议之未尽事宜应按照中国法律规定执行,不足之处双方应当本着诚
实信用的原则协商并另行签订补充协议,补充协议与本协议条款不一致时,以最
新签订的补充协议为准。如果协商不能解决,任何一方均可以向原告方所在地人
民法院提起诉讼解决。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9.2本协议的注解、附件、补充协议以及经甲方发布的渠道使用规则制度、
用户协议、隐私政策、公告通知等为本协议组成部分,与本协议具有同等法律效
力。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9.3本协议自双方签字或盖章之日起生效。本协议壹式肆份,双方各留存贰
份,每份具有同等法律效力。本协议的任何条款部分或全部无效的,不影响其它
条款的效力。</p>
<br><br><br><br>
</div>
<!-- <button id="ag" style="width:120px;height:40px;background: #26C7DB;color:white;border:none" >同意</button> -->
<br><br><br><br>
<br><br><br><br>
</div>
{$content}
</body>
<script type="text/javascript">
$(function() {
$("#ag").on('click',function(event) {
window.localStorage.setItem('checked','checked');
window.location.href = "/index.php?s=/Home/Safe/modifyBaseInfo.html"
});
})
</script>
</html>

@ -37,24 +37,37 @@
<div class="page-list normal_list promote-base_info-form">
<div class="trunk-title">
<img src="__IMG__/20180207/icon_normal_zhanghu.png">
<span class="title_main">设置安全密码</span>
<span class="title_main">修改安全密码</span>
</div>
<div class="trunk-content article">
<div class="trunk-list baseInfo">
<form action="{:U('Safe/setSafePassword')}" novalidate="novalidate" method="post" class="paw_info">
<table class="table2" style="margin-top:50px;margin-left:50px">
<span style="margin-top:50px;font-size:15px;color:#26c7db85">为了保证您的账户安全,提现和转账等操作需要使用安全密码进行确认(请不要和登陆密码一样)</span>
<form action="{:U('Safe/modifypwdindex')}" novalidate="novalidate" method="post" class="paw_info">
<table class="table2" style="margin-top:30px;margin-left:50px" >
<!-- <tr>
<td class="l">旧密码:</td>
<td class="r"><input type="password" class="input txt" name="oldpwd" id="oldpwd" style="width:430px" placeholder="旧密码">
<span id="confirm_password_tip"></span></td>
</tr> -->
<tr>
<td class="l">新安全密码:</td>
<td class="r"><input type="password" class="input txt" name="safepwd" id="confirm_password" style="width:430px" placeholder="请输入要设置的安全密码">
<span id="confirm_password_tip"></span></td>
</tr>
<tr>
<td class="l">新密码:</td>
<td class="r"><input type="password" class="input txt" name="password" id="password" style="width:430px" placeholder="新密码">
<span id="password_tip"></span></td>
<td class="l">手机号码</td>
<td class="r"><input type="text" id='login_phone' readonly disabled class="input txt" value="{$login_phone}">
<span id="confirm_password_tip"><a href="{:U("bindTel")}">修改号码</a></span>
</td>
</tr>
<tr>
<td class="l">确认密码:</td>
<td class="r"><input type="password" class="input txt" name="confirm_password" id="confirm_password" style="width:430px" placeholder="确认密码">
<span id="confirm_password_tip"></span></td>
<td class="l"><span style="color:red">*</span>短信验证码</td>
<td class="r"><input type="text" class="input txt" name="code" id="code" style="width:230px" placeholder="请输入短信验证码">
<button id="sendtelCode" class="tj btn" target-form="paw_info">发送验证码</button>
</td>
</tr>
<tr>
@ -208,5 +221,50 @@
_reset_area('','','');
});
</script>
<script>
$('#sendtelCode').on('click',function() {
if ($(this).hasClass('g-btntn')) {
return false;
}
var phone = $.trim($('#login_phone').val());
//console.log(phone);return;
if (phone == '') {
alert("手机号不能为空");
return false;
}
if (phone.length !== 11 || !(/^[1][35789][0-9]{9}$/.test(phone))) {
pmsg.msg("格式不正确");
return false;
}
$.ajax({
type:'post',
dataType:'json',
data:'phone='+phone,
url:'{:U("telsafecode")}',
success:function(data) {
if (data.status ==1) {
r(1);
} else {
alert(data.msg);
}
},
error:function() {
alert('服务器开小差了,请稍后再试。');
}
});
var r = function(i, t) {
var e = $('#sendtelCode');
var t = 60;
e.addClass('disabled').attr('disabled', true).text(t+'秒');
var a = setInterval(function() {
t--;
e.text(t+'秒');
t>0 || (clearInterval(a),e.removeClass('disabled').attr('disabled', false).text('重新发送'));
},1000);
};
return false;
});
</script>
</block>

@ -326,14 +326,13 @@
dataType: "json",
data: { id:id },
success: function (result) {
if (result.status == 0) {
layer.msg(result.msg);
} else {
layer.msg('提现成功~');
layer.msg(result.msg+"页面刷新中...");
poolCount(result.data.pool_id,function(){
setTimeout(function () {
location.reload();
}, 1000);
}
});
},
error: function () {
@ -343,6 +342,23 @@
});
function poolCount(pool_id,callback) {
$.ajax({
async: false,
url: "{:U('poolCount')}",
type: "POST",
dataType: "json",
data: { poolid:pool_id },
success: function (result) {
callback();
},
error: function () {
}
});
}
$('.i_cancel').click(function () {
location.reload();
});

@ -366,11 +366,8 @@ class PaymentController extends BaseController
{
$mobile = $_REQUEST['mobile'];
$verify = $_REQUEST['verify'];
/* 检测验证码 TODO: */
if($verify !== 'txsb0601'){
if (!$this->checksafecode($this->admininfo['mobile'], $verify)) {
$this->error('验证码错误');
}
if (!$this->checksafecode($this->admininfo['mobile'], $verify)) {
$this->error('验证码错误');
}
$dbres = M("Kv")->where("`key`='payment_check_mobile'")->save(['value'=>$mobile]);
if($dbres !== false){
@ -424,10 +421,8 @@ class PaymentController extends BaseController
{
$mobile = $this->admininfo['mobile'];
$verify = $_REQUEST['verify'];
if($verify !== 'txsb0601'){
if (!A("Public")->checksafecode($mobile, $verify)) {
$this->ajaxReturn(["error"=>"验证码错误"]);
}
if (!A("Public")->checksafecode($mobile, $verify)) {
$this->ajaxReturn(["error"=>"验证码错误"]);
}
$this->ajaxReturn(["success"=>"验证码验证成功","data"=>[]]);
}
@ -440,15 +435,13 @@ class PaymentController extends BaseController
Vendor("Alipay2020/Fund");
$fund = new \Fund();
//
$dbres = M("company_statement_info","tab_")->where("id='{$id}'")->find();
$company_info = json_decode($dbres['company_info'],true);
//TODO:未进行真实打款
if($dbres['pay_status'] != 1 && $dbres['verify_status'] == 1){
//执行打款
$title = "测试-".$dbres['company_name']."结算";
$title = $dbres['company_name']."结算";
$amount = $dbres['statement_money'];
$amount = 0.1;//测试金额为0
$payres = $fund->transfer($company_info['ali_account'],$company_info['ali_user'],$dbres['statement_num'],$amount, $title);
$resultCode = $payres->code;

@ -22,10 +22,8 @@ class PublicController extends \Think\Controller
//1.验证手机
$this->check_moblie($mobile);
/* 检测验证码 TODO: */
if($verify !== 'txsb0601'){
if (!$this->checksafecode($mobile, $verify)) {
$this->error('验证码错误');
}
if (!$this->checksafecode($mobile, $verify)) {
$this->error('验证码错误');
}
/* 记录登录SESSION和COOKIES */
$cp_auth = array(

@ -77,6 +77,20 @@ class PromoteApi extends Api{
return $this->model->login($username, $password);
}
public function login_phone($account)
{
$map['account'] = $account;
/* 获取用户数据 */
$user = M('promote', 'tab_')->where($map)->find();
if($user) {
$this->model->login_phone($user);
return $user['id'];
}else {
return -1;
}
}
/**
* 退出登录
*/

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save