request->post() : $aParam;
//获取账号
$sAccount = empty($aParam['account']) ? '' : $aParam['account'];
if(empty($sAccount)){
return json_encode(['status' => 2,'msg' => 'Please enter your account']);
}
//查询用户是否存在
$aWhere = ['account' => $sAccount,'state' => 0];
$aUser = Db::name('user')->field('user_id')->where($aWhere)->find();
$iUserId = empty($aUser['user_id']) ? 0: $aUser['user_id'];
if(empty($iUserId)){
return json_encode(['status' => 2,'msg' => 'Account does not exist']);
}
//获取状态
$iState = isset($aParam['state']) ? $aParam['state'] : -2;
//空的查询条件
$aWhere = [];
//SN
$sAcceptSn = empty($aParam['accept_sn']) ? '': $aParam['accept_sn'];
if(!empty($sAcceptSn)){
$aWhere = ['accept_sn' => trim($sAcceptSn)];
}
//标题
$sTitle = empty($aParam['title']) ? '': $aParam['title'];
if(!empty($sTitle)){
$aWhere = ['title' => ['like','%'.trim($sTitle).'%']];
}
//国家
$sCountry = -1;
if(empty($sAcceptSn) && empty($sTitle)){
//获取期刊ID
$iJournalId = empty($aParam['journal_id']) ? 0: $aParam['journal_id'];
//查询账号所管理的期刊
$aJournalWhere = ['editor_id' => $iUserId,'state' => 0];
$aJournalId = DB::name('journal')->where($aJournalWhere)->column('journal_id');
if(empty($iJournalId) && empty($aJournalId)){
return json_encode(['status' => 2,'msg' => 'No journals managed by this account were found']);
}
if(!empty($iJournalId) && empty($aJournalId)){
return json_encode(['status' => 2,'msg' => 'This account cannot view articles under the selected journal']);
}
if(!empty($iJournalId) && !empty($aJournalId)){
if(!in_array($iJournalId, $aJournalId)){
return json_encode(['status' => 2,'msg' => 'This account cannot view articles under the selected journal']);
}
$aWhere['journal_id'] = $iJournalId;
}
if(empty($iJournalId) && !empty($aJournalId)){//期刊ID
$aWhere['journal_id'] = ['in',$aJournalId];
}
if($iState >= 0){
$aWhere['state'] = $iState;
}else{
$aWhere['state'] = ['in',[0,1,2,4,6,7,8]];
}
//国家
$sCountry = empty($aParam['country']) ? 0 : $aParam['country'];
}
//获取分页相关参数
$iSize = empty($aParam['size']) ? 15 : $aParam['size'];//每页显示条数
$iPage = empty($aParam['page']) ? 1 : $aParam['page'];// 当前页码
//统计数量
$sAuthorQuery = '';
$aAuthorWhere = [];
if($sCountry == 1){
$aAuthorWhere = ['state' => 0, 'country' => 'China'];
}
if($sCountry == 2){
$aAuthorWhere = ['state' => 0, 'country' => ['<>','China']];
}
if(!empty($aAuthorWhere)){
$sAuthorQuery = Db::name('article_author')->field('DISTINCT article_id')->where($aAuthorWhere)->buildSql();
}
if(empty($sAuthorQuery)){
$iCount = Db::name('article')->where($aWhere)->count();
}
if(!empty($sAuthorQuery)){
$iCount = Db::name('article')->where($aWhere)
->join(Db::raw("({$sAuthorQuery}) article_author"),'article_author.article_id = t_article.article_id')
->count();
}
if(empty($iCount)){
return json_encode(['status' => 1,'msg' => 'Article not found','data' => ['total' => 0,'lists' => []]]);
}
//判断页数是否超过最大分页限制
$iPageNum = ceil($iCount/$iSize);
if($iPage > $iPageNum){
return json_encode(['status' => 1,'msg' => 'The number of pages has exceeded the limit, maximum page number:'.$iPageNum,'data' => ['total' => $iCount,'lists' => []]]);
}
$sField = 't_article.article_id,t_article.journal_id,t_article.accept_sn,t_article.title,t_article.type,t_article.scoring,t_article.h_fen,t_article.b_fen,t_article.c_fen,t_article.dw_fen,t_article.ly_fen,t_article.jj_fen,t_article.remarks,t_article.special_num,t_article.is_user_act,t_article.user_update_time,t_article.state,t_article.repetition,t_article.is_buy';
$sOrder = 't_article.is_user_act asc,t_article.user_update_time desc,t_article.article_id desc';
if(empty($sAuthorQuery)){
$aArticle = Db::name('article')
->field($sField)
->where($aWhere)
->page($iPage, $iSize)
->order($sOrder)
->select();
}
if(!empty($sAuthorQuery)){
$aArticle = Db::name('article')
->field($sField)
->where($aWhere)
->join(Db::raw("({$sAuthorQuery}) article_author"),'article_author.article_id = t_article.article_id')
->page($iPage, $iSize)
->order($sOrder)
->select();
}
if(empty($aArticle)){
return json_encode(['status' => 1,'msg' => 'Data is empty']);
}
//查询通讯作者
$aAuthorData = [];
$aArticleId = array_column($aArticle, 'article_id');
$aWhere = ['article_id' => ['in',$aArticleId],'state' => 0,'is_report' => 1,'email' => ['<>','']];
if($sCountry == 1){
$aWhere['country'] = 'China';
}
if($sCountry == 2){
$aWhere['country'] = ['<>','China'];
}
$aAuthor = Db::name('article_author')->field('art_aut_id,article_id,email,country')->where($aWhere)->select();
if(!empty($aAuthor)){
$aEmail = array_unique(array_column($aAuthor, 'email'));
if(!empty($aEmail)){
$aWhere = ['email' => ['in',$aEmail],'state' => 0];
$aUser = Db::name('user')->field('user_id,realname,phone,email,wos_index,scopus_index,wos_time,scopus_time')->where($aWhere)->select();
$aUser = empty($aUser) ? [] : array_column($aUser, null,'email');
}
//数据处理
foreach ($aAuthor as $key => $value) {
if(!empty($value['country'])){
$aCountry[$value['article_id']][] = trim($value['country']);
}
if(!empty($aUser[$value['email']])){
$value += $aUser[$value['email']];
}
$aAuthorData[$value['article_id']][] = $value;
}
}
//预接收查询文章的付费状态
// if($iState == 6){
// $aWhere = ['article_id' => ['in',$aArticleId]];
// $aOrder = Db::name('order')->where($aWhere)->column('article_id,ps_id');
// $aPsId = empty($aOrder) ? [] : array_values($aOrder);
// if(!empty($aPsId)){
// $aWhere = ['ps_id' => ['in',$aPsId]];
// $aPaystation = Db::name('paystation')->field('ps_id,request_time pay_time,amount pay_mount')->where($aWhere)->select();
// $aPaystation = empty($aPaystation) ? [] : array_column($aPaystation, null,'ps_id');
// }
// }
foreach ($aArticle as $key => $value) {
$aAuthorInfo = empty($aAuthorData[$value['article_id']]) ? [] : $aAuthorData[$value['article_id']];
$aArticle[$key]['report'] = $aAuthorInfo;
$aArticle[$key]['country'] = empty($aAuthorInfo) ? [] : array_unique(array_column($aAuthorInfo, 'country'));
$aArticle[$key]['type_name'] = translateType($value['type']);
// //付款信息
// $iPsId = empty($aOrder[$value['article_id']]) ? 0 : $aOrder[$value['article_id']];
// $aArticle[$key]['pay_time'] = empty($aPaystation[$iPsId]['pay_time']) ? '' : $aPaystation[$iPsId]['pay_time'];
// $aArticle[$key]['pay_mount'] = empty($aPaystation[$iPsId]['pay_mount']) ? '' : $aPaystation[$iPsId]['pay_mount'];
}
return json_encode(['status' => 1,'msg' => 'success','data' => ['total' => $iCount,'lists' => $aArticle]]);
}
/**
* 获取文章详情
*/
public function get($aParam = []){
//获取参数
$aParam = empty($aParam) ? $this->request->post() : $aParam;
//获取文章ID
$iArticleId = empty($aParam['article_id']) ? 0 : $aParam['article_id'];
//SN
$sAcceptSn = empty($aParam['accept_sn']) ? '': $aParam['accept_sn'];
if(empty($iArticleId) && empty($sAcceptSn)){
return json_encode(['status' => 2,'msg' => 'Please select the article']);
}
//获取账号
$sAccount = empty($aParam['account']) ? '' : $aParam['account'];
if(empty($sAccount)){
return json_encode(['status' => 2,'msg' => 'Please enter your account']);
}
//查询用户是否存在
$aWhere = ['account' => $sAccount,'state' => 0];
$aUser = Db::name('user')->field('user_id')->where($aWhere)->find();
if(empty($aUser)){
return json_encode(['status' => 2,'msg' => 'Account does not exist']);
}
//查询条件
$aWhere = [];
if(!empty($iArticleId)){
$aWhere['article_id'] = $iArticleId;
}
if(!empty($sAcceptSn)){
$aWhere['accept_sn'] = $sAcceptSn;
}
$aArticle = Db::name('article')->where($aWhere)->find();
if(!empty($aArticle)){
$aArticle['act_user_id'] = empty($aUser['user_id']) ? 0 : $aUser['user_id'];
}
return json_encode(['status' => 1,'msg' => 'success','data' => $aArticle]);
}
/**
* 获取文章审稿记录
*/
public function getArticleReviewRecord($aParam = []){
//获取参数
$aParam = empty($aParam) ? $this->request->post() : $aParam;
//获取文章信息
$aArticle = json_decode($this->get($aParam),true);
$iStatus = empty($aArticle['status']) ? 0 : $aArticle['status'];
if($iStatus != 1){
return json_encode($aArticle);
}
$aArticle = empty($aArticle['data']) ? [] : $aArticle['data'];
if(empty($aArticle)){
return json_encode(['status' => 3,'msg' => 'The article does not exist']);
}
//查询文章审稿记录
$iArticleId = empty($aArticle['article_id']) ? 0 : $aArticle['article_id'];
$aWhere = ['article_id' => $iArticleId,'state' => ['between',[0,3]]];
$aArticleReviewer = Db::name('article_reviewer')->field('art_rev_id,state,ctime,reviewer_id')->where($aWhere)->select();
if(empty($aArticleReviewer)){
return json_encode(['status' => 1,'msg' => 'No review record found for the article']);
}
//查询初审问卷
$aArtRevId = array_column($aArticleReviewer, 'art_rev_id');
$aWhere = ['art_rev_id' => ['in',$aArtRevId],'state' => 0];
$aQuestion = Db::name('article_reviewer_question')->field('art_rev_id,ctime,score,rated,recommend')->where($aWhere)->order('ctime asc')->select();
$aQuestion = empty($aQuestion) ? [] : array_column($aQuestion, null,'art_rev_id');
//查询复审
$aReviewerRepeatLists = [];
$aWhere = ['art_rev_id' => ['in',$aArtRevId],'recommend' => ['between',[1,3]]];
$aReviewerRepeat = Db::name('article_reviewer_repeat')->field('art_rev_rep_id,art_rev_id,recommend,ctime,stime')->where($aWhere)->select();
if(!empty($aReviewerRepeat)){
foreach ($aReviewerRepeat as $key => $value) {
$aReviewerRepeatLists[$value['art_rev_id']][] = $value;
}
}
//查询审稿人信息
$aUserId = array_unique(array_column($aArticleReviewer, 'reviewer_id'));
$aWhere = ['user_id' => ['in',$aUserId],'state' => 0];
$aUser = Db::name('user')->where($aWhere)->column('user_id,realname');
foreach ($aArticleReviewer as $key => $value) {
$aQuestionData = empty($aQuestion[$value['art_rev_id']]) ? [] : $aQuestion[$value['art_rev_id']];
$value['ctime'] = empty($aQuestionData['ctime']) ? $value['ctime'] : $aQuestionData['ctime'];
$value['score'] = empty($aQuestionData['score']) ? 0 : $aQuestionData['score'];
$value['repeat'] = empty($aReviewerRepeatLists[$value['art_rev_id']]) ? [] : $aReviewerRepeatLists[$value['art_rev_id']];
$value['rated'] = empty($aQuestionData['rated']) ? 0 : $aQuestionData['rated'];
$value['realname'] = empty($aUser[$value['reviewer_id']]) ? '' : $aUser[$value['reviewer_id']];
$value['recommend'] = empty($aQuestionData['recommend']) ? 0 : $aQuestionData['recommend'];
$aArticleReviewer[$key] = $value;
}
return json_encode(['status' => 1,'msg' => 'success','data' => $aArticleReviewer]);
}
/**
* 获取用户信息
*/
public function getCorrespondingInfo(){
//获取参数
$aParam = empty($aParam) ? $this->request->post() : $aParam;
//获取通讯作者ID
$iArtAutId = empty($aParam['art_aut_id']) ? 0 : $aParam['art_aut_id'];
if(empty($iArtAutId)){
return json_encode(['status' => 2,'msg' => 'Please select the user']);
}
//获取文章ID
$iArticleId = empty($aParam['article_id']) ? 0 : $aParam['article_id'];
if(empty($iArticleId)){
return json_encode(['status' => 2,'msg' => 'Please select the article']);
}
$aWhere = ['article_id' => $iArticleId];
$aArticle = Db::name('article')->where($aWhere)->find();
if(empty($aArticle)){
return json_encode(['status' => 3,'msg' => 'The article does not exist']);
}
//查询通讯作者
$aWhere = ['art_aut_id' => $iArtAutId,'article_id' => $iArticleId,'state' => 0,'is_report' => 1,'email' => ['<>','']];
$aAuthor = Db::name('article_author')->field('art_aut_id,email,author_title,firstname,lastname,company,country')->where($aWhere)->find();
if(empty($aAuthor)){
return json_encode(['status' => 4,'msg' => 'Author information not found']);
}
//获取主信息
$sEmail = empty($aAuthor['email']) ? '' : $aAuthor['email'];
$aWhere = ['email' => $sEmail,'state' => 0];
$aUser = Db::name('user')->field('user_id,realname,phone,email,remark,wos_index,wos_time,g_author,g_website,google_index,google_time,google_editor,scopus_index,scopus_time,scopus_website,scopus_editor')->where($aWhere)->find();
if(empty($aUser)){
return json_encode(['status' => 1,'msg' => 'User does not exist']);
}
// //获取附属信息
// $iUserId = $aUser['user_id'];
// $aWhere = ['reviewer_id' => $iUserId,'state' => 0];
// $aUserInfo = Db::name('user_reviewer_info')->field('technical,country,introduction,company,website,field')->where($aWhere)->find();
// if(!empty($aUserInfo)){
// $aUser += $aUserInfo;
// }
$aUser += $aAuthor;
return json_encode(['status' => 1,'msg' => 'success','data' => ['article' => $aArticle,'user' => $aUser]]);
}
/**
* 更新文章是否有新操作状态
*/
public function updateArticleState(){
//获取参数
$aParam = empty($aParam) ? $this->request->post() : $aParam;
//主键ID
$iActId = empty($aParam['act_id']) ? 0 : $aParam['act_id'];
//主键父ID
$iActPId = empty($aParam['act_p_id']) ? 0 : $aParam['act_p_id'];
//类型
$iType = empty($aParam['type']) ? 0 : $aParam['type'];
if(empty($iType)){
return json_encode(['status' => 2,'msg' => 'Missing parameter']);
}
$aType = is_string($iType) ? explode(',', $iType) : [$iType];
//获取文章信息
$aArticle = json_decode($this->get($aParam),true);
$iStatus = empty($aArticle['status']) ? 0 : $aArticle['status'];
if($iStatus != 1){
return json_encode($aArticle);
}
$aArticle = empty($aArticle['data']) ? [] : $aArticle['data'];
if(empty($aArticle)){
return json_encode(['status' => 3,'msg' => 'The article does not exist']);
}
$iIsUseAct = empty($aArticle['is_user_act']) ? -1 : $aArticle['is_user_act'];
if($iIsUseAct != 1){
return json_encode(['status' => 4,'msg' => 'No action required']);
}
//文章ID
$iArticleId = empty($aArticle['article_id']) ? 0 : $aArticle['article_id'];
//查询日志
$aLogWhere = ['article_id' => $iArticleId,'type' => ['in',$aType],'is_view' => 2];
if(in_array(1, $aType) || in_array(2, $aType)){//初审/复审
$aWhere['act_p_id'] = $iActPId;
}
if(in_array(3, $aType)){//终审
$aWhere['act_id'] = $iActId;
}
$aLog = Db::name('user_act_log')->field('log_id')->where($aLogWhere)->find();
if(empty($aLog)){
return json_encode(['status' => 5,'msg' => 'log does not exist']);
}
//更新状态
Db::startTrans();
$aLogWhere = ['article_id' => $iArticleId,'is_view' => 2];
$aLogUpdate = ['is_view' => 1,'update_time' => time(),'update_user_id' => empty($aArticle['act_user_id']) ? 0 : $aArticle['act_user_id']];
$log_update_result = Db::name('user_act_log')->where($aLogWhere)->update($aLogUpdate);
if($log_update_result === false){
return json_encode(['status' => 5,'msg' => 'Log Update failed']);
}
$aUpdate = ['is_user_act' => 2,'user_update_time' => 0,'update_time' => time()];
$aWhere = ['article_id' => $aArticle['article_id']];
$result = Db::name('article')->where($aWhere)->limit(1)->update($aUpdate);
if($result === false){
return json_encode(['status' => 5,'msg' => 'Update failed']);
}
Db::commit();
return json_encode(['status' => 1,'msg' => 'Update successful']);
}
/**
* 获取审稿记录详情
*/
public function getArticleReviewDetail(){
//获取参数
$aParam = empty($aParam) ? $this->request->post() : $aParam;
//获取文章ID
$iArticleId = empty($aParam['article_id']) ? 0 : $aParam['article_id'];
if(empty($iArticleId)){
return json_encode(['status' => 2,'msg' => 'Please select the article']);
}
//获取审稿记录ID
$iArtRevId = empty($aParam['art_rev_id']) ? 0 : $aParam['art_rev_id'];
if(empty($iArtRevId)){
return json_encode(['status' => 2,'msg' => 'Please select a record']);
}
//获取复审记录ID
$iArtRevRepId = empty($aParam['art_rev_rep_id']) ? 0 : $aParam['art_rev_rep_id'];
if(empty($iArtRevId) && empty($iArtRevRepId)){
return json_encode(['status' => 2,'msg' => 'Please select a record']);
}
//查询文章
$aArticle = json_decode($this->get($aParam),true);
$iStatus = empty($aArticle['status']) ? 0 : $aArticle['status'];
if($iStatus != 1){
return json_encode($aArticle);
}
$aArticle = empty($aArticle['data']) ? [] : $aArticle['data'];
//查询审稿记录
$aWhere = ['art_rev_id' => $iArtRevId,'article_id' => $iArticleId];
$aArticleReviewer = Db::name('article_reviewer')->field('art_rev_id,reviewer_id,ctime')->where($aWhere)->find();
if(empty($aArticleReviewer)){
return json_encode(['status' => 3,'msg' => 'Review record does not exist']);
}
if(empty($iArtRevRepId)){
//查询初审问卷
$aWhere = ['art_rev_id' => $iArtRevId];
$aQuestion = Db::name('article_reviewer_question')->field('is_anonymous')->where($aWhere)->find();
$aArticleReviewer['is_anonymous'] = empty($aQuestion['is_anonymous']) ? 0 : $aQuestion['is_anonymous'];
}
//查询审稿人姓名
$iUserId = empty($aArticleReviewer['reviewer_id']) ? 0 : $aArticleReviewer['reviewer_id'];
if(!empty($iUserId)){
$aWhere = ['user_id' => $iUserId,'state' => 0];
$aUser = Db::name('user')->field('realname,email')->where($aWhere)->find();
$aArticleReviewer['realname'] = empty($aUser['realname']) ? '' : $aUser['realname'];
$aArticleReviewer['email'] = empty($aUser['email']) ? '' : $aUser['email'];
}
//组装信息
$aData = ['article' => $aArticle,'article_reviewer' => $aArticleReviewer];
//查询复审信息
if(!empty($iArtRevRepId)){
//查询初审问卷
$aWhere = ['art_rev_id' => $iArtRevId,'art_rev_rep_id' => $iArtRevRepId];
$aData['article_reviewer_repeat'] = Db::name('article_reviewer_repeat')->where($aWhere)->find();
}
return json_encode(['status' => 1,'msg' => 'success','data' => $aData]);
}
/**
* 获取审稿权限
* @param art_rev_id 审稿记录ID
* @param
*/
public function getReviewerAuth(){
//获取参数
$aParam = empty($aParam) ? $this->request->post() : $aParam;
$aData = ['is_review_auth' => 2];//审稿权限1是2否
//获取审稿记录ID
$iArtRevId = empty($aParam['art_rev_id']) ? 0 : $aParam['art_rev_id'];
if(empty($iArtRevId)){
return json_encode(['status' => 2,'msg' => 'Please select a record','data' => $aData]);
}
//获取账号
$sAccount = empty($aParam['account']) ? '' : $aParam['account'];
if(empty($sAccount)){
return json_encode(['status' => 2,'msg' => 'Please enter your account','data' => $aData]);
}
//查询用户是否存在
$aWhere = ['account' => $sAccount,'state' => 0];
$aUser = Db::name('user')->field('user_id,account,email')->where($aWhere)->find();
if(empty($aUser)){
return json_encode(['status' => 3,'msg' => 'Account does not exist','data' => $aData]);
}
$iUserId = $aUser['user_id'];
//查询审稿记录
$aWhere = ['art_rev_id' => $iArtRevId];
$aArticleReviewer = Db::name('article_reviewer')->where($aWhere)->find();
if(empty($aArticleReviewer)){
return json_encode(['status' => 4,'msg' => 'Review record does not exist','data' => $aData]);
}
$aData['review'] = $aArticleReviewer;
//获取文章信息
$aWhere = ['article_id' => $aArticleReviewer['article_id']];
$aArticle = Db::name('article')->field('article_id,abstrart,title article_title,type,accept_sn,journal_id,state')->where($aWhere)->find();
if(empty($aArticle)){
return json_encode(['status' => 5,'msg' => 'The article does not exist','data' => $aData]);
}
$aArticle['type_name'] = translateType($aArticle['type']);//文章类型
//查询期刊信息
$aWhere = ['journal_id' => $aArticle['article_id'],'state' => 0];
$aJournal = Db::name('journal')->field('title as journal_name,website')->find();
if(!empty($aJournal)){
$aArticle += $aJournal;
}
//判断是否有权限审稿
$aData['article'] = $aArticle;
if($aArticleReviewer['reviewer_id'] != $iUserId){
return json_encode(['status' => 6,'msg' => 'No review permission','data' => $aData]);
}
//判断审稿权限
if($aArticle['state'] != 2){
return json_encode(['status' => 7,'msg' => 'The article has not entered the review status','data' => $aData]);
}
//审稿拒绝
if($aArticleReviewer['state'] == 2){
//获取审稿答卷
$aWhere = ['art_rev_id' => $iArtRevId,'state' => 0];
$aQuestion = Db::name('article_reviewer_question')->field('art_rev_id,recommend')->where($aWhere)->find();
if(empty($aQuestion)){
return json_encode(['status' => 8,'msg' => 'You have declined the review','data' => $aData]);
}
}
//审稿已过期
if($aArticleReviewer['state'] == 4){
return json_encode(['status' => 13,'msg' => 'The review has expired','data' => $aData]);
}
//同意/1小改后接收/接收
//判断是否为邮件
$iIsCode = 2;//是否邮件进入
$sAct = empty($aParam['act']) ? '' : $aParam['act'];
$aWhere = ['code' => $sAct,'state' => 0];
if(!empty($sAct)){
//查询绑定的用户ID
$aCode = Db::name('login_auto')->field('user_id')->where($aWhere)->find();
if(empty($aCode)){
return json_encode(['status' => 10,'msg' => 'Code is illegal','data' => $aData]);
}
if($aCode['user_id'] != $iUserId){
return json_encode(['status' => 11,'msg' => 'Illegal code operation','data' => $aData]);
}
$iIsCode = 1;
}
//当前时间
$iNowTime = time();
// 14天 = 14*24*3600 秒 = 1209600 秒
$iFourteenDays = 14 * 24 * 3600;
//五天
$iFiveDays = 5 * 24 * 3600;
//审稿邀请
if($aArticleReviewer['state'] == 5){
if($iIsCode == 1){//邮件进入未同意审稿直接同意
//添加时间
$iTime = empty($aArticleReviewer['ctime']) ? 0 : $aArticleReviewer['ctime'];
if (!is_numeric($iTime) || (int)$iTime <= 0) {
return json_encode([
'status' => 12,
'msg' => 'Invalid record time, the review period has expired',
'data' => $aData
]);
}
//判断是否超过5天
$timeDiff = $iTime+$iFiveDays;
if($timeDiff < $iNowTime){
//执行审稿过期
$aWhere = ['art_rev_id' => $iArtRevId,'state' => 5];
$result = Db::name('article_reviewer')->where($aWhere)->limit(1)->update(['state' => 4]);
return json_encode(['status' => 13,'msg' => 'The number of days for agreeing to review has exceeded 5','data' => $aData]);
}
// var_dump(date('Y-m-d H:i:s',$timeDiff),date('Y-m-d H:i:s',$iTime),date('Y-m-d H:i:s',$iNowTime));
//执行同意审稿
$aWhere = ['art_rev_id' => $iArtRevId,'state' => 5];
$result = Db::name('article_reviewer')->where($aWhere)->limit(1)->update(['state' => 0,'agree_review_time' => time()]);
}
if($iIsCode != 1){
return json_encode(['status' => 14,'msg' => 'Reviewer did not agree to review','data' => $aData]);
}
}
//同意审稿
if($aArticleReviewer['state'] == 0){
//同意审稿的时间
$iTime = empty($aArticleReviewer['agree_review_time']) ? 0 : $aArticleReviewer['agree_review_time'];
//添加时间
$iCtime = empty($aArticleReviewer['ctime']) ? 0 : $aArticleReviewer['ctime'];
$iTime = empty($iTime) ? intval($iCtime) : intval($iTime);
if (!is_numeric($iTime) || (int)$iTime <= 0) {
return json_encode([
'status' => 15,
'msg' => 'Invalid record time, the review period has expired',
'data' => $aData
]);
}
//判断是否超过14天
$timeDiff = $iTime+$iFourteenDays;
if($timeDiff < $iNowTime){
return json_encode(['status' => 16,'msg' => 'The number of days for agreeing to review has exceeded 14','data' => $aData]);
}
$aData['is_review_auth'] = 1;
return json_encode(['status' => 1,'msg' => 'success','data' => $aData]);
}
$aData['is_review_auth'] = 1;
return json_encode(['status' => 1,'msg' => 'success','data' => $aData]);
}
/**
* 审稿人邮件链接失效-重新申请邮件
*/
public function applySendEmail(){
//获取参数
$aParam = empty($aParam) ? $this->request->post() : $aParam;
//获取审稿记录ID
$iArtRevId = empty($aParam['art_rev_id']) ? 0 : $aParam['art_rev_id'];
if(empty($iArtRevId)){
return json_encode(['status' => 2,'msg' => 'Please select a record']);
}
//获取账号
$sAccount = empty($aParam['account']) ? '' : $aParam['account'];
if(empty($sAccount)){
return json_encode(['status' => 2,'msg' => 'Please enter your account']);
}
//查询用户是否存在
$aWhere = ['account' => $sAccount,'state' => 0];
$aUser = Db::name('user')->field('user_id')->where($aWhere)->find();
if(empty($aUser)){
return json_encode(['status' => 3,'msg' => 'Account does not exist']);
}
$iUserId = $aUser['user_id'];
//查询审稿记录
$aWhere = ['art_rev_id' => $iArtRevId];
$aArticleReviewer = Db::name('article_reviewer')->field('art_rev_id,reviewer_id,article_id,state')->where($aWhere)->find();
if(empty($aArticleReviewer)){
return json_encode(['status' => 4,'msg' => 'Review record does not exist']);
}
if($aArticleReviewer['state'] != 4){
return json_encode(['status' => 5,'msg' => 'The review link has not expired and no application is required']);
}
//获取文章信息
$aWhere = ['article_id' => $aArticleReviewer['article_id']];
$aArticle = Db::name('article')->field('article_id,abstrart,title article_title,type,accept_sn,journal_id,state')->where($aWhere)->find();
if(empty($aArticle)){
return json_encode(['status' => 6,'msg' => 'The article does not exist']);
}
if($aArticle['state'] != 2){
return json_encode(['status' => 7,'msg' => 'The article is not in the review status']);
}
//查询期刊信息
$aWhere = ['journal_id' => $aArticle['article_id'],'state' => 0];
$aJournal = Db::name('journal')->field('title as journal_name,website')->find();
//查询期刊信息
if(empty($aArticle['journal_id'])){
return json_encode(array('status' => 8,'msg' => 'The article is not associated with a journal' ));
}
$aWhere = ['state' => 0,'journal_id' => $aArticle['journal_id']];
$aJournal = Db::name('journal')->where($aWhere)->find();
if(empty($aJournal)){
return json_encode(array('status' => 9,'msg' => 'No journal information found' ));
}
//查询编辑邮箱
$iUserId = empty($aJournal['editor_id']) ? 0 : $aJournal['editor_id'];
if(empty($iUserId)){
return json_encode(array('status' => 10,'msg' => 'The journal to which the article belongs has not designated a responsible editor' ));
}
//查询审稿人跟编辑的信息
$aUserId = [$aArticleReviewer['reviewer_id'],$iUserId];
$aWhere = ['user_id' => ['in',$aUserId],'state' => 0,'email' => ['<>','']];
$aUser = Db::name('user')->field('user_id,email,realname,account')->where($aWhere)->select();
if(empty($aUser)){
return json_encode(['status' => 11,'msg' => "Reviewer and editor information not found"]);
}
$aUser = array_column($aUser, null,'user_id');
//处理发邮件
//邮件模版
$aEmailConfig = [
'email_subject' => 'Request to Reopen Expired Review Link---{accept_sn}',
'email_content' => '
Dear Editor,
The reviewer would like to reopen the expired review link for the manuscript. Below are the details:
Reviewer Information:
Real Name:{realname}
Email:{email}
Sincerely,
Editorial Office
Subscribe to this journal
{journal_title}
Email: {journal_email}
Website: {website}'
];
//邮件内容
$aSearch = [
'{accept_sn}' => empty($aArticle['accept_sn']) ? '' : $aArticle['accept_sn'],//accept_sn
'{journal_title}' => empty($aJournal['title']) ? '' : $aJournal['title'],//期刊名
'{journal_issn}' => empty($aJournal['issn']) ? '' : $aJournal['issn'],
'{journal_email}' => empty($aJournal['email']) ? '' : $aJournal['email'],
'{website}' => empty($aJournal['website']) ? '' : $aJournal['website'],
'{realname}' => empty($aUser[$aArticleReviewer['reviewer_id']]['realname']) ? '' : $aUser[$aArticleReviewer['reviewer_id']]['realname'],
'{email}' => empty($aUser[$aArticleReviewer['reviewer_id']]['email']) ? '' : $aUser[$aArticleReviewer['reviewer_id']]['email'],
];
//发邮件
//邮箱
$email = empty($aUser[$iUserId]['email']) ? '' : $aUser[$iUserId]['email'];
if(empty($email)){
return json_encode(['status' => 8,'msg' => 'Edit email as empty']);
}
$title = str_replace(array_keys($aSearch), array_values($aSearch),$aEmailConfig['email_subject']);
//邮件内容变量替换
$content = str_replace(array_keys($aSearch), array_values($aSearch), $aEmailConfig['email_content']);
$pre = \think\Env::get('emailtemplete.pre');
$net = \think\Env::get('emailtemplete.net');
$net1 = str_replace("{{email}}",trim($email),$net);
$content=$pre.$content.$net1;
//发送邮件
$memail = empty($aJournal['email']) ? '' : $aJournal['email'];
$mpassword = empty($aJournal['epassword']) ? '' : $aJournal['epassword'];
//期刊标题
$from_name = empty($aJournal['title']) ? '' : $aJournal['title'];
//邮件队列组装参数
$aResult = sendEmail($email,$title,$from_name,$content,$memail,$mpassword);
$iStatus = empty($aResult['status']) ? 1 : $aResult['status'];
$iIsSuccess = 2;
$sMsg = empty($aResult['data']) ? '失败' : $aResult['data'];
if($iStatus == 1){
return json_encode(['status' => 1,'msg' => 'success']);
}
return json_encode(['status' => 8,'msg' => 'fail']);
}
/**
* 编辑审稿人邮件链接失效-重开
*/
public function updateReviewerState(){
//获取参数
$aParam = empty($aParam) ? $this->request->post() : $aParam;
//获取审稿记录ID
$iArtRevId = empty($aParam['art_rev_id']) ? 0 : $aParam['art_rev_id'];
if(empty($iArtRevId)){
return json_encode(['status' => 2,'msg' => 'Please select a record']);
}
//获取账号
$sAccount = empty($aParam['account']) ? '' : $aParam['account'];
if(empty($sAccount)){
return json_encode(['status' => 2,'msg' => 'Please enter your account']);
}
//查询用户是否存在
$aWhere = ['account' => $sAccount,'state' => 0];
$aUser = Db::name('user')->field('user_id,account,email')->where($aWhere)->find();
if(empty($aUser)){
return json_encode(['status' => 3,'msg' => 'Account does not exist']);
}
$iUserId = $aUser['user_id'];
//查询审稿记录
$aWhere = ['art_rev_id' => $iArtRevId];
$aArticleReviewer = Db::name('article_reviewer')->field('art_rev_id,reviewer_id,article_id,state')->where($aWhere)->find();
if(empty($aArticleReviewer)){
return json_encode(['status' => 4,'msg' => 'Review record does not exist']);
}
if($aArticleReviewer['state'] != 4){
return json_encode(['status' => 5,'msg' => 'The review link has not expired and no application is required']);
}
//获取文章信息
$aWhere = ['article_id' => $aArticleReviewer['article_id']];
$aArticle = Db::name('article')->field('article_id,abstrart,title,type,accept_sn,journal_id,state')->where($aWhere)->find();
if(empty($aArticle)){
return json_encode(['status' => 6,'msg' => 'The article does not exist']);
}
if($aArticle['state'] != 2){
return json_encode(['status' => 7,'msg' => 'The article is not in the review status']);
}
//查询期刊信息
$aWhere = ['journal_id' => $aArticle['article_id'],'state' => 0];
$aJournal = Db::name('journal')->field('title as journal_name,website')->find();
//查询期刊信息
if(empty($aArticle['journal_id'])){
return json_encode(array('status' => 8,'msg' => 'The article is not associated with a journal' ));
}
$aWhere = ['state' => 0,'journal_id' => $aArticle['journal_id']];
$aJournal = Db::name('journal')->where($aWhere)->find();
if(empty($aJournal)){
return json_encode(array('status' => 9,'msg' => 'No journal information found' ));
}
//判断编辑的操作权限
$iEditorId = empty($aJournal['editor_id']) ? 0 : $aJournal['editor_id'];
if($iEditorId != $iUserId){
return json_encode(array('status' => 10,'msg' => 'This article is not authorized for operation under the journal you are responsible for' ));
}
//更新文章状态为邀请
$aWhere = ['art_rev_id' => $iArtRevId,'state' => 4];
$result = Db::name('article_reviewer')->where($aWhere)->limit(1)->update(['state' => 5,'ctime' => time(),'editor_act' => 1]);
if($result === false){
return json_encode(array('status' => 11,'msg' => 'Status update failed' ));
}
//查询审稿人的邮箱
$aWhere = ['user_id' => $aArticleReviewer['reviewer_id'],'state' => 0,'email' => ['<>','']];
$aUser = Db::name('user')->field('user_id,email,realname,account')->where($aWhere)->find();
if(empty($aUser)){
return json_encode(['status' => 12,'msg' => "Reviewer and editor information not found"]);
}
//处理发邮件
//邮箱
$email = empty($aUser['email']) ? '' : $aUser['email'];
if(empty($email)){
return json_encode(['status' => 13,'msg' => 'Reviewer email as empty']);
}
//邮件模版
$aEmailConfig = [
'email_subject' => 'Invitation to review a manuscript for {journal_title}-[{accept_sn}]',
'email_content' => '
Dear Dr. {realname},
The manuscript entitled "{article_title}" has been submitted to the journal {journal_title}.The Editor-in-Chief would be most grateful if you could offer an opinion regarding its suitability for publication in the journal {journal_title}.
Abstract of the Manuscript:
{abstrart}
Please let us know if there are any potential conflicts of interest and click the following link to review the manuscript.
Click here to accept the invitation to review
Your username: {account}
Your original password:123456qwe, if you have reset the password, please login with the new one or click the "forgot password".
Thank you for your continued support of our journal.
Sincerely,
Editorial Office
Subscribe to this journal
{journal_title}
Email: {journal_email}
Website: {website}'
];
$aSearch = [
'{accept_sn}' => empty($aArticle['accept_sn']) ? '' : $aArticle['accept_sn'],//accept_sn
'{article_title}' => empty($aArticle['title']) ? '' : $aArticle['title'],//文章标题
'{abstrart}' => empty($aArticle['abstrart']) ? '' : $aArticle['abstrart'],//文章摘要
'{journal_title}' => empty($aJournal['title']) ? '' : $aJournal['title'],//期刊名
'{journal_issn}' => empty($aJournal['issn']) ? '' : $aJournal['issn'],
'{journal_email}' => empty($aJournal['email']) ? '' : $aJournal['email'],
'{website}' => empty($aJournal['website']) ? '' : $aJournal['website'],
];
//用户名
$realname = empty($aUser['account']) ? '' : $aUser['account'];
$realname = empty($aUser['realname']) ? $realname : $aUser['realname'];
$aSearch['{realname}'] = $realname;
//用户账号
$aSearch['{account}'] = empty($aUser['account']) ? '' : $aUser['account'];
//审稿链接
$oArticle = new \app\api\controller\Article;
$aSearch['{creatLoginUrlForreviewer}'] = $oArticle->creatLoginUrlForreviewer(['user_id' => $aArticleReviewer['reviewer_id']],$iArtRevId);
$title = str_replace(array_keys($aSearch), array_values($aSearch),$aEmailConfig['email_subject']);
//邮件内容变量替换
$content = str_replace(array_keys($aSearch), array_values($aSearch), $aEmailConfig['email_content']);
$pre = \think\Env::get('emailtemplete.pre');
$net = \think\Env::get('emailtemplete.net');
$net1 = str_replace("{{email}}",trim($email),$net);
$content=$pre.$content.$net1;
//发送邮件
$memail = empty($aJournal['email']) ? '' : $aJournal['email'];
$mpassword = empty($aJournal['epassword']) ? '' : $aJournal['epassword'];
//期刊标题
$from_name = empty($aJournal['title']) ? '' : $aJournal['title'];
//邮件队列组装参数
$aResult = sendEmail($email,$title,$from_name,$content,$memail,$mpassword);
$iStatus = empty($aResult['status']) ? 1 : $aResult['status'];
$iIsSuccess = 2;
$sMsg = empty($aResult['data']) ? '失败' : $aResult['data'];
if($iStatus == 1){
return json_encode(['status' => 1,'msg' => 'success']);
}
return json_encode(['status' => 14,'msg' => 'fail']);
}
}