正在显示
5 个修改的文件
包含
143 行增加
和
4 行删除
| @@ -2,10 +2,14 @@ | @@ -2,10 +2,14 @@ | ||
| 2 | 2 | ||
| 3 | namespace App\Http\Controllers\Api; | 3 | namespace App\Http\Controllers\Api; |
| 4 | 4 | ||
| 5 | +use App\Enums\Common\Code; | ||
| 5 | use App\Exceptions\InquiryFilterException; | 6 | use App\Exceptions\InquiryFilterException; |
| 6 | use App\Models\SyncSubmitTask\SyncSubmitTask; | 7 | use App\Models\SyncSubmitTask\SyncSubmitTask; |
| 8 | +use App\Models\Visit\Visit; | ||
| 7 | use App\Services\CosService; | 9 | use App\Services\CosService; |
| 10 | +use App\Services\ProjectServer; | ||
| 8 | use Illuminate\Http\Request; | 11 | use Illuminate\Http\Request; |
| 12 | +use Illuminate\Support\Facades\DB; | ||
| 9 | 13 | ||
| 10 | /** | 14 | /** |
| 11 | * Class InquiryController | 15 | * Class InquiryController |
| @@ -53,7 +57,37 @@ class InquiryController extends BaseController | @@ -53,7 +57,37 @@ class InquiryController extends BaseController | ||
| 53 | } | 57 | } |
| 54 | 58 | ||
| 55 | /** | 59 | /** |
| 56 | - * param:domain,ip,date | ||
| 57 | - * | ||
| 58 | - */ | 60 | + * @remark :修改 |
| 61 | + * @name :editInquiryStatus | ||
| 62 | + * @author :lyh | ||
| 63 | + * @method :post | ||
| 64 | + * @time :2024/3/22 15:41 | ||
| 65 | + */ | ||
| 66 | + public function editInquiryStatus(){ | ||
| 67 | + $this->request->validate([ | ||
| 68 | + 'project_id'=>'required', | ||
| 69 | + 'ip'=>'required', | ||
| 70 | + 'updated_date'=>'required', | ||
| 71 | + ],[ | ||
| 72 | + 'project_id.required' => 'project_id不能为空', | ||
| 73 | + 'ip.required' => 'ip不能为空', | ||
| 74 | + 'updated_date.required' => '日期不能为空', | ||
| 75 | + ]); | ||
| 76 | + ProjectServer::useProject($this->param['project_id']); | ||
| 77 | + $customerVisitModel = new Visit(); | ||
| 78 | + $info = $customerVisitModel->read([ | ||
| 79 | + 'ip'=>$this->param['ip'], | ||
| 80 | + 'updated_date'=>$this->param['updated_date'] | ||
| 81 | + ]); | ||
| 82 | + if($info === false){ | ||
| 83 | + $this->response('当前记录不存在',Code::SYSTEM_ERROR); | ||
| 84 | + } | ||
| 85 | + try { | ||
| 86 | + $customerVisitModel->edit(['is_inquiry'=>1],['id'=>$info['id']]); | ||
| 87 | + }catch (\Exception $e){ | ||
| 88 | + $this->response('操作失败',Code::SYSTEM_ERROR); | ||
| 89 | + } | ||
| 90 | + DB::disconnect('custom_mysql'); | ||
| 91 | + $this->response('success'); | ||
| 92 | + } | ||
| 59 | } | 93 | } |
| @@ -160,4 +160,95 @@ class ProductController extends BaseController | @@ -160,4 +160,95 @@ class ProductController extends BaseController | ||
| 160 | } | 160 | } |
| 161 | return $category_id; | 161 | return $category_id; |
| 162 | } | 162 | } |
| 163 | + | ||
| 164 | + /** | ||
| 165 | + * @param Request $request | ||
| 166 | + * @author zbj | ||
| 167 | + * @date 2024/1/22 | ||
| 168 | + */ | ||
| 169 | + protected function searchProduct(Request $request) | ||
| 170 | + { | ||
| 171 | + $project_id = $request->input('project_id'); | ||
| 172 | + $limit = $request->input('limit') ?: 5; | ||
| 173 | + $text = $request->input('text'); | ||
| 174 | + $key = $request->input('key') ?: 'title'; | ||
| 175 | + $key_limit = $request->input('key_limit') ?: 15; | ||
| 176 | + | ||
| 177 | + $project = ProjectServer::useProject($project_id); | ||
| 178 | + if (!$project) { | ||
| 179 | + $this->response('项目不存在', Code::SYSTEM_ERROR); | ||
| 180 | + } | ||
| 181 | + | ||
| 182 | + //匹配产品 | ||
| 183 | + $products = Product::with('category') | ||
| 184 | + ->where("title", 'like', $text . '%') | ||
| 185 | + ->where("status", 1) | ||
| 186 | + ->orderBy("id", "DESC") | ||
| 187 | + ->limit($limit) | ||
| 188 | + ->select('title', 'thumb', 'id', 'route') | ||
| 189 | + ->get() | ||
| 190 | + ->toArray(); | ||
| 191 | + | ||
| 192 | + //对应分类 | ||
| 193 | + $categories = []; | ||
| 194 | + foreach ($products as &$product) { | ||
| 195 | + foreach ($product['category'] as $category) { | ||
| 196 | + $categories[$category['route']] = [ | ||
| 197 | + 'title' => $category['title'], | ||
| 198 | + 'route' => '/' . $category['route'] . '/', | ||
| 199 | + ]; | ||
| 200 | + } | ||
| 201 | + unset($product['id']); | ||
| 202 | + unset($product['category']); | ||
| 203 | + | ||
| 204 | + if(!empty($product['thumb']) && !empty($product['thumb']['url'])){ | ||
| 205 | + $product['thumb'] = getImageUrl($product['thumb']['url'],$project['storage_type'] ?? 0,$project['project_location']); | ||
| 206 | + } | ||
| 207 | + | ||
| 208 | + $product['route'] = '/' . $product['route'] . '/'; | ||
| 209 | + } | ||
| 210 | + | ||
| 211 | + $data = [ | ||
| 212 | + 'products' => $products, | ||
| 213 | + 'categories' => array_values($categories), | ||
| 214 | + 'suggestions' => $this->searchSuggestion($text, $key, $key_limit) | ||
| 215 | + ]; | ||
| 216 | + | ||
| 217 | + $this->response('success', Code::SUCCESS, $data); | ||
| 218 | + | ||
| 219 | + } | ||
| 220 | + | ||
| 221 | + protected function searchSuggestion($text, $key, $key_limit): array | ||
| 222 | + { | ||
| 223 | + $model = new Product(); | ||
| 224 | + $columns = $model->getConnection()->getSchemaBuilder()->getColumnListing($model->getTable()); | ||
| 225 | + | ||
| 226 | + //产品字段 | ||
| 227 | + if (in_array($key, $columns)) { | ||
| 228 | + //匹配产品 | ||
| 229 | + $suggestions = Product::where("status", 1) | ||
| 230 | + ->where($key, 'like', $text . '%') | ||
| 231 | + ->orderBy("id", "DESC") | ||
| 232 | + ->limit($key_limit) | ||
| 233 | + ->select($key .' as title', 'route') | ||
| 234 | + ->get() | ||
| 235 | + ->toArray(); | ||
| 236 | + } else { | ||
| 237 | + //扩展字段 | ||
| 238 | + $suggestions = Product::leftJoin('gl_product_extend_info as pei', 'gl_product.id', '=', 'pei.product_id') | ||
| 239 | + ->where('pei.values', 'like', $text . '%') | ||
| 240 | + ->where("gl_product.status", 1) | ||
| 241 | + ->orderBy("gl_product.id", "DESC") | ||
| 242 | + ->limit($key_limit) | ||
| 243 | + ->select('pei.values','gl_product.route') | ||
| 244 | + ->get() | ||
| 245 | + ->toArray(); | ||
| 246 | + } | ||
| 247 | + | ||
| 248 | + foreach ($suggestions as &$suggestion){ | ||
| 249 | + $suggestion['route'] = '/' . $suggestion['route'] . '/'; | ||
| 250 | + } | ||
| 251 | + | ||
| 252 | + return $suggestions; | ||
| 253 | + } | ||
| 163 | } | 254 | } |
| @@ -143,7 +143,7 @@ class ProductController extends BaseController | @@ -143,7 +143,7 @@ class ProductController extends BaseController | ||
| 143 | $query = $query->where('status',$this->map['status']); | 143 | $query = $query->where('status',$this->map['status']); |
| 144 | } | 144 | } |
| 145 | if(!empty($this->param['start_at']) && !empty($this->param['end_at'])){ | 145 | if(!empty($this->param['start_at']) && !empty($this->param['end_at'])){ |
| 146 | - $query->whereBetween('created_at', [$this->param['start_at'].' 00:00:00',$this->param['end_at'].' 59:59:59']); | 146 | + $query->where('created_at', '>=' ,$this->param['start_at'].' 00:00:00')->where('created_at', '<=' ,$this->param['end_at'].' 59:59:59'); |
| 147 | } | 147 | } |
| 148 | return $query; | 148 | return $query; |
| 149 | } | 149 | } |
| @@ -4,6 +4,7 @@ namespace App\Models\Product; | @@ -4,6 +4,7 @@ namespace App\Models\Product; | ||
| 4 | 4 | ||
| 5 | use App\Helper\Arr; | 5 | use App\Helper\Arr; |
| 6 | use App\Models\Base; | 6 | use App\Models\Base; |
| 7 | +use Illuminate\Database\Eloquent\Relations\BelongsToMany; | ||
| 7 | use Illuminate\Database\Eloquent\SoftDeletes; | 8 | use Illuminate\Database\Eloquent\SoftDeletes; |
| 8 | 9 | ||
| 9 | /** | 10 | /** |
| @@ -209,4 +210,15 @@ class Product extends Base | @@ -209,4 +210,15 @@ class Product extends Base | ||
| 209 | } | 210 | } |
| 210 | return $value; | 211 | return $value; |
| 211 | } | 212 | } |
| 213 | + | ||
| 214 | + /** | ||
| 215 | + * 多对多关联 | ||
| 216 | + * @return BelongsToMany | ||
| 217 | + * @author zbj | ||
| 218 | + * @date 2024/1/22 | ||
| 219 | + */ | ||
| 220 | + public function category(): BelongsToMany | ||
| 221 | + { | ||
| 222 | + return $this->belongsToMany(Category::class, 'gl_product_category_related', 'product_id', 'cate_id'); | ||
| 223 | + } | ||
| 212 | } | 224 | } |
| @@ -23,7 +23,9 @@ Route::get('optimize_project_list', [\App\Http\Controllers\Api\PrivateController | @@ -23,7 +23,9 @@ Route::get('optimize_project_list', [\App\Http\Controllers\Api\PrivateController | ||
| 23 | Route::get('get_project_route', [\App\Http\Controllers\Api\PrivateController::class, 'getProjectRoute'])->name('api.get_project_route'); | 23 | Route::get('get_project_route', [\App\Http\Controllers\Api\PrivateController::class, 'getProjectRoute'])->name('api.get_project_route'); |
| 24 | Route::any('get_product_images', [\App\Http\Controllers\Api\ProductController::class, 'getImages'])->name('api.get_product_images'); | 24 | Route::any('get_product_images', [\App\Http\Controllers\Api\ProductController::class, 'getImages'])->name('api.get_product_images'); |
| 25 | Route::any('saveProduct', [\App\Http\Controllers\Api\ProductController::class, 'saveProduct'])->name('api.saveProduct'); | 25 | Route::any('saveProduct', [\App\Http\Controllers\Api\ProductController::class, 'saveProduct'])->name('api.saveProduct'); |
| 26 | +Route::any('searchProduct', [\App\Http\Controllers\Api\ProductController::class, 'searchProduct'])->name('api.searchProduct'); | ||
| 26 | Route::post('inquiry_submit', [\App\Http\Controllers\Api\InquiryController::class, 'submit'])->name('api.inquiry_submit'); | 27 | Route::post('inquiry_submit', [\App\Http\Controllers\Api\InquiryController::class, 'submit'])->name('api.inquiry_submit'); |
| 28 | +Route::post('editInquiryStatus', [\App\Http\Controllers\Api\InquiryController::class, 'editInquiryStatus'])->name('api.inquiry_editInquiryStatus'); | ||
| 27 | Route::any('getOptimizationReport', [\App\Http\Controllers\Api\OptimizationReportController::class, 'getOptimizationReport'])->name('api.getOptimizationReport'); | 29 | Route::any('getOptimizationReport', [\App\Http\Controllers\Api\OptimizationReportController::class, 'getOptimizationReport'])->name('api.getOptimizationReport'); |
| 28 | // 视频任务回调信息 | 30 | // 视频任务回调信息 |
| 29 | Route::post('video_task_callback', [\App\Http\Controllers\Api\NoticeController::class, 'videoTaskCallback'])->name('api.video_task_callback'); | 31 | Route::post('video_task_callback', [\App\Http\Controllers\Api\NoticeController::class, 'videoTaskCallback'])->name('api.video_task_callback'); |
-
请 注册 或 登录 后发表评论