MessagePush.php
4.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
namespace App\Models\Workchat;
use App\Models\Base;
use App\Models\Inquiry\InquiryFormData;
use App\Models\Project\Project;
use App\Models\ProjectAssociation\ProjectAssociation;
use App\Services\ProjectServer;
use App\Utils\LogUtils;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Log;
/**
* Class MessagePush
* @package App\Models\Workchat
* @author zbj
* @date 2024/9/7
*/
class MessagePush extends Base
{
use SoftDeletes;
const STATUS_PENDING = 0;
const STATUS_SUCCESS = 1;
const STATUS_ERROR = 9;
const TYPE_INQUIRY = 'inquiry';
const TYPE_WEEK = 'week';
const TYPE_TICKET = 'Ticket';
const TYPE_DOMAIN = 'domain';
const TYPE_DOMAIN_V5 = 'domain_v5';
//设置关联表名
/**
* @var mixed
*/
protected $table = 'gl_workchat_message_push';
/**
* @param $id
* @param $project_id
* @param $country
* @param $name
* @param $submit_at
* @return bool
* @param : is_forward_inquiry:0未开启转发询盘 1:开启转发询盘
*/
public static function addInquiryMessage($id, $project_id, $country, $name, $submit_at){
//查看项目是否开启转发询盘
$projectModel = new Project();
$projectInfo = $projectModel->read(['id'=>$project_id],['is_forward_inquiry']);
if($projectInfo['is_forward_inquiry'] == 0){
return false;
}
//项目是否有绑定群
$friend_id = ProjectAssociation::where('project_id', $project_id)
->where('status', ProjectAssociation::STATUS_NORMAL)
->where('binding_app', ProjectAssociation::ENTERPRISE_WECHAT)
->value('friend_id');
if(!$friend_id){
Log::channel('inquiry')->info($project_id . '没有绑定企微群', [$id]);
return false;
}
//特殊处理, 要求任何时候收到询盘都要及时推送到群里面
$special_project_ids = [650, 2045, 916];
//9-21 点,每条消息及时通知
//21-第二天 9 点,整合一起通知
$hour = date('H', strtotime($submit_at));
if(($hour >= 8 && $hour < 21) || in_array($project_id, $special_project_ids)) {
$model = new self();
$model->project_id = $project_id;
$model->friend_id = $friend_id;
$model->type = self::TYPE_INQUIRY;
$model->ref_ids = $id;
$model->content = '[' . date('H:i', strtotime($submit_at)) . '] 您的全球搜网站收到来自【' . $country . $name . '】的询盘信息,请登录后台或APP进行查看!';
$model->send_time = $submit_at;
}else{
//定时发送时间
$send_time = $hour >= 8 ? date('Y-m-d 08:00:00', strtotime($submit_at . '+1 day')) : date('Y-m-d 08:00:00', strtotime($submit_at));
$model = self::where('project_id', $project_id)->where('type', self::TYPE_INQUIRY)->where('send_time', $send_time)->first();
if(!$model){
$model = new self();
$model->project_id = $project_id;
$model->friend_id = $friend_id;
$model->type = self::TYPE_INQUIRY;
$model->ref_ids = $id;
$model->countries = $country;
$model->send_time = $send_time;
$model->content = '[08:00] 您的全球搜网站收到来自【' . $country . $name . '】的询盘信息,请登录后台或APP进行查看!';
}else{
$ref_ids = explode(',', $model->ref_ids);
$ref_ids[] = $id;
$model->ref_ids = implode(',', $ref_ids);
$countries = explode(',', $model->countries);
$countries[] = $country;
$model->countries = implode(',', $countries);
// 升级项目部分询盘无法监控, 会通过接口通知, 但是ID会值为固定值0,在数据库查不到, 无法获取对应国家
$count = count($countries);
if ($countries) {
$countries = array_unique($countries);
if(count($countries) > 3){
$country = implode(',', array_slice($countries, 0, 3)) . '...';
}else{
$country = implode(',', $countries);
}
}
$model->content = '[08:00] 您的全球搜网站收到来自【' . $country . '】'.$count.'条询盘信息,请登录后台或APP进行查看!';
}
}
$model->save();
Log::channel('inquiry')->info($project_id . '通知消息', [$model->id]);
}
}