diff --git a/app/Service/ProjectService.php b/app/Service/ProjectService.php index 70712773..60196c11 100644 --- a/app/Service/ProjectService.php +++ b/app/Service/ProjectService.php @@ -88,6 +88,9 @@ class ProjectService extends BaseService $screenshots = $params['screenshots']; $labels = $params['labels']; $features = $params['features']; + if (empty($params['preferential_price'])) { + $params['preferential_price'] = $params['price']; + } unset($params['screenshots'], $params['labels'], $params['features']); DB::beginTransaction(); try { @@ -95,11 +98,13 @@ class ProjectService extends BaseService $labelInsertData = []; foreach ($labels as $label) { - $labelInsertData[] = [ - 'project_id' => $insertProjectModel, - 'label_id' => $label, - 'created_at' => get_time() - ]; + if (!empty($feature)) { + $labelInsertData[] = [ + 'project_id' => $insertProjectModel, + 'label_id' => $label, + 'created_at' => get_time() + ]; + } } $insertLabelModel = ProjectLabelRelationModel::insert($labelInsertData); @@ -109,11 +114,13 @@ class ProjectService extends BaseService $featureInsertData = []; foreach ($features as $feature) { - $featureInsertData[] = [ - 'project_id' => $insertProjectModel, - 'name' => $feature, - 'created_at' => get_time() - ]; + if (!empty($feature)) { + $featureInsertData[] = [ + 'project_id' => $insertProjectModel, + 'name' => $feature, + 'created_at' => get_time() + ]; + } } $insertFeatureModel = FeatureModel::insert($featureInsertData); if (!$insertFeatureModel) { @@ -122,11 +129,13 @@ class ProjectService extends BaseService $screenInsertData = []; foreach ($screenshots as $screenshot) { - $screenInsertData[] = [ - 'project_id' => $insertProjectModel, - 'url' => $screenshot, - 'created_at' => get_time() - ]; + if (!empty($screenshot)) { + $screenInsertData[] = [ + 'project_id' => $insertProjectModel, + 'url' => $screenshot, + 'created_at' => get_time() + ]; + } } $insertScreenModel = ScreenshotModel::insert($screenInsertData); if (!$insertScreenModel) { diff --git a/app/Service/common/UploadService.php b/app/Service/common/UploadService.php index 9866c05c..1b7d3c60 100644 --- a/app/Service/common/UploadService.php +++ b/app/Service/common/UploadService.php @@ -6,6 +6,7 @@ use App\BaseApp\BaseService; use App\Models\ProjectModel; use App\Models\RoleModel; use App\Models\UserModel; +use App\Service\common\upload\LocalhostStorageService; use App\Service\common\upload\QiniuStorageService; use App\Service\FileService; use Exception; @@ -15,10 +16,26 @@ use Psr\Container\NotFoundExceptionInterface; class UploadService extends BaseService { + private $uploadService; public function __construct() { parent::__construct(); $this->model = RoleModel::class; + + switch (env('ECS')) { + case 'aliyun': +// $this->uploadService = AliyunStorageService::getInstance(); + break; + case 'qcloud': +// $this->uploadService = QcloudStorageService::getInstance(); + break; + case 'qiniu': + $this->uploadService = QiniuStorageService::getInstance(); + break; + default: + $this->uploadService = LocalhostStorageService::getInstance(); + break; + } } /** @@ -32,11 +49,11 @@ class UploadService extends BaseService // 获取文件后缀 $ext = $file->getClientOriginalExtension(); $key = 'spa/image/'. date('Ymd') . '/' . 'cc_upload_'. Str::random(). uniqid() . '.' . $ext; -// $result = QiniuStorageService::getInstance()->uploadVideo($file, $key); - $result = [ - 'key' => $key, - 'url' => 'https://img2.baidu.com/it/u=1629222614,1358629025&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500&a='. rand(1111111, 9999999) - ]; + $result = $this->uploadService->uploadVideo($file, $key); +// $result = [ +// 'key' => $key, +// 'url' => 'https://img2.baidu.com/it/u=1629222614,1358629025&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500&a='. rand(1111111, 9999999) +// ]; FileService::getInstance()->create([ 'user_id' => $this->userId, 'url' => $result['url'], @@ -56,11 +73,11 @@ class UploadService extends BaseService // 获取文件后缀 $ext = $file->getClientOriginalExtension(); $key = 'spa/video/'. date('Ymd') . '/' . 'cc_upload_'. Str::random(). uniqid() . '.' . $ext; -// $result = QiniuStorageService::getInstance()->uploadVideo($file, $key); - $result = [ - 'key' => $key, - 'url' => 'https://img2.baidu.com/it/u=1629222614,1358629025&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500&a='. rand(1111111, 9999999) - ]; + $result = $this->uploadService->uploadVideo($file, $key); +// $result = [ +// 'key' => $key, +// 'url' => 'http://d-jy.nailaoyun.cn//storage/video//20250327/2cc1abf9bd69410ce7c69660daf54260.mp4' +// ]; FileService::getInstance()->create([ 'user_id' => $this->userId, 'url' => $result['url'], diff --git a/app/Service/common/upload/LocalhostStorageService.php b/app/Service/common/upload/LocalhostStorageService.php new file mode 100644 index 00000000..b880371c --- /dev/null +++ b/app/Service/common/upload/LocalhostStorageService.php @@ -0,0 +1,108 @@ +uploadFile($filePath, $key); + } + + /** + * 上传视频 + * + * @param string $filePath 文件本地路径 + * @param string $key 上传到本地存储的文件名 + * @return array|bool + */ + public function uploadVideo($filePath, $key): bool|array + { + return $this->uploadFile($filePath, $key); + } + + /** + * 删除图片 + * + * @param string $key 本地存储的文件名 + * @return bool + */ + public function deleteImage($key): bool + { + return $this->deleteFile($key); + } + + /** + * 删除视频 + * + * @param string $key 本地存储的文件名 + * @return bool + */ + public function deleteVideo($key): bool + { + return $this->deleteFile($key); + } + + /** + * 上传文件 + * + * @param string $filePath 文件本地路径 + * @param string $key 上传到本地存储的文件名 + * @return array|bool + */ + private function uploadFile(string $filePath, string $key): bool|array + { + if (Storage::put($key, file_get_contents($filePath))) { + return [ + 'key' => $key, + 'url' => asset('/storage/' . $key) + ]; + } + return false; + } + + /** + * 删除文件 + * + * @param string $key 本地存储的文件名 + * @return bool + */ + private function deleteFile(string $key): bool + { + return Storage::delete($key); + } +} diff --git a/config/filesystems.php b/config/filesystems.php index 3d671bd9..52ad8144 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -32,7 +32,7 @@ return [ 'local' => [ 'driver' => 'local', - 'root' => storage_path('app/private'), + 'root' => storage_path('app/public'), 'serve' => true, 'throw' => false, 'report' => false,