From cd0d850f896dad771cfc55cd31796bc363e6e6f3 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Fri, 14 Nov 2025 14:11:54 +0800 Subject: [PATCH 01/17] =?UTF-8?q?=E5=85=B3=E9=94=AE=E8=AF=8D=E6=8A=93?= =?UTF-8?q?=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/service/BrandSeriesService.php | 66 ++++++++++++++++-------- 1 file changed, 45 insertions(+), 21 deletions(-) diff --git a/app/admin/service/BrandSeriesService.php b/app/admin/service/BrandSeriesService.php index 594605b..7b12eec 100644 --- a/app/admin/service/BrandSeriesService.php +++ b/app/admin/service/BrandSeriesService.php @@ -330,35 +330,59 @@ class BrandSeriesService //懂车帝模糊搜索返回车系地址 $href = $crawlService->modelSearch($keyword); - $seriesId = $this->extractSeriesId($href); + $seriesId = $this->extractSeriesId($href); //懂车帝车系id - if (empty($seriesId)) { + if (empty($seriesId)) { //没有抓取到懂车帝系列id时,按关键词为品牌名抓取所有的系列名 + $crawlSeries = $crawlService->brandSeries($keyword); + } + + if (empty($seriesId) && empty($crawlSeries)) { throw new \Exception('抓取失败,未找到该系列车型'); } - //抓取品牌与系列 - $brandSeries = $crawlService->crawlBrandSeries($seriesId); - - - // 验证品牌是否存在 - $brand = Brand::where('brand_name', $brandSeries['brand'])->first(); - // 获取品牌信息 - $series = BrandSeries::where('series_name', $brandSeries['series'])->first(); - $result['brand'] = ['brand_name' => $brandSeries['brand'], 'exists' => $brand?1:0]; - if($brand){ - $result['brand']['id'] = $brand['id']; - } - $result['series'] = ['series_name' => $brandSeries['series'], 'exists' => $series?1:0]; - if($series){ - $result['series']['id'] = $series['id']; - if(empty($result['brand']['id'])){ - $result['brand']['id'] = $series['brand_id']; + $brandSerieses = []; + if(empty($seriesId) && !empty($crawlSeries)){ //关键词为品牌名时抓取所有车系的懂车帝id + $href = $crawlService->modelSearch($crawlSeries[0]); + $seriesId = $this->extractSeriesId($href); //懂车帝车系id + //抓取品牌与系列 + $brandSeries = $crawlService->crawlBrandSeries($seriesId); + foreach ($crawlSeries as $item) { +// $brandSerieses[] = $crawlService->brandSeries($keyword); + $brandSerieses[] = ['brand' => $brandSeries['brand'], 'series' => $item]; } + }elseif (!empty($seriesId) && empty($crawlSeries)){ + //抓取品牌与系列 + $brandSerieses[] = $crawlService->crawlBrandSeries($seriesId); } + $result = []; try { - //获取车型数据 - $result['model'] = $this->crawlSeriesModel($seriesId); + foreach ($brandSerieses as $brandSeries) { + $item = []; + // 验证品牌是否存在 + $brand = Brand::where('brand_name', $brandSeries['brand'])->first(); + // 获取品牌信息 + $series = BrandSeries::where('series_name', $brandSeries['series'])->first(); + $item['brand'] = ['brand_name' => $brandSeries['brand'], 'exists' => $brand ? 1 : 0]; + if ($brand) { + $item['brand']['id'] = $brand['id']; + } + $item['series'] = ['series_name' => $brandSeries['series'], 'exists' => $series ? 1 : 0]; + if ($series) { + $item['series']['id'] = $series['id']; + if (empty($item['brand']['id'])) { + $item['brand']['id'] = $series['brand_id']; + } + } + + //获取车型数据 + $item['model'] = []; + if (count($brandSerieses)<2) { + $item['model'] = $this->crawlSeriesModel($seriesId); + } + $result[] = $item; + } + return $result; } catch (\Exception $e) { throw new \Exception($e->getMessage()); From 3d96152ea95e011c5a790427d4c09884c353188d Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Fri, 14 Nov 2025 15:25:08 +0800 Subject: [PATCH 02/17] =?UTF-8?q?=E5=93=81=E7=89=8C=E5=85=B3=E9=94=AE?= =?UTF-8?q?=E8=AF=8D=E6=8A=93=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/service/BrandSeriesService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/admin/service/BrandSeriesService.php b/app/admin/service/BrandSeriesService.php index 7b12eec..364be9d 100644 --- a/app/admin/service/BrandSeriesService.php +++ b/app/admin/service/BrandSeriesService.php @@ -383,7 +383,7 @@ class BrandSeriesService $result[] = $item; } - return $result; + return ['is_series' => (count($brandSerieses)<2)?1:0, 'data' => $result]; } catch (\Exception $e) { throw new \Exception($e->getMessage()); } From cb1b208190ae4d951759cacc89ef5f021bfbd462 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Mon, 17 Nov 2025 10:05:29 +0800 Subject: [PATCH 03/17] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=8E=9F=E5=9B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/crm/controller/CustomerController.php | 6 ++++++ app/crmAdmin/controller/CustomerController.php | 6 +++++- app/crmAdmin/logic/CustomerLogic.php | 3 ++- app/crmAdmin/service/CustomerService.php | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/crm/controller/CustomerController.php b/app/crm/controller/CustomerController.php index 25b186e..13dad20 100644 --- a/app/crm/controller/CustomerController.php +++ b/app/crm/controller/CustomerController.php @@ -435,6 +435,11 @@ class CustomerController extends BaseController { $id = Util::getParam($request, 'id'); $scene = Util::getParam($request, 'scene',''); + $status_desc = Util::getParam($request, 'status_desc',''); + + if($scene == 'force' && empty($status_desc)){ + return $this->error( '移除原因不能为空'); + } $userId = $request->user->uid; $where = [ @@ -450,6 +455,7 @@ class CustomerController extends BaseController if ($scene == 'force') { //status=5:业务员自己删除 $customer->status = 5; + $customer->status_desc = $status_desc; $res = $customer->save(); }else{ $customer->user_id = 0; diff --git a/app/crmAdmin/controller/CustomerController.php b/app/crmAdmin/controller/CustomerController.php index 6104fcd..959d429 100644 --- a/app/crmAdmin/controller/CustomerController.php +++ b/app/crmAdmin/controller/CustomerController.php @@ -144,6 +144,11 @@ class CustomerController extends BaseController { try { $param = $request->all(); + $scene = $param['scene'] ?? ''; + + if($scene != 'force' && empty($param['status_desc'])){ + return $this->error( '移除原因不能为空'); + } if (empty($param['customer_id'])) { return $this->error('customer_id'.trans('not_null')); } @@ -153,7 +158,6 @@ class CustomerController extends BaseController if(!$query->exists()){ return $this->error( trans('fail')); } - $scene = $param['scene'] ?? ''; if ($scene === 'list') { //管理端客户列表移除 $res = $query->update(['status' => 4, 'deleted_at' => time()]); } elseif ($scene === 'force') { //强删除 diff --git a/app/crmAdmin/logic/CustomerLogic.php b/app/crmAdmin/logic/CustomerLogic.php index 13efe9c..5c4192a 100644 --- a/app/crmAdmin/logic/CustomerLogic.php +++ b/app/crmAdmin/logic/CustomerLogic.php @@ -21,12 +21,13 @@ class CustomerLogic return $res; } - public function forceDelete(int $id) + public function forceDelete(int $id ,string $status_desc = '') { $customer = Customer::withTrashed()->find($id); //强制删除 // $res = $customer->forceDelete(); $customer->status = 3; + $customer->status_desc = $status_desc; $res = $customer->save(); return $res; } diff --git a/app/crmAdmin/service/CustomerService.php b/app/crmAdmin/service/CustomerService.php index 6b5573a..ecd2a17 100644 --- a/app/crmAdmin/service/CustomerService.php +++ b/app/crmAdmin/service/CustomerService.php @@ -325,7 +325,7 @@ class CustomerService $audit->status = 3; $audit->save(); } - return $logic->forceDelete($params['id']); + return $logic->forceDelete($params['id'],$audit->remark); } else { if(!empty($audit)){ $audit->status = 2; From 6096f7ee01de07c26033a6bd2147bf9a9c4e6c36 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Mon, 17 Nov 2025 14:39:52 +0800 Subject: [PATCH 04/17] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=8E=9F=E5=9B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/crmAdmin/controller/CustomerController.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/crmAdmin/controller/CustomerController.php b/app/crmAdmin/controller/CustomerController.php index 959d429..161c4f7 100644 --- a/app/crmAdmin/controller/CustomerController.php +++ b/app/crmAdmin/controller/CustomerController.php @@ -145,6 +145,7 @@ class CustomerController extends BaseController try { $param = $request->all(); $scene = $param['scene'] ?? ''; + $status_desc = $param['status_desc'] ?? ''; if($scene != 'force' && empty($param['status_desc'])){ return $this->error( '移除原因不能为空'); @@ -159,11 +160,11 @@ class CustomerController extends BaseController return $this->error( trans('fail')); } if ($scene === 'list') { //管理端客户列表移除 - $res = $query->update(['status' => 4, 'deleted_at' => time()]); + $res = $query->update(['status' => 4, 'status_desc' => $status_desc, 'deleted_at' => time()]); } elseif ($scene === 'force') { //强删除 $res = $query->forceDelete(); } else { //公海软删除 - $res = $query->update(['status' => 3, 'deleted_at' => time()]); + $res = $query->update(['status' => 3, 'status_desc' => $status_desc, 'deleted_at' => time()]); } return $this->success($res); From 6bdcc73ee84c8772f1af47270efceab632042395 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Fri, 28 Nov 2025 16:12:10 +0800 Subject: [PATCH 05/17] =?UTF-8?q?=E6=A8=A1=E7=B3=8A=E6=8A=93=E5=8F=96?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/service/BrandSeriesService.php | 12 +++++++----- app/common/service/CrawlService.php | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/admin/service/BrandSeriesService.php b/app/admin/service/BrandSeriesService.php index 364be9d..9542378 100644 --- a/app/admin/service/BrandSeriesService.php +++ b/app/admin/service/BrandSeriesService.php @@ -328,20 +328,22 @@ class BrandSeriesService // 执行抓取 $crawlService = new CrawlService(); - //懂车帝模糊搜索返回车系地址 + //懂车帝模糊搜索返回车系地址|单个车系id抓取 $href = $crawlService->modelSearch($keyword); $seriesId = $this->extractSeriesId($href); //懂车帝车系id - if (empty($seriesId)) { //没有抓取到懂车帝系列id时,按关键词为品牌名抓取所有的系列名 - $crawlSeries = $crawlService->brandSeries($keyword); - } +// if (empty($seriesId)) { //没有抓取到懂车帝系列id时,按关键词为品牌名抓取所有的系列名 +// $crawlSeries = $crawlService->brandSeries($keyword); +// } + //按关键词为品牌名抓取所有的系列名 + $crawlSeries = $crawlService->brandSeries($keyword); if (empty($seriesId) && empty($crawlSeries)) { throw new \Exception('抓取失败,未找到该系列车型'); } $brandSerieses = []; - if(empty($seriesId) && !empty($crawlSeries)){ //关键词为品牌名时抓取所有车系的懂车帝id + if(empty($seriesId) && !empty($crawlSeries) || count($crawlSeries)>1){ //关键词为品牌名时抓取所有车系的懂车帝id $href = $crawlService->modelSearch($crawlSeries[0]); $seriesId = $this->extractSeriesId($href); //懂车帝车系id //抓取品牌与系列 diff --git a/app/common/service/CrawlService.php b/app/common/service/CrawlService.php index 53e7026..f437ba6 100644 --- a/app/common/service/CrawlService.php +++ b/app/common/service/CrawlService.php @@ -9,7 +9,7 @@ class CrawlService { public function brandSeries($brand) { - $url = "https://www.dongchedi.com/search?currTab=6&keyword=".$brand; + $url = "https://www.dongchedi.com/search?currTab=6&keyword=".$brand.'&from=search_tab_er&api_param={"en_qc":+0}'; $ql = QueryList::get($url ); $series = []; $ql->find('div.card-name')->texts()->map(function($item) use(&$series) { From 8a94de610db9d5ec16c265885dcb9b0e745b6ab9 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Sat, 29 Nov 2025 15:36:53 +0800 Subject: [PATCH 06/17] =?UTF-8?q?=E8=AF=A2=E7=9B=98=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InquiryTransmitConfigController.php | 33 +++ .../controller/InquiryTransmitController.php | 268 ++++++++++++++++++ .../logic/InquiryTransmitConfigLogic.php | 17 ++ app/common/logic/InquiryTransmitLogic.php | 17 ++ app/common/model/InquiryTransmit.php | 49 ++++ app/common/model/InquiryTransmitConfig.php | 49 ++++ .../service/InquiryTransmitConfigService.php | 31 ++ app/common/service/InquiryTransmitService.php | 31 ++ .../InquiryTransmitConfigValidate.php | 29 ++ .../validate/InquiryTransmitValidate.php | 29 ++ composer.json | 3 +- composer.lock | 72 ++++- config/route.php | 5 + 13 files changed, 631 insertions(+), 2 deletions(-) create mode 100644 app/admin/controller/InquiryTransmitConfigController.php create mode 100644 app/admin/controller/InquiryTransmitController.php create mode 100644 app/common/logic/InquiryTransmitConfigLogic.php create mode 100644 app/common/logic/InquiryTransmitLogic.php create mode 100644 app/common/model/InquiryTransmit.php create mode 100644 app/common/model/InquiryTransmitConfig.php create mode 100644 app/common/service/InquiryTransmitConfigService.php create mode 100644 app/common/service/InquiryTransmitService.php create mode 100644 app/common/validate/InquiryTransmitConfigValidate.php create mode 100644 app/common/validate/InquiryTransmitValidate.php diff --git a/app/admin/controller/InquiryTransmitConfigController.php b/app/admin/controller/InquiryTransmitConfigController.php new file mode 100644 index 0000000..87761bf --- /dev/null +++ b/app/admin/controller/InquiryTransmitConfigController.php @@ -0,0 +1,33 @@ +service = new InquiryTransmitConfigService(); + } + + /** + * 列表页数据格式化 + * + * @param array $data + * @return array + */ + // protected function indexFormat($data) + // { + // if (isset($data['created_at'])) + // $data['created_at'] = date('Y-m-d H:i:s', $data['created_at']); + // if (isset($data['updated_at'])) + // $data['updated_at'] = date('Y-m-d H:i:s', $data['updated_at']); + // return $data; + // } +} \ No newline at end of file diff --git a/app/admin/controller/InquiryTransmitController.php b/app/admin/controller/InquiryTransmitController.php new file mode 100644 index 0000000..ee789c2 --- /dev/null +++ b/app/admin/controller/InquiryTransmitController.php @@ -0,0 +1,268 @@ +service = new InquiryTransmitService(); + } + + /** + * 列表页数据格式化 + * + * @param array $data + * @return array + */ + // protected function indexFormat($data) + // { + // if (isset($data['created_at'])) + // $data['created_at'] = date('Y-m-d H:i:s', $data['created_at']); + // if (isset($data['updated_at'])) + // $data['updated_at'] = date('Y-m-d H:i:s', $data['updated_at']); + // return $data; + // } + + + // } + + public function form(Request $request, int $id) + { + try { + $params = $request->all(); + + if ($id == 1) { + $mailto = '1696136552@qq.com'; + $fromDomain = 'magicbridgeauto.com'; + } else { + $mailto = '1696136552@qq.com'; + $fromDomain = 'magicbridgeauto.com'; + } + + if ($request->method() == 'GET') { + $config = [ + 'iLang' => 'en', + 'Act' => 'Inquiry', + 'post_url' => getenv('MAIN_DOMAIN').'/form'.'?m=Data&a=save', + 'mailto' => $mailto, + 'fromDomain' => $fromDomain, + 'fromPath' => parse_url($params['fromlink'], PHP_URL_PATH), + 'm' => $params['m'], + 'a' => $params['a'], + 'tid' => $params['tid'], + 'cid' => $params['cid'], + 'version' => $params['version'], + 'fromlink' => $params['fromlink'] + ]; + + $html = match ($params['tid']) { + 'en-5-LP-pnx' => $this->formHmtl($config), + 'en-3-P-vdx' => $this->formHmtl2($config) + }; + + return json([ + 'code' => 200, + 'data' => [ + 'html' => $html + ], + 'message' => 'success' + ]); + } + + if ($request->method() == 'POST') { + $ip = $request->getRealIp($safe_mode=true); + $edata = [ + 'mailto' => $params['mailto'], + + 'Date' => date('Y-m-d H:i:s', time()), + 'Email' => $params['userEMail'], + 'Name' => $params['userName'], + 'Tel' => $params['userTel'], + 'Company' => '', + 'Country' => $params['uCountry'], + 'Form Url' => $params['fromlink'], + 'Message' => $params['Message'], + 'Ip' => $ip, + 'IpLocation' => ip2region($ip).'(仅供参考)', + + 'iLang' => $params['iLang'], + 'mailto' => $params['mailto'], + 'navigator_language' => $params['navigator_language'], + 'navigator_platform' => $params['navigator_platform'], + 'screen_width' => $params['screen_width'], + 'screen_height' => $params['screen_height'], + 'uCountry' => $params['uCountry'] + ]; + + $this->emailHtml($edata); + + return json([ + 'code' => 200, + 'data' => [], + 'message' => 'Thank you for your message! We will contact with you soon.' + ]); + } + } catch (\Throwable $th) { + Log::info('Data:'.date('Y-m-d H:i:s').':'.$th->getMessage().'|'.$th->getLine().'|'.$th->getFile()); + } + } + + public function formHmtl($config) + { + // https://v1.xzgoogle.com/form.php?m=Temp&a=getTpl&tid=en-5-LP-pnx&cid=760&version=v4&fromlink=https://magicbridgeauto.com/contact-us/ + $html = '
'; + return $html; + } + + public function formHmtl2($config) + { + // https://v1.xzgoogle.com/form.php?m=Temp&a=getTpl&tid=en-3-P-vdx&cid=760&version=v4&fromlink=https://magicbridgeauto.com/news/ + $html = '
'; + return $html; + } + + + public function emailHtml($data) + { + $html = ' + + + + Lead Preview + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ Preview +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Date:'.$data['Date'].'
Email: + '.$data['Email'].' +
Name:'.$data['Name'].'
Tel:'.$data['Tel'].'
Company:
Country:'.$data['Country'].'
Form Url: + '.$data['Form Url'].' +
Message:'.$data['Message'].'
Ip:'.$data['Ip'].'
IpLocation:'.$data['IpLocation'].'
+
+
 
+
More
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
iLang:'.$data['iLang'].'
mailto: + '.$data['mailto'].' +
navigator_language:'.$data['navigator_language'].'
navigator_platform:'.$data['navigator_platform'].'
screen_width:'.$data['screen_width'].'
screen_height:'.$data['screen_height'].'
uCountry:'.$data['uCountry'].'
+
+ +
+ + '; + +// $email = new Email(); + //return $email->send($data['mailto'], 'Inquiry_Of_'.$data['Name'], $html); + return \app\common\utils\email\MailSend::send($data['mailto'], 'Inquiry_Of_'.$data['Name'], $html); + } +} \ No newline at end of file diff --git a/app/common/logic/InquiryTransmitConfigLogic.php b/app/common/logic/InquiryTransmitConfigLogic.php new file mode 100644 index 0000000..3c6782d --- /dev/null +++ b/app/common/logic/InquiryTransmitConfigLogic.php @@ -0,0 +1,17 @@ +validator; + } +} \ No newline at end of file diff --git a/app/common/service/InquiryTransmitService.php b/app/common/service/InquiryTransmitService.php new file mode 100644 index 0000000..a046056 --- /dev/null +++ b/app/common/service/InquiryTransmitService.php @@ -0,0 +1,31 @@ +validator; + } +} \ No newline at end of file diff --git a/app/common/validate/InquiryTransmitConfigValidate.php b/app/common/validate/InquiryTransmitConfigValidate.php new file mode 100644 index 0000000..f80ec8d --- /dev/null +++ b/app/common/validate/InquiryTransmitConfigValidate.php @@ -0,0 +1,29 @@ + [ + + ], + + 'update' => [ + + ] + ]; +} \ No newline at end of file diff --git a/app/common/validate/InquiryTransmitValidate.php b/app/common/validate/InquiryTransmitValidate.php new file mode 100644 index 0000000..58c120a --- /dev/null +++ b/app/common/validate/InquiryTransmitValidate.php @@ -0,0 +1,29 @@ + [ + + ], + + 'update' => [ + + ] + ]; +} \ No newline at end of file diff --git a/composer.json b/composer.json index 7ff8ace..693315e 100644 --- a/composer.json +++ b/composer.json @@ -47,7 +47,8 @@ "phpmailer/phpmailer": "^6.10", "webman/gateway-worker": "^1.0", "mpdf/mpdf": "^8.2", - "jaeger/querylist": "^4.4" + "jaeger/querylist": "^4.4", + "zoujingli/ip2region": "3.0" }, "suggest": { "ext-event": "For better performance. " diff --git a/composer.lock b/composer.lock index c3a23c9..ba35bd5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "865e38bae84e7de0c95098cc87135440", + "content-hash": "ac2fa5a625069729975d072614509e1f", "packages": [ { "name": "aliyuncs/oss-sdk-php", @@ -6919,6 +6919,76 @@ } ], "time": "2025-06-12T13:34:04+00:00" + }, + { + "name": "zoujingli/ip2region", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/zoujingli/ip2region.git", + "reference": "fd31d7a023f28f4e2f3e63f46f1fd51f8b2672f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zoujingli/ip2region/zipball/fd31d7a023f28f4e2f3e63f46f1fd51f8b2672f6", + "reference": "fd31d7a023f28f4e2f3e63f46f1fd51f8b2672f6", + "shasum": "" + }, + "require": { + "php": ">=5.4" + }, + "suggest": { + "ext-opcache": "启用 OPcache 以获得更好的性能" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "files": [ + "ip2region.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Anyon", + "email": "zoujingli@qq.com", + "homepage": "https://thinkadmin.top" + } + ], + "description": "Ip2Region v3.0 for PHP - 企业级 IP 地理位置查询库,支持 IPv4/IPv6,分片文件管理,智能缓存,零依赖", + "homepage": "https://github.com/zoujingli/Ip2Region", + "keywords": [ + "IP", + "IP定位", + "Ip2Region", + "geoip", + "geolocation", + "ipv4", + "ipv6", + "location", + "企业级", + "分片数据库", + "压缩", + "地理位置", + "地理位置查询", + "缓存", + "高性能" + ], + "support": { + "issues": "https://github.com/zoujingli/ip2region/issues", + "source": "https://github.com/zoujingli/ip2region/tree/v3.0.0" + }, + "time": "2025-09-15T12:27:22+00:00" } ], "packages-dev": [], diff --git a/config/route.php b/config/route.php index c49f9dc..11631e4 100644 --- a/config/route.php +++ b/config/route.php @@ -194,6 +194,11 @@ Route::group('/admin', function () { Route::any('/update/sign', [app\admin\controller\UserController::class, 'updateSign']); }); + // 询单 + Route::group('/inquiry/transmit', function () { + Route::any('/form', [app\admin\controller\TransmitController::class, 'form']); + }); + // 询单 Route::group('/inquiry', function () { Route::any('/list', [app\inquiry\controller\InquiryLogController::class, 'index']); From eb4813b77b13c69a753a5535db32afbb87f944bd Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Sat, 29 Nov 2025 15:44:23 +0800 Subject: [PATCH 07/17] =?UTF-8?q?=E8=AF=A2=E5=8D=95=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/InquiryTransmitController.php | 4 ++++ config/route.php | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/admin/controller/InquiryTransmitController.php b/app/admin/controller/InquiryTransmitController.php index ee789c2..a41973b 100644 --- a/app/admin/controller/InquiryTransmitController.php +++ b/app/admin/controller/InquiryTransmitController.php @@ -11,6 +11,10 @@ class InquiryTransmitController extends BaseController { use CrudControllerTrait; + protected $noNeedLogin = ['form']; + + protected $noNeedHeaderData = ['form']; + protected $service; public function __construct() diff --git a/config/route.php b/config/route.php index 11631e4..82e2ced 100644 --- a/config/route.php +++ b/config/route.php @@ -39,6 +39,11 @@ Route::any('/upload', [app\common\controller\UploadController::class, 'uploadFil Route::any('/upload/image', [app\common\controller\UploadController::class, 'uploadImage']); Route::any('/upload/delete', [app\common\controller\UploadController::class, 'deleteFile']); +// 询单转发 +Route::group('/inquiry/transmit', function () { + Route::any('/form', [app\admin\controller\InquiryTransmitController::class, 'form']); +}); + // 公共 Route::group('/common', function () { Route::group('/auth', function () { @@ -194,11 +199,6 @@ Route::group('/admin', function () { Route::any('/update/sign', [app\admin\controller\UserController::class, 'updateSign']); }); - // 询单 - Route::group('/inquiry/transmit', function () { - Route::any('/form', [app\admin\controller\TransmitController::class, 'form']); - }); - // 询单 Route::group('/inquiry', function () { Route::any('/list', [app\inquiry\controller\InquiryLogController::class, 'index']); From 1e3756030108599747052bad9b36769d63a4dfc7 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Sat, 29 Nov 2025 15:46:11 +0800 Subject: [PATCH 08/17] =?UTF-8?q?=E8=AF=A2=E5=8D=95=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/InquiryTransmitController.php | 4 ++++ config/route.php | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/admin/controller/InquiryTransmitController.php b/app/admin/controller/InquiryTransmitController.php index ee789c2..a41973b 100644 --- a/app/admin/controller/InquiryTransmitController.php +++ b/app/admin/controller/InquiryTransmitController.php @@ -11,6 +11,10 @@ class InquiryTransmitController extends BaseController { use CrudControllerTrait; + protected $noNeedLogin = ['form']; + + protected $noNeedHeaderData = ['form']; + protected $service; public function __construct() diff --git a/config/route.php b/config/route.php index 11631e4..82e2ced 100644 --- a/config/route.php +++ b/config/route.php @@ -39,6 +39,11 @@ Route::any('/upload', [app\common\controller\UploadController::class, 'uploadFil Route::any('/upload/image', [app\common\controller\UploadController::class, 'uploadImage']); Route::any('/upload/delete', [app\common\controller\UploadController::class, 'deleteFile']); +// 询单转发 +Route::group('/inquiry/transmit', function () { + Route::any('/form', [app\admin\controller\InquiryTransmitController::class, 'form']); +}); + // 公共 Route::group('/common', function () { Route::group('/auth', function () { @@ -194,11 +199,6 @@ Route::group('/admin', function () { Route::any('/update/sign', [app\admin\controller\UserController::class, 'updateSign']); }); - // 询单 - Route::group('/inquiry/transmit', function () { - Route::any('/form', [app\admin\controller\TransmitController::class, 'form']); - }); - // 询单 Route::group('/inquiry', function () { Route::any('/list', [app\inquiry\controller\InquiryLogController::class, 'index']); From 69979477178f764a2e980a1659594b0dc5cce824 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Sat, 29 Nov 2025 15:51:34 +0800 Subject: [PATCH 09/17] =?UTF-8?q?=E8=AF=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/InquiryTransmitController.php | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/app/admin/controller/InquiryTransmitController.php b/app/admin/controller/InquiryTransmitController.php index a41973b..02f32fc 100644 --- a/app/admin/controller/InquiryTransmitController.php +++ b/app/admin/controller/InquiryTransmitController.php @@ -40,18 +40,13 @@ class InquiryTransmitController extends BaseController // } - public function form(Request $request, int $id) + public function form(Request $request) { try { $params = $request->all(); - if ($id == 1) { - $mailto = '1696136552@qq.com'; - $fromDomain = 'magicbridgeauto.com'; - } else { - $mailto = '1696136552@qq.com'; - $fromDomain = 'magicbridgeauto.com'; - } + $mailto = '1696136552@qq.com'; + $fromDomain = 'magicbridgeauto.com'; if ($request->method() == 'GET') { $config = [ From 22ba33125ab06ce4412e89255c4860b6f35acf63 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Sat, 29 Nov 2025 15:55:48 +0800 Subject: [PATCH 10/17] =?UTF-8?q?=E8=AF=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/InquiryTransmitController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/admin/controller/InquiryTransmitController.php b/app/admin/controller/InquiryTransmitController.php index 02f32fc..8e59cd1 100644 --- a/app/admin/controller/InquiryTransmitController.php +++ b/app/admin/controller/InquiryTransmitController.php @@ -52,7 +52,7 @@ class InquiryTransmitController extends BaseController $config = [ 'iLang' => 'en', 'Act' => 'Inquiry', - 'post_url' => getenv('MAIN_DOMAIN').'/form'.'?m=Data&a=save', + 'post_url' => getenv('MAIN_DOMAIN').'/inquiry/transmit/form'.'?m=Data&a=save', 'mailto' => $mailto, 'fromDomain' => $fromDomain, 'fromPath' => parse_url($params['fromlink'], PHP_URL_PATH), From af8577064d1622b67805870cdf61a5a167494776 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Sat, 29 Nov 2025 16:13:53 +0800 Subject: [PATCH 11/17] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=AF=BB=E7=9B=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/InquiryTransmitController.php | 5 +++++ app/common/service/InquiryTransmitService.php | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/app/admin/controller/InquiryTransmitController.php b/app/admin/controller/InquiryTransmitController.php index 8e59cd1..95655df 100644 --- a/app/admin/controller/InquiryTransmitController.php +++ b/app/admin/controller/InquiryTransmitController.php @@ -2,6 +2,7 @@ namespace app\admin\controller; use app\common\controller\BaseController; +use app\common\model\InquiryTransmit; use app\common\traits\crud\CrudControllerTrait; use app\common\service\InquiryTransmitService; use support\Log; @@ -45,6 +46,8 @@ class InquiryTransmitController extends BaseController try { $params = $request->all(); + var_dump($params); + $mailto = '1696136552@qq.com'; $fromDomain = 'magicbridgeauto.com'; @@ -103,6 +106,8 @@ class InquiryTransmitController extends BaseController 'uCountry' => $params['uCountry'] ]; + $this->service->serviceStore($request, $edata); + $this->emailHtml($edata); return json([ diff --git a/app/common/service/InquiryTransmitService.php b/app/common/service/InquiryTransmitService.php index a046056..46265f9 100644 --- a/app/common/service/InquiryTransmitService.php +++ b/app/common/service/InquiryTransmitService.php @@ -5,6 +5,7 @@ namespace app\common\service; use app\common\validate\InquiryTransmitValidate; use app\common\traits\crud\CrudServiceTrait; use app\common\model\InquiryTransmit; +use support\Request; class InquiryTransmitService { @@ -28,4 +29,21 @@ class InquiryTransmitService { return new $this->validator; } + + + /** 创建 */ + public function serviceStore(Request $request, array $data = []) + { + $data['email'] = $data['Email']; + $data['name'] = $data['Name']; + $data['tel'] = $data['Tel']; + $data['company'] = $data['Company']; + $data['country'] = $data['Country']; + $data['form_Url'] = $data['Form Url']; + $data['message'] = $data['Message']; + $data['iplocation'] = $data['IpLocation']; + $data['ip'] = $data['Ip']; + + return InquiryTransmit::create($data); + } } \ No newline at end of file From 05e39d2d656b9c45180a7c45c5f5580168a66905 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Sat, 29 Nov 2025 17:50:08 +0800 Subject: [PATCH 12/17] =?UTF-8?q?=E8=AF=A2=E5=8D=95=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/InquiryTransmitController.php | 16 ++++--- .../service/InquiryTransmitConfigService.php | 36 +++++++++++++++ app/common/service/InquiryTransmitService.php | 44 ++++++++++++++++++- config/route.php | 18 ++++++++ 4 files changed, 108 insertions(+), 6 deletions(-) diff --git a/app/admin/controller/InquiryTransmitController.php b/app/admin/controller/InquiryTransmitController.php index 95655df..a3d932c 100644 --- a/app/admin/controller/InquiryTransmitController.php +++ b/app/admin/controller/InquiryTransmitController.php @@ -3,6 +3,7 @@ namespace app\admin\controller; use app\common\controller\BaseController; use app\common\model\InquiryTransmit; +use app\common\model\InquiryTransmitConfig; use app\common\traits\crud\CrudControllerTrait; use app\common\service\InquiryTransmitService; use support\Log; @@ -45,11 +46,16 @@ class InquiryTransmitController extends BaseController { try { $params = $request->all(); - - var_dump($params); - - $mailto = '1696136552@qq.com'; - $fromDomain = 'magicbridgeauto.com'; + $url = $request->header('referer'); + $domain = parse_url($url, PHP_URL_HOST); + $transmitConfig = InquiryTransmitConfig::where('domain', $domain)->first(); + if ($transmitConfig) { + $mailto = $transmitConfig->mailto; + $fromDomain = $domain; + } else { + $mailto = '1696136552@qq.com'; + $fromDomain = 'referer Failed to obtain'; + } if ($request->method() == 'GET') { $config = [ diff --git a/app/common/service/InquiryTransmitConfigService.php b/app/common/service/InquiryTransmitConfigService.php index c0e915a..930124a 100644 --- a/app/common/service/InquiryTransmitConfigService.php +++ b/app/common/service/InquiryTransmitConfigService.php @@ -5,6 +5,7 @@ namespace app\common\service; use app\common\validate\InquiryTransmitConfigValidate; use app\common\traits\crud\CrudServiceTrait; use app\common\model\InquiryTransmitConfig; +use support\Request; class InquiryTransmitConfigService { @@ -28,4 +29,39 @@ class InquiryTransmitConfigService { return new $this->validator; } + + /** + * 构造 CrudUtil 查询配置 + */ + protected function buildQueryConfig(Request $request, string $scene = 'default'): array + { + $p = $request->all(); + + $config = []; + $config['model'] = $this->modelClass; + switch ($scene) { + case 'default': + $config['where']['status'] = 1; + $config['order']['id'] = 'desc'; + break; + case 'index': + $config['where']['status'] = 1; + $config['order']['id'] = 'desc'; + break; + case 'show': + $config['where']['id'] = $p['id']; + $config['where']['status'] = 1; + break; + case 'store': + break; + case 'update': + $config['where']['id'] = $p['id']; + break; + case 'destroy': + $config['where']['id'] = $p['id']; + break; + } + + return $config; + } } \ No newline at end of file diff --git a/app/common/service/InquiryTransmitService.php b/app/common/service/InquiryTransmitService.php index 46265f9..4563dc7 100644 --- a/app/common/service/InquiryTransmitService.php +++ b/app/common/service/InquiryTransmitService.php @@ -30,7 +30,6 @@ class InquiryTransmitService return new $this->validator; } - /** 创建 */ public function serviceStore(Request $request, array $data = []) { @@ -46,4 +45,47 @@ class InquiryTransmitService return InquiryTransmit::create($data); } + + /** + * 构造 CrudUtil 查询配置 + */ + protected function buildQueryConfig(Request $request, string $scene = 'default'): array + { + $p = $request->all(); + + $config = []; + $config['model'] = $this->modelClass; + switch ($scene) { + case 'default': + $config['order']['id'] = 'desc'; + break; + case 'index': + // 域名 + if (isset($p['domain']) && !empty($p['domain'])) { + $config['where']['domain'] = $p['domain']; + } + // 关键字 + if (isset($p['keyword']) && $p['keyword']) { + $k = '%' . $p['keyword'] . '%'; + foreach (['email', 'name', 'tel', 'country', 'message', 'form_url'] as $col) { + $config['orWhere'][] = [$col, 'like', $k]; + } + } + $config['order']['id'] = 'desc'; + break; + case 'show': + $config['where']['id'] = $p['id']; + break; + case 'store': + break; + case 'update': + $config['where']['id'] = $p['id']; + break; + case 'destroy': + $config['where']['id'] = $p['id']; + break; + } + + return $config; + } } \ No newline at end of file diff --git a/config/route.php b/config/route.php index 82e2ced..7b092f3 100644 --- a/config/route.php +++ b/config/route.php @@ -220,6 +220,24 @@ Route::group('/admin', function () { }); }); + // 询单转发 + Route::group('/inquiry', function () { + Route::group('/transmit', function () { + Route::any('/list', [app\admin\controller\InquiryTransmitController::class, 'index']); + Route::any('/show', [app\admin\controller\InquiryTransmitController::class, 'show']); + Route::any('/store', [app\admin\controller\InquiryTransmitController::class, 'store']); + Route::any('/update', [app\admin\controller\InquiryTransmitController::class, 'update']); + Route::any('/destroy', [app\admin\controller\InquiryTransmitController::class, 'destroy']); + }); + Route::group('/config', function () { + Route::any('/list', [app\admin\controller\InquiryTransmitConfigController::class, 'index']); + Route::any('/show', [app\admin\controller\InquiryTransmitConfigController::class, 'show']); + Route::any('/store', [app\admin\controller\InquiryTransmitConfigController::class, 'store']); + Route::any('/update', [app\admin\controller\InquiryTransmitConfigController::class, 'update']); + Route::any('/destroy', [app\admin\controller\InquiryTransmitConfigController::class, 'destroy']); + }); + }); + // crm Route::group('/crm', function () { Route::group('/customer', function () { From bf74d9b9178df586683c6a180013e52b3eb57426 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Mon, 1 Dec 2025 17:48:44 +0800 Subject: [PATCH 13/17] =?UTF-8?q?=E8=AF=A2=E5=8D=95=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/InquiryTransmitController.php | 2 +- app/common/service/InquiryTransmitService.php | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/admin/controller/InquiryTransmitController.php b/app/admin/controller/InquiryTransmitController.php index a3d932c..a0bdc6b 100644 --- a/app/admin/controller/InquiryTransmitController.php +++ b/app/admin/controller/InquiryTransmitController.php @@ -112,7 +112,7 @@ class InquiryTransmitController extends BaseController 'uCountry' => $params['uCountry'] ]; - $this->service->serviceStore($request, $edata); + $this->service->serviceStore($request, $edata, $domain); $this->emailHtml($edata); diff --git a/app/common/service/InquiryTransmitService.php b/app/common/service/InquiryTransmitService.php index 4563dc7..7b0fed4 100644 --- a/app/common/service/InquiryTransmitService.php +++ b/app/common/service/InquiryTransmitService.php @@ -31,7 +31,7 @@ class InquiryTransmitService } /** 创建 */ - public function serviceStore(Request $request, array $data = []) + public function serviceStore(Request $request, array $data = [], string $domain = '') { $data['email'] = $data['Email']; $data['name'] = $data['Name']; @@ -40,8 +40,9 @@ class InquiryTransmitService $data['country'] = $data['Country']; $data['form_Url'] = $data['Form Url']; $data['message'] = $data['Message']; - $data['iplocation'] = $data['IpLocation']; + $data['ip_location'] = $data['IpLocation']; $data['ip'] = $data['Ip']; + $data['domain'] = $domain; return InquiryTransmit::create($data); } From db7c8a650b2006880f07180a924fa53b71f86c56 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Mon, 1 Dec 2025 17:51:16 +0800 Subject: [PATCH 14/17] =?UTF-8?q?=E8=AF=A2=E5=8D=95=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/InquiryTransmitController.php | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/app/admin/controller/InquiryTransmitController.php b/app/admin/controller/InquiryTransmitController.php index a0bdc6b..f4ac093 100644 --- a/app/admin/controller/InquiryTransmitController.php +++ b/app/admin/controller/InquiryTransmitController.php @@ -78,13 +78,14 @@ class InquiryTransmitController extends BaseController 'en-3-P-vdx' => $this->formHmtl2($config) }; - return json([ - 'code' => 200, - 'data' => [ - 'html' => $html - ], - 'message' => 'success' - ]); + return $this->success(['html' => $html], 'success'); +// return json([ +// 'code' => 200, +// 'data' => [ +// 'html' => $html +// ], +// 'message' => 'success' +// ]); } if ($request->method() == 'POST') { @@ -116,11 +117,12 @@ class InquiryTransmitController extends BaseController $this->emailHtml($edata); - return json([ - 'code' => 200, - 'data' => [], - 'message' => 'Thank you for your message! We will contact with you soon.' - ]); + return $this->success([], 'Thank you for your message! We will contact with you soon.'); +// return json([ +// 'code' => 200, +// 'data' => [], +// 'message' => 'Thank you for your message! We will contact with you soon.' +// ]); } } catch (\Throwable $th) { Log::info('Data:'.date('Y-m-d H:i:s').':'.$th->getMessage().'|'.$th->getLine().'|'.$th->getFile()); From fe78500ef0bd747b5a7389df684cad9b0869291f Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Mon, 1 Dec 2025 18:15:53 +0800 Subject: [PATCH 15/17] =?UTF-8?q?=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/model/InquiryTransmit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/common/model/InquiryTransmit.php b/app/common/model/InquiryTransmit.php index cc6f3fc..b02048d 100644 --- a/app/common/model/InquiryTransmit.php +++ b/app/common/model/InquiryTransmit.php @@ -40,7 +40,7 @@ class InquiryTransmit extends Model /** * 允许自动填充模型字段 */ - protected $fillable = ['id', 'date', 'email', 'name', 'tel', 'company', 'country', 'form_url', 'message', 'ip', 'ip_location', 'ilang', 'mailto', 'navigator_language', 'navigator_platform', 'screen_width', 'screen_height', 'uCountry', 'created_at', 'updated_at']; + protected $fillable = ['id', 'date', 'email', 'name', 'tel', 'company', 'country', 'domain', 'form_url', 'message', 'ip', 'ip_location', 'ilang', 'mailto', 'navigator_language', 'navigator_platform', 'screen_width', 'screen_height', 'uCountry', 'created_at', 'updated_at']; /** * 不允许自动填充模型字段 From 80d458a8b0f76ad009f5de4ceffdf4fc87dde3be Mon Sep 17 00:00:00 2001 From: mzl Date: Tue, 2 Dec 2025 01:58:54 +0000 Subject: [PATCH 16/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E8=BD=AC=E5=8F=91=E6=8E=A5=E6=94=B6=E4=BA=BA=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/utils/email/Emails.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/common/utils/email/Emails.php b/app/common/utils/email/Emails.php index 0742274..b3caca8 100644 --- a/app/common/utils/email/Emails.php +++ b/app/common/utils/email/Emails.php @@ -434,9 +434,12 @@ class Emails $channel = 12; $channelInfo = InquiryChannel::where('id', $channel)->first(); + // 从库实时获取 + $users = \app\common\model\User::where('corp_id', 3)->where('status', 1)->orderBy('id')->pluck('id')->toArray(); + // 初始化 UID 轮询器 $uidRotator = new \app\common\utils\RedisUidRotator('email_parsed_result_20250804'); - $uidRotator->setUids([64, 63, 93, 108, 132, 145, 150, 143, 156, 157, 158], false); + $uidRotator->setUids($users, false); EmailParsedResult::where('status', 0) ->chunkById($batchSize, function ($records) use ($delaySeconds, $throttleAfter, $throttleSeconds, $enterUser, $channelInfo, $uidRotator) { From f1826843784b3ef45063ef8068b1d03abf1ef3e7 Mon Sep 17 00:00:00 2001 From: mzl Date: Tue, 2 Dec 2025 14:15:09 +0800 Subject: [PATCH 17/17] Merge branch 'master' into develop --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c08e119..92bf9b0 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ /webman /start.php /windows.php -/bootstrap.php \ No newline at end of file +/bootstrap.php +/composer.lock