<?php namespace app\mobile\controller; use think\Validate; use think\Db; use think\Exception; use think\exception\PDOException; use app\common\controller\Api; use app\common\library\Sms as Smslib; use app\mobile\controller\Sms; use app\mobile\model\Company; use app\mobile\model\CompanyUser; use app\mobile\model\Exam; use app\mobile\model\CourseOrder; use app\mobile\model\CourseAppraise; use app\mobile\model\SecretOrder; use app\mobile\model\ScoreSpec; use app\mobile\model\ScoreOrder; use app\mobile\model\QuestionCollect; use app\mobile\model\CourseCollect; use app\mobile\model\QuestionNote; use app\mobile\model\Message; use app\mobile\model\Feedback; use app\mobile\model\Problem; use app\mobile\model\Topic; use app\mobile\model\TopicAppraise; use app\mobile\model\TopicAppraiseGood; use app\mobile\model\UserJob; use app\mobile\model\CompanyJob; use app\mobile\model\Statistic; use addons\epay\library\Service; use Endroid\QrCode\QrCode; /** * 我的接口 * @ApiWeigh (66) */ class User extends Api { protected $noNeedLogin = ['registerUser','agreementUser','registerCompany','agreementCompany','login','resetpwd','exam','noLogin','problemList','problemInfo']; protected $noNeedRight = ['*']; public function _initialize() { parent::_initialize(); } /** * @ApiWeigh (99) * @ApiTitle (注册-个人) * @ApiSummary (注册-个人) * @param string $mobile 手机号 * @param string $code 验证码 * @param string $password 密码 */ public function registerUser() { $mobile = $this->request->param('mobile'); $code = $this->request->param('code'); $password = $this->request->param('password'); empty($mobile) && $this->error('请输入手机号'); empty($code) && $this->error('请输入验证码'); empty($password) && $this->error('请输入密码'); !Validate::regex($mobile, "^1\d{10}$") && $this->error('手机号格式不正确'); $ret = Sms::check($mobile, $code, 'register'); !$ret && $this->error('验证码不正确'); Db::startTrans(); try { $ret = $this->auth->register($username=get_order_sn(), $password, $email='', $mobile, []); // 记录每日注册数量 $statistic = Statistic::where('today',date('Y-m-d'))->find(); if($statistic){ $statistic->save(['register_times' => $statistic->register_times+1]); }else{ (new Statistic)->save([ 'register_times' => 1, 'today' => date('Y-m-d') ]); } Db::commit(); } catch (PDOException $e) { Db::rollback(); $this->auth->logout(); $this->error($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->auth->logout(); $this->error($e->getMessage()); } if ($ret) { $this->auth->setAllowFields(['id', 'mobile', 'group_id']); $data = ['userinfo' => $this->auth->getUserinfo()]; $this->success('注册成功', $data); } else { Db::rollback(); $this->error($this->auth->getError()); } } /** * @ApiWeigh (97) * @ApiTitle (注册协议-个人) * @ApiSummary (注册协议-个人) * @ApiMethod (POST) * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1599017563", "data": "用户协议内容" //协议内容 }) */ public function agreementUser() { $content = Db::name('mobile_config')->where('id',1)->value('user_agreement'); $this->success('成功', $content); } /** * @ApiWeigh (95) * @ApiTitle (注册-公司) * @ApiSummary (注册-公司) * @param string $name 公司名称 * @param string $address 公司地址 * @param string $license 公司执照 * @param string $legal_person 法人名称 * @param string $mobile 手机号 * @param string $code 验证码 * @param string $password 密码 */ public function registerCompany() { $name = $this->request->param('name'); $address = $this->request->param('address'); $license = $this->request->param('license'); $legal_person = $this->request->param('legal_person'); $mobile = $this->request->param('mobile'); $code = $this->request->param('code'); $password = $this->request->param('password'); empty($name) && $this->error('请输入公司名称'); empty($address) && $this->error('请输入地址'); empty($license) && $this->error('请上传执照'); empty($legal_person) && $this->error('请输入法人名称'); empty($mobile) && $this->error('请输入手机号'); empty($code) && $this->error('请输入验证码'); empty($password) && $this->error('请输入密码'); !Validate::regex($mobile, "^1\d{10}$") && $this->error('手机号格式不正确'); $ret = Sms::check($mobile, $code, 'register'); !$ret && $this->error('验证码不正确'); Db::startTrans(); try { $ret = $this->auth->register($username=get_order_sn(), $password, $email='', $mobile, []); $company = Company::create([ 'user_id' => $this->auth->id, 'name' => $name, 'address' => $address, 'license' => $license, 'legal_person' => $legal_person ]); // 添加企业邀请码 $this->setInviteCode($company['id']); // 记录每日注册数量 $statistic = Statistic::where('today',date('Y-m-d'))->find(); if($statistic){ $statistic->save(['register_times' => $statistic->register_times+1]); }else{ (new Statistic)->save([ 'register_times' => 1, 'today' => date('Y-m-d') ]); } Db::commit(); } catch (PDOException $e) { Db::rollback(); $this->auth->logout(); $this->error($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->auth->logout(); $this->error($e->getMessage()); } if($ret){ $this->auth->setAllowFields(['id', 'mobile', 'group_id']); $data = ['userinfo' => $this->auth->getUserInfo()]; }else{ Db::rollback(); $this->error($this->auth->getError()); } $this->success('注册成功', $data); } /** * @ApiWeigh (93) * @ApiTitle (注册协议-公司) * @ApiSummary (注册协议-公司) * @ApiMethod (POST) * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1599017563", "data": "用户协议内容" //协议内容 }) */ public function agreementCompany() { $content = Db::name('mobile_config')->where('id',1)->value('company_agreement'); $this->success('成功', $content); } /** * @ApiWeigh (91) * @ApiTitle (登录) * @ApiSummary (登录) * @ApiMethod (POST) * * @ApiParams (name="mobile", type="string", required=true, description="手机号") * @ApiParams (name="password", type="string", required=true, description="密码") * * @ApiReturn({ "code": 1, "msg": "登录成功", "time": "1600498819", "data": { "userinfo": { "id": 15, //用户ID "group_id": 1, //角色:0=普通用户,1=企业管理员 "mobile": "15133120361", //用户登录手机号 "token": "339d3a6c-c611-4961-a8e6-56a432b02a49", //token "user_id": 15, //用户ID "createtime": 1600498819, "expiretime": 1603090819, "expires_in": 2592000 } } }) */ public function login() { $mobile = $this->request->param('mobile'); $password = $this->request->param('password'); empty($mobile) && $this->error('请输入手机号'); empty($password) && $this->error('请输入密码'); !Validate::regex($mobile, "^1\d{10}$") && $this->error('手机号格式不正确'); Db::startTrans(); try { $ret = $this->auth->login($mobile, $password); // 记录日活 $statistic = Statistic::where('today',date('Y-m-d'))->find(); if($statistic){ $statistic->save(['active_times' => $statistic->active_times+1]); }else{ (new Statistic)->save([ 'active_times' => 1, 'today' => date('Y-m-d') ]); } Db::commit(); } catch (PDOException $e) { Db::rollback(); $this->auth->logout(); $this->error($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->auth->logout(); $this->error($e->getMessage()); } if ($ret) { $this->auth->setAllowFields(['id', 'mobile', 'group_id']); $data = ['userinfo' => $this->auth->getUserInfo()]; $this->success('登录成功', $data); } else { Db::rollback(); $this->error($this->auth->getError()); } } /** * @ApiWeigh (89) * @ApiTitle (忘记密码) * @ApiSummary (忘记密码) * * @param string $mobile 手机号 * @param string $newpassword 新密码 * @param string $code 验证码 */ public function resetpwd() { $mobile = $this->request->request("mobile"); $code = $this->request->request("code"); $newpassword = $this->request->request("newpassword"); empty($mobile) && $this->error('请输入手机号'); empty($newpassword) && $this->error('请输入密码'); !Validate::regex($mobile, "^1\d{10}$") && $this->error('手机号格式不正确'); $user = \app\common\model\User::getByMobile($mobile); !$user && $this->error('用户不存在'); $ret = Sms::check($mobile, $code, 'resetpwd'); !$ret && $this->error('验证码不正确'); Smslib::flush($mobile, 'resetpwd'); //模拟一次登录 $this->auth->direct($user->id); $ret = $this->auth->changepwd($newpassword, '', true); if ($ret) { $this->success('重置密码成功'); } else { $this->error($this->auth->getError()); } } /** * @ApiWeigh (85) * @ApiTitle (暂不登录提示) * @ApiSummary (暂不登录提示) * @ApiMethod (POST) * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1599017563", "data": "暂不登录提示内容" //暂不登录提示内容 }) */ public function noLogin() { $content = Db::name('mobile_config')->where('id',1)->value('no_login'); $this->success('成功', $content); } /** * @ApiWeigh (83) * @ApiTitle (我的-首页) * @ApiSummary (我的-首页) * @ApiMethod (POST) * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602813642", "data": { "id": 15, "group_id": 1, //身份:0=个人用户,1=企业用户 "username": "", "nickname": "", //真实姓名 "password": "743fee718194570689974bad08666a56", "salt": "UDnPtj", "email": "", "mobile": "15133120361", "avatar": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgaGVpZ2h0PSIxMDAiIHdpZHRoPSIxMDAiPjxyZWN0IGZpbGw9InJnYigxNjAsMjI5LDE3OSkiIHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48L3JlY3Q+PHRleHQgeD0iNTAiIHk9IjUwIiBmb250LXNpemU9IjUwIiB0ZXh0LWNvcHk9ImZhc3QiIGZpbGw9IiNmZmZmZmYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHRleHQtcmlnaHRzPSJhZG1pbiIgYWxpZ25tZW50LWJhc2VsaW5lPSJjZW50cmFsIj48L3RleHQ+PC9zdmc+", "level": 1, "gender": 0, "birthday": null, "bio": "", "money": "0.00", "score": 0, "successions": 1, "maxsuccessions": 3, "prevtime": 1601340700, "logintime": 1602242130, "loginip": "127.0.0.1", "loginfailure": 0, "joinip": "127.0.0.1", "jointime": 1599914736, "createtime": 1599914736, "updatetime": 1602242130, "token": "", "status": "normal", "verification": { "email": 0, "mobile": 0 }, "pwd": null, "card": null, "sex": null, "phone": null, "work_address": null, "image": "", //头像 "expirationtime": null, "studynum": null, "message_count": 1, //未读消息数量 "url": "/u/15" } }) */ public function index() { $user = $this->auth->getUser(); $user->image = !empty($user->image) ? cdnurl($user->image,true) : ''; $user->message_count = Message::where('user_id',$user->id)->where('is_read','0')->count(); $this->success('成功', $user); } /** * @ApiWeigh (81) * @ApiTitle (我的-修改会员个人信息) * @ApiSummary (我的-修改会员个人信息) * * @param string $image 头像地址 * @param string $username 用户名 * @param string $nickname 真实姓名 * @param int $sex 性别1男0女 */ public function profile() { $user = $this->auth->getUser(); $username = $this->request->param('username'); $nickname = $this->request->param('nickname'); $image = $this->request->param('image', '', 'trim,strip_tags,htmlspecialchars'); $sex = $this->request->param('sex'); if($username || $nickname || $image || in_array($sex,[0,1])) { if ($username) { $user->username = $username; } if ($nickname) { $user->nickname = $nickname; } if ($image) { $user->image = $image; } if (in_array($sex,[0,1])) { $user->sex = $sex; } $user->save(); } $this->success(); } /** * @ApiWeigh (79) * @ApiTitle (修改手机号-第一步) * @ApiSummary (修改手机号-第一步) * @param string $code 验证码 */ public function changemobile1() { $user = $this->auth->getUser(); $code = $this->request->param('code'); !$code && $this->error(__('请输入验证码')); $ret = Sms::check($user['mobile'], $code, 'changemobile1'); !$ret && $this->error('验证码不正确'); Smslib::flush($user['mobile'], 'changemobile1'); $this->success(); } /** * @ApiWeigh (77) * @ApiTitle (修改手机号-第二步) * @ApiSummary (修改手机号-第二步) * * @param string $mobile 新手机号 * @param string $code 验证码 */ public function changemobile2() { $user = $this->auth->getUser(); $mobile = $this->request->param('mobile'); $code = $this->request->param('code'); if (!$mobile || !$code) { $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, $code, 'changemobile2'); if (!$result) { $this->error(__('Captcha is incorrect')); } $verification = $user->verification; $verification->mobile = 1; $user->verification = $verification; $user->mobile = $mobile; $user->save(); Smslib::flush($mobile, 'changemobile2'); $this->success(); } /** * @ApiWeigh (76) * @ApiTitle (加入企业-查询企业) * @ApiSummary (加入企业-查询企业) * @ApiMethod (POST) * * @ApiParams (name="keyword", type="string", required=true, description="关键字") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602310974", "data": [{ "id": 7, //企业ID "name": "测试公司" //企业名称 }] }) */ public function companyList() { $keyword = $this->request->param('keyword'); empty($keyword) && $this->error('请输入关键字'); $list = Company::where('status','1') ->where('name','like','%'.$keyword.'%') ->field('id,name') ->select(); count($list) <= 0 && $this->error('未查找到该企业'); $this->success('成功',$list); } /** * @ApiWeigh (75) * @ApiTitle (加入企业) * @ApiSummary (加入企业) * * @param string $company_id 企业ID * @param string $name 姓名 * @param string $mobile 手机号 * @param string $invite_code 验证码 */ public function joinCompany() { $company_id = $this->request->param('company_id'); $name = $this->request->param('name'); $mobile = $this->request->param('mobile'); $invite_code = $this->request->param('invite_code'); // 验证传参 empty($company_id) && $this->error('缺少必需参数'); empty($name) && $this->error('请填写姓名'); empty($mobile) && $this->error('请填写联系方式'); empty($invite_code) && $this->error('请填写邀请码'); !Validate::regex($mobile, "^1\d{10}$") && $this->error(__('Mobile is incorrect')); // 验证邀请码 $company = Company::where('invite_code',$invite_code) ->where('id',$company_id) ->field('id') ->find(); empty($company) && $this->error('邀请码错误,请输入正确的邀请码'); // 验证申请状态 $company_user = CompanyUser::where('company_id',$company['id']) ->where('user_id',$this->auth->id) ->field('status') ->find(); if($company_user){ if($company_user['status'] == '0'){ $this->error('正在申请中,请勿重复提交申请'); } if($company_user['status'] == '1'){ $this->error('加入企业成功,请勿重复提交申请'); } } CompanyUser::create([ 'user_id' => $this->auth->id, 'company_id' => $company_id, 'name' => $name, 'mobile' => $mobile ]); $this->success('已成功提交,请提醒企业管理员及时审核'); } /** * 更新企业邀请码 * @ApiInternal * @param string $company_id 企业ID */ public function setInviteCode($company_id){ $code = mt_rand(100000,999999); $find = Company::where('invite_code',$code)->field('id')->find(); if(!$find){ Company::where('id',$company_id)->setField('invite_code',$code); return $code; }else{ $this->setInviteCode($company_id); } } /** * @ApiWeigh (73) * @ApiTitle (我的课程) * @ApiSummary (我的课程) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="page", type="inter", required=false, description="当前页(默认1)") * @ApiParams (name="page_num", type="inter", required=false, description="每页显示数据个数(默认10)") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600081718", "data": { "total": 1, // 数据总数 "list": [{ "id": 9, //课程订单ID "pay_price": "50.00", //实际支付金额 "course": { //课程信息 "id": 1, //课程ID "title": "测试课程", //课程标题 "cover": "" //课程封面图 }, "is_have_qi": 0 //是否有企字:0=否,1=是 "is_have_appraise": 0 //是否已评价:0=否,1=是 }] } }) */ public function myCourse(){ $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); // 我加入的企业购买的课程 $company_course_list = CourseOrder::alias('co') ->join('mobile_company_user cu','cu.company_id = co.company_id') ->where('cu.user_id',$this->auth->id) ->where('cu.status','1') ->field('co.id,co.company_id,co.people_num,co.is_top') ->select(); // 查询我是否可以享受企业课程(按企业审核时间排队,没在队伍里就无法享受企业课程) $course_id_arr = []; foreach ($company_course_list as $v) { if($v['is_top'] == '1'){ $course_id_arr[] = $v['id']; continue; } $user_id_arr = CompanyUser::where('company_id',$v['company_id']) ->where('status','1') ->order('updatetime asc') ->limit($v['people_num']) ->column('user_id'); if(in_array($this->auth->id,$user_id_arr)){ $course_id_arr[] = $v['id']; } } // 查找所有课程 $data = CourseOrder::with(['course']) ->where(function($query)use($course_id_arr){ $query->where('user_id', $this->auth->id)->whereor('id', 'in', $course_id_arr); }) ->where('pay_status','1') ->order('createtime desc') ->paginate($page_num,false,['page'=>$page]) ->each(function($v)use($course_id_arr){ // 是否有企字 $v['is_have_qi'] = in_array($v['id'], $course_id_arr) ? 1 : 0; // 是否已评价 $have_appraise = CourseAppraise::where('user_id',$this->auth->id) ->where('course_id',$v['course_id']) ->where('course_order_id',$v['id']) ->field('id') ->find(); $v['is_have_appraise'] = !empty($have_appraise) ? 1 : 0; $v->visible(['id','pay_price','course'])->append(['is_have_qi','is_have_appraise']); $v->getRelation('course')->visible(['id','cover','title']); })->toArray(); $this->success('成功',['total'=>$data['total'],'list'=>$data['data']]); } /** * @ApiWeigh (71) * @ApiTitle (我的课程-评价页面) * @ApiSummary (我的课程-评价页面) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="course_order_id", type="int", required=true, description="课程订单ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600084253", "data": { "id": 10, //课程订单ID "pay_price": "50.00", //实际支付金额 "course": { //课程信息 "title": "测试课程", //课程标题 "cover": "" //课程封面图 }, "is_have_qi": 0 //是否有企字:0=否,1=是 } }) */ public function appraiseView(){ $course_order_id = $this->request->param('course_order_id'); empty($course_order_id) && $this->error('缺少必需参数'); $info = CourseOrder::get($course_order_id,['course']); empty($info) && $this->error('课程订单不存在'); $user_id_arr = CompanyUser::where('company_id',$info['company_id']) ->where('status','1') ->order('updatetime asc') ->limit($info['people_num']) ->column('user_id'); $info['is_have_qi'] = in_array($this->auth->id,$user_id_arr) ? 1 : 0; $info->visible(['id','pay_price','course'])->append(['is_have_qi']); $info->getRelation('course')->visible(['cover','title']); $this->success('成功',$info); } /** * @ApiWeigh (69) * @ApiTitle (我的课程-评价) * @ApiSummary (我的课程-评价) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="course_order_id", type="int", required=true, description="课程订单ID") * @ApiParams (name="star", type="int", required=true, description="评价星数") * @ApiParams (name="content", type="int", required=true, description="评价内容") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600084253", "data": null }) */ public function appraise(){ $course_order_id = $this->request->param('course_order_id'); $star = $this->request->param('star'); $content = $this->request->param('content'); empty($course_order_id) && $this->error('缺少必需参数'); empty($star) && $this->error('请选择星数'); empty($content) && $this->error('请填写评价内容'); $info = CourseOrder::get($course_order_id,['course']); empty($info) && $this->error('课程订单不存在'); CourseAppraise::create([ 'user_id' => $this->auth->id, 'course_id' => $info['course_id'], 'course_order_id' => $info['id'], 'star' => $star, 'content' => $content ]); $this->success('评价成功'); } /** * @ApiWeigh (67) * @ApiTitle (我的密卷) * @ApiSummary (我的密卷) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="page", type="inter", required=false, description="当前页(默认1)") * @ApiParams (name="page_num", type="inter", required=false, description="每页显示数据个数(默认10)") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600081718", "data": { "total": 1, // 数据总数 "list": [{ "id": 9, //密卷订单ID "pay_price": "50.00", //实际支付金额 "secret": { //密卷信息 "id": 1, //密卷ID "title": "测试密卷", //密卷标题 "do_num": "" //做过人数 }, "is_have_qi": 0 //是否有企字:0=否,1=是 }] } }) */ public function mySecret(){ $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); // 我加入的企业购买的密卷 $company_secret_list = SecretOrder::alias('a') ->join('mobile_company_user b','b.company_id = a.company_id') ->where('b.user_id',$this->auth->id) ->where('b.status','1') ->field('a.id,a.company_id,a.people_num,a.is_top') ->select(); // 查询我是否可以享受企业密卷(按企业审核时间排队,没在队伍里就无法享受企业密卷) $secret_id_arr = []; foreach ($company_secret_list as $v) { if($v['is_top'] == '1'){ $secret_id_arr[] = $v['id']; continue; } $user_id_arr = CompanyUser::where('company_id',$v['company_id']) ->where('status','1') ->order('updatetime asc') ->limit($v['people_num']) ->column('user_id'); if(in_array($this->auth->id,$user_id_arr)){ $secret_id_arr[] = $v['id']; } } // 查找所有密卷 $data = SecretOrder::with(['secret']) ->where(function($query)use($secret_id_arr){ $query->where('user_id', $this->auth->id)->whereor('id', 'in', $secret_id_arr); }) ->where('pay_status','1') ->order('createtime desc') ->paginate($page_num,false,['page'=>$page]) ->each(function($v)use($secret_id_arr){ // 是否有企字 $v['is_have_qi'] = in_array($v['id'], $secret_id_arr) ? 1 : 0; $v->visible(['id','pay_price','secret'])->append(['is_have_qi']); $v->getRelation('secret')->visible(['id','title']); })->toArray(); $this->success('成功',['total'=>$data['total'],'list'=>$data['data']]); } /** * @ApiWeigh (65) * @ApiTitle (我的积分) * @ApiSummary (我的积分) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600135095", "data": { "id": 16, //用户ID "score": 0, //当前积分 "url": "/u/16", "max_score": 0 //累计积分 } }) */ public function myScore(){ $user = $this->auth->getUser(); $user['max_score'] = db('user_score_log')->where('user_id',$user['id'])->max('after'); $user = $user->visible(['id','score'])->append(['max_score'])->toArray(); $this->success('成功',$user); } /** * @ApiWeigh (63) * @ApiTitle (积分说明) * @ApiSummary (积分说明) * @ApiMethod (POST) * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1599017563", "data": "积分说明" //积分说明内容 }) */ public function scoreIntro() { $content = Db::name('mobile_config')->where('id',1)->value('user_score_intro'); $this->success('成功', $content); } /** * @ApiWeigh (61) * @ApiTitle (积分记录) * @ApiSummary (积分记录) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="page", type="inter", required=false, description="当前页(默认1)") * @ApiParams (name="page_num", type="inter", required=false, description="每页显示数据个数(默认10)") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1599017563", "data": "积分说明" //积分说明内容 }) */ public function scoreLog() { $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); $data = \app\common\model\ScoreLog::where('user_id',$this->auth->id) ->order('createtime desc') ->paginate($page_num,false,['page'=>$page]) ->each(function($v){ $v['createtime'] = date('Y.m.d H:i',$v['createtime']); })->toArray(); $this->success('成功', ['total'=>$data['total'],'list'=>$data['data']]); } /** * @ApiWeigh (59) * @ApiTitle (海报分享) * @ApiSummary (海报分享) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1599017563", "data": { "url": "http://www.enterprise.top/qrcode/20201017/52b77af2efe121e124c1b26d4d0d7f43.png", //海报地址 } }) */ public function share() { $user = \app\mobile\model\User::get($this->auth->id); empty($user['image']) && $this->error('请先上传用户头像'); //将用户的头像保存到本地 $user_dir = 'uploads/user'; if (!file_exists($user_dir)){ mkdir($user_dir,0777,true); } $user_image = $user_dir.'/'.$user['id'].'.png'; file_put_contents($user_image,file_get_contents($user['image'])); createRoundImg($user_image); \think\Image::open($user_image)->thumb(73,73,\think\Image::THUMB_CENTER)->save($user_image); $image = \think\Image::open(ROOT_PATH.'public/assets/img/poster_qr_bg1.png'); $path_ttf = ROOT_PATH.'public/assets/fonts/PingFang.ttf'; // 我的二维码 $qrCode = new QrCode(); $qrCode ->setText($user['id']) ->setSize(210) ->setPadding(10) ->setErrorCorrection('high') ->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0]) ->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]) ->setLabelFontSize(16) ->setImageType(QrCode::IMAGE_TYPE_PNG); $user_code = $user_dir.'/qrcode_'.$user['id'].'.png'; // save it to a file $qrCode->save($user_code); $user_poster = $user_dir.'/poster_'.$user['id'].'.png'; $desc = "我正在“精工筑匠”\n学习“一级建造师资格证考试”\n来和我一起学习吧!"; $image->text('我的海报',$path_ttf,14,'#ffffff',[150,54]) ->water(ROOT_PATH.'public/assets/img/poster_qr_bg2.png',[11,158]) ->water(ROOT_PATH.'public/'.$user_code,[73,242]) ->text('扫描二维码下载APP',$path_ttf,12,'#06121F',[120,486]) ->text($desc,$path_ttf,12,'#ffffff',[45,594]) ->water($user_image,[260,590]) ->save($user_poster); // 删除头像 is_file($user_image) && @unlink($user_image); // 删除二维码 is_file($user_code) && @unlink($user_code); $url = request()->domain().'/'.$user_poster; $this->success('成功',compact('url')); } /** * @ApiWeigh (57) * @ApiTitle (充值积分-套餐) * @ApiSummary (充值积分-套餐) * @ApiMethod (POST) * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1599017563", "data": "积分说明" //积分说明内容 }) */ public function scoreSpec() { $list = ScoreSpec::select(); $score_recharge_price = Db::name('mobile_config')->where('id',1)->value('score_recharge_price'); $this->success('成功', compact('list','score_recharge_price')); } /** * @ApiWeigh (55) * @ApiTitle (积分充值预览) * @ApiSummary (积分充值预览) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="score_spec_id", type="int", required=false, description="套餐ID") * @ApiParams (name="score", type="int", required=false, description="自定义积分") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1599046220", "data": { "id": 1, //试卷ID "title": "测试试卷", //试卷标题 "year": 2015, //年费(单位:年) "time": 100, //答题时间(单位:分) "pass_score": 80, //合格分数 "description": "这个还行", //试卷描述 "do_num": 10, //回答人数 "full_score": 100 //试卷分数(单位:分) } }) */ public function scoreRechargeView() { $param = $this->request->param(); $model = new ScoreOrder; if(!$order = $model->payView($this->auth->getUser(),$param)){ $this->error($model->getError(),null,$this->model->getCode()); } $this->success(__('成功'),$order); } /** * @ApiWeigh (53) * @ApiTitle (充值积分) * @ApiSummary (充值积分) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="score_spec_id", type="int", required=false, description="积分套餐ID") * @ApiParams (name="score", type="int", required=false, description="自定义积分") * @ApiParams (name="pay_type", type="string", required=true, description="支付方式:wechat=微信,alipay=支付宝") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1599017563", "data": "积分说明" //积分说明内容 }) */ public function scoreRecharge() { $param = $this->request->param(); $model = new ScoreOrder; if(!$order = $model->payView($this->auth->getUser(),$param)){ $this->error($model->getError(),null,$this->model->getCode()); } if (!$param['pay_type'] || !in_array($param['pay_type'], ['alipay', 'wechat'])) { $this->error("请选择支付方式"); } // 创建订单 $model->add($this->auth->getUser(), $order, $param['pay_type']); //回调链接 $notifyurl = $this->request->root(true) . '/mobile/notify/notifyScore/paytype/' . $param['pay_type']; $payment = Service::submitOrder($model['pay_price'], $model['order_sn'], $param['pay_type'], '积分', $notifyurl, null, 'app'); $this->success('成功',$payment); } /** * @ApiWeigh (51) * @ApiTitle (我的收藏-题目) * @ApiSummary (我的收藏-题目) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="page", type="inter", required=false, description="当前页(默认1)") * @ApiParams (name="page_num", type="inter", required=false, description="每页显示数据个数(默认10)") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600162242", "data": { "total": 1, // 题目总数 "list": [{ "id": 1, "user_id": 16, //用户ID "question_id": 1, //题目ID "createtime": "2020.09.03 19:25", //收藏时间 "question": { //题目信息 "title": "测定混凝土立方体抗压强度时,标准试件的尺寸是( )㎜。", //题目 "type": "1" //题目类型:1=单选题,2=多选题,3=判断题,4=简答题 } }] } }) */ public function collectQuestionList() { $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); $data = QuestionCollect::with(['question']) ->where('user_id',$this->auth->id) ->order('createtime desc') ->paginate($page_num,false,['page'=>$page]) ->each(function($v){ $v['createtime'] = date('Y.m.d H:i',$v['createtime']); $v->getRelation('question')->visible(['title','type']); })->toArray(); $this->success('成功', ['total'=>$data['total'],'list'=>$data['data']]); } /** * @ApiWeigh (49) * @ApiTitle (我的收藏-课程) * @ApiSummary (我的收藏-课程) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="page", type="inter", required=false, description="当前页(默认1)") * @ApiParams (name="page_num", type="inter", required=false, description="每页显示数据个数(默认10)") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600164731", "data": { "total": 1, //数据总数 "list": [{ "id": 1, "user_id": 16, //用户ID "course_id": 1, //课程ID "createtime": "2020.09.03 19:25", //收藏时间 "course": { //课程信息 "title": "测试课程", //课程标题 "cover": "", //课程封面图 "current_price": "50.00", //现价 "original_price": "100.00" //原价 } }] } }) */ public function collectCourseList() { $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); $data = CourseCollect::with(['course']) ->where('user_id',$this->auth->id) ->order('createtime desc') ->paginate($page_num,false,['page'=>$page]) ->each(function($v){ $v['createtime'] = date('Y.m.d H:i',$v['createtime']); $v->getRelation('course')->visible(['cover','title','current_price','original_price','study_num']); })->toArray(); $this->success('成功', ['total'=>$data['total'],'list'=>$data['data']]); } /** * @ApiWeigh (47) * @ApiTitle (我的收藏-笔记) * @ApiSummary (我的收藏-笔记) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="page", type="inter", required=false, description="当前页(默认1)") * @ApiParams (name="page_num", type="inter", required=false, description="每页显示数据个数(默认10)") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600165190", "data": { "total": 1, //数据总数 "list": [{ "id": 3, //笔记ID "user_id": 16, //用户ID "question_id": 5, //题目ID "content": "这就是街舞", //笔记内容 "createtime": "2020.09.10 19:15", //收藏时间 "updatetime": 1599736531, "question": { //题目信息 "title": "测试多选", //题目标题 "type": "2" //题目类型:1=单选题,2=多选题,3=判断题,4=简答题 } }] } }) */ public function collectNoteList() { $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); $data = QuestionNote::with(['question']) ->where('user_id',$this->auth->id) ->order('createtime desc') ->paginate($page_num,false,['page'=>$page]) ->each(function($v){ $v['createtime'] = date('Y.m.d H:i',$v['createtime']); $v->getRelation('question')->visible(['title','type']); })->toArray(); $this->success('成功', ['total'=>$data['total'],'list'=>$data['data']]); } /** * @ApiWeigh (45) * @ApiTitle (我的收藏-笔记-删除) * @ApiSummary (我的收藏-笔记-删除) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="question_note_id", type="inter", required=false, description="当前页(默认1)") * * @ApiReturn({ "code": 1, "msg": "删除成功", "time": "1600165190", "data": null }) */ public function noteDelete() { $question_note_id = $this->request->param('question_note_id'); empty($question_note_id) && $this->error('缺少必需参数'); $info = QuestionNote::get($question_note_id); empty($info) && $this->error('笔记信息不存在'); $info->delete(); $this->success('删除成功'); } /** * @ApiWeigh (44) * @ApiTitle (消息) * @ApiSummary (消息) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="page", type="inter", required=false, description="当前页(默认1)") * @ApiParams (name="page_num", type="inter", required=false, description="每页显示数据个数(默认10)") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602813893", "data": { "total": 1, //数据总数 "list": [{ "id": 7, //消息ID "title": "这是个消息", //消息标题 "is_read": "1", //是否已读:0=否,1=是 "createtime": "2020.09.12 20:45" //发送时间 }] } }) */ public function messageList() { $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); $data = Message::where('user_id',$this->auth->id) ->order('createtime desc') ->paginate($page_num,false,['page'=>$page]) ->each(function($v){ $v['createtime'] = date('Y.m.d H:i',$v['createtime']); $v->visible(['id','title','is_read','createtime']); })->toArray(); $this->success('成功', ['total'=>$data['total'],'list'=>$data['data']]); } /** * @ApiWeigh (43) * @ApiTitle (消息-一键已读) * @ApiSummary (消息-一键已读) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600167138", "data": { "total": 1, //数据总数 "list": [{ "id": 7, //消息ID "title": "这是个消息", //消息标题 "createtime": "2020.09.12 20:45" //发送时间 }] } }) */ public function allRead() { Message::where('user_id',$this->auth->id)->update(['is_read'=>'1']); $this->success('成功'); } /** * @ApiWeigh (43) * @ApiTitle (消息-详情) * @ApiSummary (消息-详情) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="message_id", type="inter", required=true, description="消息ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600167441", "data": { "id": 7, //消息ID "user_id": 16, //用户ID "title": "这是个消息", //消息标题 "content": "这个消息还不错Q", //消息内容 "is_read": "1", //是否已读:0=否,1=是 "createtime": 1599914736, "updatetime": 1600167441 } }) */ public function messageInfo() { $message_id = $this->request->param('message_id'); empty($message_id) && $this->error('缺少必需参数'); $info = Message::get($message_id); empty($info) && $this->error('消息不存在'); $info->save(['is_read'=>'1']); $this->success('成功', $info); } /** * @ApiWeigh (41) * @ApiTitle (意见反馈-错误类型) * @ApiSummary (意见反馈-错误类型) * @ApiMethod (POST) * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600167441", "data": { "id": 7, //消息ID "user_id": 16, //用户ID "title": "这是个消息", //消息标题 "content": "这个消息还不错Q", //消息内容 "is_read": "1", //是否已读:0=否,1=是 "createtime": 1599914736, "updatetime": 1600167441 } }) */ public function feedbackWrong() { $list = Db::name('mobile_feedback_wrong')->field('id,name')->select(); $this->success('成功', $list); } /** * @ApiWeigh (39) * @ApiTitle (意见反馈) * @ApiSummary (意见反馈) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="feedback_wrong_id", type="inter", required=true, description="错误类型ID") * @ApiParams (name="content", type="string", required=true, description="反馈内容") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600167441", "data": { "id": 7, //消息ID "user_id": 16, //用户ID "title": "这是个消息", //消息标题 "content": "这个消息还不错Q", //消息内容 "is_read": "1", //是否已读:0=否,1=是 "createtime": 1599914736, "updatetime": 1600167441 } }) */ public function feedback() { $feedback_wrong_id = $this->request->param('feedback_wrong_id'); $content = $this->request->param('content'); empty($feedback_wrong_id) && $this->error('请选择错误类型'); empty($content) && $this->error('请填写反馈内容'); Feedback::create([ 'user_id' => $this->auth->id, 'feedback_wrong_id' => $feedback_wrong_id, 'content' => $content ]); $this->success('反馈成功'); } /** * @ApiWeigh (37) * @ApiTitle (我的帖子) * @ApiSummary (我的帖子) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="page", type="inter", required=false, description="当前页(默认1)") * @ApiParams (name="page_num", type="inter", required=false, description="每页显示数据个数(默认10)") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602300901", "data": { "total": 1, //数据总数 "list": [{ "id": 1, //话题ID "title": "公司即将上市", //话题标题 "cover": "http://qizhibang.brotop.cn/uploads/20201009/9bc002db9517fe79f93478550a979768.jpg", //封面图 "content": "他咯土佐玉木桶浴", //话题内容 "good_num": 3, //点赞量 "appraise_num": 3, //评价量 "download_num": 0, //下载量 "createtime": "2020.09.29 09:11", //发布时间 "user": { //发布者信息 "id": 15, //用户ID "nickname": "", //昵称 "image": "" //头像 }, "imgs": [ //发布内容图片 "http://qizhibang.brotop.cn/uploads/20201010/dd2b86d8186f0e89735798d6f9a8f56c.jpg" ] }] } }) */ public function topicList() { $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); $data = Topic::with(['user']) ->withCount(['good'=>'good_num']) ->withCount(['appraise'=>'appraise_num']) ->where('status','1') ->where('user_id',$this->auth->id) ->order('createtime desc') ->paginate($page_num,false,['page'=>$page]) ->each(function($v){ // 发布时间格式化 $v->createtime = date('Y.m.d H:i',$v->createtime); // 过滤标签 $content1 = htmlspecialchars_decode($v->content); $content2 = str_replace([' ',' '],['',''],$content1); $v->content = strip_tags($content2); // 拼装图片 $imgs = str_replace('\\','',strip_tags($content2, '<img>')); //$matches[1] 为图片路径数组 preg_match_all('/\<img\s+src\=\"([\w:\/\.]+)\"/', $imgs, $matches); // 不小于3张就显示3张,小于3张就显示1张图片 $v->imgs = count($matches[1]) >=3 ? array_slice($matches[1],0,3) : (count($matches[1]) >=1 ? array_slice($matches[1],0,1) : []); // 显示数据 $v->visible(['id','title','cover','content','createtime','download_num','user','good_num','appraise_num'])->append(['imgs']); $v->getRelation('user')->visible(['id','image','nickname']); })->toArray(); $this->success('成功', ['total'=>$data['total'],'list'=>$data['data']]); } /** * @ApiWeigh (36) * @ApiTitle (我的帖子-删除) * @ApiSummary (我的帖子-删除) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="topic_id", type="inter", required=false, description="话题ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602300901", "data": null }) */ public function topicDel() { $topic_id = $this->request->param('topic_id'); empty($topic_id) && $this->error('缺少必需参数'); $info = Topic::get(['id'=>$topic_id,'user_id'=>$this->auth->id]); empty($info) && $this->error('话题信息不存在'); Db::startTrans(); try { // 删除点赞 $info->good()->delete(); // 删除评论点赞 TopicAppraiseGood::where('topic_appraise_id','in',array_column($info->appraise,'id'))->delete(); // 删除评论 $info->appraise()->delete(); // 删除附件 $info->attachment()->delete(); // 删除话题信息 $info->delete(); Db::commit(); } catch (PDOException $e) { Db::rollback(); $this->error($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->error($e->getMessage()); } $this->success('删除帖子成功'); } /** * @ApiWeigh (35) * @ApiTitle (我的帖子-@我的) * @ApiSummary (我的帖子-@我的) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="page", type="inter", required=false, description="当前页(默认1)") * @ApiParams (name="page_num", type="inter", required=false, description="每页显示数据个数(默认10)") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602334544", "data": { "total": 3, //数据总数 "list": [{ "id": 4, //评论ID "content": "这就是街舞,say hei", //评论内容 "createtime": "2020.10.10 20:55", //评论时间 "user": { //评论者信息 "id": 15, //用户ID "nickname": "" //真实姓名 }, "topic": { //话题信息 "id": 1, //话题ID "title": "公司即将上市" //话题标题 } }] } }) */ public function topicCueMe() { $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); // 评论我的文章的评论 $id_arr1 = TopicAppraise::alias('ta') ->join('mobile_topic t','t.id = ta.topic_id') ->where('ta.pid',0) ->where('ta.is_replied','0') ->column('ta.id'); // @我的评论 $id_arr2 = TopicAppraise::alias('ta') ->join('mobile_topic_appraise ta1','ta1.id = ta.cue_appraise_id') ->where('ta1.user_id',$this->auth->id) ->where('ta.is_replied','0') ->column('ta.id'); $id_arr = array_unique(array_merge($id_arr1, $id_arr2)); $data = TopicAppraise::with(['user','topic']) ->where('id','in',$id_arr) ->order('createtime desc') ->paginate($page_num,false,['page'=>$page]) ->each(function($v){ // 评论时间 $v->createtime = date('Y.m.d H:i',$v->createtime); $v->visible(['id','content','createtime','user','topic']); $v->getRelation('user')->visible(['id','nickname']); $v->getRelation('topic')->visible(['id','title']); })->toArray(); $this->success('成功', ['total'=>$data['total'],'list'=>$data['data']]); } /** * @ApiWeigh (33) * @ApiTitle (我的帖子-@我的-回复) * @ApiSummary (我的帖子-@我的-回复) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="cue_appraise_id", type="int", required=true, description="被@评论ID") * @ApiParams (name="content", type="int", required=true, description="评论内容") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600084253", "data": null }) */ public function appraiseReply(){ $cue_appraise_id = $this->request->param('cue_appraise_id'); $content = $this->request->param('content'); empty($cue_appraise_id) && $this->error('缺少必需参数'); empty($content) && $this->error('请填写评论内容'); $info = TopicAppraise::get($cue_appraise_id); empty($info) && $this->error('评论不存在'); $pid = $info['pid'] > 0 ? $info['pid'] : $info['id']; Db::startTrans(); try { // 添加回复 TopicAppraise::create([ 'topic_id' => $info['topic_id'], 'pid' => $pid, 'user_id' => $this->auth->id, 'cue_appraise_id' => $cue_appraise_id, 'content' => $content ]); // 状态变为已被回复 $info->is_replied = '1'; $info->save(); Db::commit(); } catch (PDOException $e) { Db::rollback(); $this->error($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->error($e->getMessage()); } $this->success('回复成功'); } /** * @ApiWeigh (31) * @ApiTitle (我的求职-我发布的) * @ApiSummary (我的求职-我发布的) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="page", type="inter", required=false, description="当前页(默认1)") * @ApiParams (name="page_num", type="inter", required=false, description="每页显示数据个数(默认10)") * @ApiParams (name="flag", type="inter", required=true, description="0=全部,1=尚无意向,2=已被下载") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602412497", "data": { "total": 1, //总条数 "per_page": 15, "current_page": 1, "last_page": 1, "data": [{ "id": 2, //职位ID "name": "怎么说", //职位名称 "type": "1", //职位类型 "salary": "9753.20", //工资 "start_time": "2020.10.11", //开始工作时间 "end_time": "2020.10.11", //结束工作时间 "address": "测试地址", //地址 "mobile": "15133120361", //电话 "resume": "", //简历文件路径 "resume_name": "", //简历原始名称 "type_text": "全职", //职位类型说明 "qualification_arr": [] //资质证明 }] } }) */ public function userJob() { $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); $flag = $this->request->param('flag'); $where['user_id'] = $this->auth->id; $where['status'] = '1'; switch ($flag) { case '1': $where['is_download'] = '0'; break; case '2': $where['is_download'] = '1'; break; default: break; } $data = UserJob::where($where) ->field('id,name,type,salary,start_time,end_time,address,mobile,resume,resume_name,qualification') ->order('createtime desc') ->paginate($page_num,false,['page'=>$page]) ->toArray(); $this->success('成功', $data); } /** * @ApiWeigh (30) * @ApiTitle (我的求职-我发布的-详情) * @ApiSummary (我的求职-我发布的-详情) * @ApiMethod (POST) * * @ApiParams (name="user_job_id", type="inter", required=false, description="求职ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602835489", "data": { "id": 2, //求职ID "user_id": 15, "name": "怎么说", //职位 "type": "1", "mobile": "15133120361", "start_time": "2020.10.11", "end_time": "2020.10.11", "salary": "9753.20", "address": "测试地址", "user_job_ability_ids": "3,4", "qualification": "", "resume": "http://qizhibang.brotop.cn456", //简历地址 "resume_name": "", //简历名称 "status": "1", "is_download": "0", "createtime": 1602408183, "updatetime": 1602480359, "weigh": 0, "type_text": "全职", "qualification_arr": [] } }) */ public function userJobInfo() { $user_job_id = $this->request->param('user_job_id'); empty($user_job_id) && $this->error('缺少必需参数'); $info = UserJob::get($user_job_id); empty($info) && $this->error('求职信息不存在'); $this->success('成功', $info); } /** * @ApiWeigh (29) * @ApiTitle (我的求职-我发布的-编辑) * @ApiSummary (我的求职-我发布的-编辑) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="user_job_id", type="string", required=true, description="求职ID") * @ApiParams (name="name", type="string", required=true, description="岗位名称") * @ApiParams (name="type", type="string", required=true, description="岗位类型:1=全职,2=兼职,3=其他") * @ApiParams (name="mobile", type="string", required=true, description="手机号") * @ApiParams (name="start_time", type="string", required=true, description="开始工作日期") * @ApiParams (name="end_time", type="string", required=true, description="结束工作日期") * @ApiParams (name="salary", type="string", required=true, description="薪资待遇") * @ApiParams (name="address", type="string", required=true, description="期望工作地点") * @ApiParams (name="user_job_ability_ids", type="string", required=true, description="资质能力") * @ApiParams (name="qualification", type="string", required=true, description="资质证明(多文件用英文逗号隔开)") * @ApiParams (name="resume", type="string", required=true, description="简历文件路径") * * @ApiReturn({ "code": 1, "msg": "登录成功", "time": "1600498819", "data": null }) */ public function userJobEdit() { $post = $this->request->param(); empty($post['user_job_id']) && $this->error('缺少必需参数'); empty($post['name']) && $this->error('请输入岗位名称'); empty($post['type']) && $this->error('请选择岗位类型'); empty($post['mobile']) && $this->error('请输入手机号'); empty($post['start_time']) && $this->error('请选择开始工作日期'); empty($post['end_time']) && $this->error('请选择结束工作日期'); empty($post['salary']) && $this->error('请输入薪资待遇'); empty($post['address']) && $this->error('请输入期望工作地点'); empty($post['user_job_ability_ids']) && $this->error('请选择资质能力'); empty($post['resume']) && $this->error('请选择简历'); $info = UserJob::get($post['user_job_id']); empty($info) && $this->error('职位信息不存在'); // 编辑后,需要重新审核 $info->allowField(true)->save(array_merge([ 'status' => '0' ],$post)); $this->success('编辑求职成功'); } /** * @ApiWeigh (27) * @ApiTitle (我的求职-我发布的-删除) * @ApiSummary (我的求职-我发布的-删除) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="user_job_id", type="inter", required=false, description="求职ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602234925", "data": null }) */ public function userJobDel() { $user_job_id = $this->request->param('user_job_id'); empty($user_job_id) && $this->error('缺少必需参数'); $info = UserJob::get(['user_id'=>$this->auth->id,'id'=>$user_job_id]); empty($info) && $this->error('求职信息不存在'); Db::startTrans(); try { // 删除简历下载记录 $info->download()->delete(); // 删除求职信息 $info->delete(); Db::commit(); } catch (PDOException $e) { Db::rollback(); $this->error($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->error($e->getMessage()); } $this->success('删除成功'); } /** * @ApiWeigh (25) * @ApiTitle (我的求职-我投递的) * @ApiSummary (我的求职-我投递的) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="page", type="inter", required=false, description="当前页(默认1)") * @ApiParams (name="page_num", type="inter", required=false, description="每页显示数据个数(默认10)") * @ApiParams (name="flag", type="inter", required=true, description="0=全部,1=尚无意向,2=已被下载") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602406820", "data": { "total": 1, //总条数 "per_page": 15, "current_page": 1, "last_page": 1, "data": [{ "id": 1, //职位ID "name": "123", //职位名称 "type": "1", //职位类型 "salary": "9753.20", //工资 "start_time": "2020.10.11", //开始工作时间 "end_time": "2020.10.11", //结束工作时间 "address": "测试地址", //地址 "is_view": "0", //是否已被下载:0=否,1=是 "type_text": "全职" //职位类型说明 }] } }) */ public function companyJob() { $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); $flag = $this->request->param('flag'); $where['cj.status'] = '1'; switch ($flag) { case '1': $where['cjr.is_view'] = '0'; break; case '2': $where['cjr.is_view'] = '1'; break; default: break; } $data = CompanyJob::alias('cj') ->join('mobile_company_job_resume cjr','cjr.company_job_id = cj.id and cjr.user_id = '.$this->auth->id) ->where($where) ->field('cj.id,cj.name,cj.type,cj.salary,cj.start_time,cj.end_time,cj.address,cjr.is_view') ->order('cjr.createtime desc') ->paginate($page_num,false,['page'=>$page]) ->toArray(); $this->success('成功', $data); } /** * @ApiWeigh (10) * @ApiTitle (常见问题) * @ApiSummary (常见问题) * @ApiMethod (POST) * * @ApiParams (name="page", type="inter", required=false, description="当前页(默认1)") * @ApiParams (name="page_num", type="inter", required=false, description="每页显示数据个数(默认10)") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602814874", "data": { "total": 1, //数据总数 "list": [{ "id": 7, //问题ID "title": "常见问题测试", //标题 "createtime": "2020.09.12 20:45" //发布时间 }] } }) */ public function problemList() { $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); $data = Problem::order('createtime desc') ->paginate($page_num,false,['page'=>$page]) ->each(function($v){ $v['createtime'] = date('Y.m.d H:i',$v['createtime']); $v->visible(['id','title','createtime']); })->toArray(); $this->success('成功', ['total'=>$data['total'],'list'=>$data['data']]); } /** * @ApiWeigh (9) * @ApiTitle (常见问题-详情) * @ApiSummary (常见问题-详情) * @ApiMethod (POST) * * @ApiParams (name="problem_id", type="inter", required=true, description="问题ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602815306", "data": { "id": 7, //问题ID "title": "常见问题测试", //问题标题 "content": "<p>常见问题测试内容</p>", //问题内容 "createtime": 1599914736, "updatetime": 1599914736 } }) */ public function problemInfo() { $problem_id = $this->request->param('problem_id'); empty($problem_id) && $this->error('缺少必需参数'); $info = Problem::get($problem_id); empty($info) && $this->error('问题不存在'); $this->success('成功', $info); } }