Merge remote-tracking branch 'origin/master'
# Conflicts: # lib/DbQuery.php
正在显示
4 个修改的文件
包含
37 行增加
和
20 行删除
@@ -132,10 +132,16 @@ class Home extends Base { | @@ -132,10 +132,16 @@ class Home extends Base { | ||
132 | if(app()->requestHas('from')){ | 132 | if(app()->requestHas('from')){ |
133 | // 如果是发件箱 | 133 | // 如果是发件箱 |
134 | if($folder == '发件箱'){ | 134 | if($folder == '发件箱'){ |
135 | - $where['to'] = app()->request('from'); | ||
136 | - if(!$where['to']){ | 135 | + $tos = app()->request('from'); |
136 | + if(!$tos){ | ||
137 | // 不让查询数据 | 137 | // 不让查询数据 |
138 | $where['id'] = 0; | 138 | $where['id'] = 0; |
139 | + }else { | ||
140 | + $tos = array_map(function ($v){ | ||
141 | + return "find_in_set('".addcslashes($v,"'")."',`to`)"; | ||
142 | + },is_array($tos) ? $tos : [$tos]); | ||
143 | + | ||
144 | + $where['_'][] = '('.implode(' or ',$tos).')'; | ||
139 | } | 145 | } |
140 | }else{ | 146 | }else{ |
141 | $where['from'] = app()->request('from'); | 147 | $where['from'] = app()->request('from'); |
@@ -28,6 +28,12 @@ trait DbQuery { | @@ -28,6 +28,12 @@ trait DbQuery { | ||
28 | */ | 28 | */ |
29 | protected int $cache = 0; | 29 | protected int $cache = 0; |
30 | 30 | ||
31 | + /** | ||
32 | + * 没有数据时 也缓存 | ||
33 | + * @var bool | ||
34 | + */ | ||
35 | + protected bool $cacheNoData = true; | ||
36 | + | ||
31 | 37 | ||
32 | public function getClient() | 38 | public function getClient() |
33 | { | 39 | { |
@@ -51,8 +57,9 @@ trait DbQuery { | @@ -51,8 +57,9 @@ trait DbQuery { | ||
51 | * @author:dc | 57 | * @author:dc |
52 | * @time 2024/8/14 14:04 | 58 | * @time 2024/8/14 14:04 |
53 | */ | 59 | */ |
54 | - public function cache(int $ttl){ | 60 | + public function cache(int $ttl,bool $noData = true){ |
55 | $this->cache = $ttl; | 61 | $this->cache = $ttl; |
62 | + $this->cacheNoData = $noData; | ||
56 | return $this; | 63 | return $this; |
57 | } | 64 | } |
58 | 65 | ||
@@ -254,9 +261,7 @@ trait DbQuery { | @@ -254,9 +261,7 @@ trait DbQuery { | ||
254 | * @time 2023/2/17 11:03 | 261 | * @time 2023/2/17 11:03 |
255 | */ | 262 | */ |
256 | public function value(string|array $sql){ | 263 | public function value(string|array $sql){ |
257 | - | ||
258 | return $this->getCacheData($sql,null,\PDO::FETCH_COLUMN); | 264 | return $this->getCacheData($sql,null,\PDO::FETCH_COLUMN); |
259 | - | ||
260 | $query = $this->query($sql); | 265 | $query = $this->query($sql); |
261 | if($query){ | 266 | if($query){ |
262 | return $query->fetch(\PDO::FETCH_COLUMN); | 267 | return $query->fetch(\PDO::FETCH_COLUMN); |
@@ -280,7 +285,13 @@ trait DbQuery { | @@ -280,7 +285,13 @@ trait DbQuery { | ||
280 | $key = 'data:'.md5(is_string($sql) ? $sql : json_encode($sql)); | 285 | $key = 'data:'.md5(is_string($sql) ? $sql : json_encode($sql)); |
281 | if(redis()->has($key)){ | 286 | if(redis()->has($key)){ |
282 | $this->cache = 0; | 287 | $this->cache = 0; |
283 | - return redis()->get($key,$default); | 288 | + $data = redis()->get($key,$default); |
289 | + if(!$this->cacheNoData){ | ||
290 | + if($data || $data === 0){ | ||
291 | + return $data; | ||
292 | + } | ||
293 | + } | ||
294 | + | ||
284 | } | 295 | } |
285 | } | 296 | } |
286 | $query = $this->query($sql); | 297 | $query = $this->query($sql); |
@@ -251,7 +251,7 @@ class Mail { | @@ -251,7 +251,7 @@ class Mail { | ||
251 | $blacklist = redis()->get('blacklist:'.$email_id); | 251 | $blacklist = redis()->get('blacklist:'.$email_id); |
252 | $blackFolder = ''; | 252 | $blackFolder = ''; |
253 | if($blacklist){ | 253 | if($blacklist){ |
254 | - $blackFolder = $db->value(folderSql::originFolder($email_id,'垃圾箱')); | 254 | + $blackFolder = $db->cache(86400*30)->value(folderSql::originFolder($email_id,'垃圾箱')); |
255 | } | 255 | } |
256 | 256 | ||
257 | // | 257 | // |
@@ -281,11 +281,11 @@ class Mail { | @@ -281,11 +281,11 @@ class Mail { | ||
281 | 281 | ||
282 | 282 | ||
283 | $uids = array_column($uids,'UID'); | 283 | $uids = array_column($uids,'UID'); |
284 | - $existsUids = $db->all(listsSql::getUids($email_id,$folder_id,$uids)); | ||
285 | - if($existsUids){ | ||
286 | - $existsUids = array_column($existsUids,'uid'); | ||
287 | - // 获取不存在数据库的uid | ||
288 | - $uids = array_diff($uids,$existsUids); | 284 | + foreach ($uids as $k=>$uid){ |
285 | + if($db->cache(86400*30,false)->value(listsSql::first(dbWhere(['email_id'=>$email_id,'folder_id'=>$folder_id,'uid'=>$uid]),'count(*) as c'))){ | ||
286 | + | ||
287 | + unset($uids[$k]); | ||
288 | + } | ||
289 | } | 289 | } |
290 | 290 | ||
291 | 291 | ||
@@ -313,7 +313,7 @@ class Mail { | @@ -313,7 +313,7 @@ class Mail { | ||
313 | $unseen = $db->count(listsSql::listCount(dbWhere([ | 313 | $unseen = $db->count(listsSql::listCount(dbWhere([ |
314 | 'seen' => 0, | 314 | 'seen' => 0, |
315 | 'deleted' => 0, | 315 | 'deleted' => 0, |
316 | - 'email_id' => $email_id, | 316 | + // 'email_id' => $email_id, |
317 | 'folder_id' => $folder_id, | 317 | 'folder_id' => $folder_id, |
318 | ]))); | 318 | ]))); |
319 | $db->update( | 319 | $db->update( |
@@ -37,14 +37,14 @@ class MailFun { | @@ -37,14 +37,14 @@ class MailFun { | ||
37 | * @time 2023/3/27 13:55 | 37 | * @time 2023/3/27 13:55 |
38 | */ | 38 | */ |
39 | public static function mb_coding(string $str,array $appcode=[]){ | 39 | public static function mb_coding(string $str,array $appcode=[]){ |
40 | - $str = trim($str," \t\n\r"); | 40 | + $str = trim($str); |
41 | $str = (new Header())->decode($str); | 41 | $str = (new Header())->decode($str); |
42 | - try { | ||
43 | - $encode = mb_detect_encoding($str, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5')); | ||
44 | - if($encode && $encode != 'UTF-8'){ | ||
45 | - $str = mb_convert_encoding($str, 'UTF-8', $encode); | ||
46 | - } | ||
47 | - }catch (\Throwable $e){} | 42 | + // try { |
43 | + // $encode = mb_detect_encoding($str, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5')); | ||
44 | + // if($encode && $encode != 'UTF-8'){ | ||
45 | + // $str = mb_convert_encoding($str, 'UTF-8', $encode); | ||
46 | + // } | ||
47 | + // }catch (\Throwable $e){} | ||
48 | 48 | ||
49 | 49 | ||
50 | return $str; | 50 | return $str; |
-
请 注册 或 登录 后发表评论