<?php namespace app\api\controller; use app\common\controller\Api; use think\Db; use EasyWeChat\Foundation\Application; /** * 用户接口 */ class User extends Api { protected $noNeedLogin = ['*']; protected $noNeedRight = '*'; public function _initialize() { parent::_initialize(); } /** * 用户接口 * @ApiTitle (用户接口-授权登陆) * @ApiSummary (授权登陆) * @ApiMethod (POST) * @ApiRoute (/api/User/SignLogin) * @ApiParams (name="code", type="integer", required=true, description="Code") * @ApiParams (name="avatar", type="integer", required=true, description="头像") * @ApiParams (name="nickname", type="integer", required=true, description="微信名") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { "avatar": "https://thirdwx.qlogo.cn/mmopen/vi_32/0wpUDw5m0LRvdDueia3uMWmrYb53GXRaTnYwMWC18kRmX6P6PIaPDgQqarEIfwroicx1z51D6bjQicOV0PibBx2PqQ/132", "nickname": "Gody", "token": "3dda6e452f4778fcc72e21178494bbc1", "mobile": null } }) */ public function SignLogin() { $param = $this->request->param(); // 授权登录 $ch = curl_init(); $appid = "wx55afbe753b153a68"; $secret = "428f6ca70764b0fceee65e1d4991f50a"; $code = $param['code']; $url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code"; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $output = curl_exec($ch); if ($output === FALSE) { echo "CURL Error:" . curl_error($ch); } curl_close($ch); $curl_result = json_decode($output, true); $openid = $curl_result['openid']; $is_open = Db::name('user')->where(['openid' => $openid])->find(); if ($is_open['is_black'] == 1) { $this->error('您已被拉黑', 0); die; } if (empty($is_open)) { $data = [ 'openid' => $openid, 'updatetime' => time(), 'createtime' => time(), 'avatar' => $param['avatar'], 'nickname' => $param['nickname'], 'vip' => 0, 'is_black' => 0, 'type' => 1 ]; Db::name('user')->insert($data); } $token = $this->request->token(); $arr = [ 'nickname' => $param['nickname'], 'avatar' => $param['avatar'], 'token' => $token, 'updatetime' => time(), ]; $res = Db::name("user")->where(['openid' => $openid])->update($arr); if (!$res) { $this->error('授权失败', 0); die; } $rult = Db::name("user")->where(['openid' => $openid])->find(); $return = [ 'avatar' => $rult['avatar'], 'nickname' => $rult['nickname'], 'token' => $rult['token'], 'mobile' => $rult['mobile'] ]; $this->success('成功', $return); } /** * 用户接口 * @ApiTitle (用户接口-开屏页Code) * @ApiSummary (开屏页Code) * @ApiMethod (POST) * @ApiRoute (/api/User/OpenCode) * @ApiParams (name="code", type="integer", required=true, description="Code") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { "avatar": "https://thirdwx.qlogo.cn/mmopen/vi_32/0wpUDw5m0LRvdDueia3uMWmrYb53GXRaTnYwMWC18kRmX6P6PIaPDgQqarEIfwroicx1z51D6bjQicOV0PibBx2PqQ/132", "nickname": "Gody", "token": "3dda6e452f4778fcc72e21178494bbc1", "mobile": null, "is_user":1=已注册,0=未注册, "vip":会员状态:1=会员,0=非会员, "exptime":会员到期时间, "type":身份:1=用户,2=找车工,3=洗车工 } }) */ public function OpenCode() { // 授权登录 $ch = curl_init(); $appid = "wx55afbe753b153a68"; $secret = "428f6ca70764b0fceee65e1d4991f50a"; $code = input('code'); $url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code"; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $output = curl_exec($ch); if ($output === FALSE) { echo "CURL Error:" . curl_error($ch); } curl_close($ch); $curl_result = json_decode($output, true); $openid = $curl_result['openid']; $is_open = Db::name('user')->where(['openid' => $openid])->find(); if ($is_open['is_black'] == 1) { $this->error('您已被拉黑', 0); die; } if (empty($is_open)) { $type = 0; $return = [ 'is_user' => $type, 'nickname' => '', 'avatar' => '', 'mobile' => null, 'vip' => '', 'exptime' => '', 'type' => '', 'token' => '' ]; } else { $type = 1; $token = $this->request->token(); $res = Db::name("user")->where(['openid' => $openid])->update(['token' => $token,]); if (!$res) { $this->error('令牌更新失败', 0); die; } $return = [ 'is_user' => $type, 'nickname' => $is_open['nickname'], 'avatar' => $is_open['avatar'], 'mobile' => $is_open['mobile'], 'vip' => $is_open['vip'], 'exptime' => $is_open['exptime'], 'type' => $is_open['type'], 'token' => $token ]; } $this->success('成功', $return); } /** * 用户接口 * @ApiTitle (用户接口-绑定手机) * @ApiSummary (绑定手机) * @ApiMethod (POST) * @ApiRoute (/api/User/CheckMobile) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="type", type="integer", required=true, description="1=手机号授权,2=验证码授权") * @ApiParams (name="mobile", type="integer", required=true, description="手机号") * @ApiParams (name="code", type="integer", required=true, description="验证码") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function CheckMobile() { $user_id = $this->is_token($this->request->header()); $param = $this->request->param(); if ($param['type'] == 2) { $this->CheckCode($param['mobile'], $param['code']); } $res = Db::name('user')->where('id', $user_id)->update(['mobile' => $param['mobile']]); $this->res($res); } /** * 用户接口 * @ApiTitle (用户接口-完善信息) * @ApiSummary (完善信息) * @ApiMethod (POST) * @ApiRoute (/api/User/AddUserCon) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="mobile", type="integer", required=true, description="手机号") * @ApiParams (name="code", type="integer", required=true, description="code") * @ApiParams (name="car_num", type="integer", required=true, description="车牌号") * @ApiParams (name="car_type", type="integer", required=true, description="车型") * @ApiParams (name="color", type="integer", required=true, description="车辆颜色") * @ApiParams (name="address", type="integer", required=true, description="我的地址") * @ApiParams (name="address_con", type="integer", required=true, description="详细地址") * @ApiParams (name="lng", type="integer", required=true, description="经度") * @ApiParams (name="lat", type="integer", required=true, description="纬度") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function AddUserCon() { $param = $this->request->param(); $user_id = $this->is_token($this->request->header()); $mobile = Db::name('user')->where('id', $user_id)->value('mobile'); $this->CheckCode($mobile, $param['code']); $data = [ 'mobile' => $param['mobile'], 'car_num' => $param['car_num'], 'car_type' => $param['car_type'], 'color' => $param['color'], 'address' => $param['address'], 'address_con' => $param['address_con'], 'lng' => $param['lng'], 'lat' => $param['lat'], ]; $res = Db::name('user')->where('id', $user_id)->update($data); if (!$res) { $this->error('请填写完整信息', 0); die; } $this->success('成功', 1); } /** * 用户接口 * @ApiTitle (用户接口-用户协议) * @ApiSummary (用户协议) * @ApiMethod (POST) * @ApiRoute (/api/User/UserBook) * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { "content": "<p>这是用户协议,1</p>" } }) */ public function UserBook() { $rult = Db::name('user_xieyi')->order('id desc')->find(); if (empty($rult)) { $list = [ 'content' => '' ]; } else { $list = [ 'content' => $rult['content'] ]; } $this->success('成功', $list); } /** * 用户接口 * @ApiTitle (用户接口-完善信息渲染) * @ApiSummary (完善信息渲染) * @ApiMethod (POST) * @ApiRoute (/api/User/My) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { "nickname": "Gody", "avatar": "https://thirdwx.qlogo.cn/mmopen/vi_32/0wpUDw5m0LRvdDueia3uMWmrYb53GXRaTnYwMWC18kRmX6P6PIaPDgQqarEIfwroicx1z51D6bjQicOV0PibBx2PqQ/132", "mobile": "13292442918", "car_num": "冀B123456", "car_type": "AE86", "color": "五颜六色的白", "address": "河北省唐山市路南区", "address_con": "万达广场第五棵大杨树旁", "lng": "116.39050", "lat": "39.89223", "vip": 0, "exptime": null } }) */ public function My() { $user_id = $this->is_token($this->request->header()); $user = Db::name('user')->where('id', $user_id)->find(); $return = [ 'nickname' => $user['nickname'], 'avatar' => $user['avatar'], 'mobile' => $user['mobile'], 'car_num' => $user['car_num'], 'car_type' => $user['car_type'], 'color' => $user['color'], 'address' => $user['address'], 'address_con' => $user['address_con'], 'lng' => $user['lng'], 'lat' => $user['lat'], 'vip' => $user['vip'], 'exptime' => $user['exptime'], ]; $this->success('成功', $return); } /** * 用户接口 * @ApiTitle (用户接口-联系客服) * @ApiSummary (联系客服) * @ApiMethod (POST) * @ApiRoute (/api/User/Kefu) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="con", type="string", required=true, description="内容") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function Kefu() { $user_id = $this->is_token($this->request->header()); $con = input('con'); $data = [ 'user_id' => $user_id, 'con' => $con, 'createtime' => time() ]; $res = Db::name('kefu')->insert($data); $this->res($res); } /** * 用户接口 * @ApiTitle (用户接口-我的订单) * @ApiSummary (我的订单) * @ApiMethod (POST) * @ApiRoute (/api/User/MyOrder) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="type", type="int", required=true, description="1=全部,2=已支付,3=未支付") * @ApiParams (name="pages", type="int", required=true, description="pages") * @ApiParams (name="rows", type="int", required=true, description="rows) * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { "count": 3, "list": [ { "id": 3, "status": 0, 1=已支付,0=未支付 "createtime": "2020-09-03 16:47:37", "start": "2020-09-07 16:47:37", //开始时间 "address": "河北省唐山市路南区", "address_con": "万达广场第五棵大杨树旁", "car_num": "冀B123456", "color": "五颜六色的白", "car_type": "AE86" } ] } }) */ public function MyOrder() { $user_id = $this->is_token($this->request->header()); $param = $this->request->param(); if ($param['type'] == 1) { $map = []; } if ($param['type'] == 2) { $map['status'] = ['eq', 1]; } if ($param['type'] == 3) { $map['status'] = ['eq', 0]; } $rult = Db::name('order')->where($map)->where('user_id', $user_id)->order('id desc')->page($param['pages'], $param['rows']) ->alias('a') ->join('user u', 'u.id=a.user_id') ->join('vip v', 'v.id=a.vip_id') ->field('a.id,a.order_sn,v.title,v.price,a.status,a.createtime,u.address,u.address_con,u.car_num,u.color,u.car_type') ->select(); $count = Db::name('order')->where($map)->where('user_id', $user_id)->order('id desc') ->alias('a') ->join('user u', 'u.id=a.user_id') ->join('vip v', 'v.id=a.vip_id') ->field('a.id,a.order_sn,v.title,v.price,a.status,a.createtime,u.address,u.address_con,u.car_num,u.color,u.car_type') ->select(); if (empty($rult)) { $List = [ 'count' => 0, 'list' => [] ]; } else { foreach ($rult as $k => $v) { $list[$k]['id'] = $v['id']; $list[$k]['order_sn'] = $v['order_sn']; $list[$k]['title'] = $v['title']; $list[$k]['price'] = $v['price']; $list[$k]['status'] = $v['status']; $list[$k]['createtime'] = date('Y-m-d H:i:s', $v['createtime']); $list[$k]['start'] = date('Y-m-d H:i:s', $v['createtime'] + 86400 * 4); $list[$k]['address'] = $v['address']; $list[$k]['address_con'] = $v['address_con']; $list[$k]['car_num'] = $v['car_num']; $list[$k]['color'] = $v['color']; $list[$k]['car_type'] = $v['car_type']; } $List = [ 'count' => count($count), 'list' => $list ]; } $this->success('成功', $List); } /** * 用户接口 * @ApiTitle (用户接口-员工页面) * @ApiSummary (员工页面) * @ApiMethod (POST) * @ApiRoute (/api/User/CarPeopleWork) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="type", type="int", required=true, description="1=全部,2=待找车(洗车),3=未找到(洗车),4=已找到(洗车)") * @ApiParams (name="pages", type="int", required=true, description="pages") * @ApiParams (name="rows", type="int", required=true, description="rows) * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', }) */ public function CarPeopleWork() { $user_id = $this->is_token($this->request->header()); $param = $this->request->param(); //2=找车,3=洗车 $type = Db::name('user')->where('id', $user_id)->value('type'); if ($type == 2) { $type_map['zhao_id'] = ['eq', $user_id]; if ($param['type'] == 1) { $map = []; } if ($param['type'] == 2) { $map['zhao_type'] = ['eq', 2]; } if ($param['type'] == 3) { $map['zhao_type'] = ['eq', 0]; } if ($param['type'] == 4) { $map['zhao_type'] = ['eq', 1]; } $arr = Db::name('renwu') ->alias('a') ->where($type_map) ->where($map) ->order('id desc') ->join('vip v', 'v.id=a.vip_id') ->field('a.id,v.title,a.zhao_type,a.createtime') ->page($param['pages'], $param['rows']) ->select(); $count = Db::name('renwu') ->alias('a') ->where($type_map) ->where($map) ->order('id desc') ->join('vip v', 'v.id=a.vip_id') ->field('a.id,v.title,a.zhao_type,a.createtime') ->select(); } else { $type_map['xi_id'] = ['eq', $user_id]; if ($param['type'] == 1) { $map = []; } if ($param['type'] == 2) { $map['xi_type'] = ['eq', 2]; } if ($param['type'] == 3) { $map['xi_type'] = ['eq', 0]; } if ($param['type'] == 4) { $map['xi_type'] = ['eq', 1]; } $arr = Db::name('renwu') ->where($type_map) ->where($map) ->order('id desc') ->alias('a') ->join('vip v', 'v.id=a.vip_id') ->field('a.id,v.title,a.xi_type,a.createtime') ->page($param['pages'], $param['rows']) ->select(); $count = Db::name('renwu') ->where($type_map) ->where($map) ->order('id desc') ->alias('a') ->join('vip v', 'v.id=a.vip_id') ->field('a.id,v.title,a.xi_type,a.createtime') ->select(); } if (empty($arr)) { $list = [ 'count' => 0, 'list' => [] ]; } else { if ($type == 2) { foreach ($arr as $k => $v) { $List[$k]['id'] = $v['id']; $List[$k]['title'] = $v['title']; if ($v['zhao_type'] == 1) { $List[$k]['status'] = '已找到'; } elseif ($v['zhao_type'] == 0) { $List[$k]['status'] = '未找到'; } elseif ($v['zhao_type'] == 2) { $List[$k]['status'] = '待找车'; } $List[$k]['createtime'] = date('Y-m-d H:i:s', $v['createtime']); $List[$k]['start'] = date('Y-m-d H:i:s', $v['createtime'] + 86400 * 4); } } else { foreach ($arr as $k => $v) { $List[$k]['id'] = $v['id']; $List[$k]['title'] = $v['title']; if ($v['xi_type'] == 1) { $List[$k]['status'] = '已清洗'; } elseif ($v['xi_type'] == 0) { $List[$k]['status'] = '未清洗'; } elseif ($v['xi_type'] == 2) { $List[$k]['status'] = '待清洗'; } $List[$k]['createtime'] = date('Y-m-d H:i:s', $v['createtime']); $List[$k]['start'] = date('Y-m-d H:i:s', $v['createtime'] + 86400 * 4); } } $list = [ 'count' => count($count), 'list' => $List ]; } $this->success('成功', $list); } /** * 用户接口 * @ApiTitle (用户接口-员工订单详情) * @ApiSummary (员工订单详情) * @ApiMethod (POST) * @ApiRoute (/api/User/OrderContent) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="id", type="int", required=true, description="ID") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { "id": 1, "title": "洗车季卡", "time": 1599209757, "mobile": "13292442918", "address": "河北省唐山市路南区", "address_con": "万达广场第五棵大杨树旁", "userlng": "116.39050", "userlat": "39.89223", "car_num": "冀B123456", "car_type": "AE86", "color": "五颜六色的白", "zhao_type": 0, "zhao_images": [], "car_address": "", "lat": "", "lng": "", "order_sn": "202009031647068127236526", "xi_type": 0, "xi_images": [], "createtime": "2020-09-04 16:55:57", "times": "2020-09-04 16:55:57", "user_level": 1 } }) */ public function OrderContent() { $user_id = $this->is_token($this->request->header()); $id = input('id'); $list = Db::name('renwu')->where('a.id', $id) ->alias('a') ->join('vip v', 'v.id=a.vip_id') ->join('user u', 'u.id=a.user_id') ->field('a.id,v.title,a.createtime as time,u.mobile,u.address,u.address_con,u.lng as userlng,u.lat as userlat,u.car_num,u.car_type,u.color,a.zhao_type,a.zhao_images,a.car_address,a.lat,a.lng,a.order_sn,a.xi_type,a.xi_images') ->find(); if (empty($list)) { $this->error('参数错误', 0); die; } if (empty($list['zhao_images'])) { $zhao_images = []; } else { if (strstr($list['zhao_images'], ',')) { $zhao_images = explode(',', $list['zhao_images']); } else { $zhao_images = explode(' ', $list['zhao_images']); } foreach ($zhao_images as $k => $v) { $zhao_images[$k] = cdnurl($v); } } if (empty($list['xi_images'])) { $xi_images = []; } else { if (strstr($list['xi_images'], ',')) { $xi_images = explode(',', $list['xi_images']); } else { $xi_images = explode(' ', $list['xi_images']); } foreach ($xi_images as $k => $v) { $xi_images[$k] = cdnurl($v); } } $list['createtime'] = date('Y-m-d H:i:s', $list['time']); $list['times'] = date('Y-m-d H:i:s', $list['time'] + 86400 * 3); $list['zhao_images'] = $zhao_images; $list['xi_images'] = $xi_images; $user_type = Db::name('user')->where('id', $user_id)->value('type'); $list['user_level'] = $user_type; $this->success('成功', $list); } /** * 用户接口 * @ApiTitle (用户接口-找车操作) * @ApiSummary (找车操作) * @ApiMethod (POST) * @ApiRoute (/api/User/WhereCarPeople) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="order_id", type="int", required=true, description="订单ID") * @ApiParams (name="type", type="int", required=true, description="找车工状态:1=已找到,0=未找到") * @ApiParams (name="address", type="int", required=true, description="车辆地址") * @ApiParams (name="lng", type="int", required=true, description="经度") * @ApiParams (name="lat", type="int", required=true, description="纬度") * @ApiParams (name="images", type="string", required=true, description="图片,多张图,拼接") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', }) */ public function WhereCarPeople() { $user_id = $this->is_token($this->request->header()); $param = $this->request->param(); $type = Db::name('user')->where('id', $user_id)->value('type'); if ($type != 2) { $this->error('身份错误!', 0); die; } if (empty($param['images']) || $param['images'] == null || $param['images'] == '' || $param['images'] == "") { $this->error('请上传找车图'); } if ($param['type'] == 0) { $data = [ 'zhao_type' => $param['type'], 'updatetime' => time() ]; } else { $data = [ 'zhao_type' => $param['type'], 'car_address' => $param['address'], 'lat' => $param['lat'], 'lng' => $param['lng'], 'zhao_images' => $param['images'], 'updatetime' => time() ]; } $res = Db::name('renwu')->where('id', $param['order_id'])->where('zhao_id', $user_id)->update($data); $this->res($res); } /** * 用户接口 * @ApiTitle (用户接口-洗车操作) * @ApiSummary (洗车操作) * @ApiMethod (POST) * @ApiRoute (/api/User/CleanCarPeople) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="order_id", type="int", required=true, description="订单ID") * @ApiParams (name="type", type="int", required=true, description="洗车工状态:1=已清洗,0=未清洗") * @ApiParams (name="images", type="string", required=true, description="图片,多张图,拼接") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', }) */ public function CleanCarPeople() { $user_id = $this->is_token($this->request->header()); $param = $this->request->param(); $type = Db::name('user')->where('id', $user_id)->value('type'); if ($type != 3) { $this->error('身份错误!', 0); die; } if (empty($param['images']) || $param['images'] == null || $param['images'] == '' || $param['images'] == "") { $this->error('请上传洗车图'); } $data = [ 'xi_type' => $param['type'], 'xi_images' => $param['images'], 'updatetime' => time() ]; $res = Db::name('renwu')->where('id', $param['order_id'])->where('xi_id', $user_id)->update($data); $this->res($res); } /** * 用户接口 * @ApiTitle (用户接口-手机号解析) * @ApiSummary (员工页面) * @ApiMethod (POST) * @ApiRoute (/api/User/MobileVi) * @ApiParams (name="encryptedData", type="int", required=true, description="encryptedData") * @ApiParams (name="iv", type="int", required=true, description="iv") * @ApiParams (name="sessionKey", type="int", required=true, description="sessionKey) * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', }) */ public function MobileVi() { $param = $this->request->param(); //SessionKey $ch = curl_init(); $appid = "wx55afbe753b153a68"; $secret = "428f6ca70764b0fceee65e1d4991f50a"; $code = $param['code']; $url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code"; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $output = curl_exec($ch); if ($output === FALSE) { echo "CURL Error:" . curl_error($ch); } curl_close($ch); $curl_result = json_decode($output, true); $sessionKey = $curl_result['session_key']; $options = [ 'mini_program' => [ 'app_id' => 'component-app-id', 'secret' => 'component-app-secret', 'token' => 'component-token', 'aes_key' => 'component-aes-key' ], ]; $app = new Application($options); $miniProgram = $app->mini_program; $mobile = $miniProgram->encryptor->decryptData($sessionKey, $param['iv'], $param['encryptedData']); $this->success('成功', $mobile); } }