This commit is contained in:
wangjinlei
2025-04-18 14:06:14 +08:00
8 changed files with 723 additions and 1 deletions

View File

@@ -298,7 +298,6 @@ class Article extends Base
//接受参数
$data = $this->request->post();
if (isset($data['sn']) && trim($data['sn']) != "") {
$where["t_article.accept_sn"] = trim($data['sn']);
$sn_info = $this->article_obj->where('accept_sn', trim($data['sn']))->find();
@@ -1196,6 +1195,7 @@ class Article extends Base
*/
public function editArticleEditor()
{
//接受参数,查询信息
$data = $this->request->post();
$where_editor['account'] = $data['editname'];
@@ -1608,6 +1608,9 @@ class Article extends Base
//增加usermsg
add_usermsg($article_info['user_id'], 'Your manuscript has new process: ' . $article_info['title'], '/articleDetail?id=' . $article_info['article_id']);
//重新计算审稿人的审稿质量 chengxiaoling start 0416
$this->reviewQuality($article_info['article_id']);
//重新计算审稿人的审稿质量 chengxiaoling end 0416
return json(['code' => 0]);
}
@@ -4312,4 +4315,82 @@ class Article extends Base
$total = mb_strlen($filteredStr, 'UTF-8');
return $total >= $num;
}
/**
* 审稿人审稿质量
* @param $article_id 文章ID
* @return void
*/
private function reviewQuality($article_id = ''){
$article_id = empty($article_id) ? $this->request->post('article_id') : $article_id;
if(empty($article_id)){
return json(['status' => 2,'msg' => '请选择要查询的文章']);
}
//查询文章状态
$aWhere = [
'article_id'=>$article_id,
'state'=>['in',[3,5]]
];
$aArticle = Db::name('article')->field('article_id,state')->where($aWhere)->find();
if(empty($aArticle)){
return json(['status' => 1,'msg' => '暂无数据']);
}
//获取该文章审核人的信息
$aWhere = [
'article_id'=>$aArticle['article_id'],
'state'=>['in',[2,3]]
];
$aReviewer = Db::name('article_reviewer')->where($aWhere)->column('reviewer_id,state');
if(empty($aReviewer)){
return json(['status' => 1,'msg' => '未查询到审核人信息']);
}
//查询审核人信息
$aUserId = array_keys($aReviewer);
$aUser = Db::name('user')->field('user_id,rs_num,rigxht_times,error_times')->whereIn('user_id',$aUserId)->select();
if(empty($aUser)){
return json(['status' => 1,'msg' => '未查询到审核人信息']);
}
//处理数据并组装数据
$aCase = ['right_times' => '', 'right_rate' => '','error_times' => '', 'error_rate' => ''];
$aToState = [2 => 3,3 => 5];//文章3拒稿5录用 审稿人2拒稿3通过
foreach ($aUser as $key => $value) {
$iState = empty($aReviewer[$value['user_id']]) ? 0 : $aReviewer[$value['user_id']];
if(empty($iState)){
continue;
}
if(empty($aToState[$iState])){
continue;
}
if($aArticle['state'] == $aToState[$iState]){
$iTimes = $value['right_times']+1;
$iRightNum = empty($value['rs_num']) ? 0 : round($iTimes/$value['rs_num'],2);
$aCase['right_times'] .= "WHEN {$value['user_id']} THEN ";
$aCase['right_times'] .= "'{$iTimes}' ";
$aCase['right_rate'] .= "WHEN {$value['user_id']} THEN ";
$aCase['right_rate'] .= "'{$iRightNum}' ";
}
if($aArticle['state'] != $aToState[$iState]){
$iErrorTimes = $value['error_times']+1;
$iErrorNum = empty($value['rs_num']) ? 0 : round($iErrorTimes/$value['rs_num'],2);
$aCase['error_times'] .= "WHEN {$value['user_id']} THEN ";
$aCase['error_times'] .= "'{$iErrorTimes}' ";
$aCase['error_rate'] .= "WHEN {$value['user_id']} THEN ";
$aCase['error_rate'] .= "'{$iErrorNum}' ";
}
$aId[] = $value['user_id'];
}
//更新数据库
foreach ($aCase as $key => $value) {
if(empty($value)){
continue;
}
$aUpdate[$key] = Db::raw('CASE user_id '.$value.'END');
}
if(empty($aUpdate) || empty($aId)){
return json(['status' => 1,'msg' => '未查询到审核人信息']);
}
Db::name('user')->where('user_id', 'IN', $aId)->limit(count($aId))->update($aUpdate);
return json(['status' => 1,'msg' => '执行成功']);
}
}