项目相关接口、图片视频上传

This commit is contained in:
2025-05-06 16:18:22 +08:00
parent cbd0b19b91
commit cd304275b8
14 changed files with 416 additions and 21 deletions

View File

@@ -3,9 +3,13 @@
namespace App\Service;
use App\BaseApp\BaseService;
use App\Models\FeatureModel;
use App\Models\ProjectLabelRelationModel;
use App\Models\ProjectModel;
use App\Models\ScreenshotModel;
use App\Models\UserModel;
use Exception;
use Illuminate\Support\Facades\DB;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
@@ -66,7 +70,66 @@ class ProjectService extends BaseService
$params['author_id'] = $params['author_id']?? $this->userId;
// TODO 项目
$screenshots = $params['screenshots'];
return $this->insert($params);
$labels = $params['tags'];
$features = $params['features'];
unset($params['screenshots'], $params['tags'], $params['features']);
DB::beginTransaction();
try {
$insertProjectModel = $this->insert($params);
$labelInsertData = [];
foreach ($labels as $label) {
$labelInsertData[] = [
'project_id' => $insertProjectModel,
'label_id' => $label,
'created_at' => get_time()
];
}
$insertLabelModel = ProjectLabelRelationModel::insert($labelInsertData);
if (!$insertLabelModel) {
$this->utils->errorThrow('标签添加失败');
}
$featureInsertData = [];
foreach ($features as $feature) {
$featureInsertData[] = [
'project_id' => $insertProjectModel,
'name' => $feature,
'created_at' => get_time()
];
}
$insertFeatureModel = FeatureModel::insert($featureInsertData);
if (!$insertFeatureModel) {
$this->utils->errorThrow('项目功能添加失败');
}
$screenInsertData = [];
foreach ($screenshots as $screenshot) {
$screenInsertData[] = [
'project_id' => $insertProjectModel,
'url' => $screenshot,
'created_at' => get_time()
];
}
$insertScreenModel = ScreenshotModel::insert($screenInsertData);
if (!$insertScreenModel) {
$this->utils->errorThrow('项目截图添加失败');
}
DB::commit();
} catch (Exception $e) {
DB::rollBack();
ds([
'message' => $e->getMessage(),
'line' => $e->getLine(),
'file' => $e->getFile(),
'code' => $e->getCode(),
]);
$this->utils->errorThrow($e->getMessage());
}
return $insertProjectModel;
}
/**