新增标题重复验证方法

This commit is contained in:
chengxl
2026-01-06 11:05:22 +08:00
parent f845b3c804
commit 97f4cb8012

View File

@@ -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'];
}
}
}