2020.02新版

This commit is contained in:
Blokura
2020-02-21 16:20:55 +08:00
parent 45e2415d71
commit a2f29a310b
755 changed files with 95144 additions and 0 deletions

826
admin/ajax.php Normal file
View File

@@ -0,0 +1,826 @@
<?php
include("../includes/common.php");
if($islogin==1){}else exit("<script language='javascript'>window.location.href='./login.php';</script>");
$act=isset($_GET['act'])?daddslashes($_GET['act']):null;
if(strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])===false)exit('{"code":403}');
@header('Content-Type: application/json; charset=UTF-8');
switch($act){
case 'getcount':
$thtime=date("Y-m-d").' 00:00:00';
$count1=$DB->getColumn("SELECT count(*) from pre_order");
$count2=$DB->getColumn("SELECT count(*) from pre_user");
$paytype = [];
$rs = $DB->getAll("SELECT id,name,showname FROM pre_type WHERE status=1");
foreach($rs as $row){
$paytype[$row['id']] = $row['showname'];
}
unset($rs);
$channel = [];
$rs = $DB->getAll("SELECT id,name FROM pre_channel WHERE status=1");
foreach($rs as $row){
$channel[$row['id']] = $row['name'];
}
unset($rs);
$tongji_cachetime=getSetting('tongji_cachetime', true);
$tongji_cache = $CACHE->read('tongji');
if($tongji_cachetime+3600>=time() && $tongji_cache){
$array = unserialize($tongji_cache);
$result=["code"=>0,"type"=>"cache","paytype"=>$paytype,"channel"=>$channel,"count1"=>$count1,"count2"=>$count2,"usermoney"=>round($array['usermoney'],2),"settlemoney"=>round($array['settlemoney'],2),"order_today"=>$array['order_today'],"order"=>[]];
}else{
$usermoney=$DB->getColumn("SELECT SUM(money) FROM pre_user WHERE money!='0.00'");
$settlemoney=$DB->getColumn("SELECT SUM(money) FROM pre_settle");
$today=date("Y-m-d");
$rs=$DB->query("SELECT type,channel,money from pre_order where status=1 and date>='$today'");
foreach($paytype as $id=>$type){
$order_paytype[$id]=0;
}
foreach($channel as $id=>$type){
$order_channel[$id]=0;
}
while($row = $rs->fetch())
{
$order_paytype[$row['type']]+=$row['money'];
$order_channel[$row['channel']]+=$row['money'];
}
foreach($order_paytype as $k=>$v){
$order_paytype[$k] = round($v,2);
}
foreach($order_channel as $k=>$v){
$order_channel[$k] = round($v,2);
}
$allmoney=0;
foreach($order_paytype as $order){
$allmoney+=$order;
}
$order_today['all']=round($allmoney,2);
$order_today['paytype']=$order_paytype;
$order_today['channel']=$order_channel;
saveSetting('tongji_cachetime',time());
$CACHE->save('tongji',serialize(["usermoney"=>$usermoney,"settlemoney"=>$settlemoney,"order_today"=>$order_today]));
$result=["code"=>0,"type"=>"online","paytype"=>$paytype,"channel"=>$channel,"count1"=>$count1,"count2"=>$count2,"usermoney"=>round($usermoney,2),"settlemoney"=>round($settlemoney,2),"order_today"=>$order_today,"order"=>[]];
}
for($i=1;$i<7;$i++){
$day = date("Ymd", strtotime("-{$i} day"));
if($order_tongji = $CACHE->read('order_'.$day)){
$result["order"][$day] = unserialize($order_tongji);
}else{
break;
}
}
exit(json_encode($result));
break;
case 'uploadimg':
if($_POST['do']=='upload'){
$type = $_POST['type'];
$filename = $type.'_'.md5_file($_FILES['file']['tmp_name']).'.png';
$fileurl = 'assets/img/Product/'.$filename;
if(copy($_FILES['file']['tmp_name'], ROOT.'assets/img/Product/'.$filename)){
exit('{"code":0,"msg":"succ","url":"'.$fileurl.'"}');
}else{
exit('{"code":-1,"msg":"上传失败,请确保有本地写入权限"}');
}
}
exit('{"code":-1,"msg":"null"}');
break;
case 'setStatus':
$trade_no=trim($_GET['trade_no']);
$status=is_numeric($_GET['status'])?intval($_GET['status']):exit('{"code":200}');
if($status==5){
if($DB->exec("DELETE FROM pre_order WHERE trade_no='$trade_no'"))
exit('{"code":200}');
else
exit('{"code":400,"msg":"删除订单失败!['.$DB->error().']"}');
}else{
if($DB->exec("update pre_order set status='$status' where trade_no='$trade_no'")!==false)
exit('{"code":200}');
else
exit('{"code":400,"msg":"修改订单失败!['.$DB->error().']"}');
}
break;
case 'order':
$trade_no=trim($_GET['trade_no']);
$row=$DB->getRow("select A.*,B.showname typename,C.name channelname from pre_order A,pre_type B,pre_channel C where trade_no='$trade_no' and A.type=B.id and A.channel=C.id limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前订单不存在或未成功选择支付通道!"}');
$result=array("code"=>0,"msg"=>"succ","data"=>$row);
exit(json_encode($result));
break;
case 'operation':
$status=is_numeric($_POST['status'])?intval($_POST['status']):exit('{"code":-1,"msg":"请选择操作"}');
$checkbox=$_POST['checkbox'];
$i=0;
foreach($checkbox as $trade_no){
if($status==4)$DB->exec("DELETE FROM pre_order WHERE trade_no='$trade_no'");
elseif($status==3){
$row=$DB->getRow("select uid,getmoney,status from pre_order where trade_no='$trade_no' limit 1");
if($row && $row['status']==3 && $row['getmoney']>0){
if(changeUserMoney($row['uid'], $row['getmoney'], true, '解冻订单', $trade_no))
$DB->exec("update pre_order set status='1' where trade_no='$trade_no'");
}
}
elseif($status==2){
$row=$DB->getRow("select uid,getmoney,status from pre_order where trade_no='$trade_no' limit 1");
if($row && $row['status']==1 && $row['getmoney']>0){
if(changeUserMoney($row['uid'], $row['getmoney'], false, '冻结订单', $trade_no))
$DB->exec("update pre_order set status='3' where trade_no='$trade_no'");
}
}
else $DB->exec("update pre_order set status='$status' where trade_no='$trade_no' limit 1");
$i++;
}
exit('{"code":0,"msg":"成功改变'.$i.'条订单状态"}');
break;
case 'getmoney': //退款查询
if(!$conf['admin_paypwd'])exit('{"code":-1,"msg":"你还未设置支付密码"}');
$trade_no=trim($_POST['trade_no']);
$api=isset($_POST['api'])?intval($_POST['api']):0;
$row=$DB->getRow("select * from pre_order where trade_no='$trade_no' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前订单不存在!"}');
if($row['status']!=1)
exit('{"code":-1,"msg":"只支持退款已支付状态的订单"}');
if($api==1){
if(!$row['api_trade_no'])
exit('{"code":-1,"msg":"接口订单号不存在"}');
$channel = \lib\Channel::get($row['channel']);
if(!$channel){
exit('{"code":-1,"msg":"当前支付通道信息不存在"}');
}
if(\lib\Plugin::isrefund($channel['plugin'])==false){
exit('{"code":-1,"msg":"当前支付通道不支持API退款"}');
}
$money = $row['money'];
}else{
$money = $row['getmoney'];
}
exit('{"code":0,"money":"'.$money.'"}');
break;
case 'refund': //退款操作
$trade_no=trim($_POST['trade_no']);
$row=$DB->getRow("select uid,getmoney,status from pre_order where trade_no='$trade_no' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前订单不存在!"}');
if($row['status']!=1)
exit('{"code":-1,"msg":"只支持退款已支付状态的订单"}');
if($row['getmoney']>0){
changeUserMoney($row['uid'], $row['getmoney'], false, '订单退款', $trade_no);
$DB->exec("update pre_order set status='2' where trade_no='$trade_no'");
}
exit('{"code":0,"msg":"已成功从UID:'.$row['uid'].'扣除'.$row['getmoney'].'元余额"}');
break;
case 'apirefund': //API退款操作
$trade_no=trim($_POST['trade_no']);
$paypwd=trim($_POST['paypwd']);
if($paypwd!=$conf['admin_paypwd'])
exit('{"code":-1,"msg":"支付密码输入错误!"}');
$row=$DB->getRow("select uid,money,getmoney,status from pre_order where trade_no='$trade_no' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前订单不存在!"}');
if($row['status']!=1)
exit('{"code":-1,"msg":"只支持退款已支付状态的订单"}');
$message = null;
if(api_refund($trade_no, $message)){
if($row['getmoney']>0){
if(changeUserMoney($row['uid'], $row['getmoney'], false, '订单退款', $trade_no)){
$addstr = '并成功从UID:'.$row['uid'].'扣除'.$row['getmoney'].'元余额';
}
$DB->exec("update pre_order set status='2' where trade_no='$trade_no'");
}
exit('{"code":0,"msg":"API退款成功退款金额¥'.$row['money'].$addstr.'"}');
}else{
exit('{"code":-1,"msg":"API退款失败'.$message.'"}');
}
break;
case 'freeze': //冻结订单
$trade_no=trim($_POST['trade_no']);
$row=$DB->getRow("select uid,getmoney,status from pre_order where trade_no='$trade_no' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前订单不存在!"}');
if($row['status']!=1)
exit('{"code":-1,"msg":"只支持冻结已支付状态的订单"}');
if($row['getmoney']>0){
changeUserMoney($row['uid'], $row['getmoney'], false, '订单冻结', $trade_no);
$DB->exec("update pre_order set status='3' where trade_no='$trade_no'");
}
exit('{"code":0,"msg":"已成功从UID:'.$row['uid'].'冻结'.$row['getmoney'].'元余额"}');
break;
case 'unfreeze': //解冻订单
$trade_no=trim($_POST['trade_no']);
$row=$DB->getRow("select uid,getmoney,status from pre_order where trade_no='$trade_no' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前订单不存在!"}');
if($row['status']!=3)
exit('{"code":-1,"msg":"只支持解冻已冻结状态的订单"}');
if($row['getmoney']>0){
changeUserMoney($row['uid'], $row['getmoney'], true, '订单解冻', $trade_no);
$DB->exec("update pre_order set status='1' where trade_no='$trade_no'");
}
exit('{"code":0,"msg":"已成功为UID:'.$row['uid'].'恢复'.$row['getmoney'].'元余额"}');
break;
case 'notify':
$trade_no=trim($_POST['trade_no']);
$row=$DB->getRow("select * from pre_order where trade_no='$trade_no' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前订单不存在!"}');
$url=creat_callback($row);
if($row['notify']>0)
$DB->exec("update pre_order set notify=0 where trade_no='$trade_no'");
exit('{"code":0,"url":"'.($_POST['isreturn']==1?$url['return']:$url['notify']).'"}');
break;
case 'getPayType':
$id=intval($_GET['id']);
$row=$DB->getRow("select * from pre_type where id='$id' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前支付方式不存在!"}');
$result = ['code'=>0,'msg'=>'succ','data'=>$row];
exit(json_encode($result));
break;
case 'setPayType':
$id=intval($_GET['id']);
$status=intval($_GET['status']);
$row=$DB->getRow("select * from pre_type where id='$id' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前支付方式不存在!"}');
$sql = "UPDATE pre_type SET status='$status' WHERE id='$id'";
if($DB->exec($sql))exit('{"code":0,"msg":"修改支付方式成功!"}');
else exit('{"code":-1,"msg":"修改支付方式失败['.$DB->error().']"}');
break;
case 'delPayType':
$id=intval($_GET['id']);
$row=$DB->getRow("select * from pre_type where id='$id' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前支付方式不存在!"}');
$row=$DB->getRow("select * from pre_channel where type='$id' limit 1");
if($row)
exit('{"code":-1,"msg":"删除失败,存在使用该支付方式的支付通道"}');
$sql = "DELETE FROM pre_type WHERE id='$id'";
if($DB->exec($sql))exit('{"code":0,"msg":"删除支付方式成功!"}');
else exit('{"code":-1,"msg":"删除支付方式失败['.$DB->error().']"}');
break;
case 'savePayType':
if($_POST['action'] == 'add'){
$name=trim($_POST['name']);
$showname=trim($_POST['showname']);
$device=intval($_POST['device']);
if(!preg_match('/^[a-zA-Z0-9]+$/',$name)){
exit('{"code":-1,"msg":"调用值不符合规则"}');
}
$row=$DB->getRow("select * from pre_type where name='$name' and device='$device' limit 1");
if($row)
exit('{"code":-1,"msg":"同一个调用值+支持设备不能重复"}');
$sql = "INSERT INTO pre_type (name, showname, device, status) VALUES ('{$name}','{$showname}',{$device},1)";
if($DB->exec($sql))exit('{"code":0,"msg":"新增支付方式成功!"}');
else exit('{"code":-1,"msg":"新增支付方式失败['.$DB->error().']"}');
}else{
$id=intval($_POST['id']);
$name=trim($_POST['name']);
$showname=trim($_POST['showname']);
$device=intval($_POST['device']);
if(!preg_match('/^[a-zA-Z0-9]+$/',$name)){
exit('{"code":-1,"msg":"调用值不符合规则"}');
}
$row=$DB->getRow("select * from pre_type where name='$name' and device='$device' and id<>$id limit 1");
if($row)
exit('{"code":-1,"msg":"同一个调用值+支持设备不能重复"}');
$sql = "UPDATE pre_type SET name='{$name}',showname='{$showname}',device='{$device}' WHERE id='$id'";
if($DB->exec($sql)!==false)exit('{"code":0,"msg":"修改支付方式成功!"}');
else exit('{"code":-1,"msg":"修改支付方式失败['.$DB->error().']"}');
}
break;
case 'getPlugin':
$name = trim($_GET['name']);
$row=$DB->getRow("select * from pre_plugin where name='$name'");
if($row){
$result = ['code'=>0,'msg'=>'succ','data'=>$row];
exit(json_encode($result));
}
else exit('{"code":-1,"msg":"当前支付插件不存在!"}');
break;
case 'getPlugins':
$typeid = intval($_GET['typeid']);
$type=$DB->getColumn("select name from pre_type where id='$typeid' limit 1");
if(!$type)
exit('{"code":-1,"msg":"当前支付方式不存在!"}');
$list=$DB->getAll("select name,showname from pre_plugin where types like '%$type%'");
if($list){
$result = ['code'=>0,'msg'=>'succ','data'=>$list];
exit(json_encode($result));
}
else exit('{"code":-1,"msg":"没有找到支持该支付方式的插件"}');
break;
case 'getChannel':
$id=intval($_GET['id']);
$row=$DB->getRow("select * from pre_channel where id='$id' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前支付通道不存在!"}');
$result = ['code'=>0,'msg'=>'succ','data'=>$row];
exit(json_encode($result));
break;
case 'getChannels':
$typeid = intval($_GET['typeid']);
$type=$DB->getColumn("select name from pre_type where id='$typeid' limit 1");
if(!$type)
exit('{"code":-1,"msg":"当前支付方式不存在!"}');
$list=$DB->getAll("select id,name from pre_channel where type='$typeid' and status=1");
if($list){
$result = ['code'=>0,'msg'=>'succ','data'=>$list];
exit(json_encode($result));
}
else exit('{"code":-1,"msg":"没有找到支持该支付方式的通道"}');
break;
case 'setChannel':
$id=intval($_GET['id']);
$status=intval($_GET['status']);
$row=$DB->getRow("select * from pre_channel where id='$id' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前支付通道不存在!"}');
if($status==1 && (empty($row['appid']) || empty($row['appkey']))){
exit('{"code":-1,"msg":"请先配置好密钥后再开启"}');
}
$sql = "UPDATE pre_channel SET status='$status' WHERE id='$id'";
if($DB->exec($sql))exit('{"code":0,"msg":"修改支付通道成功!"}');
else exit('{"code":-1,"msg":"修改支付通道失败['.$DB->error().']"}');
break;
case 'delChannel':
$id=intval($_GET['id']);
$row=$DB->getRow("select * from pre_channel where id='$id' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前支付通道不存在!"}');
$sql = "DELETE FROM pre_channel WHERE id='$id'";
if($DB->exec($sql))exit('{"code":0,"msg":"删除支付通道成功!"}');
else exit('{"code":-1,"msg":"删除支付通道失败['.$DB->error().']"}');
break;
case 'saveChannel':
if($_POST['action'] == 'add'){
$name=trim($_POST['name']);
$rate=trim($_POST['rate']);
$type=intval($_POST['type']);
$plugin=trim($_POST['plugin']);
if(!preg_match('/^[0-9.]+$/',$rate)){
exit('{"code":-1,"msg":"分成比例不符合规则"}');
}
$row=$DB->getRow("select * from pre_channel where name='$name' limit 1");
if($row)
exit('{"code":-1,"msg":"支付通道名称重复"}');
$sql = "INSERT INTO pre_channel (name, rate, type, plugin) VALUES ('{$name}', '{$rate}', {$type}, '{$plugin}')";
if($DB->exec($sql))exit('{"code":0,"msg":"新增支付通道成功!"}');
else exit('{"code":-1,"msg":"新增支付通道失败['.$DB->error().']"}');
}else{
$id=intval($_POST['id']);
$name=trim($_POST['name']);
$rate=trim($_POST['rate']);
$type=intval($_POST['type']);
$plugin=trim($_POST['plugin']);
if(!preg_match('/^[0-9.]+$/',$rate)){
exit('{"code":-1,"msg":"分成比例不符合规则"}');
}
$row=$DB->getRow("select * from pre_channel where name='$name' and id<>$id limit 1");
if($row)
exit('{"code":-1,"msg":"支付通道名称重复"}');
$sql = "UPDATE pre_channel SET name='{$name}',rate='{$rate}',type='{$type}',plugin='{$plugin}' WHERE id='$id'";
if($DB->exec($sql)!==false)exit('{"code":0,"msg":"修改支付通道成功!"}');
else exit('{"code":-1,"msg":"修改支付通道失败['.$DB->error().']"}');
}
break;
case 'channelInfo':
$id=intval($_GET['id']);
$row=$DB->getRow("select * from pre_channel where id='$id' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前支付通道不存在!"}');
$apptype = explode(',',$row['apptype']);
$plugin=$DB->getRow("select `inputs`,`select` from `pre_plugin` where `name`='{$row['plugin']}' limit 1");
if(!$plugin)
exit('{"code":-1,"msg":"当前支付插件不存在!"}');
$arr = explode(',',$plugin['inputs']);
$inputs = [];
foreach($arr as $item){
$a = explode(':',$item);
$inputs[$a[0]] = $a[1];
}
$data = '<div class="modal-body"><form class="form" id="form-info">';
if(!empty($plugin['select'])){
$arr = explode(',',$plugin['select']);
$select = '';
foreach($arr as $item){
$a = explode(':',$item);
$select .= '<label><input type="checkbox" '.(in_array($a[0],$apptype)?'checked':null).' name="apptype[]" value="'.$a[0].'">'.$a[1].'</label>&nbsp;';
}
$data .= '<div class="form-group"><input type="hidden" id="isapptype" name="isapptype" value="1"/><label>请选择可用的接口:</label><br/><div class="checkbox">'.$select.'</div></div>';
}
if($inputs['appid'])$data .= '<div class="form-group"><label>'.$inputs['appid'].'</label><br/><input type="text" id="appid" name="appid" value="'.$row['appid'].'" class="form-control" required/></div>';
if($inputs['appkey'])$data .= '<div class="form-group"><label>'.$inputs['appkey'].'</label><br/><textarea id="appkey" name="appkey" rows="2" class="form-control" required>'.$row['appkey'].'</textarea></div>';
if($inputs['appsecret'])$data .= '<div class="form-group"><label>'.$inputs['appsecret'].'</label><br/><textarea id="appsecret" name="appsecret" rows="2" class="form-control" required>'.$row['appsecret'].'</textarea></div>';
if($inputs['appurl'])$data .= '<div class="form-group"><label>'.$inputs['appurl'].'</label><br/><input type="text" id="appurl" name="appurl" value="'.$row['appurl'].'" class="form-control" required/></div>';
if($inputs['appmchid'])$data .= '<div class="form-group"><label>'.$inputs['appmchid'].'</label><br/><input type="text" id="appmchid" name="appmchid" value="'.$row['appmchid'].'" class="form-control" required/></div>';
$data .= '<button type="button" id="save" onclick="saveInfo('.$id.')" class="btn btn-primary btn-block">保存</button></form></div>';
$result=array("code"=>0,"msg"=>"succ","data"=>$data);
exit(json_encode($result));
break;
case 'saveChannelInfo':
$id=intval($_GET['id']);
$appid=isset($_POST['appid'])?trim($_POST['appid']):null;
$appkey=isset($_POST['appkey'])?trim($_POST['appkey']):null;
$appsecret=isset($_POST['appsecret'])?trim($_POST['appsecret']):null;
$appurl=isset($_POST['appurl'])?trim($_POST['appurl']):null;
$appmchid=isset($_POST['appmchid'])?trim($_POST['appmchid']):null;
if(isset($_POST['isapptype'])){
if(!isset($_POST['apptype']) || count($_POST['apptype'])<=0)exit('{"code":-1,"msg":"请至少选择一个可用的支付接口"}');
$apptype=implode(',',$_POST['apptype']);
}else{
$apptype=null;
}
$sql = "UPDATE pre_channel SET appid='{$appid}',appkey='{$appkey}',appsecret='{$appsecret}',appurl='{$appurl}',appmchid='{$appmchid}',apptype='{$apptype}' WHERE id='$id'";
if($DB->exec($sql)!==false)exit('{"code":0,"msg":"修改支付密钥成功!"}');
else exit('{"code":-1,"msg":"修改支付密钥失败['.$DB->error().']"}');
break;
case 'getRoll':
$id=intval($_GET['id']);
$row=$DB->getRow("select * from pre_roll where id='$id' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前轮询组不存在!"}');
$result = ['code'=>0,'msg'=>'succ','data'=>$row];
exit(json_encode($result));
break;
case 'setRoll':
$id=intval($_GET['id']);
$status=intval($_GET['status']);
$row=$DB->getRow("select * from pre_roll where id='$id' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前轮询组不存在!"}');
if($status==1 && empty($row['info'])){
exit('{"code":-1,"msg":"请先配置好支付通道后再开启"}');
}
$sql = "UPDATE pre_roll SET status='$status' WHERE id='$id'";
if($DB->exec($sql))exit('{"code":0,"msg":"修改轮询组成功!"}');
else exit('{"code":-1,"msg":"修改轮询组失败['.$DB->error().']"}');
break;
case 'delRoll':
$id=intval($_GET['id']);
$row=$DB->getRow("select * from pre_roll where id='$id' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前轮询组不存在!"}');
$sql = "DELETE FROM pre_roll WHERE id='$id'";
if($DB->exec($sql))exit('{"code":0,"msg":"删除轮询组成功!"}');
else exit('{"code":-1,"msg":"删除轮询组失败['.$DB->error().']"}');
break;
case 'saveRoll':
if($_POST['action'] == 'add'){
$name=trim($_POST['name']);
$type=intval($_POST['type']);
$kind=intval($_POST['kind']);
$row=$DB->getRow("select * from pre_roll where name='$name' limit 1");
if($row)
exit('{"code":-1,"msg":"轮询组名称重复"}');
$sql = "INSERT INTO pre_roll (name, type, kind) VALUES ('{$name}', {$type}, {$kind})";
if($DB->exec($sql))exit('{"code":0,"msg":"新增轮询组成功!"}');
else exit('{"code":-1,"msg":"新增轮询组失败['.$DB->error().']"}');
}else{
$id=intval($_POST['id']);
$name=trim($_POST['name']);
$type=intval($_POST['type']);
$kind=intval($_POST['kind']);
$row=$DB->getRow("select * from pre_roll where name='$name' and id<>$id limit 1");
if($row)
exit('{"code":-1,"msg":"轮询组名称重复"}');
$sql = "UPDATE pre_roll SET name='{$name}',type='{$type}',kind='{$kind}' WHERE id='$id'";
if($DB->exec($sql)!==false)exit('{"code":0,"msg":"修改轮询组成功!"}');
else exit('{"code":-1,"msg":"修改轮询组失败['.$DB->error().']"}');
}
break;
case 'rollInfo':
$id=intval($_GET['id']);
$row=$DB->getRow("select * from pre_roll where id='$id' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前轮询组不存在!"}');
$list=$DB->getAll("select id,name from pre_channel where type='{$row['type']}' and status=1");
if(!$list)exit('{"code":-1,"msg":"没有找到支持该支付方式的通道"}');
if(!empty($row['info'])){
$arr = explode(',',$row['info']);
$info = [];
foreach($arr as $item){
$a = explode(':',$item);
$info[] = ['channel'=>$a[0], 'weight'=>$a[1]?$a[1]:1];
}
}else{
$info = null;
}
$result=array("code"=>0,"msg"=>"succ","channels"=>$list,"info"=>$info);
exit(json_encode($result));
break;
case 'saveRollInfo':
$id=intval($_GET['id']);
$row=$DB->getRow("select * from pre_roll where id='$id' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前轮询组不存在!"}');
$list=$_POST['list'];
if(empty($list))
exit('{"code":-1,"msg":"通道配置不能为空!"}');
$info = '';
foreach($list as $a){
$info .= $row['kind']==1 ? $a['channel'].':'.$a['weight'].',' : $a['channel'].',';
}
$info = trim($info,',');
if(empty($info))
exit('{"code":-1,"msg":"通道配置不能为空!"}');
$sql = "UPDATE pre_roll SET info='{$info}' WHERE id='$id'";
if($DB->exec($sql)!==false)exit('{"code":0,"msg":"修改轮询组成功!"}');
else exit('{"code":-1,"msg":"修改轮询组失败['.$DB->error().']"}');
break;
case 'getGroup':
$gid=intval($_GET['gid']);
$row=$DB->getRow("select * from pre_group where gid='$gid' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前用户组不存在!"}');
$result = ['code'=>0,'msg'=>'succ','gid'=>$gid,'name'=>$row['name'],'info'=>json_decode($row['info'],true)];
exit(json_encode($result));
break;
case 'delGroup':
$gid=intval($_GET['gid']);
$row=$DB->getRow("select * from pre_group where gid='$gid' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前用户组不存在!"}');
$sql = "DELETE FROM pre_group WHERE gid='$gid'";
if($DB->exec($sql))exit('{"code":0,"msg":"删除用户组成功!"}');
else exit('{"code":-1,"msg":"删除用户组失败['.$DB->error().']"}');
break;
case 'saveGroup':
if($_POST['action'] == 'add'){
$name=trim($_POST['name']);
$row=$DB->getRow("select * from pre_group where name='$name' limit 1");
if($row)
exit('{"code":-1,"msg":"用户组名称重复"}');
$info=$_POST['info'];
$info=json_encode($info);
$sql = "INSERT INTO pre_group (name, info) VALUES ('{$name}', '{$info}')";
if($DB->exec($sql))exit('{"code":0,"msg":"新增用户组成功!"}');
else exit('{"code":-1,"msg":"新增用户组失败['.$DB->error().']"}');
}elseif($_POST['action'] == 'changebuy'){
$gid=intval($_POST['gid']);
$status=intval($_POST['status']);
$sql = "UPDATE pre_group SET isbuy='{$status}' WHERE gid='$gid'";
if($DB->exec($sql))exit('{"code":0,"msg":"修改上架状态成功!"}');
else exit('{"code":-1,"msg":"修改上架状态失败['.$DB->error().']"}');
}else{
$gid=intval($_POST['gid']);
$name=trim($_POST['name']);
$row=$DB->getRow("select * from pre_group where name='$name' and gid<>$gid limit 1");
if($row)
exit('{"code":-1,"msg":"用户组名称重复"}');
$info=$_POST['info'];
$info=json_encode($info);
$sql = "UPDATE pre_group SET name='{$name}',info='{$info}' WHERE gid='$gid'";
if($DB->exec($sql)!==false)exit('{"code":0,"msg":"修改用户组成功!"}');
else exit('{"code":-1,"msg":"修改用户组失败['.$DB->error().']"}');
}
break;
case 'saveGroupPrice':
$prices = $_POST['price'];
$sorts = $_POST['sort'];
foreach($prices as $gid=>$item){
$price = trim($item);
$sort = trim($sorts[$gid]);
if(empty($price)||!is_numeric($price))exit('{"code":-1,"msg":"GID:'.$gid.'的售价填写错误"}');
$DB->exec("UPDATE pre_group SET price='{$price}',sort='{$sort}' WHERE gid='$gid'");
}
exit('{"code":0,"msg":"保存成功!"}');
break;
case 'setUser':
$uid=intval($_GET['uid']);
$type=trim($_GET['type']);
$status=intval($_GET['status']);
if($type=='pay')$sql = "UPDATE pre_user SET pay='$status' WHERE uid='$uid'";
elseif($type=='settle')$sql = "UPDATE pre_user SET settle='$status' WHERE uid='$uid'";
elseif($type=='group')$sql = "UPDATE pre_user SET gid='$status' WHERE uid='$uid'";
else $sql = "UPDATE pre_user SET status='$status' WHERE uid='$uid'";
if($DB->exec($sql)!==false)exit('{"code":0,"msg":"修改用户成功!"}');
else exit('{"code":-1,"msg":"修改用户失败['.$DB->error().']"}');
break;
case 'resetUser':
$uid=intval($_GET['uid']);
$key = random(32);
$sql = "UPDATE pre_user SET `key`='$key' WHERE uid='$uid'";
if($DB->exec($sql)!==false)exit('{"code":0,"msg":"重置密钥成功","key":"'.$key.'"}');
else exit('{"code":-1,"msg":"重置密钥失败['.$DB->error().']"}');
break;
case 'user_settle_info':
$uid=intval($_GET['uid']);
$rows=$DB->getRow("select * from pre_user where uid='$uid' limit 1");
if(!$rows)
exit('{"code":-1,"msg":"当前用户不存在!"}');
$data = '<div class="form-group"><div class="input-group"><div class="input-group-addon">结算方式</div><select class="form-control" id="pay_type" default="'.$rows['settle_id'].'">'.($conf['settle_alipay']?'<option value="1">支付宝</option>':null).''.($conf['settle_wxpay']?'<option value="2">微信</option>':null).''.($conf['settle_qqpay']?'<option value="3">QQ钱包</option>':null).''.($conf['settle_bank']?'<option value="4">银行卡</option>':null).'</select></div></div>';
$data .= '<div class="form-group"><div class="input-group"><div class="input-group-addon">结算账号</div><input type="text" id="pay_account" value="'.$rows['account'].'" class="form-control" required/></div></div>';
$data .= '<div class="form-group"><div class="input-group"><div class="input-group-addon">真实姓名</div><input type="text" id="pay_name" value="'.$rows['username'].'" class="form-control" required/></div></div>';
$data .= '<input type="submit" id="save" onclick="saveInfo('.$uid.')" class="btn btn-primary btn-block" value="保存">';
$result=array("code"=>0,"msg"=>"succ","data"=>$data,"pay_type"=>$rows['settle_id']);
exit(json_encode($result));
break;
case 'user_settle_save':
$uid=intval($_POST['uid']);
$pay_type=trim(daddslashes($_POST['pay_type']));
$pay_account=trim(daddslashes($_POST['pay_account']));
$pay_name=trim(daddslashes($_POST['pay_name']));
$sds=$DB->exec("update `pre_user` set `settle_id`='$pay_type',`account`='$pay_account',`username`='$pay_name' where `uid`='$uid'");
if($sds!==false)
exit('{"code":0,"msg":"修改记录成功!"}');
else
exit('{"code":-1,"msg":"修改记录失败!'.$DB->error().'"}');
break;
case 'user_cert':
$uid=intval($_GET['uid']);
$rows=$DB->getRow("select cert,certno,certname,certtime from pre_user where uid='$uid' limit 1");
if(!$rows)
exit('{"code":-1,"msg":"当前用户不存在!"}');
$result = ['code'=>0,'msg'=>'succ','uid'=>$uid,'cert'=>$rows['cert'],'certno'=>$rows['certno'],'certname'=>$rows['certname'],'certtime'=>$rows['certtime']];
exit(json_encode($result));
break;
case 'recharge':
$uid=intval($_POST['uid']);
$do=$_POST['actdo'];
$rmb=floatval($_POST['rmb']);
$row=$DB->getRow("select uid,money from pre_user where uid='$uid' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前用户不存在!"}');
if($do==1 && $rmb>$row['money'])$rmb=$row['money'];
if($do==0){
changeUserMoney($uid, $rmb, true, '后台加款');
}else{
changeUserMoney($uid, $rmb, false, '后台扣款');
}
exit('{"code":0,"msg":"succ"}');
break;
case 'create_batch':
$count=$DB->getColumn("SELECT count(*) from pre_settle where status=0");
if($count==0)exit('{"code":-1,"msg":"当前不存在待结算的记录"}');
$batch=date("Ymd").rand(111,999);
$allmoney = 0;
$rs=$DB->query("SELECT * from pre_settle where status=0");
while($row = $rs->fetch())
{
$DB->exec("UPDATE pre_settle SET batch='$batch',status=2 WHERE id='{$row['id']}'");
$allmoney+=$row['realmoney'];
}
$DB->exec("INSERT INTO `pre_batch` (`batch`, `allmoney`, `count`, `time`, `status`) VALUES ('{$batch}', '{$allmoney}', '{$count}', '{$date}', '0')");
exit('{"code":0,"msg":"succ","batch":"'.$batch.'","count":"'.$count.'","allmoney":"'.$allmoney.'"}');
break;
case 'complete_batch':
$batch=trim($_POST['batch']);
$DB->exec("UPDATE pre_settle SET status=1 WHERE batch='$batch'");
exit('{"code":0,"msg":"succ"}');
break;
case 'setSettleStatus':
$id=intval($_GET['id']);
$status=intval($_GET['status']);
if($status==4){
if($DB->exec("DELETE FROM pre_settle WHERE id='$id'"))
exit('{"code":200}');
else
exit('{"code":400,"msg":"删除记录失败!['.$DB->error().']"}');
}else{
if($status==1){
$sql = "update pre_settle set status='$status',endtime='$date',result=NULL where id='$id'";
}else{
$sql = "update pre_settle set status='$status',endtime=NULL where id='$id'";
}
if($DB->exec($sql)!==false)
exit('{"code":200}');
else
exit('{"code":400,"msg":"修改记录失败!['.$DB->error().']"}');
}
break;
case 'opslist':
$status=$_POST['status'];
$checkbox=$_POST['checkbox'];
$i=0;
foreach($checkbox as $id){
if($status==4){
$sql = "DELETE FROM pre_settle WHERE id='$id'";
}elseif($status==1){
$sql = "update pre_settle set status='$status',endtime='$date',result=NULL where id='$id'";
}else{
$sql = "update pre_settle set status='$status',endtime=NULL where id='$id'";
}
$DB->exec($sql);
$i++;
}
exit('{"code":0,"msg":"成功改变'.$i.'条记录状态"}');
break;
case 'settle_result':
$id=intval($_POST['id']);
$row=$DB->getRow("select * from pre_settle where id='$id' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前结算记录不存在!"}');
$result = ['code'=>0,'msg'=>'succ','result'=>$row['result']];
exit(json_encode($result));
break;
case 'settle_setresult':
$id=intval($_POST['id']);
$result=trim($_POST['result']);
$row=$DB->getRow("select * from pre_settle where id='$id' limit 1");
if(!$row)
exit('{"code":-1,"msg":"当前结算记录不存在!"}');
$sds = $DB->exec("UPDATE pre_settle SET result='$result' WHERE id='$id'");
if($sds!==false)
exit('{"code":0,"msg":"修改成功!"}');
else
exit('{"code":-1,"msg":"修改失败!'.$DB->error().'"}');
break;
case 'settle_info':
$id=intval($_GET['id']);
$rows=$DB->getRow("select * from pre_settle where id='$id' limit 1");
if(!$rows)
exit('{"code":-1,"msg":"当前结算记录不存在!"}');
$data = '<div class="form-group"><div class="input-group"><div class="input-group-addon">结算方式</div><select class="form-control" id="pay_type" default="'.$rows['type'].'">'.($conf['settle_alipay']?'<option value="1">支付宝</option>':null).''.($conf['settle_wxpay']?'<option value="2">微信</option>':null).''.($conf['settle_qqpay']?'<option value="3">QQ钱包</option>':null).''.($conf['settle_bank']?'<option value="4">银行卡</option>':null).'</select></div></div>';
$data .= '<div class="form-group"><div class="input-group"><div class="input-group-addon">结算账号</div><input type="text" id="pay_account" value="'.$rows['account'].'" class="form-control" required/></div></div>';
$data .= '<div class="form-group"><div class="input-group"><div class="input-group-addon">真实姓名</div><input type="text" id="pay_name" value="'.$rows['username'].'" class="form-control" required/></div></div>';
$data .= '<input type="submit" id="save" onclick="saveInfo('.$id.')" class="btn btn-primary btn-block" value="保存">';
$result=array("code"=>0,"msg"=>"succ","data"=>$data,"pay_type"=>$rows['type']);
exit(json_encode($result));
break;
case 'settle_save':
$id=intval($_POST['id']);
$pay_type=trim(daddslashes($_POST['pay_type']));
$pay_account=trim(daddslashes($_POST['pay_account']));
$pay_name=trim(daddslashes($_POST['pay_name']));
$sds=$DB->exec("update `pre_settle` set `type`='$pay_type',`account`='$pay_account',`username`='$pay_name' where `id`='$id'");
if($sds!==false)
exit('{"code":0,"msg":"修改记录成功!"}');
else
exit('{"code":-1,"msg":"修改记录失败!'.$DB->error().'"}');
break;
case 'paypwd_check':
if(isset($_SESSION['paypwd']) && $_SESSION['paypwd']==$conf['admin_paypwd'])
exit('{"code":0,"msg":"ok"}');
else
exit('{"code":-1,"msg":"error"}');
break;
case 'paypwd_input':
$paypwd=trim($_POST['paypwd']);
if(!$conf['admin_paypwd'])exit('{"code":-1,"msg":"你还未设置支付密码"}');
if($paypwd == $conf['admin_paypwd']){
$_SESSION['paypwd'] = $paypwd;
exit('{"code":0,"msg":"ok"}');
}else{
exit('{"code":-1,"msg":"支付密码错误!"}');
}
break;
case 'paypwd_reset':
unset($_SESSION['paypwd']);
exit('{"code":0,"msg":"ok"}');
break;
case 'set':
foreach($_POST as $k=>$v){
saveSetting($k, $v);
}
$ad=$CACHE->clear();
if($ad)exit('{"code":0,"msg":"succ"}');
else exit('{"code":-1,"msg":"修改设置失败['.$DB->error().']"}');
break;
case 'setGonggao':
$id=intval($_GET['id']);
$status=intval($_GET['status']);
$sql = "UPDATE pre_anounce SET status='$status' WHERE id='$id'";
if($DB->exec($sql))exit('{"code":0,"msg":"修改状态成功!"}');
else exit('{"code":-1,"msg":"修改状态失败['.$DB->error().']"}');
break;
case 'delGonggao':
$id=intval($_GET['id']);
$sql = "DELETE FROM pre_anounce WHERE id='$id'";
if($DB->exec($sql))exit('{"code":0,"msg":"删除公告成功!"}');
else exit('{"code":-1,"msg":"删除公告失败['.$DB->error().']"}');
break;
case 'getServerIp':
$ip = getServerIp();
exit('{"code":0,"ip":"'.$ip.'"}');
break;
case 'epayurl':
$id = intval($_GET['id']);
$conf['payapi']=$id;
if($url = pay_api()){
exit('{"code":0,"url":"'.$url.'"}');
}else{
exit('{"code":-1}');
}
break;
case 'iptype':
$result = [
['name'=>'0_X_FORWARDED_FOR', 'ip'=>real_ip(0), 'city'=>get_ip_city(real_ip(0))],
['name'=>'1_X_REAL_IP', 'ip'=>real_ip(1), 'city'=>get_ip_city(real_ip(1))],
['name'=>'2_REMOTE_ADDR', 'ip'=>real_ip(2), 'city'=>get_ip_city(real_ip(2))]
];
exit(json_encode($result));
break;
default:
exit('{"code":-4,"msg":"No Act"}');
break;
}