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.

1128 lines
39 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 App\Controller;
use App\Logic\AuthLogic;
use App\Logic\UserLogic;
use App\Model\UserModel;
use Think\Controller;
use User\Api\MemberApi;
use Org\XiguSDK\Xigu;
use Org\UcenterSDK\Ucservice;
class UserController extends BaseController
{
/**
* APP登录
* @param account
* @param password
* author: xmy 280564871@qq.com
*/
public function user_login($account, $password)
{
/*是否开启Ucenter*/
if( C('UC_OPEN')==1 ){
$member = new MemberApi();
$user = new UserLogic();
$username = $account;
$password = $password;
//Ucenter登录
list($uc_uid, $uc_username, $uc_password, $uc_email) = uc_user_login($username,$password);
if($uc_uid > 0) {
//1.登录成功,验证在本地是否有此账号
$user_res = M('user','tab_')->where(['account'=>$uc_username])->find();
if(!empty($user_res)){//本地存在账号,验证密码直接登录
$user_id = $user->userLogin($account, $password);
if ($user_id > 0) {
$user_info = D('User')->getUserInfo($account);
$result['account'] = $user_info['account'];
$result['nickname'] = $user_info['nickname'];
$result['head_img'] = $user_info['head_img'];//头像
$result['balance'] = $user_info['balance']; //平台币
$result['sex'] = $user_info['sex'];
$result['is_uc'] = 0;
}
if ($user_id > 0) {
$result['token'] = $this->login($account, $result['is_uc']);
$url= UC_WEB_URL.'/app.php/user/user_login/account/'.$username.'/password/'.$password;
$json_res=file_get_contents($url);
$h5_res=explode('token":"', $json_res);
$h5_token=substr($h5_res[1],0,-3);
if(empty($h5_token)){
$url= UC_WEB_URL.'/app.php/user/user_register/account/'.$username.'/password/'.$password;
$json_reg=file_get_contents($url);
$h5_reg=explode('token":"', $json_reg);
$h5_token=substr($h5_reg[1],0,-3);
}
$result['h5_token']=$h5_token;
$this->set_message(200, "登录成功", $result);
} else {
if($user_id==-1000){
$this->set_message(1004,"账号不存在");
}elseif($user_id==-10021){
$this->set_message(1005,"密码错误");
}elseif($user_id==-1100){
$this->set_message(1028,"密码错误");
}elseif($user_id==-1001) {
$this->set_message(1004,"账号被禁用,请联系客服");
}
}
}else{//本地不存在账号,新增账号并登录
$resdata['account'] = $account;
$resdata['password'] = $password;
$resdata['sex'] = 1;
$resdata['nickname'] = '';
$res = D('User', 'Logic')->userRegisterByApp1($resdata);
if($res > 0 ){
$user_id = $user->userLogin($account, $password);
if ($user_id > 0) {
$user_info = D('User')->getUserInfo($account);
$result['account'] = $user_info['account'];
$result['nickname'] = $user_info['nickname'];
$result['head_img'] = $user_info['head_img'];//头像
$result['balance'] = $user_info['balance']; //平台币
$result['sex'] = $user_info['sex'];
$result['is_uc'] = 0;
}
if ($user_id > 0) {
$result['token'] = $this->login($account, $result['is_uc']);
$url= UC_WEB_URL.'/app.php/user/user_login/account/'.$username.'/password/'.$password;
$json_res=file_get_contents($url);
$h5_res=explode('token":"', $json_res);
$h5_token=substr($h5_res[1],0,-3);
if(empty($h5_token)){
$url= UC_WEB_URL.'/app.php/user/user_register/account/'.$username.'/password/'.$password;
$json_reg=file_get_contents($url);
$h5_reg=explode('token":"', $json_reg);
$h5_token=substr($h5_reg[1],0,-3);
}
$result['h5_token']=$h5_token;
$this->set_message(200, "登录成功", $result);
}
}else{
$this->set_message(1004,"账号已存在");
}
}
} elseif($uc_uid == -1) {
//用户不存在,验证本地用户账号密码
$res = $user->userLogin($account, $password);
if ($res > 0) {
$user_info = D('User')->getUserInfo($account);
$result['account'] = $user_info['account'];
$result['nickname'] = $user_info['nickname'];
$result['head_img'] = $user_info['head_img'];//头像
$result['balance'] = $user_info['balance']; //平台币
$result['sex'] = $user_info['sex'];
$result['is_uc'] = 0;
//同步ucenter注册
cus_uc_register($username,$password,$username.'@vlcms.com');
$result['token'] = $this->login($account, $result['is_uc']);
$url= UC_WEB_URL.'/app.php/user/user_login/account/'.$username.'/password/'.$password;
$json_res=file_get_contents($url);
$h5_res=explode('token":"', $json_res);
$h5_token=substr($h5_res[1],0,-3);
if(empty($h5_token)){
$url= UC_WEB_URL.'/app.php/user/user_register/account/'.$username.'/password/'.$password;
$json_reg=file_get_contents($url);
$h5_reg=explode('token":"', $json_reg);
$h5_token=substr($h5_reg[1],0,-3);
}
$result['h5_token']=$h5_token;
$this->set_message(200, "登录成功", $result);
} else {
switch ($res) {
case -1000:
$this->set_message(1004,"账号不存在");
break;
case -1001:
$this->set_message(1004,"账号被禁用,请联系客服");
break;
case -10021:
$this->set_message(1005,"密码错误");
break;
default:
$this->set_message(1004,"账号不存在");
break;
}
}
} elseif($uc_uid == -2) {
//密码错误
$this->set_message(1005,"密码错误");
} else {
//登录失败
}
}
$user = new UserLogic();
$user_id = $user->userLogin($account, $password);
if ($user_id > 0) {
$user_info = D('User')->getUserInfo($account);
$result['account'] = $user_info['account'];
$result['nickname'] = $user_info['nickname'];
$result['head_img'] = $user_info['head_img'];//头像
$result['balance'] = $user_info['balance']; //平台币
$result['sex'] = $user_info['sex'];
$result['is_uc'] = 0;
}
if ($user_id > 0) {
$result['token'] = $this->login($account, $result['is_uc']);
$this->set_message(200, "登录成功", $result);
} else {
if($user_id==-1000){
$this->set_message(1004,"账号不存在");
}elseif($user_id==-10021){
$this->set_message(1005,"密码错误");
}elseif($user_id==-1100){
$this->set_message(1028,"密码错误");
}elseif($user_id==-1001) {
$this->set_message(1004,"账号被禁用,请联系客服");
}
}
}
/**
* APP第三方登录
* @author 鹿文学
*/
public function user_third_login($nickname="",$unionid,$head_img="",$third_login_type,$access_token="",$promote_id=0){
/* $map['third_login_type'] = $third_login_type; */
$map['openid'] = get_union_id($access_token)?get_union_id($access_token):$unionid;
if($third_login_type == 4){
$uid = get_union_id($access_token);
if($uid){
$user_old = M('user','tab_')->where(array('openid'=>$unionid))->find();
if($user_old){
M('user','tab_')->where(array('openid'=>$unionid))->save(array('openid'=>$uid));
$map['openid'] = $uid;
}
}
}
$User = D('User');
$user = $User->where($map)->find();file_put_contents(dirname(__FILE__) . '/third_login.txt',json_encode($user));
if (empty($user)){
switch ($third_login_type){
case 2:
$prefix = "wx_";
$user['register_type'] = 3;
break;
case 4:
$prefix = "qq_";
$user['register_type'] = 4;
break;
}
do{
$user['account'] = $prefix.'_'.sp_random_string();
$account = M('user', 'tab_')->where(['account' => $user['account']])->find();
} while (!empty($account));
$user['password'] = sp_random_string(8);
$user['nickname'] = $nickname;
$user['head_img'] = !empty($head_img)?$head_img:'';
$user['openid'] = $map['openid'];
$user['third_login_type'] = $third_login_type;
$user['promote_id'] = $promote_id;
$user['promote_account'] = get_promote_account($promote_id);
$user['register_way'] = 2;
$user['id'] = D('User', 'Logic')->thirdRegisterByApp($user);
} else {
if($user['lock_status'] == 0 || $user['check_status'] == 0){
$this->set_message(1004,"账号被禁用,请联系客服");
}
if(!empty($head_img)) {
M('user', 'tab_')->where(['id'=>$user['id']])->setField(['head_img'=>$head_img]);
}
}
$data['user_id'] = "1000".$user['id'];
$data['account'] = $user['account'];
$data['nickname'] = $user['nickname'];
$data['head_img'] = !empty($head_img)?$head_img:(!empty($user['head_img'])?$user['head_img']:'');
$data['balance'] = !empty($user['balance'])?$user['balance']:0;
$data['sex'] = !empty($user['sex'])?$user['sex']:0;
$data['is_uc'] = 0;
$data['token'] = $this->login($user['account'],$data['is_uc']);
$this->auth($data['token']);
$this->set_message(200,'',$data);
}
/**
* 普通注册
* @param [type] $account 用户名
* @param [type] $password 密码
* @return [type] $sex 性别 0 1
*/
public function user_register($account,$password,$sex){
$user['account'] = $account;
$user['password'] = $password;
$user['sex'] = $sex;
$user['nickname'] = '';
/**是否开启ucenter**/
if(C('UC_OPEN')==1){
//Ucenter注册
//1.验证本平台是否存在账号
$is_user_info = M('user','tab_')->where(['account'=>$account])->find();
if(!empty($is_user_info)){
$this->set_message(1017, '用户名已存在');
}
//2.验证其他平台是否存在账号
$domain = C('UC_OTHER_WEB_URL');
if(!empty($domain)){
$url = "http://{$domain}/Api/user/checkUserName?account={$account}";
$check_res = json_decode(file_get_contents($url),true);
if($check_res['status']==0){
$this->set_message(1017, '用户名已存在');
}
}
//3.ucenter注册账号
$ucresult = uc_user_checkname($account);
if($ucresult == -1) {
$this->ajaxReturn(array('status'=>0,'msg'=>'用户名不合法'));exit;
} elseif($ucresult == -2) {
$this->ajaxReturn(array('status'=>0,'msg'=>'包含要允许注册的词语'));exit;
} elseif($ucresult == -3) {
$this->ajaxReturn(array('status'=>0,'msg'=>'用户名已经存在'));exit;
}else{
//同步ucenter注册
cus_uc_register($account,$password,$account.'@vlcms.com');
}
}
$result = 1;
if ($result > 0) {
$result = D('User', 'Logic')->userRegisterByApp1($user);
}
if ($result < 0) {
$this->set_message(1017, $result);
}
unset($user['password']);
$user['token'] = $this->login($account, 0);
$this->set_message(200, 1, $user);
}
/**
* 手机注册
* @param $phone
* @param $password
* @param $v_code 验证码
* @param $sex
* @param $nickname 昵称
* author: xmy 280564871@qq.com
*/
public function user_phone_register($phone, $password, $v_code, $sex, $nickname="")
{
#验证短信验证码
$result = R('Common/Sms/verify_sms_code',array($phone,$v_code,false));
if($result['code']==200) {
$user['account'] = $phone;
$user['password'] = $password;
$user['sex'] = $sex;
$user['nickname'] = $nickname;
/**是否开启ucenter**/
if(C('UC_OPEN')==1){
//Ucenter注册
//1.验证本平台是否存在账号
$is_user_info = M('user','tab_')->where(['account'=>$phone])->find();
if(!empty($is_user_info)){
$this->set_message(1017, '用户名已存在');
}
//2.验证其他平台是否存在账号
$domain = C('UC_OTHER_WEB_URL');
if(!empty($domain)){
$url = "http://{$domain}/Api/user/checkUserName?account={$phone}";
$check_res = json_decode(file_get_contents($url),true);
if($check_res['status']==0){
$this->set_message(1017, '用户名已存在');
}
}
//3.ucenter注册账号
$ucresult = uc_user_checkname($phone);
if($ucresult == -1) {
$this->ajaxReturn(array('status'=>0,'msg'=>'用户名不合法'));exit;
} elseif($ucresult == -2) {
$this->ajaxReturn(array('status'=>0,'msg'=>'包含要允许注册的词语'));exit;
} elseif($ucresult == -3) {
$this->ajaxReturn(array('status'=>0,'msg'=>'用户名已经存在'));exit;
}else{
//同步ucenter注册
cus_uc_register($phone,$password,$phone.'@vlcms.com');
}
}
$result = 1;
if ($result > 0) {
$result = D('User', 'Logic')->userRegisterByApp($user);
}
if ($result < 0) {
$this->set_message(1017, "用户已存在");
}
unset($user['password']);
$user['token'] = $this->login($phone, 0);
$this->set_message(200, "注册成功", $user);
} else {
switch ($result['code']){
case 1020:
$this->set_message(1020,"请先获取验证码");
break;
case 1021:
$this->set_message(1021,"验证码超时");
break;
case 1022:
$this->set_message(1022,"验证码错误");
}
$this->set_message(-1, $result['msg']);
}
}
/**
* @param $email
* @param $password
* 邮箱注册
*/
public function user_email_register($email,$password){
$user['account']=$email;
$user['password']=$password;
$result=1;
if ($result > 0) {
$result = D('User', 'Logic')->userRegisterByApp($user);
}
if ($result < 0) {
$this->set_message(1017, "用户名被占用");
}
unset($user['password']);
$user['token'] = $this->login($email, 0);
$this->set_message(200, 1, $user);
}
/**
* 用户登录
* 把账号和是否为UC用户状态 转为json
* 使用系统加密 后返回客户端
* 每次请求需带着这个参数
* @param $account 账号
* @param $is_uc 是否为UC用户
* @param int $day 过期时间
* @return string
* author: xmy 280564871@qq.com
*/
private function login($account, $is_uc, $day = 7)
{
$end_time = 60 * 60 * 24 * $day;
$info['account'] = $account;
$info['is_uc'] = $is_uc;
$result = $token = think_encrypt(json_encode($info), UC_AUTH_KEY, $end_time);
$data = M('User','tab_')->where(['account'=>$account])->find();
$loginData = array(
'user_id'=>$data['id'],
'user_account'=>$account,
'user_nickname'=>$data['nickname'],
'promote_id'=>$data['promote_id'],
'login_time'=>time(),
'login_ip'=>get_client_ip(),
);
M('user_login_record', 'tab_')->add($loginData);
return $result;
}
/**
* 发送验证码
* @param $phone 手机号
* @param int $type 1验证账号 2不验证
* author: xmy 280564871@qq.com
*/
public function send_msg($phone, $type = 1)
{
if (empty($phone)) {
$this->set_message(1029, "手机号不能为空");
}
$user = new UserLogic();
if ($type == 2 || $user->checkUserExist($phone)) {
$result = R('Common/Sms/send_sms_code',array($phone,10,false));
if ($result['code']==200) {
$this->set_message(200, "发送成功");
} else {
$this->set_message($result['code'], $result['msg']);
}
} else {
$this->set_message(1017, "用户已存在");
}
}
/**
* @param $email
* @param int $type
* 发送邮箱验证码
*/
public function send_email($email,$type=1){
if(empty($email)){
$this->set_message(1016,"邮箱不能为空");
}
$user=new UserLogic();
if($type==2||$user->checkUserExist($email)){
$result=$user::sendEmailMsg($email);
if($result){
$this->set_message(200,"发送成功");
}else{
$this->set_message(1018,"发送失败");
}
}else{
$this->set_message(1017,"用户已存在");
}
}
/**
* @param $email
* @param $v_code
* 验证邮箱验证码
*/
public function verify_email_code($email,$v_code){
if(empty($email)){
$this->set_message(1016,"邮箱不能为空");
}elseif(empty($v_code)){
$this->set_message(1019,"验证码不能为空");
}
$code_result = UserLogic::emailVerify($email, $v_code);
if($code_result==UserLogic::RETURN_SUCCESS){
$this->set_message(200,"验证成功");
}else{
if($code_result==2){
$this->set_message(1020,"请先获取验证码");
}elseif($code_result==-98){
$this->set_message(1021,"验证码超时");
}elseif ($code_result==-97){
$this->set_message(1022,"验证码错误");
}
}
}
/**
* 更新用户信息
* @param $account
* @param string $nickname
* @param string $sex 0 男 1 女
* author: xmy 280564871@qq.com
*/
public function update_user($token, $nickname = "", $sex = "")
{
$this->auth($token);
$result = D("User")->updateUserInfo(USER_ACCOUNT, $nickname, $sex);
if ($result !== false) {
$data = D("User")->getUserInfo(USER_ACCOUNT);
$this->set_message(200, "更新成功", $data);
} else {
$this->set_message(1031, "更新失败");
}
}
/**
*添加绑定支付宝账号
* lcj
*/
public function update_alipay($token,$alipay,$alipay_real_name,$pwd){
$this->auth($token);
//验证登录密码
$old_data = get_user_entity(USER_ACCOUNT,1);
if(think_psw_md5($pwd, UC_AUTH_KEY) !== $old_data['password']){
$this->set_message(1006, "登录密码输入不正确");
}else{
$savedata['alipay'] = $alipay;
$savedata['alipay_real_name'] = $alipay_real_name;
$result = M('user','tab_')->where(array('account'=>USER_ACCOUNT))->save($savedata);
if ($result !== false) {
$data = D("User")->getUserInfo(USER_ACCOUNT);
$this->set_message(200, "绑定成功", $data);
} else {
$this->set_message(1031, "绑定失败");
}
}
}
/**
* 获取用户消费记录
* lcj
*/
public function get_user_spend($token,$p=1){
$this->auth($token);
$page = intval($p);
$page = $page ? $page : 1; //默认显示第一页数据
$row = 10;
$user_data = D("User")->getUserInfo(USER_ACCOUNT);
$map['user_id'] = $user_data['id'];
$map['pay_status'] = 1;
$map['pay_way'] = array('GT',0);
$sdata = M('Spend','tab_')->field('1 as type,pay_amount,game_name,pay_time')->where($map)->select();
$ddata =M('Deposit','tab_')->field('2 as type,pay_amount,pay_source as game_name,create_time as pay_time')->where($map)->select();
$bdata = M('BindRecharge','tab_')->field('3 as type,real_amount as pay_amount, game_name,create_time as pay_time')->where($map)->select();
$data = array_merge($sdata,$ddata,$bdata);
foreach ($data as $key => $value) {
$sort_data[$key] = $value['pay_time'];
}
array_multisort($sort_data,SORT_REGULAR,SORT_DESC,$data);
$data = array_slice($data,($page-1)*$row,$row);
$this->set_message(200,'成功',$data);
}
/**
* 修改密码
* @param $account
* @param $old_pwd
* @param $new_pwd
* author: xmy 280564871@qq.com
*/
public function change_pwd($token, $old_pwd, $new_pwd)
{
$this->auth($token);
/*判断Ucenter是否打开*/
if( C('UC_OPEN')==1 ){
$username = USER_ACCOUNT;
//修改uc密码
$ucresult = uc_user_edit($username,$old_pwd,$new_pwd);
if($ucresult == -1) {
return $this->ajaxReturn(array('status'=>-2,'msg'=>'原密码错误'));
}
/**
* 同步修改其他站点用户密码
*/
$domain = C('UC_OTHER_WEB_URL');
if(!empty($domain)){
$url = "http://{$domain}/Api/user/editPassword?account={$username}&oldpsw={$old_pwd}&newpsw={$new_pwd}";
$aa = json_decode(file_get_contents($url),true);
}
}
$result = D('User')->changePwd(USER_ACCOUNT, $old_pwd, $new_pwd);
if($result==2){
$this->set_message(1006, "原密码不正确");
}else if($result !== false){
$u_uid['account']=USER_ACCOUNT;
M('user_pwd')->where($u_uid)->setField('password',think_encrypt($new_pwd));
$this->set_message(200, "更新成功");
}else{
$this->set_message(1031, "更新失败");
}
}
/**
* 忘记密码发送短信
* @param $account
* author: xmy 280564871@qq.com
*/
public function forget_send_msg($account)
{
$data = D("User")->getUserInfo($account);
if (empty($account)) {
$this->set_message(1004, "账号不存在");
} elseif (empty($data['phone'])) {
$this->set_message(1039, "该用户未绑定手机号");
}
$result = R('Common/Sms/send_sms_code',array($data['phone'],10,false));
if ($result['code']==200) {
$this->set_message(200, "发送成功");
} else {
$this->set_message($result['code'], $result['msg']);
}
}
/**
* 验证短信验证码
* @author 鹿文学
*/
public function forget_verify_msg($account, $v_code) {
$data = D("User")->getUserInfo($account);
if (empty($account)) {
$this->set_message(1004, "账号不存在");
} elseif (empty($data['phone'])) {
$this->set_message(1039, "该用户未绑定手机号");
}
$result = R('Common/Sms/verify_sms_code',array($data['phone'],$v_code,false));
if($result['code']==200) {
$this->set_message(200,"验证码正确");
} else {
switch ($result['code']){
case 1020:
$this->set_message(1020,"请先获取验证码");
break;
case 1021:
$this->set_message(1021,"验证码超时");
break;
case 1022:
$this->set_message(1022,"验证码错误");
}
}
}
/**
* 忘记密码
* @param $phone 手机号
* @param $v_code 验证码
* @param $password 密码
* @return bool
* author: xmy 280564871@qq.com
*/
public function forget_password($account, $password)
{
if(empty(trim($account))) {
$this->set_message(1012, "修改失败");
}
if(empty(trim($password))) {
$this->set_message(1012, "修改失败");
}
$data = D("User")->getUserInfo($account);
$result = D('User')->forgetPwd($account, $password);
if ($result !== false) {
$u_uid['account']=$account;
M('user_pwd')->where($u_uid)->setField('password',think_encrypt($password));
$this->set_message(200, "修改成功");
} else {
$this->set_message(1012, "修改失败");
}
}
/**
* 获取用户信息
* @param $token
* author: xmy 280564871@qq.com
*/
public function get_user_info($token)
{
$this->auth($token);
$data = D("User")->getUserInfo(USER_ACCOUNT);
$this->set_message(200, "成功", $data);
}
/**
* 绑币记录
* @param $token
* @param int $p
* author: xmy 280564871@qq.com
*/
public function get_user_bind_coin($token, $p = 1)
{
$this->auth($token);
$user_id = get_user_id(USER_ACCOUNT);
$model = new UserModel();
$data = $model->getUserBindCoin($user_id, $p);
if (empty($data)) {
$this->set_message(1033, "暂无数据");
} else {
$this->set_message(200, "成功", $data);
}
}
/**
* 实名认证信息 获得传递过来的UID返回该玩家是否已经通过审核
* @return mixed
*/
public function return_age()
{
/*$request = json_decode(file_get_contents("php://input"),true);*/
$request = $_GET;
if (empty($request)) {
$this->set_message(1001, "操作数据不能为空");
}
$this->auth($request['token']);
$data = C('age_prevent');
$data['on-off'] = $data['status'];
unset($data['status']);
$res['date'] = $data;
$where['account'] = USER_ACCOUNT;
$re = M('User', 'tab_')->field('age_status')->where($where)->find();
if ($re) {
$data['age_status'] = $re['age_status'];
if ($data['age_status'] == 0 && !empty($data['idcard']) && !empty($data['real_name'])) {
$data['age_status'] = 4;
}
} else {
$data['age_status'] = -1;
}
//计算用户的游戏时间 和 休息时间
$map['user_id'] = $request['user_id'];
$map['login_time | down_time'] = period(0);
$return = M('UserLoginRecord', 'tab_')->where($map)->order('id ASC')->select();
$count = count($return);
$play = 0;
$down = 0;
//游戏时间
if ($count % 2 == 0) {
for ($i = 0; $i < $count / 2; $i++) {
$play += $return[$i * 2 + 1]['down_time'] - $return[$i * 2]['login_time'];
}
} else {
for ($i = 0; $i < ceil($count / 2); $i++) {
if (!empty($return[$i * 2 + 1]['down_time'])) {
$play += $return[$i * 2 + 1]['down_time'] - $return[$i * 2]['login_time'];
} else {
$play += time() - $return[$i * 2]['login_time'];
}
}
}
if ($count <= 1) {
$down = 0;
} else if ($count == 2) {
$down += time() - $return[1]['down_time'];
} else {
if ($count % 2 == 0) {
for ($i = 0; $i < ($count / 2 - 1); $i++) {
$down += $return[$i * 2 + 2]['login_time'] - $return[$i * 2 + 1]['down_time'];
}
$down += time() - $return[$count - 1]['down_time'];
} else {
for ($i = 0; $i < (ceil($count / 2) - 1); $i++) {
$down += $return[$i * 2 + 2]['login_time'] - $return[$i * 2 + 1]['down_time'];
}
}
}
$data['play_time'] = floor($play / 60);
$data['down_time'] = floor($down / 60);
$this->set_message(200,"成功",$data);
}
/**
* 更改身份证账户 获得传递过来的UIDidcardname进行更改数据库
* @return mixed
*/
public function idcard_change($token,$idcard,$real_name)
{
if (empty($token) || empty($idcard) || empty($real_name)) {
$this->set_message(1066, "用户数据异常" );
}
$this->auth($token);
$map['account'] = USER_ACCOUNT;
$data['idcard'] = $idcard;
$data['real_name'] = $real_name;
if(isset($data['idcard'])){
$checkidcard = new \Think\Checkidcard();
$invidcard=$checkidcard->checkIdentity($data['idcard']);
if(!$invidcard){
$this->set_message(1123, "身份证号码填写不正确!");
}
$cardd=M('User','tab_')->where(array('idcard'=>$data['idcard']))->find();
if($cardd){
$this->set_message(1087, "身份证号码已被使用!");
}
}
//身份证认证
if (C('tool_age.status') == 0){
$data['age_status'] = 2;
}else {
$re = age_verify($data['idcard'], $data['real_name']);
switch ($re) {
case -1:
$this->set_message(1067, "短信数量已经使用完!");
break;
case -2:
$this->set_message(1068, "连接接口失败");
break;
case 0:
$this->set_message(1069, "用户数据不匹配");
break;
case 1://成年
$data['age_status'] = 2;
break;
case 2://未成年
$data['age_status'] = 3;
break;
default:
}
}
$return = M('User', 'tab_')->where($map)->save($data);
if (false!==$return) {
$data['status'] = 1;
$this->set_message(200,"实名认证成功",$data);
}else{
$this->set_message(1070, "fail", "用户数据更新失败");
}
}
/**
* 短信发送
* @param int user_id 用户ID
* @param string phone 手机号码
* @param string demand
* @return base64加密的json格式
* @author lyf
*/
public function send_sms($phone,$type=1,$delay=10){
//绑定手机时发送验证码 1
//解绑手机时发送验证码 2
if ($type == 1){
$map['phone'] = $phone;
$user = M('User','tab_')->where($map)->field('id,phone')->find();
if (!empty($user)){
$this->set_message(1098,"该手机号已被绑定",0);
}
}elseif($type == 2){
$map['phone'] = $phone;
$user = M('User','tab_')->where($map)->field('id,phone')->find();
if (empty($user)){
$this->set_message(1099,"该手机号不存在",0);
}
}
/// 产生手机安全码并发送到手机且存到session
$rand = rand(100000,999999);
$param = $rand.",".$delay;
if(get_tool_status("sms_set")){
appchecksendcode($phone,C('sms_set.limit'),2);
$xigu = new Xigu(C('sms_set.smtp'));
$result = json_decode($xigu->sendSM(C('sms_set.smtp_account'),$phone,C('sms_set.smtp_port'),$param),true);
if ($result['send_status'] != '000000') {
$this->set_message(1010,"验证码发送失败,请重新获取",0);
}
}elseif(get_tool_status("alidayu")){
appchecksendcode($phone,C('sms_set.limit'),2);
$xigu = new Xigu('alidayu');
$result = $xigu->alidayu_send($phone,$rand,$delay);
$result['send_time'] = time();
if($result == false){
$this->set_message(1010,"验证码发送失败,请重新获取",0);
}
}elseif(get_tool_status('jiguang')){
appchecksendcode($phone,C('sms_set.limit'),2);
$xigu = new Xigu('jiguang');
$result = $xigu->jiguang($phone,$rand,$delay);
$result['send_time'] = time();
if($result == false){
$this->set_message(1010,"验证码发送失败,请重新获取",0);
}
}else{
$this->set_message(1008,"没有配置短信发送",0);
}
// 存储短信发送记录信息
$result['send_status'] = '000000';
$result['phone'] = $phone;
$result['create_time'] = time();
$result['pid']=0;
$result['create_ip']=get_client_ip();
$r = M('Short_message')->add($result);
session($phone,array('code'=>$rand,'create_time'=>NOW_TIME,'delay'=>$delay));
$this->set_message(200,'success',$rand);
}
/**
* 绑定手机号
* @param $token
* @param $phone
* @param $vcode
* author: xmy 280564871@qq.com
*/
public function bind_phone($token,$phone,$vcode){
$this->auth($token);
$this->sms_verify($phone,$vcode);
$model = new \App\Model\UserModel();
$map['phone']=$phone;
$find=M('user','tab_')->where($map)->find();
if(null!==$find){
$this->set_message(-1,"手机号已被绑定");
}
$res = $model->bindPhone(get_user_id(USER_ACCOUNT),$phone);
$data = D("User")->getUserInfo(USER_ACCOUNT);
$data['phone'] = $phone;
if($res !== false){
$this->set_message(200,"绑定成功",$data);
}else{
$this->set_message(1104,"绑定失败");
}
}
/**
* 解绑手机
* @param $token
* @param $phone
* @param $vcode
* author: xmy 280564871@qq.com
*/
public function unbind_phone($token,$phone,$vcode){
$this->auth($token);
$this->sms_verify($phone,$vcode);
$model = new \App\Model\UserModel();
$res = $model->bindPhone(get_user_id(USER_ACCOUNT),"");
$data = D("User")->getUserInfo(USER_ACCOUNT);
$data['phone'] = '';
if($res !== false){
$this->set_message(200,"解绑成功",$data);
}else{
$this->set_message(1105,"解绑失败");
}
}
public function sms_verify($phone,$v_code,$status=1){
$telcode = session($phone);
if(!$telcode){
$this->set_message(1100,'验证码无效,请重新获取');
}
$time = (time() - $telcode['create_time'])/60;
if ($time>$telcode['delay']) {
session('telsvcode',null);unset($telcode);
$this->set_message(1102,'时间超时,请重新获取验证码');
}
if ($telcode['code'] == $v_code) {
if ($status==1){
session('telsvcode',null);unset($telcode);
return true;
}else{
$this->set_message(200,'success');
}
}else{
$this->set_message(1103,'验证码不正确,请重新输入');
}
}
/**
* 验签
* @param [type] $token [description]
* @return [type] [description]
*/
public function auth_token($token){
$this->auth($token);
$this->set_message(200,'success','');
}
/**
* 开机动画
*/
public function open_picture(){
$url=get_cover(C('APP_SET_COVER'),'path');
if(substr($url,0,1)=='h'){
$data=$url;
}else{
$data="http://".$_SERVER['HTTP_HOST'].$url;
}
echo json_encode(array('status' => 1, 'data' => $data));
}
/**
* 获取实名认证状态
* @return [type] [description]
*/
public function get_tool_age(){
echo json_encode(array('status' => C('tool_age.status'), 'data' => (object)[]));
}
/**
* [获取客服QQ的相关信息]
* @author 幽灵[syt]
*/
public function get_promote_site(){
$info=M('site_base','tab_')->where(['promote_id'=>PROMOTE_ID])->find();
if($info['site_qq']){
$this->set_message(200,'成功',$info['site_qq']);
}else{
$this->set_message(200,'成功',C('APP_QQ'));
}
}
/**
* 小号交易入口
* @author 鹿文学
*/
public function get_small_trade() {
if(C('IS_OPEN_SMALL_ACCOUNT')==1) {
$entrance = 1;
$trade_url = U('Trade/index',array('mark'=>'app'),false);
$trade_url = 'http://'.$_SERVER['HTTP_HOST'].''.str_replace('/app.php?','/mobile.php?',$trade_url);
} else {
$entrance = 0;
$trade_url = '';
}
echo json_encode(array('code' => 200, 'data' => ['small_switch'=>$entrance,'small_url'=>$trade_url]));
}
/**
* 第三方登录设置
* @author 鹿文学
*/
public function get_third_login_set() {
$qq_switch = C('qq_login.status') == 1? 1 : 0;
$wx_switch = C('weixin_login.status') == 1? 1 : 0;
echo json_encode(array('code' => 200, 'data' => ['qq_switch'=>$qq_switch,'wx_switch'=>$wx_switch]));
}
}