917 lines
35 KiB
PHP
917 lines
35 KiB
PHP
<?php
|
||
|
||
namespace app\api\controller;
|
||
|
||
use think\Controller;
|
||
use think\Db;
|
||
use think\Env;
|
||
use think\Queue;
|
||
use think\Validate;
|
||
|
||
/**
|
||
* @title 主编相关接口
|
||
* @description 主编相关接口
|
||
*/
|
||
class Chief extends Controller {
|
||
|
||
protected $article_obj = '';
|
||
protected $user_obj = '';
|
||
protected $user_act_obj = '';
|
||
protected $journal_obj = '';
|
||
protected $user_log_obj = '';
|
||
protected $reviewer_major_obj = '';
|
||
protected $reviewer_to_journal_obj = '';
|
||
protected $article_msg_obj = '';
|
||
protected $article_file_obj = '';
|
||
protected $article_reviewer_obj = '';
|
||
protected $article_author_obj = '';
|
||
protected $article_transfer_obj = '';
|
||
protected $staff_obj = '';
|
||
protected $staff_level_obj = '';
|
||
protected $staff_log_obj = '';
|
||
protected $staff_to_journal_obj = '';
|
||
protected $chief_to_journal_obj = '';
|
||
protected $board_to_journal_obj = '';
|
||
protected $chief_msg_obj = '';
|
||
protected $article_to_board_obj = '';
|
||
protected $login_auto_obj = '';
|
||
|
||
public function __construct(\think\Request $request = null) {
|
||
parent::__construct($request);
|
||
$this->user_obj = Db::name('user');
|
||
$this->user_act_obj = Db::name('user_act');
|
||
$this->article_obj = Db::name('article');
|
||
$this->journal_obj = Db::name('journal');
|
||
$this->user_log_obj = Db::name('user_log');
|
||
$this->reviewer_major_obj = Db::name('reviewer_major');
|
||
$this->reviewer_to_journal_obj = Db::name('reviewer_to_journal');
|
||
$this->article_msg_obj = Db::name('article_msg');
|
||
$this->article_file_obj = Db::name('article_file');
|
||
$this->article_reviewer_obj = Db::name('article_reviewer');
|
||
$this->article_author_obj = Db::name('article_author');
|
||
$this->article_transfer_obj = Db::name('article_transfer');
|
||
$this->staff_obj = Db::name('staff');
|
||
$this->staff_level_obj = Db::name('staff_level');
|
||
$this->staff_log_obj = Db::name('staff_log');
|
||
$this->staff_to_journal_obj = Db::name('staff_to_journal');
|
||
$this->chief_to_journal_obj = Db::name('chief_to_journal');
|
||
$this->board_to_journal_obj = Db::name('board_to_journal');
|
||
$this->chief_msg_obj = Db::name('chief_msg');
|
||
$this->article_to_board_obj = Db::name('article_to_board');
|
||
$this->chief_to_journal_obj = Db::name('chief_to_journal');
|
||
$this->login_auto_obj = Db::name('login_auto');
|
||
}
|
||
|
||
/**
|
||
* @title 获取主编列表
|
||
* @description 获取主编列表
|
||
* @author wangjinlei
|
||
* @url /api/Chief/getChiefList
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id(0为全部)
|
||
* @param name:pageIndex type:int require:1 desc:当前页码数
|
||
* @param name:pageSize type:int require:1 desc:单页数据条数
|
||
*
|
||
* @return chiefs:主编列表#
|
||
* @return count:总数#
|
||
*/
|
||
public function getChiefList(){
|
||
$data = $this->request->post();
|
||
$where['t_chief_to_journal.state'] = 0;
|
||
if($data['journal_id']!=0){
|
||
$where['t_chief_to_journal.journal_id'] = $data['journal_id'];
|
||
}
|
||
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
|
||
$chiefs = $this->chief_to_journal_obj
|
||
->join('t_user','t_user.user_id = t_chief_to_journal.user_id','left')
|
||
->where($where)
|
||
->limit($limit_start,$data['pageSize'])
|
||
->select();
|
||
$count = $this->chief_to_journal_obj->where($where)->count();
|
||
foreach ($chiefs as $k => $v){
|
||
$chiefs[$k]['journal'] = $this->journal_obj->where('journal_id',$v['journal_id'])->find();
|
||
}
|
||
|
||
$re['chiefs'] = $chiefs;
|
||
$re['count'] = $count;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 获取全部期刊
|
||
* @description 获取全部期刊
|
||
* @author wangjinlei
|
||
* @url /api/Chief/getAllJournals
|
||
* @method POST
|
||
*
|
||
* @return journals:期刊列表#
|
||
*/
|
||
public function getAllJournals(){
|
||
$journals = $this->journal_obj->where('state',0)->select();
|
||
|
||
$re['journals'] = $journals;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 添加主编
|
||
* @description 添加主编
|
||
* @author wangjinlei
|
||
* @url /api/Chief/addChief
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:account type:string require:1 desc:主编账号
|
||
* @param name:email type:string require:1 desc:邮箱
|
||
* @param name:realname type:string require:0 desc:真实姓名
|
||
* @param name:password type:string require:1 desc:密码
|
||
* @param name:phone type:string require:0 desc:电话
|
||
*/
|
||
public function addChief(){
|
||
$data = $this->request->post();
|
||
$check = $this->user_obj->where('account',trim($data['account']))->whereOr('email',trim($data['email']))->find();
|
||
if($check){
|
||
return jsonError('Account or Email occupy!');
|
||
}
|
||
//存入数据
|
||
$insert['account'] = trim($data['account']);
|
||
$insert['email'] = trim($data['email']);
|
||
$insert['realname'] = isset($data['realname'])?trim($data['realname']):'';
|
||
$insert['password'] = md5(trim($data['password']));
|
||
$insert['phone'] = isset($data['phone'])?trim($data['phone']):'';
|
||
$insert['type'] = 3;
|
||
$insert['ctime'] = time();
|
||
$uid = $this->user_obj->insertGetId($insert);
|
||
//添加对应关系
|
||
$insert1['user_id'] = $uid;
|
||
$insert1['journal_id'] = $data['journal_id'];
|
||
$this->chief_to_journal_obj->insert($insert1);
|
||
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
|
||
|
||
/**
|
||
* @title 获取文章信息
|
||
* @description 获取文章信息
|
||
* @author wangjinlei
|
||
* @url /api/Chief/getArticleDetail
|
||
* @method POST
|
||
*
|
||
* @param name:article_id type:int require:1 desc:文章id
|
||
*/
|
||
public function getArticleDetail(){
|
||
$data = $this->request->post();
|
||
$article_info = $this->article_obj->where('article_id',$data['article_id'])->find();
|
||
$aus = $this->article_author_obj->where('article_id',$article_info['article_id'])->where('state',0)->select();
|
||
$au = '';
|
||
foreach ($aus as $k => $v){
|
||
$au .= $v['firstname'].' '.$v['lastname'].';';
|
||
}
|
||
$article_info['type'] = translateType($article_info['type']);
|
||
$article_info['author'] = substr($au, 0,-1);
|
||
$files = $this->article_file_obj->where('article_id',$article_info['article_id'])->where('type_name','manuscirpt')->select();
|
||
$article_info['file'] = $files;
|
||
$journal_info = $this->journal_obj->where('journal_id',$article_info['journal_id'])->find();
|
||
$article_info['journal'] = $journal_info;
|
||
$re['article'] = $article_info;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 主编自适应登录
|
||
* @description 主编自适应登录
|
||
* @author wangjinlei
|
||
* @url /api/Chief/autoLoginForChief
|
||
* @method POST
|
||
*
|
||
* @param name:code type:string require:1 desc:code码
|
||
*
|
||
* @return roles:身份列表#
|
||
* @return user:用户信息#
|
||
*/
|
||
public function autoLoginForChief(){
|
||
$data = $this->request->post();
|
||
$info = $this->login_auto_obj->where('code',$data['code'])->find();
|
||
if($info == null){
|
||
return jsonError('system error!');
|
||
}
|
||
$user_info = $this->user_obj->where('user_id',$info['user_id'])->find();
|
||
$roles = $this->getUserRoles($user_info['account']);
|
||
|
||
$re['roles'] = $roles;
|
||
$re['user'] = $user_info;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 获取主编主页进行中的文章列表
|
||
* @description 获取主编主页进行中的文章列表
|
||
* @author wangjinlei
|
||
* @url /api/Chief/getPArticlesForChief
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*/
|
||
public function getPArticlesForChief() {
|
||
$data = $this->request->post();
|
||
$list = $this->article_obj
|
||
->field('t_article.*,t_journal.title journal_title')
|
||
->join('t_journal','t_journal.journal_id = t_article.journal_id','left')
|
||
->where('t_article.journal_id',$data['journal_id'])
|
||
->where('t_article.state',6)
|
||
->select();
|
||
foreach ($list as $k => $v){
|
||
$auts = $this->article_author_obj->where('article_id',$v['article_id'])->where('state',0)->select();
|
||
$au = '';
|
||
foreach ($auts as $vv){
|
||
$au .= $vv['firstname'].' '.$vv['lastname'].';';
|
||
}
|
||
$list[$k]['author'] = substr($au, 0,-1);
|
||
}
|
||
|
||
|
||
foreach ($list as $k => $v){
|
||
if($v['type']){
|
||
$list[$k]['type'] = translateType($v['type']);
|
||
}
|
||
}
|
||
|
||
//加上文章领域
|
||
foreach($list as $k => $v){
|
||
$list[$k]['major_str'] = getMajorStr($v['major_id']);
|
||
// $major = $this->reviewer_major_obj->where('major_id',$v['major_id'])->find();
|
||
// $cmajor = $this->reviewer_major_obj->where('major_id',$v['cmajor_id'])->find();
|
||
// $list[$k]['major'] = $major['title'];
|
||
// $list[$k]['cmajor'] = $cmajor['title'];
|
||
}
|
||
|
||
$re['articles'] = $list;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 获取主编主页历史的文章列表
|
||
* @description 获取主编主页历史的文章列表
|
||
* @author wangjinlei
|
||
* @url /api/Chief/getHArticlesForChief
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:pageIndex type:int require:1 desc:当前页码数
|
||
* @param name:pageSize type:int require:1 desc:单页数据条数
|
||
*
|
||
*/
|
||
public function getHArticlesForChief(){
|
||
$data = $this->request->post();
|
||
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
|
||
$list = $this->article_obj->field('t_article.*,t_journal.title journal_title')
|
||
->join('t_journal','t_journal.journal_id = t_article.journal_id','left')
|
||
->where('t_article.journal_id',$data['journal_id'])
|
||
->where('t_article.state',5)
|
||
->order('t_article.article_id desc')
|
||
->limit($limit_start,$data['pageSize'])
|
||
->select();
|
||
foreach ($list as $k => $v){
|
||
$auts = $this->article_author_obj->where('article_id',$v['article_id'])->where('state',0)->select();
|
||
$au = '';
|
||
foreach ($auts as $vv){
|
||
$au .= $vv['firstname'].' '.$vv['lastname'].';';
|
||
}
|
||
$list[$k]['author'] = substr($au, 0,-1);
|
||
}
|
||
$count = $this->article_obj->where('journal_id',$data['journal_id'])->where('state',5)->count();
|
||
foreach ($list as $k => $v){
|
||
if($v['type']){
|
||
$list[$k]['type'] = translateType($v['type']);
|
||
}
|
||
}
|
||
//加上文章领域
|
||
foreach($list as $k => $v){
|
||
// $major = $this->reviewer_major_obj->where('major_id',$v['major_id'])->find();
|
||
// $cmajor = $this->reviewer_major_obj->where('major_id',$v['cmajor_id'])->find();
|
||
$list[$k]['major_str'] = getMajorStr($v['major_id']);
|
||
// $list[$k]['major'] = $major['title'];
|
||
// $list[$k]['cmajor'] = $cmajor['title'];
|
||
}
|
||
$re['count'] = $count;
|
||
$re['articles'] = $list;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
|
||
/**
|
||
* @title 获取主编期刊列表
|
||
* @description 获取主编期刊列表
|
||
* @author wangjinlei
|
||
* @url /api/Chief/getJournalsFromChief
|
||
* @method POST
|
||
*
|
||
* @param name:user_id type:int require:1 desc:主编userid
|
||
*/
|
||
public function getJournalsFromChief() {
|
||
$data = $this->request->post();
|
||
$journals = $this->chief_to_journal_obj->field('t_journal.*')->join('t_journal','t_journal.journal_id = t_chief_to_journal.journal_id','left')->where('t_chief_to_journal.user_id',$data['user_id'])->where('t_chief_to_journal.state',0)->select();
|
||
|
||
$re['journals'] = $journals;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
|
||
/**
|
||
* @title 添加主编已注册
|
||
* @description 添加主编已注册
|
||
* @author wangjinlei
|
||
* @url /api/Chief/addChiefHas
|
||
* @method POST
|
||
*
|
||
* @param name:user_id type:int require:1 desc:用户id
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*/
|
||
public function addChiefHas(){
|
||
$data = $this->request->post();
|
||
$check = $this->chief_to_journal_obj
|
||
->where('user_id',$data['user_id'])
|
||
->where('journal_id',$data['journal_id'])
|
||
->where('state',0)->find();
|
||
if($check!=null){
|
||
return jsonError('has register!');
|
||
}
|
||
$insert['user_id'] = $data['user_id'];
|
||
$insert['journal_id'] = $data['journal_id'];
|
||
$this->chief_to_journal_obj->insert($insert);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 编辑主编信息
|
||
* @description 编辑主编信息
|
||
* @author wangjinlei
|
||
* @url /api/Chief/editChief
|
||
* @method POST
|
||
*
|
||
* @param name:user_id type:int require:1 desc:用户id
|
||
* @param name:email type:email require:1 desc:邮箱
|
||
* @param name:realname type:string require:0 desc:真实姓名
|
||
* @param name:phone type:string require:0 desc:电话
|
||
*/
|
||
public function editChief(){
|
||
$data = $this->request->post();
|
||
//存入数据
|
||
$insert['email'] = trim($data['email']);
|
||
$insert['realname'] = isset($data['realname'])?trim($data['realname']):'';
|
||
$insert['phone'] = isset($data['phone'])?trim($data['phone']):'';
|
||
$this->user_obj->where('user_id',$data['user_id'])->update($insert);
|
||
return jsonSuccess([]);
|
||
|
||
}
|
||
|
||
/**
|
||
* @title 主编期刊对应关系添加
|
||
* @description 主编期刊对应关系添加
|
||
* @author wangjinlei
|
||
* @url /api/Chief/addChiefToJournal
|
||
* @method POST
|
||
*
|
||
* @param name:user_id type:int require:1 desc:用户id
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*/
|
||
public function addChiefToJournal(){
|
||
$data = $this->request->post();
|
||
$insert['user_id'] = $data['user_id'];
|
||
$insert['journal_id'] = $data['journal_id'];
|
||
$this->chief_to_journal_obj->insert($insert);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 获取期刊详情
|
||
* @description 获取期刊详情
|
||
* @author wangjinlei
|
||
* @url /api/Chief/getJournalDetail
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*/
|
||
public function getJournalDetail(){
|
||
$data = $this->request->post();
|
||
$journal = $this->journal_obj->where('journal_id',$data['journal_id'])->find();
|
||
|
||
$re['journal'] = $journal;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 删除主编期刊对应关系
|
||
* @description 删除主编期刊对应关系
|
||
* @author wangjinlei
|
||
* @url /api/Chief/delChiefToJournal
|
||
* @method POST
|
||
*
|
||
* @param name:ctj_id type:int require:1 desc:关系表id
|
||
*/
|
||
public function delChiefToJournal(){
|
||
$data = $this->request->post();
|
||
$this->chief_to_journal_obj->where('ctj_id',$data['ctj_id'])->update(['state'=>1]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 获取期刊列表for主编
|
||
* @description 获取期刊列表for主编
|
||
* @author wangjinlei
|
||
* @url /api/Chief/getJournalForChief
|
||
* @method POST
|
||
*/
|
||
public function getJournalForChief(){
|
||
$list = $this->journal_obj->where('state',0)->select();
|
||
foreach ($list as $k => $v){
|
||
//获取期刊对应主编
|
||
$ca = $this->chief_to_journal_obj->field('t_user.*,t_chief_to_journal.*')->join('t_user','t_user.user_id = t_chief_to_journal.user_id','LEFT')->where('t_chief_to_journal.journal_id',$v['journal_id'])->where('t_chief_to_journal.state',0)->select();
|
||
$list[$k]['chief'] = $ca;
|
||
}
|
||
|
||
$re['journals'] = $list;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 增加期刊编委
|
||
* @description 增加期刊编委
|
||
* @author wangjinlei
|
||
* @url /api/Chief/addJournalBoard
|
||
* @method POST
|
||
*
|
||
* @param name:account type:string require:1 desc:主编账号
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:password type:string require:1 desc:密码
|
||
* @param name:email type:string require:1 desc:邮箱
|
||
* @param name:realname type:string require:0 desc:真实姓名
|
||
* @param name:phone type:string require:0 desc:电话
|
||
*/
|
||
public function addJournalBoard(){
|
||
return jsonError('Service Stop');
|
||
// $data = $this->request->post();
|
||
// $check = $this->user_obj->where('account',trim($data['account']))->where('email',trim($data['email']))->where('state',0)->find();
|
||
// if($check){
|
||
// return jsonError('Account or Email has been register!');
|
||
// }
|
||
// $insert['account'] = trim($data['account']);
|
||
// $insert['email'] = trim($data['email']);
|
||
// $insert['password'] = md5(trim($data['password']));
|
||
// $insert['realname'] = isset($data['realname'])?trim($data['realname']):'';
|
||
// $insert['phone'] = isset($data['phone'])?trim($data['phone']):'';
|
||
// $insert['type'] = 4;
|
||
// $insert['ctime'] = time();
|
||
// $uid = $this->user_obj->insertGetId($insert);
|
||
// //添加对应关系
|
||
// $to_insert['user_id'] = $uid;
|
||
// $to_insert['journal_id'] = $data['journal_id'];
|
||
// $this->board_to_journal_obj->insert($to_insert);
|
||
|
||
// return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 增加期刊编委对应关系
|
||
* @description 增加期刊编委对应关系
|
||
* @author wangjinlei
|
||
* @url /api/Chief/addJournalBoardHas
|
||
* @method POST
|
||
*
|
||
* @param name:user_id type:int require:1 desc:用户id
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*/
|
||
public function addJournalBoardHas(){
|
||
return jsonError('Service Stop');
|
||
|
||
|
||
// $data = $this->request->post();
|
||
// $check = $this->board_to_journal_obj->where('user_id',$data['user_id'])->where('journal_id',$data['journal_id'])->where('state',0)->find();
|
||
// if($check!=null){
|
||
// return jsonError('has register!');
|
||
// }
|
||
// $insert['journal_id'] = $data['journal_id'];
|
||
// $insert['user_id'] = $data['user_id'];
|
||
// $this->board_to_journal_obj->insert($insert);
|
||
// return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 获取编辑对应的期刊列表
|
||
* @description 获取编辑对应的期刊列表
|
||
* @author wangjinlei
|
||
* @url /api/Chief/getJournalsByEditor
|
||
* @method POST
|
||
*
|
||
* @param name:user_id type:int require:1 desc:用户表id
|
||
*
|
||
* @return journals:期刊列表#
|
||
*/
|
||
public function getJournalsByEditor(){
|
||
$data = $this->request->post();
|
||
$list = $this->journal_obj->where('editor_id',$data['user_id'])->where('state',0)->select();
|
||
$re['journals'] = $list;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 验证用户邮箱是否已注册
|
||
* @description 验证用户邮箱是否已注册
|
||
* @author wangjinlei
|
||
* @url /api/Chief/checkEmailForUser
|
||
* @method POST
|
||
*
|
||
* @param name:email type:string require:1 desc:用户名或邮箱
|
||
*
|
||
* @return user_info:用户详情#
|
||
*/
|
||
public function checkEmailForUser(){
|
||
$data = $this->request->post();
|
||
$user_info = $this->user_obj->where('account|email',$data['email'])->find();
|
||
|
||
//新增查询数据 chengxiaoling 20251020 start
|
||
if(!empty($user_info)){
|
||
$aWhere = ['reviewer_id' => $user_info['user_id']];
|
||
$user_reviewer_info = Db::name('user_reviewer_info')->field('technical,company as affiliation,website,field as research_areas')->where($aWhere)->find();
|
||
$user_info = empty($user_reviewer_info) ? $user_info : array_merge($user_info,$user_reviewer_info);
|
||
}
|
||
//新增查询数据 chengxiaoling 20251020 end
|
||
$re['user_info'] = $user_info;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 删除期刊编委
|
||
* @description 删除期刊编委
|
||
* @author wangjinlei
|
||
* @url /api/Chief/delJournalBoard
|
||
* @method POST
|
||
*
|
||
* @param name:btj_id type:int require:1 desc:关系表id
|
||
*/
|
||
public function delJournalBoard(){
|
||
$data = $this->request->post();
|
||
$this->board_to_journal_obj->where('btj_id',$data['btj_id'])->update(['state'=>1]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 升级审稿人至青年编委
|
||
* @description 升级审稿人至青年编委
|
||
* @author wangjinlei
|
||
* @url /api/Chief/upgradeReviewer
|
||
* @method POST
|
||
*
|
||
* @param name:user_id type:int require:1 desc:用户id
|
||
*/
|
||
public function upgradeReviewer(){
|
||
$data = $this->request->post();
|
||
$has = $this->user_obj->where('user_id',$data['user_id'])->find();
|
||
if($has['is_reviewer']!=1){
|
||
return jsonError('Only reviewer can become young board!');
|
||
}
|
||
$this->user_obj->where('user_id',$data['user_id'])->update(['is_yboard'=>1]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 获取待审文章列表
|
||
* @description 获取待审文章列表
|
||
* @author wangjinlei
|
||
* @url /api/Chief/getBerevArticle
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*/
|
||
public function getBerevArticle(){
|
||
$data = $this->request->post();
|
||
//获取送审状态的文章
|
||
$article_list = $this->article_obj->where('journal_id',$data['journal_id'])->where('state',2)->select();
|
||
|
||
$re['article_list'] = $article_list;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 添加文章消息
|
||
* @description 添加文章消息
|
||
* @author wangjinlei
|
||
* @url /api/Chief/addMsgForArticle
|
||
* @method POST
|
||
*
|
||
* @param name:article_id type:int require:1 desc:文章id
|
||
* @param name:content type:string require:1 desc:内容
|
||
* @param name:user_id type:int require:1 desc:发送用户的id
|
||
*/
|
||
public function addMsgForArticle(){
|
||
$data = $this->request->post();
|
||
$insert['article_id'] = $data['article_id'];
|
||
$insert['user_id'] = $data['user_id'];
|
||
$insert['content'] = trim($data['content']);
|
||
$insert['ctime'] = time();
|
||
$this->chief_msg_obj->insert($insert);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 获取文章消息列表
|
||
* @description 获取文章消息列表
|
||
* @author wangjinlei
|
||
* @url /api/Chief/getMsgList
|
||
* @method POST
|
||
*
|
||
* @param name:article_id type:int require:1 desc:文章id
|
||
*/
|
||
// public function getMsgList(){
|
||
// $data = $this->request->post();
|
||
// $list = $this->chief_msg_obj->join('t_user','t_user.user_id = t_chief_msg.user_id','LEFT')
|
||
// ->where('t_chief_msg.article_id',$data['article_id'])
|
||
// ->where('t_chief_msg.state',0)
|
||
// ->order('t_chief_msg.ctime desc')
|
||
// ->select();
|
||
// $re['msgs'] = $list;
|
||
//
|
||
// return jsonSuccess($re);
|
||
// }
|
||
|
||
/**
|
||
* @title 发送文章信息
|
||
* @description 发送文章信息
|
||
* @author wangjinlei
|
||
* @url /api/Chief/pushChiefMsg
|
||
* @method POST
|
||
*
|
||
* @param name:article_id type:int require:1 desc:文章id
|
||
* @param name:user_id type:int require:1 desc:发送者用户id
|
||
* @param name:content type:string require:1 desc:发送的内容
|
||
*/
|
||
public function pushChiefMsg(){
|
||
$data = $this->request->post();
|
||
$insert['article_id'] = $data['article_id'];
|
||
$insert['user_id'] = $data['user_id'];
|
||
$insert['content'] = trim($data['content']);
|
||
$insert['ctime'] = time();
|
||
$this->chief_msg_obj->insert($insert);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 获取主编详情信息列表
|
||
* @description 获取主编详情信息列表
|
||
* @author wangjinlei
|
||
* @url /api/Chief/getAllChiefMsg
|
||
* @method POST
|
||
*
|
||
* @param name:article_id type:int require:1 desc:文章id
|
||
*
|
||
* @return msgs:消息列表#
|
||
*/
|
||
public function getAllChiefMsg(){
|
||
$data = $this->request->post();
|
||
$msg = $this->chief_msg_obj
|
||
->where('t_chief_msg.article_id',$data['article_id'])
|
||
->where('t_chief_msg.state',0)
|
||
->order('t_chief_msg.chief_msg_id desc')
|
||
->select();
|
||
foreach ($msg as $k => $v){
|
||
$uinfo = $this->user_obj->where('user_id',$v['user_id'])->find();
|
||
$msg[$k]['user'] = $uinfo;
|
||
$msg[$k]['role'] = $this->getRoleForJournal($uinfo,$data['article_id']);
|
||
}
|
||
$re['msgs'] = $msg;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
private function getRoleForJournal($uinfo,$article_id){
|
||
$article_info = $this->article_obj->where('article_id',$article_id)->find();
|
||
if($uinfo['type']==2){
|
||
return 'editor';
|
||
}
|
||
$reviewer_res = $this->reviewer_to_journal_obj->where('journal_id',$article_info['journal_id'])->where('reviewer_id',$uinfo['user_id'])->where('state',0)->find();
|
||
if($reviewer_res!=null){
|
||
return 'yboard';
|
||
}
|
||
// $yboard_res = $this->reviewer_to_journal_obj->where('reviewer_id',$user_info['user_id'])->where('is_yboard',1)->where('state',0)->find();
|
||
// if($yboard_res!=null){
|
||
// $roles[] = 'yboard';
|
||
// }
|
||
$chief_res = $this->chief_to_journal_obj->where('journal_id',$article_info['journal_id'])->where('user_id',$uinfo['user_id'])->where('state',0)->find();
|
||
if($chief_res != null){
|
||
return 'chief';
|
||
}
|
||
$board_res = $this->board_to_journal_obj->where('journal_id',$article_info['journal_id'])->where('user_id',$uinfo['user_id'])->where('state',0)->find();
|
||
if($board_res != null){
|
||
return 'board';
|
||
}
|
||
return 'author';
|
||
}
|
||
|
||
|
||
/**
|
||
* @title 增加文章编委
|
||
* @description 增加文章编委
|
||
* @author wangjinlei
|
||
* @url /api/Chief/addArticleBoard
|
||
* @method POST
|
||
*
|
||
* @param name:article_id type:int require:1 desc:文章id
|
||
* @param name:board_id type:int require:1 desc:user_id用户id
|
||
*/
|
||
public function addArticleBoard(){
|
||
$data = $this->request->post();
|
||
$article_info = $this->article_obj->where('article_id',$data['article_id'])->find();
|
||
$journal_info = $this->journal_obj->where('journal_id',$article_info['journal_id'])->find();
|
||
$board_info = $this->user_obj->where('user_id',$data['board_id'])->find();
|
||
// $board_rev_info = $this->user_reviewer_info_obj->where("reviewer_id",$board_info['user_id'])->find();
|
||
$check = $this->article_to_board_obj->where('article_id',$data['article_id'])->where('board_id',$data['board_id'])->find();
|
||
if($check!=null){
|
||
return jsonError('Applied!');
|
||
}
|
||
$insert['article_id'] = $data['article_id'];
|
||
$insert['board_id'] = $data['board_id'];
|
||
$this->article_to_board_obj->insert($insert);
|
||
|
||
//发送邮件给编委,并创造直连链接
|
||
|
||
$tt = $article_info['accept_sn'].'<br>';
|
||
$tt .= 'Dear Dr. '.($board_info['realname']==''?$board_info["account"]:$board_info['realname']).',<br>';
|
||
$tt .= 'The manuscript entitled “'.$article_info['title'].'”is under fininal decision status of the journal '.$journal_info['title'].'.<br>';
|
||
$tt .= '(The manuscripit in fininal decision status has been peer-reviewed, and the authors had revised all review opinions.)<br>';
|
||
$tt .= 'The Editor-in-Chief would be most grateful if you could offer an opinion regarding its suitability for publication in the journal '.$journal_info['title'].'.<br>';
|
||
$tt .= 'Any comments and decisions you make will be valued by the editorial board and the editor in chief. If you choose not to make a decision on this article, you need not to reply and log in the submission system, we will refer to the opinions of other experts.'
|
||
. '(<a href="'.$this->creatLoginUrlForBoard($board_info,$article_info['article_id']).'">Plese click here</a>)<br>';
|
||
$tt .= 'Please bring into our knowledge if there is any potential Conflict of Interest.<br><br><br>';
|
||
$tt .= 'Thank you for your consideration.<br>';
|
||
$tt .= 'Look forward for your reply.<br>';
|
||
$tt .= 'Reviewer Center<br>';
|
||
$tt .= 'Your username:'.$board_info['realname'].'<br><br>';
|
||
$tt .= 'Sincerely,<br>';
|
||
$tt .= 'Editorial Office<br>';
|
||
$tt .= $journal_info['title'].'<br>';
|
||
$tt .= 'Email: '.$journal_info['email'].'<br>';
|
||
$tt .= 'Website: '.$journal_info['website'];
|
||
|
||
$maidata['email'] = $board_info['email'];
|
||
$maidata['title'] = $journal_info['title'];
|
||
$maidata['content'] = $tt;
|
||
$maidata['tmail'] = $journal_info['email'];
|
||
$maidata['tpassword'] = $journal_info['epassword'];
|
||
Queue::push( 'app\api\job\mail@fire' , $maidata , "tmail" );
|
||
|
||
$sendUser=[
|
||
'title'=>$journal_info['title'], // 邮件标题
|
||
'content'=>$tt,//邮件内容
|
||
'user_id'=>$board_info['user_id'], //收件人ID
|
||
'email'=>$board_info['email'],// 收件人邮箱
|
||
'journal_id'=>$journal_info['journal_id'], // 期刊ID
|
||
'sendEmail'=>$journal_info['email'], // 期刊邮箱
|
||
'sendPassword'=>$journal_info['epassword'], // 期刊密码
|
||
'from_name'=>'TMR'
|
||
];
|
||
// Queue::push('app\api\job\domail@fire',$sendUser,'domail');
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
private function creatLoginUrlForBoard($user,$article_id){
|
||
$code = md5(time().rand(1000,9999).'thinkphp');
|
||
$insert['user_id'] = $user['user_id'];
|
||
$insert['code'] = $code;
|
||
$insert['ctime'] = time();
|
||
$this->login_auto_obj->insert($insert);
|
||
$url = 'https://submission.tmrjournals.com/edit_text?Art_id='.$article_id.'&act='.$code;
|
||
return $url;
|
||
}
|
||
|
||
/**
|
||
* @title 删除文章编委
|
||
* @description 删除文章编委
|
||
* @author wangjinlei
|
||
* @url /api/Chief/delArticleBoard
|
||
* @method POST
|
||
*
|
||
* @param name:article_board_id type:int require:1 desc:id号
|
||
*/
|
||
public function delArticleBoard(){
|
||
$data = $this->request->post();
|
||
$this->article_to_board_obj->where('article_board_id',$data['article_board_id'])->update(['state'=>1]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 获取文章编委列表
|
||
* @description 获取文章编委列表
|
||
* @author wangjinlei
|
||
* @url /api/Chief/getArticleBoard
|
||
* @method POST
|
||
*
|
||
* @param name:article_id type:int require:1 desc:文章id
|
||
*
|
||
* @return boards:编委列表#
|
||
*/
|
||
public function getArticleBoard(){
|
||
$data = $this->request->post();
|
||
$list = $this->article_to_board_obj
|
||
->field('t_user.*,t_reviewer_major.ctitle major_title,t_user_reviewer_info.field field')
|
||
->join('t_user','t_user.user_id = t_article_to_board.board_id','left')
|
||
->join('t_user_reviewer_info','t_user_reviewer_info.reviewer_id = t_user.user_id','left')
|
||
->join('t_reviewer_major','t_reviewer_major.major_id = t_user_reviewer_info.major','left')
|
||
->where('t_article_to_board.article_id',$data['article_id'])
|
||
->where('t_article_to_board.state',0)->select();
|
||
|
||
$re['boards'] = $list;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 获取文章编委池
|
||
* @description 获取文章编委池
|
||
* @author wangjinlei
|
||
* @url /api/Chief/getAllArticleBoards
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:pageIndex type:int require:1 desc:当前页码
|
||
* @param name:pageSize type:int require:1 desc:每个页面的数据条数
|
||
*
|
||
* @return boards:编委池#
|
||
*/
|
||
public function getAllArticleBoards(){
|
||
$data = $this->request->post();
|
||
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
|
||
$list = $this->board_to_journal_obj
|
||
->field('t_user.*,t_reviewer_major.ctitle major_title,t_user_reviewer_info.field field')
|
||
->join('t_user','t_user.user_id = t_board_to_journal.user_id')
|
||
->join('t_user_reviewer_info','t_user_reviewer_info.reviewer_id = t_user.user_id','left')
|
||
->join('t_reviewer_major','t_reviewer_major.major_id = t_user_reviewer_info.major','left')
|
||
->where('t_board_to_journal.journal_id',$data['journal_id'])
|
||
->where('t_board_to_journal.state',0)
|
||
->limit($limit_start,$data['pageSize'])
|
||
->select();
|
||
$count = $this->board_to_journal_obj
|
||
->where('t_board_to_journal.journal_id',$data['journal_id'])
|
||
->where('t_board_to_journal.state',0)
|
||
->count();
|
||
$re['boards'] = $list;
|
||
$re['count'] = $count;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 获取期刊编委列表
|
||
* @description 获取期刊编委列表
|
||
* @author wangjinlei
|
||
* @url /api/Chief/getJournalBoard
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*/
|
||
public function getJournalBoard(){
|
||
$data = $this->request->post();
|
||
$boards = $this->board_to_journal_obj
|
||
->join('t_user','t_user.user_id = t_board_to_journal.user_id','LEFT')
|
||
->where('t_board_to_journal.journal_id',$data['journal_id'])
|
||
->where('t_board_to_journal.state',0)
|
||
->select();
|
||
|
||
// foreach($boards as $k => $v){
|
||
// $boards[$k]['indexs'] = $this->user_index_obj
|
||
// ->where('user_id',$v['user_id'])
|
||
// ->where('state',0)
|
||
// ->order('year')->select();
|
||
// }
|
||
|
||
$re['boards']=$boards;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
private function getUserRoles($account) {
|
||
$user_info = $this->user_obj->where('account',$account)->find();
|
||
if($user_info['type']==2){
|
||
$ros[] = 'editor';
|
||
return $ros;
|
||
}
|
||
$roles[] = 'author';
|
||
$reviewer_res = $this->reviewer_to_journal_obj->where('reviewer_id',$user_info['user_id'])->where('state',0)->find();
|
||
if($reviewer_res!=null){
|
||
$roles[] = 'reviewer';
|
||
}
|
||
$yboard_res = $this->reviewer_to_journal_obj->where('reviewer_id',$user_info['user_id'])->where('is_yboard',1)->where('state',0)->find();
|
||
if($yboard_res!=null){
|
||
$roles[] = 'yboard';
|
||
}
|
||
$chief_res = $this->chief_to_journal_obj->where('user_id',$user_info['user_id'])->where('state',0)->find();
|
||
if($chief_res != null){
|
||
$roles[] = 'chief';
|
||
}
|
||
$board_res = $this->board_to_journal_obj->where('user_id',$user_info['user_id'])->where('state',0)->find();
|
||
if($board_res != null){
|
||
$roles[] = 'board';
|
||
}
|
||
return $roles;
|
||
}
|
||
|
||
}
|