作者 邓超

es

... ... @@ -110,8 +110,25 @@ class SyncToEsCmd {
list($doc_id,$data) = $data;
// 主库
$this->toDataEs('email_lists_copy',$id,$doc_id,$data);
// 分库
$this->toDataEs('email_lists_branch_'.$data['postid'],$id,$doc_id,$data);
// 个人邮箱的情况
if(!$data['postid']){
$postids = $this->getPostids($data['email_id']);
if($postids){
foreach ($postids as $postid){
$data['postid'] = $postid;
$data['source'] = 1;
// 分库 个人邮箱
$this->toDataEs('email_lists_branch_'.$data['postid'],$id,$doc_id,$data);
}
}else{
// 分库 其他 非fob数据源
$this->toDataEs('email_lists_branch_0',$id,$doc_id,$data);
}
}else{
// 分库
$this->toDataEs('email_lists_branch_'.$data['postid'],$id,$doc_id,$data);
}
}
}else{
// 没有数据时暂停1秒
... ... @@ -122,6 +139,24 @@ class SyncToEsCmd {
}
/**
* 个人邮箱情况
* @param $email_id
* @author:dc
* @time 2025/8/5 14:53
*/
private function getPostids($email_id){
$postids = $this->fob_db->throw()->cache(300)->all("select `post_id` from `e_mail_binds` where `source` = 1 and `email_id` = {$email_id} and `deleted_at` is null");
if($postids){
return array_column($postids,'post_id');
}
return [];
}
/**
* @param $id
* @param $is_check_body
* @return array|false
... ... @@ -309,8 +344,8 @@ class SyncToEsCmd {
//每60秒验证一次
if(redis()->add('fob_bind_mail_times_check:'.$email_id,1,60)){
$lastpostid = $this->fob_db->throw()->value("select `post_id` from `e_mail_binds_log` where `email_id` = '{$email_id}' order by `id` desc limit 1");
$thelast = $this->fob_db->throw()->first("select * from `e_mail_binds` where `email_id` = '{$email_id}' and `deleted_at` is null order by `id` desc limit 1");
$lastpostid = $this->fob_db->throw()->value("select `post_id` from `e_mail_binds_log` where `source` = 2 and `email_id` = '{$email_id}' order by `id` desc limit 1");
$thelast = $this->fob_db->throw()->first("select * from `e_mail_binds` where `source` = 2 and `email_id` = '{$email_id}' and `deleted_at` is null order by `id` desc limit 1");
if(!$thelast){
return [0,0];
}
... ... @@ -338,7 +373,7 @@ class SyncToEsCmd {
// 查询历史记录
$times = redis()->getSet('fob_bind_mail_times3:'.$email_id,300,function ($email_id){
$times = $this->fob_db->throw()->all("select `post_id`,`bind_time`,`source` from `e_mail_binds_log` where `email_id` = {$email_id} order by `bind_time` desc ");
$times = $this->fob_db->throw()->all("select `post_id`,`bind_time`,`source` from `e_mail_binds_log` where `source` = 2 and `email_id` = {$email_id} order by `bind_time` desc ");
if(!$times){
return [];
}
... ... @@ -361,7 +396,7 @@ class SyncToEsCmd {
// 没有找到历史,就找绑定表
if(empty($data)){
$data = redis()->getSet('fob_bind_mail3:'.$email_id,300,function ($email_id){
return $this->fob_db->throw()->first("select `post_id`,`source` from `e_mail_binds` where `email_id` = '{$email_id}' and `deleted_at` is null order by `id` desc limit 1");
return $this->fob_db->throw()->first("select `post_id`,`source` from `e_mail_binds` where `source` = 2 and `email_id` = '{$email_id}' and `deleted_at` is null order by `id` desc limit 1");
},$email_id);
}
... ...