作者 邓超

1

@@ -20,7 +20,7 @@ function start(){ @@ -20,7 +20,7 @@ function start(){
20 $table->create(); 20 $table->create();
21 21
22 // 初始时,进行一次统计 22 // 初始时,进行一次统计
23 - $table->set('etotal',['val'=> db()->count(\Model\email::count())]); 23 + $table->set('etotal',['val'=> db()->count(\Model\emailSql::count())]);
24 24
25 // 进程管理器 25 // 进程管理器
26 $pm = new Process\Manager(); 26 $pm = new Process\Manager();
@@ -30,7 +30,7 @@ function start(){ @@ -30,7 +30,7 @@ function start(){
30 _echo("进程({$workerId})启动成功"); 30 _echo("进程({$workerId})启动成功");
31 // 每10分钟统计一次邮箱数量 31 // 每10分钟统计一次邮箱数量
32 \Swoole\Timer::tick(600000,function () use (&$table){ 32 \Swoole\Timer::tick(600000,function () use (&$table){
33 - $table->set('etotal',['val'=> db()->count(\Model\email::count())]); 33 + $table->set('etotal',['val'=> db()->count(\Model\emailSql::count())]);
34 }); 34 });
35 35
36 // 每2秒执行一次 36 // 每2秒执行一次
@@ -3,7 +3,8 @@ @@ -3,7 +3,8 @@
3 namespace Controller; 3 namespace Controller;
4 4
5 use Lib\Mail\Mail; 5 use Lib\Mail\Mail;
6 -use Model\email; 6 +use Model\emailSql;
  7 +use Model\listsSql;
7 8
8 /** 9 /**
9 * @author:dc 10 * @author:dc
@@ -44,7 +45,7 @@ class Home { @@ -44,7 +45,7 @@ class Home {
44 Mail::login($formData['email'],$formData['password'],$formData['imap']); 45 Mail::login($formData['email'],$formData['password'],$formData['imap']);
45 46
46 // 是否存在 47 // 是否存在
47 - $id = db()->value(email::hasEmail($formData['email'])); 48 + $id = db()->value(emailSql::hasEmail($formData['email']));
48 49
49 $data = [ 50 $data = [
50 'password' => base64_encode($formData['password']), 51 'password' => base64_encode($formData['password']),
@@ -58,10 +59,10 @@ class Home { @@ -58,10 +59,10 @@ class Home {
58 59
59 if($id){ 60 if($id){
60 // 修改 61 // 修改
61 - $ret = db()->update(email::$table,$data,dbWhere(['id'=>$id])); 62 + $ret = db()->update(emailSql::$table,$data,dbWhere(['id'=>$id]));
62 }else{ 63 }else{
63 // 新增 64 // 新增
64 - $ret = db()->insert(email::$table,$data); 65 + $ret = db()->insert(emailSql::$table,$data);
65 } 66 }
66 67
67 68
@@ -76,4 +77,50 @@ class Home { @@ -76,4 +77,50 @@ class Home {
76 77
77 } 78 }
78 79
  80 +
  81 + /**
  82 + * 邮件列表
  83 + * @author:dc
  84 + * @time 2023/2/17 14:12
  85 + */
  86 + public function lists(){
  87 + $email = db()->first(emailSql::firstByToken(token()));
  88 + if(!$email){
  89 + app()->e('token_verify_notfound');
  90 + }
  91 +
  92 + // 分页 页数
  93 + $page = app()->request('page',1,'intval');
  94 + $page = $page ? $page : 1;
  95 +
  96 + $lists = db()->all(listsSql::lists($email['id'],$page));
  97 +
  98 + app()->_json(listsPage($lists,100,1,30));
  99 +
  100 + }
  101 +
  102 +
  103 +
  104 +
  105 +
  106 +
  107 +
  108 +
  109 +
  110 +
  111 +
79 } 112 }
  113 +
  114 +
  115 +
  116 +
  117 +
  118 +
  119 +
  120 +
  121 +
  122 +
  123 +
  124 +
  125 +
  126 +
@@ -128,7 +128,15 @@ function my_filter($value,$filter=null){ @@ -128,7 +128,15 @@ function my_filter($value,$filter=null){
128 function dbWhere(array $where, string $ar = 'and'):string{ 128 function dbWhere(array $where, string $ar = 'and'):string{
129 $sql = []; 129 $sql = [];
130 foreach ($where as $f=>$v){ 130 foreach ($where as $f=>$v){
131 - $sql[] = "`{$f}` = '{$v}'"; 131 + if(is_array($v)){
  132 + $v = array_map(function ($n){
  133 + return "'".addslashes($n)."'";
  134 + },$v);
  135 + $sql[] = "`{$f}` in (".implode(',',$v).")";
  136 + }else{
  137 + $sql[] = "`{$f}` = '".addslashes($v)."'";
  138 + }
  139 +
132 } 140 }
133 return implode(' '.$ar.' ',$sql); 141 return implode(' '.$ar.' ',$sql);
134 } 142 }
@@ -149,10 +157,40 @@ function dbUpdate(array $data):string { @@ -149,10 +157,40 @@ function dbUpdate(array $data):string {
149 } 157 }
150 158
151 159
  160 +/**
  161 + * 获取token
  162 + * @return string
  163 + * @author:dc
  164 + * @time 2023/2/17 14:24
  165 + */
  166 +function token():string {
  167 + $toekn = app()->request('_token_');
152 168
  169 + if(!preg_match("/^[a-z0-9]{32}$/",$toekn)){
  170 + app()->e('token_verify_error');
  171 + }
  172 + return $toekn;
  173 +}
153 174
154 175
155 - 176 +/**
  177 + * 分页数据
  178 + * @param $item
  179 + * @param $total
  180 + * @param $page
  181 + * @param $limit
  182 + * @return array
  183 + * @author:dc
  184 + * @time 2023/2/17 15:05
  185 + */
  186 +function listsPage($item,$total,$page,$limit){
  187 + return [
  188 + 'item' => $item,
  189 + 'page' => $page,
  190 + 'total' => $total,
  191 + 'limit' => $limit,
  192 + ];
  193 +}
156 194
157 195
158 196
@@ -16,4 +16,6 @@ return [ @@ -16,4 +16,6 @@ return [
16 'server_error' => '服务器异常', 16 'server_error' => '服务器异常',
17 17
18 'login_error' => '登录失败', 18 'login_error' => '登录失败',
  19 + 'token_verify_error' => '令牌验证失败',
  20 + 'token_verify_notfound' => '令牌验证失败.',
19 ]; 21 ];
@@ -120,7 +120,7 @@ class App { @@ -120,7 +120,7 @@ class App {
120 120
121 // 非 Err 错误类型 121 // 非 Err 错误类型
122 $app->data = [ 122 $app->data = [
123 - 'message' => $app->debug ? $exception->getMessage().PHP_EOL.$exception->getTraceAsString() : __('server_error'), 123 + 'error_message' => $app->debug ? $exception->getMessage().PHP_EOL.$exception->getTraceAsString() : __('server_error'),
124 'status' => $exception->getCode() ? $exception->getCode() : 500, 124 'status' => $exception->getCode() ? $exception->getCode() : 500,
125 ]; 125 ];
126 } 126 }
@@ -188,7 +188,7 @@ class App { @@ -188,7 +188,7 @@ class App {
188 * @time 2023/2/13 10:57 188 * @time 2023/2/13 10:57
189 */ 189 */
190 public function e($message,$status=400){ 190 public function e($message,$status=400){
191 - $this->data['message'] = __($message); 191 + $this->data['error_message'] = __($message);
192 $this->data['status'] = $status; 192 $this->data['status'] = $status;
193 throw new Err($message,500); 193 throw new Err($message,500);
194 } 194 }
@@ -202,9 +202,8 @@ class App { @@ -202,9 +202,8 @@ class App {
202 * @time 2023/2/13 11:03 202 * @time 2023/2/13 11:03
203 */ 203 */
204 public function _json($data){ 204 public function _json($data){
205 - $this->data['data'] = $data;  
206 -// $this->data['message'] = __($message);  
207 - throw new Err($message,200); 205 + $this->data = $data;
  206 + throw new Err('',200);
208 } 207 }
209 208
210 209
@@ -7,7 +7,7 @@ namespace Model; @@ -7,7 +7,7 @@ namespace Model;
7 * @time 2023/2/13 14:11 7 * @time 2023/2/13 14:11
8 * Class email 8 * Class email
9 */ 9 */
10 -class email { 10 +class emailSql {
11 11
12 public static $table = 'emails'; 12 public static $table = 'emails';
13 13
@@ -23,6 +23,22 @@ class email { @@ -23,6 +23,22 @@ class email {
23 return "select {$filed} from `".static::$table."` where `".(is_numeric($email) ? 'id' : 'email')."` = '{$email}' limit 1"; 23 return "select {$filed} from `".static::$table."` where `".(is_numeric($email) ? 'id' : 'email')."` = '{$email}' limit 1";
24 } 24 }
25 25
  26 +
  27 + /**
  28 + * @param $token
  29 + * @return array
  30 + * @author:dc
  31 + * @time 2023/2/17 14:21
  32 + */
  33 + public static function firstByToken($token):array {
  34 + return [
  35 + "select * from `".static::$table."` where `token` = ? limit 1",
  36 + [
  37 + $token
  38 + ]
  39 + ];
  40 + }
  41 +
26 /** 42 /**
27 * 统计邮箱的数量 43 * 统计邮箱的数量
28 * @return string 44 * @return string
@@ -50,30 +66,6 @@ class email { @@ -50,30 +66,6 @@ class email {
50 ]; 66 ];
51 } 67 }
52 68
53 - /**  
54 - * 更新  
55 - * @param $data  
56 - * @param $where  
57 - * @return array  
58 - * @author:dc  
59 - * @time 2023/2/17 10:24  
60 - */  
61 - public static function update($data,$where){  
62 -  
63 - return [  
64 - "update `".static::$table."` set ". dbUpdate($data)  
65 - ." where ".(is_numeric($where) ? '`id` = '.$where : dbWhere($where)),  
66 - $data  
67 - ];  
68 -  
69 - }  
70 -  
71 -  
72 - public function insert(){  
73 -  
74 - }  
75 -  
76 -  
77 69
78 70
79 71
  1 +<?php
  2 +
  3 +namespace Model;
  4 +
  5 +/**
  6 + * 邮件列表
  7 + * @author:dc
  8 + * @time 2023/2/17 14:15
  9 + * Class lists
  10 + * @package Model
  11 + */
  12 +class listsSql {
  13 +
  14 + /**
  15 + * 表
  16 + * @var string
  17 + */
  18 + public static $table = 'lists';
  19 +
  20 +
  21 + /**
  22 + * 查询列表
  23 + * @param $email_id
  24 + * @param $p
  25 + * @param int $folder_id
  26 + * @return string
  27 + * @author:dc
  28 + * @time 2023/2/17 14:42
  29 + */
  30 + public static function lists($email_id, $p, $folder_id = null){
  31 +
  32 + $where = ['email_id'=>$email_id];
  33 + if($folder_id) $where['folder_id'] = $folder_id;
  34 +
  35 + return "select * from `".static::$table."` where ".dbWhere($where)." order by `udate` desc limit 30 offset ".($p-1);
  36 +
  37 + }
  38 +
  39 +
  40 +
  41 +
  42 +
  43 +}
@@ -4,5 +4,11 @@ use Controller\Home; @@ -4,5 +4,11 @@ use Controller\Home;
4 4
5 5
6 return [ 6 return [
7 - 'login' => [Home::class,'login'] 7 +
  8 + /** 登录操作 @see Home::login() **/
  9 + 'login' => [Home::class,'login'],
  10 +
  11 + /** 邮件列表 @see Home::lists() **/
  12 + 'mail/list' => [Home::class,'lists'],
  13 +
8 ]; 14 ];