Job.php
2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php
namespace Controller;
use Lib\Mail\Mail;
use Model\emailSql;
use Model\sendJobsSql;
/**
 * 邮件发送任务
 * @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()->count(\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');
    }
}