<?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\mobile\model\CompanyUser; use app\mobile\model\CompanyUserLog; use app\mobile\model\CourseOrder; use app\mobile\model\CourseAppraise; use app\mobile\model\SecretOrder; use app\mobile\model\Package; use app\mobile\model\PackageOrder; use app\mobile\model\PackageSpec; use app\mobile\model\PackageCart; use app\mobile\model\CompanyJob; use app\mobile\model\UserJob; use app\mobile\model\CompanyJobResume; use app\mobile\model\UserJobDownload; use app\mobile\model\Message; use addons\epay\library\Service; use Endroid\QrCode\QrCode; /** * 我的(企业)接口 * @ApiWeigh (65) */ class Company extends Api { protected $noNeedLogin = ['']; protected $noNeedRight = ['*']; protected $company_id = 0; public function _initialize() { parent::_initialize(); $this->model = model('app\mobile\model\Company'); if(!$this->company_id){ $user = $this->auth->getUser(); if($user['group_id'] == 0){ $this->error('您还不是企业管理员'); } $this->company_id = $this->model->where('user_id',$user['id'])->value('id'); } } /** * @ApiWeigh (99) * @ApiTitle (我的密卷) * @ApiSummary (我的密卷) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600499807", "data": [ { "id": 10, //密卷订单ID "pay_price": "500.00", //实际支付金额 "people_num": 20, //密卷规格人数(斜杠后数字) "is_top": "1", //是否顶配:0=否,1=是 "secret": { "id": 1, //密卷ID "title": "测试密卷", "do_num": 20 }, "user_count": 3 //当前企业下员工含管理员数量(斜杠前数字) } ] }) */ public function mySecret(){ // 查找所有密卷 $list = SecretOrder::with(['secret']) ->where('company_id',$this->company_id) ->where('user_id',$this->auth->id) ->where('pay_status','1') ->select(); $user_count = CompanyUser::where('company_id',$this->company_id) ->where('status','1') ->count(); foreach ($list as $v) { // 当前企业下员工含管理员人数 $v['user_count'] = $user_count + 1; $v->visible(['id','pay_price','people_num','is_top','secret'])->append(['user_count']); $v->getRelation('secret')->visible(['id','title']); } $this->success('成功',$list); } /** * @ApiWeigh (97) * @ApiTitle (我的课程) * @ApiSummary (我的课程) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600081718", "data": [{ "id": 9, //课程订单ID "pay_price": "50.00", //实际支付金额 "people_num": 20, //限制人数(斜杠后数字) "is_top": "0", //是否顶配:0=否,1=是 "course": { //课程信息 "id": 1, //课程ID "title": "测试课程", //课程标题 "cover": "" //课程封面图 }, "user_count": 0 //当前企业下员工含管理员数量(斜杠前数字) "is_have_appraise": 0 //是否已评价:0=否,1=是 }] }) */ public function myCourse(){ // 查找所有密卷 $list = CourseOrder::with(['course']) ->where('company_id',$this->company_id) ->where('user_id',$this->auth->id) ->where('pay_status','1') ->select(); $user_count = CompanyUser::where('company_id',$this->company_id) ->where('status','1') ->count(); foreach ($list as $v) { // 当前企业下员工含管理员人数 $v['user_count'] = $user_count + 1; // 是否已评价 $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','people_num','is_top','course'])->append(['user_count','is_have_appraise']); $v->getRelation('course')->visible(['id','cover','title']); } $this->success('成功',$list); } /** * @ApiWeigh (95) * @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="status", type="string", required=false, description="0=未审核,1=已通过") * @ApiParams (name="keyword", type="string", required=false, description="关键字") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600511589", "data": { "total": 2, //数据总数 "list": [ { "id": 1, //申请ID "name": "何先生", //申请人名称 "mobile": "15133120361", //申请人电话 "createtime": "2020.09.12" //申请时间 } ] } }) */ public function companyUser() { $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); $status = $this->request->param('status','0'); $keyword = $this->request->param('keyword'); $where['status'] = $status; if(!empty($keyword)){ $where['name'] = ['like','%'.$keyword.'%']; } $data = CompanyUser::where('company_id',$this->company_id) ->where($where) ->paginate($page_num,false,['page'=>$page]) ->each(function($v){ $v['createtime'] = date('Y.m.d',$v['createtime']); $v->visible(['id','name','mobile','createtime']); })->toArray(); $this->success('成功',['total'=>$data['total'],'list'=>$data['data']]); } /** * @ApiWeigh (93) * @ApiTitle (企业成员管理-同意加入) * @ApiSummary (企业成员管理-同意加入) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="company_user_id", type="string", required=false, description="申请ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600167441", "data": null }) */ public function companyUserAgree() { $company_user_id = $this->request->param('company_user_id'); empty($company_user_id) && $this->error('缺少必需参数'); $info = CompanyUser::get($company_user_id); empty($info) && $this->error('申请信息不存在'); Db::startTrans(); try { $info->save(['status'=>'1']); // 发送消息 $company_name = $this->model->where('id',$info['company_id'])->value('name'); Message::create([ 'user_id' => $info['user_id'], 'title' => '加入企业-成功', 'content' => '您的加入'.$company_name.'企业的申请已通过,该企业的学习自老您都可以免费共享了哦,快去试试吧。' ]); // 新增员工记录 CompanyUserLog::create([ 'company_id' => $info['company_id'], 'user_id' => $info['user_id'], 'name' => $info['name'], 'mobile' => $info['mobile'], 'type' => '1' ]); Db::commit(); } catch (PDOException $e) { Db::rollback(); $this->error($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->error($e->getMessage()); } $this->success('同意加入成功'); } /** * @ApiWeigh (91) * @ApiTitle (企业成员管理-拒绝加入) * @ApiSummary (企业成员管理-拒绝加入) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="company_user_id", type="string", required=false, description="申请ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600167441", "data": null }) */ public function companyUserRefuse() { $company_user_id = $this->request->param('company_user_id'); empty($company_user_id) && $this->error('缺少必需参数'); $info = CompanyUser::get($company_user_id); empty($info) && $this->error('申请信息不存在'); Db::startTrans(); try { $info->save(['status'=>'2']); // 发送消息 $company_name = $this->model->where('id',$info['company_id'])->value('name'); Message::create([ 'user_id' => $info['user_id'], 'title' => '加入企业-失败', 'content' => '您的加入'.$company_name.'企业的申请失败了,联系企业管理员后重新申请下吧。' ]); Db::commit(); } catch (PDOException $e) { Db::rollback(); $this->error($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->error($e->getMessage()); } $this->success('拒绝成功'); } /** * @ApiWeigh (89) * @ApiTitle (企业成员管理-移出团队) * @ApiSummary (企业成员管理-移出团队) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="company_user_id", type="string", required=false, description="申请ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600167441", "data": null }) */ public function companyUserRemove() { $company_user_id = $this->request->param('company_user_id'); empty($company_user_id) && $this->error('缺少必需参数'); $info = CompanyUser::get($company_user_id); empty($info) && $this->error('申请信息不存在'); // 删除员工记录 CompanyUserLog::create([ 'company_id' => $info['company_id'], 'user_id' => $info['user_id'], 'name' => $info['name'], 'mobile' => $info['mobile'], 'type' => '2' ]); $info->delete(); $this->success('移出成功'); } /** * @ApiWeigh (87) * @ApiTitle (企业成员管理-企业邀请码) * @ApiSummary (企业成员管理-企业邀请码) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600167441", "data": { "invite_code": 376581, //企业邀请码 } }) */ public function inviteCode() { $invite_code = $this->model->where('id',$this->company_id)->value('invite_code'); $this->success('成功',compact('invite_code')); } /** * @ApiWeigh (85) * @ApiTitle (企业成员管理-更新企业邀请码) * @ApiSummary (企业成员管理-更新企业邀请码) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600167441", "data": { "invite_code": 376581, //企业邀请码 } }) */ public function setInviteCode() { $invite_code = (new User)->setInviteCode($this->company_id); $this->success('更新邀请码成功',compact('invite_code')); } /** * @ApiWeigh (85) * @ApiTitle (企业成员管理-二维码邀请) * @ApiSummary (企业成员管理-二维码邀请) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600167441", "data": { "invite_qrcode": "http://www.enterprise.top/qrcode/20201017/52b77af2efe121e124c1b26d4d0d7f43.png", //二维码地址 } }) */ public function inviteQrcode() { $company = $this->model->get($this->company_id); if(empty($company['invite_qrcode'])){ $qrCode = new QrCode(); $qrCode ->setText($this->company_id) ->setSize(300) ->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); $dir = 'uploads/company'; if (!file_exists($dir)){ mkdir($dir,0777,true); } $url = $dir.'/qrcode_'.$this->company_id.'.png'; // save it to a file $qrCode->save($url); $company->save([ 'invite_qrcode' => '/'.$url ]); } $this->success('成功',[ 'invite_qrcode' => $company->invite_qrcode ]); } /** * @ApiWeigh (83) * @ApiTitle (企业套餐) * @ApiSummary (企业套餐) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="keyword", type="inter", required=false, description="搜索关键字") * @ApiParams (name="is_buy", type="inter", required=false, description="0=未购买,1=已购买") * @ApiParams (name="order", type="inter", required=false, description="排序方式:0=最新,1=购买最多,2=价格最低,3=优惠最大") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600773758", "data": [ { "id": 8, //套餐ID "title": "1", //套餐名称 "current_price": "123.00", //现价 "is_buy": 1, //是否已购买:0=否,1=是 "is_add_cart": 0, //是否已加入购物:0=否,1=是 "original_price": "60.00", //原价 "buy_num": 60, //购买数量 "preferential_price": "-63.00", //优惠金额 "people_num": 10, //套餐限制人数 "secret_list": [ { "id": 1, //密卷ID "title": "测试密卷", //密卷标题 "current_price": "10.00", "original_price": "10000.00", "do_num_virtual": 10, "do_num_real": 10, "description": "测试密卷", "createtime": null, "updatetime": null, "do_num": 20 } ], "course_list": [ { "id": 1, //课程ID "title": "测试课程", //课程标题 "cover": "", "current_price": "50.00", "original_price": "100.00", "content": null, "is_top": "0", "top_time": null, "study_num_virtual": 1, "study_num_real": 2, "createtime": null, "updatetime": null } ] } ] }) */ public function package() { $user_id = $this->auth->id; $keyword = $this->request->param('keyword'); $is_buy = $this->request->param('is_buy',0); $order = $this->request->param('order',0); if(empty($is_buy)){ $is_buy = '0'; } $where = []; if(!empty($keyword)){ $where['p.title'] = ['like','%'.$keyword.'%']; } switch ($order) { case 0: $order = ['p.createtime' => 'desc']; break; case 1: $order = ['buy_num' => 'desc']; break; case 2: $order = ['p.current_price' => 'asc']; break; case 3: $order = ['preferential_price' => 'asc']; break; } $package_order = Db::name('mobile_package_order_info') ->alias('poi') ->join('mobile_package_order po','po.id = poi.package_order_id') ->where('poi.company_id',$this->company_id) ->where('poi.user_id',$user_id) ->where('po.pay_status','1') ->field('poi.id,poi.package_id,poi.people_num') ->order(['poi.is_top'=>'desc','poi.people_num'=>'desc']) ->limit(1) ->buildSql(); $list = Package::alias('p') ->join([$package_order=>'poi'],'p.id = poi.package_id','left') ->join('mobile_package_cart pc','pc.package_id = p.id and pc.user_id='.$user_id,'left') ->where($where) ->field(" p.*, if(poi.id > 0,1,0) is_buy, if(pc.id > 0,1,0) is_add_cart, IFNULL((select SUM(current_price) from fa_mobile_secret where id in (p.secret_ids)),0) + IFNULL((select SUM(current_price) from fa_mobile_course where id in (p.course_ids)),0) original_price, p.buy_num_virtual + p.buy_num_real buy_num, IFNULL((select SUM(current_price) from fa_mobile_secret where id in (p.secret_ids)),0) + IFNULL((select SUM(current_price) from fa_mobile_course where id in (p.course_ids)),0) - p.current_price preferential_price, poi.people_num ") ->order($order) ->having("is_buy = {$is_buy}") ->select(); foreach ($list as $v) { $v->visible([ 'id', 'title', 'current_price', ])->append([ 'is_buy', 'is_add_cart', 'original_price', 'buy_num', 'preferential_price', 'people_num', 'secret_list', 'course_list', ]); } $this->success('成功',$list); } /** * @ApiWeigh (82) * @ApiTitle (企业套餐-购物车数量) * @ApiSummary (企业套餐-购物车数量) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1603273475", "data": { "cart_num": 1, //数量 "pay_price_total": 500, //现价总数 "original_price_total": 500 //原价总数 } }) */ public function packageCartNum() { $list = PackageCart::where('company_id',$this->company_id)->field('id,pay_price,original_price')->select(); $cart_num = count($list); $pay_price_total = array_sum(array_column($list, 'pay_price')); $original_price_total = array_sum(array_column($list, 'original_price')); $this->success('成功',compact('cart_num','pay_price_total','original_price_total')); } /** * @ApiWeigh (81) * @ApiTitle (选择套餐规格) * @ApiSummary (选择套餐规格) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="package_id", type="inter", required=true, description="套餐ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1600774924", "data": [{ "id": 1, //套餐规格ID "package_id": 8, //套餐ID "name": "基础版", //规格ID "current_price": 500, //现价 "original_price": "1000.00", //原价 "people_num": 20, //限制人数 "is_top": "0", //是否顶配:0=否,1=是 "createtime": null, "updatetime": null, "is_pay": 1 //是否可以购买:0=否,1=是 }] }) */ public function packageSpec() { $user_id = $this->auth->id; $package_id = $this->request->param('package_id'); empty($package_id) && $this->error('缺少必需参数'); $info = Package::get($package_id); empty($info) && $this->error('套餐信息不存在'); $list = PackageSpec::where('package_id',$package_id)->select(); foreach ($list as &$v) { // 是否可购买 $order = Db::name('mobile_package_order_info') ->alias('poi') ->join('mobile_package_order po','po.id = poi.package_order_id') ->where('poi.company_id',$this->company_id) ->where('poi.user_id',$user_id) ->where('poi.package_id',$package_id) ->where('po.pay_status','1') ->field('poi.id,poi.current_price,poi.people_num,poi.is_top') ->order(['poi.is_top'=>'desc','poi.people_num'=>'desc']) ->find(); $people_num = CompanyUser::where('company_id',$this->company_id) ->where('status','1') ->count(); if(!empty($order)){ // 已购买顶配套餐,直接跳出本次循环 if($order['is_top'] == '1'){ $v['is_pay'] = 0; continue; } if($order['people_num'] > $people_num){ $people_num = $order['people_num']; } $v['current_price'] = $v['current_price']-$order['current_price']; } if($v['is_top'] == '1'){ $v['is_pay'] = 1; }else{ $v['is_pay'] = $v['people_num'] <= $people_num ? 0 : 1; } } $this->success('成功',$list); } /** * @ApiTitle (套餐说明) * @ApiSummary (套餐说明) * @ApiMethod (POST) * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1599017563", "data": "套餐说明" //套餐说明内容 }) */ public function spec_intro() { $content = Db::name('mobile_config')->where('id',1)->value('package_spec_intro'); $this->success('成功', $content); } /** * @ApiWeigh (79) * @ApiTitle (加入购物车) * @ApiSummary (加入购物车) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="package_id", type="inter", required=true, description="套餐ID") * @ApiParams (name="package_spec_id", type="inter", required=true, description="套餐规格ID") * * @ApiReturn({ "code": 1, "msg": "加入购物车成功", "time": "1600774924", "data": null }) */ public function packageAddCart() { $user_id = $this->auth->id; $package_id = $this->request->param('package_id'); $package_spec_id = $this->request->param('package_spec_id'); empty($package_id) && $this->error('缺少必需参数'); empty($package_spec_id) && $this->error('请选择套餐规格'); $info = PackageSpec::get(['package_id'=>$package_id,'id'=>$package_spec_id]); empty($info) && $this->error('套餐规格信息不存在'); // 是否可购买 $order = Db::name('mobile_package_order_info') ->alias('poi') ->join('mobile_package_order po','po.id = poi.package_order_id') ->where('poi.company_id',$this->company_id) ->where('poi.user_id',$user_id) ->where('poi.package_id',$package_id) ->where('po.pay_status','1') ->field('poi.id,poi.current_price,poi.people_num,poi.is_top') ->order(['poi.is_top'=>'desc','poi.people_num'=>'desc']) ->find(); if(!empty($order)){ // 已购买顶配套餐,直接跳出本次循环 if($order['is_top'] == '1'){ $this->error('您已购买顶级套餐规格,无需再购买其他套餐规格'); } $pay_price = $info['current_price']-$order['current_price']; }else{ $pay_price = $info['current_price']; } PackageCart::create([ 'company_id' => $this->company_id, 'user_id' => $user_id, 'package_id' => $package_id, 'package_spec_id' => $package_spec_id, 'pay_price' => $pay_price, 'current_price' => $info['current_price'], 'original_price' => $info['original_price'], 'people_num' => $info['people_num'], 'is_top' => $info['is_top'] ]); $this->success('加入购物车成功'); } /** * @ApiWeigh (79) * @ApiTitle (套餐购物车) * @ApiSummary (套餐购物车) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1603275248", "data": { "list": [{ //购物车信息 "id": 1, //购物车ID "pay_price": "500.00", //现价 "original_price": "500.00", //原价 "package": { //套餐信息 "id": 8, //套餐ID "title": "1" //套餐标题 } }], "pay_price_total": 500 //应付金额 } }) */ public function packageCartList() { $list = PackageCart::with(['package']) ->where('company_id',$this->company_id) ->select(); foreach ($list as $v) { $v->visible(['id','pay_price','original_price','package']); $v->getRelation('package')->visible(['id','title']); } $pay_price_total = array_sum(array_column($list, 'pay_price')); $this->success('成功',compact('list','pay_price_total')); } /** * @ApiWeigh (79) * @ApiTitle (套餐下单) * @ApiSummary (套餐下单) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="pay_type", type="string", required=true, description="支付方式:wechat=微信,alipay=支付宝") * * @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 pay() { $param = $this->request->param(); if (!$param['pay_type'] || !in_array($param['pay_type'], ['alipay', 'wechat'])) { $this->error("请选择支付方式"); } // 创建订单 $model = new PackageOrder; $model->add($this->auth->getUser(), $param['pay_type']); //回调链接 $notifyurl = $this->request->root(true) . '/mobile/notify/notifyPackage/paytype/' . $param['pay_type']; $model['pay_price'] = 0.01; //测试金额 $payment = Service::submitOrder($model['pay_price'], $model['order_sn'], $param['pay_type'], '企业套餐', $notifyurl, null, 'app'); $this->success('成功',$payment); } /** * @ApiWeigh (79) * @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="type", type="inter", required=false, description="岗位类型:1=全职,2=兼职,3=其他") * * @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_has_red": "0", //是否有小红点:0=否,1=是 "type_text": "全职" //职位类型说明 }] } }) */ public function companyJob() { $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); $type = $this->request->param('type'); $where['cj.status'] = '1'; // 求职类型 if(!empty($type)){ $where['cj.type'] = $type; } $data = CompanyJob::alias('cj') ->join('mobile_company_job_resume cjr',"cjr.company_job_id = cj.id and cjr.is_view = '0'",'left') ->where($where) ->field(' cj.id, cj.name, cj.type, cj.salary, cj.start_time, cj.end_time, cj.address, if(cjr.id > 0,1,0) is_has_red ') ->order(['is_has_red' => 'desc','cj.createtime' => 'desc']) ->paginate($page_num,false,['page'=>$page]) ->toArray(); $this->success('成功', $data); } /** * @ApiWeigh (77) * @ApiTitle (我的招聘-我发布的-删除) * @ApiSummary (我的招聘-我发布的-删除) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="company_job_id", type="inter", required=false, description="招聘ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602234925", "data": null }) */ public function companyJobDel() { $company_job_id = $this->request->param('company_job_id'); empty($company_job_id) && $this->error('缺少必需参数'); $info = CompanyJob::get(['user_id'=>$this->auth->id,'id'=>$company_job_id]); empty($info) && $this->error('招聘信息不存在'); Db::startTrans(); try { // 删除投递的简历 $info->resume()->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 (75) * @ApiTitle (我的招聘-我发布的-查看简历-详情) * @ApiSummary (我的招聘-我发布的-查看简历-详情) * @ApiMethod (POST) * * @ApiParams (name="company_job_id", type="inter", required=false, description="招聘职位ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602416171", "data": { "id": 2, //招聘ID "user_id": 15, "company_id": 7, "name": "101640", "type": "3", //职位类型 "start_time": "2020.10.11", //开始工作时间 "end_time": "2020.10.11", //结束工作时间 "salary": "9753.20", //工资 "lng": "123", "lat": "456", "address": "测试地址", //地址 "house_number": "测试门牌号", //门牌号 "mobile": "15133120361", //电话 "description": "sdfkl", "other_desc": "dsf", "status": "1", "createtime": 1602415172, "updatetime": 1602415172, "weigh": 0, "type_text": "其他" //职位类型描述 } }) */ public function companyJobInfo() { $company_job_id = $this->request->param('company_job_id'); empty($company_job_id) && $this->error('缺少必需参数'); $info = CompanyJob::get($company_job_id); empty($info) && $this->error('招聘信息不存在'); $this->success('成功', $info); } /** * @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)") * @ApiParams (name="company_job_id", type="inter", required=false, description="招聘职位ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602417085", "data": { "total": 1, //数据总数 "per_page": 15, "current_page": 1, "last_page": 1, "data": [{ "id": 4, //投递ID "is_view": "0", //是否已被查看:0=否,1=是 "createtime": "2020.10.11 20:31", //投递时间 "user": { //投递者信息 "id": 15, //用户ID "nickname": "", //真实姓名 "image": "" //头像 } }] } }) */ public function companyJobResume() { $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); $company_job_id = $this->request->param('company_job_id'); empty($company_job_id) && $this->error('缺少必需参数'); $data = CompanyJobResume::with(['user']) ->where('status','0') ->where('company_job_id',$company_job_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','is_view','createtime','user']); $v->getRelation('user')->visible(['id','image','nickname']); })->toArray(); $this->success('成功', $data); } /** * @ApiWeigh (71) * @ApiTitle (我的招聘-我发布的-查看简历-查看) * @ApiSummary (我的招聘-我发布的-查看简历-查看) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="company_job_resume_id", type="inter", required=false, description="投递简历ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602417085", "data": { "total": 1, //数据总数 "per_page": 15, "current_page": 1, "last_page": 1, "data": 简历链接 } }) */ public function resumeView() { $company_job_resume_id = $this->request->param('company_job_resume_id'); empty($company_job_resume_id) && $this->error('缺少必需参数'); $info = CompanyJobResume::get($company_job_resume_id); empty($info) && $this->error('投递信息不存在'); $info->is_view = '1'; $info->save(); $this->success('成功', $info['resume']); } /** * @ApiWeigh (71) * @ApiTitle (我的招聘-我发布的-查看简历-不合适) * @ApiSummary (我的招聘-我发布的-查看简历-不合适) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="company_job_resume_id", type="inter", required=false, description="投递简历ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602417085", "data": { "total": 1, //数据总数 "per_page": 15, "current_page": 1, "last_page": 1, "data": null } }) */ public function resumeReject() { $company_job_resume_id = $this->request->param('company_job_resume_id'); empty($company_job_resume_id) && $this->error('缺少必需参数'); $info = CompanyJobResume::get($company_job_resume_id); empty($info) && $this->error('投递信息不存在'); $info->status = '1'; $info->save(); $this->success('操作成功'); } /** * @ApiWeigh (69) * @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="type", type="inter", required=false, description="岗位类型:1=全职,2=兼职,3=其他") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602420197", "data": { "total": 1, "per_page": 15, "current_page": 1, "last_page": 1, "data": [{ "id": 1, //下载ID "createtime": "2020.10.11 20:31", //下载时间 "user_job": { //求职信息 "id": 2, //求职ID "name": "怎么说", //职位名称 "start_time": "2020.10.11", //开始工作时间 "end_time": "2020.10.11", //结束工作时间 "salary": "9753.20", //工资 "address": "测试地址", //地址 "user": { //求职者信息 "id": 15, //用户ID "nickname": "", //真实姓名 "image": "" //头像 }, "type_text": "全职", //职位类型说明 "qualification_arr": [] //资质证明 } }] } }) */ public function userJob() { $page = $this->request->param('page', 1, 'intval'); $page_num = $this->request->param('page_num', 10, 'intval'); $type = $this->request->param('type'); $where = [ 'ujd.status' => '0', 'ujd.company_id' => $this->company_id, ]; // 求职类型 if(!empty($type)){ $where['uj.type'] = $type; } $data = UserJobDownload::alias('ujd') ->join('mobile_user_job uj','uj.id = ujd.user_job_id') ->with(['user_job'=>['user']]) ->where($where) ->order('ujd.createtime desc') ->paginate($page_num,false,['page'=>$page]) ->each(function($v){ $v->createtime = date('Y.m.d H:i',$v->createtime); $v->visible(['id','createtime','user_job']); $v->getRelation('user_job')->visible(['id','name','salary','start_time','end_time','address','user']); $v->getRelation('user_job')->getRelation('user')->visible(['id','image','nickname']); })->toArray(); $this->success('成功', $data); } /** * @ApiWeigh (67) * @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": "1602417085", "data": { "total": 1, //数据总数 "per_page": 15, "current_page": 1, "last_page": 1, "data": 简历链接 } }) */ public function userJobResumeView() { $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['resume']); } /** * @ApiWeigh (65) * @ApiTitle (我的招聘-我下载的-不合适) * @ApiSummary (我的招聘-我下载的-不合适) * @ApiMethod (POST) * * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="user_job_download_id", type="inter", required=false, description="下载ID") * * @ApiReturn({ "code": 1, "msg": "成功", "time": "1602417085", "data": { "total": 1, //数据总数 "per_page": 15, "current_page": 1, "last_page": 1, "data": null } }) */ public function userJobResumeViewReject() { $user_job_download_id = $this->request->param('user_job_download_id'); empty($user_job_download_id) && $this->error('缺少必需参数'); $info = UserJobDownload::get($user_job_download_id); empty($info) && $this->error('下载记录不存在'); $info->status = '1'; $info->save(); $this->success('操作成功'); } }