This commit is contained in:
王金磊
2023-03-30 11:44:37 +08:00
parent 34494929a6
commit e4be850ba1
14 changed files with 625 additions and 910 deletions

View File

@@ -2,60 +2,21 @@
namespace app\api\controller;
use think\Controller;
use app\api\controller\Base;
use think\Db;
use think\Validate;
use TCPDF;
use think\Queue;
/**
* @title 审稿人接口
* @description 审稿人接口
*/
class Reviewer extends Controller
class Reviewer extends Base
{
protected $user_obj = '';
protected $user_reviewer_obj = '';
protected $journal_obj = '';
protected $reviewer_major_obj = '';
protected $reviewer_to_journal_obj = '';
protected $user_reviewer_info_obj = '';
protected $user_log_obj = '';
protected $article_obj = '';
protected $article_file_obj = '';
protected $article_reviewer_obj = '';
protected $article_reviewer_file_obj = '';
protected $article_reviewer_question_obj = '';
protected $chief_to_journal_obj = '';
protected $board_to_journal_obj = '';
protected $login_auto_obj = '';
protected $country_obj = '';
protected $user_reviewer_recommend_obj = '';
protected $article_msg_obj = '';
//put your code here
public function __construct(\think\Request $request = null)
{
parent::__construct($request);
$this->user_obj = Db::name('user');
$this->user_reviewer_obj = Db::name('user_reviewer_apply');
$this->journal_obj = Db::name('journal');
$this->reviewer_major_obj = Db::name('reviewer_major');
$this->reviewer_to_journal_obj = Db::name('reviewer_to_journal');
$this->user_reviewer_info_obj = Db::name('user_reviewer_info');
$this->user_log_obj = Db::name('user_log');
$this->article_obj = Db::name('article');
$this->article_file_obj = Db::name('article_file');
$this->article_reviewer_obj = Db::name('article_reviewer');
$this->article_reviewer_file_obj = Db::name('article_reviewer_file');
$this->article_reviewer_question_obj = Db::name('article_reviewer_question');
$this->chief_to_journal_obj = Db::name('chief_to_journal');
$this->board_to_journal_obj = Db::name('board_to_journal');
$this->login_auto_obj = Db::name('login_auto');
$this->country_obj = Db::name('country');
$this->user_reviewer_recommend_obj = Db::name('user_reviewer_recommend');
$this->article_msg_obj = Db::name('article_msg');
}
/**
@@ -250,6 +211,8 @@ class Reviewer extends Controller
->where('t_user.account|t_user.email', 'like', '%' . $data['account'] . '%')
->where('t_user.state', 0)
->find();
$check['majorshu'] = getMajorShu($check['major']);
$check['cvs'] = getReviewerCvs($check['user_id']);
$check['title'] = $check['technical'];
$re['reviewer'] = $check;
return jsonSuccess($re);
@@ -1402,7 +1365,6 @@ class Reviewer extends Controller
$info_insert['introduction'] = isset($data['introduction']) ? trim($data['introduction']) : '';
$info_insert['company'] = isset($data['company']) ? trim($data['company']) : '';
$info_insert['major'] = $data['major'];
$info_insert['cmajor'] = $data['cmajor'];
$info_insert['qualifications'] = isset($data['cv'])?trim($data['cv']):'';
$info_insert['field'] = trim($data['field']);
$res1 = $this->user_reviewer_info_obj->insertGetId($info_insert);
@@ -1469,7 +1431,7 @@ class Reviewer extends Controller
$info_insert['introduction'] = isset($data['introduction']) ? trim($data['introduction']) : '';
$info_insert['company'] = isset($data['company']) ? trim($data['company']) : '';
$info_insert['major'] = $data['major'];
$info_insert['cmajor'] = $data['cmajor'];
// $info_insert['cmajor'] = $data['cmajor'];
$info_insert['field'] = trim($data['field']);
$info_insert['qualifications'] = trim($data['cv']);
if ($reviewer_info == null) {
@@ -1602,10 +1564,11 @@ class Reviewer extends Controller
}
foreach($res as $k => $v){
$major_res = $this->reviewer_major_obj->where('major_id', $v['major'])->column('title');
$res[$k]['major_title'] = $major_res ? $major_res[0] : '';
$cmajor_res = $this->reviewer_major_obj->where('major_id', $v['cmajor'])->column('title');
$res[$k]['cmajor_title'] = $cmajor_res ? $cmajor_res[0] : '';
$res[$k]['major_title'] = getMajorStr($v['major']);
// $major_res = $this->reviewer_major_obj->where('major_id', $v['major'])->column('title');
// $res[$k]['major_title'] = $major_res ? $major_res[0] : '';
// $cmajor_res = $this->reviewer_major_obj->where('major_id', $v['cmajor'])->column('title');
// $res[$k]['cmajor_title'] = $cmajor_res ? $cmajor_res[0] : '';
}
return json(['code' => 0, 'data' => $res, 'total' => $count]);
}
@@ -1693,116 +1656,45 @@ class Reviewer extends Controller
public function searchReviewer()
{
$data = $this->request->post();
$rule = new Validate([
'article_id'=>'require',
'pageIndex'=>'require',
'pageSize'=>'require'
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$article_info = $this->article_obj->where("article_id", $data['article_id'])->find();
$noids = $this->article_reviewer_obj->where('article_id', $data['article_id'])->column('reviewer_id');
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
$list = [];
$gradewhere = '';
if(isset($data['grade'])){
$gradewhere = 't_reviewer_to_journal.grade = "'.$data['grade'].'"';
$where['t_reviewer_to_journal.journal_id'] = $article_info['journal_id'];
$where['t_reviewer_to_journal.reviewer_id'] = ['not in',$noids];
$where['t_reviewer_to_journal.state'] = 0;
if(isset($data['keywords'])&&$data['keywords']!=''){
$where['t_user_reviewer_info.introduction|t_user_reviewer_info.field|t_user.account|t_user.email|t_user.realname'] = ['like',"%" . $data["keywords"] . "%"];
}
$count = 0;
if ($data["keywords"] == "") {
if ($data["major_id"] == 0) {
$list = $this->reviewer_to_journal_obj
->field("t_user.user_id,t_user.realname,t_reviewer_major.title cmajor,t_reviewer_to_journal.grade,t_user.account,t_user_reviewer_info.company,t_user_reviewer_info.field,t_user.rs_num,t_user.rd_num")
->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")
->join("t_reviewer_major", "t_reviewer_major.major_id = t_user_reviewer_info.cmajor", "left")
->where('t_reviewer_to_journal.journal_id', $article_info['journal_id'])
->where('t_reviewer_to_journal.reviewer_id', 'not in', $noids)
->where($gradewhere)
->where('t_reviewer_to_journal.state', 0)
->order("t_user.rs_num desc")
->limit($limit_start, $data['pageSize'])
->select();
$count = $this->reviewer_to_journal_obj
->where('t_reviewer_to_journal.journal_id', $article_info['journal_id'])
->where('t_reviewer_to_journal.reviewer_id', 'not in', $noids)
->where($gradewhere)
->where('t_reviewer_to_journal.state', 0)
->count();
} else {
$list = $this->reviewer_to_journal_obj
->field("t_user.user_id,t_user.realname,t_reviewer_major.title cmajor,t_reviewer_to_journal.grade,t_user.account,t_user_reviewer_info.company,t_user_reviewer_info.field,t_user.rs_num,t_user.rd_num")
->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")
->join("t_reviewer_major", "t_reviewer_major.major_id = t_user_reviewer_info.cmajor", "left")
->where('t_reviewer_to_journal.journal_id', $article_info['journal_id'])
->where('t_reviewer_to_journal.reviewer_id', 'not in', $noids)
->where($gradewhere)
->where("t_user_reviewer_info.major", $data['major_id'])
->where('t_reviewer_to_journal.state', 0)
->order("t_user.rs_num desc")
->limit($limit_start, $data['pageSize'])
->select();
$count = $this->reviewer_to_journal_obj
->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', $article_info['journal_id'])
->where('t_reviewer_to_journal.reviewer_id', 'not in', $noids)
->where($gradewhere)
->where("t_user_reviewer_info.major", $data['major_id'])
->where('t_reviewer_to_journal.state', 0)
->count();
}
} else {
if ($data["major_id"] == 0) {
$list = $this->reviewer_to_journal_obj
->field("t_user.user_id,t_user.realname,t_reviewer_major.title cmajor,t_reviewer_to_journal.grade,t_user.account,t_user_reviewer_info.company,t_user_reviewer_info.field,t_user.rs_num,t_user.rd_num")
->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")
->join("t_reviewer_major", "t_reviewer_major.major_id = t_user_reviewer_info.cmajor", "left")
->where('t_reviewer_to_journal.journal_id', $article_info['journal_id'])
->where('t_reviewer_to_journal.reviewer_id', 'not in', $noids)
->where($gradewhere)
->where("t_user_reviewer_info.introduction|t_user_reviewer_info.field|t_user.account|t_user.email|t_user.realname", "like", "%" . $data["keywords"] . "%")
->where('t_reviewer_to_journal.state', 0)
->order("t_user.rs_num desc")
->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', $article_info['journal_id'])
->where('t_reviewer_to_journal.reviewer_id', 'not in', $noids)
->where($gradewhere)
->where("t_user_reviewer_info.introduction|t_user_reviewer_info.field|t_user.account|t_user.email|t_user.realname", "like", "%" . $data["keywords"] . "%")
->where('t_reviewer_to_journal.state', 0)
->count();
} else {
$list = $this->reviewer_to_journal_obj
->field("t_user.user_id,t_user.realname,t_reviewer_major.title cmajor,t_reviewer_to_journal.grade,t_user.account,t_user_reviewer_info.company,t_user_reviewer_info.field,t_user.rs_num,t_user.rd_num")
->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")
->join("t_reviewer_major", "t_reviewer_major.major_id = t_user_reviewer_info.cmajor", "left")
->where('t_reviewer_to_journal.journal_id', $article_info['journal_id'])
->where("t_user_reviewer_info.major", $data['major_id'])
->where('t_reviewer_to_journal.reviewer_id', 'not in', $noids)
->where($gradewhere)
->where("t_user_reviewer_info.introduction|t_user_reviewer_info.field|t_user.account|t_user.email|t_user.realname", "like", "%" . $data["keywords"] . "%")
->where('t_reviewer_to_journal.state', 0)
->order("t_user.rs_num desc")
->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', $article_info['journal_id'])
->where("t_user_reviewer_info.major", $data['major_id'])
->where('t_reviewer_to_journal.reviewer_id', 'not in', $noids)
->where($gradewhere)
->where("t_user_reviewer_info.introduction|t_user_reviewer_info.field|t_user.account|t_user.email|t_user.realname", "like", "%" . $data["keywords"] . "%")
->where('t_reviewer_to_journal.state', 0)
->count();
}
if(isset($data['major_id'])&&$data['major_id']!=0){
$where['t_user_reviewer_info.major'] = $data['major_id'];
}
$list = $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($where)
->order('t_user.rs_num desc')
->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($where)
->count();
foreach($list as $k => $v){
$list[$k]['majorstr'] = getMajorStr($v['major']);
$list[$k]['now'] = $this->article_reviewer_obj->where('reviewer_id',$v['user_id'])->where('state',0)->count();
}
$re['reviewers'] = $list;
$re['count'] = $count;
return jsonSuccess($re);