error(__('User center already closed')); } } /** * 会员中心 */ public function index() { $this->success('', ['welcome' => $this->auth->nickname]); } /** * 会员登录 * * @ApiMethod (POST) * @param string $account 账号 * @param string $password 密码 */ public function login() { $account = $this->request->post('account'); $password = $this->request->post('password'); if (!$account || !$password) { $this->error(__('Invalid parameters')); } $ret = $this->auth->login($account, $password); if ($ret) { $data = ['userinfo' => $this->auth->getUserinfo()]; $this->success(__('Logged in successful'), $data); } else { $this->error($this->auth->getError()); } } /** * 手机验证码登录 * * @ApiMethod (POST) * @param string $mobile 手机号 * @param string $captcha 验证码 */ public function mobilelogin() { $mobile = $this->request->post('mobile'); $captcha = $this->request->post('captcha'); $code = $this->request->post('code'); if (!$mobile || !$captcha) { $this->error(__('Invalid parameters')); } if (!Validate::regex($mobile, "^1\d{10}$")) { $this->error(__('Mobile is incorrect')); } if (!Sms::check($mobile, $captcha, 'mobilelogin')) { $this->error(__('Captcha is incorrect')); } $user = \app\common\model\User::getByMobile($mobile); if ($user) { if ($user->status != 'normal') { $this->error(__('Account is locked')); } //如果已经有账号则直接登录 $ret = $this->auth->direct($user->id); } else { $ret = LoginLogic::mnpLoginphone(['code'=>$code,'mobile'=>$mobile], $this->auth); if (true !== $ret && !is_array($ret)) { $this->error($ret); } // $ret = $this->auth->register($mobile, Random::alnum(), '', $mobile, []); } if ($ret) { Sms::flush($mobile, 'mobilelogin'); $data = ['userinfo' => $this->auth->getUserinfo()]; $this->success(__('Logged in successful'), $data); } else { $this->error($this->auth->getError()); } } /** * 注册会员 * * @ApiMethod (POST) * @param string $username 用户名 * @param string $password 密码 * @param string $email 邮箱 * @param string $mobile 手机号 * @param string $code 验证码 */ public function register() { $username = $this->request->post('username'); $password = $this->request->post('password'); $email = $this->request->post('email'); $mobile = $this->request->post('mobile'); $code = $this->request->post('code'); if (!$username || !$password) { $this->error(__('Invalid parameters')); } if ($email && !Validate::is($email, "email")) { $this->error(__('Email is incorrect')); } if ($mobile && !Validate::regex($mobile, "^1\d{10}$")) { $this->error(__('Mobile is incorrect')); } $ret = Sms::check($mobile, $code, 'register'); if (!$ret) { $this->error(__('Captcha is incorrect')); } $ret = $this->auth->register($username, $password, $email, $mobile, []); if ($ret) { $data = ['userinfo' => $this->auth->getUserinfo()]; $this->success(__('Sign up successful'), $data); } else { $this->error($this->auth->getError()); } } /** * 退出登录 * @ApiMethod (POST) */ public function logout() { if (!$this->request->isPost()) { $this->error(__('Invalid parameters')); } $this->auth->logout(); $this->success(__('Logout successful')); } /** * 修改会员个人信息 * * @ApiMethod (POST) * @param string $avatar 头像地址 * @param string $username 用户名 * @param string $nickname 昵称 * @param string $bio 个人简介 */ public function profile() { $user = $this->auth->getUser(); $username = $this->request->post('username'); $nickname = $this->request->post('nickname'); $wechat_num = $this->request->post('wechat_num'); $avatar = $this->request->post('avatar', '', 'trim,strip_tags,htmlspecialchars'); if ($username) { $exists = \app\common\model\User::where('username', $username)->where('id', '<>', $this->auth->id)->find(); if ($exists) { $this->error(__('Username already exists')); } $user->username = $username; } if ($nickname) { $exists = \app\common\model\User::where('nickname', $nickname)->where('id', '<>', $this->auth->id)->find(); if ($exists) { $this->error(__('Nickname already exists')); } $user->nickname = $nickname; } $user->wechat_num = $wechat_num; $user->avatar = $avatar; $user->save(); $this->success(); } public function getinfo(){ $user = $this->auth->getUser(); $this->success('',['user'=>$user]); } public function getHomeInfo(){ $user = $this->auth->getUser(); //获取我关注的用户数 $follow_count = Friend::where('user_id',$user->id)->count(); //获取我浏览的事件数量 $view_count = Contentlog::where('user_id',$user->id)->where('type',3)->count(); //获取我发布的事件数量 $event_count = ContentModel::where('user_id',$user->id)->count(); //获取我收藏的事件数量 $collect_count = Contentlog::where('user_id',$user->id)->where('type',2)->count(); $usernum['follow_count'] = $follow_count; $usernum['view_count'] = $view_count; $usernum['event_count'] = $event_count; $usernum['collect_count'] = $collect_count; $this->success('',['user'=>$usernum]); } /** * 修改邮箱 * * @ApiMethod (POST) * @param string $email 邮箱 * @param string $captcha 验证码 */ public function changeemail() { $user = $this->auth->getUser(); $email = $this->request->post('email'); $captcha = $this->request->post('captcha'); if (!$email || !$captcha) { $this->error(__('Invalid parameters')); } if (!Validate::is($email, "email")) { $this->error(__('Email is incorrect')); } if (\app\common\model\User::where('email', $email)->where('id', '<>', $user->id)->find()) { $this->error(__('Email already exists')); } $result = Ems::check($email, $captcha, 'changeemail'); if (!$result) { $this->error(__('Captcha is incorrect')); } $verification = $user->verification; $verification->email = 1; $user->verification = $verification; $user->email = $email; $user->save(); Ems::flush($email, 'changeemail'); $this->success(); } /** * 修改手机号 * * @ApiMethod (POST) * @param string $mobile 手机号 * @param string $captcha 验证码 */ public function changemobile() { $user = $this->auth->getUser(); $mobile = $this->request->post('mobile'); $newmobile = $this->request->post('newmobile'); $captcha = $this->request->post('captcha'); if (!$mobile || !$captcha) { $this->error(__('Invalid parameters')); } if (!Validate::regex($mobile, "^1\d{10}$")) { $this->error(__('Mobile is incorrect')); } if (\app\common\model\User::where('mobile', $mobile)->where('id', '<>', $user->id)->find()) { $this->error(__('Mobile already exists')); } $result = Sms::check($mobile, $captcha, 'changemobile'); if (!$result) { $this->error(__('Captcha is incorrect')); } $verification = $user->verification; $verification->mobile = 1; $user->verification = $verification; $user->mobile = $newmobile; $user->save(); Sms::flush($mobile, 'changemobile'); $this->success(); } /** * 第三方登录 * * @ApiMethod (POST) * @param string $platform 平台名称 * @param string $code Code码 */ public function third() { $url = url('user/index'); $platform = $this->request->post("platform"); $code = $this->request->post("code"); $config = get_addon_config('third'); if (!$config || !isset($config[$platform])) { $this->error(__('Invalid parameters')); } $app = new \addons\third\library\Application($config); //通过code换access_token和绑定会员 $result = $app->{$platform}->getUserInfo(['code' => $code]); if ($result) { $loginret = \addons\third\library\Service::connect($platform, $result); if ($loginret) { $data = [ 'userinfo' => $this->auth->getUserinfo(), 'thirdinfo' => $result ]; $this->success(__('Logged in successful'), $data); } } $this->error(__('Operation failed'), $url); } /** * 重置密码 * * @ApiMethod (POST) * @param string $mobile 手机号 * @param string $newpassword 新密码 * @param string $captcha 验证码 */ public function resetpwd() { $type = $this->request->post("type", "mobile"); $mobile = $this->request->post("mobile"); $email = $this->request->post("email"); $newpassword = $this->request->post("newpassword"); $captcha = $this->request->post("captcha"); if (!$newpassword || !$captcha) { $this->error(__('Invalid parameters')); } //验证Token if (!Validate::make()->check(['newpassword' => $newpassword], ['newpassword' => 'require|regex:\S{6,30}'])) { $this->error(__('Password must be 6 to 30 characters')); } if ($type == 'mobile') { if (!Validate::regex($mobile, "^1\d{10}$")) { $this->error(__('Mobile is incorrect')); } $user = \app\common\model\User::getByMobile($mobile); if (!$user) { $this->error(__('User not found')); } $ret = Sms::check($mobile, $captcha, 'resetpwd'); if (!$ret) { $this->error(__('Captcha is incorrect')); } Sms::flush($mobile, 'resetpwd'); } else { if (!Validate::is($email, "email")) { $this->error(__('Email is incorrect')); } $user = \app\common\model\User::getByEmail($email); if (!$user) { $this->error(__('User not found')); } $ret = Ems::check($email, $captcha, 'resetpwd'); if (!$ret) { $this->error(__('Captcha is incorrect')); } Ems::flush($email, 'resetpwd'); } //模拟一次登录 $this->auth->direct($user->id); $ret = $this->auth->changepwd($newpassword, '', true); if ($ret) { $this->success(__('Reset password successful')); } else { $this->error($this->auth->getError()); } } public function guanzhu(){ if($this->request->isPost()){ $user_id = $this->request->post('user_id'); $uid = $this->auth->id; $type = $this->request->post('type'); if($user_id==$uid) return $this->error('不能关注自己哦'); $info = Friend::where(['user_id'=>$uid,'children_id'=>$user_id])->find(); if($type){ //查询关注关系 if($info){ $data = [ 'id'=>$info['id'], 'deletetime'=>date("Y-m-d H:i:s"), ]; $res = Friend::update($data); if($res){ return $this->success('取消关注成功'); }else{ return $this->error('取消关注失败'); } }else{ return $this->error('关注关系不存在'); } }else{ //判断是否存在 if($info){ return $this->error('已关注'); } $data = [ 'user_id'=>$uid, 'children_id'=>$user_id, 'createtime'=>date("Y-m-d H:i:s"), ]; $res = Friend::insert($data); if($res){ return $this->success('关注成功'); }else{ return $this->error('关注失败'); } } } } //获取我的关注 public function getguanzhu(){ $uid = $this->auth->id; $list = Friend::alias('f')->join('fa_user p','p.id= f.children_id')->where('user_id',$uid) ->field('f.id,f.children_id as user_id,p.nickname,p.avatar') ->select(); return $this->success('获取成功',$list); } public function settixianmomey(){ if($this->request->isPost()){ $data = $this->request->post(); $uid = $this->auth->id; $user = $this->auth->getUser(); if($data['money']<0){ return $this->error('提现金额不能小于0'); } if($user['money']<$data['money']){ return $this->error('余额不足'); } $insert['type'] = 1; $insert['cardname'] = $data['cardname']; $insert['cardno'] = $data['cardno']; $insert['address'] = $data['address']; $insert['money'] = $data['money']; $insert['user_id'] = $uid; $insert['createtime'] = date("Y-m-d H:i:s",time()); $dashang = 0-number_format($data['money'], 2, '.', ''); UserModel::money($dashang, $uid, "用户申请提现金额¥{$data['money']}元,待审核"); if(Tixian::insertGetId($insert)) return $this->success('提交成功,待后台审核'); return $this->success('提现申请失败'); } } public function gettixianlist(){ $data = $this->request->post(); if($this->request->isPost()){ $tixian = new Tixian(); $where['user_id'] = $this->auth->id; $order = ['createtime'=>'desc']; $offset = $data['offset']; $limit = $data['limit']; $list = $tixian->getlist($where, $order, $offset, $limit); return $this->success('获取成功',$list); } return $this->error("非法请求"); } public function getshourulist(){ $data = $this->request->post(); if($this->request->isPost()){ $MoneyLog = new MoneyLog(); $where['user_id'] = $this->auth->id; $where['type'] = 1; $order = ['createtime'=>'desc']; $offset = $data['offset']; $limit = $data['limit']; $list = $MoneyLog->getlist($where, $order, $offset, $limit); return $this->success('获取成功',$list); } return $this->error("非法请求"); } public function getorderlist(){ //查询支付事件 $data = $this->request->post(); if($this->request->isPost()){ $Order = new OrderModel(); $where['o.user_id'] = $this->auth->id; $where['ispay'] = 1; $order = ['o.createtime'=>'desc']; $offset = $data['offset']; $limit = $data['limit']; $list = $Order->getlist($where, $order, $offset, $limit); foreach($list['rows'] as $k=>&$v){ $v['title'] = $v['type']==2?'开通云股东':$v['title']; } return $this->success('获取成功',$list); } return $this->error("非法请求"); } public function getyungudong(){ $yungudong = Vipset::where('id',1)->find(); $userinfo = $this->auth->getUser(); //查询赞赏列表 $zanshang = Zanshang::order('order asc')->select(); $return['yungudong'] = $yungudong; $return['zanshang'] = $zanshang; $return['is_vip'] = !$userinfo->is_vip?0:1; return $this->success('获取成功',$return); } }