项目相关接口、图片视频上传
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user