Example #1
0
    //{{{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();
Example #2
0
 public function getDescription()
 {
     return JobHandler::loadDescription($this->getJobID());
 }
Example #3
0
 public function getJobIDLocal()
 {
     return JobHandler::loadModelById($this->getJobID());
 }
Example #4
0
 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);
 }
Example #5
0
 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);
 }