checkParams($request, [ 'agentid/R', 'channelid/R', 'phone/R', 'captcha/0' ]); $agent_id = $params['agentid']; $channel_id = $params['channelid']; $phone = $params['phone']; $captcha = $params['captcha']; // 判断手机号码是否正确 if ( !preg_match('/^1[3456789]{1}\d{9}$/', $phone)) { throw new Exception('手机号不符合规则', 200); } if ( !isset($_SESSION['rand_code'])) { throw new Exception('请先获取验证码', 200); } if ($_SESSION['rand_code'] !== $captcha) { throw new Exception('验证码不正确', 200); } $SalesModel = new SalesModel(); $flag = $SalesModel->isRegisterPhone($agent_id, $channel_id, $phone); if ($flag) { throw new Exception('该手机号已注册', 200); } // 更新当前最大的代理id $sql = 'update ct_agent_list set max_sales_id = max_sales_id + floor(rand() * (12-6) + 6) where agent_id = ?'; Db::execute($sql, [$agent_id]); // 获取当前最大的代理id,默认权限 $sql = 'select max_sales_id, default_sales_power from ct_agent_list where agent_id = ? LIMIT 1'; $result = Db::query($sql, [$agent_id]); $max_sales_id = $result['max_sales_id']; $power = $result['default_sales_power']; // 插入记录 $sql = 'INSERT INTO sales_user ( saus_agentid, saus_channelid, saus_openid, saus_unionid, saus_firsttime, saus_salesid, saus_tel, saus_power, password, saus_salesman, saus_avatar, saus_nickname ) VALUES ( ?,?,?,?,?, ?,?,?,?,1, ?,? );'; $now = date("Y-m-d H:i:s", time()); $password = $max_sales_id . rand(1000, 9999); $result = Db::execute($sql, [ $agent_id, $channel_id, $phone, $phone, $now, $max_sales_id, $phone, $power, $password, '', '']); // 清楚短信验证码 unset($_SESSION['rand_code']); $return->biz_content = '注册成功'; return true; } /** * 代理登入 */ public function login($request, $return) { $params = $this->checkParams($request, [ 'agentid/R', 'channelid/R', 'account/R', 'password/R' ]); $agent_id = $params['agentid']; $channel_id = $params['channelid']; $account = $params['account']; $password = $params['password']; $sql = 'select saus_salesid, saus_nickname, saus_avatar,saus_roomcard, saus_bean from sales_user where saus_agentid = ? and saus_channelid and (saus_salesid = ? or saus_tel=?) and password=?;'; $sales_info = Db::query($sql, [$agent_id, $channel_id, $account, $account, $password]); } /** * 手机号动态验证码登录 * @param $request * @param $return * @return bool * @throws Exception */ public function loginByPhone($request, &$return) { $params = $this->checkParams($request, [ 'agentid/R', 'channelid/R', 'phone/phone', 'captcha/R' ]); $agent_id = $params['agentid']; $channel_id = $params['channelid']; $phone = $params['phone']; $captcha = $params['captcha']; $ret = Db::query('select id from sales_sms_code where agent_id = ? and channnel_id = ? and phone = ? and code = ?', [$agent_id, $channel_id, $phone, $captcha]); if ( !$ret) { $return->setErrors(200, '未查询到验证码'); return false; } // 通过session中的idx获取用户信息 $command = <<setErrors(200, '未获取到用户信息'); return false; } if ($dbSaleInfo['saus_status'] != 0) { $return->setErrors(200, '对不起,你的账号已被账号冻结'); return false; } // 记录登录日志 登录类型 0-微信登录 1-账号登录 2-手机号动态验证码登录 $sql = 'insert into ct_sales_login_log (agent_id, channel_id, sales_id, login_type, login_time) values (?,?,?,?,now());'; Db::execute($sql, [$agent_id, $channel_id, $dbSaleInfo['saus_salesid'], 2]); // 更新最后一次的登录的时间 $sql = 'update sales_user set saus_lasttime=now() where idx=?'; Db::execute($sql, [$dbSaleInfo['idx']]); $return->biz_content = array( 'idx' => $dbSaleInfo['idx'], /// 代理 'agentid' => $dbSaleInfo['saus_agentid'], /// 代理 'channelid' => $dbSaleInfo['saus_channelid'], /// 渠道 'openid' => isset($dbSaleInfo['saus_openid']) ? $dbSaleInfo['saus_openid'] : '', /// openid 'unionid' => isset($dbSaleInfo['saus_unionid']) ? $dbSaleInfo['saus_unionid'] : '', /// unionid 'nickname' => isset($dbSaleInfo['saus_nickname']) ? $dbSaleInfo['saus_nickname'] : '', /// 昵称 'headimgurl' => isset($dbSaleInfo['saus_avatar']) ? $dbSaleInfo['saus_avatar'] : '', /// 头像 'sex' => isset($dbSaleInfo['saus_sex']) ? $dbSaleInfo['saus_sex'] : '', /// 性别 'province' => isset($dbSaleInfo['saus_province']) ? $dbSaleInfo['saus_province'] : '', /// 省 'city' => isset($dbSaleInfo['saus_city']) ? $dbSaleInfo['saus_city'] : '', /// 市 'salesman' => empty($dbSaleInfo['saus_salesman']) ? 0 : intval($dbSaleInfo['saus_salesman']), /// 是否代理 'salesid' => isset($dbSaleInfo['saus_salesid']) ? $dbSaleInfo['saus_salesid'] : '', /// 代理编号 'level' => isset($dbSaleInfo['saus_level']) ? $dbSaleInfo['saus_level'] : '', /// 代理等级 'salestype' => isset($dbSaleInfo['saus_salestype']) ? $dbSaleInfo['saus_salestype'] : '', /// 代理类型 'roomcard' => isset($dbSaleInfo['saus_roomcard']) ? $dbSaleInfo['saus_roomcard'] : '', /// 账户房卡数 'bean' => isset($dbSaleInfo['saus_bean']) ? $dbSaleInfo['saus_bean'] : '', /// 账户金币数 'salespower' => isset($dbSaleInfo['saus_power']) ? $dbSaleInfo['saus_power'] : '', /// 代理权限 'agentmode' => 0, /// 分享模式 //'pushmoney' => intval($dbSaleInfo['saus_pushmoney1']) + intval($dbSaleInfo['saus_pushmoney2']), /// 提成金额 'sausstatus' => isset($dbSaleInfo['saus_status']) ? $dbSaleInfo['saus_status'] : '', /// 当前状态 'html_applysales' => isset($db_agent_info['html_applysales']) ? $db_agent_info['html_applysales'] : '', /// 成为代理的方式 'global_power' => isset($dbSaleInfo['global_power']) ? intval($dbSaleInfo['global_power']) : 0, /// 是否总代 'tel' => isset($dbSaleInfo['saus_tel']) ? $dbSaleInfo['saus_tel'] : '', /// 电话号码 'wechat' => isset($dbSaleInfo['saus_wechat']) ? $dbSaleInfo['saus_wechat'] : '', /// 微信号码 'ppp' => isset($dbSaleInfo['password']) ? $dbSaleInfo['password'] : '', /// 密码 'user_id' => empty(@$dbSaleInfo['user_id']) ? '' : $dbSaleInfo['user_id'], /// 统一账户编号 'is_bind' => empty($dbSaleInfo['saus_tel']) ? 0 : (0 == $dbSaleInfo['is_send_star'] ? 0 : 1), /// 是否绑定 'logintype' => 2, 'player_id' => isset($dbSaleInfo['player_id']) ? $dbSaleInfo['player_id'] : '' ); return true; } /** * 发送手机验证码,动态登录 */ public function captchaLogin($request, &$return) { $params = $this->checkParams($request, [ 'agentid/R', 'channelid/R', 'phone/phone' ]); $agent_id = $params['agentid']; $channel_id = $params['channelid']; $phone = $params['phone']; // 判断手机号是否绑定过账号 $sql = 'select idx from sales_user where saus_agentid=? and saus_channelid=? and saus_tel=? and is_send_star=1;'; $result = Db::query($sql, [$agent_id, $channel_id, $phone]); if ( !$result) { $return->setErrors(200, '该功能只支持已绑定手机的用户'); return false; } // 发送验证码 require_once '/models/Tools.php'; $Tools = new Tools(); $rand_code = $Tools->sendCaptcha($phone, 0, false); $command = 'select id from sales_sms_code where agent_id = ? and channnel_id = ? and phone = ? and status = 0'; $ret = Db::query($command, [$agent_id, $channel_id, $phone]); if (empty($ret)) { $command = 'insert into sales_sms_code(agent_id, channnel_id, phone, code, status, is_bind, create_time) values(?, ?, ?, ?, 0, 1, now());'; Db::execute($command, [$agent_id, $channel_id, $phone, $rand_code]); } else { $command = 'update sales_sms_code set code = ? where id = ?'; Db::execute($command, [$rand_code, $ret['id']]); } // 验证码保存到session中 //$_SESSION['rand_code'] = $rand_code; //$_SESSION['idx'] = $result['idx']; $return->biz_content = $rand_code; return true; } /** * 测试方法 * @param $request * @param $return * @return bool * @throws Exception */ public function test($request, $return) { $params = $this->checkParams($request, [ 'agentid/R', 'channelid/R' ]); $data = DB::query('select * from sales_user LIMIT 1;'); $params['test'] = 'tangjian'; $params['sales_info'] = $data; $return->biz_content = $params; return true; } }