审稿人领域问题修改
This commit is contained in:
@@ -1786,56 +1786,174 @@ class Reviewer extends Base
|
||||
* @param name:pageIndex type:int require:1 desc:开始页码
|
||||
* @param name:pageSize type:int require:1 desc:每页是数据条数
|
||||
*/
|
||||
// public function getReviewerListByJournal()
|
||||
// {
|
||||
// $data = $this->request->post();
|
||||
// $editor_info = $this->user_obj->where('account', $data['username'])->where('state', 0)->find();
|
||||
// $limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
|
||||
// $jous = [];
|
||||
// $res = [];
|
||||
// $count = 0;
|
||||
// if ($data['journalId'] == 0) {
|
||||
// $jous = $this->journal_obj->where('editor_id', $editor_info['user_id'])->where('state', 0)->column('journal_id');
|
||||
// } else {
|
||||
// $jous[] = $data['journalId'];
|
||||
// }
|
||||
// $gradewhere = '';
|
||||
// if(isset($data['grade'])){
|
||||
// $gradewhere = 't_reviewer_to_journal.grade = "'.$data['grade'].'"';
|
||||
// }
|
||||
// if (isset($data['keyword'])) {
|
||||
// $res = $this->reviewer_to_journal_obj
|
||||
// ->field('t_reviewer_to_journal.is_yboard,t_user.*,t_reviewer_to_journal.grade,t_user_reviewer_info.*,t_journal.journal_id,t_journal.title journal_title')
|
||||
// ->join('t_journal', 't_journal.journal_id = t_reviewer_to_journal.journal_id', 'left')
|
||||
// ->join('t_user', 't_user.user_id = t_reviewer_to_journal.reviewer_id', 'left')
|
||||
// ->join('t_user_reviewer_info', 't_user_reviewer_info.reviewer_id = t_reviewer_to_journal.reviewer_id', 'LEFT')
|
||||
// ->where('t_reviewer_to_journal.journal_id', 'in', $jous)
|
||||
// ->where($gradewhere)
|
||||
// ->where('t_reviewer_to_journal.state', 0)
|
||||
// ->where("t_user.account|t_user.email", "like", '%' . $data['keyword'] . '%')
|
||||
// ->limit($limit_start, $data['pageSize'])
|
||||
// ->select();
|
||||
// $count = $this->reviewer_to_journal_obj->join('t_user', 't_user.user_id = t_reviewer_to_journal.reviewer_id', 'left')->join('t_user_reviewer_info', 't_user_reviewer_info.reviewer_id = t_reviewer_to_journal.reviewer_id', 'LEFT')->where('t_reviewer_to_journal.journal_id', 'in', $jous)->where($gradewhere)->where('t_reviewer_to_journal.state', 0)->where("t_user.account|t_user.email", "like", '%' . $data['keyword'] . '%')->count();
|
||||
// } else {
|
||||
// $res = $this->reviewer_to_journal_obj
|
||||
// ->field('t_reviewer_to_journal.is_yboard,t_user.*,t_reviewer_to_journal.grade,t_user_reviewer_info.*,t_journal.journal_id,t_journal.title journal_title')
|
||||
// ->join('t_journal', 't_journal.journal_id = t_reviewer_to_journal.journal_id', 'left')
|
||||
// ->join('t_user', 't_user.user_id = t_reviewer_to_journal.reviewer_id', 'left')
|
||||
// ->join('t_user_reviewer_info', 't_user_reviewer_info.reviewer_id = t_reviewer_to_journal.reviewer_id', 'LEFT')
|
||||
// ->where('t_reviewer_to_journal.journal_id', 'in', $jous)
|
||||
// ->where($gradewhere)
|
||||
// ->where('t_reviewer_to_journal.state', 0)
|
||||
// ->limit($limit_start, $data['pageSize'])
|
||||
// ->select();
|
||||
// $count = $this->reviewer_to_journal_obj->where('t_reviewer_to_journal.journal_id', 'in', $jous)->where($gradewhere)->where('t_reviewer_to_journal.state', 0)->count();
|
||||
// }
|
||||
// foreach($res as $k => $v){
|
||||
// $res[$k]['major_title'] = getMajorStr($v['major']);
|
||||
// $res[$k]['cvs'] = $this->getCvs($v['user_id']);
|
||||
// }
|
||||
// return json(['code' => 0, 'data' => $res, 'total' => $count]);
|
||||
// }
|
||||
|
||||
public function getReviewerListByJournal()
|
||||
{
|
||||
$data = $this->request->post();
|
||||
$editor_info = $this->user_obj->where('account', $data['username'])->where('state', 0)->find();
|
||||
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
|
||||
$sUserName = empty($data['username']) ? '' : $data['username'];
|
||||
if(!empty($sUserName)){
|
||||
$editor_info = $this->user_obj->where('account', $data['username'])->where('state', 0)->find();
|
||||
}
|
||||
|
||||
//每页显示数据
|
||||
$iSize = empty($data['pageSize']) ? 15 : $data['pageSize'];
|
||||
//当前页
|
||||
$iPage = empty($data['pageIndex']) ? 1 : $data['pageIndex'];
|
||||
$iOffset = ($iPage - 1) * $iSize;
|
||||
|
||||
$jous = [];
|
||||
$res = [];
|
||||
$count = 0;
|
||||
if ($data['journalId'] == 0) {
|
||||
$jous = $this->journal_obj->where('editor_id', $editor_info['user_id'])->where('state', 0)->column('journal_id');
|
||||
if(empty($data['journalId'])) {
|
||||
if(!empty($editor_info['user_id'])){
|
||||
$jous = $this->journal_obj->where('editor_id', $editor_info['user_id'])->where('state', 0)->column('journal_id');
|
||||
}
|
||||
} else {
|
||||
$jous[] = $data['journalId'];
|
||||
}
|
||||
$gradewhere = '';
|
||||
if(isset($data['grade'])){
|
||||
$gradewhere = 't_reviewer_to_journal.grade = "'.$data['grade'].'"';
|
||||
}
|
||||
if (isset($data['keyword'])) {
|
||||
$res = $this->reviewer_to_journal_obj
|
||||
->field('t_reviewer_to_journal.is_yboard,t_user.*,t_reviewer_to_journal.grade,t_user_reviewer_info.*,t_journal.journal_id,t_journal.title journal_title')
|
||||
->join('t_journal', 't_journal.journal_id = t_reviewer_to_journal.journal_id', 'left')
|
||||
->join('t_user', 't_user.user_id = t_reviewer_to_journal.reviewer_id', 'left')
|
||||
->join('t_user_reviewer_info', 't_user_reviewer_info.reviewer_id = t_reviewer_to_journal.reviewer_id', 'LEFT')
|
||||
->where('t_reviewer_to_journal.journal_id', 'in', $jous)
|
||||
->where($gradewhere)
|
||||
->where('t_reviewer_to_journal.state', 0)
|
||||
->where("t_user.account|t_user.email", "like", '%' . $data['keyword'] . '%')
|
||||
->limit($limit_start, $data['pageSize'])
|
||||
->select();
|
||||
$count = $this->reviewer_to_journal_obj->join('t_user', 't_user.user_id = t_reviewer_to_journal.reviewer_id', 'left')->join('t_user_reviewer_info', 't_user_reviewer_info.reviewer_id = t_reviewer_to_journal.reviewer_id', 'LEFT')->where('t_reviewer_to_journal.journal_id', 'in', $jous)->where($gradewhere)->where('t_reviewer_to_journal.state', 0)->where("t_user.account|t_user.email", "like", '%' . $data['keyword'] . '%')->count();
|
||||
} else {
|
||||
$res = $this->reviewer_to_journal_obj
|
||||
->field('t_reviewer_to_journal.is_yboard,t_user.*,t_reviewer_to_journal.grade,t_user_reviewer_info.*,t_journal.journal_id,t_journal.title journal_title')
|
||||
->join('t_journal', 't_journal.journal_id = t_reviewer_to_journal.journal_id', 'left')
|
||||
->join('t_user', 't_user.user_id = t_reviewer_to_journal.reviewer_id', 'left')
|
||||
->join('t_user_reviewer_info', 't_user_reviewer_info.reviewer_id = t_reviewer_to_journal.reviewer_id', 'LEFT')
|
||||
->where('t_reviewer_to_journal.journal_id', 'in', $jous)
|
||||
->where($gradewhere)
|
||||
->where('t_reviewer_to_journal.state', 0)
|
||||
->limit($limit_start, $data['pageSize'])
|
||||
->select();
|
||||
$count = $this->reviewer_to_journal_obj->where('t_reviewer_to_journal.journal_id', 'in', $jous)->where($gradewhere)->where('t_reviewer_to_journal.state', 0)->count();
|
||||
}
|
||||
foreach($res as $k => $v){
|
||||
$res[$k]['major_title'] = getMajorStr($v['major']);
|
||||
$res[$k]['cvs'] = $this->getCvs($v['user_id']);
|
||||
}
|
||||
return json(['code' => 0, 'data' => $res, 'total' => $count]);
|
||||
}
|
||||
|
||||
|
||||
//查询基本条件
|
||||
$aWhere = ['journal_id' => ['in',$jous],'state' => 0];
|
||||
if(!empty($data['grade'])){
|
||||
$aWhere['grade'] = trim($data['grade']);
|
||||
}
|
||||
|
||||
//根据邮箱查询
|
||||
if(!empty($data['keyword'])){
|
||||
$aUserId = Db::name('user')->where(['email'=>['like','%' . $data['keyword'] . '%'],'state' => 0])->column('user_id');
|
||||
if(empty($aUserId)){
|
||||
return json(['code' => 0, 'data' => [], 'total' => 0]);
|
||||
}
|
||||
$aWhere['reviewer_id'] = ['in',$aUserId];
|
||||
}
|
||||
|
||||
//根据领域
|
||||
if(!empty($data['user_field'])){
|
||||
$aMajorWhere = ['state' => 0,'major_id' => $data['user_field']];
|
||||
if(!empty($aWhere['reviewer_id'])){
|
||||
$aMajorWhere['user_id'] = $aWhere['reviewer_id'];
|
||||
}
|
||||
$aUserId = Db::name('major_to_user')->where($aMajorWhere)->order('user_id asc')->column('user_id');
|
||||
if(empty($aUserId)){
|
||||
return json(['code' => 0, 'data' => [], 'total' => 0]);
|
||||
}
|
||||
// $aWhere['t_user.email'] = ['like','%' . $data['keyword'] . '%'];
|
||||
$aWhere['reviewer_id'] = ['in',$aUserId];
|
||||
}
|
||||
|
||||
//获取数量
|
||||
$count = $this->reviewer_to_journal_obj->where($aWhere)->count();
|
||||
if(empty($count)){
|
||||
return json(['code' => 0, 'data' => [], 'total' => 0]);
|
||||
}
|
||||
//获取数据详情
|
||||
$aResult = $this->reviewer_to_journal_obj
|
||||
->field('t_reviewer_to_journal.is_yboard,t_reviewer_to_journal.grade,t_reviewer_to_journal.journal_id,t_reviewer_to_journal.reviewer_id')
|
||||
->where($aWhere)
|
||||
->limit($iOffset, $iSize)
|
||||
->select();
|
||||
if(!empty($aResult)){
|
||||
//获取期刊信息
|
||||
$aJournalId = array_unique(array_column($aResult, 'journal_id'));
|
||||
$aJournal = Db::name('journal')->where(['journal_id'=>['in',$aJournalId]])->column('journal_id,title');
|
||||
|
||||
//获取审稿人信息
|
||||
$aReviewerId = array_column($aResult, 'reviewer_id');
|
||||
$aReviewer = Db::name('user_reviewer_info')->field('reviewer_id,gender,technical,country,introduction,company,website,field,qualifications')->where(['reviewer_id'=>['in',$aReviewerId]])->select();
|
||||
$aReviewer = empty($aReviewer) ? [] : array_column($aReviewer, null,'reviewer_id');
|
||||
|
||||
//用户基本信息
|
||||
$aUser = Db::name('user')->field('user_id,account,email,phone,nickname,realname,localname,type,score,remark,wos_index,wos_time,g_author,g_website,google_index,google_time,google_editor,scopus_index,scopus_time,scopus_website,scopus_editor,code,orcid,orcid_code')->where(['user_id'=>['in',$aReviewerId]])->select();
|
||||
$aUser = empty($aUser) ? [] : array_column($aUser, null,'user_id');
|
||||
|
||||
//查询CV
|
||||
$aUserCv = $this->user_cv_obj->where(['user_id'=>['in',$aReviewerId],'state' =>0])->select();
|
||||
if(!empty($aUserCv)){
|
||||
$aUserCvArray = [];
|
||||
foreach ($aUserCv as $key => $value) {
|
||||
$aUserCvArray[$value['user_id']][] = $value;
|
||||
}
|
||||
}
|
||||
$aUserCv = empty($aUserCv) ? [] : array_column($aUserCv, null,'user_id');
|
||||
foreach ($aResult as $key => $value) {
|
||||
|
||||
//期刊信息
|
||||
$aJournalInfo = empty($aJournal[$value['journal_id']]) ? [] : $aJournal[$value['journal_id']];
|
||||
if(!empty($aJournalInfo['title'])){
|
||||
|
||||
$aJournalInfo['journal_title'] = $aJournalInfo['title'];
|
||||
unset($aJournalInfo['title']);
|
||||
unset($aResult[$key]['journal_id']);
|
||||
$aResult[$key] += $aJournalInfo;
|
||||
}
|
||||
|
||||
//审稿人信息
|
||||
$aReviewerInfo = empty($aReviewer[$value['reviewer_id']]) ? [] : $aReviewer[$value['reviewer_id']];
|
||||
if(!empty($aReviewerInfo)){
|
||||
$aResult[$key] += $aReviewerInfo;
|
||||
}
|
||||
|
||||
//审稿人信息
|
||||
$aUserInfo = empty($aUser[$value['reviewer_id']]) ? [] : $aUser[$value['reviewer_id']];
|
||||
if(!empty($aUserInfo)){
|
||||
$aResult[$key] += $aUserInfo;
|
||||
}
|
||||
//用户CVS信息
|
||||
$aUserCvInfo = empty($aUserCvArray[$value['reviewer_id']]) ? [] : $aUserCvArray[$value['reviewer_id']];
|
||||
$aResult[$key]['cvs'] = empty($aUserCvInfo) ? [] : $aUserCvInfo;
|
||||
unset($aResult[$key]['reviewer_id']);
|
||||
}
|
||||
}
|
||||
return json(['code' => 0, 'data' => $aResult, 'total' => $count]);
|
||||
}
|
||||
/**
|
||||
* @title 获取国家
|
||||
* @description 获取国家
|
||||
@@ -2119,4 +2237,77 @@ class Reviewer extends Base
|
||||
// $pdf->Output($pdf_wj, 'F');
|
||||
// return $pdf_wj;
|
||||
// }
|
||||
|
||||
/**
|
||||
* 获取用户所属领域
|
||||
* @param reviewer_id 审核人ID
|
||||
* @param
|
||||
*/
|
||||
public function getUserField($aParam = []){
|
||||
|
||||
$aParam = empty($aParam) ? $this->request->post() : $this->request->post();
|
||||
|
||||
if(empty($aParam['user_id'])){
|
||||
return json_encode(['status' => 2,'msg' => 'Please select a reviewer']);
|
||||
}
|
||||
|
||||
//查询审稿人领域信息
|
||||
$aParam['state'] = 0;
|
||||
$aReviewerMajor = Db::name('major_to_user')->field('major_id')->where($aParam)->order('major_id asc')->select();
|
||||
if(empty($aReviewerMajor)){
|
||||
return json_encode(['status' => 1,'msg' => "Reviewer's field information is empty",'data' => []]);
|
||||
}
|
||||
|
||||
//数据处理
|
||||
foreach ($aReviewerMajor as $key => $value) {
|
||||
$aReviewerMajor[$key]['major_title'] = getMajorStr($value['major_id']);
|
||||
}
|
||||
return json_encode(['status' => 1,'msg' => "Reviewer's field information is empty",'data' => $aReviewerMajor]);
|
||||
}
|
||||
/**
|
||||
* 修改用户所属领域
|
||||
* @param reviewer_id 审核人ID
|
||||
* @param
|
||||
*/
|
||||
public function updateUserField($aParam = []){
|
||||
|
||||
$aParam = empty($aParam) ? $this->request->post() : $this->request->post();
|
||||
$iUserId = empty($aParam['user_id']) ? 0 : $aParam['user_id'];
|
||||
if(empty($iUserId)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please select a reviewer']);
|
||||
}
|
||||
$sField = empty($aParam['user_field']) ? '' : $aParam['user_field'];
|
||||
if(empty($sField)){
|
||||
return json_encode(['status' => 2,'msg' => "Please select the user's field of expertise"]);
|
||||
}
|
||||
$aField = is_array($sField) ? $sField : explode(',', trim($sField,','));
|
||||
if(empty($aField)){
|
||||
return json_encode(['status' => 3,'msg' => "Please select the user's field of expertise"]);
|
||||
}
|
||||
//查询审稿人领域信息
|
||||
$aWhere = ['state' => 0,'user_id' => $iUserId];
|
||||
$aReviewerMajor = Db::name('major_to_user')->where($aWhere)->order('major_id asc')->column('major_id');
|
||||
|
||||
//新增
|
||||
$aInsert = array_diff($aField,$aReviewerMajor);
|
||||
//删除
|
||||
$aDelete = array_diff($aReviewerMajor,$aField);
|
||||
|
||||
//数据处理
|
||||
Db::startTrans();
|
||||
if(!empty($aInsert)){//新增
|
||||
foreach ($aInsert as $key => $value) {
|
||||
$aAdd[] = ['major_id' => $value,'user_id' => $iUserId,'ctime' => time(),'state' => 0];
|
||||
}
|
||||
$result = Db::name('major_to_user')->insertAll($aAdd);
|
||||
echo Db::getLastSql();
|
||||
}
|
||||
if(!empty($aDelete)){//修改状态为1
|
||||
$aWhere = ['user_id' => $iUserId,'state' => 0,'major_id' => ['in',$aDelete]];
|
||||
$result = Db::name('major_to_user')->where($aWhere)->limit(count($aDelete))->update(['state' => 1,'ctime' => time()]);
|
||||
echo Db::getLastSql();
|
||||
}
|
||||
Db::commit();
|
||||
return json_encode(['status' => 1,'msg' => "Reviewer's field has been successfully modified"]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user