<?php namespace Controller; use Model\sendJobsSql; use Model\sendJobStatusSql; /** * 邮件发送任务 * @author:dc * @time 2023/4/17 15:56 * Class Job * @package Controller */ class Job extends Base { /** * 任务列表 * @author:dc * @time 2023/4/17 15:57 */ public function index(){ $page = app()->request('page',1,'intval'); $limit = app()->request('limit',20,'intval'); $where = dbWhere([ 'email_id' => $this->getEmails('id') ]); $lists = db()->all(sendJobsSql::all($where,$page,$limit)); foreach ($lists as &$list){ $list['created_at'] = date('Y-m-d H:i:s',$list['send_time']); // 检查状态 if($list['status'] === 1){ $total = db()->first(\Model\sendJobStatusSql::countSum($list['id'])); if($total && $total['t'] == $list['total']){ // 更新状态 db()->update(\Model\sendJobsSql::$table,[ 'status' => 2, 'success' => $total['s'], 'error' => $total['e'], ],dbWhere(['id'=>$list['id']])); $list['status'] = 2; $list['error'] = $total['e']; $list['success'] = $total['s']; } } } return listsPage($lists, db()->count(sendJobsSql::count($where)) ,1,20); } public function stop(){ $id = app()->request('id',0,'intval'); $ret = db()->update(sendJobsSql::$table,[ 'status' => 3 ],dbWhere([ 'id' => $id, 'email_id' => $this->getEmails('id') ])); if($ret){ return ['status'=>200]; } app()->e('send_job_stop_error'); } /** * @throws \Lib\Err * @author:dc * @time 2023/4/17 17:03 */ public function start(){ $id = app()->request('id',0,'intval'); $ret = db()->update(sendJobsSql::$table,[ 'status' => 0 ],dbWhere([ 'id' => $id, 'email_id' => $this->getEmails('id') ])); if($ret){ return ['status'=>200]; } app()->e('send_job_start_error'); } /** * 黑格发件任务详情 * @author:dc * @time 2023/4/17 15:57 */ public function jobDetail() { $page = app()->request('page', 1, 'intval'); $limit = app()->request('limit', 20, 'intval'); $jobId = app()->request('id', 0, 'intval'); $status = app()->request('status'); $isExport = app()->request('is_export', 0); if (!$jobId) { app()->e('send_job_id_null_error'); } $whereArray = [ 'job_id' => $jobId ]; if ($status || $status === '0') { $whereArray['status'] = $status; } $where = dbWhere($whereArray); $lists = db()->all(sendJobStatusSql::detail($where, $page, $limit, $isExport)); return listsPage($lists, db()->count(sendJobStatusSql::detailCount($where)) , $page, $limit); } }