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
PHTML

2 years ago
<?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]));
}
}