id)?trim($req->id):'all'; $db = $this->connecDb('192.168.2.200','5432','kaiyou2','postgres','qq123456'); $sql = 'select * from account'; $data = $this->select($db,$sql); $clslog = '\App\Model\Account_list'; $cls = '\App\Model\Account'; $bank = '\App\Model\Account_bank'; $group = '\App\Model\Account_group'; $userpwd = '\App\Model\Account_password'; $usertoken = '\App\Model\Account_Token'; $uservip = '\App\Model\Uservip'; if (!$req->isMethod('post')) { if($ids=='all'){ $unum = $this->select($db,$sql,2); $data['unum'] = empty($unum)?0:$unum; }else{ $data['unum'] = 1; } return view('admin.MoveData/index', array('data' => $data)); } else { echo '
';
$password = Request::has('rpassword') ? Request::get('rpassword') : '';
$allnum = Request::has('allnum') ? Request::get('allnum') : '0';
if (empty($password)) {
return responseToJson(-7010123622); //密码不能为空
}
//验证二级密码
//验证密码
$checkpwdsql = 'select * from system_user where id='.session('adminInfo.admin_id');
$admin_info = $this->select($db,$checkpwdsql);
$admin_info = current($admin_info);
if (!$admin_info) {
return responseToJson(-7010100202);
}
if (!VerPassword($password, $admin_info['encryption_2'], $admin_info['password_2'])) {
return responseToJson(-7010001622);
}
$log = array(
session('adminInfo.admin_name'),
);
//$res = OperationLog(session('adminInfo.admin_id'), 'GameKjcodes', $log);
$identitys = array();
$accounts = array();
if($ids=='all'){
$offset = ($page-1) * $limit;
$uinfosql = 'select * from account_list orderBy id asc limit ' . $limit . ' offset ' . $offset;
}else{
$uinfosql = 'select * from account_list where id=' . $ids;
$allnum = 1;
}
$uinfo = $this->select($db,$uinfosql);
print_r($uinfo);exit;
$curnum = count($uinfo);
if(empty($uinfo) || $curnum<1)return responseToJson(-4020000102);
foreach ($uinfo as $k => $v) {
$identitys[] = $v['account_identity'];
$accounts[] = $v['account'];
$accounts[] = 'vip' . $v['account'];
}
$bankinfo = $bank::whereIn('account_identity',$identitys)->get();
$pwdinfo = $userpwd::whereIn('account_identity',$identitys)->get();
$tokeninfo = $usertoken::whereIn('account_identity',$identitys)->get();
$vipinfo = $uservip::whereIn('account_identity',$identitys)->get();
$data = array(
'identitys' => $identitys,
'accounts' => $accounts,
'uinfo' => $uinfo,
'bankinfo' => $bankinfo?$bankinfo->toArray() : array(),
'pwdinfo' => $pwdinfo?$pwdinfo->toArray() : array(),
'tokeninfo' => $tokeninfo?$tokeninfo->toArray() : array(),
'vipinfo' => $vipinfo?$vipinfo->toArray() : array(),
);
echo "";
print_r($data);exit;
return responseToJson(1,'',array('allnum'=>$allnum,'curnum'=>$curnum,'data'=>$data));
}
}*/
//迁移数据
public function MovedataView(Req $req){
$limit = Request::has ('limit') ? Request::get ('limit') : 10;
$page = Request::has ('page') ? Request::get ('page') : 1;
$ids=isset($req->id)?trim($req->id):'all';
$oldDB = DB::connection('pgsql');
$oldcls = $oldDB->table('account');
if (!$req->isMethod('post')) {
if($ids=='all'){
$unum = $oldcls->count('id');
$data['unum'] = empty($unum)?0:$unum;
}else{
$data['unum'] = 1;
}
return view('admin.MoveData/index', array('data' => $data));
} else {
$oldclslog = $oldDB->table('account_list');
$oldbank = $oldDB->table('account_bank');
$oldgroup = $oldDB->table('account_group');
$olduserpwd = $oldDB->table('account_password');
$oldusertoken = $oldDB->table('account_token');
$olduservip = $oldDB->table('user_vip');
$oldadmin = $oldDB->table('system_user');
$oldpay = $oldDB->table('pay_password');
$password = Request::has('rpassword') ? Request::get('rpassword') : '';
$allnum = Request::has('allnum') ? Request::get('allnum') : '0';
if (empty($password)) {
return responseToJson(-7010123622); //密码不能为空
}
//验证二级密码
//验证密码
$admin_info = $oldadmin->where('id', session('adminInfo.admin_id'))->first();
if (!$admin_info) {
return responseToJson(-7010100202);
}
$admin_info = $this->toArray($admin_info);
if (!VerPassword($password, $admin_info['encryption_2'], $admin_info['password_2'])) {
return responseToJson(-7010001622);
}
$log = array(
session('adminInfo.admin_name'),
);
//$res = OperationLog(session('adminInfo.admin_id'), 'GameKjcodes', $log);
$identitys = array();
$accounts = array();
if($ids=='all'){
$offset = ($page-1) * $limit;
$uinfo = $oldclslog->limit($limit)->offset($offset)->orderBy('identity','asc')->get();
}else{
$uinfo = $oldclslog->where('id',$ids)->get();
$allnum = 1;
}
$uinfo = $this->toArray($uinfo);
$curnum = count($uinfo);
if(!$uinfo || $curnum<1)return responseToJson(-4020000102);
foreach ($uinfo as $k => $v) {
$identitys[] = $v['account_identity'];
$accounts[] = $v['account'];
$accounts[] = 'vip' . $v['account'];
}
$bankinfo = $oldbank->whereIn('account_identity',$identitys)->get();
$pwdinfo = $olduserpwd->whereIn('account_identity',$identitys)->get();
$tokeninfo = $oldusertoken->whereIn('account_identity',$identitys)->get();
$vipinfo = $olduservip->whereIn('account_identity',$identitys)->get();
$payinfo = $oldpay->whereIn('account_identity',$identitys)->get();
$data = array(
'identitys' => $identitys,
'accounts' => $accounts,
'uinfo' => $uinfo,
'bankinfo' => $this->toArray($bankinfo),
'pwdinfo' => $this->toArray($pwdinfo),
'tokeninfo' => $this->toArray($tokeninfo),
'vipinfo' => $this->toArray($vipinfo),
'payinfo' => $this->toArray($payinfo),
);
$this->AddData($data);
return responseToJson(1,'',array('allnum'=>$allnum,'curnum'=>$curnum,'data'=>$data));
}
}
//迁移数据到新数据库
function AddData($data){
$newDB = DB::connection('pgsql1');
$newcls = $newDB->table('account');
$newclslog = $newDB->table('change_record');
$newdetail = $newDB->table('account_detailed');
$newbank = $newDB->table('account_bank');
$newgroup = $newDB->table('account_group');
$newuserpwd = $newDB->table('account_password');
$newusertoken = $newDB->table('account_token');
$newuservip = $newDB->table('user_vip');
$newpay = $newDB->table('pay_password');
//获取已迁移数据信息,用于避免重复迁移
$hsinfo = $newclslog->select('old_identity')->whereIn('old_identity',$data['identitys'])->get();
$hsids = array();
$hsinfo = $this->toArray($hsinfo);
if($hsinfo && count($hsinfo)>0){
foreach ($hsinfo as $k => $v) {
$hsids[] = $v['old_identity'];
}
}
//获取分组信息
$groupinfo = $this->getGroupinfo($newgroup);
//查询重复用户名
$reaccount = $newcls->select('account')->whereIn('account',$data['accounts'])->get();
$unames = array();
$reaccount = $this->toArray($reaccount);
if($reaccount && count($reaccount)>0){
foreach ($reaccount as $k => $v) {
$unames[] = $v['account'];
}
}
//不迁移数据
$nouser = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/nouser.txt');
$nouser = explode(PHP_EOL, $nouser);
//组装数据
$cashinfo = array();
$account_data = array(); //会员信息
$accountdetail_data = array(); //会员详情数据
$record_data = array(); //迁移记录信息
foreach ($data['uinfo'] as $k => $v) {
if(in_array($v['account_identity'], $hsids))continue;
if(in_array($v['account'], $nouser)){
$hsids[] = $v['account_identity'];
continue;
}
$tuname = !in_array($v['account'], $unames)?$v['account'] : (!in_array('vip'.$v['account'], $unames)?'vip'.$v['account'] : $v['account'].'vip');
$account_data[] = array(
'identity' => $v['identity'],
'account' => $tuname,
'status' => $v['account_status'],
'fanshui' => $v['fanshui'],
'remark' => $v['remark'],
);
$record_data[] = array(
'old_user' => $v['account'],
'old_identity' => $v['account_identity'],
'new_user' => $tuname,
'new_identity' => $v['account_identity'],
'update_time' => date('Y-m-d H:i:s'),
'old_id' => $v['id'],
);
$accountdetail_data[] = array(
'identity' => $v['detail_identity'],
'account_identity' => $v['account_identity'],
'register_time' => $v['register_time'],
'register_ip' => $v['register_ip'],
'last_time' => $v['last_time'],
'last_ip' => $v['last_ip'],
'grade' => $v['grade'],
'email' => $v['email'],
'phone' => $v['phone'],
'invitation' => $v['invitation'],
'available_cash' => 0,
'cash' => 0,
'frozen_cash' => $v['frozen_cash'],
'open_invitation' => $v['open_invitation'],
'spread' => $v['spread'],
'placing' => $v['placing'],
'token' => $v['token'],
'statuss' => $v['statuss'],
'ranking' => $v['ranking'],
'card' => $v['card'],
'name' => $v['name'],
'show' => $v['show'],
'img_url' => $v['img_url'],
'qq' => $v['qq'],
'register_url' => $v['register_url'],
'last_url' => $v['last_url'],
'group_code' => $this->getGroupcode($groupinfo,$v['group_code'],$v['group_name']),
'group_name' => $v['group_name'],
'parent_id' => $v['parent_id'],
'parent_path' => $v['parent_path'],
'level' => $v['level'],
//'finance_cash' => $v['finance_cash'],
);
if($v['cash']<=0)continue;
$cashinfo[$v['account_identity']] = array(
'identity' => $v['account_identity'],
'account' => $v['account'],
'money' => $v['cash'],
'remark' => '用户活动,账号资金迁移',
);
}
//会员相关数据组装
$bank_data = array(); //会员银行卡信息
$pwd_data = array(); //会员密码数据
$token_data = array(); //会员token信息
$uservip_data = array(); //会员vip信息
$pay_data = array(); //支付密码信息
if(!empty($data['bankinfo']) && count($data['bankinfo'])>0){
foreach ($data['bankinfo'] as $k => $v) {
if(in_array($v['account_identity'], $hsids))continue;
$v['account_name'] = !in_array($v['account_name'], $unames)?$v['account_name'] : (!in_array('vip'.$v['account_name'], $unames)?'vip'.$v['account_name'] : $v['account_name'].'vip');
unset($v['id']);
unset($v['bank_code']);
$bank_data[] = $v;
}
}
if(!empty($data['pwdinfo']) && count($data['pwdinfo'])>0){
foreach ($data['pwdinfo'] as $k => $v) {
if(in_array($v['account_identity'], $hsids))continue;
unset($v['id']);
$pwd_data[] = $v;
}
}
if(!empty($data['tokeninfo']) && count($data['tokeninfo'])>0){
foreach ($data['tokeninfo'] as $k => $v) {
if(in_array($v['account_identity'], $hsids))continue;
unset($v['id']);
$token_data[] = $v;
}
}
if(!empty($data['vipinfo']) && count($data['vipinfo'])>0){
foreach ($data['vipinfo'] as $k => $v) {
if(in_array($v['account_identity'], $hsids))continue;
$v['account_name'] = !in_array($v['account_name'], $unames)?$v['account_name'] : (!in_array('vip'.$v['account_name'], $unames)?'vip'.$v['account_name'] : $v['account_name'].'vip');
unset($v['id']);
$uservip_data[] = $v;
}
}
if(!empty($data['payinfo']) && count($data['payinfo'])>0){
foreach ($data['payinfo'] as $k => $v) {
if(in_array($v['account_identity'], $hsids))continue;
unset($v['id']);
$pay_data[] = $v;
}
}
DB::beginTransaction ();
//添加数据到对应表中
$res = $this->addDataIntable($newcls,$account_data);
if($res<0){
DB::rollback ();
return $res;
}
$res = $this->addDataIntable($newdetail,$accountdetail_data);
if($res<0){
DB::rollback ();
return $res;
}
$res = $this->addDataIntable($newclslog,$record_data);
if($res<0){
DB::rollback ();
return $res;
}
$res = $this->addDataIntable($newbank,$bank_data);
if($res<0){
DB::rollback ();
return $res;
}
$res = $this->addDataIntable($newuserpwd,$pwd_data);
if($res<0){
DB::rollback ();
return $res;
}
$res = $this->addDataIntable($newusertoken,$token_data);
if($res<0){
DB::rollback ();
return $res;
}
$res = $this->addDataIntable($newuservip,$uservip_data);
if($res<0){
DB::rollback ();
return $res;
}
$res = $this->addDataIntable($newpay,$pay_data);
if($res<0){
DB::rollback ();
return $res;
}
//print_r($cashinfo);
//会员加款
//$url = $_SERVER['HTTP_ORIGIN'] . '/admin/Regulation/Edit';
if(count($cashinfo)>0){
foreach ($cashinfo as $k => $v) {
//$res = $this->addMoney($url,$v);
$res = $this->addMoneys($v,$newDB);
if($res<0){
DB::rollback ();
return $res;
}
}
}
DB::commit ();
return 1;
}
//通过用户分组名获取用户分组代码
function getGroupcode($groupinfo,$group_code,$group_name){
if(empty($groupinfo))return $group_code;
$group_name = explode('|', $group_name);
if(count($group_name)<1)return $group_code;
$group_code = '0,';
foreach ($group_name as $k => $v) {
$v = trim($v);
if(isset($groupinfo[$v])){
$group_code .= $groupinfo[$v] . ',';
}
}
return $group_code;
}
//获取本站用户组信息
function getGroupinfo($newgroup){
$data = $newgroup->select('group_name','group_code')->get();
$data = $this->toArray($data);
$resdata = array();
if(count($data)>0){
foreach ($data as $k => $v) {
$resdata[$v['group_name']] = $v['group_code'];
}
}
return $resdata;
}
//加款
function addMoneys($getdata,$newDB)
{
$id = $getdata['identity'];
$money = $getdata['money'];
$remark = $getdata['remark'];
$newcls = $newDB->table('account');
$newrecharge = $newDB->table('money_recharge');
$newwith = $newDB->table('withdraw_rule');
$newmc = $newDB->table('money_count');
$newman = $newDB->table('message');
$newdetail = $newDB->table('account_detailed');
$newmdetail = $newDB->table('money_details');
$newlog = $newDB->table('system_log');
$admin_name = session ('adminInfo.admin_name') ? session ('adminInfo.admin_name') : '来自接口';
//检测提交数据
$res_data = $this->CheckaddMoney ($id, $money,$newrecharge);
if ($res_data < 0)return $res_data;
$data = array(
'account_name' => $getdata['account'],
'account_identity' => $id,
'money' => $money,
'reason' => $remark,
'sysetem_user' => $admin_name,
);
//充值处理
//资金统计记录
$cdata = $data;
$cdata['pass_time'] = date ('Y-m-d', time ());
$res = $this->AddCountinfo ($cdata, $newmc);
if ($res < 0)return $res;
//加钱
$data['money_cash'] = $money;
$data['rate'] = 1;
$trade_type = 12;
/***********活动加款**************/
$reason = str_replace ('用于活动', '!@#$', $data['reason']);
$order_id = $this->addMoney ($data, 1, $trade_type,$newdetail,$newman,$newrecharge,$newmdetail);//加钱
if ($order_id < 0)return $order_id;
$prize_money = 0;
$log = array(
session ('adminInfo.admin_name'),
$data['account_name'],
$money,
$prize_money,
$data['reason'],
$order_id,
1,
);
$this->OperationLog (session ('adminInfo.admin_id'), 'add_money', $log,$newlog);
return 1;
}
function OperationLog($id, $opt, $_data,$newlog)
{
$data = array(
'identity' => UUID(),
'status' => 1,
'ip' => GETIP(),
'operation_time' => date('Y-m-d H:i:s', time()),
'system_identity' => $id,
'operation' => vsprintf(trans('operation.' . $opt), $_data),
);
return $newlog->insert($data);
}
//添加最新金额到统计表
private function AddCountinfo($data,$newmc){
$mtype = 'save';
$ts = GetpartTime($data['pass_time']); //获取统计周期信息
$type = $this->GetcountType(); //获取周期类型
$indata = array(
'account' => $data['account_name'],
'account_identity' => $data['account_identity'],
'ut_time' => $data['pass_time'],
$mtype => $data['money'],
);
for($i=1;$i<6;$i++){
$indata['count_time'] = $ts[$type[$i]];
switch ($i) {
case '1':
$indata['count_alltime'] = $indata['count_time'];
break;
case '3':
$indata['count_alltime'] = $ts['year'] . '-' . $ts['month'] . '-' . $indata['count_time'];
break;
case '4':
$indata['count_alltime'] = $ts['wyear'] . '-' . $indata['count_time'];
break;
default:
$indata['count_alltime'] = $ts['year'] . '-' . $indata['count_time'];
break;
}
$indata['type'] = $i;
$indata['identity'] =$data['account_identity'] . '_' . $i . '_' . $indata['count_alltime'];
$res=$newmc->where('identity',$indata['identity'])->first();
if(!$res){
$res = $newmc->insert($indata);
}else{
$res = $newmc->where('identity',$indata['identity'])->increment($mtype,$data['money']);
}
if($res<1)return -300326;
}
return 1;
}
//周期类型
private function GetcountType(){
return $type = array(
'1' => 'year',
'2' => 'month',
'3' => 'day',
'4' => 'week',
'5' => 'season',
);
}
/**
* 加钱函数
* @param array $data
* @param int $type
* @param int $trade_type
* @param obj $newudetail
* @param obj $newman
* @param obj $newrecharge
* @param obj $newmdetail
* @return int|string
*/
private function addMoney(array $data, $type, $trade_type,$newudetail,$newman,$newrecharge,$newmdetail)
{
$order_id = $this->rechargeLog ($data,$newrecharge);//充值记录
if ($order_id < 0)return $order_id;
$detail=$data;
$detail['rate']=1;
$res = $this->dataLog ($detail, $order_id, $type, $trade_type,$newmdetail);
if ($res < 0)return $res;
//添加用户余额
$res1=$newudetail->where('account_identity',$data['account_identity'])->increment('available_cash',$data['money']);
if(!$res1)return -5040022022;//增加约失败
$res2=$newudetail->where('account_identity',$data['account_identity'])->increment('cash',$data['money']);
if(!$res2)return -5040022022;//增加约失败
$this->updateMessage ('admin', $data['account_name'], '加款提示', '加款成功,加款金额:' . $data['money'], $newman);
return $order_id;
}
//添加公告数据
function updateMessage($sender, $reciver, $title, $content, $newman)
{
$data['add_time']=date('Y-m-d H:i:s');
$data['formname']=$sender;
$data['toname']=$reciver;
$data['title'] = $title;
$data['type'] =2;
$data['content'] = $content;
//普通消息
$res = $newman->insertGetId ($data);
if(!$res)return -6030001222;
return 1;
}
/**
* 添加充值/扣款详情记录函数
* @param array $data 详情数据数组
* @param mixed $order_id 充值/扣款订单号
* @param int $type 订单类别[1=>'充值',2=>'扣款'];
* @param int $trade_type 交易类型
* @return int|string 成功返回当前详单号,失败返回错误号
*/
private function dataLog(array $data, $order_id, $type, $trade_type,$money_db)
{
$rate = 1;
unset($data['rate']);
$deal_data = $data;
$deal_data['money_type'] = $type;
$deal_data['money_time'] = date ('Y-m-d H:i:s', time ());
$deal_data['trade_id'] = $order_id;
$deal_data['trade_type'] = $trade_type;
$admin_name = session ('adminInfo.admin_name');
$admin_name = isset($admin_name) ? $admin_name : '来自接口' . GETIP ();
$deal_data['sysetem_user'] = $admin_name;
$deal_data['trade_desc'] = sprintf (trans ('trade.admin_active_money'), $admin_name, $data['account_name'], $data['money'], $order_id, $rate);
$deal_data['status'] = 1;
$deal_data['info_identity'] = UUID();
$res = $money_db->insert($deal_data);
if (!$res) {
return -2020072022; //插入资金详情失败
}
return $order_id;
}
/**
* 充值记录
* @param array $data 充值记录数据
* @return int|string 充值成功返回充值订单号
*/
private function rechargeLog(array $data,$recharge)
{
$data['recharge_type'] = '活动充值';
$data['status'] = 1;
$data['apply_time'] = date ('Y-m-d H:i:s', time ());
$data['complete_time'] = date ('Y-m-d H:i:s', time ());
$data['rate'] = 1;
$data['order_id'] = OrderID ();
$data['info_identity'] = UUID ();
$data['remark'] = '后台充值';
$res = $recharge->insert($data);
if (!$res)return -3020011322; //加款失败
return $data['order_id'];exit;
}
//调用加款接口
/*function addMoney($url,$data){
$data = json_encode($data);
$ch = curl_init();
//设置选项,包括URL
curl_setopt($ch, CURLOPT_URL,$url);//抓取指定网页
curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_BASIC); //设置http验证方法
curl_setopt($ch, CURLOPT_TIMEOUT,30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-USER-TOKEN: {{ csrf_token() }}'
));
//执行并获取HTML文档内容
$output = curl_exec($ch);
$cinfo = curl_getinfo($ch);
//释放curl句柄
curl_close($ch);
//返回数据
print_r($cinfo);
print_r($output);
return $output;
}*/
//添加数据到对应表中
function addDataIntable($obj,$data){
if(!empty($data) && count($data)>0){
$res = $obj->insert($data);
if($res>0)return 1;
return -1;
}
return 1;
}
//验证金额
function CheckaddMoney($account_id, $money,$newrecharge)
{
$time = date ('Y-m-d H:i:s', time () - 10);
$res = $newrecharge->where ('account_identity', $account_id)->where ('money', $money)->where ('apply_time', '>', $time)->first ();
if (!$res) {
return 1;
}
return -5023809122;
}
//对象转数组
function toArray($data){
$data = json_encode($data);
$data = json_decode($data,1);
return $data;
}
}