diff --git a/application/common/Article.php b/application/common/Article.php index f731f6e..136ef48 100644 --- a/application/common/Article.php +++ b/application/common/Article.php @@ -393,4 +393,75 @@ class Article return json_encode(['status' => 1,'msg' => 'success']); } + /** + * 验证标题是否重复 + */ + public function checkTitle($aParam = []){ + //文章ID + $iArticleId = empty($aParam['article_id']) ? 0 : $aParam['article_id']; + //文章标题 + $sTitle = empty($aParam['title']) ? '' : $aParam['title']; + if(empty($sTitle)){ + return ['status' => 2,'msg' => 'The article title is empty']; + } + //作者ID + $iUserId = empty($aParam['user_id']) ? 0 : $aParam['user_id']; + //查询标题是否存在 + $aWhere = ['title' => trim($sTitle)]; + $aArticle = Db::name('article')->field('article_id,user_id,state,accept_sn')->where($aWhere)->order('article_id asc')->select(); + if(empty($aArticle)){ + return ['status' => 1,'msg' => 'No articles with relevant titles found']; + } + + //处理数据 + $aFlag = []; + $iDraftId = 0; + foreach ($aArticle as $key => $value) { + if(!empty($iArticleId) && $value['article_id'] == $iArticleId){ + continue; + } + //稿件提交者 + $iArticleUserId = empty($value['user_id']) ? 0 : $value['user_id']; + //稿件状态 + $iState = empty($value['state']) ? '' : $value['state']; + //稿号 + $sAcceptSn = empty($value['accept_sn']) ? '' : $value['accept_sn']; + if($iState == 3 && stripos($sAcceptSn, 'Draft') === 0){//自己删除草稿箱稿件 + continue; + } + if($iArticleUserId != $iUserId){//与其他作者的文章标题重名 + $aFlag[] = 2; + break; + }else{ + if($iState == 3){//编辑已拒绝文章 + $aFlag[] = 3; + break; + }elseif($iState == -1){//其他状态 + $aFlag[] = 4; + $iDraftId = $value['article_id']; + }else{ + $aFlag[] = 5; + break; + } + } + } + //返回数据 + $aFlag = empty($aFlag) ? [] : array_unique($aFlag); + $sMsg = ''; + if(empty($aFlag)){ + return ['status' => 1,'msg' => 'Enter the data processing flow']; + } + if(in_array(2, $aFlag) || in_array(5, $aFlag)){ + $sMsg = 'Please note that the manuscript with the same title is already under processing. Do not submit it again.'; + return ['status' => 20,'msg' => $sMsg]; + }elseif(in_array(3, $aFlag)){ + $sMsg = 'Please note that the manuscript with the same title has already been rejected. For more details, please contact the journal.'; + return ['status' => 21,'msg' => $sMsg]; + }elseif(in_array(4, $aFlag)){ + $sMsg = 'Please notice that the manuscript with the same title is already in the draft status. please click here'; + return ['status' => 22,'msg' => $sMsg,'draft_id' => $iDraftId]; + }else{ + return ['status' => 1,'msg' => 'Enter the data processing flow']; + } + } }