ソースを参照

[智价云] 官网留言客户端端新增&发送短信

tangyuanwang 1 週間 前
コミット
45cc0cec99

+ 85 - 0
app/Http/Controllers/Api/Website/LeadMessage.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace App\Http\Controllers\Api\Website;
+
+use App\Http\Controllers\Controller;
+use App\Http\Requests\Api\Website\LeadMessage as Request;
+use App\Models\Api\Website\LeadMessage as LeadMessageModel;
+use App\Facades\Servers\Sms\VerifyCode as Sms;
+use Illuminate\Support\Facades\Cache;
+
+/**
+ * 官网潜在客户留言
+ * @author: 唐远望
+ * @version: 1.0
+ * @date: 2026-03-05
+ */
+class LeadMessage extends Controller
+{
+
+
+    /**
+     * 新增
+     * @author: 唐远望
+     * @version: 1.0
+     * @date: 2026-03-05
+     */
+    public function add(Request $Request, LeadMessageModel $LeadMessageModel)
+    {
+        // 验证规则
+        $Request->scene('add')->validate();
+        // 接收数据
+        $code    =  request('code', '');
+        // 接收数据
+        $data['phone']                        = request('phone', '');
+        $data['company_name']                = request('company_name', '未知');
+        $data['position']                    = request('position', '未知');
+        $data['remarks']                    = request('remarks', '');
+        // 获取数据
+        $session    = Cache::get('LeadMessageSmsCode_' . $data['phone']);
+        if (!$session)                     return json_send(['code' => 'error', 'msg' => '请先获取手机号验证码']);
+        if ($session['code'] != $code || $session['mobile'] != $data['phone']) return json_send(['code' => 'error', 'msg' => '验证码错误']);
+        // 查询用户
+        $oldData                            = $LeadMessageModel->where([['phone', '=', $data['phone']]])->first(['id', 'phone', 'status']);
+        // 存在的话
+        if ($oldData)                      return json_send(['code' => 'success', 'msg' => '留言成功', 'data' => $oldData]);
+        // 写入表
+        $data['id']                            = $LeadMessageModel->add($data);
+        // // 失败返回
+        if (!$data['id'])                  return json_send(['code' => 'error', 'msg' => '提交失败,请重试']);
+        // 返回结果
+        return                                json_send(['code' => 'success', 'msg' => '留言成功', 'data' => '']);
+    }
+
+
+
+    /**
+     * 发送验证码
+     * @author 唐远望
+     * @version   1.0
+     * @date      2026-03-05
+     * @param string 	phone		手机号码
+     * 
+     */
+    public function send_code(Request $Request, LeadMessageModel $LeadMessageModel)
+    {
+        // 验证规则
+        $Request->scene('send_code')->validate();
+        // 接收数据
+        $mobile         = request('phone', '');
+        if (!$mobile)    return json_send(['code' => 'error', 'msg' => '请先填写手机号']);
+        // 获取数据
+        $session    = Cache::get('LeadMessageSmsCode_' . $mobile);
+        // 如果有数据,并且验证码创建的时间在一分钟之内
+        if ($session && time() - $session['create_time'] < 60) return json_send(['code' => 'error', 'msg' => '请稍后再试']);
+        // 查询用户
+        $message_log        = $LeadMessageModel->query()->where('phone', $mobile)->first(['status']);
+        if ($message_log)    return json_send(['code' => 'error', 'msg' => '该手机号码已登记']);
+        $code         = strval(rand(100000, 999999));
+        $result    = Sms::sendCode($mobile, $code);
+        if (isset($result['error']))    return json_send(['code' => 'error', 'msg' => $result['error']]);
+        $session     = ['code' => $code, 'mobile' => $mobile, 'create_time' => time()];
+        Cache::put('LeadMessageSmsCode_' . $mobile, $session, 120);
+        return                            json_send(['code' => 'success', 'msg' => '发送成功', 'data' => '']);
+    }
+}

+ 78 - 0
app/Http/Requests/Api/Website/LeadMessage.php

@@ -0,0 +1,78 @@
+<?php
+
+namespace App\Http\Requests\Api\Website;
+
+use App\Http\Requests\BaseRequest;
+
+/**
+ * 官网潜在客户留言-接口验证
+ * @author 唐远望
+ * @version 1.0
+ * @date 2026-03-05
+ * 
+ */
+class LeadMessage extends BaseRequest
+{
+    /**
+     * 获取应用于请求的规则
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        // 返回结果
+        return      [
+            'name'                 => 'required',
+            'id'                => 'required|integer|gt:0',
+            'status'            => 'required|integer|in:0,1',
+            'page'              => 'integer|min:1',
+            'limit'             => 'integer|min:1',
+            'phone'             => 'required|regex:/^1[34578]\d{9}$/|unique:website_lead_message,phone',
+            'company_name'      => 'required',
+            'position'          => 'required',
+            'remarks'           => 'required',
+            'code'              => 'required',
+        ];
+    }
+
+
+    // 场景列表
+    protected   $scenes         = [
+        'detail'             => ['id'],
+        'list'               => ['page', 'limit'],
+        'add'                      => ['phone','code','company_name', 'position', 'remarks'],
+        'edit'                  => ['id', 'name'],
+        'set_status'              => ['id', 'status'],
+        'delete'                  => ['id'],
+        'send_code'              => ['phone'],
+    ];
+
+    /**
+     * 获取已定义验证规则的错误消息
+     *
+     * @return array
+     */
+    public function messages()
+    {
+        return [
+            'name.required'     => '公司分类名称必填',
+            'id.required'       => 'ID未知',
+            'id.integer'        => 'ID格式错误',
+            'id.gt'               => 'ID格式错误',
+            'status.required'   => '状态未知',
+            'status.integer'    => '状态格式错误',
+            'status.in'         => '状态格式错误',
+            'page.integer'      => '页码格式错误',
+            'page.min'          => '页码格式错误',
+            'limit.integer'     => '每页数量格式错误',
+            'limit.min'         => '每页数量格式错误',
+            'phone.required'    => '手机号码必填',
+            'phone.regex'       => '手机号码格式错误',
+            'phone.unique'      => '手机号码已存在',
+            'company_name.required' => '公司名称必填',
+            'position.required' => '职位必填',
+            'remarks.required'  => '留言内容必填',
+            'code.required'     => '验证码必填',
+        ];
+    }
+}

+ 24 - 0
app/Models/Api/Website/LeadMessage.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Models\Api\Website;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 官网潜在客户留言模型
+ * @author: 唐远望
+ * @version: 1.0
+ * @date: 2026-03-05
+ */
+class LeadMessage extends Model
+{
+    use HasFactory;
+    // 与模型关联的表名
+    protected $table = 'website_lead_message';
+    // 是否主动维护时间戳
+    public $timestamps = false;
+    // 定义时间戳字段名
+    // const CREATED_AT = 'insert_time';
+    // const UPDATED_AT = 'update_time';
+}

+ 6 - 1
routes/api.php

@@ -80,4 +80,9 @@ Route::any('violation_goods_spec/list', [App\Http\Controllers\Api\WashConfig\Vio
 Route::any('violation_store/list', [App\Http\Controllers\Api\WashConfig\ViolationStore::class, 'list']);
 
 //订阅服务-订阅开关
-Route::any('personnel/subscribe/change_subscribe', [App\Http\Controllers\Api\Personnel\Subscribe::class, 'change_subscribe']);
+Route::any('personnel/subscribe/change_subscribe', [App\Http\Controllers\Api\Personnel\Subscribe::class, 'change_subscribe']);
+
+// 潜在客户留言-新增
+Route::any('website/lead_message/add', [App\Http\Controllers\Api\Website\LeadMessage::class, 'add']);
+// 潜在客户留言-发送验证码
+Route::any('website/lead_message/send_code', [App\Http\Controllers\Api\Website\LeadMessage::class, 'send_code']);