From 2c765b3d1dcb30c5d41b61da27777a11eb873c5d Mon Sep 17 00:00:00 2001 From: xiaodong Date: Tue, 21 Jul 2026 17:01:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/frontend/InquiryController.php | 53 ++++++++++++++++++++++ app/controller/frontend/SearchController.php | 2 +- app/validate/frontend/InquiryValidate.php | 27 ++++++----- .../website/1/zh/dongya-web/a_contact_us.html | 23 +++++----- .../themes/website/1/zh/dongya-web/common/nav.html | 4 +- .../website/1/zh/dongya-web/single_search.html | 36 ++------------- 6 files changed, 85 insertions(+), 60 deletions(-) diff --git a/app/controller/frontend/InquiryController.php b/app/controller/frontend/InquiryController.php index 5a69c38..2b7a109 100644 --- a/app/controller/frontend/InquiryController.php +++ b/app/controller/frontend/InquiryController.php @@ -102,4 +102,57 @@ class InquiryController extends BaseController return json($res); } + // 保存投诉与建议 + public function saveSuggestion(): \think\Response + { + // 获取用户的 IP 地址或其他标识 + $identifier = request()->ip(); + + // 设置限制时间窗口(例如:1分钟) + $window = 60; + + // 设置允许的最大请求数 + $maxRequests = 5; + + // 生成存储请求计数的缓存键 + $cacheKey = 'request_rate_limit:' . $identifier; + + // 获取当前时间内已发送的请求次数 + $requestCount = (int)Cache::get($cacheKey,0); + + // 如果请求次数超过限制,则返回错误响应 + if ($requestCount >= $maxRequests) { + return json(['status' => 'error', 'message' => '请求频率过高,请稍后再试']); + } + // 增加请求计数 + Cache::set($cacheKey,$requestCount + 1, $window); + + $param = request()->param(); + if(empty($param)){ + return jsonReturn(-1,lang('请填写询盘信息')); + } + try{ + validate(InquiryValidate::class)->check($param); + }catch (ValidateException $e){ + return jsonReturn(-1, $e->getError()); + } + // 获取询盘收件箱 + // $webSite = new Website(); + // $site = $webSite->getWebsite(['domain' => $this->domain],['inquiryEmail'])['data']->toArray(); + // $email = []; + // if(!empty($site['inquiryEmail'])){ + // $email = array_column($site['inquiryEmail'],'email'); + // } + $inquiry = new Inquiry(); + $param['seller_id'] = $this->sellerId; + $param['website_id'] = $this->siteId; + $param['ip'] = request()->ip(); + $param['inquiry_type'] = 1; + $res = $inquiry -> addInquiry($param); + + // return jsonReturn(0,lang('提交成功'),1); + + return json($res); + } + } diff --git a/app/controller/frontend/SearchController.php b/app/controller/frontend/SearchController.php index 04f93c8..bd6fce0 100644 --- a/app/controller/frontend/SearchController.php +++ b/app/controller/frontend/SearchController.php @@ -75,7 +75,7 @@ class SearchController extends BaseController ->order('id','desc') ->paginate([ 'page' => $param['page'] ?? 1, - 'list_rows' => $param['limit'] ?? 2, + 'list_rows' => $param['limit'] ?? 10, ]) ->each(function (&$item)use($param){ if(!empty($item['category'])) { diff --git a/app/validate/frontend/InquiryValidate.php b/app/validate/frontend/InquiryValidate.php index cfa9084..d54ebd5 100644 --- a/app/validate/frontend/InquiryValidate.php +++ b/app/validate/frontend/InquiryValidate.php @@ -7,24 +7,27 @@ use think\Validate; class InquiryValidate extends Validate { protected $rule = [ - 'phone|手机号' => 'require|mobile', - 'email|邮箱' => 'email|max:80', - 'company_name|公司名称' => 'max:255', + 'content|' => 'max:255', // 主题 'contacts_name|联系人名称' => 'require|max:255', - 'content|' => 'max:255', - 'form_source|' => 'require' + 'email|邮箱' => 'email|max:80', + 'phone|手机号' => 'require|mobile', + 'company_address|地址' => 'max:255', + 'explain|投诉内容' => 'require', + + ]; protected $message = [ - 'phone.require' => '手机号不能为空', - 'phone.mobile' => '手机号格式错误', - 'email.email' => '邮箱格式错误', - 'email.max' => '邮箱账号长度不能超过128个字', + 'content.max' => '主题内容长度不能超过128个字', // 主题 'contacts_name.require' => '联系人名称不能为空', - 'company_name.max' => '公司名称长度不能超过128个字', 'contacts_name.max' => '联系人名称长度不能超过128个字', - 'content.max' => '询盘内容长度不能超过128个字', - 'form_source.require' => '询盘提交来源不能唯恐', + 'email.email' => '邮箱格式错误', + 'email.max' => '邮箱账号长度不能超过128个字', + 'phone.require' => '手机号不能为空', + 'phone.mobile' => '手机号格式错误', + 'company_address.max' => '地址长度不能超过128个字', + 'explain.require' => '投诉内容不能为空', + ]; } diff --git a/public/themes/website/1/zh/dongya-web/a_contact_us.html b/public/themes/website/1/zh/dongya-web/a_contact_us.html index 5ef3709..f1f1a6f 100644 --- a/public/themes/website/1/zh/dongya-web/a_contact_us.html +++ b/public/themes/website/1/zh/dongya-web/a_contact_us.html @@ -175,12 +175,12 @@