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); }