|
@@ -7,6 +7,7 @@ use App\Helper\Gpt; |
|
@@ -7,6 +7,7 @@ use App\Helper\Gpt; |
|
7
|
use App\Helper\Translate;
|
7
|
use App\Helper\Translate;
|
|
8
|
use App\Http\Logic\Aside\BaseLogic;
|
8
|
use App\Http\Logic\Aside\BaseLogic;
|
|
9
|
use App\Models\Ai\AiCommand;
|
9
|
use App\Models\Ai\AiCommand;
|
|
|
|
10
|
+use App\Models\Inquiry\AreaTimezone;
|
|
10
|
use App\Models\Inquiry\InquiryInfo;
|
11
|
use App\Models\Inquiry\InquiryInfo;
|
|
11
|
use App\Models\Inquiry\InquiryProject;
|
12
|
use App\Models\Inquiry\InquiryProject;
|
|
12
|
use App\Models\Inquiry\InquiryProjectRoute;
|
13
|
use App\Models\Inquiry\InquiryProjectRoute;
|
|
@@ -105,14 +106,50 @@ class InquiryForwardLogic extends BaseLogic |
|
@@ -105,14 +106,50 @@ class InquiryForwardLogic extends BaseLogic |
|
105
|
$is_v6 = $project_version->version == 6 ? 1 : 0;
|
106
|
$is_v6 = $project_version->version == 6 ? 1 : 0;
|
|
106
|
|
107
|
|
|
107
|
|
108
|
|
|
108
|
- //计算发送时间
|
|
|
|
109
|
- if ($this->param['inquiry_diff'] > 0) {
|
|
|
|
110
|
- $start_at = date('Y-m-d H:i:s', strtotime($this->param['inquiry_date'] . ' -' . $this->param['inquiry_diff'] . ' hours'));
|
|
|
|
111
|
- } elseif ($this->param['inquiry_diff'] < 0) {
|
|
|
|
112
|
- $start_at = date('Y-m-d H:i:s', strtotime($this->param['inquiry_date'] . ' +' . abs($this->param['inquiry_diff']) . ' hours'));
|
|
|
|
113
|
- } else {
|
109
|
+ //获取发送时间
|
|
|
|
110
|
+ if (isset($this->param['inquiry_date']) && $this->param['inquiry_date']) {
|
|
|
|
111
|
+ //填写了时间,直接使用
|
|
114
|
$start_at = $this->param['inquiry_date'];
|
112
|
$start_at = $this->param['inquiry_date'];
|
|
|
|
113
|
+ } else {
|
|
|
|
114
|
+ //未填写时间
|
|
|
|
115
|
+ //1.根据时差获取当地随机10-18点时间
|
|
|
|
116
|
+ $timezoneModel = new AreaTimezone();
|
|
|
|
117
|
+ $country_area = $timezoneModel->read(['name' => $info['country']], ['diff']);
|
|
|
|
118
|
+ $diff = $country_area ? $country_area['diff'] : 0;
|
|
|
|
119
|
+ if ($diff > 0) {
|
|
|
|
120
|
+ $area_time = date('Y-m-d H:i:s', strtotime($now . ' +' . $diff . ' hours'));
|
|
|
|
121
|
+ } elseif ($diff < 0) {
|
|
|
|
122
|
+ $area_time = date('Y-m-d H:i:s', strtotime($now . ' -' . abs($diff) . ' hours'));
|
|
|
|
123
|
+ } else {
|
|
|
|
124
|
+ $area_time = $now;
|
|
|
|
125
|
+ }
|
|
|
|
126
|
+ $area_timestamp = strtotime($area_time);
|
|
|
|
127
|
+ $area_hour = date('H', $area_timestamp);
|
|
|
|
128
|
+ if ($area_hour < 18) {
|
|
|
|
129
|
+ //当地时间为18点前
|
|
|
|
130
|
+ $area_day = date('Y-m-d', $area_timestamp);
|
|
|
|
131
|
+ $area_start_time = $area_hour < 10 ? '10:00:00' : date('H:i:s', $area_timestamp);
|
|
|
|
132
|
+ } else {
|
|
|
|
133
|
+ //当地时间为18点后,顺延一天
|
|
|
|
134
|
+ $area_day = date('Y-m-d', strtotime($area_time . ' +1 day'));
|
|
|
|
135
|
+ $area_start_time = '10:00:00';
|
|
|
|
136
|
+ }
|
|
|
|
137
|
+ $start_time = strtotime($area_day . ' ' . $area_start_time);
|
|
|
|
138
|
+ $end_time = strtotime($area_day . ' 18:00:00');
|
|
|
|
139
|
+ $random_timestamp = mt_rand($start_time, $end_time);
|
|
|
|
140
|
+ $area_date = date('Y-m-d H:i:s', $random_timestamp);
|
|
|
|
141
|
+
|
|
|
|
142
|
+ //2.再根据时差将随机生成的当地时间换算成国内时间
|
|
|
|
143
|
+ if ($diff > 0) {
|
|
|
|
144
|
+ $start_at = date('Y-m-d H:i:s', strtotime($area_date . ' -' . $diff . ' hours'));
|
|
|
|
145
|
+ } elseif ($diff < 0) {
|
|
|
|
146
|
+ $start_at = date('Y-m-d H:i:s', strtotime($area_date . ' +' . abs($diff) . ' hours'));
|
|
|
|
147
|
+ } else {
|
|
|
|
148
|
+ $start_at = $area_date;
|
|
|
|
149
|
+ }
|
|
115
|
}
|
150
|
}
|
|
|
|
151
|
+
|
|
|
|
152
|
+ //换算后的国内时间小于当前时间,使用当前时间
|
|
116
|
if ($start_at < $now) {
|
153
|
if ($start_at < $now) {
|
|
117
|
$start_at = $now;
|
154
|
$start_at = $now;
|
|
118
|
}
|
155
|
}
|