作者 lyh

gx

... ... @@ -2,10 +2,14 @@
namespace App\Http\Controllers\Api;
use App\Enums\Common\Code;
use App\Exceptions\InquiryFilterException;
use App\Models\SyncSubmitTask\SyncSubmitTask;
use App\Models\Visit\Visit;
use App\Services\CosService;
use App\Services\ProjectServer;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
/**
* Class InquiryController
... ... @@ -53,7 +57,37 @@ class InquiryController extends BaseController
}
/**
* param:domain,ip,date
*
*/
* @remark :修改
* @name :editInquiryStatus
* @author :lyh
* @method :post
* @time :2024/3/22 15:41
*/
public function editInquiryStatus(){
$this->request->validate([
'project_id'=>'required',
'ip'=>'required',
'updated_date'=>'required',
],[
'project_id.required' => 'project_id不能为空',
'ip.required' => 'ip不能为空',
'updated_date.required' => '日期不能为空',
]);
ProjectServer::useProject($this->param['project_id']);
$customerVisitModel = new Visit();
$info = $customerVisitModel->read([
'ip'=>$this->param['ip'],
'updated_date'=>$this->param['updated_date']
]);
if($info === false){
$this->response('当前记录不存在',Code::SYSTEM_ERROR);
}
try {
$customerVisitModel->edit(['is_inquiry'=>1],['id'=>$info['id']]);
}catch (\Exception $e){
$this->response('操作失败',Code::SYSTEM_ERROR);
}
DB::disconnect('custom_mysql');
$this->response('success');
}
}
... ...
... ... @@ -160,4 +160,95 @@ class ProductController extends BaseController
}
return $category_id;
}
/**
* @param Request $request
* @author zbj
* @date 2024/1/22
*/
protected function searchProduct(Request $request)
{
$project_id = $request->input('project_id');
$limit = $request->input('limit') ?: 5;
$text = $request->input('text');
$key = $request->input('key') ?: 'title';
$key_limit = $request->input('key_limit') ?: 15;
$project = ProjectServer::useProject($project_id);
if (!$project) {
$this->response('项目不存在', Code::SYSTEM_ERROR);
}
//匹配产品
$products = Product::with('category')
->where("title", 'like', $text . '%')
->where("status", 1)
->orderBy("id", "DESC")
->limit($limit)
->select('title', 'thumb', 'id', 'route')
->get()
->toArray();
//对应分类
$categories = [];
foreach ($products as &$product) {
foreach ($product['category'] as $category) {
$categories[$category['route']] = [
'title' => $category['title'],
'route' => '/' . $category['route'] . '/',
];
}
unset($product['id']);
unset($product['category']);
if(!empty($product['thumb']) && !empty($product['thumb']['url'])){
$product['thumb'] = getImageUrl($product['thumb']['url'],$project['storage_type'] ?? 0,$project['project_location']);
}
$product['route'] = '/' . $product['route'] . '/';
}
$data = [
'products' => $products,
'categories' => array_values($categories),
'suggestions' => $this->searchSuggestion($text, $key, $key_limit)
];
$this->response('success', Code::SUCCESS, $data);
}
protected function searchSuggestion($text, $key, $key_limit): array
{
$model = new Product();
$columns = $model->getConnection()->getSchemaBuilder()->getColumnListing($model->getTable());
//产品字段
if (in_array($key, $columns)) {
//匹配产品
$suggestions = Product::where("status", 1)
->where($key, 'like', $text . '%')
->orderBy("id", "DESC")
->limit($key_limit)
->select($key .' as title', 'route')
->get()
->toArray();
} else {
//扩展字段
$suggestions = Product::leftJoin('gl_product_extend_info as pei', 'gl_product.id', '=', 'pei.product_id')
->where('pei.values', 'like', $text . '%')
->where("gl_product.status", 1)
->orderBy("gl_product.id", "DESC")
->limit($key_limit)
->select('pei.values','gl_product.route')
->get()
->toArray();
}
foreach ($suggestions as &$suggestion){
$suggestion['route'] = '/' . $suggestion['route'] . '/';
}
return $suggestions;
}
}
... ...
... ... @@ -143,7 +143,7 @@ class ProductController extends BaseController
$query = $query->where('status',$this->map['status']);
}
if(!empty($this->param['start_at']) && !empty($this->param['end_at'])){
$query->whereBetween('created_at', [$this->param['start_at'].' 00:00:00',$this->param['end_at'].' 59:59:59']);
$query->where('created_at', '>=' ,$this->param['start_at'].' 00:00:00')->where('created_at', '<=' ,$this->param['end_at'].' 59:59:59');
}
return $query;
}
... ...
... ... @@ -4,6 +4,7 @@ namespace App\Models\Product;
use App\Helper\Arr;
use App\Models\Base;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
... ... @@ -209,4 +210,15 @@ class Product extends Base
}
return $value;
}
/**
* 多对多关联
* @return BelongsToMany
* @author zbj
* @date 2024/1/22
*/
public function category(): BelongsToMany
{
return $this->belongsToMany(Category::class, 'gl_product_category_related', 'product_id', 'cate_id');
}
}
... ...
... ... @@ -23,7 +23,9 @@ Route::get('optimize_project_list', [\App\Http\Controllers\Api\PrivateController
Route::get('get_project_route', [\App\Http\Controllers\Api\PrivateController::class, 'getProjectRoute'])->name('api.get_project_route');
Route::any('get_product_images', [\App\Http\Controllers\Api\ProductController::class, 'getImages'])->name('api.get_product_images');
Route::any('saveProduct', [\App\Http\Controllers\Api\ProductController::class, 'saveProduct'])->name('api.saveProduct');
Route::any('searchProduct', [\App\Http\Controllers\Api\ProductController::class, 'searchProduct'])->name('api.searchProduct');
Route::post('inquiry_submit', [\App\Http\Controllers\Api\InquiryController::class, 'submit'])->name('api.inquiry_submit');
Route::post('editInquiryStatus', [\App\Http\Controllers\Api\InquiryController::class, 'editInquiryStatus'])->name('api.inquiry_editInquiryStatus');
Route::any('getOptimizationReport', [\App\Http\Controllers\Api\OptimizationReportController::class, 'getOptimizationReport'])->name('api.getOptimizationReport');
// 视频任务回调信息
Route::post('video_task_callback', [\App\Http\Controllers\Api\NoticeController::class, 'videoTaskCallback'])->name('api.video_task_callback');
... ...