You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

209 lines
8.1 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace Admin\Event;
use Think\Controller;
/**
* 后台事件控制器
* @author 王贺
*/
class firstpayEvent extends Controller {
/*
*自选
*/
public function add1()
{
$gid=$_POST['game_id'];
$account=trim($_POST['account']);
$amount= $_POST['amount'];
if($gid==""){$this->error("游戏不能为空",U('bdfirstpay'));}
if($account==""){$this->error("用户不能为空",U('bdfirstpay'));}
$isset=get_play_user($account,$gid);
if($isset){
if(!is_numeric($amount)||$amount<=0 || !preg_match('/^[1-9](\d+)?$/',$amount)){
$this->error("请输入大于0的整数",U("bdfirstpay"));
return false;
}
$add['user_id']=$isset['id'];
$add['user_nickname']=$account;
$add['game_id']=$gid;
$add['game_name']=get_game_name($gid);
$add['order_number']="ZF_".build_order_no();
$add['pay_order_number']=build_order_no();
$add['user_account']=$account;
$add['amount']=$amount;
$add['status']=0;
$add['op_id']=UID;
// $add['cost']=$_POST['cost'];
$add['op_account']=session("user_auth.username");
$add['create_time']=NOW_TIME;
$prov=M("provide","tab_")->add($add);
$this->feAddOperationLog($account,$amount);
$this->success("提交成功",U("Provide/lists",["type"=>2]));
}else{
$this->error("该玩家还未玩此游戏",U("bdfirstpay"));
}
}
/**
* 内充管理---导入Excel
* @author 顽皮蛋 <shf_l@163.com>
*/
public function add3(){
header("Content-Type:text/html;charset=utf-8");
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('xls', 'xlsx');// 设置附件上传类
$upload->rootPath = './Uploads/'; // 设置附件上传目录
$upload->savePath = 'excel/'; // 设置附件上传目录
// 上传文件
$info = $upload->uploadOne($_FILES['excelData']);
$filename = './Uploads/'.$info['savepath'].$info['savename'];
$exts = $info['ext'];
if(!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
}else{// 上传成功
$this->charge_import($filename, $exts);
}
}
public function add2(){
$account=$_POST['pay_names'];
$amount=$_POST['amount'];
$gid=$_POST['game_id'];
if($gid==""){$this->error("游戏不能为空",U('bdfirstpay'));}
if(empty($account)){$this->error("充值人员不能为空");}
if($amount<=0 || !preg_match('/^[1-9](\d+)?$/',$amount)){$this->error("请输入大于0的整数");}
$namearr = explode("\n",$account);
static $a=0;
for($i=0;$i<count($namearr);$i++){
$user=get_play_user(str_replace(array("\r\n", "\r", "\n"), "", $namearr[$i]),$gid);
if(null!=$user){
$add['user_nickname']=get_user_nickname($namearr[$i]);
$add['pay_order_number']=build_order_no();
$add['order_number']="ZF_".build_order_no();
$add['game_name']=get_game_name($gid);
$add['user_account']=$namearr[$i];
$add['user_id']=$user['id'];
$add['amount']=$amount;
$add['status']=0;
$add['game_id']=$gid;
$add['op_id']=UID;
$add['op_account']=session("user_auth.username");
$add['create_time']=NOW_TIME;
$prov=M("provide","tab_")->add($add);
if($prov){
$this->feAddOperationLog($add['user_account'],$amount);
$a++;
}
}
}
$b=count($namearr)-$a;
$this->success("成功{$a}个,失败{$b}",U("Provide/lists",["type"=>2]));
}
//导入数据方法
protected function charge_import($filename, $exts='xls'){
//导入PHPExcel类库因为PHPExcel没有用命名空间只能inport导入
//import("Org.Util.PHPExcel");
vendor("PHPExcel.PHPExcel");
//创建PHPExcel对象注意不能少了\
$PHPExcel=new \PHPExcel();
//如果excel文件后缀名为.xls导入这个类
if($exts == 'xls'){
//import("Org.Util.PHPExcel.Reader.Excel5");
$PHPReader=new \PHPExcel_Reader_Excel5();
}else if($exts == 'xlsx'){
//import("Org.Util.PHPExcel.Reader.Excel2007");
$PHPReader=new \PHPExcel_Reader_Excel2007();
}
//载入文件
$PHPExcel=$PHPReader->load($filename);
//获取表中的第一个工作表如果要获取第二个把0改为1依次类推
$currentSheet=$PHPExcel->getSheet(0);
//获取总列数
$allColumn=$currentSheet->getHighestColumn();
//获取总行数
$allRow=$currentSheet->getHighestRow();
//循环获取表中的数据,$currentRow表示当前行从哪行开始读取数据索引值从0开始
for($currentRow=1;$currentRow<=$allRow;$currentRow++){
//从哪列开始A表示第一列
for($currentColumn='A';$currentColumn<=$allColumn;$currentColumn++){
//数据坐标
$address=$currentColumn.$currentRow;
//读取到的数据,保存到数组$arr中
$data[$currentRow][$currentColumn]=$currentSheet->getCell($address)->getValue();
}
}
$this->save_import($data);
}
//保存导入数据并返回错误信息
public function save_import($data){
unset($data[1]);
$errorNum = 0;
$succNum = 0;
$errorList = array();//存储错误数据;
foreach ($data as $k=>$v){
$errorList[$errorNum]['A'] = $v['A'];
$errorList[$errorNum]['B'] = $v['B'];
$errorList[$errorNum]['C'] = $v['C'];
$g = D('Game')->where(array('id'=>get_game_id($v['B'])))->find();
if(empty($g)){//游戏不存在
$errorList[$errorNum]['D'] = '游戏不存在';
$errorNum++;
continue;
}
$u = get_play_user($v['A'],$g['id']);
if(empty($u)){//用户名不存在
$errorList[$errorNum]['D'] = '用户名不存在';
$errorNum++;
continue;
}
if($v['C']<=0 || !preg_match('/^[1-9](\d+)?$/',$v['C'])){//金额有问题
$errorList[$errorNum]['D'] = '请输入大于0的整数';
$errorNum++;
continue;
}
$succNum++;
$arr['user_account'] = $v['A'];
$arr['game_id'] = get_game_id($v['B']);
$arr['op_id']=UID;
$arr['op_account']=session("user_auth.username");
$arr['user_nickname']=get_user_nickname($v['A']);
$arr['user_id']=get_user_id($v['A']);
// $arr['cost']=$_POST['cost'];
$arr['pay_order_number']=build_order_no();
$arr['order_number']="ZF_".build_order_no();
$arr['game_name']=$v['B'];
$arr['amount'] = (double)$v['C'];
$arr['create_time'] = NOW_TIME;
$arr['create_time'] = NOW_TIME;
$res = D('Provide')->add($arr);
if($res){
$this->feAddOperationLog($arr['user_account'],$arr['amount']);
}
}
$a = json_encode($errorList);
$json = urlencode(json_encode($errorList));
$this->assign ( 'errorNum', $errorNum );
$this->assign ( 'succNum', $succNum );
$this->assign ( 'status', 1 );
$this->assign ( 'json', $json);
$this->success('成功:'.$succNum.';失败:'.$errorNum,U("Provide/lists",["type"=>2]));
}
//操作日志
public function feAddOperationLog($user,$num)
{
$optionarr = array(
"op_type"=>0,
"key"=>($user."/".$num),
"menu"=>"充值-绑币订单-后台发放玩家-绑币发放",
"url"=>U("Provide/lists",array("model"=>"provide","user_account"=>$user))
);
addOperationLog($optionarr);
}
}