From 9e939763fd981d21e407643d44456c42b7efed4d Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Fri, 18 Apr 2025 14:35:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=81=94=E7=B3=BB=E6=88=91=E4=BB=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/index/controller/ContactUs.php | 99 ++++++++++++++++ app/index/lang/en-us.php | 24 ++++ app/index/lang/zh-cn.php | 24 ++++ app/index/model/LeaveMessageModel.php | 15 +++ app/index/route/route.php | 13 +++ app/index/validate/ContactUsValidate.php | 37 ++++++ app/index/view/contact_us/distributor.html | 0 app/index/view/contact_us/index.html | 0 app/index/view/contact_us/message.html | 108 ++++++++++++++++++ public/static/index/css/contact.css | 5 +- public/static/index/images/ContactUs.png | Bin 0 -> 1390078 bytes public/static/index/images/contact_icon01.png | Bin 0 -> 1456 bytes public/static/index/images/contact_icon02.png | Bin 0 -> 1323 bytes public/static/index/images/contact_icon03.png | Bin 0 -> 1388 bytes 14 files changed, 323 insertions(+), 2 deletions(-) create mode 100644 app/index/controller/ContactUs.php create mode 100644 app/index/model/LeaveMessageModel.php create mode 100644 app/index/validate/ContactUsValidate.php create mode 100644 app/index/view/contact_us/distributor.html create mode 100644 app/index/view/contact_us/index.html create mode 100644 app/index/view/contact_us/message.html create mode 100755 public/static/index/images/ContactUs.png create mode 100755 public/static/index/images/contact_icon01.png create mode 100755 public/static/index/images/contact_icon02.png create mode 100755 public/static/index/images/contact_icon03.png diff --git a/app/index/controller/ContactUs.php b/app/index/controller/ContactUs.php new file mode 100644 index 00000000..56a3e8ec --- /dev/null +++ b/app/index/controller/ContactUs.php @@ -0,0 +1,99 @@ +isPost()) { + // 提交留言处理 + $form_data = request()->post([ + 'name', + 'email', + 'content' + ]); + + // 数据校验 + $validate = new ContactUsValidate; + if (!$validate->check($form_data)) { + return error($validate->getError()); + } + + // 保存留言 + $msg = LeaveMessageModel::create([ + 'language_id' => $this->lang_id, + 'name' => $form_data['name'], + 'email' => $form_data['email'], + 'content' => $form_data['content'], + 'ip' => request()->ip(), + 'user_agent' => request()->header('user-agent'), + ]); + if ($msg->isEmpty()) { + return error(lang('contact_message.send_fail')); + } + + return success(lang('contact_message.send_success')); + } + + $focus_image = []; + $our_information = []; + // 获取我的信息banner + $banner = SysBannerModel::with(['items' => function($query) { + $query->withoutField(['status', 'created_at', 'updated_at', 'deleted_at']) + ->where('status', '=', 1) + ->order(['sort' => 'asc', 'id' => 'desc']); + }]) + ->uniqueLabel([ + 'BANNER_6801be1e7d686', + 'BANNER_6801c053ce12e', + ]) + ->language($this->lang_id) + ->enabled(true) + ->select(); + if (!$banner->isEmpty()) { + $banner_map = []; + foreach ($banner as $v) { + $banner_map[$v->unique_label] = $v; + } + $focus_image = data_get($banner_map, 'BANNER_6801be1e7d686')?->items->first()?->toArray(); + $our_information = data_get($banner_map, 'BANNER_6801c053ce12e')?->items->toArray(); + } + View::assign('focus_image', $focus_image); + View::assign('our_information', $our_information); + + return View::fetch('message'); + } + + /** + * 留言成为分销商 + */ + public function distributor() + { + if (request()->isPost()) { + // 提交留言处理 + } + + return View::fetch('distributor'); + } +} diff --git a/app/index/lang/en-us.php b/app/index/lang/en-us.php index b4d3c7dd..1f212294 100644 --- a/app/index/lang/en-us.php +++ b/app/index/lang/en-us.php @@ -46,4 +46,28 @@ return [ 'events' => 'Brand Events', 'development' => 'Tech Development', ], + 'contact_message' => [ + 'title' => 'contact us', + 'our_information' => 'Our Information', + 'send_question' => 'Send Us Your Question', + 'form_name' => 'Yuor Name', + 'form_name_placeholder' => 'This is your placeholder text', + 'form_email' => 'Your Email', + 'form_email_placeholder' => 'This is your placeholder text', + 'form_question' => 'Your Message', + 'form_question_placeholder' => 'This is your placeholder text', + 'form_submit' => 'SEND', + 'become_a_distributor' => 'Become a Distributor', + // 验证器中文本 + 'validate_name_required' => 'Name is required', + 'validate_name_max' => 'Name cannot exceed 64 characters', + 'validate_email_required' => 'Email is required', + 'validate_email_email' => 'Email format is incorrect', + 'validate_email_max' => 'Email cannot exceed 128 characters', + 'validate_content_required' => 'Message is required', + 'validate_content_max' => 'Message cannot exceed 1024 characters', + // 返回文本 + 'send_success' => 'success', + 'send_fail' => 'fail', + ], ]; \ No newline at end of file diff --git a/app/index/lang/zh-cn.php b/app/index/lang/zh-cn.php index 7d05af86..646b714d 100644 --- a/app/index/lang/zh-cn.php +++ b/app/index/lang/zh-cn.php @@ -46,4 +46,28 @@ return [ 'events' => '品牌里程', 'development' => '品牌活动', ], + 'contact_message' => [ + 'title' => '联系我们', + 'our_information' => '我们的信息', + 'send_question' => '提交您的问题', + 'form_name' => '姓名', + 'form_name_placeholder' => '请输入你的姓名', + 'form_email' => '电子邮箱', + 'form_email_placeholder' => '请输入你的邮箱', + 'form_question' => '您的问题', + 'form_question_placeholder' => '请输入你的问题', + 'form_submit' => '发送', + 'become_a_distributor' => '成为经销商', + // 验证器中文本 + 'validate_name_required' => '姓名不能为空', + 'validate_name_max' => '姓名不能超过64个字符', + 'validate_email_required' => '邮箱不能为空', + 'validate_email_email' => '邮箱格式不正确', + 'validate_email_max' => '邮箱不能超过128个字符', + 'validate_content_required' => '问题不能为空', + 'validate_content_max' => '问题不能超过1024个字符', + // 返回文本 + 'send_success' => '提交成功', + 'send_fail' => '提交失败', + ], ]; \ No newline at end of file diff --git a/app/index/model/LeaveMessageModel.php b/app/index/model/LeaveMessageModel.php new file mode 100644 index 00000000..6077b52f --- /dev/null +++ b/app/index/model/LeaveMessageModel.php @@ -0,0 +1,15 @@ + ['规则1','规则2'...] + * + * @var array + */ + protected $rule = [ + 'name' => 'require|max:64', + 'email' => 'require|email|max:128', + 'content' => 'require|max:1024' + ]; + + /** + * 定义错误信息 + * 格式:'字段名.规则名' => '错误信息' + * + * @var array + */ + protected $message = [ + 'name.require' => 'contact_message.validate_name_required', + 'name.max' => 'contact_message.validate_name_max', + 'email.require' => 'contact_message.validate_email_required', + 'email.email' => 'contact_message.validate_email_email', + 'email.max' => 'contact_message.validate_email_max', + 'content.require' => 'contact_message.validate_content_required', + 'content.max' => 'contact_message.validate_content_max' + ]; +} diff --git a/app/index/view/contact_us/distributor.html b/app/index/view/contact_us/distributor.html new file mode 100644 index 00000000..e69de29b diff --git a/app/index/view/contact_us/index.html b/app/index/view/contact_us/index.html new file mode 100644 index 00000000..e69de29b diff --git a/app/index/view/contact_us/message.html b/app/index/view/contact_us/message.html new file mode 100644 index 00000000..ef7d48ff --- /dev/null +++ b/app/index/view/contact_us/message.html @@ -0,0 +1,108 @@ +{extend name="public/base" /} +{block name="title"}
j9oH}Nz&=cVhk}=cLfi< 02+#?(mUHk(lR&np~Wm6>=31cps
zmHbg3$!8IxqM>*vRjahEm9SN-2UQpnm`dNq07qD%%VHbq1SW9{l?E=|*g&OT6*Y7w
z9yW;Gp=sGiB`8J{>XN|#m-i~TxxI&=Z-B-51t1vFJnEIQDUPu~G6b5CZk7_7WP6`b
z2+?>9>+9=^dr0Sy>BIuXnHD>y?-J*E-}(E+j`;M2X9Tt**v(MKn$|shw*0wgX%(+}
z_y3Be7d?Phx%xjBx8n)y>j5mllk)%v?#BJ(4stD~eSat4z(LoT_5IzR|HRfa24ndB
zA+-HLbT0fE5 Dc~>RdTANS7O&MQYK>o
zVwx<(m>3&Zf^uPbNl8&tIAYcUeE=p}nD8lENoD%wY>C5m3?Ki#@55jJ8$XX5*JnkT
zU7Ed$a4;aua&&xBq>^g6EM+yuGHmg-xU`IOS7x!Wx+W4Q6g9=9zfi^Bu~)&aMDHXmajJxO(5ZD{^I2PQ(kw7cfc9ak6xzi>#X;B|RtO
z4aQKl?9P!+&^cDp$<_OGoba1ww<9|r-MGc=z()M
zf8QA_=jPzIT0JqAWx!~rRSg5cOyG$UR#iNv-GzW?WJ{vnu&7||#0ZTg_4qZ^Bl5|a
za58(6>DA0+EUWfN{m#SayBkV+vITUdLm0Oa`-qP=SOx2wJGgxH8m?|`qs=xsq=OBx
zbxuTjgRvO;VoV6LrsxfC`X)T`g4d&5%v<`+09Qm+>FAv@y`pt;{movZZW)}tmL{pg
zr^$@DzSnv;-%Qh8lh^)I%WG&DRswiCNebwY7_APLtOG^wt{gD?$={Vr-qxU^UMDs2
z-#iUpz=vZme?-g%jBzCwa(M3dKa7w6@^4~pbrrExQZ@kneip9uhkeBiSt*;%W=(Y}
ztEZw7+45xLqfJ0IF(zavQxsPED7H+SmUA8L;{>BJF-$h2TskF|pOsu%G0|))DgPx*
zMkH3@u@aD=53!CgPG~B1DfGOKodhOh*%QxQ!mXWMtS&8zKAL_NZJ#R}JGivIgL18k
zmAN!t^1xXoy_saSfpbhek^J=w*EbcTJ+-ueYNw0!tsOBfk!6XjX=GAk42XbU71~tG
z@@W_|Ili*0LKZSNZtv_UvCQ=$_Lg$V^gL$5iuOn-q)KWs6Ds+m_K${1k@|?wLh)Nx
zCw6;y`M13ji;tc~0F6L$zpGrEfI8jQVz|pEeJRCy*5UvFAOJ~3K~!bp$Q01FDPya@
zX{OIzenz)7{83Cd_XTFTN{(X>`|ijV(Dnt;d+tLB?_GjFK%YIVcm($wn>v|ET*V-)
zc2TTa5qk&OIxU*Oku}3YHUUHo%NTtRwTYk|*6T?x(C%l8N+xmb>R;*y+WutrAjq9^
zx4E^ALZyO@ojtS&j04|sOczP=?K$b}WdfkI#Ui%Vt_IK|0I4!zm--FljUhmC37ut8)
z)h(F|vY&W3h+q1-AI1}pe-cZ}$My6G?lkOS>~&{)hKrGim1tHnr{1V3;X|KbB@@F7
zAAA7k&)y5ajtgr~W`{ri&b>KA`+&ZVs`N
?IT{RngK@Zi#sB5~vzaXdaD54TIhQkys3gXhhV^E6eOt9z!-6
z$6_uc`+xx!o<}Am`U8}EL%%jq|GjdphGMm0f-!ye*Nb3r`IrUnB*kJ4`ORDCwAfOH
z38|3gluT#T%QTgqLvDT^?|=Vq;&=Y|L&zOlRkB7bObkq0{rh
-+K=K
z{u{m(bHNBI@>!fhe$;g|v8%Wuj_!3hZC%c~zI#J-uAYO|;X!iXUek9*UR43y>*C4C
z0vgFBgcQv3)=u6Pv4^o}+|R*OeY2M@gY-eay}@&THsAwO8BE{FRHJg=B%rC%Y~rz%
z1|C}`bB+(0`HTQfomv$=Ci;dzi@`@9@c0IBs~ATj!n+h~YDyyTu%3_;(C_tby~Z)m
z$BMu>VlqZ)n|;WtPPQs)v-3;1eCZ4L#h?9GdKGMCMKCvge)X#i1mru{>J6lmDFLzx
zMCHEE!0B8%gH*_mmp%3%9=z{7Qt>E;-7d13v~&W2X#{Hoe5T@<%mk!zH*pqD$fk;C
zeu>ZB>i=tpkmN!cpf(f1YN@4)2tyyQ%0Dud@MVxqMD~P94pFDrt)x^LL_jLR@=Wfx
zd+2ui@CE&-G+L X3P><5Op_bKm9+BKNYac#PW3*z%|EZk%0n%9oQd(G`Z$FH&P<hVk2KL>nxj6l@6UaIz0JO9TUkG{@LI807k}=D6r(>7JuB&$oY5IeBXydzMtoQ
zi^J}GZQ$`cPV{E2*I+Dw%0dl!_5fyYE$->=gq2(3*xt*#u}8DT+k3pdj;+r)_h`N3
z3MO{lQ)iH4zuB)s*SbM=GOH`8<&`vc9Ft>lCbD%X4_`?y+1F#+RqJ{?zLxcO#7~(Y
zKmNhvui*DzyoBu%6D&sRm@=3ILr)z&sy%Q$mp95B3`~k!R=+0$Xp(TH3N==%Y&X^a
zH=9fdkewVI#Yo!7#Ph!>0TK4;VlS;oR8__#Ur6d1K1n1~wvE06fm!-KB2D@EcZgAo
z)~ggUlpr>JIVrE&ao{Wluie{=H$*-7EPs&T3nvg2IND_COV+inWMR8$7_yRp7GcGx
zAXI8qjgJ9gv0TFSg%!Md=`vowbP;n*0B;tsK_FVyf(HDhzd~tAj&D4bz`>~rtmQT(
z;WRxpiS1e$o28nri+&ROsUM#lMzy?&58ibOfBwu}ST7bk?Lc
^>}>_SUi+?>!{I!i_qpHL
zdUe~0Uf1K^vw`jkVD^#kHP+p)|8d54gN*9U9?z{FpHnxQN#p7tJ&AL_^%Ydw+o&)Z
z!6J`FQ%MP8og|5HJ=2H3e)9%q4jfdU-s|&o+K*W@L4vwe2dh;h{VrM5wyD6gk|+;7
z{3uSIIw_k#>G2*Bz*kgF_pZfrA&fUa;se`zD>2-YTYk!C{
zXU^dJzVAbrnx0l$2PRFqm}alv#8