Esempio n. 1
0
 public function get($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_goods_edit_edit_get');
     global $smarty;
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $goods_id = $validator->required('商品ID不能为空')->digits()->min(1)->validate('goods_id');
     // 商品信息
     $goodsBasicService = new GoodsBasicService();
     $goods = $goodsBasicService->loadGoodsById($goods_id);
     if ($goods->isEmpty()) {
         $this->addFlashMessage('商品ID[' . $goods . ']非法');
         goto out_fail;
     }
     $pageNo = $validator->digits()->min(0)->validate('pageNo');
     $pageSize = $validator->digits()->min(0)->validate('pageSize');
     // 设置缺省值
     $pageNo = isset($pageNo) && $pageNo > 0 ? $pageNo : 0;
     $pageSize = isset($pageSize) && $pageSize > 0 ? $pageSize : 20;
     if (!$this->validate($validator)) {
         goto out_fail;
     }
     //查询条件
     $searchFormQuery = array();
     $searchFormQuery['task_name'] = array('=', GoodsCronTask::$task_name);
     $searchFormQuery['search_param'] = array('=', $goods_id);
     // 建立查询条件
     $searchParamArray = QueryBuilder::buildQueryCondArray($searchFormQuery);
     $cronTaskService = new CronTaskService();
     $totalCount = $cronTaskService->countCronTaskArray($searchParamArray);
     if ($totalCount <= 0) {
         // 没任务,可以直接退出了
         goto out_display;
     }
     $cronTaskArray = $cronTaskService->fetchCronTaskArray($searchParamArray, $pageNo * $pageSize, $pageSize);
     // 给模板赋值
     $smarty->assign('totalCount', $totalCount);
     $smarty->assign('pageNo', $pageNo);
     $smarty->assign('pageSize', $pageSize);
     $smarty->assign('cronTaskArray', $cronTaskArray);
     out_display:
     $smarty->assign('goods', $goods->toArray());
     $smarty->display('goods_edit_cron.tpl');
     return;
     out_fail:
     RouteHelper::reRoute($this, '/Goods/Search');
 }
Esempio n. 2
0
 public function Remove($f3)
 {
     // 权限检查
     $this->requirePrivilege('manage_misc_cron');
     // 参数验证
     $validator = new Validator($f3->get('GET'));
     $task_id = $validator->required('任务ID不能为空')->digits('任务ID非法')->min(1)->filter('ValidatorIntValue')->validate('task_id');
     if (!$this->validate($validator)) {
         goto out;
     }
     $cronTaskService = new CronTaskService();
     if ($cronTaskService->removeCronTaskById($task_id)) {
         $this->addFlashMessage('定时任务删除成功');
     } else {
         $this->addFlashMessage('定时任务删除失败');
     }
     out:
     RouteHelper::reRoute($this, RouteHelper::getRefer(), false);
 }
Esempio n. 3
0
 /**
  * 取得当前时间需要执行的一个 Cron Task,注意这里是 load 方法,所以返回的结果是可以做 CRUD 操作的s
  *
  * @param int $currentTime 当前时间
  *
  * @return \Core\Service\Cron\DataMapper|null
  */
 public static function loadNextUnRunCronTask($currentTime)
 {
     $cronTaskInfo = ShareCache::get(self::getCronTaskCacheKey());
     // 缓存表明目前没有任务,所以我们也就没必要再去查询数据库了
     if (self::$cronTaskNoTaskMagic === $cronTaskInfo) {
         return null;
     }
     // 当前任务还没到执行的时候
     if (is_array($cronTaskInfo) && $cronTaskInfo['task_time'] > $currentTime) {
         return null;
     }
     // 从数据库中取得任务
     $cronTaskService = new CronTaskService();
     $cronTask = $cronTaskService->loadNextUnRunCronTask($currentTime);
     // 数据库里面也没有任务,设置缓存为“无任务”就不用老去查找数据库了
     if ($cronTask->isEmpty()) {
         ShareCache::set(self::getCronTaskCacheKey(), self::$cronTaskNoTaskMagic, 3600);
         return null;
     }
     // 这个任务还没到执行的时间,放到缓存里面
     if ($cronTask->task_time > $currentTime) {
         ShareCache::set(self::getCronTaskCacheKey(), $cronTask->toArray(), 3600);
         return null;
     }
     // 清除缓存
     ShareCache::clear(self::getCronTaskCacheKey());
     // 返回需要执行的任务
     return $cronTask;
 }