正在显示
1 个修改的文件
包含
41 行增加
和
1 行删除
| @@ -212,8 +212,46 @@ class MailListV2Es2 extends Base { | @@ -212,8 +212,46 @@ class MailListV2Es2 extends Base { | ||
| 212 | 212 | ||
| 213 | $total = $result['hits']['total']['value']??0; | 213 | $total = $result['hits']['total']['value']??0; |
| 214 | $lists = $result['hits']['hits']??[]; | 214 | $lists = $result['hits']['hits']??[]; |
| 215 | + | ||
| 216 | + | ||
| 217 | + // 查询这批列表中的发件人是否存在星标邮件 | ||
| 218 | + $flaggedLists = $this->es->search([ | ||
| 219 | + "_source" => ["from.email"], | ||
| 220 | + 'query'=>[ | ||
| 221 | + 'constant_score'=>[ | ||
| 222 | + 'filter'=>[ | ||
| 223 | + "bool" => [ | ||
| 224 | + "must" => [ | ||
| 225 | + ["term"=>["deleted"=>0]],// 没有删除 | ||
| 226 | + ["term"=>["flagged"=>1]],//星标 | ||
| 227 | + ["term"=>["source"=>2]],//ai邮箱 | ||
| 228 | + [ | ||
| 229 | + 'query_string' => [ | ||
| 230 | + 'query'=> implode(" OR ",array_map_unique_filter($lists,function ($v){ | ||
| 231 | + $v = $v['_source']['from']['email']??''; | ||
| 232 | + return $v ? '"'.$v.'"' : ''; | ||
| 233 | + })), | ||
| 234 | + "default_field"=> "from.email" | ||
| 235 | + ] | ||
| 236 | + ] | ||
| 237 | + ] | ||
| 238 | + ] | ||
| 239 | + ] | ||
| 240 | + ] | ||
| 241 | + ] | ||
| 242 | + ],0,count($lists)); | ||
| 243 | + | ||
| 244 | + | ||
| 245 | + if(empty($flaggedLists['hits']['hits'])){ | ||
| 246 | + $flaggedLists = []; | ||
| 247 | + }else{ | ||
| 248 | + $flaggedLists = array_map(function ($v){ | ||
| 249 | + return $v['_source']['from']['email']??''; | ||
| 250 | + },$flaggedLists['hits']['hits']); | ||
| 251 | + } | ||
| 252 | + | ||
| 215 | // map | 253 | // map |
| 216 | - $lists = array_map(function ($v){ | 254 | + $lists = array_map(function ($v) use ($flaggedLists){ |
| 217 | $v = $v['_source']; | 255 | $v = $v['_source']; |
| 218 | $v['id'] = $v['uuid']; | 256 | $v['id'] = $v['uuid']; |
| 219 | 257 | ||
| @@ -250,6 +288,8 @@ class MailListV2Es2 extends Base { | @@ -250,6 +288,8 @@ class MailListV2Es2 extends Base { | ||
| 250 | // 手动触发同步es | 288 | // 手动触发同步es |
| 251 | if(empty($v['is_auto']) && $v['folder_name']=='收件箱' && isAiAutoMail($v['from'],$v['subject'])) redis()->rPush('sync_to_es',$v['id'].'.1'); | 289 | if(empty($v['is_auto']) && $v['folder_name']=='收件箱' && isAiAutoMail($v['from'],$v['subject'])) redis()->rPush('sync_to_es',$v['id'].'.1'); |
| 252 | 290 | ||
| 291 | + // 这个联系人是否有邮件被星标了 | ||
| 292 | + $v['email_flagged'] = ($v['from']&&in_array($v['from'],$flaggedLists)) ? 1 : 0; | ||
| 253 | 293 | ||
| 254 | return $v; | 294 | return $v; |
| 255 | },$lists?:[]); | 295 | },$lists?:[]); |
-
请 注册 或 登录 后发表评论