作者 lyh

Merge branch 'master' of http://47.244.231.31:8099/zhl/globalso-v6 into master-server

@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Aside\Optimize; @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Aside\Optimize;
5 use App\Enums\Common\Code; 5 use App\Enums\Common\Code;
6 use App\Http\Controllers\Aside\BaseController; 6 use App\Http\Controllers\Aside\BaseController;
7 use App\Http\Logic\Aside\Optimize\InquiryForwardLogic; 7 use App\Http\Logic\Aside\Optimize\InquiryForwardLogic;
  8 +use App\Models\Inquiry\AreaTimezone;
8 9
9 class InquiryForwardController extends BaseController 10 class InquiryForwardController extends BaseController
10 { 11 {
@@ -74,8 +75,6 @@ class InquiryForwardController extends BaseController @@ -74,8 +75,6 @@ class InquiryForwardController extends BaseController
74 'ip' => 'required',//ip 75 'ip' => 'required',//ip
75 'forward_url' => 'required',//转发网址 76 'forward_url' => 'required',//转发网址
76 'message' => 'required',//发送内容 77 'message' => 'required',//发送内容
77 - 'inquiry_diff' => 'required',//发送时区  
78 - 'inquiry_date' => 'required',//发送时间  
79 ], [ 78 ], [
80 'id.required' => 'ID不能为空', 79 'id.required' => 'ID不能为空',
81 'name.required' => '名称不能为空', 80 'name.required' => '名称不能为空',
@@ -84,8 +83,6 @@ class InquiryForwardController extends BaseController @@ -84,8 +83,6 @@ class InquiryForwardController extends BaseController
84 'ip.required' => 'ip不能为空', 83 'ip.required' => 'ip不能为空',
85 'forward_url.required' => '转发网址不能为空', 84 'forward_url.required' => '转发网址不能为空',
86 'message.required' => '内容不能为空', 85 'message.required' => '内容不能为空',
87 - 'inquiry_diff.required' => '发送时区不能为空',  
88 - 'inquiry_date.required' => '发送时间不能为空',  
89 ]); 86 ]);
90 } 87 }
91 88
@@ -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 }