//{{{worker public function worker() { $this->doNow(); $sql = 'SELECT * FROM ' . DelayedJob::TABLE . ' where queue="' . $this->queue . '" and run_at<= now() ' . ' and isnull(finished_at) and isnull(locked_at) and isnull(failed_at) ORDER BY priority limit 1'; $r = DB::query($sql); while (count($r)) { $this->id = $r[0]['id']; $this->queue = $r[0]['queue']; $this->attempts = $r[0]['attempts']; $this->handler = unserialize($r[0]['handler']); $this->doNow(); $r = DB::query($sql); } } //}}} //{{{queueCheck public function queueCheck() { $queue = DB::query('SELECT id FROM ' . DelayedJob::TABLE . ' where queue="' . $this->queue . '" and id<>"' . $this->id . '" and isnull(finished_at) and not isnull(locked_at) and isnull(failed_at) limit 1'); if (empty($queue)) { return true; } else { return false; } } } //end of class JobHandler error_reporting(-1); $j = new JobHandler(); $j->worker();
public function getDescription() { return JobHandler::loadDescription($this->getJobID()); }
public function getJobIDLocal() { return JobHandler::loadModelById($this->getJobID()); }
public static function actionAdd() { $unsetKey = W2HttpRequest::getUnsetRequest('jobid', $p_allowBlank = false); if ($unsetKey !== null) { return Utility::getArrayForResults(RUNTIME_CODE_ERROR_PARAM, '部分数据未提交,请检查。', array('errorContent' => '部分参数未提交数据: ' . $unsetKey)); } $tmpModel = new MissionModel(); switch ($auth = static::getAuthIfUserCanDoIt(Utility::getCurrentUserID(), 'add', $tmpModel)) { case 'admin': //有管理权限 // $tmpModel -> setUserID(W2HttpRequest::getRequestInt('userid'));//报名用户ID // $tmpModel -> setStatus(W2HttpRequest::getRequestInt('status'));//0: 已拒绝 1: 报名成功 2: 新报名 // $tmpModel -> setCreateTime(W2HttpRequest::getRequestDateTime('createtime'));//创建时间 // $tmpModel -> setModifyTime(W2HttpRequest::getRequestDateTime('modifytime'));//修改时间 //有管理权限 // $tmpModel -> setUserID(W2HttpRequest::getRequestInt('userid'));//报名用户ID // $tmpModel -> setStatus(W2HttpRequest::getRequestInt('status'));//0: 已拒绝 1: 报名成功 2: 新报名 // $tmpModel -> setCreateTime(W2HttpRequest::getRequestDateTime('createtime'));//创建时间 // $tmpModel -> setModifyTime(W2HttpRequest::getRequestDateTime('modifytime'));//修改时间 case 'self': //作者 //作者 case 'normal': //正常用户 if ($auth == 'normal') { $tmpModel->setUserID(Utility::getCurrentUserID()); //普通用户创建的数据,默认作者为自己。 } $jobModel = JobHandler::loadModelById(W2HttpRequest::getRequestInt('jobid')); if (!is_object($jobModel)) { return Utility::getArrayForResults(RUNTIME_CODE_ERROR_PARAM, '该任务不存在。'); } else { if ($jobModel->getJobStatus() != JOB_STATUS::WAITJOIN) { switch ($jobModel->getJobStatus()) { case JOB_STATUS::DISABLED: case JOB_STATUS::PENDING: case JOB_STATUS::DRAFT: return Utility::getArrayForResults(RUNTIME_CODE_ERROR_PARAM, '该任务尚未发布,暂不支持报名。'); break; case JOB_STATUS::PROCEED: case JOB_STATUS::COMPLETED: return Utility::getArrayForResults(RUNTIME_CODE_ERROR_PARAM, '该任务招募已结束,不再支持报名。'); break; default: return Utility::getArrayForResults(RUNTIME_CODE_ERROR_PARAM, '该任务不在招募状态,不支持报名。'); break; } } } $missionModel = MissionHandler::loadModelFirstInList(array('jobID' => $jobModel->getId(), 'userID' => Utility::getCurrentUserID())); if (isset($missionModel)) { return Utility::getArrayForResults(RUNTIME_CODE_ERROR_NO_AUTH, '您已报名,不可重复报名。'); } $tmpModel->setJobID($jobModel->getId()); //任务ID $tmpModel->setBossID($jobModel->getUserID()); //雇主用户ID // $tmpModel -> setAdvanceMoney(W2HttpRequest::getRequestFloat('advancemoney'));//预付款金额 // $tmpModel -> setAdvanceType(W2HttpRequest::getRequestInt('advancetype'));//预付款方式 0: 不存在 11:余额 21: 支付宝 31:微信 41:网银 // $tmpModel -> setAdvanceTime(W2HttpRequest::getRequestDateTime('advancetime'));//预付款时间 // $tmpModel -> setPayMoney(W2HttpRequest::getRequestFloat('paymoney'));//已付款金额 // $tmpModel -> setPayTime(W2HttpRequest::getRequestDateTime('paytime'));//确认付款时间 // $tmpModel -> setMissionStatus(W2HttpRequest::getRequestInt('missionstatus'));//0: 不存在 11: 接受报名并已预付款 21: 确认完成并付款 31:已评价 // $tmpModel -> setQualityRate(W2HttpRequest::getRequestInt('qualityrate'));//服务质量评分 // $tmpModel -> setManneryRate(W2HttpRequest::getRequestInt('manneryrate'));//服务态度评分 // $tmpModel -> setSpeedRate(W2HttpRequest::getRequestInt('speedrate'));//服务速度评分 // $tmpModel -> setCommentContent(W2HttpRequest::getRequestString('commentcontent'));//评语留言 $tmpModel->setMissionStatus(MISSION_STATUS::NEWAPPLY); //0: 已删除 1: 报名成功 2: 新报名 3:已拒绝 break; case 'draft': //未激活 return Utility::getArrayForResults(RUNTIME_CODE_ERROR_NO_AUTH, '该账号未激活,不可使用该功能。'); break; case 'pending': //待审禁言 return Utility::getArrayForResults(RUNTIME_CODE_ERROR_NO_AUTH, '该账号被禁言,不可使用该功能。'); break; case 'disabled': //封号 return Utility::getArrayForResults(RUNTIME_CODE_ERROR_NO_AUTH, '该账号不可用,不可使用该功能。'); break; case 'visitor': return Utility::getArrayForResults(RUNTIME_CODE_ERROR_NO_AUTH, '您需要登录后才可以执行该操作'); break; default: return Utility::getArrayForResults(RUNTIME_CODE_ERROR_NO_AUTH, '您没有权限执行该操作'); break; } if (method_exists($tmpModel, 'setStatus') && ($tmpModel->getStatus() === null || !array_key_exists('status', $tmpModel->propertiesModified()))) { $tmpModel->setStatus(STATUS_NORMAL); } return static::save($tmpModel, $isAdd = true); }
public static function actionList() { //周本筛选 if (W2HttpRequest::getRequestString('weekThis') == 1) { if (!empty(W2HttpRequest::getRequestString('weeks', false))) { $where = JobHandler::myCheckWeek(W2HttpRequest::getRequestString('weeks', false)); } else { $where = JobHandler::getCheckedweek(Utility::getCurrentUserID()); } } //附近筛选 $lng = W2HttpRequest::getRequestFloat('lng'); //经度 $lat = W2HttpRequest::getRequestFloat('lat'); //纬度 if (!empty($lng) && !empty($lat)) { $point = W2Map::returnSquarePoint($lng, $lat, 1.5); $where_point = JobHandler::getPointWhere($point); if (!empty($where_point)) { $p_where['lat %s'] = $where_point["lat"]; $p_where['lng %s'] = $where_point["lng"]; } } $p_where = array(); $p_where['id in (%s)'] = W2HttpRequest::getRequestArrayString('ids', false, true); if (!empty($where)) { $p_where['jobStartDate %s'] = $where; } $p_where['id'] = W2HttpRequest::getRequestInt('id'); // $p_where['bossGenre'] = W2HttpRequest::getRequestInt('bossgenre'); //雇主类型 1学生 11个人 21公司 31@bang 企业类型 22私营、23事业单位、24上市公司、25外资 $p_where['jobType'] = W2HttpRequest::getRequestInt('jobtype'); //任务类型 1事件型 2实习生型 // $p_where['tagID'] = W2HttpRequest::getRequestInt('tagid');//标签ID $p_where['userID'] = W2HttpRequest::getRequestInt('userid'); //筛选用户ID $p_where['jobStartDate >= \'%s\''] = W2HttpRequest::getRequestDate('jobstartdatestart'); //工作开始时间 $p_where['jobStartDate < \'%s\''] = W2HttpRequest::getRequestDate('jobstartdateend'); //工作开始时间 $p_where['jobEndDate >= \'%s\''] = W2HttpRequest::getRequestDate('jobenddatestart'); //工作结束时间 $p_where['jobEndDate < \'%s\''] = W2HttpRequest::getRequestDate('jobenddateend'); //工作结束时间 $p_where['jobAreaID'] = W2HttpRequest::getRequestInt('jobareaid'); //工作城市地区ID $p_where['address'] = W2HttpRequest::getRequestString('address', false); //地址 $p_where['jobberCount'] = W2HttpRequest::getRequestInt('jobbercount'); //招收人数 $p_where['money'] = W2HttpRequest::getRequestFloat('money'); //薪酬 $p_where['advanceMoney'] = W2HttpRequest::getRequestFloat('advancemoney'); //预付款金额 $p_where['advanceType'] = W2HttpRequest::getRequestInt('advancetype'); //预付款方式 0: 不存在 11:余额 21: 支付宝 31:微信 41:网银 $p_where['advanceTime >= \'%s\''] = W2HttpRequest::getRequestDateTime('advancetimestart'); //预付款时间 $p_where['advanceTime < \'%s\''] = W2HttpRequest::getRequestDateTime('advancetimeend'); //预付款时间 $p_where['payType'] = W2HttpRequest::getRequestInt('paytype'); //结算方式 0一次性结算 1日结 2周结 3月结 $p_where['payDay'] = W2HttpRequest::getRequestInt('payday'); //结算日期 每周x日 或 每月x日 $p_where['description'] = W2HttpRequest::getRequestString('description', false); //任务介绍 $p_where['feedbackType'] = W2HttpRequest::getRequestInt('feedbacktype'); //汇报单位 1分钟 2小时 3天 $p_where['feedbackRate'] = W2HttpRequest::getRequestInt('feedbackrate'); //汇报频次 $p_where['schoolIDs'] = W2HttpRequest::getRequestString('schoolids', false); //要求学校 $p_where['professionalIDs'] = W2HttpRequest::getRequestString('professionalids', false); //要求专业 $p_where['degreeTypes'] = W2HttpRequest::getRequestString('degreetypes', false); //要求学位 $p_where['status'] = STATUS_NORMAL; //默认列表页只筛选STATUS_NORMAL状态的数据 $p_where['jobStatus'] = W2HttpRequest::getRequestInt('jobstatus'); //0: 不存在 11: 招募中 21: 进行中 31:已结束 $p_where['createTime >= \'%s\''] = W2HttpRequest::getRequestDateTime('createtimestart'); //创建时间 $p_where['createTime < \'%s\''] = W2HttpRequest::getRequestDateTime('createtimeend'); //创建时间 $p_where['modifyTime >= \'%s\''] = W2HttpRequest::getRequestDateTime('modifytimestart'); //修改时间 $p_where['modifyTime < \'%s\''] = W2HttpRequest::getRequestDateTime('modifytimeend'); //修改时间 //根据权限不同,支持的筛选功能也可以不同 switch ($auth = static::getAuthIfUserCanDoIt(Utility::getCurrentUserID(), 'list')) { case 'admin': //有管理权限 $p_where['status'] = W2HttpRequest::getRequestInt('status', null, true, false, STATUS_NORMAL); //管理员可以筛选数据状态 //管理员可以筛选数据状态 case 'self': //作者 //作者 case 'normal': //正常用户 // if ($auth == 'normal') // { // $p_where['userID'] = Utility::getCurrentUserID();//普通用户,默认只能筛选自己名下数据。 // } //正常用户 // if ($auth == 'normal') // { // $p_where['userID'] = Utility::getCurrentUserID();//普通用户,默认只能筛选自己名下数据。 // } case 'draft': //未激活 //未激活 case 'pending': //待审禁言 //待审禁言 case 'disabled': //封号 //封号 case 'visitor': //游客 break; default: return Utility::getArrayForResults(RUNTIME_CODE_ERROR_NO_AUTH, '您没有权限执行该操作'); break; } $_order = W2HttpRequest::getRequestString('order', false, ''); switch (strtolower($_order)) { case 'id': case 'userid': //发布用户ID //发布用户ID case 'bossgenre': //雇主类型 1学生 11个人 21公司 31@bang 企业类型 22私营、23事业单位、24上市公司、25外资 //雇主类型 1学生 11个人 21公司 31@bang 企业类型 22私营、23事业单位、24上市公司、25外资 case 'jobtype': //任务类型 1事件型 2实习生型 //任务类型 1事件型 2实习生型 case 'tagid': //标签ID //标签ID case 'jobstartdate': //工作开始时间 //工作开始时间 case 'jobenddate': //工作结束时间 //工作结束时间 case 'jobareaid': //工作城市地区ID //工作城市地区ID case 'address': //地址 //地址 case 'lng': //经度 //经度 case 'lat': //纬度 //纬度 case 'jobbercount': //招收人数 //招收人数 case 'money': //薪酬 //薪酬 case 'advancemoney': //预付款金额 //预付款金额 case 'advancetype': //预付款方式 0: 不存在 11:余额 21: 支付宝 31:微信 41:网银 //预付款方式 0: 不存在 11:余额 21: 支付宝 31:微信 41:网银 case 'advancetime': //预付款时间 //预付款时间 case 'paytype': //结算方式 0一次性结算 1日结 2周结 3月结 //结算方式 0一次性结算 1日结 2周结 3月结 case 'payday': //结算日期 每周x日 或 每月x日 //结算日期 每周x日 或 每月x日 case 'feedbacktype': //汇报单位 1分钟 2小时 3天 //汇报单位 1分钟 2小时 3天 case 'feedbackrate': //汇报频次 //汇报频次 case 'schoolids': //要求学校 //要求学校 case 'professionalids': //要求专业 //要求专业 case 'degreetypes': //要求学位 //要求学位 case 'status': //0: 不存在 1: 正常 2: 待审 3:草稿 //0: 不存在 1: 正常 2: 待审 3:草稿 case 'jobstatus': //0: 不存在 11: 招募中 21: 进行中 31:已结束 //0: 不存在 11: 招募中 21: 进行中 31:已结束 case 'createtime': //创建时间 //创建时间 case 'modifytime': //修改时间 $p_order = $_order; break; case '': case 'default': $p_order = 'id'; break; default: return Utility::getArrayForResults(RUNTIME_CODE_ERROR_PARAM, '请使用可选的排序方案。'); break; } $p_countThis = -1; return static::aList($p_where, $p_order, $p_pageIndex = null, $p_pageSize = null, $p_countThis, $isDetail = false); }