master
ELF 5 years ago
commit 32bc839dcd

@ -0,0 +1,28 @@
<?php
namespace Admin\Controller;
use Think\Controller;
use Think\Exception;
/**
* 系统任务接口
* @author cz
*/
class CmdTasksController extends Controller {
public function run()
{
$params = D("CmdTasks")->getTask();
if(!$params){
echo('暂无任务');
}
try {
exec($params['params'], $resArr, $status);
$result = json_encode($resArr,JSON_UNESCAPED_UNICODE);
D("CmdTasks")->updateTask(['id'=>$params['id'],'status' => 2, 'end_time' => time(), 'result' => $result]);
} catch (Exception $e) {
D("CmdTasks")->updateTask(['id'=>$params['id'],'status' => 3, 'end_time' => time(), 'result' => $e->getMessage()]);
}
}
}

@ -19,13 +19,11 @@ class CompanyStatementController extends ThinkController
"9"=>"上游"
];
public $VerifyStatus=[
"-3"=>"撤销汇总",
"-2"=>"审核拒绝",
"-1"=>"管理员审批拒绝",
"-2"=>"撤销汇总",
"-1"=>"管理员审核拒绝",
"0"=>"未审批",
"1"=>"管理员审核通过",
"2"=>"审核通过",
"3"=>"已汇总"
"2"=>"已汇总"
];
public $ConfirmStatus=[
"0"=>"未发起",
@ -161,18 +159,6 @@ class CompanyStatementController extends ThinkController
}else{
$v["admin"] = '--';
}
if(isset($v['verify_log']['verify_user'])){
if($v['verify_status'] == -2){
$ts = "审核拒绝";
}else{
$ts = "审核通过";
}
$v["verify"]= "{$ts}({$v['verify_log']['verify_user']}) {$symbol} {$v['verify_log']['verify_time']}";
}else{
$v["verify"] = '--';
}
if(isset($v['confirm_log']['launch_user'])){
$ts = "已发起";
$v["launch"]= "{$ts}({$v['confirm_log']['launch_user']}) {$symbol} {$v['confirm_log']['launch_time']}";
@ -187,7 +173,7 @@ class CompanyStatementController extends ThinkController
$v["confirm"] = '--';
}
if(isset($v['verify_log']['pool_user'])){
if($v['verify_status'] == -3){
if($v['verify_status'] == -2){
$ts = "撤销汇总";
$v["pool"]= "{$ts}({$v['verify_log']['pool_user']}){$symbol} {$v['verify_log']['pool_time']}";
}else{
@ -320,6 +306,17 @@ class CompanyStatementController extends ThinkController
}
}
}
public function delStatement(){
if(!isset($_REQUEST['ids'])) $this->error("参数错误");
$ids = $_REQUEST['ids'];
$dbres = $this->DBModel->where("id in ({$ids}) and verify_status = 0")->delete();
addOperationLog(['op_type'=>2,'key'=>$ids,"op_name"=>"删除结算单",'url'=>U('lists')]);
$this->ajaxReturn(array(
'status' => 1,
"info"=>"删除成功"
));
}
//审批通过
public function adminAgree(){
$this->setVerifyStatus(0,1,"admin");
@ -327,12 +324,6 @@ class CompanyStatementController extends ThinkController
public function adminRefuse(){
$this->setVerifyStatus(0,-1,"admin");
}
public function verifyAgree(){
$this->setVerifyStatus(1,2,"verify");
}
public function verifyRefuse(){
$this->setVerifyStatus(1,-2,"verify");
}
public function launch(){
if(!isset($_REQUEST['ids'])) $this->error("参数错误");
@ -504,7 +495,7 @@ class CompanyStatementController extends ThinkController
}
foreach ($dbres as $k=>$v) {
if($v['verify_status'] != 2) continue;
if($v['verify_status'] != 1) continue;
if($v['company_belong'] == 9){
//上游
$this->setDf($datas['up'],$v);
@ -554,7 +545,7 @@ class CompanyStatementController extends ThinkController
M("company_lack_statement_info","tab_")->where("id in ({$v['del_lack_ids']})")->save(["is_pool"=>1]);
}
//修改结算单规则
$this->updatePoolVerifyStatus($v['statement_ids'],2,3,"pool",$v['statement_num']);
$this->updatePoolVerifyStatus($v['statement_ids'],1,2,"pool",$v['statement_num']);
}
$this->ajaxReturn(array(
'status' => 1,
@ -749,9 +740,9 @@ class CompanyStatementController extends ThinkController
}
}
//新增结算
//获取要结算的公司及日期
public function getNewStatement()
{
//获取要结算的公司及日期
$senddata = [
"up_company_id"=>[],
"dowm_company_id"=>[],
@ -765,8 +756,7 @@ class CompanyStatementController extends ThinkController
}else{
$dowm_company_id[]= $v['company_id'];
}
}
;
};
//获取上游
if(empty($up_company_id)){
$upwhere = "1=1";
@ -877,11 +867,10 @@ class CompanyStatementController extends ThinkController
case '-2':
case '-1':
case '0':
case '1':
case '2':
$optist = ["viewStatement","editStatement","addRemark","viewRemark","editRemark"];
break;
case '3':
case '1':
case '2':
$optist = ["viewStatement","addRemark","viewRemark","editRemark"];
break;
default:
@ -911,13 +900,12 @@ class CompanyStatementController extends ThinkController
$mentBtn = [
"adminAgree"=>"<a class='butn' id='adminAgree'>管理员审核通过</a>",
"adminRefuse"=>"<a class='butn' id='adminRefuse' style='background-color: red;'>管理员审核拒绝</a>",
"verifyAgree"=>"<a class='butn' id='verifyAgree'>审批通过</a>",
"verifyRefuse"=>"<a class='butn' id='verifyRefuse' style='background-color: red;'>审核拒绝</a>",
"pool"=>"<a class='butn' id='pool'>发起汇总</a>",
"updateStatement"=>"<a class='butn' id='updateStatement' style='background-color: green;'>重算金额</a>",
"export"=>"<a class='butn' id='export'>批量导出</a>",
"updateNewStatement"=>"<a class='butn' id='updateNewStatement' style='background-color: green;'>新增结算</a>",
"launch"=>"<a class='butn' id='launch'>对外发起</a>",
"delStatement"=>"<a class='butn' id='delStatement' style='background-color: red;'>批量删除</a>"
];
$resarr = [];
foreach ($mentBtn as $k => $v) {

@ -71,6 +71,7 @@ class CompanyStatementLackController extends ThinkController
->field("*")
->where($map)
->page($page,$row)
->order("id desc")
->select();
foreach($data as $k => &$v) {
@ -240,6 +241,30 @@ class CompanyStatementLackController extends ThinkController
"info"=>"汇总成功"
));
}
public function export(){
if(!isset($_REQUEST['ids'])) $this->error("参数错误");
$ids = $_REQUEST['ids'];
$dbres = $this->DBModel->where("id in ({$ids})")->select();
$is_export= false;
if (isset($_REQUEST['export']) && $_REQUEST['export']==1){
$is_export = true;
}
if($dbres[0]['company_type'] == 3){
//上游
$this->assign("title","上游公司未汇总");
A("CompanyStatementPool")->viewCpPool($dbres,$is_export);
}elseif($dbres[0]['company_type'] == 1){
//下游公司
$this->assign("title","下游公司未汇总");
A("CompanyStatementPool")->viewPcPool($dbres,$is_export);
}else{
$this->assign("title","下游个人未汇总");
A("CompanyStatementPool")->viewPuPool($dbres,$is_export);
}
}
protected function addStatementInfo($va,$ke,&$v,$k){
if($k=="ups" || $k=='downs' || $k =="users"){
$verify_status = 0;

@ -0,0 +1,254 @@
<?php
namespace Admin\Controller;
/**
* 线下打款
* @author cz
*/
class CompanyStatementOfflineController extends ThinkController
{
public $CompanyType = [
"1"=>"下游公司",
"2"=>"下游个人",
"3"=>"上游公司"
];
public $IsPayment = [
"1"=>"是",
"2"=>"否"
];
public $PayStatus=[
"-1"=>"打款失败",
"0"=>"未打款",
"1"=>"打款成功"
];
public function lists() {
$params = I('get.');
$page = $params['p'] ? intval($params['p']) : 1;
$row = $params['row'] ? intval($params['row']) : 10;
//权限分配
if(!IS_ROOT){
$this->OpAuthList= getModuleControllerAuth();
}
$this->assign('menubtn',$this->menuAuth());
$map = [
"c.verify_status"=>2,
"p.verify_status"=>["GT",1]
];
if (isset($_REQUEST['time_start']) && isset($_REQUEST['time_end'])) {
$time_start = strtotime($_REQUEST['time_start']);
$time_end = strtotime($_REQUEST['time_end'])+ 86399;
$map["_string"] = "(c.statement_begin_time BETWEEN {$time_start} AND {$time_end}) OR (c.statement_end_time BETWEEN {$time_start} AND {$time_end}) OR (c.statement_begin_time <= {$time_end} AND c.statement_end_time >= {$time_end})";
} elseif (isset($_REQUEST['time_start'])) {
$time_start = strtotime($_REQUEST['time_start']);
$map["_string"] = "(c.statement_begin_time >= {$time_start} ) OR (c.statement_end_time >= {$time_start})";
} elseif (isset($_REQUEST['time_end'])) {
$time_end = strtotime($_REQUEST['time_end'])+ 86399;
$map["_string"] = "(c.statement_begin_time <= {$time_end} ) OR (c.statement_end_time <= {$time_end})";
}
//其他
if(isset($_REQUEST['company_type'])){
$map['c.company_type'] = $_REQUEST['company_type'];
}
if(isset($_REQUEST['company_name'])){
$map['c.company_name'] =["LIKE","%{$_REQUEST['company_name']}%"];
}
if(isset($_REQUEST['statement_pool_num'])){
$map['p.statement_num'] =["LIKE","%{$_REQUEST['statement_pool_num']}%"];
}
//条件end
$data = M("company_statement_info","tab_")
->alias("c")
->field("c.*,p.statement_num,p.verify_status")
->where($map)
->join("tab_company_statement_pool as p ON c.pool_id = p.id")
->page($page,$row)
->order("id desc")
->select();
foreach($data as $k => &$v) {
$v['statement_begin_time'] = date('Y.m.d',$v['statement_begin_time']);
$v['statement_end_time'] = date('Y.m.d',$v['statement_end_time']);
$v['company_type_str'] = $this->CompanyType[$v['company_type']];
$v["valid"] = "{$v['statement_begin_time']}-{$v['statement_end_time']}";
$v["pay_status_str"] = $this->PayStatus[$v["pay_status"]];
$v["pay_info"] = json_decode($v['pay_info'], true);
if(isset($v['pay_info']['payment_user'])){
$v["payment"]= "{$v['pay_status_str']}({$v['pay_info']['payment_user']})<br>{$v['pay_info']['payment_time']}";
}else{
$v["payment"] = $v["pay_status_str"];
}
$v['oplist'] = $this->OpAuth($v);
}
$count = M("company_statement_info","tab_")->alias("c")->field("count(c.id) count,sum(c.statement_money) statement_money")->join("tab_company_statement_pool as p ON c.pool_id = p.id")->where($map)->find();
// dd($count);
$params['p'] = $page;
$params['row'] = $row;
$page = set_pagination($count['count'], $row, $params);
if ($page) {
$this->assign('_page', $page);
}
// dd($data);
$this->assign('data',$data);
$this->assign('count',$count);
$this->assign('CompanyType',$this->CompanyType);
$this->display();
}
public function doPayment()
{
if(!isset($_REQUEST['ids'])) $this->error("参数错误");
$ids = $_REQUEST['ids'];
//获取所有的母单id
$companyStatementInfo = M("company_statement_info","tab_");
$statementPool = $companyStatementInfo->where("id in ($ids) and pay_status <> 1")->field("pool_id,count(id) count")->group("pool_id")->select();
$poolInfo = [];
foreach ($statementPool as $k => $v) {
$poolInfo[$v['pool_id']] = $v['count'];
}
unset($statementPool);
//修改info
$saveData = [
"pay_type"=>3,
"pay_status"=>1,
"pay_info"=>json_encode(["payment_user"=>$_SESSION['onethink_admin']['user_auth']["username"],"payment_time"=>date("Y-m-d H:i:s")])
];
$ires = $companyStatementInfo->where("id in ($ids)")->save($saveData);
//获取母单未支付完成订单
$poolIds = implode(",",array_keys($poolInfo));
$poolInfo = $companyStatementInfo->where("pool_id in ($poolIds) and pay_status <> 1")->field("pool_id,count(id) count")->group("pool_id")->select();
//全部就打款成功,否则打款中
$companyStatementPool = M("company_statement_pool","tab_");
foreach ($poolInfo as $k => $v) {
if($v['count'] == $poolInfo[$v['pool_id']]){
//打款成功
$this->setOneVerifyStatus(4,"payment",$v['pool_id']);
}else{
//打款中
$this->setOneVerifyStatus(3,"payment",$v['pool_id']);
}
}
$this->ajaxReturn(array(
'status' =>1,
"info"=>"打款确认成功"
));
}
public function viewStatement()
{
if(!isset($_REQUEST['id'])){
$this->error('参数错误');
}
$id = $_REQUEST['id'];
$is_export= false;
if (isset($_REQUEST['export']) && $_REQUEST['export']==1){
$is_export = true;
}
//获取基本信息
$dbres = M("company_statement_info","tab_")->where("id='{$id}'")->select();
$title = $dbres[0]['company_name'];
$this->assign("title",$title);
if($dbres[0]['company_type'] == 3){
//上游
A("CompanyStatementPool")->viewCpPool($dbres,$is_export);
}elseif($dbres[0]['company_type'] == 1){
//下游公司
A("CompanyStatementPool")->viewPcPool($dbres,$is_export);
}else{
A("CompanyStatementPool")->viewPuPool($dbres,$is_export);
}
}
public function export(){
if(!isset($_REQUEST['ids'])) $this->error("参数错误");
$ids = $_REQUEST['ids'];
$dbres = M("company_statement_info","tab_")->where("id in ({$ids})")->select();
$is_export= false;
if (isset($_REQUEST['export']) && $_REQUEST['export']==1){
$is_export = true;
}
if($dbres[0]['company_type'] == 3){
//上游
$this->assign("title","上游公司线下打款");
A("CompanyStatementPool")->viewCpPool($dbres,$is_export);
}elseif($dbres[0]['company_type'] == 1){
//下游公司
$this->assign("title","下游公司线下打款");
A("CompanyStatementPool")->viewPcPool($dbres,$is_export);
}else{
$this->assign("title","下游个人线下打款");
A("CompanyStatementPool")->viewPuPool($dbres,$is_export);
}
}
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']=$_SESSION['onethink_admin']['user_auth']["username"];
$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;
M("company_statement_pool","tab_")->save($dbres);
}
public function OpAuth($info)
{
$id = $info['id'];
$type = $info['company_type'];
//原始列表
$opBtn = [
"viewStatement"=>"<a class='confirm viewStatement' data-id='{$id}' data-companytype='{$type}'>查看</a>",
];
//操作对应菜单
$optist = ["viewStatement"];
$resarr = [];
foreach ($optist as $k => $v) {
if(IS_ROOT){
$resarr[] = $opBtn[$v];
}else{
if(in_array($v,$this->OpAuthList)){
$resarr[] = $opBtn[$v];
}
}
}
return $resarr;
}
public function menuAuth()
{
$mentBtn = [
"doPayment"=>"<a class='butn' id='doPayment'>打款确认</a>",
"export"=>"<a class='butn' id='export'>批量导出</a>"
];
$resarr = [];
foreach ($mentBtn as $k => $v) {
if(IS_ROOT){
$resarr[] = $v;
}else{
if(in_array($k,$this->OpAuthList)){
$resarr[] = $v;
}
}
}
return $resarr;
}
}

@ -151,24 +151,16 @@ class CompanyStatementPoolController extends ThinkController
if(isset($v['verify_log']['payment_user'])){
if($v['verify_status'] == -2){
$ts = "拒绝打款";
$v["payment"]= "{$ts}({$v['verify_log']['payment_user']}){$symbol} {$v['verify_log']['payment_time']}";
}elseif($v['verify_status'] == 2){
$ts = "待打款";
$v["payment"]= "{$ts}({$v['verify_log']['payment_user']}){$symbol} {$v['verify_log']['payment_time']}";
}elseif($v['verify_status'] == 3){
$ts = "打款中";
$v["payment"]= "{$ts}({$v['verify_log']['payment_user']}){$symbol} {$v['verify_log']['payment_time']}";
}elseif($v['verify_status'] == 4){
if($v['is_payment']==1){
$ts="线上打款成功";
}else{
$ts="线下打款成功";
}
$v["payment"]= "{$ts}({$v['verify_log']['payment_user']}){$symbol} {$v['verify_log']['payment_time']}";
$ts="打款成功";
}elseif($v['verify_status'] == 5){
$ts="无需打款";
$v["payment"]= "{$ts}({$v['verify_log']['payment_user']}){$symbol} {$v['verify_log']['payment_time']}";
}
$v["payment"]= "{$ts}({$v['verify_log']['payment_user']}){$symbol} {$v['verify_log']['payment_time']}";
}else{
$v["payment"] = '--';
}
@ -248,34 +240,52 @@ class CompanyStatementPoolController extends ThinkController
}
$cline = $line+1;
if($is_export){
$v['sum_money_exp'] = "=";
$v['statement_money'] = "=";
}
$row = 0;
foreach($v['statement_info'] as $ke=>&$va){
$line ++;
if(isset($va['ratio'])){
$va['increment_ratio'] = 0;
}else{
$va['ratio'] = 0;
}
if($is_export){
//J3*(K3+L3)+M3-N3
if($va['statement_type'] > 0){ //罚款服务器费用
$va['sum_money'] = "=J{$line}";
$va['row'] = count($va['game_list']);
$row += count($va['game_list']);
foreach($va['game_list'] as $key=>&$val){
$line ++;
if(isset($val['ratio'])){
$val['increment_ratio'] = 0;
}else{
$va['sum_money'] = "=J{$line}*(K{$line}+L{$line})+M{$line}-N{$line}";
$val['ratio'] = 0;
}
if($is_export){
$val['sum_money'] = "=J{$line}*(K{$line}+L{$line})";
$v['statement_money'] .= "M{$line}+";
}else{
$count['platform_amount'] += $val['pay_amount'];
$count['sum_money'] += $val['sum_money'];
}
}else{
$count['platform_amount'] += $va['pay_amount'];
$count['sum_money'] += $va['sum_money'];
}
// if($is_export){
// //J3*(K3+L3)+M3-N3
// if($va['statement_type'] > 0){ //罚款服务器费用
// $va['sum_money'] = "=J{$line}";
// }else{
// $va['sum_money'] = "=J{$line}*(K{$line}+L{$line})+M{$line}-N{$line}";
// }
// }else{
// $count['platform_amount'] += $va['pay_amount'];
// $count['sum_money'] += $va['sum_money'];
// }
}
$v['row'] = $row;
if($is_export){
$v['statement_money'] .="N{$cline}-O{$cline}";
}
$v['statement_count'] = count($v['statement_info']);
}
if($is_export){
$count["platform_amount"] = "=SUM(J2:J".$line.")";
$count["sum_money"] = "=SUM(O2:O".$line.")";
$count["sum_money"] = "=SUM(P2:P".$line.")";
}
// dd($infolist);
$this->assign("data",$infolist);
$this->assign("count",$count);
$this->assign("is_export",$is_export);
@ -568,11 +578,16 @@ class CompanyStatementPoolController extends ThinkController
$v['company_info'] = json_decode($v['company_info'],true);
$v['company_info']['ali_user'] ?? '';
$v['company_info']['ali_account'] ?? '';
$v['verify_status_str'] = $this->InfoVerifyStatus[ $v['verify_status']];
if($v['verify_status'] == 2){
$v['is_payment'] = 2;
}else{
$v['is_payment'] = 1;
}
$v['verify_status_str'] = $this->PayStatus[$v['pay_status']];
if($v['verify_status'] == 1){
$v['verify_status_str'] = $this->PayStatus[$v['pay_status']];
if($v['pay_status'] == 1){
$v['pay_type'] = $v['pay_type'] == 1 ? "提现" :"线上打款";
$v['verify_status_str'] .= ("/". $v['pay_type']);
@ -856,7 +871,7 @@ class CompanyStatementPoolController extends ThinkController
$v['verify_log']['pool_user']=$this->admininfo["username"];
$v['verify_log']['pool_time']=date("Y.m.d H:i:s");
$v['verify_log'] = json_encode($v['verify_log']);
$v['verify_status']=-3;
$v['verify_status']=-2;
$stres = M("company_statement","tab_")->save($v);
if($stres === false){
M()->rollback();
@ -953,10 +968,9 @@ class CompanyStatementPoolController extends ThinkController
default:
break;
}
//
if($info['platform_amount'] <= 0 && $info['company_type'] != 2){
$optist = array_diff($optist, ["viewPool"]);
}
// if($info['platform_amount'] <= 0 && $info['company_type'] != 2){
// $optist = array_diff($optist, ["viewPool"]);
// }
//个人重算,上游撤销
if($re_op){

@ -537,16 +537,16 @@ class CompanyStatementSetController extends Controller {
$pc =[];
$Promote = M("Promote","tab_");
foreach ($tmpp as $v) {
//获取会长的支付宝账号
$p_map = [
"company_id"=>$v['id'],
"withdraw_done"=>1
];
$pres = $Promote->field("alipay_account,alipay_real_name")->where($p_map)->find();
if(!empty($pres) && !empty($pres['alipay_account']) && !empty($pres['alipay_real_name'])){
$v['ali_user'] = $pres['alipay_real_name'];
$v['ali_account'] = $pres['alipay_account'];
}
// //获取会长的支付宝账号
// $p_map = [
// "company_id"=>$v['id'],
// "withdraw_done"=>1
// ];
// $pres = $Promote->field("alipay_account,alipay_real_name")->where($p_map)->find();
// if(!empty($pres) && !empty($pres['alipay_account']) && !empty($pres['alipay_real_name'])){
// $v['ali_user'] = $pres['alipay_real_name'];
// $v['ali_account'] = $pres['alipay_account'];
// }
if($v['has_ratio']){
$v['turnover_ratio'] = json_decode($v['turnover_ratio'],true);
}
@ -562,7 +562,9 @@ class CompanyStatementSetController extends Controller {
}
unset($tmpp);
unset($js_id);
$this->getPromoteCompanySpend($pcList,array_unique(array_keys($pcList)),$begintime,$endtime);
$this->getPromoteCompanySpend($pcList,array_unique(array_keys($pcList)),$begintime,$endtime);
//数据整合
$verify_log=json_encode(["create_user"=>"system","create_time"=>date("Y-m-d H:i:s")]);
$StatementDb = M("CompanyStatement","tab_");
@ -614,43 +616,85 @@ class CompanyStatementSetController extends Controller {
$company_belong = $pc[$add_data['company_id']]['company_belong'];
$add_data['company_belong']=$company_belong;
$add_data['company_type']=$pc[$add_data['company_id']]['company_type'];
if(!isset($v['list'])){continue;}
//游戏统计
foreach($v['list'] as $ke=>$va){
if(!isset($v['game_list'])){continue;}
//获取多段比例
$game_ratio_list = D("CompanyGameRatio")->getPromoteCompanyGameRatio($add_data['company_id'],$v['game_ids'],$begintime,$endtime,$company_belong);
foreach ($game_ratio_list as $t_game_id => $t_game_ratio) {
$game =[];
$game['pay_amount'] =$va['pay_amount'];
$game['game_name'] =$va['game_name'];
//获取比例
$game['relation_game_id']=$va['relation_game_id'];
if($type == 1){
$tratio = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],true,$company_belong);
$tratio += $company_ratio;
}elseif($type == 0){
$tratio = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],false,$company_belong);
}else{
//补点
$tratio1 = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],true,$company_belong);;
$tratio2 = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],false,$company_belong);
$tratio = $tratio1-$tratio2+$company_ratio;
if($tratio <= 0){ continue;}
}
$tratio = $tratio-0;
if($v['type'] == 2){
$game['increment_ratio']=$tratio;
}else{
$game['ratio']=$tratio;
}
$add_data['pay_amount'] += $va['pay_amount'];
$game['game_name'] =$v['game_list'][$t_game_id]['game_name'];
$game['relation_game_id'] =$v['game_list'][$t_game_id]['relation_game_id'];
$game_all_payment = $v['game_list'][$t_game_id]['pay_amount'];
// dump($tratio);
$game['fax_ratio']=$fax_ratio-0;
$game['statement_type']=0;
$game['sum_money']=round($va['pay_amount']*$tratio*(100-$fax_ratio)/(100*100),2);//结算金额=平台总额*(分成比例+补点比例)*(1-税费费率)
$add_data['statement_money'] += $game['sum_money'];
if(count($t_game_ratio) == 1){
$tmp_game_ratio = $t_game_ratio[0];
$game['pay_amount'] =$game_all_payment;
$game['pay_amount'] -=0;
$game['statement_begin_time']=$statement_begin_time;
$game['statement_end_time']=$statement_end_time;
$add_data['pay_amount'] += $game['pay_amount'];
$game['fax_ratio']=$fax_ratio;
if($type == 1){
$tratio =$this->getTurnoverRatio($game_all_payment,$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']);
$tratio += $company_ratio;
}elseif($type == 0){
$tratio = $tmp_game_ratio['ratio'];
}else{
//补点
$tratio1 =$this->getTurnoverRatio($game_all_payment,$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']);
$tratio2 =$tmp_game_ratio['ratio'];
$tratio = $tratio1-$tratio2+$company_ratio;
if($tratio <= 0){ continue;}
}
if($v['type'] == 2){
$game['increment_ratio']=$tratio;
}else{
$game['ratio']=$tratio;
}
$game['statement_begin_time']=$statement_begin_time;
$game['statement_end_time']=$statement_end_time;
$game['statement_type']=0;
$add_data['statement_info'][] = $game;
$game['sum_money']=round($game['pay_amount']*$tratio*(100-$fax_ratio)/(100*100),2);//结算金额=平台总额*(分成比例+补点比例)*(1-税费费率)
$add_data['statement_money'] += $game['sum_money'];
$add_data['statement_info'][] = $game;
}else{
// dd($t_game_ratio);
for ($i=0; $i < count($t_game_ratio); $i++) {
$tmp_game_ratio = $t_game_ratio[$i];
$temp_game = $game;
$temp_game['statement_begin_time']=date("Y.m.d",$tmp_game_ratio['begintime']);
$temp_game['statement_end_time']=date("Y.m.d",$tmp_game_ratio['endtime']);
// dd($t_game_id);
$temp_game['pay_amount'] =$this->getRelationGameIdSpend($add_data['company_id'],$t_game_id,$tmp_game_ratio['begintime'],$tmp_game_ratio['endtime']);
$temp_game['pay_amount'] -=0;
$add_data['pay_amount'] += $temp_game['pay_amount'];
if($type == 1){
$tratio =$this->getTurnoverRatio($game_all_payment,$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']);
$tratio += $company_ratio;
}elseif($type == 0){
$tratio = $t_game_ratio['ratio'];
}else{
//补点
$tratio1 =$this->getTurnoverRatio($game_all_payment,$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']);
$tratio2 =$tmp_game_ratio['ratio'];
$tratio = $tratio1-$tratio2+$company_ratio;
if($tratio <= 0){ continue;}
}
if($v['type'] == 2){
$temp_game['increment_ratio']=$tratio;
}else{
$temp_game['ratio']=$tratio;
}
$temp_game['sum_money']=round($temp_game['pay_amount']*$tratio*(100-$fax_ratio)/(100*100),2);//结算金额=平台总额*(分成比例+补点比例)*(1-税费费率)
$add_data['statement_money'] += $temp_game['sum_money'];
$add_data['statement_info'][] = $temp_game;
}
}
}
$add_data['platform_amount'] = $add_data['pay_amount'];
if($type < 2){
@ -785,12 +829,87 @@ class CompanyStatementSetController extends Controller {
$res[$company_id][$v['relation_game_id']]= $v;
}
}
}
}
foreach($res as $k=>$v){
$pcList[$k]["pay_amount"] = $v['pay_amount'];
unset($v['pay_amount']);
$pcList[$k]['list'] = $v;
$pcList[$k]['game_list'] = $v;
$pcList[$k]['game_ids'] = implode(",",array_keys($pcList[$k]['game_list']));
}
}
//获取推广公司推广金额
protected function getPuPromoteSpend(&$pcList,$idarr,$begintime,$endtime){
$res = [];
//获取推广员
if(count($idarr) == 0){return $res;}
$Promote = M("Promote","tab_");
$Spend = M("Spend","tab_");
$spenMap = [
"s.pay_status"=>1,
"s.payed_time"=>['between', [$begintime,$endtime]],
];
for ($i=0; $i <count($idarr); $i++) {
$company_id = $idarr[$i];
$pres = $Promote->field("id,account")->where("company_id = '{$company_id}'")->select();
if(empty($pres)){continue;}
$spenMap['s.promote_id']=["in",array_column($pres,"id")];
$promote_a = [];
foreach($pres as $key=>$value){
$promote_a[$value['id']] = $value['account'];
}
unset($pres);
//获取支付记录
$list = $Spend
->alias('s')
->field("sum(s.pay_amount) pay_amount,s.game_id,g.relation_game_id,g.relation_game_name game_name,IFNULL(if(substring_index(substring_index(promote.`chain`,'/',2),'/',-1)='',s.promote_id,substring_index(substring_index(promote.`chain`,'/',2),'/',-1)),0) p_id")
->where($spenMap)
->group('p_id,game_id')
->join("tab_promote promote ON s.promote_id = promote.id","left")
->join("left join tab_game g on s.game_id = g.id")
->select();
if(empty($list)){continue;}
$game = [];
foreach($list as $k=>$v){
if(isset($game[$v['relation_game_id']])){
$game[$v['relation_game_id']]['pay_amount'] += $v['pay_amount'];
}else{
$game[$v['relation_game_id']]['pay_amount'] = $v['pay_amount'];
}
}
$pcList[$company_id]['game_ids'] = implode(",",array_keys($game));
foreach($list as $k=>$v){
try {
$res[$company_id]["pay_amount"] += $v['pay_amount'];
} catch (\Throwable $th) {
$res[$company_id]["pay_amount"] = $v['pay_amount'];
}
$p_account = $promote_a[$v['p_id']];
if(isset($res[$company_id][$p_account][$v['relation_game_id']])){
//
$res[$company_id][$p_account][$v['relation_game_id']]['pay_amount'] += $v['pay_amount'];
}else{
unset($v['game_id']);
$res[$company_id][$p_account][$v['relation_game_id']]= $v;
$res[$company_id][$p_account][$v['relation_game_id']]['all_pay_amount']= $game[$v['relation_game_id']]['pay_amount'];
$res[$company_id][$p_account][$v['relation_game_id']]['game_type_name'] = $this->getGameTypeName($v['relation_game_id']);
}
}
}
foreach($res as $k=>$v){
$pcList[$k]["pay_amount"] = $v['pay_amount'];
unset($v['pay_amount']);
foreach($v as $ke=>$va){
$tmp = [
"account"=>$ke,
'game_list'=>$va
];
$pcList[$k]['list'][] = $tmp;
}
}
}
public function promoteUserPool($type,$stime,$recount = false){
@ -908,7 +1027,8 @@ class CompanyStatementSetController extends Controller {
$pc[$v['id']]['is_payment']=$pcList[$v['id']]['is_payment'];
}
unset($tmpp);
$this->getPromoteCompanySpend($pc,array_unique(array_keys($pc)),$begintime,$endtime);
$this->getPuPromoteSpend($pc,array_unique(array_keys($pc)),$begintime,$endtime);
$StatementDb = M("CompanyStatement","tab_");
$statement_begin_time = date("Y.m.d",$begintime);
@ -930,8 +1050,15 @@ class CompanyStatementSetController extends Controller {
$countdata = &$user;
$v['statement_money'] = 0;
$v['pay_amount'] = 0;
$v['fine'] = 0;
$v['reward'] = 0;
if($type < 2 && $RewardRecordRes){
$v['fine'] = $RewardRecordRes['fine'];
$v['reward'] = $RewardRecordRes['reward'];
$v['statement_money'] -= $v['fine'];
$v['statement_money'] += $v['reward'];
}else{
$v['fine'] = 0;
$v['reward'] = 0;
}
$v['platform_amount'] = 0;
if(!isset($v['list'])){continue;}
$company_belong = $pc[$v['id']]['company_belong'];
@ -949,59 +1076,91 @@ class CompanyStatementSetController extends Controller {
$v['pay_amount'] -= $v['server_fee'];
$v['statement_money'] -= $v['server_fee'];
}
}
}
$promoteCompanyGameRatio = D("CompanyGameRatio")->getPromoteCompanyGameRatio($v['id'],$v['game_ids'],$begintime,$endtime,$company_belong);
foreach($v['list'] as $ke=>$va){
$game =[];
$game['pay_amount'] =$va['pay_amount'];
$game['game_name'] =$va['game_name'];
//获取比例
$game['relation_game_id']=$va['relation_game_id'];
$game['game_type_name'] = $this->getGameTypeName($va['relation_game_id']);
$templist = $va['game_list'];
$va['game_list'] = [];
foreach($templist as $p_id => $p_info){
$ratioCount = count($promoteCompanyGameRatio[$p_info['relation_game_id']]);
$isMoreRatio = $ratioCount > 1 ? true : false;
if(!$isMoreRatio){
$tmp_game_ratio = $promoteCompanyGameRatio[$p_info['relation_game_id']][0];
if($type == 1){
$tratio =$this->getTurnoverRatio($p_info['all_pay_amount'],$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']);
$tratio += $company_ratio;
}elseif($type == 0){
$tratio = $tmp_game_ratio['ratio'];
}else{
//补点
$tratio1 =$this->getTurnoverRatio($p_info['all_pay_amount'],$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']);
$tratio2 =$tmp_game_ratio['ratio'];
$tratio = $tratio1-$tratio2+$company_ratio;
if($tratio <= 0){ continue;}
}
$tratio -= 0;
if($type == 2){
$p_info['increment_ratio']=$tratio;
}else{
$p_info['ratio']=$tratio;
}
if($type == 1){
$tratio = getGamePromoteCompanyRadio($v['id'],$va['relation_game_id'],$endtime,$va['pay_amount'],true,$company_belong);
$tratio += $company_ratio;
}elseif($type == 0){
$tratio = getGamePromoteCompanyRadio($v['id'],$va['relation_game_id'],$endtime,$va['pay_amount'],false,$company_belong);
}else{
//补点
$tratio1 = getGamePromoteCompanyRadio($v['id'],$va['relation_game_id'],$endtime,$va['pay_amount'],true,$company_belong);;
$tratio2 = getGamePromoteCompanyRadio($v['id'],$va['relation_game_id'],$endtime,$va['pay_amount'],false,$company_belong);
$tratio = $tratio1-$tratio2+$company_ratio;
if($tratio <= 0){
continue;
}
}
if($type == 2){
$game['increment_ratio']=$tratio;
}else{
$game['ratio']=$tratio;
}
$v['pay_amount'] += $va['pay_amount'];
$v['platform_amount'] += $va['pay_amount'];
//判断是否是个人
if($type < 2){
//非补点
if($RewardRecordRes){
$rrfres = $RewardRecordRes[$va['relation_game_id']];
$v['platform_amount'] += $p_info['pay_amount'];
$p_info['sum_money']=round($p_info['pay_amount']*$tratio/100,2); //个人等于 结算金额*比例
$v['pay_amount'] += $p_info['sum_money'];
$v['statement_money'] += $p_info['sum_money'];
$p_info['fax_ratio']=$fax_ratio;
$p_info['statement_begin_time']=$statement_begin_time;
$p_info['statement_end_time']=$statement_end_time;
$p_info['statement_type']=0;
$va['game_list'][] = $p_info;
}else{
$rrfres = [
'reward_count'=>0,
'fine_count'=>0,
];
}
$game['reward'] = $rrfres['reward_count'];
$game['fine'] = $rrfres['fine_count'];
}
$game['sum_money']=round($va['pay_amount']*$tratio/100,2)+$game['reward']-$game['fine']; //个人等于 结算金额*比例-罚款+奖励
$v['statement_money'] += $game['sum_money'];
for ($i=0; $i < $ratioCount; $i++) {
$temp_game = [];
$tmp_game_ratio = $promoteCompanyGameRatio[$p_info['relation_game_id']][$i];
if($type == 1){
$tratio =$this->getTurnoverRatio($p_info['all_pay_amount'],$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']);
$tratio += $company_ratio;
}elseif($type == 0){
$tratio = $tmp_game_ratio['ratio'];
}else{
//补点
$tratio1 =$this->getTurnoverRatio($p_info['all_pay_amount'],$tmp_game_ratio['ratio'],$tmp_game_ratio['turnover_ratio']);
$tratio2 =$tmp_game_ratio['ratio'];
$tratio = $tratio1-$tratio2+$company_ratio;
if($tratio <= 0){ continue;}
}
$tratio -= 0;
if($type == 2){
$temp_game['increment_ratio']=$tratio;
}else{
$temp_game['ratio']=$tratio;
}
$temp_game['pay_amount'] = $this->getRelationGameIdPromoteSpend($p_info["p_id"],$p_info['relation_game_id'],$tmp_game_ratio['begintime'],$tmp_game_ratio['endtime']);
$temp_game['pay_amount'] -=0;
$game['fax_ratio']=$fax_ratio;
$v['platform_amount'] += $temp_game['pay_amount'];
$temp_game['sum_money']=round($temp_game['pay_amount']*$tratio/100,2); //个人等于 结算金额*比例
$v['pay_amount'] += $temp_game['sum_money'];
$v['statement_money'] += $temp_game['sum_money'];
$game['statement_begin_time']=$statement_begin_time;
$game['statement_end_time']=$statement_end_time;
$game['statement_type']=0;
$v['statement_info'][] = $game;
$temp_game['fax_ratio']=$fax_ratio-0;
$temp_game['statement_begin_time']=date("Y.m.d",$tmp_game_ratio['begintime']);
$temp_game['statement_end_time']=date("Y.m.d",$tmp_game_ratio['endtime']);
$temp_game['statement_type']=0;
$temp_game['relation_game_id']=$p_info["relation_game_id"];
$temp_game['game_name']=$p_info["game_name"];
$temp_game['game_type_name']=$p_info["game_type_name"];
$temp_game['all_pay_amount']=$p_info["all_pay_amount"];
$va['game_list'][] = $temp_game;
}
}
}
$v['statement_info'][] = $va;
}
$company_info = [
'account'=>$v['account'],
@ -1014,7 +1173,7 @@ class CompanyStatementSetController extends Controller {
"ali_user"=>$v['ali_user'],
"ali_account"=>$v['ali_account']
];
if($v['pay_amount'] < 300){
if($v['platform_amount'] < 300){
$lackcompany =[
"company_id"=>$k,
"company_type"=>2,
@ -1048,10 +1207,22 @@ class CompanyStatementSetController extends Controller {
$v['fine'] += $val['fine'];
$v['reward'] += $val['reward'];
$v['platform_amount'] += $val['platform_amount'];
$v['statement_info'] = array_merge($v['statement_info'],json_decode($val['statement_info'],true));
$last_names = array_column($v['statement_info'],'game_name');
array_multisort($last_names,SORT_DESC,SORT_STRING,$v['statement_info']);
$t_statement_info = json_decode($val['statement_info'],true);
$statement_info = [];
foreach($t_statement_info as $p=>$info){
$statement_info[$info['account']] = $info['game_list'];
}
foreach($v['statement_info'] as $p=>&$info){
if(isset($statement_info[$info['account']])){
$info['game_list'] = array_merge($statement_info[$info['account']],$info['game_list']);
unset($statement_info[$info['account']]);
}
}
if(!empty($statement_info)){
foreach($statement_info as $p=>$info){
$v['statement_info'][] = ["account"=>$p,"game_list"=>$info];
}
}
}
}
@ -1144,7 +1315,7 @@ class CompanyStatementSetController extends Controller {
{
$pl = M("promote_company","tab_")
->alias('pc')
->field("p.account,p.company_relation,IFNULL(s.nickname,'admin') nickname")
->field("p.account,p.company_relation,IFNULL(s.real_name,'-') nickname")
->join("left join (select company_id,account,company_relation,admin_id from tab_promote where level = 1 group by company_id ) p on p.company_id = pc.id")//获取会长
->join("left join sys_member s on s.uid = p.admin_id")
->where("pc.id = {$company_id}")
@ -1183,9 +1354,7 @@ class CompanyStatementSetController extends Controller {
return $ratio;
}
/**
* 获取公司比例加成
* @param [type] $paymount 支付金额
* @param [type] $turnover_ratio 梯度
* 获取公司奖罚
*/
protected function getPromoteUserRewardRecord($cpmpamy_id,$begintime,$endtime)
{
@ -1199,24 +1368,99 @@ class CompanyStatementSetController extends Controller {
$rfres = M("RewardDetail","tab_")
->alias("d")
->field("
IFNULL(SUM(CASE WHEN type = 1 THEN amount ELSE 0 END),0) as reward_count,
IFNULL(SUM(CASE WHEN type = 2 THEN amount ELSE 0 END),0) as fine_count,
r.relation_game_id
")
IFNULL(SUM(CASE WHEN type = 1 THEN amount ELSE 0 END),0) as reward,
IFNULL(SUM(CASE WHEN type = 2 THEN amount ELSE 0 END),0) as fine")
->where($rrmap)
->join("tab_reward_record as r on d.record_id = r.id")
->group("record_id,company_id")
->select();
->group("company_id")
->find();
if(empty($rfres)){
return false;
}else{
$s = [];
foreach($rfres as $k=>$v){
$s[$v['relation_game_id']] = $v;
$rfres;
}
}
/**
* 获取比例
*
* @param [type] $amount 总额
* @param [type] $ratio 默认比例
* @param [type] $turnover_ratio 比例梯度
* @return void
*/
protected function getTurnoverRatio($amount,$ratio,$turnover_ratio)
{
if(empty($turnover_ratio)){
return $ratio;
}
if(!is_array($turnover_ratio)){
$turnover_ratio = json_decode($turnover_ratio,true);
}
foreach($turnover_ratio as $k=>$v){
if($v['instanceof'] == 1){
if($amount >= $v['turnover']){
$ratio = $v['ratio'];
}
}else{
if($amount > $v['turnover']){
$ratio = $v['ratio'];
}
}
return $s;
}
return $ratio;
}
protected function getRelationGameIdSpend($company_id,$relation_game_id,$begintime,$endtime)
{
$res = [];
//获取推广员
$Promote = M("Promote","tab_");
$Spend = M("Spend","tab_");
$spenMap = [
"s.pay_status"=>1,
"s.payed_time"=>['between', [$begintime,$endtime]],
];
$company_id = $company_id;
$pres = $Promote->field("group_concat(id) ids,count(id) count")->where("company_id = '{$company_id}'")->group("company_id")->find();
if($pres['count'] ==0 ){return 0;}
$spenMap['s.promote_id']=["in",$pres['ids']];
//游戏
$game_id = D("Game")->changeRelationGameidToGameid($relation_game_id);
// dd($game_id);
$spenMap['s.game_id'] =['in',$game_id];
//获取支付记录
$pay_amount = $Spend->alias('s')->field('sum(s.pay_amount) pay_amount')->where($spenMap)->find();
return $pay_amount['pay_amount'] ?? 0;
}
protected function getRelationGameIdPromoteSpend($promote_id,$relation_game_id,$begintime,$endtime)
{
$res = [];
//获取推广员
$Promote = M("Promote","tab_");
$Spend = M("Spend","tab_");
$spenMap = [
"s.pay_status"=>1,
"s.payed_time"=>['between', [$begintime,$endtime]],
];
$Pmap = [
"chain"=>["LIKE","%/{$promote_id}/%"],
"_logic"=>"OR",
"id"=>$promote_id
];
$pres = $Promote->field("group_concat(id) ids,count(id) count")->where($Pmap)->group("company_id")->find();
if($pres['count'] ==0 ){return 0;}
$spenMap['s.promote_id']=["in",$pres['ids']];
//游戏
$game_id = D("Game")->changeRelationGameidToGameid($relation_game_id);
// dd($game_id);
$spenMap['s.game_id'] =['in',$game_id];
//获取支付记录
$pay_amount = $Spend->alias('s')->field('sum(s.pay_amount) pay_amount')->where($spenMap)->find();
return $pay_amount['pay_amount'] ?? 0;
}
/**

@ -133,6 +133,21 @@ class ConsoleController extends Think {
echo M('game', 'tab_')->where('id>2')->field(['id', 'game_name'])->where('sdk_version=1')->select(false);
}
public function testGameCat()
{
$key = '123456';
$params = [
];
ksort($params);
$paramsStr = http_build_query($params) . '&key=' . $key;
$sign = md5($paramsStr);
$client = new AggregateClient();
$result = $client->api('game-data', ['unique_codes' => ['w123'], 'started_at' => '2019-06-27', 'ended_at' => '2020-07-27']);
var_dump($result);
}
public function initMarketAdmin()
{
$marketService = new MarketService();

@ -25,11 +25,32 @@ class FinancialSummaryController extends AdminController
if(!array_key_exists("year",$_REQUEST) || !array_key_exists("type",$_REQUEST)){
$this->redirect(ACTION_NAME, array('year' => date('Y',time()),"type"=>2));
}
if(!IS_ROOT){
$this->OpAuthList= getModuleControllerAuth();
}
$this->assign('menubtn',$this->menuAuth());
$lastRecount = D("CmdTasks")->getTypeLastTask("FinancialSummary");
if(!$lastRecount){
$lastRecount = "无";
}
$this->assign('lastRecount',$lastRecount);
$this->getYearList();
$this->getYearData();
$this->display();
}
public function updateStatement()
{
$temp = date('Y',time()).'-'.(date('m',time())-1);
$params = "php admin.php FinancialSummarySet/setMonthFinancialSummary/recount/1/count_date/{$temp}";
$r = D("CmdTasks")->addTask("FinancialSummary",$params);
if($r){
$this->ajaxReturn(["success"=>"ok"]);
}else{
$this->ajaxReturn(["error"=>"error"]);
}
}
//获取指定年份数据
public function getYearData()
{
@ -142,6 +163,23 @@ class FinancialSummaryController extends AdminController
}
$this->assign('YearList', $list);
}
public function menuAuth()
{
$mentBtn = [
"updateStatement"=>"<a class='butn' id='updateStatement' style='background-color: green;'>重算金额</a>"
];
$resarr = [];
foreach ($mentBtn as $k => $v) {
if(IS_ROOT){
$resarr[] = $v;
}else{
if(in_array($k,$this->OpAuthList)){
$resarr[] = $v;
}
}
}
return $resarr;
}

@ -1,5 +1,6 @@
<?php
namespace Admin\Controller;
use Think\Exception;
/**
* 游戏流水聚合接口
@ -14,6 +15,8 @@ class FinancialSummarySetController extends \Think\Controller
public $month;//月份
public $year;//年份
public $adddata;//要添加的数据
public $taskid=false;
public $result='';
//数据库
public $FinancialSummaryModel;
public function _initialize(){
@ -34,7 +37,6 @@ class FinancialSummarySetController extends \Think\Controller
$this->GameSupersignModel = M("GameSupersign",'tab_');
$this->CoinPayOrderModel = M("CoinPayOrder",'tab_');//会长充值平台币表
$this->TestOrderModel = M("TestOrder",'tab_');//测试订单录入
}
/**
* 更新某月数据
@ -108,6 +110,10 @@ class FinancialSummarySetController extends \Think\Controller
$t2 = microtime(true);
echo ("success {$this->date}:ok runtime:".round($t2-$t1,3).'s'.PHP_EOL);
if($this->taskid){
$this->result = "success {$this->date}:ok runtime:".round($t2-$t1,3).'s';
}
}
/**
* 获取类型为1的数据,按收入类型

@ -0,0 +1,57 @@
<?php
/**
* 定时自动完成
*/
namespace Admin\Controller;
use Admin\Model\SpendModel;
use Think\Think;
use Base\Tool\Printer;
use Base\Tool\TaskClient;
use Base\Service\TestingResourceService;
use GuzzleHttp\Client;
use think\Db;
use Base\Tool\GameCatClient;
class GameApiController extends Think {
protected function _initialize()
{
C(api('Config/lists'));
}
public function verify()
{
$service = new TestingResourceService();
$batches = M('testing_resource_batch', 'tab_')->where(['verify_status' => 0])->select();
foreach ($batches as $batch) {
$service->verify($batch);
}
}
public function provide()
{
$service = new TestingResourceService();
$batches = M('testing_resource_batch', 'tab_')->where(['verify_status' => 1, 'provide_status' => 0])->select();
foreach ($batches as $batch) {
$service->provide($batch);
}
}
public function send()
{
$role = [
'role_id' => '6819493',
'user_account' => 'qh11102',
'sdk_version' => 1,
];
$order = [
'ref_amount' => '10.00',
'ref_id' => '8',
'remark' => '测试',
'order_no' => date('YmdHis') . rand(1000, 9999) . '_1',
];
$service = new TestingResourceService();
$result = $service->provideFromGameCat($order, $role);
var_dump($result);
}
}

@ -9,6 +9,23 @@ namespace Admin\Controller;
*/
class OldCountController extends \Think\Controller
{
public function changeCompanyGameidToPromoteGameid()
{
//默认设为
$Promote = M("Promote","tab_");
$PromoteCompany = M("promote_company","tab_");
$p_res = $PromoteCompany->field("id,game_ids")->select();
foreach ($p_res as $k => $v) {
if(!empty($v['game_ids'])){
$savedata['game_ids'] = $this->changeRelationGameidToGameid($v['game_ids']);
$Promote->where(["company_id"=>$v['id']])->save($savedata);
}
}
echo "changeCompanyGameidToPromoteGameid success";
}
/**
* 公会关系及游戏迁移
* 1. 迁移 公会company_relation到公司
@ -50,6 +67,16 @@ class OldCountController extends \Think\Controller
return implode(",",array_column($rid,'relation_game_id'));
}
}
protected function changeRelationGameidToGameid($ids,$type=false)
{
$rid = M('game', 'tab_')->field('id')->where(["relation_game_id"=>["in",$ids]])->select();
if($type){
return array_column($rid,'id');
}else{
return implode(",",array_column($rid,'id'));
}
}
/**
* 优化旧表数值,新表需要将 开票税点及渠道费 * 100

@ -166,6 +166,8 @@ class PartnerController extends ThinkController
$value['cooperation_status'] = $value['cooperation_status'] ? '合作中' : '暂停合作';
$value['company_type'] = $value['company_type'] == 2 ? '个人' : '公司';
$value['has_game_evidence'] = $value['has_game_evidence'] ? '是' : '否';
$contract_start_time = $value['contract_start_time'] ? time_format($value['contract_start_time'], 'Y/m/d') : '-';
if($value['contract_start_time']){
$contract_end_time = $value['contract_end_time'] ? date('Y/m/d', $value['contract_end_time']) : '永久';
@ -331,11 +333,16 @@ class PartnerController extends ThinkController
$save['uid'] = UID;
$save['create_time'] = time();
$has_check = M("partner_verify","tab_")->where(["partner_name"=>$partner_info['partner'],"verify_status"=>0])->field("id")->find();
$has_check = M("partner_verify","tab_")->where(["partner_name"=>$save['partner'],"verify_status"=>0])->field("id")->find();
if ($has_check) {
$this->error('已存在同名未审核的cp,请勿重复添加');
}
$has_check = M("partner","tab_")->where(["partner"=>$save['partner']])->field("id")->find();
if ($has_check) {
$this->error('已存在同名cp,请勿重复添加');
}
$res =D("PartnerVerify")->add_db($save);
if ($res) {
//操作日志

@ -1014,9 +1014,9 @@ class PromoteCompanyController extends ThinkController
} else {
$game_ids = '';
}
$this->changePromoteGameids($id,$game_ids);
$res = M('promote_company', 'tab_')->where(['id'=>$id])->save(['game_ids'=>$game_ids]);
if ($res) {
$this->changePromoteGameids($id,$game_ids);
$this->ajaxReturn(['code'=>1,'msg'=>'更新成功']);
} else {
$this->ajaxReturn(['code'=>0,'msg'=>'数据未发生变化']);
@ -1094,6 +1094,14 @@ class PromoteCompanyController extends ThinkController
$this->error('推广公司已存在');
}
}
if(!isset($save['id'])){
$map['company_id'] = 0;
$res = M("PromoteCompanyVerify","tab_")->where($map)->field("id")->find();
if($res){
$this->error('已添加过此推广公司,请联系管理尽快审核');
}
}
// if(!empty(I("contact_phone")) && !checkPhone(I('contact_phone'))) {
// $this->error('联系电话格式不正确');
@ -1145,41 +1153,48 @@ class PromoteCompanyController extends ThinkController
$save['last_up_time'] = $time;
}
protected function changePromoteGameids($company_id,$game_ids){
$is_change_game = false;
$old_info = M("PromoteCompany","tab_")->field("company_belong,develop_type,game_ids")->where("id = {$company_id}")->find();
$is_change_game = false;
$Promote = M("Promote", "tab_");
if($old_info['game_ids'] != $game_ids){
// $is_change_game = true;
$oids = explode(',', $old_info['game_ids']);
$nids = explode(',', $save['game_ids']);
$diff_ids = [];
if(count($oids) == 0){
$is_change_game = false;
}elseif(count($nids) == 0){
$diff_ids = $oids;
if($old_info['company_belong'] == 1 || $old_info['company_belong'] == 2){
//外团跟随公司
$new_game_ids = D("Game")->changeRelationGameidToGameid($game_ids,true);
$new_game_ids = implode(',',$new_game_ids);
$save = [
"game_ids"=>$new_game_ids
];
$dbres = $Promote->where("company_id = '{$company_id}'")->save($save);
}else{
foreach ($oids as $k => $v) {
if(!in_array($v,$nids)){
$diff_ids[] = $v;
$oids = explode(',', $old_info['game_ids']);
$nids = explode(',',$game_ids);
$diff_ids = [];
if(empty($old_info['game_ids'])){
$is_change_game = false;
}elseif(empty($game_ids)){
$is_change_game = true;
$diff_ids = $oids;
}else{
$is_change_game = true;
foreach ($oids as $k => $v) {
if(!in_array($v,$nids)){
$diff_ids[] = $v;
}
}
}
}
if(count($diff_ids) > 0){
$is_change_game = true;
$diff_ids = $this->changeRelationGameidToGameid($diff_ids,true);
}
if ($is_change_game) {
$Promote = M("Promote", "tab_");
$dbres = $Promote->field("id,game_ids,company_belong,company_relation")->where("company_id = '{$company_id}'")->select();
foreach ($dbres as $k=>&$v) {
$temp_ids = explode(',', $v['game_ids']);
$v['game_ids'] = implode(',', array_diff($temp_ids, $diff_ids));
$v['company_belong'] = $save['company_belong'];
$v['company_relation'] = $save['develop_type'];
$Promote->save($v);
if(count($diff_ids) > 0){
$diff_ids = D("Game")->changeRelationGameidToGameid($diff_ids,true);
}
if($is_change_game){
$dbres = $Promote->field("id,game_ids")->where("company_id = '{$company_id}'")->select();
foreach ($dbres as $k=>&$v) {
$temp_ids = explode(',', $v['game_ids']);
$v['game_ids'] = implode(',', array_diff($temp_ids, $diff_ids));
$Promote->save($v);
}
}
}
}
}
/**
* 由于修改公司信息引起的会长信息修改
@ -1373,7 +1388,7 @@ class PromoteCompanyController extends ThinkController
}else{
$v['list'] = [];
$v['row']=0;
$v['game_ids'] = $this->changeGameidToRelationGameid($v['game_ids']);
$v['game_ids'] = D("Game")->changeGameidToRelationGameid($v['game_ids']);
$game_arr = array_flip(explode(",",$v['game_ids']));
foreach($game_arr as $ke=>$va){
if(isset($ratio[$ke])){
@ -1453,37 +1468,14 @@ class PromoteCompanyController extends ThinkController
}
return $gameinfo;
}
//普通游戏id转唯一游戏id
protected function changeGameidToRelationGameid($ids,$type=false)
{
$rid = M('game', 'tab_')->field('relation_game_id')->where(["id"=>["in",$ids]])->group("relation_game_id")->select();
if($type){
return array_column($rid,'relation_game_id');
}else{
return implode(",",array_column($rid,'relation_game_id'));
}
}
//唯一游戏id转普通游戏id
protected function changeRelationGameidToGameid($ids,$type=false)
{
$rid = M('game', 'tab_')->field('id')->where(["relation_game_id"=>["in",$ids]])->select();
if($type){
return array_column($rid,'id');
}else{
return implode(",",array_column($rid,'id'));
}
}
protected function promoteCompanyIsCanDel($company_id){
//判断公司是否能被删除
protected function promoteCompanyIsCanDel($company_id){
$r = M("Promote","tab_")->where("company_id={$company_id}")->count();
if($r > 0){
return false;
}else{
return true;
}
}
}
}

@ -0,0 +1,67 @@
<?php
//推广公司模型
namespace Admin\Model;
use Think\Model;
/**
* 文档基础模型
*/
class CmdTasksModel extends Model{
protected $tablePrefix = 'tab_';
//获取待执行任务
public function getTask()
{
//按顺序获取任务
$has_run = $this->where(['status'=>"1"])->count();
if($has_run > 0){
return false;
}
$task = $this->field("id,params")->where(['status'=>"0"])->order("id asc")->find();
if(empty($task)){
return false;
}else{
//修改状态为执行中
$this->save(['id'=>$task['id'],'status'=>"1","start_time"=>time()]);
return $task;
}
}
//更新
public function updateTask($params)
{
$this->save($params);
}
//获取同类型任务最后一次操作时间
public function getTypeLastTask($type)
{
$task = $this->field("end_time")->where(['status'=>"2",'type'=>$type])->order("id desc")->find();
if(empty($task)){
return false;
}else{
return date("Y-m-d H:i:s",$task['end_time']);
}
}
//插入任务
public function addTask($type,$params,$need_path=true)
{
$task = $this->field("end_time")->where(['status'=>["in","0,1"],'type'=>$type])->order("id desc")->find();
if(!empty($task)){
return false;
}
if($need_path){
if(IS_WIN){
$p = explode(':',ROOTTTTT);
$params = "{$p[0]}:&".'cd "'.$p[1].'"&'.$params;
}else{
$params = "cd ".ROOTTTTT.";".$params;
}
}
$params = rtrim($params,";").' 2>&1';
$save = [
"uid"=>$_SESSION['onethink_admin']['user_auth']['uid'],
"created_time"=>time(),
"params"=>$params,
"type"=>$type
];
return $this->add($save);
}
}

@ -0,0 +1,109 @@
<?php
namespace Admin\Model;
use Think\Model;
class CompanyGameRatioModel extends Model
{
// 数据表前缀
protected $tablePrefix = 'tab_';
/**
* 按公司获取游戏分成比例
*
* @param [type] $company_id 公司id
* @param [type] $game_ids 游戏关联id
* @param [type] $begintime 开始时间
* @param [type] $endtime 结束时间
* @param boolean $company_belong 公司内外团
* @return void
*/
public function getPromoteCompanyGameRatio($company_id,$game_ids,$begintime,$endtime,$company_belong=false){
//获取默认比例
if($company_belong === false){
$company_belong = M("PromoteCompany","tab_")->field("company_belong")->where("id='{$company_id}'")->find()['company_belong'];
}
$mwhere = [
"company_belong"=>$company_belong,
"relation_game_id"=>["in",$game_ids]
];
$m_res = M("GameRatioMould","tab_")->where($mwhere)->select();
$modul_ratio = [];
for ($i=0; $i < count($m_res); $i++) {
$modul_ratio[$m_res[$i]['relation_game_id']] = $m_res[$i];
}
unset($m_res);
//设置默认
$game_ratio = [];
$tmp_g = explode(",",$game_ids);
for ($i=0; $i < count($tmp_g); $i++) {
$game_ratio[$tmp_g[$i]] = [
["begintime"=>$begintime,"endtime"=>$endtime]
];
}
$map = [
"company_id"=>$company_id,
"relation_game_id"=>['in',$game_ids],
"_string"=>"begin_time <={$endtime} AND ( end_time = 0 OR end_time >= {$begintime})"
];
$res = $this->where($map)->order("begin_time asc")->select();
foreach($res as $k=>$v){
//获取最后一个数据
$tgr = &$game_ratio[$v['relation_game_id']];
$last_time_ratio = end($game_ratio[$v['relation_game_id']]);
if($v['end_time'] == 0 || ($v['end_time'] >= $last_time_ratio['endtime'])){
//全段
if($v['begin_time'] <= $last_time_ratio['begintime']){
$tgr[count($tgr)-1]['ratio'] = $v['ratio'];
$tgr[count($tgr)-1]['turnover_ratio'] = $v['turnover_ratio'];
continue;
}else{
//上分段
$tgr[count($tgr)-1]['endtime'] = $v['begin_time']-1;
$tgr[] = ['begintime'=>$v['begin_time'],"endtime"=>$last_time_ratio['endtime'],"ratio"=>$v['ratio'],"turnover_ratio"=>$v['turnover_ratio']];
continue;
}
}
if($v['end_time'] < $last_time_ratio['endtime']){
if($last_time_ratio['begintime'] < $v['begin_time']){
//中段
$tgr[count($tgr)-1]['endtime'] = $v['begin_time']-1;
$tgr[] = ['begintime'=>$v['begin_time'],"endtime"=>$v['end_time'],"ratio"=>$v['ratio'],"turnover_ratio"=>$v['turnover_ratio']];
$tgr[] = ['begintime'=>$v['end_time']-0+1,"endtime"=>$last_time_ratio['endtime']];
continue;
}
if($last_time_ratio['begintime'] > $v['begin_time']){
//下分段
$tgr[count($tgr)-1]['endtime'] = $v['end_time'];
$tgr[] = ['begintime'=>$v['end_time']-0+1,"endtime"=>$last_time_ratio['endtime'],"ratio"=>$v['ratio'],"turnover_ratio"=>$v['turnover_ratio']];
continue;
}
if($last_time_ratio['begintime'] = $v['begin_time']){
$tgr[count($tgr)-1]['endtime'] = $v['end_time'];
$tgr[count($tgr)-1]['ratio'] = $v['ratio'];
$tgr[count($tgr)-1]['turnover_ratio'] = $v['turnover_ratio'];
$tgr[] = ['begintime'=>$v['end_time']-0+1,"endtime"=>$last_time_ratio['endtime']];
}
}
}
//模板填充
foreach($game_ratio as $k=>&$list){
foreach($list as $i => &$ratio){
if(!isset($ratio['ratio'])){
if(isset($modul_ratio[$k]['ratio'])){
$ratio['ratio'] = $modul_ratio[$k]['ratio'];
$ratio['turnover_ratio'] = $modul_ratio[$k]['turnover_ratio'];
}else{
$ratio['ratio'] = 0;
$ratio['turnover_ratio'] =null;
}
}
}
}
return $game_ratio;
}
}

@ -453,6 +453,39 @@ class GameModel extends Model{
return $this->field($field)->where($where)->group("relation_game_id")->select();
}
/**
* 关联游戏id转普通游戏id
*
* @param [string/array] $ids
* @param boolean $type false:返回字符串 true:返回数组
* @return void
*/
public function changeRelationGameidToGameid($ids,$type=false)
{
$rid = $this->field('id')->where("relation_game_id in ({$ids})")->select();
if($type){
return array_column($rid,'id');
}else{
return implode(",",array_column($rid,'id'));
}
}
/**
* 普通游戏id转关联游戏id
*
* @param [string/array] $ids
* @param boolean $type false:返回字符串 true:返回数组
* @return void
*/
public function changeGameidToRelationGameid($ids,$type=false)
{
$rid = $this->field('relation_game_id')->where("id in ({$ids})")->group("relation_game_id")->select();
if($type){
return array_column($rid,'relation_game_id');
}else{
return implode(",",array_column($rid,'relation_game_id'));
}
}
}

@ -202,7 +202,6 @@
<th>结算流水</th>
<th>创建记录</th>
<th>管理员审核</th>
<th>审批状态</th>
<th>汇总状态</th>
<th>对外发起</th>
<th>合作确认</th>
@ -242,17 +241,6 @@
</td>
<td>
<if condition="$data.verify_status eq -2 ">
<div style="line-height: 2;color: red;">
{$data.verify}
</div>
<else />
<div style="line-height: 2;">
{$data.verify}
</div>
</if>
</td>
<td>
<if condition="$data.verify_status eq -3 ">
<div style="line-height: 2;color: red;">
{$data.pool}
</div>
@ -455,7 +443,7 @@
});
});
$("#adminAgree,#adminRefuse,#verifyAgree,#verifyRefuse,#pool,#updateStatement").on("click",function(){
$("#adminAgree,#adminRefuse,#verifyAgree,#verifyRefuse,#pool,#updateStatement,#delStatement").on("click",function(){
var id = $(this).attr("id");
if(id == "adminAgree"){
var opname = "管理员审批通过";
@ -467,26 +455,22 @@
var opurl = "{:U('adminRefuse')}";
var opst ="[未进行审批]";
var status = [0];
}else if(id == "verifyAgree"){
var opname = "审批通过";
var opurl = "{:U('verifyAgree')}";
var opst ="[管理员审批通过]";
var status = [1];
}else if(id=="verifyRefuse"){
var opname = "审批拒绝";
var opurl = "{:U('verifyRefuse')}";
var opst ="[管理员审批通过]";
var status = [1];
}else if(id=="pool"){
var opname = "发起汇总";
var opurl = "{:U('pool')}";
var opst ="[审批通过]";
var status = [2];
var status = [1];
}else if(id=="updateStatement"){
var opname = "重算金额";
var opurl = "{:U('updateStatement')}";
var opst ="[汇总撤销,管理员审批拒绝,审批拒绝,未进行审批,管理员审批通过,审批通过]";
var status = [-3,-2,-1,0,1,2];
var opst ="[汇总撤销,管理员审批拒绝,未进行审批,管理员审批通过]";
var status = [-3,-2,-1,0,1];
var confirm = true;
}else if(id=="delStatement"){
var opname = "批量删除";
var opurl = "{:U('delStatement')}";
var opst ="[未进行审批]";
var status = [0];
var confirm = true;
}
var confirm = confirm ? confirm :false;

@ -177,7 +177,7 @@
<notemtpy name = "data">
<volist name="data" id="data">
<tr>
<td ><input class="ids" type="checkbox" value="{$data['id']}" name="ids[]"></td>
<td ><input class="ids" type="checkbox" value="{$data['id']}" name="ids[]" data-companytype="{$data['company_type']}"></td>
<td>{$data.company_name}</td>
<td>{$data.company_type_str}</td>
<td>{$data.valid}</td>
@ -327,24 +327,23 @@
})
$("#export").click(function () {
var company = [];
var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) {
return $(elem).val();
}).get();
if(text.length > 20){
layer.msg("<font style='color:white'>" + '暂不支持超过20条的批量导出' + "</font>");
return;
}
if(text.length < 1){
layer.msg("<font style='color:white'>" + '请先选择要导出的结算单' + "</font>");
return;
}
for (var index = 0; index < text.length; index++) {
var id = text[index];
var url ="{:U('viewStatement')}"+"&id="+id+"&export=1";
var iframeExcel = "<iframe src='"+url+"' width='0px' height='0px' style='z-index:-1;position: absolute;top: -999999px;'></iframe>"//添加下载的地址到iframe这里是公司信息我用**表示了。
var cid = $(elem).data("companytype");
try {
company[cid].push($(elem).val());
} catch (error) {
company[cid] = [];
company[cid].push($(elem).val());
}
});
company.forEach(function(e){
var ids = e.join(",");
var url ="{:U('export')}"+"&ids="+ids+"&export=1";
var iframeExcel = "<iframe src='"+url+"' width='0px' height='0px' style='z-index:-1;position: absolute;top: -999999px;'></iframe>";
$("body").append(iframeExcel)
}
});
})

@ -0,0 +1,402 @@
<extend name="Public/base"/>
<block name="body">
<link rel="stylesheet" href="__CSS__/select2.min.css" type="text/css" />
<link rel="stylesheet" href="__CSS__/pro_promote.css" type="text/css" />
<script src="__STATIC__/jquery.form.js"></script>
<script src="__STATIC__/layer/layer.js"></script>
<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="__STATIC__/layer3/layer.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;}
.butnbox {padding:10px 0 10px;}
.butnbox .butnlist {overflow:hidden;clear:both;}
.butnbox .butnlist .butn,.butnbox .butnlist .butn:hover {text-decoration:none;border:none;}
.butnbox .butnlist .butn {display:inline-block;width:120px;height:28px;line-height:28px;text-align:center;color:#FFF;background:#3C95C8;border-radius:3px;}
.butnbox .butnlist .butn.last {background:#009900;}
.butnbox .butnlist .butn~.butn {margin-left:20px;}
.data_list table tbody tr a.disabled,.data_list table tbody tr a.disabled:hover {color:#999;cursor:default;}
.layui-layer-title {
text-align: center;
height: 80px;
line-height: 80px;
font-weight: 600;
font-size: 18px;
}
.data_list table td{
line-height: 2;
}
.layui-layer-title {
text-align: center;
height: 42px;
line-height: 42px;
font-weight: 400;
font-size: 14px;
}
.tooltip {
position: relative;
/* display: block; */
/* color: #056dae; */
}
.tooltip .tooltiptext {
display: none;
width: 100%;
background-color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px 10px 5px 5px;
position: absolute;
z-index: 1;
bottom: 80%;
left: 0;
border: #000 solid 1px;
line-height: 20px;
}
.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: #333;
display: block;
}
</style>
<div class="cf main-place top_nav_list navtab_list">
<h3 class="page_title">线下打款确认</h3>
<p class="description_text" id="order_url">仅当汇总单审批通过的单子才允许进行打款</p>
</div>
<div class="cf top_nav_list" style="height: 38px;">
<!-- 高级搜索 -->
<div class="jssearch fl cf search_list" style="margin-bottom: 0">
<div class="input-list input-list-promote search_label_rehab">
<select id="company_type" name="company_type" class="select_gallery" >
<option value="">公司类型</option>
<volist name="CompanyType" id="vo">
<option value="{$key}" <if condition="isset($_GET['company_type']) && $key eq I('company_type')">selected</if> >{$vo}</option>
</volist>
</select>
</div>
<div class="input-list">
<input style="width: 200px;" type="text" name="company_name" class="search-input" value="{:I('company_name')}" placeholder="请输入公司名称搜索">&nbsp;
</div>
<div class="input-list">
<input style="width: 200px;" type="text" name="statement_pool_num" class="search-input" value="{:I('statement_pool_num')}" placeholder="请输入汇总单号">&nbsp;
</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" id="datetimepicker" 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('lists','model='.$model['name'] .'&row='.I('row'),false)}">搜索</a>
</div>
</div>
</div>
<div class="butnbox" >
<div class="butnlist jscheckbutn" style="margin-left: 2px">
<foreach name="menubtn" item="vo" >
{$vo}
</foreach>
</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>
<th>打款状态</th>
<th class="tooltip">汇总单号<span class="tooltiptext">汇总单号</span></th>
<th>操作</th>
</tr>
</thead>
<!-- 列表 -->
<tbody>
<if condition = "empty($data)">
<tr>
<td colspan="16" class="text-center">aOh! 暂时还没有内容!</td>
</tr>
</if>
<notemtpy name = "data">
<volist name="data" id="data">
<tr>
<td ><input class="ids" type="checkbox" value="{$data['id']}" name="ids[]" data-companytype="{$data['company_type']}" data-paystatus="{$data['pay_status']}"></td>
<td>{$data.company_name}</td>
<td>{$data.company_type_str}</td>
<td>{$data.valid}</td>
<td>{$data.statement_money}</td>
<td>{$data.platform_amount}</td>
<td>{$data.payment}</td>
<td>{$data.statement_num}</td>
<td>
<foreach name="data.oplist" item="vo" >
{$vo}
</foreach>
</td>
</tr>
</volist>
<tr><td style="line-height: 42px;">合计</td><td colspan="12" style="line-height: 42px;">结算总金额:&nbsp;{$count.statement_money}</td></tr>
</notemtpy>
</tbody>
</table>
</div>
</div>
<div class="page">
<if condition="$role_export_check eq true ">
<!-- <a class="sch-btn" href="{:U(CONTROLLER_NAME.'/'.ACTION_NAME,array_merge(['export'=>1],I('get.')))}" target="_blank">导出</a> -->
</if>
{$_page|default=''}
</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 src="__STATIC__/layer/extend/layer.ext.js"></script>
<script type="text/javascript">
</script>
<script>
<volist name=":I('get.')" id="vo">
Think.setValue('{$key}',"{$vo}");
</volist>
$(".select_gallery").select2();
</script>
<script type="text/javascript">
//导航高亮
highlight_subnav("{:U('lists')}");
function reload() {
window.location.reload();
}
$(function(){
var company_id = "{$_GET['company_id']??0}";
$("#company_type").on("change",function(){
var val = $(this).find("option:selected").val();
var type = 0;
if(val == 3){
type = 1
}else{
type = 2;
}
var url = "{:U('Ajax/getCompanyList')}"+"&company_type="+type;
$.get(url,function(data){
var company = data;
var companystr = '<option value="">请选择合作公司</option>';
for (var i in company) {
if(company[i].id == company_id){
companystr += "<option value='" + company[i].id + "' selected='selected'>" + company[i].name + "</option>"
}else{
companystr += "<option value='" + company[i].id + "'>" + company[i].name + "</option>"
}
}
$("#company_id").html(companystr);
$("#company_id").select2();
})
})
$("#company_type").change();
$(".viewStatement").click(function () {
var id = $(this).data("id");
var url = "{:U('viewStatement')}"+"&id="+id
layer.open({
type: 2,
title: "海南万盟天下科技有限公司",
shadeClose: true,
shade: 0.8,
area: ['100%', '100%'],
content: url
});
});
$("#doPayment").on("click",function(){
var id = $(this).attr("id");
var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) {
if($(elem).data("paystatus") == 0){
return $(elem).val();
}
}).get();
if(text.length < 1){
layer.msg("<font style='color:white'>无需要进行确认打款确认操作的数据</font>");
return;
}
text = text.join(",");
if(confirm){
layer.confirm('【警告】确认打款后将不可回退,如需继续请点击确认', {
btn: ['确认','取消'],
title:false
}, function(){
_doAgreeApply();
});
}else{
_doAgreeApply();
}
function _doAgreeApply(){
//执行
$.ajax({
type: "POST",
url: "{:U('doPayment')}",
dataType: 'json',
async: false,
data: {ids:text},
success:function(data){
if(data.status==1){
layer.msg("<font style='color:white'>" + data.info + "</font>");
setTimeout(function(){
window.location.reload();
},1500);
}else{
layer.msg("<font style='color:white'>" + data.info + "</font>");
return false;
}
}
});
}
})
$("#export").click(function () {
var company = [];
var text = $("input:checkbox[name='ids[]']:checked").map(function(index,elem) {
var cid = $(elem).data("companytype");
try {
company[cid].push($(elem).val());
} catch (error) {
company[cid] = [];
company[cid].push($(elem).val());
}
});
company.forEach(function(e){
var ids = e.join(",");
var url ="{:U('export')}"+"&ids="+ids+"&export=1";
var iframeExcel = "<iframe src='"+url+"' width='0px' height='0px' style='z-index:-1;position: absolute;top: -999999px;'></iframe>";
$("body").append(iframeExcel)
});
})
$("#search").click(function(){
var start = $("#time_start").val();
var end = $("#time_end").val();
if(start !='' && end != ''){
if (Date.parse(start) > Date.parse(end)){
layer.msg('开始时间必须小于等于结束时间');
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;
}
window.location.href = url;
});
$('#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'
})
//回车自动提交
$('.jssearch').find('input').keyup(function(event){
if(event.keyCode===13){
$("#search").click();
}
});
})
</script>
</block>

@ -430,7 +430,7 @@
title: "海南万盟天下科技有限公司",
shadeClose: true,
shade: 0.8,
area: ['80%', '80%'],
area: ['100%', '100%'],
content: url
});
})
@ -442,7 +442,7 @@
title: "海南万盟天下科技有限公司",
shadeClose: true,
shade: 0.8,
area: ['70%', '80%'],
area: ['100%', '100%'],
content: url
});
})

@ -105,8 +105,12 @@
<tr>
<th style="border-right: solid 1px #b6cad2;">序号</th>
<th style="border-right: solid 1px #b6cad2;">合作公司</th>
<th style="border-right: solid 1px #b6cad2;">支付宝真实名称</th>
<th style="border-right: solid 1px #b6cad2;">支付宝账号</th>
<th style="border-right: solid 1px #b6cad2;">是否支付宝打款</th>
<th style="border-right: solid 1px #b6cad2;">户名</th>
<th style="border-right: solid 1px #b6cad2;">帐号</th>
<th style="border-right: solid 1px #b6cad2;">开户行</th>
<th style="border-right: solid 1px #b6cad2;">关联结算汇总单订单号</th>
<th style="border-right: solid 1px #b6cad2;">金额(元)</th>
<th style="border-right: solid 1px #b6cad2;">备注</th>
@ -119,8 +123,19 @@
<tr>
<td>{$key-0+1}</td>
<td>{$vo.company_name}</td>
<td>{$vo.company_info.ali_user}</td>
<td>{$vo.company_info.ali_account}</td>
<if condition="$vo['is_payment'] eq 1">
<td></td>
<td>{$vo.company_info.ali_user}</td>
<td>{$vo.company_info.ali_account}</td>
<td></td>
<else />
<td></td>
<td>{$vo.company_info.payee_name}</td>
<td>{$vo.company_info.bank_account}</td>
<td>{$vo.company_info.opening_bank}</td>
</if>
<td>{$vo.statement_num}</td>
<td>{$vo.statement_money}</td>
<td>{$vo.remark}</td>
@ -130,7 +145,7 @@
</foreach>
<tr>
<td colspan="2">合计:</td>
<td colspan="6">打款总金额:{$CompanyInfo[0]['all_money']}</td>
<td colspan="8">打款总金额:{$CompanyInfo[0]['all_money']}</td>
</tr>
</tbody>

@ -83,7 +83,10 @@
float: left;
margin: 0;
}
#statementShow td{
line-height: 1.5;
padding: 8px 0;
}
</style>
<body>
<!-- <div style="width: 100%;line-height: 100px;font-size: 25px;font-weight: 600;text-align: center;">
@ -100,7 +103,7 @@
<th>下游名称</th>
<th>会长账号</th>
<th>下游类型</th>
<th>市场员</th>
<th>市场</th>
<th>下游性质</th>
<th>产品</th>
<th>产品类型</th>
@ -108,6 +111,7 @@
<th>推广流水</th>
<th>分成比例</th>
<th>补点</th>
<th>分成结算金额</th>
<th>奖励</th>
<th>罚款</th>
<th>结算金额</th>
@ -119,100 +123,154 @@
<th>是否结算</th>
<th>备注</th>
<if condition="!$is_export">
<if condition="!$is_export">
<th>操作</th>
</if>
</tr>
</thead>
<tbody id="statementShow">
<foreach name="data" item="com">
<tr>
<td rowspan="{$com.statement_count}">{$key-0+1}</td>
<td rowspan="{$com.statement_count}">{$com.company_name}</td>
<td rowspan="{$com.row}">{$key-0+1}</td>
<td rowspan="{$com.row}">{$com.company_name}</td>
<td rowspan="{$com.statement_count}">{$com.company_info.account}</td>
<td rowspan="{$com.statement_count}">{$com.company_info.company_relation_str}</td>
<td rowspan="{$com.statement_count}">{$com.company_info.nickname}</td>
<td rowspan="{$com.statement_count}">{$com.company_info.company_type_str}</td>
<!-- <td rowspan="{$com.statement_count}">{$com.company_info.account}</td> -->
<td>{$com['statement_info'][0]['game_name']}</td>
<td>{$com['statement_info'][0]['game_type_name']}</td>
<td>{$com['statement_info'][0]['statement_begin_time']}-{$com['statement_info'][0]['statement_end_time']}</td>
<td>{$com['statement_info'][0]['pay_amount']}</td>
<if condition="$com['statement_info'][0]['statement_type'] neq 0">
<td></td>
<td></td>
<notempty name="com['statement_info']">
<td rowspan="{$com['statement_info'][0]['row']}">{$com['statement_info'][0]['account']}</td>
<else />
<td>{$com['statement_info'][0]['ratio']|default=0}%</td>
<td>{$com['statement_info'][0]['increment_ratio']|default=0}%</td>
</if>
<td>-</td>
</notempty>
<td rowspan="{$com.row}">{$com.company_info.company_relation_str}</td>
<td rowspan="{$com.row}">{$com.company_info.nickname}</td>
<td rowspan="{$com.row}">{$com.company_info.company_type_str}</td>
<td>{$com['statement_info'][0]['reward']}</td>
<td>{$com['statement_info'][0]['fine']}</td>
<td>{$com['statement_info'][0]['sum_money']}</td>
<notempty name="com['statement_info'][0]['game_list']">
<td>{$com['statement_info'][0]['game_list'][0]['game_name']}</td>
<td>{$com['statement_info'][0]['game_list'][0]['game_type_name']}</td>
<td>{$com['statement_info'][0]['game_list'][0]['statement_begin_time']}-{$com['statement_info'][0]['game_list'][0]['statement_end_time']}</td>
<td>{$com['statement_info'][0]['game_list'][0]['pay_amount']}</td>
<td>{$com['statement_info'][0]['game_list'][0]['ratio']|showNumPercent}</td>
<td>{$com['statement_info'][0]['game_list'][0]['increment_ratio']|showNumPercent}</td>
<td>{$com['statement_info'][0]['game_list'][0]['sum_money']}</td>
<td rowspan="{$com.row}">{$com['reward']}</td>
<td rowspan="{$com.row}">{$com['fine']}</td>
<td rowspan="{$com.row}">{$com['statement_money']}</td>
<else />
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td rowspan="{$com.row}">-</td>
<td rowspan="{$com.row}">-</td>
<td rowspan="{$com.row}">-</td>
</notempty>
<if condition="$com['is_payment'] eq 2">
<td rowspan="{$com.statement_count}">{$com.company_info.payee_name}</td>
<td rowspan="{$com.statement_count}">&nbsp;{$com.company_info.bank_account}</td>
<td rowspan="{$com.statement_count}">{$com.company_info.opening_bank}</td>
<td rowspan="{$com.row}">{$com.company_info.payee_name}</td>
<td rowspan="{$com.row}">&nbsp;{$com.company_info.bank_account}</td>
<td rowspan="{$com.row}">{$com.company_info.opening_bank}</td>
</if>
<if condition="$com['is_payment'] eq 1">
<td rowspan="{$com.statement_count}">{$com.company_info.ali_user}</td>
<td rowspan="{$com.statement_count}">{$com.company_info.ali_account}</td>
<td rowspan="{$com.statement_count}"></td>
<td rowspan="{$com.row}">{$com.company_info.ali_user}</td>
<td rowspan="{$com.row}">{$com.company_info.ali_account}</td>
<td rowspan="{$com.row}"></td>
</if>
<td rowspan="{$com.row}"><if condition="$com['is_payment'] eq 1"><else /></if></td>
<td rowspan="{$com.row}"><if condition="$com['st'] eq 0"><else /></if></td>
<td rowspan="{$com.row}">{$com.remark}</td>
<td rowspan="{$com.statement_count}"><if condition="$com['is_payment'] eq 1"><else /></if></td>
<td rowspan="{$com.statement_count}"><if condition="$com['st'] eq 0"><else /></if></td>
<td rowspan="{$com.statement_count}">{$com.remark}</td>
<if condition="!$is_export">
<td rowspan="{$com.statement_count}">
<td rowspan="{$com.row}">
<if condition="($com['st'] eq 1 ) AND ($pool_status lt 1)">
<a data-id="{$com['id']}" class='butn no_statement' style="cursor:pointer">不结算</a>
</if>
</td>
</if>
</tr>
<foreach name="com.statement_info" item="it" key="k">
<if condition="$k neq 0">
<tr>
<td>{$it['game_name']}</td>
<td>{$it['game_type_name']}</td>
<td>{$it['statement_begin_time']}-{$it['statement_end_time']}</td>
<td>{$it['pay_amount']}</td>
<if condition="$com['statement_info'][0]['row'] gt 1">
<foreach name="com['statement_info'][0]['game_list']" item="game" key="gamekey">
<if condition="$gamekey gt 0">
<tr>
<td>{$game['game_name']}</td>
<td>{$game['game_type_name']}</td>
<td>{$game['statement_begin_time']}-{$game['statement_end_time']}</td>
<td>{$game['pay_amount']}</td>
<td>{$game['ratio']|showNumPercent}</td>
<td>{$game['increment_ratio']|showNumPercent}</td>
<td>{$game['sum_money']}</td>
</tr>
</if>
</foreach>
</if>
<notempty name="com['statement_info'][1]">
<foreach name="com['statement_info']" item="account" key="akey">
<if condition="$akey gt 0">
<tr>
<td rowspan="{$account['row']}">{$account['account']}</td>
<notempty name="account['game_list']">
<td>{$account['game_list'][0]['game_name']}</td>
<td>{$account['game_list'][0]['game_type_name']}</td>
<td>{$account['game_list'][0]['statement_begin_time']}-{$account['game_list'][0]['statement_end_time']}</td>
<td>{$account['game_list'][0]['pay_amount']}</td>
<td>{$account['game_list'][0]['ratio']|showNumPercent}</td>
<td>{$account['game_list'][0]['increment_ratio']|showNumPercent}</td>
<td>{$account['game_list'][0]['sum_money']}</td>
<else />
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</notempty>
</tr>
<if condition="$it['statement_type'] neq 0">
<td></td>
<td></td>
<else />
<td>{$it['ratio']|default=0}%</td>
<td>{$it['increment_ratio']|default=0}%</td>
<if condition="$account['row'] gt 1">
<foreach name="account['game_list']" item="game" key="gamekey">
<if condition="$gamekey gt 0">
<tr>
<td>{$game['game_name']}</td>
<td>{$game['game_type_name']}</td>
<td>{$game['statement_begin_time']}-{$game['statement_end_time']}</td>
<td>{$game['pay_amount']}</td>
<td>{$game['ratio']|showNumPercent}</td>
<td>{$game['increment_ratio']|showNumPercent}</td>
<td>{$game['sum_money']}</td>
</tr>
</if>
</foreach>
</if>
<td>{$it['reward']}</td>
<td>{$it['fine']}</td>
<td>{$it['sum_money']}</td>
</if>
</foreach>
</tr>
</if>
</foreach>
</notempty>
</foreach>
<tr>
<td colspan=9 >合计:</td>
<td>{$count.platform_amount|default=0}</td>
<td>{$count.platform_amount}</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>{$count.sum_money|default=0}</td>
<td>{$count.sum_money}</td>
<td></td>
<td></td>
<td></td>

@ -39,43 +39,12 @@
font-size: 12px;
}
.tooltip {
position: relative;
/* display: block; */
/* color: #056dae; */
}
.tooltip .tooltiptext {
display: none;
width: 100%;
background-color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px 10px 5px 5px;
position: absolute;
z-index: 1;
bottom: 80%;
left: 0;
border: #000 solid 1px;
line-height: 20px;
}
.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: #333;
display: block;
}
.butnbox {padding:10px 0 15px;}
.butnbox .butnlist {overflow:hidden;clear:both;}
.butnbox .butnlist .butn,.butnbox .butnlist .butn:hover {text-decoration:none;border:none;}
.butnbox .butnlist .butn {display:inline-block;width:120px;height:28px;line-height:28px;text-align:center;color:#FFF;background:#3C95C8;border-radius:3px;}
.butnbox .butnlist .butn.last {background:#009900;}
.butnbox .butnlist .butn~.butn {margin-left:20px;}
</style>
<!-- 标题栏 -->
<div class="cf main-place top_nav_list navtab_list">
@ -89,7 +58,7 @@
</style>
<div class="cf top_nav_list">
<!-- 高级搜索 -->
<div class="jssearch search_list fl cf">
<div class="jssearch search_list fl cf" style="margin-bottom: 10px;">
<div class="input-list search-title-box">
<label>搜索:</label>
</div>
@ -119,7 +88,13 @@
</div>
</div>
<div class="butnbox">
<div class="butnlist jscheckbutn" style="margin-left: 2px">
<foreach name="menubtn" item="vo" >
{$vo}
</foreach>
</div>
</div>
<!-- 数据列表 -->
<div class="data_list">
@ -268,9 +243,7 @@
//导航高亮
highlight_subnav('{:U("FinancialSummary/index")}');
$(function () {
<volist name=":I('get.')" id="vo">
Think.setValue('{$key}',"{$vo}");
</volist>
});
</script>
<script type="text/javascript">
@ -311,54 +284,27 @@
}
window.location.href = url;
});
$(".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();
}
});
$('.jssamlllist').click(function () {
var that = $(this), url = that.attr('data-url');
var url =
layer.open({
type: 2,
title: "【" + that.attr('data-account') + "】小号列表",
shadeClose: true,
shade: 0.8,
area: ['1062px', '80%'],
content: url,//iframe的url
$("#updateStatement").on("click",function(){
layer.confirm("新增结算需要花费2分钟左右时间,并且只上个月统计信息,无需结算请取消,上次重算时间【{$lastRecount}】",{title:false}, function(index){
$.ajax({
type: 'post',
url: "{:U('updateStatement')}",
data:{},
success: function(data) {
if(data.success){
layer.alert('添加重算任务成功请2分钟后刷新查看');
}else{
layer.alert('添加任务失败,已有重算任务。请等待上个重算任务完成');
}
},
error:function(){
layer.alert("网络错误或超时");
return false;
}
});
return false;
});
$(".paixu").click(function () {
var val = $(this).attr('data-order');
if (val == 1) {
val = 2;
} else if (val == 2) {
val = 1;
}
var name = $(this).attr('name');
if (name == 'balance_status') {
$('#key').val(1);
} else {
$('#key').val(2);
}
$("#" + name).val(val);
$("#search").click();
});
});
})
//回车自动提交
$('.jssearch').find('input').keyup(function (event) {
if (event.keyCode === 13) {
@ -366,102 +312,7 @@
}
});
$("#total_status").click(function () {
$("#search").click();
})
$('#time_start').datetimepicker({
format: 'yyyy-mm-dd',
language: "zh-CN",
minView: 2,
autoclose: true
});
$('#datetimepicker').datetimepicker({
format: 'yyyy-mm-dd',
language: "zh-CN",
minView: 2,
autoclose: true,
pickerPosition: 'bottom-left'
})
var promote_id = "{:I('promote_id')}";
var company_id = "{:I('company_id')}";
function getPromotersByCompanyid() {
var company_id = $("#company_id option:selected").val();
if(!company_id){
company_id = -1;
}
$.ajax({
url: "{:U('Ajax/getPromotersByCompanyid')}",
type: "get",
data: { company_id:company_id},
dataType: 'json',
success: function (response) {
str = '<option value="">请选择会长</option>';
if(company_id == 0 || company_id ==-1){
str +='<option value="0"' + (promote_id && 0 == promote_id ? 'selected' : '') + '>{:C(\'OFFICIEL_CHANNEL\')}</option>';
}
data = response.data;
for (var i in data) {
str += "<option value='" + data[i].id + "' " + (promote_id && data[i].id == promote_id ? 'selected' : '') + ">" + data[i].nickname + "</option>"
}
$("#promote_id").empty();
$("#promote_id").append(str);
$("#promote_id").select2();
}
})
}
getPromotersByCompanyid();
$("#company_id").change(function(){
getPromotersByCompanyid();
})
})
function shenhe(status) {
var text = $("input:checkbox[name='ids[]']:checked").map(function (index, elem) {
return $(elem).val();
}).get().join("\n");
var desc = '';
if (status == 0) {
desc = '锁定';
} else {
desc = '开启';
}
layer.prompt({
formType: 2,
value: text,
placeholder: '玩家账号(一个账号一行)',
title: '请输入要' + desc + '的玩家账号(一个账号一行)',
area: ['800px', '350px'] //自定义文本域宽高
}, function (value, index, elem) {
if (value == '') {
layer.msg("请输入账户ID");
return;
}
$.ajax({
cache: true,
type: "POST",
url: "{:U('Member/lock_status')}",
data: { accounts: value, lock_status: status },// 你的formid
async: false,
error: function (data) {
layer.alert("服务器故障,请稍后重试!", { icon: 2 });
},
success: function (data) {
// var obj = JSON.parse(data);
// layer.alert(obj.info,{icon:obj.status})
layer.alert(data.info, { icon: data.status })
window.location.reload()
}
});
layer.close(index);
});
}
</script>
</block>

@ -77,7 +77,6 @@
<th>发票类型</th>
<th>税费费率</th>
<th>渠道费率</th>
<th>注册地址</th>
<th>注册电话</th>
@ -129,17 +128,17 @@
<td rowspan="{$data.row}">{$data.is_collection|default="--"}</td>
<td rowspan="{$data.row}">{$data.advance_amount|default="--"}</td>
<td rowspan="{$data.row}">{$data.has_advance_charge|default="--"}</td>
<td rowspan="{$data.row}">{$data.has_game_evidence|default="--"}</td>
<td rowspan="{$data.row}">{$data.is_sign_contract|default="--"}</td>
<td rowspan="{$data.row}">{$data.contract_time}</td>
<td rowspan="{$data.row}">{$data.validity_time}</td>
<td rowspan="{$data.row}">{$data.company_tax_no|default="--"}</td>
<td rowspan="{$data.row}">{$data.invoice_rate|showPercent}</td>
<td rowspan="{$data.row}">{$data.invoice_type|default="--"}</td>
<td rowspan="{$data.row}">{$data.taxation_rate|showPercent}</td>
<td rowspan="{$data.row}">{$data.channel_rate|showPercent}</td>
<td rowspan="{$data.row}">{$data.reg_address|default="--"}</td>
<td rowspan="{$data.row}">{$data.reg_phone|default="--"}</td>
@ -147,7 +146,6 @@
<td rowspan="{$data.row}">{$data.link_phone|default="--"}</td>
<td rowspan="{$data.row}">{$data.address|default="--"}</td>
<td rowspan="{$data.row}">{$data.has_server_fee|default="--"}</td>
<td rowspan="{$data.row}">{$data.server_fee|default="--"}</td>
<td rowspan="{$data.row}">{$data.cooperation_status|default="--"}</td>

@ -700,12 +700,22 @@
<block name="script">
<script type="text/javascript">
//导航高亮
highlight_subnav("{:U('PromoteCompany/lists')}");
$('#submit').click(function(){
$('#form').submit();
});
var ids = [];
showTab();
highlight_subnav("{:U('PromoteCompany/lists')}");
var flag = false;
$('#submit').click(function(){
if (!flag) {
flag = true;
setTimeout(function () {
flag = false;
$('#form').submit();
}, 500);
}else{
layer.msg('请求处理中,请勿重复点击');
}
});
var ids = [];
showTab();
</script>
<script>
var doc = [];

@ -825,6 +825,32 @@ class PromoteService {
return $chain == '' ? 1 : count(explode('/', $chain));
}
public function getIdsByChain($chain)
{
$chain = trim($chain, '/');
return $chain == '' ? [] : explode('/', $chain);
}
public function isSub($promote, $parent)
{
$chainList = $this->getIdsByChain($promote['chain']);
if (in_array($parent['id'], $chainList)) {
return true;
}
return false;
}
public function isSubOrSelf($promote, $parent)
{
if ($promote['id'] == $parent['id']) {
return true;
} elseif ($this->isSub($promote, $parent)) {
return true;
} else {
return false;
}
}
/**
* 获取最上级的推广员
*/
@ -854,6 +880,18 @@ class PromoteService {
return M('promote', 'tab_')->field($fields)->where($conditions)->select();
}
public function subInSql($promote, $withSelf = true)
{
$conditions = [
'chain' => ['like', $promote['chain'] . $promote['id'] . '/%']
];
if ($withSelf != 0) {
$conditions['_logic'] = 'or';
$conditions['id'] = $promote['id'];
}
return M('promote', 'tab_')->field(['id'])->where($conditions)->select(false);
}
public function getLevelName($level)
{
return self::$levels[$level] ?? '未知';
@ -1122,7 +1160,7 @@ class PromoteService {
$selfGameIds = $topGameIds;
// $selfGameIds = $promote['game_ids'] == '' ? [] : explode(',', $promote['game_ids']);
// $selfGameIds = array_intersect($topGameIds, $selfGameIds);
if ($promote['level'] == 1) {
return $selfGameIds;
}

@ -0,0 +1,133 @@
<?php
namespace Base\Service;
use Base\Facade\Request;
use Base\Tool\GameCatClient;
class TestingResourceService
{
public static $provideStatusList = [
'0' => '待发放',
'1' => '已发放',
'2' => '异常',
];
public static $verifyStatusList = [
'0' => '未审核',
'1' => '审核通过',
'2' => '审核拒绝',
];
public function getProvideStatusText($provideStatus)
{
return self::$provideStatusList[$provideStatus] ?? '未知';
}
public function getVerifyStatusText($verifyStatus)
{
return self::$verifyStatusList[$verifyStatus] ?? '未知';
}
public function verify($batch)
{
if ($batch['verify_status'] != 0) {
throw new \Exception('审核状态异常');
}
$batchData = [];
$batchData['verify_time'] = time();
$batchData['update_time'] = time();
if (!in_array($batch['game_id'], [229, 230])) {
$batchData['verify_status'] = 2;
$batchData['verify_remark'] = '该游戏发放功能暂未实现';
M('testing_resource_batch', 'tab_')->where(['id' => $batch['id']])->save($batchData);
throw new \Exception('该游戏发放功能暂未实现');
}
$batchData['verify_status'] = 1;
$batchData['verify_remark'] = '审核成功';
M('testing_resource_batch', 'tab_')->where(['id' => $batch['id']])->save($batchData);
}
public function provide($batch)
{
if ($batch['verify_status'] != 1) {
throw new \Exception('该申请未审核通过');
}
if ($batch['provide_status'] != 0) {
throw new \Exception('发放状态异常');
}
$role = M('user_play_info', 'tab_')
->field(['id', 'role_id', 'user_id', 'promote_id', 'user_account', 'sdk_version'])
->where(['game_id' => $batch['game_id'], 'role_id' => $batch['role_id']])
->find();
$orders = M('testing_resource_order', 'tab_')
->where(['batch_id' => $batch['id']])
->select();
$hasError = false;
$provideAmount = 0;
foreach ($orders as $order) {
$result = $this->provideFromGameCat($order, $role);
$orderData = [
'result' => json_encode(['code' => $result['code'], 'message' => $result['message']]),
];
if (!$result['status']) {
$hasError = true;
$orderData['provide_status'] = 2;
} else {
$orderData['provide_status'] = 1;
}
$provideAmount += round($order['ref_amount'] * $order['num'], 2);
$orderData['provide_time'] = time();
M('testing_resource_order', 'tab_')
->where(['id' => $order['id']])
->save($orderData);
}
$batchData = [];
if ($hasError) {
$batchData['provide_status'] = 2;
} else {
$batchData['provide_status'] = 1;
}
$batchData['provide_time'] = time();
$batchData['provide_amount'] = $provideAmount;
$batchData['update_time'] = time();
M('testing_resource_batch', 'tab_')
->where(['id' => $batch['id']])
->save($batchData);
}
public function provideFromGameCat($order, $role)
{
$gameCatClient = new GameCatClient();
$result = $gameCatClient->api('provide', [
'roleId' => $role['role_id'],
'amount' => intval($order['ref_amount']),
'supportItem' => $order['ref_id'],
'supportType' => '0',
'channelUid' => $role['user_account'],
'applyRemark' => $order['remark'] == '' ? '测试资源申请' : $order['remark'],
'applyId' => $order['order_no'],
'device_type' => $role['sdk_version'] == 1 ? 'andriod' : 'ios',
]);
if ($result['state'] == 1 && $result['data']) {
return [
'status' => true,
'message' => $result['msg'],
'code' => 1,
];
} else {
return [
'status' => false,
'msg' => $result['msg'],
'code' => $result['state'],
];
}
}
}

@ -3,7 +3,8 @@ namespace Base\Service;
use Base\Facade\Request;
class UserService {
class UserService
{
public function isAccountExist($account)
{

@ -0,0 +1,108 @@
<?php
namespace Base\Tool;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
/**
* 游戏猫接口客户端
*/
class GameCatClient
{
const SIGN_NAME = 'sign';
const SUCCESS = '0000';
protected $client;
private $apis = [
'get-pay-type' => ['uri' => '/game/support/items/v1', 'method' => 'post'],
'provide' => ['uri' => '/game/support/provide/v1', 'method' => 'post'],
];
private $appIds = [
'andriod' => 1746,
'ios' => 1747,
];
private $channelIds = [
'andriod' => 11595,
'ios' => 11596,
];
public function __construct()
{
$this->client = new Client([
'base_uri' => C('GAME_CAT_URL'),
'timeout' => 10.0,
]);
}
public function api($api, array $params = [])
{
$api = $this->apis[$api] ?? null;
if (is_null($api)) {
throw new \Exception('接口不存在');
}
$deviceType = 'andriod';
if (isset($params['device_type'])) {
$deviceType = $params['device_type'];
unset($params['device_type']);
}
$params['appId'] = $this->appIds[$deviceType] ?? $this->appIds['andriod'];
$params['channelId'] = $this->channelIds[$deviceType] ?? $this->channelIds['andriod'];
$params['timestamp'] = time();
$params[self::SIGN_NAME] = $this->sign($params);
try {
return $this->request($api, $params);
} catch (\Exception $e) {
$env = C('APP_ENV', null, 'prod');
return ['code' => 1000, 'state' => 1000, 'message' => '接口请求错误。' . ($env == 'prod' ? '' : $e->getMessage()) , 'data' => []];
}
}
public function request($api, $params)
{
if ($api['method'] == 'get') {
return $this->get($api['uri'], $params);
} else {
return $this->post($api['uri'], $params);
}
}
protected function post($uri, array $params = [])
{
$response = $this->client->post($uri, [
'verify' => false,
'form_params' => $params,
]);
$result = (string)$response->getBody();
/* var_dump($uri);
var_dump($params);
var_dump($result); */
return json_decode($result, true);
}
protected function get($uri, array $params = [])
{
$response = $this->client->get($uri, [
'verify' => false,
'query' => $params,
]);
$result = (string)$response->getBody();
return json_decode($result, true);
}
protected function sign($params)
{
unset($params[self::SIGN_NAME]);
ksort($params);
$params['key'] = C('GAME_CAT_KEY');
$signRows = [];
foreach ($params as $key => $value) {
$signRows[] = $key . '=' . $value;
}
// var_dump(implode('&', $signRows));
return md5(implode('&', $signRows));
}
}

@ -833,7 +833,15 @@ function Status_recovery($msg){
if (empty($str)) {return $title;}
$find = array('%webname%','%gamename%','%newsname%','%giftname%','%gametype%', '%catetitle%', '%gamedevice%');
$replace = array($title,$array['game_name'],$array['news_title'],$array['giftbag_name'],$array['game_type_name'],$array['cate_title'],$array['game_device']);
$replace = array(
$title,
$array['game_name'] ?? '',
$array['news_title'] ?? '',
$array['giftbag_name'] ?? '',
$array['game_type_name'] ?? '',
$array['cate_title'] ?? '',
$array['game_device'] ?? ''
);
$str = str_replace($find,$replace,$str);
return preg_replace('/((-|_)+)?((%[0-9A-Za-z_]*%)|%+)((-|_)+)?/','',$str);

@ -1446,18 +1446,18 @@ class DownloadController extends BaseController {
if (!empty(I('begtime')) && empty(I('endtime'))) {
$map['tab_spend.pay_time'] = ['egt', strtotime(I('begtime'))];
$map['tab_spend.spend_time'] = ['egt', strtotime(I('begtime'))];
} elseif (empty(I('begtime')) && !empty(I('endtime'))) {
$map['tab_spend.pay_time'] = ['elt', strtotime(I('endtime')) + 86399];
$map['tab_spend.spend_time'] = ['elt', strtotime(I('endtime')) + 86399];
} elseif (!empty(I('begtime')) && !empty(I('endtime'))) {
$map['tab_spend.pay_time'] = ['between', [strtotime(I('begtime')), strtotime(I('endtime')) + 86399]];
$map['tab_spend.spend_time'] = ['between', [strtotime(I('begtime')), strtotime(I('endtime')) + 86399]];
}else {
$nowTime = date('Y-m-d');
$initBegTime = date('Y-m-d', strtotime('-6 day', strtotime($nowTime)));
$initEndTime = date('Y-m-d');
$initBegTime = strtotime($initBegTime);
$initEndTime = strtotime($initEndTime);
$map['tab_spend.pay_time'] = ['between',[$initBegTime,$initEndTime]];
$map['tab_spend.spend_time'] = ['between',[$initBegTime,$initEndTime]];
}
empty(I('relation_game_id')) || $map['tab_game.relation_game_id'] = I('relation_game_id');

@ -99,7 +99,7 @@ class QueryController extends BaseController
$map['tab_spend.pay_status'] = $payStatus;
}
}
$map['tab_spend.pay_time'] = ['between', [$begTime, $endTime - 1]];
$map['tab_spend.spend_time'] = ['between', [$begTime, $endTime - 1]];
$data = [];
$count = 0;

@ -112,13 +112,13 @@
<?php endif;?>
<a href="{:U('Safe/promoteLogs')}" class="<if condition='CONTROLLER_NAME eq Safe and (ACTION_NAME eq promoteLogs or ACTION_NAME eq promoteLogs or ACTION_NAME eq promoteLogs or ACTION_NAME eq promoteLogs ) '>active</if> ">操作日志</a>
</div>
<?php if($loginer['level'] <= 2):?>
<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('TestResource/index')}" class="<if condition='CONTROLLER_NAME eq TestResource and (ACTION_NAME eq index or ACTION_NAME eq add or ACTION_NAME eq apply ) '>active</if> ">测试资源申请</a>
<a href="{:U('TestResource/lists')}" class="<if condition='CONTROLLER_NAME eq TestResource and ACTION_NAME eq lists '>active</if> ">测试资源申请记录</a>
<a href="{:U('TestResource/supportNumberList')}" class="<if condition='CONTROLLER_NAME eq TestResource and (ACTION_NAME eq supportNumberList or ACTION_NAME eq freezeSupport or ACTION_NAME eq unfreezeSupport or ACTION_NAME eq rechangePassward ) '>active</if> ">测试号管理</a>
<a href="{:U('TestResource/protectLogList')}" class="<if condition='CONTROLLER_NAME eq TestResource and ACTION_NAME eq protectLogList '>active</if> ">日志管理</a>
<a href="{:U('TestingResource/index')}" class="<if condition='CONTROLLER_NAME eq TestingResource and ACTION_NAME eq index '>active</if> ">测试资源申请</a>
<a href="{:U('TestingResource/batches')}" class="<if condition='CONTROLLER_NAME eq TestingResource and ACTION_NAME eq batches '>active</if> ">测试资源申请记录</a>
</div>
<?php endif;?>
<!--<eq name="parent_id" value="0">
<div class="subNav jssubNav"><i class="prev_icon icon_fenbao"></i><span>扶持管理</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">

@ -0,0 +1,574 @@
<extend name="Public/basic"/>
<block name="body">
<style>
.trunk-search .form-group {
margin-left: 10px;
}
.normal_table input {
position: relative;
padding: 5px;
border: 1px solid #E5E5E5;
border-radius: 4px;
height: 25px;
}
.normal_table td {
padding: 5px;
}
.normal_table td select {
width: 100%;
}
.normal_table td button {
width: 70px;
height: 35px;
display: block;
background: #409eff;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
}
.normal_table td button.delete-row {
background-color: rgb(249,104,104);
}
.btn-row {
position: relative;
font-size: 11px;
margin-top: 28px;
text-align: center;
}
.btn-row button {
width: 70px;
height: 35px;
display: block;
background: #409eff;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
display: inline-block;
}
.btn-row button.close-btn {
background: #E5E5E5;
color: #535875;
}
.form-group .static-input {
line-height: 32px;
display: inline-block;
}
.trunk-search button {
width: 70px;
height: 35px;
display: block;
background: #409eff;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
display: inline-block;
}
.info-row {
margin-top: 10px;
}
.info-row button {
width: 120px;
height: 25px;
display: block;
background: #E5E5E5;
color: #535875;
border: none;
border-radius: 4px;
cursor: pointer;
display: inline-block;
margin-left: 10px;
}
.info-row button.bind-btn {
background: #409eff;
color: #fff;
}
</style>
<div class="page-search normal_list promoteCoin-record-search" style="padding: 20px;">
<div class="trunk-content article">
<div class="trunk-search clearfix" style="margin-bottom: 10px;">
<form method="post" class="clearfix">
<div class="clearfix">
<div class="form-group fl">
<select id="game-select" name="" class="select_gallery" style="width:150px" <?php if($role):?>disabled<?php endif;?>>
<option value="0">请选择游戏</option>
<?php foreach($games as $game):?>
<option value="<?=$game['id']?>" <?php if($role && $role['game_id'] == $game['id']):?>selected<?php endif;?>>
<?=$game['game_name']?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="form-group fl">
<select id="server-select" class="select_gallery" style="width:150px" <?php if($role):?>disabled<?php endif;?>>
<option value="0">请选择区服</option>
<?php foreach($servers as $server):?>
<option value="<?=$server['id']?>" <?php if($role && $server['server_id'] == $role['server_id']):?>selected<?php endif;?>>
<?=$server['server_name']?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="form-group fl">
<input id="test_account" type="text" name="account" class="txt normal_txt" placeholder="请输入测试资源账号" value="{$role.user_account}" <?php if($role):?>disabled<?php endif;?>>
</div>
<div class="form-group fl">
<select id="role-select" name="role_id" class="select_gallery" style="width:150px" <?php if($role):?>disabled<?php endif;?>>
<option value="">请选择角色</option>
<?php if($role):?>
<option value="<?=$role['role_id']?>" selected><?=$role['role_name']?></option>
<?php endif;?>
</select>
</div>
</div>
<?php if($role):?>
<div class="info-row">
<?php if($bindingRole):?>
<button type="button">绑定角色: <?= $bindingRole['role_name']?></button>
<?php else:?>
<button id="bind-btn" class="bind-btn" type="button">绑定玩家角色</button>
<?php endif;?>
<div class="" style="display:inline-block; margin-left: 10px;">
当前可用额度:<span id="quota" data-quota="<?=$quota?>"><?=$quota?></span> 待审核额度:<span id="verify-quota">0</span>
</div>
</div>
<?php endif;?>
<div class="clearfix" style="margin-top: 10px;">
<div class="form-group fl">
<select id="resource-type-select" name="resource_type_id" style="width:150px" class="select_gallery">
<option value="">请选择资源类型</option>
</select>
</div>
<div class="form-group fl">
<select id="resource-select" name="resource_id" style="width:150px" class="select_gallery">
<option value="">请选择资源内容</option>
</select>
</div>
<div class="form-group fl">
<input id="remark-input" type="text" name="remark" class="txt normal_txt" id="uid" placeholder="请输入备注" value="">
</div>
<div class="form-group fl">
<p id="resource-amount" class="static-input">资源价值: --</p>
</div>
<div class="form-group fl">
<p class="static-input">资源数量: 1</p>
<!-- <input id="num-input" type="text" name="num" class="txt normal_txt" id="uid" placeholder="请输入资源数量" value=""> -->
</div>
<div class="form-group fl">
<button id="add-row" class="add-row" type="button">增加</button>
</div>
</div>
</form>
</div>
<div class="trunk-list list_normal">
<div class="table-wrapper" style="height: 280px;">
<table id="resource-table" class="table normal_table">
<thead>
<tr class="table-header">
<th width="150">资源类型</th>
<th width="150">资源内容</th>
<th>资源价值</th>
<th>资源数量</th>
<th>备注</th>
<th>操作</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div class="btn-row clearfix">
<button id="submit-btn" class="submit-btn" type="button">提交</button>
<button id="close-btn" class="close-btn" type="button">关闭</button>
</div>
</div>
</div>
</div>
<div id="bind-box" class="layer-box" style="display: none;">
<form method="post" enctype="multipart/form-data">
<div class="form-group">
<label>玩家账号</label>
<div class="form-item" style="width: 250px">
<input id="bind_account" name="account" type="text" class="form-input" style="width: 100%;">
</div>
</div>
<div class="form-group">
<label>玩家角色</label>
<div class="form-item" style="width: 250px">
<select id="bind-role-select" name="role_id" style="width:270px" class="select_gallery">
<option value="">请选择</option>
</select>
</div>
</div>
<div class="form-group">
<label></label>
<a id="submit-bind" href="javascript:;" class="add-submit btn">确定</a>
</div>
</form>
</div>
</block>
<block name="script">
<script type="text/javascript" src="__JS__/20170831/select2.min.js"></script>
<script type="text/javascript">
$(".select_gallery").select2()
var globalGameId = $('#game-select').val()
if (globalGameId > 0) {
initTable(globalGameId)
}
$('#game-select').on({
change: function () {
var gameId = $(this).val()
globalGameId = gameId
$.ajax({
url: "{:U('getServers')}",
type: "post",
data: { game_id: gameId },
dataType: 'json',
success: function(result){
if (result.status == 1) {
var servers = result.data.servers
var html = "<option value='0'>请选择区服</option>";
for (var i in servers){
html += "<option value='"+servers[i].id+"'>"+servers[i].server_name+"</option>"
}
$("#server-select").html(html);
$("#server-select").select2();
} else {
}
}
})
initTable(gameId)
}
})
var resourceTypes = new Array()
var rowCount = 0
function initTable(gameId) {
var table = $('#resource-table');
table.find('.normal-row').remove()
$.ajax({
url: "{:U('getResourceTypes')}",
type: "post",
data: { game_id: gameId },
dataType: 'json',
success: function(result){
if (result.status == 1) {
rowCount = 0
resourceTypes = result.data.resourceTypes
var selector = $('#resource-type-select')
var html = getResourceTypesHtml()
selector.html(html)
selector.select2();
var resourceSelector = $('#resource-select')
resourceSelector.html(getResourcesHtml([]))
resourceSelector.select2();
$('#resource-amount').html('资源价值:--')
$('#resource-table tbody').html('')
} else {
}
}
})
}
function getResourceTypesHtml() {
var html = "<option value=''>请选择资源类型</option>";
for (var i in resourceTypes) {
html += "<option value='"+resourceTypes[i].id+"'>"+resourceTypes[i].name+"</option>"
}
return html
}
$('#resource-type-select').change(function () {
var that = this
var typeId = $(this).val()
$.ajax({
url: "{:U('getResources')}",
type: "post",
data: { type_id: typeId },
dataType: 'json',
success: function(result){
if (result.status == 1) {
var resources = result.data.resources
var html = getResourcesHtml(resources)
var rowSelect = $('#resource-select')
rowSelect.html(html);
rowSelect.select2();
} else {
}
}
})
})
function getResourcesHtml(resources) {
var html = "<option value=''>请选择资源内容</option>";
for (var i in resources){
html += "<option value='"+resources[i].ref_id+"' data-amount="+resources[i].amount+">"+resources[i].name+"</option>"
}
return html
}
$('#resource-select').change(function () {
var amount = $(this).find('option:selected').attr('data-amount')
amount = amount == undefined ? '--' : amount
$('#resource-amount').html('资源价值:' + amount)
})
$('#add-row').click(function () {
if (rowCount >= 5) {
return layer.msg('最多同时只能添加5条')
}
var resourceTypeId = $('#resource-type-select').val()
var resourceId = $('#resource-select').val()
var resourceTypeName = $('#resource-type-select option:selected').html()
var resourceName = $('#resource-select option:selected').html()
var amount = $('#resource-select option:selected').attr('data-amount')
amount = amount == undefined ? '--' : amount
// var num = $('#num-input').val()
var num = 1
var remark = $('#remark-input').val()
if (resourceTypeId == '') {
return layer.msg('请选择资源类型')
}
if (resourceId == '') {
return layer.msg('请选择资源内容')
}
if (num == '') {
return layer.msg('请输入资源数量')
}
var html = '<tr class="normal-row" data-resource-id="' + resourceId + '" data-resource-type-id="' + resourceTypeId + '" >' +
'<td>' + resourceTypeName + '</td>' +
'<td>' + resourceName + '</td>' +
'<td class="amount">' + amount + '</td>' +
'<td class="num"><input name="num" type="text" value="' + num + '" readonly></td>' +
'<td class="remark"><input name="remark" type="text" value="' + remark + '"></td>' +
'<td><button class="delete-row" type="button" class="danger-btn">删除</button></td>' +
'</tr>';
$('#resource-table tbody').append(html)
rowCount ++
$(".select_gallery").select2()
statQuota()
})
$('#resource-table').on('click', '.delete-row', function () {
var tr = $(this).parents('tr').eq(0)
rowCount --
tr.remove()
statQuota()
})
$('#resource-table').on('blur', 'input[name=num]', function() {
if($(this).val() == '') {
return layer.msg('请输入资源数量')
} else {
statQuota()
}
})
function statQuota() {
var quota = $('#quota').attr('data-quota')
var verifyQuota = 0
$('#resource-table').find('.normal-row').each(function (index, ele) {
verifyQuota += $(ele).find('.amount').html() * $(ele).find('.num').children('input').val()
})
$('#verify-quota').html(verifyQuota)
$('#quota').html(quota-verifyQuota)
}
$('#test_account').on({
blur: function() {
var gameId = $('#game-select').val()
if (gameId == 0) {
return layer.msg('请选择游戏')
}
var serverId = $('#server-select').val()
if (serverId == 0) {
return layer.msg('请选择区服')
}
var userAccount = $('#test_account').val()
if (userAccount == '') {
return layer.msg('请输入测试资源账号')
}
getUserRoles(userAccount, gameId, serverId, function(roles, isTestingAccount) {
if (roles.length == 0) {
return layer.msg('当前账号在该区服未创建角色')
}
if (!isTestingAccount) {
return layer.msg('此账号非测试账号')
}
var html = "<option value=''>请选择角色</option>";
for (var i in roles){
html += "<option value='"+roles[i].role_id+"'>"+roles[i].role_name+"</option>"
}
$("#role-select").html(html);
$("#role-select").select2();
})
}
})
function getUserRoles(userAccount, gameId, serverId, callback) {
$.ajax({
url: "{:U('getUserRoles')}",
type: "post",
data: { user_account: userAccount, game_id: gameId, server_id: serverId },
dataType: 'json',
success: function(result){
if (result.status == 1) {
var roles = result.data.roles
var isTestingAccount = result.data.is_testing_account
callback(roles, isTestingAccount)
} else {
layer.msg(result.message)
}
}
})
}
$('#bind_account').on({
blur: function () {
var gameId = $('#game-select').val()
if (gameId == 0) {
return layer.msg('请选择游戏')
}
var serverId = $('#server-select').val()
if (serverId == 0) {
return layer.msg('请选择区服')
}
var userAccount = $('#bind_account').val()
if (userAccount == '') {
return layer.msg('请输入玩家账号')
}
getUserRoles(userAccount, gameId, serverId, function(roles, isTestingAccount) {
if (roles.length == 0) {
return layer.msg('玩家账号在该区服未创建角色')
}
if (isTestingAccount) {
return layer.msg('此账号为测试账号,无法绑定')
}
var html = "<option value=''>请选择角色</option>";
for (var i in roles){
html += "<option value='"+roles[i].role_id+"'>"+roles[i].role_name+"</option>"
}
$("#bind-role-select").html(html);
$("#bind-role-select").select2();
})
}
})
function getRecords() {
var records = []
$('#resource-table tbody tr').each(function (index, tr) {
var num = $(tr).find('input[name=num]').val()
var remark = $(tr).find('input[name=remark]').val()
var resourceId = $(tr).attr('data-resource-id')
var resourceTypeId = $(tr).attr('data-resource-type-id')
records.push({
resource_id: resourceId,
resource_type_id: resourceTypeId,
num: num,
remark: remark,
})
})
return records
}
$('#bind-btn').click(function () {
var box = $('#bind-box')
layer.open({
title: '绑定玩家角色',
type: 1,
content: box,
area: ['500px', '250px'],
zIndex: 250,
scrollbar: false
})
});
$('#submit-bind').click(function () {
var gameId = $('#game-select').val()
if (gameId == 0) {
return layer.msg('请选择游戏')
}
var roleId = $('#role-select').val()
if (roleId == 0) {
return layer.msg('请选择测试账号角色')
}
var bindRoleId = $('#bind-role-select').val()
if (bindRoleId == 0) {
return layer.msg('请选择玩家角色')
}
$.ajax({
url: "{:U('bindRole')}",
type: "post",
data: { game_id: gameId, bind_role_id: bindRoleId, testing_role_id: roleId},
dataType: 'json',
success: function(result){
if (result.status == 1) {
layer.msg(result.message, function(){
window.location.href = window.location.href
})
} else {
layer.msg(result.message)
}
}
})
})
$('#submit-btn').on({
click: function () {
var records = getRecords()
if (records.length == 0) {
return layer.msg('至少添加一项资源申请')
}
for (var i in records) {
if (records[i].num == '') {
return layer.msg('请输入资源数量')
}
}
var gameId = $('#game-select').val()
var serverId = $('#server-select').val()
var userAccount = $('#test_account').val()
var roleId = $('#role-select').val()
if (gameId == 0) {
return layer.msg('请选择游戏')
}
if (serverId == 0) {
return layer.msg('请选择区服')
}
if (userAccount == '') {
return layer.msg('请输入测试资源账号')
}
if (roleId == 0) {
return layer.msg('请选择角色')
}
$.ajax({
url: "{:U('doApply')}",
type: "post",
data: { records: records, game_id: gameId, server_id: serverId, user_account: userAccount, role_id: roleId},
dataType: 'json',
success: function(result){
if (result.status == 1) {
layer.msg(result.message, function(){
parent.window.location.href = "{:U('batches')}"
})
} else {
layer.msg(result.message)
}
}
})
}
})
$('#close-btn').on({
click: function () {
var index = parent.layer.getFrameIndex(window.name)
parent.layer.close(index)
}
})
</script>
</block>

@ -0,0 +1,306 @@
<extend name="Public/promote_base"/>
<block name="css">
<link href="__CSS__/20180207/data.css" rel="stylesheet">
<link href="__CSS__/20180207/manager.css" rel="stylesheet" >
<link href="__CSS__/20180207/finance.css" rel="stylesheet">
<style>
.page-list .trunk-search{
padding-top: 20px;
}
.view-detail {
width: 70px;
height: 35px;
display: block;
background: #409eff;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
}
.normal_table td .status-0 {
color: #e6a23c;
}
.normal_table td .status-1 {
color: #67c23a;
}
.normal_table td .status-2 {
color: #f56c6c;
}
.normal_table tr td {
padding: 10px 5px;
}
</style>
</block>
<block name="body">
<div class="page-list normal_list apply-app_apply-list">
<div class="trunk-title">
<div class="location">
<div class="location-container">当前位置:<span>测试资源></span><span>测试资源申请记录</span></div>
</div>
<img src="__IMG__/20180207/icon_normal_shenqing.png">
<span class="title_main">测试资源申请记录</span>
<span class="details">说明:测试资源申请记录</span>
</div>
<div class="trunk-content article">
<div class="trunk-search clearfix">
<div id="form1">
<div class="form-group normal_space fr">
<input type="submit" class="submit" id='submit' value="查询" url="{:U('batches')}" style="cursor:pointer;">
</div>
<div class="form-group normal_space fr">
<select name="provide_status" class="reselect select_gallery">
<option status-id="" value="">请选择发放状态</option>
<?php foreach($provideStatusList as $key => $name):?>
<option status-id="<?=key?>" value="<?=$key?>" <?php if(strval($key) === I('provide_status')):?>selected="selected"<?php endif;?>>
<?=$name?>
</option>
<?php endforeach;?>
</select>
</div>
<div class="form-group normal_space fr" style="margin-left: 9px;">
<label class="form-title select-title" style="margin-right: 9px;"></label>
<div class="select-time">
<input type="text" id="edate" class="txt" name="create_time_end" placeholder="结束时间" value="{:I('create_time_end')}" autocomplete="off">
</div>
</div>
<div class="form-group normal_space fr">
<label class="form-title select-title">申请时间:</label>
<div class="select-time">
<input type="text" id="sdate" class="txt" name="create_time_start" placeholder="开始时间" value="{:I('create_time_start')}" autocomplete="off">
</div>
</div>
<div class="form-group normal_space fr">
<input type="text" name="account" class="txt normal_txt" id="uid" style="width:110px;" placeholder="请输入玩家账号" value="{:I('account')}" onKeyDown="webchat_chkkeysend(event);">
</div>
<div class="form-group normal_space fr">
<span id="server_js">
<select id="server_id" name="server_id" class="reselect select_gallery" style="width:101px">
<option server-id="0" value="">请选择区服</option>
<?php foreach($servers as $server):?>
<option server-id="<?=$server['server_id']?>" value="<?=$server['server_id']?>" <?php if($server['server_id'] == I('server_id')):?>selected="selected"<?php endif;?>>
<?=$server['server_name']?>
</option>
<?php endforeach;?>
</select>
</span>
</div>
<div class="form-group normal_space fr">
<select id="game_id" name="game_id" class="reselect select_gallery" >
<option game-id="0" value="">请选择游戏</option>
<?php foreach($games as $game):?>
<option game-id="<?=$game['id']?>" value="<?=$game['id']?>" <?php if($game['id'] == I('game_id')):?>selected="selected"<?php endif;?>>
<?=$game['game_name']?>
</option>
<?php endforeach;?>
</select>
</div>
</div>
</div>
</div>
<div class="page-list apply-app_apply-list query-recharge-list">
<div class="trunk-content article">
<div class="tabcon trunk-list">
<table class="table normal_table zwm_tab" >
<tr class="odd zwm_tr">
<th width="125px">批次号</th>
<th>申请时间</th>
<th>游戏名称</th>
<th>区服名称</th>
<th>角色名称</th>
<th>测试账号</th>
<th>手机号</th>
<th>所属推广员</th>
<th>申请人</th>
<!-- <th>发放总金额</th> -->
<th>申请金额</th>
<th>发放金额</th>
<th>审核状态</th>
<th>审核时间</th>
<th>发放状态</th>
<th>发放时间</th>
<!-- <th>资源内容</th> -->
<th>操作</th>
</tr>
<empty name="records">
<tr><td colspan="16" style="text-align: center;height: 45vh;"><img src="__IMG__/20180207/icon_wushujv2.png"/><p style="line-height: 40px;color: #A5A5A5;">暂无数据</p></td></tr>
<else />
<volist name="records" id="record" mod="2">
<tr data-id="{$record.id}" class="<eq name='mod' value='1'>odd</eq>">
<td style="word-wrap:break-word;">{$record.batch_no}</td>
<td>
<?=substr($record['create_time'], 0, 10)?>
<br>
<?=substr($record['create_time'], 10)?>
</td>
<td>{$record.game_name}</td>
<td>{$record.server_name}</td>
<td>{$record.role_name}</td>
<td>{$record.user_account}</td>
<td>{$record.user_phone}</td>
<td>{$record.promote_account}</td>
<td>{$record.apply_promote_account}</td>
<!-- <td>{$record.history_provide_amount}</td> -->
<td>{$record.apply_amount}</td>
<td>{$record.provide_amount}</td>
<td>
<span class="status-{$record.verify_status}">{$record.verify_status_text}</span>
</td>
<td>
<?=substr($record['verify_time'], 0, 10)?>
<br>
<?=substr($record['verify_time'], 10)?>
</td>
<td>
<span class="status-{$record.provide_status}">{$record.provide_status_text}</span>
</td>
<td>
<?=substr($record['provide_time'], 0, 10)?>
<br>
<?=substr($record['provide_time'], 10)?>
</td>
<!-- <td>{$record.content}</td> -->
<td><button class="view-detail">操作</button></td>
</tr>
</volist>
</empty>
</table>
<div class="pagenation clearfix">
{$pagination}
</div>
</div>
</div>
</div>
</div>
</block>
<block name="script">
<link rel="stylesheet" type="text/css" href="__CSS__/p_jquery.datetimepicker.css">
<script type="text/javascript" src="__JS__/jquery.datetimepicker.js"></script>
<script type="text/javascript" src="__JS__/20170831/select2.min.js"></script>
<script src="__STATIC__/layer/layer.js"></script>
<script type="text/javascript">
$().ready(function(){
setValue('row','{:I("get.row",10)}');
$("#pagehtml a").on("click",function(event){
event.preventDefault();//使a自带的方法失效即无法调整到href中的URL(http://www.baidu.com)
var geturl = $(this).attr('href');
$('#data_form').attr('action',geturl);
$('#data_form').submit();
});
$('#sdate').datetimepicker({
lang:'ch',
format:'Y-m-d',
formatDate:'Y-m-d',
timepicker:false
});
$(".select_gallery").select2();
$('#edate').datetimepicker({
lang:'ch',
format:'Y-m-d',
formatDate:'Y-m-d',
timepicker:false
});
$('.view-detail').on({
click:function () {
var url = "{:U('TestingResource/orders', '', '')}"
var id = $(this).parents('tr').eq(0).attr('data-id')
url += '/id/' + id
layer.open({
title: '查看申请订单',
type: 2,
content: [url , 'no'],
area: ['1200px', '400px'],
zIndex: 250,
scrollbar: false,
})
}
})
});
</script>
<script type="text/javascript">
$("#submit").click(function(){
var sdate =$('#sdate').val();
var edate =$('#edate').val();
if(Date.parse(sdate) > Date.parse(edate)){
layer.msg('开始时间必须小于等于结束时间');
return false;
}
var url = $(this).attr('url');
var query = $('#form1').find('input').serialize();
query += "&"+$('#form1').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;
});
$("#game_id").change(function(){
$.ajax({
url: "{:U('getServers')}",
type: "post",
data: {game_id:$("#game_id option:selected").attr('game-id')},
dataType: 'json',
success: function(result) {
if (result.status == 1) {
var servers = result.data.servers
var str = "<option value=''>请选择区服</option>"
for (var i in servers){
str += "<option value='"+servers[i].server_name+"'>"+servers[i].server_name+"</option>"
}
$("#server_id").empty()
$("#server_id").append(str)
$("#server_id").select2()
}
}
})
})
function webchat_chkkeysend(event)
{
if (event.keyCode==13) {
$('#submit').click();
}
}
</script>
</block>

@ -0,0 +1,499 @@
<extend name="Public/promote_base" />
<block name="css">
<link href="__CSS__/20180207/data.css" rel="stylesheet">
<link href="__CSS__/20180207/manager.css" rel="stylesheet">
<link href="__CSS__/20180207/finance.css" rel="stylesheet">
<style>
@media screen and (max-width: 1500px) {
.normal_form {
padding-top: 45px;
}
.trunk-search .normal_txt {
width: 100px
}
.select2-container--default .select2-selection--single {
width: 125px;
}
.trunk-search .select-time .txt {
width: 100px;
}
.form-group .submit {
width: 55px;
}
}
.open_edit {
color: #19ADED;
text-decoration: none;
line-height: 40px;
border-collapse: collapse;
border-spacing: 0;
}
.apply {
color: #19ADED;
text-decoration: none;
line-height: 40px;
border-collapse: collapse;
border-spacing: 0;
}
.my_text {
position: relative;
padding: 0 10px;
border: 1px solid #D5D5D5;
border-radius: 5px;
outline: none;
font-size: 14px;
font-family: inherit;
height: 38px;
line-height: 38px;
}
.my_save {
width: 95px;
height: 36px;
line-height: 38px;
display: block;
background: #26C7DB;
color: #fff;
border: none;
border-radius: 4px;
text-align: center;
float: left;
cursor: pointer;
text-decoration: none;
padding: 0;
margin: 14px;
font-family: "微软雅黑";
box-sizing: border-box;
}
.td_tit {
width: 112px;
text-align: right;
padding: 0 24px 0 6px;
border: none;
}
.normal_table tr td {
padding: 10px 5px;
}
</style>
</block>
<block name="body">
<div class="page-search normal_list query-recharge-search jssearch">
<div class="trunk-title">
<div class="location">
<div class="location-container">当前位置:<span>测试资源></span><span>测试资源申请</span></div>
</div>
<img src="__IMG__/20180207/icon_normal_shenqing.png">
<span class="title_main">申请测试资源</span>
<span class="details">说明:申请测试资源</span>
</div>
<div class="trunk-content article">
<div class="trunk-search clearfix">
<div id="form1">
<div class="form-group normal_space fr">
<input type="submit" class="submit" id='submit' value="查询" url="{:U('index')}"
style="cursor:pointer;">
</div>
<div class="form-group normal_space fr">
<label class="form-title select-title" style="margin-right: 9px;"></label>
<div class="select-time">
<input type="text" id="edate" class="txt" name="create_time_end" placeholder="结束时间" value="{:I('create_time_end')}" autocomplete="off">
</div>
</div>
<div class="form-group normal_space fr">
<label class="form-title select-title">创建时间:</label>
<div class="select-time">
<input type="text" id="sdate" class="txt" name="create_time_start" placeholder="开始时间"
value="{:I('create_time_start')}" autocomplete="off">
</div>
</div>
<div class="form-group normal_space fr">
<input type="text" name="role_name" class="txt normal_txt" style="width:128px;"
placeholder="角色名称" value="{:I('role_name')}" onKeyDown="webchat_chkkeysend(event);">
</div>
<div class="form-group normal_space fr">
<input type="text" name="account" class="txt normal_txt" id="uid" style="width:128px;"
placeholder="测试账号" value="{:I('account')}" onKeyDown="webchat_chkkeysend(event);">
</div>
<div class="form-group normal_space fr">
<span id="server_js">
<select id="server_id" name="server_id" class="reselect select_gallery" style="width:101px" data-default="<?=I('server_id', '')?>">
<option server-id="0" value="">请选择区服</option>
<?php foreach($servers as $server):?>
<option server-id="<?=$server['server_id']?>" value="<?=$server['server_id']?>" <?php if($server['server_id'] == I('server_id')):?>selected="selected"<?php endif;?>>
<?=$server['server_name']?>
</option>
<?php endforeach;?>
</select>
</span>
</div>
<div class="form-group normal_space fr">
<select id="game_id" name="game_id" class="reselect select_gallery">
<option game-id="0" value="">请选择游戏</option>
<?php foreach($games as $game):?>
<option game-id="<?=$game['id']?>" value="<?=$game['id']?>" <?php if($game['id'] == I('game_id')):?>selected="selected"<?php endif;?>>
<?=$game['game_name']?>
</option>
<?php endforeach;?>
</select>
</div>
<br>
<br>
<br>
<div class="form-group normal_space fr">
<input type="button" class="submit" id='apply'
style="width: 100px;text-align: center;background:rgb(249,104,104);cursor:pointer;"
value="批量申请后续">
</div>
<div class="form-group normal_space fr">
<input type="button" class="submit" id='add'
style="width: 100px;text-align: center;background:rgb(249,104,104);cursor:pointer;"
value="新增测试号" url="{:U('add')}">
</div>
</div>
</div>
</div>
<div class="page-list apply-app_apply-list query-recharge-list">
<div class="trunk-content article">
<div class="tabcon trunk-list">
<table class="table normal_table">
<tr class="odd">
<th>
选择
</th>
<th>游戏名称</th>
<th>区服名称</th>
<th>测试账号</th>
<th>手机号</th>
<th>角色名称</th>
<th>绑定账号</th>
<th>绑定角色</th>
<th>初始额度</th>
<th>额外额度</th>
<th>累计额度</th>
<th>待审核金额</th>
<th>累计发放资源</th>
<th>今日发放金额</th>
<th>申请总金额</th>
<th>状态</th>
<th>创建时间</th>
</tr>
<empty name="records">
<tr>
<td colspan="15" style="text-align: center;height: 45vh;"><img
src="__IMG__/20180207/icon_wushujv2.png" />
<p style="line-height: 40px;color: #A5A5A5;">暂无数据</p>
</td>
</tr>
<else />
<volist name="records" id="record" mod="2">
<tr class="<eq name='mod' value='1'>odd</eq>">
<td>
<label class="checked">
<input class="ids" type="radio" value="{$record.id}" name="role_id">
<i class="check_icon"></i>
</label>
</td>
<td>{$record.game_name}</td>
<td>{$record.server_name}</td>
<td>{$record.user_account}</td>
<td>{$record.user_phone}</td>
<td>{$record.role_name}</td>
<td>{$record.bind_user_account}</td>
<td>{$record.bind_role_name}</td>
<td>{$record.base_quota}</td>
<td>{$record.other_quota}</td>
<td>{$record.quota}</td>
<td>{$record.verify_amount}</td>
<td>{$record.provide_amount}</td>
<td>{$record.today_amount}</td>
<td>{$record.apply_amount}</td>
<td>{$record.status}</td>
<td>
<?=substr($record['create_time'], 0, 10)?>
<br>
<?=substr($record['create_time'], 10)?>
</td>
</tr>
</volist>
</empty>
</table>
</div>
<div class="pagenation clearfix">
{$pagination}
</div>
</div>
</div>
</div>
<div id="add-box" class="layer-box" style="display: none;">
<form method="post" enctype="multipart/form-data">
<div class="form-group">
<label>用户账号</label>
<div class="form-item" style="width: 400px;">
<textarea name="accounts" placeholder="用户账号以英文逗号(,)隔开" class="form-input" id="" cols="50" rows="10"></textarea>
</div>
</div>
<div class="form-group">
<label></label>
<a id="add-submit" href="javascript:;" class="add-submit btn">确定</a>
</div>
</form>
</div>
</block>
<block name="script">
<link rel="stylesheet" type="text/css" href="__CSS__/p_jquery.datetimepicker.css">
<script type="text/javascript" src="__JS__/jquery.datetimepicker.js"></script>
<script type="text/javascript" src="__JS__/20170831/select2.min.js"></script>
<script src="__STATIC__/layer/layer.js"></script>
<script type="text/javascript">
$().ready(function () {
setValue('row', '{:I("get.row",10)}');
$("#pagehtml a").on("click", function (event) {
event.preventDefault();//使a自带的方法失效即无法调整到href中的URL(http://www.baidu.com)
var geturl = $(this).attr('href');
$('#data_form').attr('action', geturl);
$('#data_form').submit();
});
$('#sdate').datetimepicker({
lang: 'ch',
format: 'Y-m-d',
formatDate: 'Y-m-d',
scrollMonth: false,
scrollTime: false,
scrollInput: false,
timepicker: false
});
$('#apply').click(function () {
var title = '添加测试资源申请'
var url = "{:U('TestingResource/apply', '', '')}"
var id = $('input[name=role_id]:checked').val()
id = id == undefined ? 0 : id;
if (id > 0) {
url += '/id/' + id
} else {
return layer.msg('请选择测试账号角色')
}
layer.open({
title: title,
type: 2,
content: [url , 'no'],
area: ['1000px', '600px'],
zIndex: 250,
scrollbar: false,
})
})
$('#add').click(function () {
var box = $('#add-box')
layer.open({
title: '新增测试账号',
type: 1,
content: box,
area: ['700px', '330px'],
zIndex: 250,
})
});
$('#add-submit').on({
click: function () {
var box = $('#add-box')
var accounts = box.find('[name=accounts]').val()
console.log(accounts)
$.ajax({
async: false,
url: "{:U('addTestingUsers')}",
type: "POST",
dataType: "json",
data: { accounts: accounts },
success: function (result) {
if (result.status == 0) {
layer.msg(result.message);
} else {
var message = '成功' + result.data.successCount + '个, 失败' + result.data.errorCount + '个, 已存在' + result.data.existCount + '个。'
layer.confirm(message, {
btn: ['确定'] //按钮
}, function(){
location.reload();
})
// layer.msg(result.message);
/* setTimeout(function () {
location.reload();
}, 1000); */
}
},
error: function () {
}
});
}
})
$('#batch_add').click(function () {
var ids = $('.ids:checked');
if (ids.length > 0) {
var str = new Array();
ids.each(function () {
str.push($(this).val());
});
param = str.join(',');
} else {
layer.msg('请选择要操作的数据');
return false;
}
var url = "{:U('apply','','')}" + '/id/' + param;
window.location.href = url;
});
$('.apply').click(function () {
var id = $(this).attr('data-id');
var url = "{:U('apply','','')}" + '/id/' + id;
window.location.href = url;
});
$('.open_edit').click(function () {
var account = $(this).attr('data-account');
var password = $(this).attr('data-password');
var game_name = $(this).attr('data-game_name');
var server_name = $(this).attr('data-server_name');
var role_name = $(this).attr('data-role_name');
var support_id = $(this).attr('data-support_id');
$('#i_account').val(account);
$('#i_password').val(password);
$('#i_game_name').val(game_name);
$('#i_server_name').val(server_name);
$('#i_role_name').val(role_name);
$('#i_support_id').val(support_id);
var id_editor = '.div_editor';
//页面层
layer.open({
type: 1,
title: '新增扶持-修改',
closeBtn: 1,
area: ['600px', '429px'],
//skin: 'layui-layer-bgwhite', //白色背景色
shadeClose: true,
content: $(id_editor),
})
});
$('.i_cancel').click(function () {
location.reload();
});
$(".select_gallery").select2();
$('#edate').datetimepicker({
lang: 'ch',
format: 'Y-m-d',
formatDate: 'Y-m-d',
timepicker: false
});
});
</script>
<script type="text/javascript">
$("#submit").click(function () {
var sdate = $('#sdate').val();
var edate = $('#edate').val();
if (Date.parse(sdate) > Date.parse(edate)) {
layer.msg('开始时间必须小于等于结束时间');
return false;
}
var url = $(this).attr('url');
var query = $('#form1').find('input').serialize();
query += "&" + $('#form1').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;
});
$("#game_id").change(function () {
$.ajax({
url: "{:U('getServers')}",
type: "post",
data: { game_id: $("#game_id option:selected").attr('game-id') },
dataType: 'json',
success: function (result ) {
if (result.status == 1) {
var servers = result.data.servers
var str = "<option value=''>请选择区服</option>"
for (var i in servers){
str += "<option value='"+servers[i].server_id+"'>"+servers[i].server_name+"</option>"
}
$("#server_id").empty()
$("#server_id").append(str)
$("#server_id").select2()
}
}
})
})
$("#server_js").click(function (event) {
var game_id = $("#game_id").val();
if (game_id == 0) {
layer.msg('请先选择游戏');
}
});
function webchat_chkkeysend(event) {
if (event.keyCode == 13) {
$('#submit').click();
}
}
</script>
</block>

@ -0,0 +1,156 @@
<extend name="Public/basic"/>
<block name="body">
<style>
.trunk-search .form-group {
margin-left: 10px;
}
.normal_table input {
position: relative;
padding: 5px;
border: 1px solid #E5E5E5;
border-radius: 4px;
height: 25px;
}
.normal_table td {
padding: 5px;
}
.normal_table td select {
width: 100%;
}
.normal_table td button {
width: 70px;
height: 35px;
display: block;
background: #409eff;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
}
.normal_table td button.delete-row {
background-color: rgb(249,104,104);
}
.btn-row {
position: relative;
font-size: 11px;
margin-top: 28px;
text-align: center;
}
.btn-row button {
width: 70px;
height: 35px;
display: block;
background: #409eff;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
display: inline-block;
}
.btn-row button.close-btn {
background: #E5E5E5;
color: #535875;
}
.form-group .static-input {
line-height: 32px;
display: inline-block;
}
.trunk-search button {
width: 70px;
height: 35px;
display: block;
background: #409eff;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
display: inline-block;
}
.info-row {
margin-top: 10px;
}
.info-row button {
width: 120px;
height: 25px;
display: block;
background: #E5E5E5;
color: #535875;
border: none;
border-radius: 4px;
cursor: pointer;
display: inline-block;
margin-left: 10px;
}
.normal_table td .status-0 {
color: #e6a23c;
}
.normal_table td .status-1 {
color: #67c23a;
}
.normal_table td .status-2 {
color: #f56c6c;
}
.normal_table tr td {
padding: 10px 5px;
}
</style>
<div class="page-search normal_list promoteCoin-record-search" style="padding: 20px;">
<div class="trunk-content article">
<div class="trunk-list list_normal">
<div class="table-wrapper" style="height: 200px;">
<table id="resource-table" class="table normal_table">
<tr class="odd zwm_tr">
<th>申请ID</th>
<th>申请时间</th>
<th>游戏名称</th>
<th>玩家账号</th>
<th>区服名称</th>
<th>角色名称</th>
<th>申请人</th>
<th>资源内容</th>
<th>资源价值</th>
<th>申请数量</th>
<th>申请金额</th>
<th>申请备注</th>
<th>发放状态</th>
</tr>
<empty name="records">
<tr><td colspan="14" style="text-align: center;height: 45vh;"><img src="__IMG__/20180207/icon_wushujv2.png"/><p style="line-height: 40px;color: #A5A5A5;">暂无数据</p></td></tr>
<else />
<volist name="records" id="record" mod="2">
<tr data-id="{$record.id}" class="<eq name='mod' value='1'>odd</eq>">
<td>{$record.id}</td>
<td>
<?=substr($record['create_time'], 0, 10)?>
<br>
<?=substr($record['create_time'], 10)?>
</td>
<td>{$record.game_name}</td>
<td>{$record.user_account}</td>
<td>{$record.server_name}</td>
<td>{$record.role_name}</td>
<td>{$record.apply_promote_account}</td>
<td>{$record.ref_name}</td>
<td>{$record.ref_amount}</td>
<td>{$record.num}</td>
<td>{$record.amount}</td>
<td>{$record.remark}</td>
<td><span class="status-{$record.provide_status}">{$record.provide_status_text}</span></td>
</tr>
</volist>
</empty>
</table>
</div>
<!-- <div class="pagenation clearfix">
{$pagination}
</div> -->
</div>
</div>
</div>
</block>
<block name="script">
<script type="text/javascript" src="__JS__/20170831/select2.min.js"></script>
<script type="text/javascript">
</script>
</block>

@ -2402,8 +2402,90 @@ INSERT INTO `sys_kv`(`id`, `key`, `value`, `type`, `remark`) VALUES (4, 'cp_comp
ALTER TABLE `sj_game_channel`.`sj_cptogether_company`
ADD COLUMN `is_qualifity` tinyint(2) NULL COMMENT '是否具有游戏资质 0 否 1 是' AFTER `is_received`;
ALTER TABLE `tab_president_deposit`
ADD COLUMN `company_id` int(1) NOT NULL DEFAULT 0 COMMENT '推广公司ID' AFTER `promote_id`;
UPDATE tab_president_deposit s left join tab_promote c ON s.promote_id = c.id SET s.company_id=c.company_id
CREATE TABLE `tab_testing_user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) unsigned NOT NULL COMMENT '测试用户ID',
`user_account` varchar(50) not null comment '测试用户账号',
`promote_id` int(11) not null default 0 COMMENT '推广员ID',
`status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0 禁用 1 可用',
`create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间',
`update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '最后修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tab_testing_binding` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`game_id` int(11) NOT NULL COMMENT '游戏ID',
`user_id` int(11) unsigned NOT NULL COMMENT '测试用户ID',
`role_id` varchar(50) NOT NULL default '' COMMENT '角色ID',
`bind_user_id` int(11) unsigned NOT NULL default 0 COMMENT '绑定用户ID',
`bind_role_id` varchar(50) NOT NULL default '' COMMENT '绑定角色ID',
`create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间',
`update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '最后修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tab_testing_resource` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(120) NOT NULL DEFAULT COMMENT '测试资源名称',
`game_id` int(11) NOT NULL COMMENT '游戏ID',
`type_id` int(11) NOT NULL COMMENT '测试资源类型ID',
`price` decimal(12, 2) NOT NULL default '0.00' COMMENT '资源价值',
`identifier` varchar(50) NOT NULL default '与CP对应资源标识' COMMENT '标识符',
`create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间',
`update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '最后修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tab_testing_resource_type` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(120) NOT NULL COMMENT '测试资源类型名称',
`game_id` int(11) NOT NULL COMMENT '游戏ID',
`create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间',
`update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '最后修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tab_testing_resource_order` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`batch_id` int(11) NOT NULL COMMENT '批次ID',
`order_no` varchar(32) NOT NULL COMMENT '订单号',
`ref_id` varchar(30) NOT NULL COMMENT '测试资源ID第三方',
`ref_name` varchar(150) NOT NULL COMMENT '测试资源名称(第三方)',
`ref_amount` decimal(12, 2) not null default '0.00' comment '测试资源价值(第三方)',
`num` int(11) NOT NULL DEFAULT 0 COMMENT '申请数量',
`provide_status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0 待发放 1 已经发放 2 拒绝',
`provide_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '发放时间',
`amount` decimal(12, 2) not null default '0.00' comment '申请金额',
`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '审核备注',
`result` varchar(255) NOT NULL DEFAULT '' COMMENT '发放结果',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tab_testing_resource_batch` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`batch_no` varchar(30) NOT NULL COMMENT '批次号',
`game_id` int(11) NOT NULL DEFAULT '0' COMMENT '游戏ID',
`user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户ID',
`server_id` int(11) NOT NULL DEFAULT '0' COMMENT '区服ID',
`role_id` varchar(50) NOT NULL DEFAULT '' COMMENT '角色ID',
`apply_amount` decimal(12, 2) not null default '0.00' comment '申请金额',
`provide_amount` decimal(12, 2) not null default '0.00' comment '发放金额',
`provide_status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0 待发放 1 已经发放 2 异常',
`provide_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '发放时间',
`apply_promote_id` int(11) NOT NULL DEFAULT '0' COMMENT '申请推广员ID',
`verify_status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0 未审核 1 审核通过 2 未审核通过',
`verify_remark` varchar(255) NOT NULL DEFAULT '' COMMENT '审核备注',
`verify_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '审核时间',
`create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间',
`update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '最后修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
alter table tab_user_play_info add column `game_role_id` varchar(80) not null DEFAULT '' COMMENT '游戏角色标识' after role_level;
alter table tab_user_play_info add column `testing_other_quota` decimal(12, 2) not null DEFAULT '0.00' COMMENT '测试资源额外额度' after promote_account;
update tab_user_play_info set game_role_id = concat(game_id, '#', role_id);
ALTER TABLE `tab_user_play_info` ADD INDEX `index_unique_role`(`game_role_id`);

@ -364,6 +364,12 @@ input,select,button{outline:none;font-size:14px;font-family:inherit;}
width: 380px;
}
.layui-layer-content .layer-box .form-group textarea.form-input {
height: auto;
padding: 10px 15px;
width: auto;
}
.layui-layer-content .layer-box .form-group .radio-item {
margin-right: 5px;
line-height: 34px;

Loading…
Cancel
Save