This commit is contained in:
chengxl
2025-11-05 13:10:42 +08:00
parent a6ef4f65af
commit d35a634608

View File

@@ -96,7 +96,6 @@ class Contribute extends Base
if(!empty($aArticle)){ if(!empty($aArticle)){
return json_encode(['code' => 7, 'msg' => 'Warning: you are re-submitting the article!']); return json_encode(['code' => 7, 'msg' => 'Warning: you are re-submitting the article!']);
} }
//数据入库 //数据入库
$aData += $aParam; $aData += $aParam;
$result = $this->_addData($aData); $result = $this->_addData($aData);
@@ -121,34 +120,35 @@ class Contribute extends Base
//插入基础表 t_article //插入基础表 t_article
$aInsert = []; $aInsert = [];
//标题 //标题
if(empty($aArticle['title'])){ // if(empty($aArticle['title'])){
$sTitile = empty($aParam['title']) ? '' : $aParam['title']; $sTitile = empty($aParam['title']) ? '' : $aParam['title'];
if(!empty($sTitile)){ if(!empty($sTitile)){
$aInsert['title'] = $sTitile; $aInsert['title'] = is_string($sTitile) ? strip_tags($sTitile) : '';
} }
} // }
//关键词 //关键词
if(empty($aArticle['keywords'])){ // if(empty($aArticle['keywords'])){
$sKeyWords = empty($aParam['keywords']) ? '' : $aParam['keywords']; $sKeyWords = empty($aParam['keywords']) ? '' : $aParam['keywords'];
if(!empty($sKeyWords)){ if(!empty($sKeyWords)){
$aInsert['keywords'] = is_array($sKeyWords) ? implode(',', $sKeyWords) : $sKeyWords; $aInsert['keywords'] = is_array($sKeyWords) ? implode(',', $sKeyWords) : $sKeyWords;
$aInsert['keywords'] = is_string($aInsert['keywords']) ? strip_tags($aInsert['keywords']) : '';
} }
} // }
//摘要 //摘要
if(empty($aArticle['abstrart'])){ // if(empty($aArticle['abstrart'])){
$sAbstrart = empty($aParam['abstrart']) ? '' : $aParam['abstrart']; $sAbstrart = empty($aParam['abstrart']) ? '' : $aParam['abstrart'];
if(!empty($sAbstrart)){ if(!empty($sAbstrart)){
$aInsert['abstrart'] = $sAbstrart; $aInsert['abstrart'] = is_string($sAbstrart) ? strip_tags($sAbstrart) : '';
} }
} // }
//基金 //基金
if(empty($aArticle['fund'])){ // if(empty($aArticle['fund'])){
$sFund = empty($aParam['fund']) ? '' : $aParam['fund']; $sFund = empty($aParam['fund']) ? '' : $aParam['fund'];
if(!empty($sAbstrart)){ if(!empty($sFund)){
$aInsert['fund'] = $sFund; $aInsert['fund'] = is_string($sFund) ? strip_tags($sFund) : '';
} }
} // }
//期刊ID //期刊ID
$iJournalId = empty($aParam['journal_id']) ? 0 : $aParam['journal_id']; $iJournalId = empty($aParam['journal_id']) ? 0 : $aParam['journal_id'];
if(!empty($iJournalId)){ if(!empty($iJournalId)){
@@ -182,19 +182,14 @@ class Contribute extends Base
$aInsert['state'] = -1; $aInsert['state'] = -1;
$aInsert['is_use_ai'] = 3; $aInsert['is_use_ai'] = 3;
$aInsert['is_figure_copyright'] = 3; $aInsert['is_figure_copyright'] = 3;
$aInsert['is_transfer'] = 3; // $aInsert['is_transfer'] = 3;
$aInsert['is_become_reviewer'] = 3; $aInsert['is_become_reviewer'] = 3;
$sType = empty($aParam['type']) ? 'D' : $aParam['type'];
$aInsert['accept_sn'] = getArticleSN('Draft',$sType);
$iArticleId = Db::name('article')->insertGetId($aInsert); $iArticleId = Db::name('article')->insertGetId($aInsert);
if(empty($iArticleId)){ if(empty($iArticleId)){
return json_encode(['status' => 3,'msg' => 'Article added successfully']); return json_encode(['status' => 3,'msg' => 'Article added successfully']);
} }
//获取accept_sn并更新
$sAcceptSn = $this->getArticleAcceptSn(['article_id' => $iArticleId]);
if(!empty($sAcceptSn)){
$aWhere = ['article_id' => $iArticleId];
$aUpdate = ['accept_sn' => $sAcceptSn];
$update_result = Db::name('article')->where($aWhere)->limit(1)->update($aUpdate);
}
} }
if(!empty($aArticle) && !empty($aInsert)){//更新 if(!empty($aArticle) && !empty($aInsert)){//更新
$aWhere = ['article_id' => $iUpdateArticleId,'state' => ['in',[-1,3]]]; $aWhere = ['article_id' => $iUpdateArticleId,'state' => ['in',[-1,3]]];
@@ -237,6 +232,10 @@ class Contribute extends Base
$iSort = $iMaxSort; $iSort = $iMaxSort;
$aSort[$key] = $iMaxSort; $aSort[$key] = $iMaxSort;
} }
$sName = is_string($sName) ? strip_tags($sName) : '';
if(empty($sName)){
continue;
}
$aCompanyInsert[] = ['article_id' => $iArticleId,'organ_name' =>$sName,'create_time' => time(),'sort' => $iSort]; $aCompanyInsert[] = ['article_id' => $iArticleId,'organ_name' =>$sName,'create_time' => time(),'sort' => $iSort];
} }
} }
@@ -246,7 +245,8 @@ class Contribute extends Base
return json_encode(['status' => 3,'msg' => 'Article institution insertion failed']); return json_encode(['status' => 3,'msg' => 'Article institution insertion failed']);
} }
$aWhere = ['article_id' => $iArticleId,'state' => 0]; $aWhere = ['article_id' => $iArticleId,'state' => 0];
$aCompanyData = Db::name('article_organ')->where($aWhere)->column('sort,organ_id'); $aCompanyData = Db::name('article_organ')->field('sort,organ_id,organ_name')->where($aWhere)->select();
$aCompanyData = empty($aCompanyData) ? [] : array_column($aCompanyData, null,'sort');
} }
//处理作者 //处理作者
$aAuthorData = $aAuthorOrgn = []; $aAuthorData = $aAuthorOrgn = [];
@@ -262,18 +262,54 @@ class Contribute extends Base
if(empty($iArticleId)){ if(empty($iArticleId)){
break; break;
} }
//处理作者名字
$aName = empty($value['name']) ? [] : explode(' ', $value['name']);
if(empty($aName)){
continue;
}
//名字拆分
$sLastName = array_pop($aName);
$value['firstname'] = empty($aName) ? '' : trim(implode(' ', $aName));
$value['lastname'] = $sLastName;
//处理作者机构单位关联 //处理作者机构单位关联
$aCountry = [];
if(!empty($value['company_id'])){ if(!empty($value['company_id'])){
foreach ($value['company_id'] as $k => $v) { foreach ($value['company_id'] as $k => $v) {
$iNewSort = empty($aSort[$v]) ? $v : $aSort[$v]; $iNewSort = empty($aSort[$v]) ? $v : $aSort[$v];
$iOrgnId = empty($aCompanyData[$iNewSort]) ? 0 : $aCompanyData[$iNewSort]; $iOrgnId = empty($aCompanyData[$iNewSort]['organ_id']) ? 0 : $aCompanyData[$iNewSort]['organ_id'];
if(empty($iOrgnId)){ if(empty($iOrgnId)){
continue; continue;
} }
$aAuthorOrgn[] = ['article_id' => $iArticleId,'organ_id' => $iOrgnId,'art_aut_id' => $value['name']];
//获取
$sOrganName = empty($aCompanyData[$iNewSort]['organ_name']) ? 0 : $aCompanyData[$iNewSort]['organ_name'];
if(!empty($sOrganName)){
$sOrganName = str_replace([', ',''], ',', $sOrganName);
$aOrganName = explode(',',$sOrganName);
$aCountry[] = empty($aOrganName) ? '' : strtolower(end($aOrganName));
}
$aAuthorOrgn[] = ['article_id' => $iArticleId,'organ_id' => $iOrgnId,'art_aut_id' => $value['firstname']];
} }
} }
$value['firstname'] = empty($value['name']) ? '' : trim($value['name']);
//处理城市
$aCountry = empty($aCountry) ? [] : array_unique($aCountry);
$value['country'] = '';
if(count($aCountry) == 1){
$value['country'] = empty($aCountry[0]) ? '' : ucfirst($aCountry[0]);
}
if(count($aCountry) > 1){
// 1. 找到目标值的键名
$key = array_search('china', $aCountry);
// 2. 确认找到后删除(避免键名为 0 时被误判为 false
if ($key !== false) {
unset($aCountry[$key]);
}
$aCountry = empty($aCountry) ? [] : array_values($aCountry);
$value['country'] = empty($aCountry[0]) ? '' : ucfirst($aCountry[0]);
}
//已添加 //已添加
if(!empty($value['firstname']) && in_array($value['firstname'], $aAuthorList)){ if(!empty($value['firstname']) && in_array($value['firstname'], $aAuthorList)){
continue; continue;
@@ -281,7 +317,7 @@ class Contribute extends Base
$value['email'] = empty($aCorresponding[$value['name']]['email']) ? '' : $aCorresponding[$value['name']]['email']; $value['email'] = empty($aCorresponding[$value['name']]['email']) ? '' : $aCorresponding[$value['name']]['email'];
$value['article_id'] = $iArticleId; $value['article_id'] = $iArticleId;
unset($value['name'],$value['company_id']); unset($value['name'],$value['company_id']);
$aAuthorData[$key] = $value; $aAuthorData[] = $value;
} }
} }
if(!empty($aAuthorData)){ if(!empty($aAuthorData)){
@@ -318,9 +354,11 @@ class Contribute extends Base
continue; continue;
} }
$value['art_aut_id'] = $iAuthorId; $value['art_aut_id'] = $iAuthorId;
$value['create_time'] = time();
$aAuthorOrgnInsert[] = $value; $aAuthorOrgnInsert[] = $value;
} }
} }
if(!empty($aAuthorOrgnInsert)){ if(!empty($aAuthorOrgnInsert)){
$author_orgn_result = DB::name('article_author_organ')->insertAll($aAuthorOrgnInsert); $author_orgn_result = DB::name('article_author_organ')->insertAll($aAuthorOrgnInsert);
if(empty($author_orgn_result)){ if(empty($author_orgn_result)){
@@ -342,18 +380,4 @@ class Contribute extends Base
$aInsert['article_id'] = $iArticleId; $aInsert['article_id'] = $iArticleId;
return json_encode(['status' => 1,'msg' => 'Successfully added article','article' => $aInsert]); return json_encode(['status' => 1,'msg' => 'Successfully added article','article' => $aInsert]);
} }
/**
* 生成文章sn号
*/
private function getArticleAcceptSn($aParam = [],$sFlag = 'Draft')
{
$iArticleId = empty($aParam['article_id']) ? 0 : $aParam['article_id'];
if(empty($iArticleId)){
return '';
}
$sDate = date('Y');
$sType = $sDate;
return $sFlag.$sType.str_pad($iArticleId,6,'0',STR_PAD_LEFT).rand(100,999);
}
} }