From 08b36c041860bb282a7802d1fbf6056eda9e5b9a Mon Sep 17 00:00:00 2001 From: liyuchun <563917701@qq.com> Date: Thu, 16 Jun 2022 07:50:39 +0000 Subject: [PATCH] * Finish task #57065. --- api/v1/entries/mr.php | 33 +++++++++++++++++++++++++++++++++ config/routes.php | 1 + module/mr/model.php | 24 +++++++++++------------- 3 files changed, 45 insertions(+), 13 deletions(-) create mode 100644 api/v1/entries/mr.php diff --git a/api/v1/entries/mr.php b/api/v1/entries/mr.php new file mode 100644 index 0000000000..2b436fef96 --- /dev/null +++ b/api/v1/entries/mr.php @@ -0,0 +1,33 @@ + + * @package repo + * @version 1 + * @link http://www.zentao.net + */ +class mrEntry extends baseEntry +{ + /** + * Create mr. + * + * @access public + * @return void + */ + public function post() + { + $fields = 'repoID,jobID,sourceBranch,targetBranch,diffs,mergeStatus'; + $this->batchSetPost($fields); + $postData = fixer::input('post')->get(); + + $this->loadController('mr', 'create'); + $MRID = $this->loadModel('mr')->apiCreate(); + if(dao::isError()) $this->sendError(400, dao::getError()); + + $MR = $this->mr->getByID($MRID); + $this->send(201, $MR); + } +} diff --git a/config/routes.php b/config/routes.php index d417a8cbff..97dd57daa8 100644 --- a/config/routes.php +++ b/config/routes.php @@ -154,6 +154,7 @@ $routes['/docs/:id'] = 'doc'; $routes['/repos'] = 'repos'; $routes['/repos/rules'] = 'reporules'; $routes['/jobs'] = 'jobs'; +$routes['/mr'] = 'mr'; $routes['/modules'] = 'modules'; diff --git a/module/mr/model.php b/module/mr/model.php index 765987b922..d36c6e0d30 100644 --- a/module/mr/model.php +++ b/module/mr/model.php @@ -249,32 +249,30 @@ class mrModel extends model public function apiCreate() { $postData = fixer::input('post')->get(); - $postData = (object)$postData->data; - $repo = $this->loadModel('repo')->getRepoByUrl($postData->RepoUrl); - if(empty($repo['data'])) + $repo = $this->dao->findByID($postData->repoID)->from(TABLE_REPO)->fetch(); + if(empty($repo)) { - dao::$errors[] = $repo['message']; + dao::$errors[] = 'No matched gitlab.'; return false; } - $repo = $repo['data']; /* Process and insert mr data. */ $MR = new stdClass(); $MR->gitlabID = $repo->client; $MR->sourceProject = $repo->path; - $MR->sourceBranch = $postData->RepoSrcBranch; + $MR->sourceBranch = $postData->sourceBranch; $MR->targetProject = $repo->path; - $MR->targetBranch = $postData->RepoDistBranch; - $MR->diffs = $this->post->data['DiffMsg']; - $MR->title = $this->lang->mr->common . ' ' . $postData->RepoSrcBranch . $this->lang->mr->to . $postData->RepoDistBranch ; + $MR->targetBranch = $postData->targetBranch; + $MR->diffs = $postData->diffs; + $MR->title = $this->lang->mr->common . ' ' . $postData->sourceBranch . $this->lang->mr->to . $postData->targetBranch ; $MR->repoID = $repo->id; - $MR->jobID = isset($repo->job->id) ? $repo->job->id : 0; + $MR->jobID = $postData->jobID; $MR->status = 'opened'; $MR->synced = '0'; $MR->needCI = '1'; - $MR->hasNoConflict = $postData->MergeStatus ? '0' : '1'; - $MR->mergeStatus = $postData->MergeStatus ? 'can_be_merged' : 'cannot_be_merged'; + $MR->hasNoConflict = $postData->mergeStatus ? '0' : '1'; + $MR->mergeStatus = $postData->mergeStatus ? 'can_be_merged' : 'cannot_be_merged'; $MR->createdBy = $this->app->user->account; $MR->createdDate = date('Y-m-d H:i:s'); @@ -325,7 +323,7 @@ class mrModel extends model $this->dao->update(TABLE_MR)->data($newMR)->where('id')->eq($MRID)->autoCheck()->exec(); if(dao::isError()) return false; } - return true; + return $MRID; } /**