作者 邓超

星标

@@ -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?:[]);