作者 赵彬吉

update

  1 +<?php
  2 +
  3 +namespace App\Http\Controllers\Bside;
  4 +
  5 +use App\Helper\Arr;
  6 +use App\Http\Logic\Bside\InquiryLogic;
  7 +use App\Http\Requests\Bside\InquiryRequest;
  8 +use App\Rules\Ids;
  9 +use Illuminate\Http\Request;
  10 +
  11 +/**
  12 + * 精准询盘
  13 + * Class InquiryController
  14 + * @package App\Http\Controllers\Bside
  15 + * @author zbj
  16 + * @date 2023/5/4
  17 + */
  18 +class InquiryController extends BaseController
  19 +{
  20 +
  21 + public function index(InquiryLogic $logic)
  22 + {
  23 + $map = [];
  24 + if(!empty($this->param['search'])){
  25 + $map[] = ['name|email|content', 'like', "%{$this->param['search']}%"];
  26 + }
  27 + $sort = ['id' => 'desc'];
  28 + $data = $logic->getList($map, $sort, ['id', 'name', 'email', 'phone', 'url', 'ip', 'ip_country', 'status', 'created_at']);
  29 + return $this->success($data);
  30 + }
  31 +
  32 + public function info(Request $request, InquiryLogic $logic){
  33 + $request->validate([
  34 + 'id'=>'required'
  35 + ],[
  36 + 'id.required' => 'ID不能为空'
  37 + ]);
  38 + $data = $logic->getInfo($this->param['id']);
  39 + return $this->success(Arr::twoKeepKeys($data, ['id', 'name', 'email', 'phone', 'url', 'ip', 'ip_country', 'status', 'content', 'trans_content', 'created_at']));
  40 + }
  41 +
  42 + public function save(InquiryRequest $request, InquiryLogic $logic)
  43 + {
  44 + $data = $logic->save($this->param);
  45 + return $this->success($data);
  46 + }
  47 +
  48 + public function delete(Request $request, InquiryLogic $logic)
  49 + {
  50 + $request->validate([
  51 + 'ids'=>['required', new Ids()]
  52 + ],[
  53 + 'ids.required' => 'ID不能为空'
  54 + ]);
  55 +
  56 + $data = $logic->delete($this->param['ids']);
  57 + return $this->success($data);
  58 + }
  59 +
  60 +}
@@ -6,6 +6,7 @@ use App\Helper\Arr; @@ -6,6 +6,7 @@ use App\Helper\Arr;
6 use App\Http\Controllers\Bside\BaseController; 6 use App\Http\Controllers\Bside\BaseController;
7 use App\Http\Logic\Bside\Product\KeywordLogic; 7 use App\Http\Logic\Bside\Product\KeywordLogic;
8 use App\Http\Requests\Bside\Product\KeywordRequest; 8 use App\Http\Requests\Bside\Product\KeywordRequest;
  9 +use App\Models\Project\Project;
9 use App\Rules\Ids; 10 use App\Rules\Ids;
10 use Illuminate\Http\Request; 11 use Illuminate\Http\Request;
11 12
@@ -29,6 +30,8 @@ class KeywordController extends BaseController @@ -29,6 +30,8 @@ class KeywordController extends BaseController
29 foreach ($data['list'] as &$v){ 30 foreach ($data['list'] as &$v){
30 $v['product_num'] = $logic->getProductNum($v['title']); 31 $v['product_num'] = $logic->getProductNum($v['title']);
31 $v['tdk'] = boolval($v['seo_title']) * boolval($v['seo_keywords']) * boolval($v['seo_description']); 32 $v['tdk'] = boolval($v['seo_title']) * boolval($v['seo_keywords']) * boolval($v['seo_description']);
  33 + //todo 获取域名 拼接链接
  34 + $v['url'] = $v['route'];
32 } 35 }
33 return $this->success($data); 36 return $this->success($data);
34 } 37 }
  1 +<?php
  2 +
  3 +namespace App\Http\Logic\Bside;
  4 +
  5 +use App\Helper\Arr;
  6 +use App\Models\Inquiry;
  7 +
  8 +/**
  9 + * Class InquiryLogic
  10 + * @package App\Http\Logic\Bside
  11 + * @author zbj
  12 + * @date 2023/5/4
  13 + */
  14 +class InquiryLogic extends BaseLogic
  15 +{
  16 + public function __construct()
  17 + {
  18 + parent::__construct();
  19 +
  20 + $this->model = new Inquiry();
  21 + }
  22 +
  23 + public function getInfo($id)
  24 + {
  25 + $info = $this->getCacheInfo($id);
  26 + if(!$info){
  27 + $this->fail('数据不存在或者已经删除');
  28 + }
  29 + //标记已读
  30 + if($info->status == Inquiry::STATUS_UNREAD){
  31 + parent::save(['id' => $info['id'], 'status' => Inquiry::STATUS_READ]);
  32 + }
  33 + return $this->success($info->toArray());
  34 + }
  35 +
  36 +
  37 + public function save($param)
  38 + {
  39 + $param['ip_info'] = Arr::s2a($param['ip_info']);
  40 + $param['ip'] = $param['ip_info']['ip'] ?? '';
  41 + $param['ip_country'] = $param['ip_info']['country'] ?? '';
  42 + return parent::save($param);
  43 + }
  44 +
  45 +}
  1 +<?php
  2 +
  3 +namespace App\Http\Requests\Bside;
  4 +
  5 +use Illuminate\Foundation\Http\FormRequest;
  6 +
  7 +/**
  8 + * Class InquiryRequest
  9 + * @package App\Http\Requests\Bside
  10 + * @author zbj
  11 + * @date 2023/5/4
  12 + */
  13 +class InquiryRequest extends FormRequest
  14 +{
  15 + /**
  16 + * Determine if the user is authorized to make this request.
  17 + *
  18 + * @return bool
  19 + */
  20 + public function authorize()
  21 + {
  22 + return true;
  23 + }
  24 +
  25 + /**
  26 + * Get the validation rules that apply to the request.
  27 + *
  28 + * @return array
  29 + */
  30 + public function rules()
  31 + {
  32 + return [
  33 + 'name' => 'required|max:200',
  34 + 'email' => 'required|email|max:200',
  35 + 'phone' => 'max:200',
  36 + 'content' => 'required',
  37 + ];
  38 + }
  39 +
  40 + public function messages()
  41 + {
  42 + return [];
  43 + }
  44 +
  45 +}
  1 +<?php
  2 +
  3 +namespace App\Models;
  4 +
  5 +use App\Helper\Arr;
  6 +use Illuminate\Database\Eloquent\SoftDeletes;
  7 +
  8 +/**
  9 + * Class Inquiry
  10 + * @package App\Models
  11 + * @author zbj
  12 + * @date 2023/5/4
  13 + */
  14 +class Inquiry extends Base
  15 +{
  16 + use SoftDeletes;
  17 +
  18 + //设置关联表名
  19 + protected $table = 'gl_inquiry';
  20 +
  21 + const STATUS_UNREAD = 0;
  22 + const STATUS_READ = 1;
  23 +
  24 + public function setIpInfoAttribute($value){
  25 + $this->attributes['ip_info'] = Arr::a2s($value);
  26 + }
  27 +
  28 + public function getIpInfoAttribute($value){
  29 + return Arr::s2a($value);
  30 + }
  31 +}
@@ -168,6 +168,13 @@ Route::middleware(['bloginauth'])->group(function () { @@ -168,6 +168,13 @@ Route::middleware(['bloginauth'])->group(function () {
168 Route::prefix('images')->group(function () { 168 Route::prefix('images')->group(function () {
169 Route::post('/upload', [\App\Http\Controllers\ImageController::class, 'upload'])->name('image_upload'); 169 Route::post('/upload', [\App\Http\Controllers\ImageController::class, 'upload'])->name('image_upload');
170 }); 170 });
  171 +
  172 + //精准询盘
  173 + Route::prefix('inquiry')->group(function () {
  174 + Route::get('/', [\App\Http\Controllers\Bside\InquiryController::class, 'index'])->name('inquiry');
  175 + Route::get('/info', [\App\Http\Controllers\Bside\InquiryController::class, 'info'])->name('inquiry_info');
  176 + Route::any('/delete', [\App\Http\Controllers\Bside\InquiryController::class, 'delete'])->name('inquiry_delete');
  177 + });
171 }); 178 });
172 179
173 //无需登录验证的路由组 180 //无需登录验证的路由组
@@ -175,4 +182,7 @@ Route::group([], function () { @@ -175,4 +182,7 @@ Route::group([], function () {
175 Route::any('/login', [\App\Http\Controllers\Bside\ComController::class, 'login'])->name('login'); 182 Route::any('/login', [\App\Http\Controllers\Bside\ComController::class, 'login'])->name('login');
176 Route::get('/file/download', [\App\Http\Controllers\Bside\FileController::class, 'download'])->name('file_download'); 183 Route::get('/file/download', [\App\Http\Controllers\Bside\FileController::class, 'download'])->name('file_download');
177 Route::any('/image/{hash}/{w?}/{h?}', [\App\Http\Controllers\ImageController::class,'index'])->name('image_show'); 184 Route::any('/image/{hash}/{w?}/{h?}', [\App\Http\Controllers\ImageController::class,'index'])->name('image_show');
  185 +
  186 + //添加询盘信息
  187 + Route::post('/inquiry/save', [\App\Http\Controllers\Bside\InquiryController::class, 'save'])->name('inquiry_save');
178 }); 188 });