<?php namespace app\api\controller; use app\common\controller\Api; use app\common\library\Ems; use app\common\library\Sms; use fast\Random; use think\Db; use think\Validate; use fast\Http; /** * 个人中心 */ class User extends Api { protected $noNeedLogin = ['login']; protected $noNeedRight = '*'; protected $uid = ''; public function _initialize() { parent::_initialize(); $this->uid = $this->auth->getUserId(); } /** * @ApiTitle (小程序登录) * @ApiSummary (小程序登录) * @ApiMethod (POST) * @ApiRoute (/api/user/login) * @ApiParams (name="code", type="string", required=true, description="小程序code") * @ApiParams (name="nickname", type="string", required=true, description="小程序昵称") * @ApiParams (name="avatar", type="string", required=true, description="小程序头像") * @ApiReturn({ "code": 1, "msg": "登录成功", "time": "1553839125", "data": { "token": "677afb39-1a4f-4492-84d3-0bcf32016b8a",//token "user_id": 27,//用户id "createtime": 1553839125,//登录时间 "expiretime": 1556431125,//token失效时间 "expires_in": 2592000//token失效剩余时间(单位s) "openid": 1485212522522//openid }) */ public function login(){ if($this->request->isPost()){ //小程序配置 $config = config('verify.raw'); //小程序传递数据,包含昵称,头像,code $raw_data = $this->request->post(); //验证表数据 $rule = config('verify.user'); $validate = new Validate($rule['rule'],$rule['msg']); if (!$validate->check($raw_data)) { $this->error($validate->getError()); } $params = [ 'appid' => $config['app_id'], 'secret' => $config['secret'], 'js_code' => $raw_data['code'], 'grant_type' => 'authorization_code' ]; $result = Http::sendRequest("https://api.weixin.qq.com/sns/jscode2session", $params, 'GET'); if ($result['ret']) { $json = (array)json_decode($result['msg'], true); if (isset($json['openid'])) { $result = [ 'openid' => $json['openid'], 'nickname' => $raw_data['nickname'], 'avatar' => $raw_data['avatar'] ]; $ret = $this->auth->login($result); if ($ret) { $data = $this->auth->getUserinfo(); $this->success('登录成功', $data); }else { $this->error($this->auth->getError()); } } else { $this->error("登录失败",$json); } } }else{ $this->error('请求方式错误'); } } /** * @ApiTitle (首页视频、图片、精美大片入口) * @ApiSummary (首页视频、图片、精美大片入口) * @ApiMethod (POST) * @ApiRoute (/api/user/index) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "time": "1571492001", "data": { "video_thumbnail": http://mapwww.baidu.com 视频封面图地址 "pic_thumbnail": http://mapwww.baidu.com 图片地址 "wonderful_thumbnail": http://mapwww.baidu.com 精美大片地址 } }) */ public function index() { $rule = config('verify.path'); $data = Db::name('video') ->field('id,thumbnail') ->order('id desc') ->limit('1') ->find(); $pic = Db::name('pic') ->field('id,thumbnail') ->order('id desc') ->limit('1') ->find(); $wonderful = Db::name('wonderful') ->field('id,thumbnail') ->order('id desc') ->limit('1') ->find(); $this->auth; $res['video_thumbnail'] = $rule.$data['thumbnail']; $res['pic_thumbnail'] = $rule.$pic['thumbnail']; $res['wonderful_thumbnail'] = $rule.$wonderful['thumbnail']; $this->success('SUCCESS',$res); } /** * @ApiTitle (地区分类) * @ApiSummary (地区分类) * @ApiMethod (POST) * @ApiRoute (/api/user/type) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1571492001", "data": { "id": 4,//分类id "area_name": //分类名称 "thumbnail": //图片 } }) */ public function type() { $rule = config('verify.path'); $data = Db::name('type') ->field('id,area_name,thumbnail') ->order('id desc') ->select(); foreach ($data as &$v){ $v['thumbnail'] = $rule.$v['thumbnail']; } $this->success('SUCCESS',$data); } /** * @ApiTitle (搜索页) * @ApiSummary (搜索页) * @ApiMethod (POST) * @ApiRoute (/api/user/search) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiParams (name="type_id", type="inter", required=false, description="视频/图片 (视频为1 图片为2 精美大片为3)") * @ApiParams (name="keyword", type="string", required=true, description="关键字") * @ApiReturn({ "code": 1, "msg": "成功", "time": "1571492001", "data": { "id": 4,//视频id/图片id, "thumbnail": //视频封面图地址/图片地址, "video": //视频路径/精美大片视频路径, } }) */ public function search() { $user_id = $this->uid; $rule = config('verify.path'); $type_id = $this->request->post('type_id'); if(empty($type_id)){ $this->error(['code'=>2,'msg'=>'缺少必要参数']); } $keyword = $this->request->post('keyword'); if(!empty($keyword)){ $param['user_id'] = $user_id; $param['title'] = $keyword; Db::name('history') ->insert($param); } if(!empty($keyword)){ if($type_id == 1){ $data = Db::name('video') ->where('keyword','like',"%$keyword%") ->whereOr('title','like',"%$keyword%") ->order('id desc') ->select(); foreach ($data as &$v){ $v['thumbnail'] = $rule.$v['thumbnail']; $v['video'] = $rule.$v['video']; } $this->success('SUCCESS',$data); }elseif($type_id == 2){ $data = Db::name('pic') ->where('keyword','like',"%$keyword%") ->whereOr('title','like',"%$keyword%") ->order('id desc') ->select(); foreach ($data as &$v){ $v['thumbnail'] = $rule.$v['thumbnail']; } $this->success('SUCCESS',$data); }else{ $data = Db::name('wonderful') ->where('title','like',"%$keyword%") ->order('id desc') ->select(); foreach ($data as &$v){ $v['thumbnail'] = $rule.$v['thumbnail']; $v['video'] = $rule.$v['video']; } $this->success('SUCCESS',$data); } }else{ $this->error(['code'=>2,'msg'=>'请输入关键字']); } } /** * @ApiTitle (图片列表) * @ApiSummary (图片列表) * @ApiMethod (POST) * @ApiRoute (/api/user/pic) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="type_id", type="inter", required=false, description="地区ID") * @ApiReturn({ "code": 1, "msg": "成功", "time": "1571492001", "data": { "id": 4,//图片id, "thumbnail": //缩略图, } }) */ public function pic() { $rule = config('verify.path'); $type_id = $this->request->post('type_id'); if(empty($type_id)){ $data = Db::name('pic') ->field('id,thumbnail') ->order('id desc') ->select(); foreach ($data as &$v){ $v['thumbnail'] = $rule.$v['thumbnail']; } $this->success('SUCCESS',$data); }else{ $type = ','.$type_id.','; $where['type_ids'] = ['like',"%$type%"]; $data = Db::name('pic') ->where($where) ->field('id,thumbnail') ->order('id desc') ->select(); foreach ($data as &$v){ $v['thumbnail'] = $rule.$v['thumbnail']; } $this->success('SUCCESS',$data); } } /** * @ApiTitle (视频列表) * @ApiSummary (视频列表) * @ApiMethod (POST) * @ApiRoute (/api/user/video) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="type_id", type="inter", required=false, description="地区ID") * @ApiReturn({ "code": 1, "msg": "成功", "time": "1571492001", "data": { "id": //图片id, "thumbnail": //视频封面, "video"://视频地址 } }) */ public function video() { $rule = config('verify.path'); $type_id = $this->request->post('type_id'); if(empty($type_id)){ $data = Db::name('video') ->field('id,thumbnail,video') ->order('id desc') ->select(); foreach ($data as &$v){ $v['thumbnail'] = $rule.$v['thumbnail']; $v['video'] = $rule.$v['video']; } $this->success('SUCCESS',$data); }else{ $type = ','.$type_id.','; $where['type_ids'] = ['like',"%$type%"]; $data = Db::name('video') ->where($where) ->field('id,thumbnail,video') ->order('id desc') ->select(); foreach ($data as &$v){ $v['thumbnail'] = $rule.$v['thumbnail']; $v['video'] = $rule.$v['video']; } $this->success('SUCCESS',$data); } } /** * @ApiTitle (图片详情) * @ApiSummary (图片详情) * @ApiMethod (POST) * @ApiRoute (/api/user/picdetail) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiParams (name="pic_id", type="inter", required=true, description="图片ID") * @ApiReturn({ "code": 1, "msg": "成功", "time": "1571492001", "data": { "id": 4,//图片id, "title"://标题 "thumbnail": //缩略图, "water_url": //小样带水印的图片地址, "price"://正常价格, "vip_price"://vip价格, "content"://图片介绍, "is_vip"://是否为会员(0否 1是) } }) */ public function picdetail() { $uid = $this->uid; $rule = config('verify.path'); $res = Db::name('user') ->where('id',$uid) ->field('id,is_vip') ->find(); if($res['is_vip'] == 0){ $pic_id = $this->request->post('pic_id'); if(empty($pic_id)){ $this->error(['code'=>2,'msg'=>'缺少必要参数']); } $data = Db::name('pic') ->field('id,title,thumbnail,price,vip_price,water_url,content') ->where('id',$pic_id) ->find(); $data['thumbnail'] = $rule.$data['thumbnail']; $data['water_url'] = $rule.$data['water_url']; $data['content'] = strip_tags($data['content']); $data['is_vip'] = 0; $this->success('SUCCESS',$data); }elseif($res['is_vip'] == 1){ $pic_id = $this->request->post('pic_id'); if(empty($pic_id)){ $this->error(['code'=>2,'msg'=>'缺少必要参数']); } $data = Db::name('pic') ->field('id,title,thumbnail,price,vip_price,water_url,content') ->where('id',$pic_id) ->find(); $data['is_vip'] = 1; $data['thumbnail'] = $rule.$data['thumbnail']; $data['water_url'] = $rule.$data['water_url']; $data['content'] = strip_tags($data['content']); $this->success('SUCCESS',$data); } } /** * @ApiTitle (视频详情) * @ApiSummary (视频详情) * @ApiMethod (POST) * @ApiRoute (/api/user/videodetail) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiParams (name="video_id", type="inter", required=true, description="视频ID") * @ApiReturn({ "code": 1, "msg": "成功", "time": "1571492001", "data": { "id": 4,//视频id, "title"://标题 "thumbnail": //视频封面图, "video": //2K视频地址, "water_url"://小样视频网址 "price"://2K价格, "vip_price"://2Kvip价格, "content"://图片介绍, "is_vip"://是否为会员(0否 1是) } }) */ public function videodetail() { $uid = $this->uid; $rule = config('verify.path'); $res = Db::name('user') ->where('id',$uid) ->field('id,is_vip') ->find(); if($res['is_vip'] == 0){ $pic_id = $this->request->post('video_id'); if(empty($pic_id)){ $this->error(['code'=>2,'msg'=>'缺少必要参数']); } $data = Db::name('video') ->field('id,title,thumbnail,video,price,vip_price,water_url,content') ->where('id',$pic_id) ->find(); $data['thumbnail'] = $rule.$data['thumbnail']; $data['video'] = $rule.$data['video']; $data['water_url'] = $rule.$data['water_url']; $data['content'] = strip_tags($data['content']); $data['is_vip'] = 0; $this->success('SUCCESS',$data); }elseif($res['is_vip'] == 1){ $pic_id = $this->request->post('pic_id'); if(empty($pic_id)){ $this->error(['code'=>2,'msg'=>'缺少必要参数']); } $data = Db::name('video') ->field('id,title,thumbnail,video,price,vip_price,water_url,content') ->where('id',$pic_id) ->find(); $data['is_vip'] = 1; $data['thumbnail'] = $rule.$data['thumbnail']; $data['video'] = $rule.$data['video']; $data['water_url'] = $rule.$data['water_url']; $data['content'] = strip_tags($data['content']); $this->success('SUCCESS',$data); } } /** * @ApiTitle (历史记录) * @ApiSummary (历史记录) * @ApiMethod (POST) * @ApiRoute (/api/user/history) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1571492001", "data": { "id": 4,//记录id, "title"://搜索的内容 } }) */ public function history() { $user_id = $this->uid; $data = Db::name('history') ->where('user_id',$user_id) ->order('id desc') ->limit(10) ->select(); $this->success('SUCCESS',$data); } }