From eaef11fbc291733312882c8cef03644dc4ce45b0 Mon Sep 17 00:00:00 2001
From: wangjinlei <751475802@qq.com>
Date: Mon, 31 Jul 2023 16:53:59 +0800
Subject: [PATCH] 1
---
application/api/controller/Article.php | 80 ++++++++-------
application/api/controller/Auto.php | 15 +++
application/api/controller/Publish.php | 19 ++++
application/api/controller/Reviewer.php | 126 +++++++++++++++++++++++-
application/api/controller/Ucenter.php | 3 +-
application/api/controller/User.php | 2 +
6 files changed, 205 insertions(+), 40 deletions(-)
diff --git a/application/api/controller/Article.php b/application/api/controller/Article.php
index 6581e2a..bcefdc3 100644
--- a/application/api/controller/Article.php
+++ b/application/api/controller/Article.php
@@ -302,11 +302,24 @@ class Article extends Base
//增加审稿意见信息
foreach ($res as $key => $val) {
$cache_review = $this->article_reviewer_obj
- ->field("t_article_reviewer.*,t_article_reviewer_question.rated")
+ ->field("t_article_reviewer.*,t_article_reviewer_question.rated,t_user.realname")
->join("t_article_reviewer_question", "t_article_reviewer_question.art_rev_id = t_article_reviewer.art_rev_id", 'left')
+ ->join("t_user","t_user.user_id = t_article_reviewer.reviewer_id","left")
->where("t_article_reviewer.article_id", $val['article_id'])
->where("t_article_reviewer.state", 'in', [0, 1, 2, 3])
->select();
+ //添加复审信息
+ foreach ($cache_review as $k => $v){
+ $repeat = $this->article_reviewer_repeat_obj->where('art_rev_id',$v['art_rev_id'])->select();
+ if($repeat){
+ $last = count($repeat)-1;
+ $cache_review[$k]['can_repeat'] = ($repeat[$last]['state']==1&&$repeat[$last]['recommend']==3)?1:0;
+ $cache_review[$k]['repeat'] = $repeat;
+ }else{//不存在复审实例,可添加
+ $cache_review[$k]['can_repeat'] = 1;
+ $cache_review[$k]['repeat'] = [];
+ }
+ }
$res[$key]['review'] = $cache_review;
//查询作者信息
@@ -427,53 +440,42 @@ class Article extends Base
*/
public function getArticleDetail()
{
- //接受参数
$data = $this->request->post();
-
//查询文章基础数据
$where['t_article.article_id'] = $data['articleId'];
$article_res = $this->article_obj->field('t_article.*,t_journal.title journalname,t_user.account')->join(array(['t_journal', 't_journal.journal_id = t_article.journal_id', 'LEFT'], ['t_user', 't_user.user_id = t_article.user_id', 'LEFT']))->where($where)->find();
-
//查询文章状态跟踪信息
$article_msg = $this->article_msg_obj->where(['article_id' => $data['articleId']])->where('state', 0)->select();
-
- $suggest = '';
- //如果是退修状态,显示退休信息
- // if($article_res['state']==4){
- // $lastbean = end($article_msg);
- // $suggest = $lastbean['content'];
- // }
//查询审稿人审稿建议
- // if($article_res['state']==4){
- $suggest = $this->article_reviewer_obj->field('t_article_reviewer.*,t_article_reviewer_question.qu9_contents,t_article_reviewer_question.qu10_contents,t_article_reviewer_question.qu11_contents,t_article_reviewer_question.qu12_contents,t_article_reviewer_question.qu13_contents,t_article_reviewer_question.qu14_contents,t_article_reviewer_question.qu15_contents,t_article_reviewer_question.comments comments')
- ->join('t_article_reviewer_question', 't_article_reviewer.art_rev_id=t_article_reviewer_question.art_rev_id', 'left')
- ->where('t_article_reviewer.state', '<', 4)
- ->where('t_article_reviewer.state', '>', 0)
- ->where('t_article_reviewer.article_id', $article_res['article_id'])
- ->select();
- // }
+// $suggest = $this->article_reviewer_obj->field('t_article_reviewer.*,t_article_reviewer_question.qu9_contents,t_article_reviewer_question.qu10_contents,t_article_reviewer_question.qu11_contents,t_article_reviewer_question.qu12_contents,t_article_reviewer_question.qu13_contents,t_article_reviewer_question.qu14_contents,t_article_reviewer_question.qu15_contents,t_article_reviewer_question.comments comments')
+// ->join('t_article_reviewer_question', 't_article_reviewer.art_rev_id=t_article_reviewer_question.art_rev_id', 'left')
+// ->where('t_article_reviewer.state', '<', 4)
+// ->where('t_article_reviewer.state', '>', 0)
+// ->where('t_article_reviewer.article_id', $article_res['article_id'])
+// ->select();
- //查询major信息
- // $major_data = [];
- // if($article_res['major_id']!=0){
- // $major_data['major'] = $this->reviewer_major_obj->where('major_id',$article_res['major_id'])->find();
- // }else{
- // $major_data['major'] = null;
- // }
- // if($article_res['cmajor_id']!=0){
- // $major_data['cmajor'] = $this->reviewer_major_obj->where('major_id',$article_res['cmajor_id'])->find();
- // }else{
- // $major_data['cmajor'] = null;
- // }
- //新领域查询
+ $suggest = $this->article_reviewer_obj->where("state","in",[1,2,3])->where('article_id',$article_res['article_id'])->select();
+
+ foreach ($suggest as $k => $v){
+ $fr = [];
+ $c = $this->article_reviewer_question_obj->where('art_rev_id',$v['art_rev_id'])->find();
+ $fr[] = $c;
+ $f = $this->article_reviewer_repeat_obj->where('art_rev_id',$v['art_rev_id'])->select();
+ foreach ($f as $val){
+ $fr[] = $val;
+ }
+ $suggest[$k]['question'] = $fr;
+ }
+
+// foreach ($suggest as $k => $v){
+// $ca = $this->article_reviewer_repeat_obj->where('art_rev_id',$v['art_rev_id'])->select();
+// $suggest[$k]['repeats'] = $ca;
+// }
$major = $this->getMajorStr($article_res['major_id']);
-
//查询文章作者信息
$author_res = $this->article_author_obj->where('article_id', $data['articleId'])->where('state', 0)->select();
-
//查询转投信息
$transfer_res = $this->article_transfer_obj->where('article_id', $data['articleId'])->select();
-
//查询建议转投详情
$transfer_info = $this->article_transfer_obj
->field('t_article_transfer.*,t_journal.title jourtitle')
@@ -481,7 +483,6 @@ class Article extends Base
->where('t_article_transfer.article_id', $data['articleId'])
->where('t_article_transfer.state', 2)
->find();
-
//更新文章操作记录状态
if ($data['human'] == 'editor') {
$up_data['author_act'] = 0;
@@ -489,7 +490,6 @@ class Article extends Base
$up_data['editor_act'] = 0;
}
$this->article_obj->where('article_id', $data['articleId'])->update($up_data);
-
return json(['article' => $article_res, 'msg' => $article_msg, 'authors' => $author_res, 'suggest' => $suggest, 'transfer' => $transfer_res, 'transinfo' => $transfer_info, 'major' => $major]);
}
@@ -2217,6 +2217,12 @@ class Article extends Base
$journal_info = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find();
$user_res = $this->user_obj->where('user_id', $article_info['user_id'])->find();
+ //验证是否在黑名单
+ $black = $this->user_black_obj->where('user_id',$user_res['user_id'])->where('black_state',0)->find();
+ if($black){
+ return jsonError("Your account is currently blacklisted by TMR Publishing Group. Please contact the official email of the journal you wish to submit to for further clarification.");
+ }
+
$author_email = [];
$authors = $this->article_author_obj->where('article_id', $data['article_id'])->where('state', 0)->select();
diff --git a/application/api/controller/Auto.php b/application/api/controller/Auto.php
index fe6c223..b82f906 100644
--- a/application/api/controller/Auto.php
+++ b/application/api/controller/Auto.php
@@ -151,6 +151,21 @@ class Auto extends Base
}
+ public function reviewerRepeat(){
+ $repeats = $this->article_reviewer_repeat_obj->where("ctime","<",(time()-24*5*3600))->where("state",0)->select();
+ foreach ($repeats as $v){
+ $ca_rev_info = $this->article_reviewer_obj->where('art_rev_id',$v['art_rev_id'])->find();
+ if($ca_rev_info['state']==2){
+ $com = 2;
+ }else{
+ $com = 1;
+ }
+ $this->article_reviewer_repeat_obj->where('art_rev_rep_id',$v['art_rev_rep_id'])->update(["recommend"=>$com,"stime"=>time()]);
+ }
+ echo "done";
+ }
+
+
// public function cvComit(){
// $list = $this->user_reviewer_info_obj
// ->field('t_user.user_id,t_user.ctime,t_user_reviewer_info.qualifications')
diff --git a/application/api/controller/Publish.php b/application/api/controller/Publish.php
index 3301037..54e0bf8 100644
--- a/application/api/controller/Publish.php
+++ b/application/api/controller/Publish.php
@@ -84,6 +84,25 @@ class Publish extends Base
return jsonSuccess($re);
}
+ public function getArticleMains(){
+ $data = $this->request->post();
+ $rule = new Validate([
+ "article_id"=>"require"
+ ]);
+ if(!$rule->check($data)){
+ return jsonError($rule->getError());
+ }
+ $url = 'http://journalapi.tmrjournals.com/public/index.php/master/Article/getArticleMainsForSubmit';
+ $pra = [];
+ $pra['article_id'] = $data['article_id'];
+ $res = object_to_array(json_decode(myPost($url, $pra)));
+
+ $mains = $res['data']["mains"];
+
+ $re['mains'] = $mains;
+ return jsonSuccess($re);
+ }
+
/**
* 提前出刊
*/
diff --git a/application/api/controller/Reviewer.php b/application/api/controller/Reviewer.php
index fc61316..1906f3e 100644
--- a/application/api/controller/Reviewer.php
+++ b/application/api/controller/Reviewer.php
@@ -4,6 +4,7 @@ namespace app\api\controller;
use app\api\controller\Base;
use think\Db;
+use think\Queue;
use think\Validate;
/**
@@ -51,7 +52,7 @@ class Reviewer extends Base
}
/**
- * @title 获取待审审稿实例列表
+ * @title 获取待审审稿实例列表,包含复审待审
* @description 获取待审审稿实例列表
* @author wangjinlei
* @url /api/Reviewer/getReviewerListPending
@@ -67,7 +68,8 @@ class Reviewer extends Base
//获取审稿人基本信息
$reviewer_info = $this->user_obj->where('user_id', $data['user_id'])->find();
- $res = $this->article_reviewer_obj->field('t_article_reviewer.*,t_article.title article_title,t_article.abstrart,t_article.major_id,t_article.cmajor_id,t_article.type,t_journal.title journal_title,t_article.accept_sn accept_sn')
+ $res = $this->article_reviewer_obj
+ ->field('t_article_reviewer.*,t_article.title article_title,t_article.abstrart,t_article.major_id,t_article.cmajor_id,t_article.type,t_journal.title journal_title,t_article.accept_sn accept_sn')
->join('t_article', 't_article_reviewer.article_id = t_article.article_id', 'LEFT')
->join('t_journal', 't_article.journal_id = t_journal.journal_id', 'LEFT')
->where('t_article_reviewer.reviewer_id', $reviewer_info['user_id'])
@@ -88,7 +90,18 @@ class Reviewer extends Base
$res[$k]['cmajor'] = $cmajor['title'];
}
+ //复审的稿件列表
+ $repeats = $this->article_reviewer_obj
+ ->field('t_article_reviewer.*,t_article.title article_title,t_article.abstrart,t_article.major_id,t_article.cmajor_id,t_article.type,t_journal.title journal_title,t_article.accept_sn accept_sn')
+ ->join("t_article_reviewer_repeat","t_article_reviewer_repeat.art_rev_id = t_article_reviewer.art_rev_id","left")
+ ->join('t_article', 't_article_reviewer.article_id = t_article.article_id', 'LEFT')
+ ->join('t_journal', 't_article.journal_id = t_journal.journal_id', 'LEFT')
+ ->where("t_article_reviewer.reviewer_id",$reviewer_info['user_id'])
+ ->where("t_article_reviewer_repeat.state",0)
+ ->select();
+
$re['lists'] = $res;
+ $re['repeats'] = $repeats;
return jsonSuccess($re);
}
@@ -104,8 +117,16 @@ class Reviewer extends Base
return jsonError($rule->getError());
}
$article_reviewer_info = $this->article_reviewer_obj->where('art_rev_id',$data['art_rev_id'])->find();
+ //审查添加的合法性
+ $repeats = $this->article_reviewer_repeat_obj->where('art_rev_id',$data['art_rev_id'])->select();
+ $last = count($repeats)-1;
+ if($repeats&&($repeats[$last]['state']==0||$repeats[$last]['recommend']!=3)){
+ return jsonError("create error");
+ }
+
$reviewer_info = $this->user_obj->where('user_id',$article_reviewer_info['reviewer_id'])->find();
$article_info = $this->article_obj->where('article_id',$article_reviewer_info['article_id'])->find();
+ $journal_info = $this->journal_obj->where("journal_id",$article_info['journal_id'])->find();
//添加实例数据
$insert['art_rev_id'] = $data['art_rev_id'];
@@ -113,6 +134,21 @@ class Reviewer extends Base
$this->article_reviewer_repeat_obj->insert($insert);
//发送邮件至审稿人,提醒到系统内复审稿件
+ $tt = "Dear Reviewer,
";
+ $tt .= "Thank you for your support and valuable feedback to our journal. According to your comments, the author has made revisions to the article and submitted the revised manuscript to us.
";
+ $tt .= 'To ensure the quality and accuracy of the article, we would like to ask for your re-review of the revised manuscript within 5 days. Please log in to the Submission System and click on "Peer Review" to re-review the revised manuscript.If you fail to complete the re-review, we will consider your initial opinion as the final decision.
';
+ $tt .= "We appreciate your time and effort to the journal and look forward to hearing back from you soon.
";
+ $tt .= 'Sincerely,
Editorial Office
';
+ $tt .= $journal_info['title'] . '
';
+ $tt .= 'Email: ' . $journal_info['email'] . '
';
+ $tt .= 'Website: ' . $journal_info['website'];
+
+ $maidata['email'] = $reviewer_info['email'];
+ $maidata['title'] = "Invitation for Re-review of Revised Manuscript";
+ $maidata['content'] = $tt;
+ $maidata['tmail'] = $journal_info['email'];
+ $maidata['tpassword'] = $journal_info['epassword'];
+ Queue::push('app\api\job\mail@fire', $maidata, "tmail");
return jsonSuccess([]);
}
@@ -307,6 +343,48 @@ class Reviewer extends Base
return json(['code' => 0]);
}
+ /**获取复审稿件详情
+ * @return \think\response\Json
+ * @throws \think\db\exception\DataNotFoundException
+ * @throws \think\db\exception\ModelNotFoundException
+ * @throws \think\exception\DbException
+ */
+ public function getReviewerRepeatDetail(){
+ $data = $this->request->post();
+ $rule = new Validate([
+ "art_rev_id"=>'require'
+ ]);
+ if(!$rule->check($data)){
+ return jsonError($rule->getError());
+ }
+ $art_rev_info = $this->article_reviewer_obj->where('art_rev_id',$data['art_rev_id'])->find();
+ $article_info = $this->article_obj
+ ->field("t_article.*,t_journal.title journal_title,t_journal.website")
+ ->join("t_journal","t_journal.journal_id = t_article.journal_id","left")
+ ->where('t_article.article_id',$art_rev_info['article_id'])
+ ->find();
+ //组装审稿时间线
+ $c_question = $this->article_reviewer_question_obj->where('art_rev_id',$data['art_rev_id'])->find();
+ $question[] = $c_question;
+ $re_question = $this->article_reviewer_repeat_obj->where('art_rev_id',$data['art_rev_id'])->select();
+ foreach ($re_question as $v){
+ $question[] = $v;
+ }
+ $art_rev_info['question'] = $question;
+ $re['art_rev_info'] = $art_rev_info;
+
+ //组装文章文件
+ $response = $this->article_response_to_reviewer_obj->where('article_id',$article_info['article_id'])->select();
+ $files['response'] = $response;
+
+ $files['manuscript'] = $this->article_file_obj->where('article_id',$article_info['article_id'])->where('type_name',"manuscirpt")->order("ctime")->select();
+ $files['figures'] = $this->article_file_obj->where('article_id',$article_info['article_id'])->where('type_name',"picturesAndTables")->order("ctime")->select();
+ $re['files'] = $files;
+
+ $re['article_info'] = $article_info;
+ return jsonSuccess($re);
+ }
+
/**
* @title 发起审稿
* @description 发起审稿
@@ -484,6 +562,19 @@ class Reviewer extends Base
->find();
//文章类型转译
$res['atype'] = translateType($res['atype']);
+
+ //复审相关
+ $repeats = $this->article_reviewer_repeat_obj->where('art_rev_id',$data['revid'])->select();
+ if($repeats){
+ $last = count($repeats)-1;
+ $res['can_repeat'] = ($repeats[$last]['state']==1&&$repeats[$last]['recommend']==3)?1:0;
+ $res['repeat'] = $repeats;
+ }else{//不存在复审实例,可添加
+ $res['can_repeat'] = 1;
+ $res['repeat'] = [];
+ }
+
+
//更改实例状态(消息提醒)
if ($data['human'] == 'editor') {
$up_data['reviewer_act'] = 0;
@@ -840,6 +931,37 @@ class Reviewer extends Base
// sendEmail("1586428462@qq.com", "title", "ttttt", "content", 'tmr@tmrjournals.com', "Wu9999999999", $reviewer_ZS);
// }
+ public function questionRepeat(){
+ $data = $this->request->post();
+ $rule = new Validate([
+ "art_rev_rep_id"=>"require",
+ "recommend"=>"require"
+ ]);
+ if(!$rule->check($data)){
+ return jsonError($rule->getError());
+ }
+ $repeat_info = $this->article_reviewer_repeat_obj->where('art_rev_rep_id',$data['art_rev_rep_id'])->find();
+ $update['recommend'] = $data['recommend'];
+ $update['stime'] = time();
+ if($data['recommend']==3){
+ $update['content'] = isset($data['content'])?trim($data['content']):'';
+ }
+ $update['state'] = 1;
+ $this->article_reviewer_repeat_obj->where('art_rev_rep_id',$data['art_rev_rep_id'])->update($update);
+
+ //更新审稿实例
+ if($data['recommend']!=3){
+ $state = $data['recommend']==1?3:2;
+ $this->article_reviewer_obj->where("art_rev_id",$repeat_info['art_rev_id'])->update(['state'=>$state]);
+ }
+
+ //复审后发送邮件
+
+
+ return jsonSuccess([]);
+ }
+
+
/**
* 获取问卷详情
*/
diff --git a/application/api/controller/Ucenter.php b/application/api/controller/Ucenter.php
index 454d412..7bbd948 100644
--- a/application/api/controller/Ucenter.php
+++ b/application/api/controller/Ucenter.php
@@ -195,7 +195,8 @@ class Ucenter extends Base{
public function getAsYboard($user_id){
$user_info = $this->user_obj->where('user_id',$user_id)->find();
- $list = $this->user_to_yboard_obj->where('user_id',$user_id)->where('state',0)->group('journal_id')->select();
+// $list = $this->user_to_yboard_obj->where('user_id',$user_id)->where('state',0)->group('journal_id')->select();
+ $list = $this->user_to_yboard_obj->where('user_id',$user_id)->where('state',0)->order('journal_id')->select();
$frag = [];
foreach($list as $v){
$journal = $this->journal_obj->where('journal_id',$v['journal_id'])->find();
diff --git a/application/api/controller/User.php b/application/api/controller/User.php
index 5cd7c77..e034c9f 100644
--- a/application/api/controller/User.php
+++ b/application/api/controller/User.php
@@ -862,6 +862,8 @@ class User extends Base
$insert['reason'] = trim($data['reason']);
$insert['black_ctime'] = time();
$this->user_black_obj->insert($insert);
+ //消除审稿人关系
+ $this->user_black_obj->where('user_id',$data['user_id'])->update(['state'=>1]);
return jsonSuccess($data);
}