正在显示
1 个修改的文件
包含
41 行增加
和
4 行删除
| @@ -202,14 +202,51 @@ class HomeEs extends Base { | @@ -202,14 +202,51 @@ class HomeEs extends Base { | ||
| 202 | 202 | ||
| 203 | // 超迹 带标签搜索 | 203 | // 超迹 带标签搜索 |
| 204 | if(app()->request('search_tags') && $ids){ | 204 | if(app()->request('search_tags') && $ids){ |
| 205 | + // 钉钉 @胡淑芬(胡淑芬) 时间 2026-09-01 17:56 提出修改 | ||
| 205 | // 查询id对应的发件人 | 206 | // 查询id对应的发件人 |
| 206 | - $search_lists = $this->es->search(['query'=>['bool'=>["must"=>[["terms"=>['uuid'=>$ids]]]]],"_source" => ["from.email"]],0,10000); | 207 | + $search_lists = $this->es->search(['query'=>['bool'=>["must"=>[["terms"=>['uuid'=>$ids]]]]],"_source" => ["from.email",'to','folder_as_int']],0,10000); |
| 207 | if(!empty($search_lists['hits']['hits'])){ | 208 | if(!empty($search_lists['hits']['hits'])){ |
| 208 | - $query['query']['bool']['must'][] = ['query_string'=>[ | 209 | + $from_emails = []; |
| 210 | + $to_emails = []; | ||
| 211 | + foreach($search_lists['hits']['hits'] as $hit){ | ||
| 212 | + $folder_as_int = isset($hit['_source']['folder_as_int'])?(int)$hit['_source']['folder_as_int']:0; | ||
| 213 | + if(in_array($folder_as_int,[2,3])){ | ||
| 214 | + $tos = explode(',',$hit['_source']['to']); | ||
| 215 | + foreach($tos as $to){ | ||
| 216 | + if($to){ | ||
| 217 | + $to_emails[] = $to; | ||
| 218 | + } | ||
| 219 | + } | ||
| 220 | + }else{ | ||
| 221 | + if(!empty($hit['_source']['from']['email'])){ | ||
| 222 | + $from_emails[] = $hit['_source']['from']['email']; | ||
| 223 | + } | ||
| 224 | + } | ||
| 225 | + } | ||
| 226 | + $from_emails = array_unique($from_emails); | ||
| 227 | + $to_emails = array_unique($to_emails); | ||
| 228 | + $tag_query = ['bool'=>['should'=>[],'minimum_should_match'=>1]]; | ||
| 229 | + if($from_emails){ | ||
| 230 | + $tag_query['bool']['should'][] = ['query_string'=>[ | ||
| 209 | 'query'=>'from.email:('.implode(' OR ',array_map(function($e){ | 231 | 'query'=>'from.email:('.implode(' OR ',array_map(function($e){ |
| 210 | - return '"'.$e['_source']['from']['email'].'"'; | ||
| 211 | - },$search_lists['hits']['hits'])).')'] | 232 | + return '"'.$e.'"'; |
| 233 | + },$from_emails)).')'] | ||
| 212 | ]; | 234 | ]; |
| 235 | + } | ||
| 236 | + if($to_emails){ | ||
| 237 | + $tag_query['bool']['should'][] = ['query_string'=>[ | ||
| 238 | + 'query'=>'to:('.implode(' OR ',array_map(function($e){ | ||
| 239 | + return '"'.$e.'"'; | ||
| 240 | + },$to_emails)).')'] | ||
| 241 | + ]; | ||
| 242 | + } | ||
| 243 | + if(empty($tag_query['bool']['should'])){ | ||
| 244 | + $query['query']['bool']['must'][] = ['term'=>[ | ||
| 245 | + 'uuid'=> 0 | ||
| 246 | + ]]; | ||
| 247 | + }else{ | ||
| 248 | + $query['query']['bool']['must'][] = $tag_query; | ||
| 249 | + } | ||
| 213 | }else{ | 250 | }else{ |
| 214 | $query['query']['bool']['must'][] = ['term'=>[ | 251 | $query['query']['bool']['must'][] = ['term'=>[ |
| 215 | 'uuid'=> 0 | 252 | 'uuid'=> 0 |
-
请 注册 或 登录 后发表评论