2097 lines
164 KiB
PHP
2097 lines
164 KiB
PHP
<?php
|
||
|
||
namespace app\master\controller;
|
||
|
||
use think\Controller;
|
||
use think\Db;
|
||
use think\Queue;
|
||
use think\Validate;
|
||
|
||
/**
|
||
* @title 期刊接口
|
||
* @description 期刊相关操作
|
||
* @group 期刊相关
|
||
*/
|
||
class Journal extends Controller {
|
||
//put your code here
|
||
protected $admin_obj = '';
|
||
protected $journal_obj = '';
|
||
protected $article_obj = '';
|
||
protected $journal_topic_obj = '';
|
||
protected $journal_stage_obj = '';
|
||
protected $journal_line_obj = '';
|
||
protected $journal_notices_obj = '';
|
||
protected $journal_abs_obj = '';
|
||
protected $article_author_obj = '';
|
||
protected $article_to_topic_obj = '';
|
||
protected $article_to_line_obj = '';
|
||
protected $journal_cfp_obj = '';
|
||
protected $journal_paper_obj = '';
|
||
protected $journal_paper_art_obj = '';
|
||
protected $subscribe_journal_obj = '';
|
||
protected $subscribe_topic_obj = '';
|
||
protected $board_obj = '';
|
||
protected $board_group_obj = '';
|
||
protected $base_topic_obj = '';
|
||
protected $subscribe_base_topic_obj = '';
|
||
protected $journal_for_author;
|
||
|
||
public function __construct(\think\Request $request = null) {
|
||
parent::__construct($request);
|
||
$this->admin_obj = Db::name('admin');
|
||
$this->journal_obj = Db::name('journal');
|
||
$this->article_obj = Db::name('article');
|
||
$this->journal_topic_obj = Db::name('journal_topic');
|
||
$this->journal_stage_obj = Db::name('journal_stage');
|
||
$this->journal_line_obj = Db::name('journal_line');
|
||
$this->journal_notices_obj = Db::name('journal_notices');
|
||
$this->journal_abs_obj = Db::name('journal_abstracting');
|
||
$this->article_author_obj = Db::name('article_author');
|
||
$this->article_to_topic_obj = Db::name('article_to_topic');
|
||
$this->article_to_line_obj = Db::name('article_to_line');
|
||
$this->journal_cfp_obj = Db::name('journal_cfp');
|
||
$this->journal_paper_obj = Db::name('journal_paper');
|
||
$this->journal_paper_art_obj = Db::name('journal_paper_art');
|
||
$this->subscribe_journal_obj = Db::name('subscribe_journal');
|
||
$this->subscribe_topic_obj = Db::name('subscribe_topic');
|
||
$this->board_obj = Db::name('board');
|
||
$this->board_group_obj = Db::name('board_group');
|
||
$this->base_topic_obj = Db::name('base_topic');
|
||
$this->subscribe_base_topic_obj = Db::name('subscribe_base_topic');
|
||
$this->journal_for_author = Db::name('journal_for_author');
|
||
}
|
||
|
||
/**
|
||
* @title 获取期刊列表
|
||
* @description 获取期刊列表
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getJournalList
|
||
* @method POST
|
||
*
|
||
* @param name:editor_id type:int require:1 desc:编辑id
|
||
*
|
||
* @return journalList:期刊列表@
|
||
* @journalList title:标题 issn:issn editorinchief:editorinchief acceptance:acceptance finaldecision:finaldecision apc:apc
|
||
*/
|
||
public function getJournalList(){
|
||
$data = $this->request->post();
|
||
$where['j_journal.state'] = 0;
|
||
if($data['editor_id']!=1){
|
||
$where['j_journal.editor_id'] = $data['editor_id'];
|
||
}
|
||
$res = $this->journal_obj
|
||
->field('j_journal.*,j_admin.realname realname')
|
||
->join('j_admin','j_admin.admin_id = j_journal.editor_id','LEFT')
|
||
->where($where)
|
||
->order('j_journal.sort desc')
|
||
->select();
|
||
return json(['code'=>0,'msg'=>'success','data'=>['journalList'=>$res]]);
|
||
}
|
||
|
||
/**
|
||
* @title 获取所有期刊
|
||
* @description 获取所有期刊
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getJournalAll
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:当前期刊id
|
||
*
|
||
* @return journalList:期刊列表#
|
||
*/
|
||
public function getJournalAll(){
|
||
$data = $this->request->post();
|
||
$res = $this->journal_obj->where('journal_id','<>',$data['journal_id'])->where('state',0)->select();
|
||
$re['journalList'] = $res;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
|
||
/**
|
||
* @title 添加期刊
|
||
* @description 添加期刊
|
||
* @author wangjinlei
|
||
* @url /master/Journal/addJournal
|
||
* @method POST
|
||
*
|
||
* @param name:title type:string require:1 desc:标题
|
||
* @param name:issn type:string require:1
|
||
* @param name:editorinchief type:string require:1
|
||
* @param name:acceptance type:string require:1 desc:受理度
|
||
* @param name:finaldecision type:string require:1 desc:最终受理
|
||
* @param name:sort type:int require:1 detault:0 desc:权重值
|
||
* @param name:abstract type:string require:1 desc:简介
|
||
* @param name:sx type:string require:1 desc:缩写(demo:tmr)
|
||
* @param name:jabbr type:int require:0 desc:期刊简称
|
||
* @param name:apc type:string require:1
|
||
* @param name:art_num type:int require:1 desc:单刊文章数量
|
||
* @param name:cycle type:int require:1 desc:1月刊2双月刊3季刊6半年刊
|
||
* @param name:icon type:string require:1
|
||
* @param name:licon type:string require:1 desc:简易缩略图
|
||
* @param name:editor_id type:int require:1 desc:编辑id
|
||
* @param name:system_color type:string require:1
|
||
* @param name:submission_url type:string require:1
|
||
* @param name:board_url type:string require:1 desc:编委会地址
|
||
* @param name:topic_show_type type:int require:1 desc:0无图片1有图片
|
||
*/
|
||
public function addJournal(){
|
||
$data = $this->request->post();
|
||
$insert_data['title'] = $data['title'];
|
||
$insert_data['issn'] = $data['issn'];
|
||
$insert_data['editorinchief'] = $data['editorinchief'];
|
||
$insert_data['acceptance'] = $data['acceptance'];
|
||
$insert_data['finaldecision'] = $data['finaldecision'];
|
||
$insert_data['sort'] = $data['sort'];
|
||
$insert_data['abstract'] = $data['abstract'];
|
||
$insert_data['sx'] = $data['sx'];
|
||
$insert_data['jabbr'] = $data['jabbr'];
|
||
$insert_data['apc'] = $data['apc'];
|
||
$insert_data['art_num'] = $data['art_num'];
|
||
$insert_data['cycle'] = $data['cycle'];
|
||
$insert_data['icon'] = $data['icon'];
|
||
$insert_data['licon'] = $data['licon'];
|
||
$insert_data['editor_id'] = $data['editor_id'];
|
||
$insert_data['system_color'] = $data['system_color'];
|
||
$insert_data['submission_url'] = $data['submission_url'];
|
||
$insert_data['board_url'] = $data['board_url'];
|
||
$insert_data['topic_show_type'] = $data['topic_show_type'];
|
||
$res = $this->journal_obj->insert($insert_data);
|
||
if($res){
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}else{
|
||
return json(['code'=>1,'msg'=>'system error']);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @title 删除期刊
|
||
* @description 删除期刊
|
||
* @author wangjinlei
|
||
* @url /master/Journal/delJournal
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id require:1 desc:主键
|
||
*/
|
||
public function delJournal(){
|
||
$data = $this->request->post();
|
||
$res = $this->journal_obj->where('journal_id',$data['journal_id'])->update(['state'=>1]);
|
||
if($res){
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}else{
|
||
return json(['code'=>1,'msg'=>'system error']);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
/**
|
||
* @title 修改期刊详情
|
||
* @description 修改期刊详情
|
||
* @author wangjinlei
|
||
* @url /master/Journal/editJournalDetail
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id require:1 desc:主键
|
||
* @param name:title type:string require:1 desc:标题
|
||
* @param name:issn type:string require:1
|
||
* @param name:editorinchief type:string require:1
|
||
* @param name:acceptance type:string require:1 desc:受理度
|
||
* @param name:finaldecision type:string require:1 desc:最终受理
|
||
* @param name:art_num type:int require:1 desc:单刊文章数量
|
||
* @param name:cycle type:int require:1 desc:1月刊2双月刊3季刊6半年刊
|
||
* @param name:sort type:int require:1 detault:0 desc:权重值
|
||
* @param name:abstract type:string require:1 desc:简介
|
||
* @param name:sx type:string require:1 desc:缩写(demo:tmr)
|
||
* @param name:jabbr type:string require:0 desc:期刊简称
|
||
* @param name:apc type:string require:1
|
||
* @param name:publish_stage_id type:int require:1 desc:推广分期id
|
||
* @param name:icon type:string require:1
|
||
* @param name:licon type:string require:1 desc:简易缩略图
|
||
* @param name:editor_id type:int require:1 desc:编辑id
|
||
* @param name:system_color type:string require:1
|
||
* @param name:submission_url type:string require:1
|
||
* @param name:board_url type:string require:1 desc:编委会地址
|
||
* @param name:topic_show_type type:int require:1 desc:0无图片1有图片
|
||
*/
|
||
public function editJournalDetail(){
|
||
$data = $this->request->post();
|
||
$insert_data['title'] = $data['title'];
|
||
$insert_data['issn'] = $data['issn'];
|
||
$insert_data['editorinchief'] = $data['editorinchief'];
|
||
$insert_data['acceptance'] = $data['acceptance'];
|
||
$insert_data['finaldecision'] = $data['finaldecision'];
|
||
$insert_data['art_num'] = $data['art_num'];
|
||
$insert_data['cycle'] = $data['cycle'];
|
||
$insert_data['sort'] = $data['sort'];
|
||
$insert_data['abstract'] = $data['abstract'];
|
||
$insert_data['sx'] = $data['sx'];
|
||
$insert_data['jabbr'] = $data['jabbr'];
|
||
$insert_data['publish_stage_id'] = $data['publish_stage_id'];
|
||
$insert_data['apc'] = $data['apc'];
|
||
$insert_data['icon'] = $data['icon'];
|
||
$insert_data['licon'] = $data['licon'];
|
||
$insert_data['editor_id'] = $data['editor_id'];
|
||
$insert_data['system_color'] = $data['system_color'];
|
||
$insert_data['submission_url'] = $data['submission_url'];
|
||
$insert_data['board_url'] = $data['board_url'];
|
||
$insert_data['topic_show_type'] = $data['topic_show_type'];
|
||
$res = $this->journal_obj->where('journal_id',$data['journal_id'])->update($insert_data);
|
||
// if($res){
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
// }else{
|
||
// return json(['code'=>1,'msg'=>'Please confirm you have changed the journal information.']);
|
||
// }
|
||
}
|
||
|
||
/**
|
||
* @title 获取编辑列表
|
||
* @description 获取编辑列表
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getEditorList
|
||
* @method POST
|
||
*
|
||
* @return editorList:编辑列表@
|
||
* @editorList account:账号 realname:真实姓名 role:角色代号(0admin1editor)
|
||
*/
|
||
public function getEditorList(){
|
||
$editor_list = $this->admin_obj->where('role',1)->select();
|
||
return json(['code'=>0,'msg'=>'success','data'=>['editorList'=>$editor_list]]);
|
||
}
|
||
|
||
/**
|
||
* @title 图片上传
|
||
* @description 图片上传
|
||
* @author wangjinlei
|
||
* @url /master/Journal/up_file
|
||
* @method POST
|
||
*
|
||
* @param name:name type:string require:1 default:journalicon desc:文件域名称
|
||
*
|
||
* @return upurl:图片地址
|
||
*/
|
||
public function up_file() {
|
||
$file = request()->file('journalicon');
|
||
if ($file) {
|
||
$info = $file->move(ROOT_PATH . 'public' . DS . 'journalicon');
|
||
if ($info) {
|
||
return json(['code'=>0 , 'msg'=>'success', 'upurl' => str_replace("\\", "/", $info->getSaveName())]);
|
||
} else {
|
||
return json(['code' => 1, 'msg' => $file->getError()]);
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @title 获取编委列表
|
||
* @description 获取编委列表
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getBoardList
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*
|
||
* @return boards:编委列表array#
|
||
* @return journal:期刊信息#
|
||
*/
|
||
public function getBoardList(){
|
||
$data = $this->request->post();
|
||
$journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find();
|
||
$list = $this->board_obj
|
||
->field('j_board.*,j_board_group.group_name')
|
||
->join('j_board_group','j_board.board_group_id = j_board_group.board_group_id','LEFT')
|
||
->where('j_board.journal_id',$data['journal_id'])
|
||
->where('j_board.state',0)
|
||
->order('j_board.type')
|
||
->select();
|
||
$re['boards'] = $list;
|
||
$re['journal'] = $journal_info;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 获取编委成员分类列表
|
||
* @description 获取编委成员分类列表
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getBoardGroups
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*
|
||
* @return groups:编委分类列表array#
|
||
*/
|
||
public function getBoardGroups(){
|
||
$data = $this->request->post();
|
||
$list = $this->board_group_obj->where('journal_id',$data['journal_id'])->where('state',0)->select();
|
||
$re['groups'] = $list;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 添加编委成员分组
|
||
* @description 添加编委成员分组
|
||
* @author wangjinlei
|
||
* @url /master/Journal/addBoardGroup
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:group_name type:string require:1 desc:分组名字
|
||
*/
|
||
public function addBoardGroup(){
|
||
$data = $this->request->post();
|
||
$insert['journal_id'] = $data['journal_id'];
|
||
$insert['group_name'] = $data['group_name'];
|
||
$this->board_group_obj->insert($insert);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 删除编委成员分组
|
||
* @description 删除编委成员分组
|
||
* @author wangjinlei
|
||
* @url /master/Journal/delBoardGroup
|
||
* @method POST
|
||
*
|
||
* @param name:board_group_id type:int require:1 desc:编委分组id
|
||
*/
|
||
public function delBoardGroup(){
|
||
$data = $this->request->post();
|
||
$this->board_group_obj->where('board_group_id',$data['board_group_id'])->update(['state'=>1]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 编辑编委成员分组信息
|
||
* @description 编辑编委成员分组信息
|
||
* @author wangjinlei
|
||
* @url /master/Journal/editBoardGroup
|
||
* @method POST
|
||
*
|
||
* @param name:board_group_id type:int require:1 desc:编委分组id
|
||
* @param name:group_name type:string require:1 desc:分组名字
|
||
*/
|
||
public function editBoardGroup(){
|
||
$data = $this->request->post();
|
||
$this->board_group_obj->where('board_group_id',$data['board_group_id'])->update(['group_name'=>$data['group_name']]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 添加编委
|
||
* @description 添加编委
|
||
* @author wangjinlei
|
||
* @url /master/Journal/addBoard
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:type type:int require:1 desc:编委类型0主编1副主编2编委成员
|
||
* @param name:name type:string require:1 desc:编委姓名
|
||
* @param name:website type:string require:1 desc:个人主页地址
|
||
* @param name:dr type:string require:1 desc:学位
|
||
* @param name:title type:string require:1 desc:职称
|
||
* @param name:field type:string require:1 desc:领域描述
|
||
* @param name:board_icon type:string require:1 desc:编委头像地址
|
||
* @param name:address type:string require:1 desc:单位
|
||
* @param name:country type:string require:1 desc:国家
|
||
* @param name:board_group_id type:int require:1 desc:编委分组id
|
||
*/
|
||
public function addBoard(){
|
||
$data = $this->request->post();
|
||
$insert['journal_id'] = $data['journal_id'];
|
||
$insert['type'] = $data['type'];
|
||
$insert['name'] = trim($data['name']);
|
||
$insert['website'] = trim($data['website']);
|
||
$insert['dr'] = $data['dr'];
|
||
$insert['field'] = trim($data['field']);
|
||
$insert['title'] = $data['title'];
|
||
$insert['address'] = trim($data['address']);
|
||
$insert['country'] = trim($data['country']);
|
||
$insert['board_icon'] = trim($data['board_icon']);
|
||
$insert['board_group_id'] = $data['board_group_id'];
|
||
$this->board_obj->insert($insert);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 删除编委
|
||
* @description 删除编委
|
||
* @author wangjinlei
|
||
* @url /master/Journal/delBoard
|
||
* @method POST
|
||
*
|
||
* @param name:board_id type:int require:1 desc:编委id
|
||
*/
|
||
public function delBoard(){
|
||
$data = $this->request->post();
|
||
$this->board_obj->where('board_id',$data['board_id'])->update(['state'=>1]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 编辑编委信息
|
||
* @description 编辑编委信息
|
||
* @author wangjinlei
|
||
* @url /master/Journal/editBoard
|
||
* @method POST
|
||
*
|
||
* @param name:board_id type:int require:1 desc:编委id
|
||
* @param name:type type:int require:1 desc:编委类型0主编1副主编2编委成员
|
||
* @param name:name type:string require:1 desc:编委姓名
|
||
* @param name:website type:string require:1 desc:个人主页地址
|
||
* @param name:dr type:string require:1 desc:学位
|
||
* @param name:title type:string require:1 desc:职称
|
||
* @param name:field type:string require:1 desc:领域描述
|
||
* @param name:address type:string require:1 desc:单位
|
||
* @param name:board_icon type:string require:1 desc:编委头像
|
||
* @param name:country type:string require:1 desc:国家
|
||
* @param name:board_group_id type:int require:1 desc:编委分组id
|
||
*/
|
||
public function editBoard(){
|
||
$data = $this->request->post();
|
||
$insert['type'] = $data['type'];
|
||
$insert['name'] = trim($data['name']);
|
||
$insert['website'] = trim($data['website']);
|
||
$insert['dr'] = $data['dr'];
|
||
$insert['title'] = trim($data['title']);
|
||
$insert['field'] = trim($data['field']);
|
||
$insert['address'] = trim($data['address']);
|
||
$insert['board_icon'] = trim($data['board_icon']);
|
||
$insert['country'] = $data['country'];
|
||
$insert['board_group_id'] = $data['board_group_id'];
|
||
|
||
$this->board_obj->where('board_id',$data['board_id'])->update($insert);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 增加话题
|
||
* @description 增加话题
|
||
* @author wangjinlei
|
||
* @url /master/Journal/addTopic
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:parent_id type:int require:1 default:0 desc:父id
|
||
* @param name:title type:string require:1 desc:标题
|
||
* @param name:icon type:string require:1 desc:缩略图
|
||
* @param name:intro type:string require:1 desc:介绍
|
||
* @param name:come type:string require:1 desc:图片证书
|
||
* @param name:position type:string require:1 desc:摆放位置
|
||
* @param name:is_final type:int require:1 desc:是否终结点(0no1yes)
|
||
* @param name:sort type:int require:1 default:0 desc:权重
|
||
*/
|
||
public function addTopic(){
|
||
$data = $this->request->post();
|
||
$level = 0;
|
||
if($data['parent_id']==0){
|
||
$level = 1;
|
||
}else{
|
||
$parent_info = $this->journal_topic_obj->where('journal_topic_id',$data['parent_id'])->find();
|
||
$level = intval($parent_info['level'])+1;
|
||
}
|
||
$insert['journal_id'] = $data['journal_id'];
|
||
$insert['parent_id'] = $data['parent_id'];
|
||
$insert['title'] = $data['title'];
|
||
$insert['icon'] = $data['icon'];
|
||
$insert['intro'] = $data['intro'];
|
||
$insert['come'] = isset($data['come'])?$data['come']:'';
|
||
if($data['parent_id']==0){
|
||
$insert['position'] = $data['position'];
|
||
}
|
||
$insert['is_final'] = $data['is_final'];
|
||
$insert['sort'] = $data['sort'];
|
||
$insert['level'] = $level;
|
||
$res = $this->journal_topic_obj->insert($insert);
|
||
if($res){
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}else{
|
||
return json(['code'=>1,'msg'=>'system error']);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @title 更改话题信息
|
||
* @description 更改话题信息
|
||
* @author wangjinlei
|
||
* @url /master/Journal/editTopic
|
||
* @method POST
|
||
*
|
||
* @param name:journal_topic_id type:int require:1 desc:主键
|
||
* @param name:title type:string require:1 desc:标题
|
||
* @param name:icon type:string require:1 desc:缩略图
|
||
* @param name:intro type:string require:1 desc:介绍
|
||
* @param name:come type:string require:1 desc:图片证书
|
||
* @param name:position type:string require:1 desc:摆放位置
|
||
* @param name:is_final type:int require:1 desc:是否终结点(0no1yes)
|
||
* @param name:sort type:int require:1 default:0 desc:权重
|
||
*/
|
||
public function editTopic(){
|
||
$data = $this->request->post();
|
||
$update['journal_topic_id'] = $data['journal_topic_id'];
|
||
$update['title'] = $data['title'];
|
||
$update['icon'] = $data['icon'];
|
||
$update['intro'] = $data['intro'];
|
||
$update['come'] = $data['come'];
|
||
$update['position'] = isset($data['position'])?$data['position']:'';
|
||
$update['is_final'] = $data['is_final'];
|
||
$update['sort'] = $data['sort'];
|
||
$res = $this->journal_topic_obj->update($update);
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}
|
||
|
||
/**
|
||
* @title 删除话题
|
||
* @description 删除话题
|
||
* @author wangjinlei
|
||
* @url /master/Journal/delTopic
|
||
* @method POST
|
||
*
|
||
* @param name:journal_topic_id type:int require:1 desc:主键
|
||
*/
|
||
public function delTopic(){
|
||
$data = $this->request->post();
|
||
//排除有子节点的项
|
||
$rep = $this->journal_topic_obj->where('parent_id',$data['journal_topic_id'])->where('state',0)->find();
|
||
if($rep){
|
||
return json(['code'=>1,'msg'=>'删除的话题不能有子节点!']);
|
||
}
|
||
$res = $this->journal_topic_obj->where('journal_topic_id',$data['journal_topic_id'])->update(['state'=>1]);
|
||
//删除此话题下的话题文章对应关系
|
||
$this->article_to_topic_obj->where('topic_id',$data['journal_topic_id'])->update(['state'=>1]);
|
||
if($res){
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}else{
|
||
return json(['code'=>1,'msg'=>'system error']);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @title 获取话题父级列表
|
||
* @description 获取话题父级列表
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getParent
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:
|
||
*
|
||
* @return parentList:array#
|
||
*/
|
||
public function getParent(){
|
||
$data = $this->request->post();
|
||
// $data['journal_id'] = 9;
|
||
$res = $this->journal_topic_obj
|
||
->where('journal_id',$data['journal_id'])
|
||
->where('state',0)
|
||
->where('is_final',0)
|
||
->order('sort desc')
|
||
->select();
|
||
//处理数组
|
||
$frag = [];
|
||
foreach ($res as $v){
|
||
if($v['parent_id'] == 0){
|
||
$frag[] = $v;
|
||
}
|
||
}
|
||
$ff = [];
|
||
foreach ($frag as $kk => $vv){
|
||
$ff[] = $this->getpChieldarr($vv, $res);
|
||
// $frag[$kk] = $this->getChieldarr($vv,$res);
|
||
}
|
||
$fff = [];
|
||
foreach ($ff as $vvv){
|
||
foreach ($vvv as $vvvv){
|
||
$fff[] = $vvvv;
|
||
}
|
||
}
|
||
return json(['code'=>0,'msg'=>'success','data'=>['parentList'=>$fff]]);
|
||
}
|
||
private function getpChieldarr($vv,$res){
|
||
if($vv['is_final']==1){
|
||
return $vv;
|
||
}
|
||
$frag = [];
|
||
$frag[] = $vv;
|
||
foreach ($res as $v){
|
||
if($v['parent_id'] == $vv['journal_topic_id']){
|
||
$frag[] = $this->getChieldarr($v, $res);
|
||
}
|
||
}
|
||
return $frag;
|
||
}
|
||
|
||
/**
|
||
* @title 获取话题列表
|
||
* @description 获取话题列表
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getTopicList
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*
|
||
* @return journal:array#
|
||
* @return topicList:话题数组@
|
||
* @topicList array:数据
|
||
*/
|
||
public function getTopicList(){
|
||
$data = $this->request->post();
|
||
$res = $this->journal_topic_obj
|
||
->where('journal_id',$data['journal_id'])
|
||
->where('state',0)
|
||
->select();
|
||
$journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find();
|
||
//处理数组
|
||
$frag = [];
|
||
foreach ($res as $v){
|
||
if($v['parent_id'] == 0){
|
||
$frag[] = $v;
|
||
}
|
||
}
|
||
foreach ($frag as $kk => $vv){
|
||
$frag[$kk] = $this->getChieldarr($vv,$res);
|
||
}
|
||
return json(['code'=>0,'msg'=>'success','data'=>['journal'=>$journal_info,'topicList'=>$frag]]);
|
||
}
|
||
private function getChieldarr($vv,$res){
|
||
if($vv['is_final']==1){
|
||
return $vv;
|
||
}
|
||
foreach ($res as $v){
|
||
if($v['parent_id'] == $vv['journal_topic_id']){
|
||
$vv['children'][] = $this->getChieldarr($v, $res);
|
||
}
|
||
}
|
||
return $vv;
|
||
}
|
||
|
||
/**
|
||
* @title 添加话题的文章
|
||
* @description 添加话题的文章
|
||
* @author wangjinlei
|
||
* @url /master/Journal/addTopicArticle
|
||
* @method POST
|
||
*
|
||
* @param name:article_id type:int require:1 desc:文章id
|
||
* @param name:topic_id type:int require:1 desc:话题id
|
||
*/
|
||
public function addTopicArticle(){
|
||
$data = $this->request->post();
|
||
$insert['article_id'] = $data['article_id'];
|
||
$insert['topic_id'] = $data['topic_id'];
|
||
$res = $this->article_to_topic_obj->insert($insert);
|
||
$this->msg_subscript_topic($data['topic_id'], $data['article_id']);
|
||
$this->msg_subscribe_base_topic($data['topic_id'], $data['article_id']);
|
||
if($res){
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}else{
|
||
return json(['code'=>1,'msg'=>'system error']);
|
||
}
|
||
}
|
||
|
||
|
||
public function mmm(){
|
||
$this->msg_subscribe_base_topic(14, 5);
|
||
}
|
||
|
||
|
||
private function msg_subscribe_base_topic($topic_id,$article_id){
|
||
$article_info = $this->article_obj->where('article_id',$article_id)->find();
|
||
$topic_info = $this->journal_topic_obj->where('journal_topic_id',$topic_id)->find();
|
||
$base_topic_info = $this->base_topic_obj->where('title',$topic_info['title'])->find();
|
||
$journal_info = $this->journal_obj->where('journal_id',$article_info['journal_id'])->find();
|
||
if($base_topic_info==null){
|
||
return ;
|
||
}
|
||
$list = $this->subscribe_base_topic_obj->where('base_topic_id',$base_topic_info['base_topic_id'])->where('state',0)->select();
|
||
|
||
$title = 'These new articles included in TMRDE database are available online.';
|
||
$tt = 'Dear Researcher,<br>';
|
||
$tt .= 'It is our great honor to present you the articles included in TMRDE.The following new articles have just been included.<br>';
|
||
$tt .= '<a href="https://www.tmrjournals.com/article.html?J_num='.$article_info['journal_id'].'&a_id='.$article_id.'">'.$article_info['title'].'</a><br>';
|
||
foreach ($list as $v){
|
||
$tt1='';
|
||
$tt1 .= $tt;
|
||
$tt1 .= '<a href="http://journalapi.tmrjournals.com/public/index.php/api/Journal/UnsubscribeBaseTopic/snum/' . $v['subscribe_base_topic_id'] . '">Unsubscribe</a><br><br>';
|
||
$tt1 .= 'Email:'.$journal_info['email'].'<br>';
|
||
$tt1 .= 'Website:'.$journal_info['website'].'<br><br>';
|
||
$tt1 .= 'TMR Publishing Group Ltd.<br>';
|
||
$tt1 .= '11 Cockle Bay Rd, Cockle Bay, Auckland, New Zealand<br>';
|
||
$tt1 .= 'Tel: +64 02108293806.';
|
||
$maidata['email'] = $v['email'];
|
||
$maidata['title'] = $title;
|
||
$maidata['content'] = $tt1;
|
||
$maidata['tmail'] = 'publicrelations@tmrjournals.com';
|
||
$maidata['tpassword'] = 'pRWU999999';
|
||
Queue::push('app\api\job\mail@fire', $maidata, "mail");
|
||
}
|
||
|
||
}
|
||
|
||
private function msg_subscript_topic($topic_id,$article_id){
|
||
$article_info = $this->article_obj->where('article_id',$article_id)->find();
|
||
$stage_info = $this->journal_stage_obj->where('journal_stage_id', $article_info['journal_stage_id'])->find();
|
||
$topic_info = $this->journal_topic_obj->where('journal_topic_id',$topic_id)->find();
|
||
$journal_info = $this->journal_obj->where('journal_id',$article_info['journal_id'])->find();
|
||
$list = [];
|
||
if($topic_info['level']==2){
|
||
$list = $this->subscribe_topic_obj->where('topic_id',$topic_id)->where('state',0)->select();
|
||
}else{
|
||
$list = $this->subscribe_topic_obj->where('topic_id',$topic_info['parent_id'])->where('state',0)->select();
|
||
}
|
||
// $list = $this->subscribe_topic_obj->where('topic_id',$topic_info['parent_id'])->where('state',0)->select();
|
||
//组成文章信息
|
||
$tt1 = '<div style="background-color: #ededed;margin: 0;">
|
||
<div class="con_content" style="font-family: Arial;
|
||
width: 600px;
|
||
margin: 0 auto;
|
||
background-color: #fff;
|
||
padding: 30px 40px;
|
||
color: #1B3051;
|
||
font-size: 14px;
|
||
line-height: 20px;">
|
||
<div>
|
||
<img style="width: 80px;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATUAAABWCAYAAACuCAFEAAAKQ2lDQ1BJQ0MgcHJvZmlsZQAAeNqdU3dYk/cWPt/3ZQ9WQtjwsZdsgQAiI6wIyBBZohCSAGGEEBJAxYWIClYUFRGcSFXEgtUKSJ2I4qAouGdBiohai1VcOO4f3Ke1fXrv7e371/u855zn/M55zw+AERImkeaiagA5UoU8Otgfj09IxMm9gAIVSOAEIBDmy8JnBcUAAPADeXh+dLA//AGvbwACAHDVLiQSx+H/g7pQJlcAIJEA4CIS5wsBkFIAyC5UyBQAyBgAsFOzZAoAlAAAbHl8QiIAqg0A7PRJPgUA2KmT3BcA2KIcqQgAjQEAmShHJAJAuwBgVYFSLALAwgCgrEAiLgTArgGAWbYyRwKAvQUAdo5YkA9AYACAmUIszAAgOAIAQx4TzQMgTAOgMNK/4KlfcIW4SAEAwMuVzZdL0jMUuJXQGnfy8ODiIeLCbLFCYRcpEGYJ5CKcl5sjE0jnA0zODAAAGvnRwf44P5Dn5uTh5mbnbO/0xaL+a/BvIj4h8d/+vIwCBAAQTs/v2l/l5dYDcMcBsHW/a6lbANpWAGjf+V0z2wmgWgrQevmLeTj8QB6eoVDIPB0cCgsL7SViob0w44s+/zPhb+CLfvb8QB7+23rwAHGaQJmtwKOD/XFhbnauUo7nywRCMW735yP+x4V//Y4p0eI0sVwsFYrxWIm4UCJNx3m5UpFEIcmV4hLpfzLxH5b9CZN3DQCshk/ATrYHtctswH7uAQKLDljSdgBAfvMtjBoLkQAQZzQyefcAAJO/+Y9AKwEAzZek4wAAvOgYXKiUF0zGCAAARKCBKrBBBwzBFKzADpzBHbzAFwJhBkRADCTAPBBCBuSAHAqhGJZBGVTAOtgEtbADGqARmuEQtMExOA3n4BJcgetwFwZgGJ7CGLyGCQRByAgTYSE6iBFijtgizggXmY4EImFINJKApCDpiBRRIsXIcqQCqUJqkV1II/ItchQ5jVxA+pDbyCAyivyKvEcxlIGyUQPUAnVAuagfGorGoHPRdDQPXYCWomvRGrQePYC2oqfRS+h1dAB9io5jgNExDmaM2WFcjIdFYIlYGibHFmPlWDVWjzVjHVg3dhUbwJ5h7wgkAouAE+wIXoQQwmyCkJBHWExYQ6gl7CO0EroIVwmDhDHCJyKTqE+0JXoS+cR4YjqxkFhGrCbuIR4hniVeJw4TX5NIJA7JkuROCiElkDJJC0lrSNtILaRTpD7SEGmcTCbrkG3J3uQIsoCsIJeRt5APkE+S+8nD5LcUOsWI4kwJoiRSpJQSSjVlP+UEpZ8yQpmgqlHNqZ7UCKqIOp9aSW2gdlAvU4epEzR1miXNmxZDy6Qto9XQmmlnafdoL+l0ugndgx5Fl9CX0mvoB+nn6YP0dwwNhg2Dx0hiKBlrGXsZpxi3GS+ZTKYF05eZyFQw1zIbmWeYD5hvVVgq9ip8FZHKEpU6lVaVfpXnqlRVc1U/1XmqC1SrVQ+rXlZ9pkZVs1DjqQnUFqvVqR1Vu6k2rs5Sd1KPUM9RX6O+X/2C+mMNsoaFRqCGSKNUY7fGGY0hFsYyZfFYQtZyVgPrLGuYTWJbsvnsTHYF+xt2L3tMU0NzqmasZpFmneZxzQEOxrHg8DnZnErOIc4NznstAy0/LbHWaq1mrX6tN9p62r7aYu1y7Rbt69rvdXCdQJ0snfU6bTr3dQm6NrpRuoW623XP6j7TY+t56Qn1yvUO6d3RR/Vt9KP1F+rv1u/RHzcwNAg2kBlsMThj8MyQY+hrmGm40fCE4agRy2i6kcRoo9FJoye4Ju6HZ+M1eBc+ZqxvHGKsNN5l3Gs8YWJpMtukxKTF5L4pzZRrmma60bTTdMzMyCzcrNisyeyOOdWca55hvtm82/yNhaVFnMVKizaLx5balnzLBZZNlvesmFY+VnlW9VbXrEnWXOss623WV2xQG1ebDJs6m8u2qK2brcR2m23fFOIUjynSKfVTbtox7PzsCuya7AbtOfZh9iX2bfbPHcwcEh3WO3Q7fHJ0dcx2bHC866ThNMOpxKnD6VdnG2ehc53zNRemS5DLEpd2lxdTbaeKp26fesuV5RruutK10/Wjm7ub3K3ZbdTdzD3Ffav7TS6bG8ldwz3vQfTw91jicczjnaebp8LzkOcvXnZeWV77vR5Ps5wmntYwbcjbxFvgvct7YDo+PWX6zukDPsY+Ap96n4e+pr4i3z2+I37Wfpl+B/ye+zv6y/2P+L/hefIW8U4FYAHBAeUBvYEagbMDawMfBJkEpQc1BY0FuwYvDD4VQgwJDVkfcpNvwBfyG/ljM9xnLJrRFcoInRVaG/owzCZMHtYRjobPCN8Qfm+m+UzpzLYIiOBHbIi4H2kZmRf5fRQpKjKqLupRtFN0cXT3LNas5Fn7Z72O8Y+pjLk722q2cnZnrGpsUmxj7Ju4gLiquIF4h/hF8ZcSdBMkCe2J5MTYxD2J43MC52yaM5zkmlSWdGOu5dyiuRfm6c7Lnnc8WTVZkHw4hZgSl7I/5YMgQlAvGE/lp25NHRPyhJuFT0W+oo2iUbG3uEo8kuadVpX2ON07fUP6aIZPRnXGMwlPUit5kRmSuSPzTVZE1t6sz9lx2S05lJyUnKNSDWmWtCvXMLcot09mKyuTDeR55m3KG5OHyvfkI/lz89sVbIVM0aO0Uq5QDhZML6greFsYW3i4SL1IWtQz32b+6vkjC4IWfL2QsFC4sLPYuHhZ8eAiv0W7FiOLUxd3LjFdUrpkeGnw0n3LaMuylv1Q4lhSVfJqedzyjlKD0qWlQyuCVzSVqZTJy26u9Fq5YxVhlWRV72qX1VtWfyoXlV+scKyorviwRrjm4ldOX9V89Xlt2treSrfK7etI66Trbqz3Wb+vSr1qQdXQhvANrRvxjeUbX21K3nShemr1js20zcrNAzVhNe1bzLas2/KhNqP2ep1/XctW/a2rt77ZJtrWv913e/MOgx0VO97vlOy8tSt4V2u9RX31btLugt2PGmIbur/mft24R3dPxZ6Pe6V7B/ZF7+tqdG9s3K+/v7IJbVI2jR5IOnDlm4Bv2pvtmne1cFoqDsJB5cEn36Z8e+NQ6KHOw9zDzd+Zf7f1COtIeSvSOr91rC2jbaA9ob3v6IyjnR1eHUe+t/9+7zHjY3XHNY9XnqCdKD3x+eSCk+OnZKeenU4/PdSZ3Hn3TPyZa11RXb1nQ8+ePxd07ky3X/fJ897nj13wvHD0Ivdi2yW3S609rj1HfnD94UivW2/rZffL7Vc8rnT0Tes70e/Tf/pqwNVz1/jXLl2feb3vxuwbt24m3Ry4Jbr1+Hb27Rd3Cu5M3F16j3iv/L7a/eoH+g/qf7T+sWXAbeD4YMBgz8NZD+8OCYee/pT/04fh0kfMR9UjRiONj50fHxsNGr3yZM6T4aeypxPPyn5W/3nrc6vn3/3i+0vPWPzY8Av5i8+/rnmp83Lvq6mvOscjxx+8znk98ab8rc7bfe+477rfx70fmSj8QP5Q89H6Y8en0E/3Pud8/vwv94Tz+4A5JREAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADI2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDNBODgyQzU3MUM4MTFFQkE4MjRBNTM0MTVGNUZGNzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDNBODgyQzY3MUM4MTFFQkE4MjRBNTM0MTVGNUZGNzMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowM0E4ODJDMzcxQzgxMUVCQTgyNEE1MzQxNUY1RkY3MyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowM0E4ODJDNDcxQzgxMUVCQTgyNEE1MzQxNUY1RkY3MyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpvMdRIAAEVaSURBVHja7F0HgFxF+f9mXtt2JVfSAwmkUDVIMwYFAghKr6IgIF1QUAQLqKAiAupfgvReLFQBQXonFCGUACmQ3sv13dv2ysz/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" alt="">
|
||
</div><br><br>';
|
||
$tt1 .= $journal_info['title'].'<br><br>';
|
||
$tt1 .= 'The following new articles have just been published in Topic "'.$topic_info['title'].'" of '.$journal_info['title'].'<br><br>';
|
||
$tt1 .= $article_info['type'].'<br>';
|
||
$tt1 .= '<a href="https://www.tmrjournals.com/article.html?J_num='.$journal_info['journal_id'].'&a_id='.$article_info['article_id'].'">'.$article_info['title'].'</a><br>';
|
||
$tt1 .= $this->getAuthor($article_info).'<br>';
|
||
$tt1 .= $journal_info['title'].' '.$stage_info['stage_year'].' '.$stage_info['stage_vol']."(".$stage_info['stage_no']."). https://doi.org/".$article_info['doi'].'<br>';
|
||
$tt1 .= '<a href="https://www.tmrjournals.com/public/articlePDF/'.$article_info['file_pdf'].'">Download pdf</a><br><br><br>';
|
||
|
||
$tt2 = 'Email: '.$journal_info['email'].'<br>';
|
||
$tt2 .= 'Website: https://www.tmrjournals.com/'.$journal_info['usx'].'<br>';
|
||
$tt2 .= 'TMR Publishing Group Ltd.<br>';
|
||
$tt2 .= '11 Cockle Bay Rd, Cockle Bay, Auckland, New Zealand<br>';
|
||
$tt2 .= 'Tel: +64 02108293806.';
|
||
$tt2 .= '</div>
|
||
</div>';
|
||
|
||
foreach ($list as $v){
|
||
$cache = $tt1.'<a href="http://journalapi.tmrjournals.com/public/index.php/api/Journal/UnsubscribeTopic/snum/'.$v['subscribe_topic_id'].'">Unsubscribe</a><br><br>'.$tt2;
|
||
$maidata['email'] = $v['email'];
|
||
$maidata['title'] = $journal_info['title'];
|
||
$maidata['content'] = $cache;
|
||
$maidata['tmail'] = 'publicrelations@tmrjournals.com';
|
||
$maidata['tpassword'] = 'pRWU999999';
|
||
Queue::push('app\api\job\mail@fire', $maidata, "mail");
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @title 获取当前话题的文章
|
||
* @description 获取当前话题的文章
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getTopicArticles
|
||
* @method POST
|
||
*
|
||
* @param name:topic_id type:int require:1 desc:话题id
|
||
*
|
||
* @return dataList:array#
|
||
* @return topic:array#
|
||
*/
|
||
public function getTopicArticles(){
|
||
$data = $this->request->post();
|
||
$list = $this->article_to_topic_obj
|
||
->field('j_article_to_topic.*,j_article.*')
|
||
->join('j_article','j_article.article_id = j_article_to_topic.article_id','LEFT')
|
||
->where('j_article_to_topic.topic_id',$data['topic_id'])
|
||
->where('j_article_to_topic.state',0)
|
||
->select();
|
||
$info = $this->journal_topic_obj->where('journal_topic_id',$data['topic_id'])->find();
|
||
return json(['code'=>0,'msg'=>'success','data'=>['topic'=>$info,'dataList'=>$list]]);
|
||
}
|
||
|
||
/**
|
||
* @title 获取当前期刊的文章
|
||
* @description 获取当前期刊的文章
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getArticleByJournal
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:topic_id type:int require:1 desc:话题id
|
||
* @param name:title type:string require:1 desc:标题
|
||
* @param name:pageIndex type:int require:1 desc:当前页码数
|
||
* @param name:pageSize type:int require:1 desc:单页数据条数
|
||
*
|
||
* @return dataList:array#
|
||
*/
|
||
public function getArticleByJournal(){
|
||
$data = $this->request->post();
|
||
//排除stage
|
||
$ids = $this->article_to_topic_obj->where('topic_id',$data['topic_id'])->where('state',0)->column('article_id');
|
||
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
|
||
$list = $this->article_obj->where('journal_id',$data['journal_id'])->where('state',0)->where('article_id','not in',$ids)->where('title','like','%'.$data['title'].'%')->limit($limit_start,$data['pageSize'])->select();
|
||
$count = $this->article_obj->where('journal_id',$data['journal_id'])->where('state',0)->where('article_id','not in',$ids)->where('title','like','%'.$data['title'].'%')->count();
|
||
return json(['code'=>0,'msg'=>'success','data'=>['count'=>$count,'dataList'=>$list]]);
|
||
}
|
||
|
||
/**
|
||
* @title 删除文章话题关系
|
||
* @description 删除文章话题关系
|
||
* @author wangjinlei
|
||
* @url /master/Journal/delArticleToTopic
|
||
* @method POST
|
||
*
|
||
* @param name:article_to_topic_id type:int require:1 desc:id
|
||
*
|
||
*/
|
||
public function delArticleToTopic(){
|
||
$data = $this->request->post();
|
||
$res = $this->article_to_topic_obj->where('article_to_topic_id',$data['article_to_topic_id'])->update(['state'=>1]);
|
||
if($res){
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}else{
|
||
return json(['code'=>1,'msg'=>'system error']);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @title 添加期刊外链
|
||
* @description 添加期刊外链
|
||
* @author wangjinlei
|
||
* @url /master/Journal/addJournalAbs
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:title type:int require:1 desc:标题
|
||
* @param name:url type:string require:1 desc:地址
|
||
* @param name:sort type:int require:1 default:0 desc:权重
|
||
* @param name:is_show type:int require:1 default:1 desc:是否显示(1yes0no)
|
||
*/
|
||
public function addJournalAbs(){
|
||
$data = $this->request->post();
|
||
$add_data['journal_id'] = $data['journal_id'];
|
||
$add_data['title'] = $data['title'];
|
||
$add_data['url'] = $data['url'];
|
||
$add_data['sort'] = $data['sort'];
|
||
$add_data['is_show'] = $data['is_show'];
|
||
$res = $this->journal_abs_obj->insert($add_data);
|
||
if($res){
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}else{
|
||
return json(['code'=>1,'msg'=>'system error!']);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @title 删除期刊外链
|
||
* @description 删除期刊外链
|
||
* @author wangjinlei
|
||
* @url /master/Journal/delJournalAbs
|
||
* @method POST
|
||
*
|
||
* @param name:journal_abstracting_id type:int require:1 desc:期刊外链id
|
||
*/
|
||
public function delJournalAbs(){
|
||
$data = $this->request->post();
|
||
$this->journal_abs_obj->where('journal_abstracting_id',$data['journal_abstracting_id'])->update(['state'=>1]);
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}
|
||
|
||
/**
|
||
* @title 编辑期刊外链
|
||
* @description 编辑期刊外链
|
||
* @author wangjinlei
|
||
* @url /master/Journal/editJournalAbs
|
||
* @method POST
|
||
*
|
||
* @param name:journal_abstracting_id type:int require:1 desc:期刊外链id
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:title type:int require:1 desc:标题
|
||
* @param name:url type:string require:1 desc:地址
|
||
* @param name:sort type:int require:1 default:0 desc:权重
|
||
* @param name:is_show type:int require:1 default:1 desc:是否显示(1yes0no)
|
||
*/
|
||
public function editJournalAbs(){
|
||
$data = $this->request->post();
|
||
$this->journal_abs_obj->update($data);
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}
|
||
|
||
/**
|
||
* @title 获取期刊外链
|
||
* @description 获取期刊外链
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getJournalAbs
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*/
|
||
public function getJournalAbs(){
|
||
$data = $this->request->post();
|
||
$journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find();
|
||
$list = $this->journal_abs_obj->where('journal_id',$data['journal_id'])->where('state',0)->order('sort desc')->select();
|
||
return json(['code'=>0,'msg'=>'success','data'=>['journal'=>$journal_info,'absList'=>$list]]);
|
||
}
|
||
|
||
/**
|
||
* @title topic图片上传
|
||
* @description topic图片上传
|
||
* @author wangjinlei
|
||
* @url /master/Journal/up_topic_file
|
||
* @method POST
|
||
*
|
||
* @param name:name type:string require:1 default:journaltopic desc:文件域名称
|
||
*
|
||
* @return upurl:图片地址
|
||
*/
|
||
public function up_topic_file() {
|
||
$file = request()->file('journaltopic');
|
||
if ($file) {
|
||
$info = $file->move(ROOT_PATH . 'public' . DS . 'journaltopic');
|
||
if ($info) {
|
||
return json(['code'=>0 , 'msg'=>'success', 'upurl' => str_replace("\\", "/", $info->getSaveName())]);
|
||
} else {
|
||
return json(['code' => 1, 'msg' => $file->getError()]);
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* @title 编委头像上传
|
||
* @description 编委头像上传
|
||
* @author wangjinlei
|
||
* @url /master/Journal/up_board_file
|
||
* @method POST
|
||
*
|
||
* @param name:name type:string require:1 default:boardIcon desc:文件域名称
|
||
*
|
||
* @return upurl:图片地址
|
||
*/
|
||
public function up_board_file() {
|
||
$file = request()->file('boardIcon');
|
||
if ($file) {
|
||
$info = $file->move(ROOT_PATH . 'public' . DS . 'boardIcon');
|
||
if ($info) {
|
||
return json(['code'=>0 , 'msg'=>'success', 'upurl' => str_replace("\\", "/", $info->getSaveName())]);
|
||
} else {
|
||
return json(['code' => 1, 'msg' => $file->getError()]);
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取期刊forAuthor
|
||
*/
|
||
public function getForAuthorList(){
|
||
$data = $this->request->post();
|
||
// 验证规则
|
||
$rule = new Validate([
|
||
'journal_id' => 'require'
|
||
]);
|
||
if (!$rule->check($data)) {
|
||
return jsonError($rule->getError());
|
||
}
|
||
$journals[]=0;
|
||
if($data['journal_id']!=0){
|
||
$journals[]=$data['journal_id'];
|
||
}
|
||
$list = $this->journal_for_author->where('journal_id','in',$journals)->where('pid',0)->where('jfa_state',0)->order("sort desc")->select();
|
||
foreach($list as $k => $v){
|
||
$cache_list = $this->journal_for_author->where('journal_id','in',$journals)->where('pid',$v['jfa_id'])->where('jfa_state',0)->order("sort desc")->select();
|
||
foreach($cache_list as $key => $val){
|
||
$cache_list[$key]['p_title'] = $v['jfa_title'];
|
||
}
|
||
$list[$k]['children'] = $cache_list;
|
||
}
|
||
$re['forAuthors'] = $list;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* 添加forauthor
|
||
*/
|
||
public function addForAuthor(){
|
||
$data = $this->request->post();
|
||
// 验证规则
|
||
$rule = new Validate([
|
||
'journal_id' => 'require',
|
||
'pid'=>'require',
|
||
'jfa_title'=>'require'
|
||
]);
|
||
if (!$rule->check($data)) {
|
||
return jsonError($rule->getError());
|
||
}
|
||
$insert['journal_id'] = $data['journal_id'];
|
||
$insert['pid'] = $data['pid'];
|
||
$insert['jfa_title'] = $data['jfa_title'];
|
||
$insert['content'] = $data['content'];
|
||
$insert['sort'] = isset($data['sort'])?$data['sort']:0;
|
||
$insert['jfa_ctime'] = time();
|
||
$this->journal_for_author->insert($insert);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* 编辑forauthor
|
||
*/
|
||
public function editForAuthor(){
|
||
$data = $this->request->post();
|
||
// 验证规则
|
||
$rule = new Validate([
|
||
'jfa_id' => 'require',
|
||
'jfa_title'=>'require',
|
||
'sort'=>'require'
|
||
]);
|
||
if (!$rule->check($data)) {
|
||
return jsonError($rule->getError());
|
||
}
|
||
$update['jfa_title'] = $data['jfa_title'];
|
||
$update['content'] = $data['content'];
|
||
$update['sort'] = $data['sort'];
|
||
$this->journal_for_author->where('jfa_id',$data['jfa_id'])->update($update);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* 删除forAuthor
|
||
*/
|
||
public function delForAuthor(){
|
||
$data = $this->request->post();
|
||
// 验证规则
|
||
$rule = new Validate([
|
||
'jfa_id' => 'require'
|
||
]);
|
||
if (!$rule->check($data)) {
|
||
return jsonError($rule->getError());
|
||
}
|
||
$this->journal_for_author->where('jfa_id',$data['jfa_id'])->update(['jfa_state'=>1]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title line图片上传
|
||
* @description line图片上传
|
||
* @author wangjinlei
|
||
* @url /master/Journal/up_line_file
|
||
* @method POST
|
||
*
|
||
* @param name:name type:string require:1 default:journalline desc:文件域名称
|
||
*
|
||
* @return upurl:图片地址
|
||
*/
|
||
public function up_line_file() {
|
||
$file = request()->file('journalline');
|
||
if ($file) {
|
||
$info = $file->move(ROOT_PATH . 'public' . DS . 'journalline');
|
||
if ($info) {
|
||
return json(['code'=>0 , 'msg'=>'success', 'upurl' => str_replace("\\", "/", $info->getSaveName())]);
|
||
} else {
|
||
return json(['code' => 1, 'msg' => $file->getError()]);
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @title footer图片上传
|
||
* @description footer图片上传
|
||
* @author wangjinlei
|
||
* @url /master/Journal/up_footer_file
|
||
* @method POST
|
||
*
|
||
* @param name:name type:string require:1 default:journalfooter desc:文件域名称
|
||
*
|
||
* @return upurl:图片地址
|
||
*/
|
||
public function up_footer_file() {
|
||
$file = request()->file('journalfooter');
|
||
if ($file) {
|
||
$info = $file->move(ROOT_PATH . 'public' . DS . 'journalfooter');
|
||
if ($info) {
|
||
return json(['code'=>0 , 'msg'=>'success', 'upurl' => str_replace("\\", "/", $info->getSaveName())]);
|
||
} else {
|
||
return json(['code' => 1, 'msg' => $file->getError()]);
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @title 添加期刊分期
|
||
* @description 添加期刊分期
|
||
* @author wangjinlei
|
||
* @url /master/Journal/addStage
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:stage_year type:string require:1 desc:分期年份
|
||
* @param name:stage_vol type:int require:1 desc:分期卷数
|
||
* @param name:stage_no type:int require:1 desc:分期号码
|
||
* @param name:stage_pagename type:string require:1 desc:page名称
|
||
* @param name:is_publish type:int require:1 default:1 desc:是否出刊
|
||
* @param name:stage_page type:string require:1 desc:分期页码
|
||
* @param name:issue_date type:string require:1 desc:发布时间
|
||
* @param name:stage_icon type:string require:0 desc:期刊封面url
|
||
*/
|
||
public function addStage(){
|
||
$data = $this->request->post();
|
||
$insert_data['journal_id'] = $data['journal_id'];
|
||
$insert_data['stage_year'] = $data['stage_year'];
|
||
$insert_data['stage_vol'] = $data['stage_vol'];
|
||
$insert_data['stage_no'] = $data['stage_no'];
|
||
$insert_data['stage_pagename'] = $data['stage_pagename'];
|
||
$insert_data['stage_page'] = $data['stage_page'];
|
||
$insert_data['issue_date'] = $data['issue_date'];
|
||
if(isset($data['stage_icon']) && !empty($data['stage_icon'])){
|
||
$insert_data['stage_icon'] = $data['stage_icon'];
|
||
}
|
||
$res = $this->journal_stage_obj->insert($insert_data);
|
||
if($res){
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}else{
|
||
return json(['code'=>1,'msg'=>'system error']);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @title 获取期刊分期
|
||
* @description 获取期刊分期
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getStageList
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*
|
||
* @return journal:array#
|
||
* @return stage_list:array#
|
||
*/
|
||
public function getStageList(){
|
||
$data = $this->request->post();
|
||
$journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find();
|
||
$stage_list = $this->journal_stage_obj->where('journal_id',$data['journal_id'])->where('state',0)->order('journal_stage_id desc')->select();
|
||
return json(['code'=>0,'msg'=>'success','data'=>['journal'=>$journal_info,'stage_list'=>$stage_list]]);
|
||
}
|
||
|
||
/**
|
||
* @title 删除期刊分期
|
||
* @description 删除期刊分期
|
||
* @author wangjinlei
|
||
* @url /master/Journal/delStage
|
||
* @method POST
|
||
*
|
||
* @param name:journal_stage_id type:int require:1 desc:期刊分期id
|
||
*/
|
||
public function delStage(){
|
||
$data = $this->request->post();
|
||
$res = $this->journal_stage_obj->where('journal_stage_id',$data['journal_stage_id'])->update(['state'=>1]);
|
||
if($res){
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}else{
|
||
return json(['code'=>1,'msg'=>'system error']);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @title 更改期刊分期
|
||
* @description 更改期刊分期
|
||
* @author wangjinlei
|
||
* @url /master/Journal/editStage
|
||
* @method POST
|
||
*
|
||
* @param name:journal_stage_id type:int require:1 desc:期刊分期id
|
||
* @param name:stage_year type:string require:1 desc:分期年份
|
||
* @param name:stage_vol type:int require:1 desc:分期卷数
|
||
* @param name:stage_no type:int require:1 desc:分期号码
|
||
* @param name:is_publish type:int require:1 default:1 desc:是否出刊
|
||
* @param name:stage_pagename type:string require:1 desc:分期页码name
|
||
* @param name:stage_page type:string require:1 desc:分期页码
|
||
* @param name:issue_date type:string require:1 desc:发布时间
|
||
* @param name:stage_icon type:string require:0 desc:封面url
|
||
*/
|
||
public function editStage(){
|
||
$data = $this->request->post();
|
||
$old = $this->journal_stage_obj->where('journal_stage_id',$data['journal_stage_id'])->find();
|
||
$res = $this->journal_stage_obj->update($data);
|
||
//是否提醒订阅者
|
||
if($old['is_publish']==0&&$data['is_publish']==1){
|
||
$this->msg_subscript_journal($data['journal_stage_id'],$old['journal_id']);
|
||
// 提醒作者 发送邮件
|
||
$this->sendAuthor($data['journal_stage_id'],$old['journal_id']);
|
||
}
|
||
if($res){
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}else{
|
||
return json(['code'=>1,'msg'=>'system error']);
|
||
}
|
||
}
|
||
|
||
public function myttt(){
|
||
// $this->msg_subscript_journal(320, 1);
|
||
}
|
||
|
||
|
||
private function msg_subscript_journal($journal_stage_id,$journal_id){
|
||
$articles = $this->article_obj->where('journal_stage_id',$journal_stage_id)->where('state',0)->select();
|
||
$stage_info = $this->journal_stage_obj->where('journal_stage_id', $journal_stage_id)->find();
|
||
$journal_info = $this->journal_obj->where('journal_id',$journal_id)->find();
|
||
$list = $this->subscribe_journal_obj->where('journal_id',$journal_id)->where('state',0)->select();
|
||
//组成文章信息
|
||
$tt1 = '<div style="background-color: #ededed;margin: 0;">
|
||
<div class="con_content" style="font-family: Arial;
|
||
width: 600px;
|
||
margin: 0 auto;
|
||
background-color: #fff;
|
||
padding: 30px 40px;
|
||
color: #1B3051;
|
||
font-size: 14px;
|
||
line-height: 20px;">
|
||
<div>
|
||
<img style="width: 80px;" src="data:image/png;base64,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UmVhZHlxyWU8AAADI2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDNBODgyQzU3MUM4MTFFQkE4MjRBNTM0MTVGNUZGNzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDNBODgyQzY3MUM4MTFFQkE4MjRBNTM0MTVGNUZGNzMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowM0E4ODJDMzcxQzgxMUVCQTgyNEE1MzQxNUY1RkY3MyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowM0E4ODJDNDcxQzgxMUVCQTgyNEE1MzQxNUY1RkY3MyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpvMdRIAAEVaSURBVHja7F0HgFxF+f9mXtt2JVfSAwmkUDVIMwYFAghKr6IgIF1QUAQLqKAiAupfgvReLFQBQXonFCGUACmQ3sv13dv2ysz/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" alt="">
|
||
</div><br><br>';
|
||
$tt1 .= $journal_info['title'].'<br><br>';
|
||
$tt1 .= 'Dear Researcher,<br>';
|
||
$tt1 .= 'It is our great honor to present you the articles published in '.$journal_info['title'].'.<br>';
|
||
$tt1 .= 'The following new articles have just been published.<br><br>';
|
||
foreach ($articles as $val){
|
||
$tt1 .= $val['type'].'<br>';
|
||
$tt1 .= '<a href="https://www.tmrjournals.com/article.html?J_num='.$journal_info['journal_id'].'&a_id='.$val['article_id'].'">'.$val['title'].'</a><br>';
|
||
$tt1 .= $this->getAuthor($val).'<br>';
|
||
$tt1 .= $journal_info['title'].' '.$stage_info['stage_year'].' '.$stage_info['stage_vol']."(".$stage_info['stage_no']."). DOI:".$val['doi'].'<br>';
|
||
$tt1 .= '<a href="https://www.tmrjournals.com/public/articlePDF/'.$val['file_pdf'].'">Download pdf</a><br><br><br>';
|
||
}
|
||
$tt2 = 'Email: '.$journal_info['email'].'<br>';
|
||
$tt2 .= 'Website: https://www.tmrjournals.com/'.$journal_info['usx'].'<br><br>';
|
||
$tt2 .= 'TMR Publishing Group Ltd.<br>';
|
||
$tt2 .= '11 Cockle Bay Rd, Cockle Bay, Auckland, New Zealand<br>';
|
||
$tt2 .= 'Tel: +64 02108293806.';
|
||
$tt2 .= '</div>
|
||
</div>';
|
||
foreach ($list as $v){
|
||
$cache = $tt1.'<a href="http://journalapi.tmrjournals.com/public/index.php/api/Journal/UnsubscribeJournal/snum/'.$v['subscribe_journal_id'].'">Unsubscribe</a><br><br>'.$tt2;
|
||
$maidata['email'] = $v['email'];
|
||
$maidata['title'] = $journal_info['title'];
|
||
$maidata['content'] = $cache;
|
||
$maidata['tmail'] = 'publicrelations@tmrjournals.com';
|
||
$maidata['tpassword'] = 'pRWU999999';
|
||
// sendEmail($maidata['email'],$maidata['title'],$maidata['title'],$maidata['content'],$maidata['tmail'],$maidata['tpassword']);
|
||
Queue::push('app\api\job\mail@fire', $maidata, "mail");
|
||
echo $v['email'];
|
||
}
|
||
}
|
||
private function getAuthor($article) {
|
||
$where['article_id'] = $article['article_id'];
|
||
$where['state'] = 0;
|
||
$list = $this->article_author_obj->where($where)->select();
|
||
$frag = '';
|
||
foreach ($list as $k => $v) {
|
||
$frag = $frag == '' ? '' . $v['author_name'] : $frag . ', ' . $v['author_name'];
|
||
}
|
||
return $frag;
|
||
}
|
||
// 出刊给作者发送邮件
|
||
private function sendAuthor($journal_stage_id,$journal_id){
|
||
$stage_info = $this->journal_stage_obj->where('journal_stage_id', $journal_stage_id)->find();
|
||
$journal_info = $this->journal_obj->where('journal_id',$journal_id)->find();
|
||
// 根据journal_stage_id 去article 中 找article_id
|
||
$articles = $this->article_obj->where('journal_stage_id',$journal_stage_id)->where('state',0)->select();
|
||
foreach ($articles as $v){
|
||
// 根据article_id 去article_author 中author
|
||
$datas = $this->article_author_obj->where(['article_id'=>$v['article_id'],'email'=>array('neq','')])->select();
|
||
foreach ($datas as $data){
|
||
// 邮件内容
|
||
$content = '<div style="background-color: #ededed;margin: 0;">
|
||
<div class="con_content" style="font-family: Arial;
|
||
width: 600px;
|
||
margin: 0 auto;
|
||
background-color: #fff;
|
||
padding: 30px 40px;
|
||
color: #1B3051;
|
||
font-size: 14px;
|
||
line-height: 20px;">
|
||
<div>
|
||
<img style="width: 80px;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATUAAABWCAYAAACuCAFEAAAKQ2lDQ1BJQ0MgcHJvZmlsZQAAeNqdU3dYk/cWPt/3ZQ9WQtjwsZdsgQAiI6wIyBBZohCSAGGEEBJAxYWIClYUFRGcSFXEgtUKSJ2I4qAouGdBiohai1VcOO4f3Ke1fXrv7e371/u855zn/M55zw+AERImkeaiagA5UoU8Otgfj09IxMm9gAIVSOAEIBDmy8JnBcUAAPADeXh+dLA//AGvbwACAHDVLiQSx+H/g7pQJlcAIJEA4CIS5wsBkFIAyC5UyBQAyBgAsFOzZAoAlAAAbHl8QiIAqg0A7PRJPgUA2KmT3BcA2KIcqQgAjQEAmShHJAJAuwBgVYFSLALAwgCgrEAiLgTArgGAWbYyRwKAvQUAdo5YkA9AYACAmUIszAAgOAIAQx4TzQMgTAOgMNK/4KlfcIW4SAEAwMuVzZdL0jMUuJXQGnfy8ODiIeLCbLFCYRcpEGYJ5CKcl5sjE0jnA0zODAAAGvnRwf44P5Dn5uTh5mbnbO/0xaL+a/BvIj4h8d/+vIwCBAAQTs/v2l/l5dYDcMcBsHW/a6lbANpWAGjf+V0z2wmgWgrQevmLeTj8QB6eoVDIPB0cCgsL7SViob0w44s+/zPhb+CLfvb8QB7+23rwAHGaQJmtwKOD/XFhbnauUo7nywRCMW735yP+x4V//Y4p0eI0sVwsFYrxWIm4UCJNx3m5UpFEIcmV4hLpfzLxH5b9CZN3DQCshk/ATrYHtctswH7uAQKLDljSdgBAfvMtjBoLkQAQZzQyefcAAJO/+Y9AKwEAzZek4wAAvOgYXKiUF0zGCAAARKCBKrBBBwzBFKzADpzBHbzAFwJhBkRADCTAPBBCBuSAHAqhGJZBGVTAOtgEtbADGqARmuEQtMExOA3n4BJcgetwFwZgGJ7CGLyGCQRByAgTYSE6iBFijtgizggXmY4EImFINJKApCDpiBRRIsXIcqQCqUJqkV1II/ItchQ5jVxA+pDbyCAyivyKvEcxlIGyUQPUAnVAuagfGorGoHPRdDQPXYCWomvRGrQePYC2oqfRS+h1dAB9io5jgNExDmaM2WFcjIdFYIlYGibHFmPlWDVWjzVjHVg3dhUbwJ5h7wgkAouAE+wIXoQQwmyCkJBHWExYQ6gl7CO0EroIVwmDhDHCJyKTqE+0JXoS+cR4YjqxkFhGrCbuIR4hniVeJw4TX5NIJA7JkuROCiElkDJJC0lrSNtILaRTpD7SEGmcTCbrkG3J3uQIsoCsIJeRt5APkE+S+8nD5LcUOsWI4kwJoiRSpJQSSjVlP+UEpZ8yQpmgqlHNqZ7UCKqIOp9aSW2gdlAvU4epEzR1miXNmxZDy6Qto9XQmmlnafdoL+l0ugndgx5Fl9CX0mvoB+nn6YP0dwwNhg2Dx0hiKBlrGXsZpxi3GS+ZTKYF05eZyFQw1zIbmWeYD5hvVVgq9ip8FZHKEpU6lVaVfpXnqlRVc1U/1XmqC1SrVQ+rXlZ9pkZVs1DjqQnUFqvVqR1Vu6k2rs5Sd1KPUM9RX6O+X/2C+mMNsoaFRqCGSKNUY7fGGY0hFsYyZfFYQtZyVgPrLGuYTWJbsvnsTHYF+xt2L3tMU0NzqmasZpFmneZxzQEOxrHg8DnZnErOIc4NznstAy0/LbHWaq1mrX6tN9p62r7aYu1y7Rbt69rvdXCdQJ0snfU6bTr3dQm6NrpRuoW623XP6j7TY+t56Qn1yvUO6d3RR/Vt9KP1F+rv1u/RHzcwNAg2kBlsMThj8MyQY+hrmGm40fCE4agRy2i6kcRoo9FJoye4Ju6HZ+M1eBc+ZqxvHGKsNN5l3Gs8YWJpMtukxKTF5L4pzZRrmma60bTTdMzMyCzcrNisyeyOOdWca55hvtm82/yNhaVFnMVKizaLx5balnzLBZZNlvesmFY+VnlW9VbXrEnWXOss623WV2xQG1ebDJs6m8u2qK2brcR2m23fFOIUjynSKfVTbtox7PzsCuya7AbtOfZh9iX2bfbPHcwcEh3WO3Q7fHJ0dcx2bHC866ThNMOpxKnD6VdnG2ehc53zNRemS5DLEpd2lxdTbaeKp26fesuV5RruutK10/Wjm7ub3K3ZbdTdzD3Ffav7TS6bG8ldwz3vQfTw91jicczjnaebp8LzkOcvXnZeWV77vR5Ps5wmntYwbcjbxFvgvct7YDo+PWX6zukDPsY+Ap96n4e+pr4i3z2+I37Wfpl+B/ye+zv6y/2P+L/hefIW8U4FYAHBAeUBvYEagbMDawMfBJkEpQc1BY0FuwYvDD4VQgwJDVkfcpNvwBfyG/ljM9xnLJrRFcoInRVaG/owzCZMHtYRjobPCN8Qfm+m+UzpzLYIiOBHbIi4H2kZmRf5fRQpKjKqLupRtFN0cXT3LNas5Fn7Z72O8Y+pjLk722q2cnZnrGpsUmxj7Ju4gLiquIF4h/hF8ZcSdBMkCe2J5MTYxD2J43MC52yaM5zkmlSWdGOu5dyiuRfm6c7Lnnc8WTVZkHw4hZgSl7I/5YMgQlAvGE/lp25NHRPyhJuFT0W+oo2iUbG3uEo8kuadVpX2ON07fUP6aIZPRnXGMwlPUit5kRmSuSPzTVZE1t6sz9lx2S05lJyUnKNSDWmWtCvXMLcot09mKyuTDeR55m3KG5OHyvfkI/lz89sVbIVM0aO0Uq5QDhZML6greFsYW3i4SL1IWtQz32b+6vkjC4IWfL2QsFC4sLPYuHhZ8eAiv0W7FiOLUxd3LjFdUrpkeGnw0n3LaMuylv1Q4lhSVfJqedzyjlKD0qWlQyuCVzSVqZTJy26u9Fq5YxVhlWRV72qX1VtWfyoXlV+scKyorviwRrjm4ldOX9V89Xlt2treSrfK7etI66Trbqz3Wb+vSr1qQdXQhvANrRvxjeUbX21K3nShemr1js20zcrNAzVhNe1bzLas2/KhNqP2ep1/XctW/a2rt77ZJtrWv913e/MOgx0VO97vlOy8tSt4V2u9RX31btLugt2PGmIbur/mft24R3dPxZ6Pe6V7B/ZF7+tqdG9s3K+/v7IJbVI2jR5IOnDlm4Bv2pvtmne1cFoqDsJB5cEn36Z8e+NQ6KHOw9zDzd+Zf7f1COtIeSvSOr91rC2jbaA9ob3v6IyjnR1eHUe+t/9+7zHjY3XHNY9XnqCdKD3x+eSCk+OnZKeenU4/PdSZ3Hn3TPyZa11RXb1nQ8+ePxd07ky3X/fJ897nj13wvHD0Ivdi2yW3S609rj1HfnD94UivW2/rZffL7Vc8rnT0Tes70e/Tf/pqwNVz1/jXLl2feb3vxuwbt24m3Ry4Jbr1+Hb27Rd3Cu5M3F16j3iv/L7a/eoH+g/qf7T+sWXAbeD4YMBgz8NZD+8OCYee/pT/04fh0kfMR9UjRiONj50fHxsNGr3yZM6T4aeypxPPyn5W/3nrc6vn3/3i+0vPWPzY8Av5i8+/rnmp83Lvq6mvOscjxx+8znk98ab8rc7bfe+477rfx70fmSj8QP5Q89H6Y8en0E/3Pud8/vwv94Tz+4A5JREAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADI2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDNBODgyQzU3MUM4MTFFQkE4MjRBNTM0MTVGNUZGNzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDNBODgyQzY3MUM4MTFFQkE4MjRBNTM0MTVGNUZGNzMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowM0E4ODJDMzcxQzgxMUVCQTgyNEE1MzQxNUY1RkY3MyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowM0E4ODJDNDcxQzgxMUVCQTgyNEE1MzQxNUY1RkY3MyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpvMdRIAAEVaSURBVHja7F0HgFxF+f9mXtt2JVfSAwmkUDVIMwYFAghKr6IgIF1QUAQLqKAiAupfgvReLFQBQXonFCGUACmQ3sv13dv2ysz/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" alt="">
|
||
</div>
|
||
<br><br>';
|
||
$content .= 'Dear Author,<br><br>Congratulations!<br><br>';
|
||
$content .= 'Thank you for choosing to publish with '.$journal_info['title'].'.<br>';
|
||
$content .= 'Your article has been published on Vol. '.$stage_info['stage_vol'].' Issue '.$stage_info['stage_no'].'.<br><br>';
|
||
|
||
$content .= $v['type'].'<br>';
|
||
$content .= '<a href="https://www.tmrjournals.com/article.html?J_num='.$journal_info['journal_id'].'&a_id='.$v['article_id'].'">'.$v['title'].'</a><br>';
|
||
$content .= $this->getAuthor($v).'<br>';
|
||
$content .= $journal_info['title'].' '.$stage_info['stage_year'].' '.$stage_info['stage_vol']."(".$stage_info['stage_no']."). DOI:".$v['doi'].'<br>';
|
||
$content .= '<a href="https://www.tmrjournals.com/public/articlePDF/'.$v['file_pdf'].'">Download pdf</a><br><br><br>';
|
||
|
||
$content .= 'If you want to be sure your research gets the attention it deserves, the following channels may be useful.<br><br>';
|
||
$content .= 'https://www.researchgate.net<br> https://www.academia.edu <br> https://twitter.com <br> https://www.linkedin.com <br> https://www.facebook.com <br><br>We look forward to receiving manuscripts from you in future.';
|
||
$content .= '</div></div>';
|
||
|
||
$maidata=[
|
||
'email'=>$data['email'],
|
||
'title'=>'Congratulations on your published article',
|
||
'content'=>$content,
|
||
'tmail'=>'publicrelations@tmrjournals.com',
|
||
'tpassword'=>'pRWU999999'
|
||
];
|
||
Queue::push('app\api\job\mail@fire', $maidata, "mail");
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|
||
}
|
||
/**
|
||
* @title 增加期刊消息
|
||
* @description 增加期刊消息
|
||
* @author wangjinlei
|
||
* @url /master/Journal/addNotices
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:title type:string require:1 desc:消息标题
|
||
* @param name:content type:string require:1 desc:内容
|
||
* @param name:ctime type:string require:1 desc:时间
|
||
*
|
||
*/
|
||
public function addNotices(){
|
||
$data = $this->request->post();
|
||
$insert['journal_id'] = $data['journal_id'];
|
||
$insert['title'] = $data['title'];
|
||
$insert['content'] = $data['content'];
|
||
$insert['ctime'] = $data['ctime']==''?time():strtotime($data['ctime']);
|
||
$res = $this->journal_notices_obj->insert($insert);
|
||
if($res){
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}else{
|
||
return json(['code'=>1,'msg'=>'system error']);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @title 删除期刊消息
|
||
* @description 删除期刊消息
|
||
* @author wangjinlei
|
||
* @url /master/Journal/delNotices
|
||
* @method POST
|
||
*
|
||
* @param name:journal_notices_id type:int require:1 desc:期刊id
|
||
*/
|
||
public function delNotices(){
|
||
$data = $this->request->post();
|
||
$this->journal_notices_obj->where('journal_notices_id',$data['journal_notices_id'])->update(['state'=>1]);
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}
|
||
|
||
/**
|
||
* @title 更改期刊消息
|
||
* @description 更改期刊消息
|
||
* @author wangjinlei
|
||
* @url /master/Journal/changeNotices
|
||
* @method POST
|
||
*
|
||
* @param name:journal_notices_id type:int require:1 desc:期刊消息id
|
||
* @param name:title type:string require:1 desc:消息标题
|
||
* @param name:content type:string require:1 desc:内容
|
||
* @param name:ctime type:string require:1 desc:时间
|
||
*/
|
||
public function changeNotices(){
|
||
$data = $this->request->post();
|
||
$update['title'] = $data['title'];
|
||
$update['content'] = $data['content'];
|
||
$update['ctime'] = strtotime($data['ctime']);
|
||
$this->journal_notices_obj->where('journal_notices_id',$data['journal_notices_id'])->update($update);
|
||
return json(['code'=>0,'msg'=>'success']);
|
||
}
|
||
|
||
/**
|
||
* @title 获取期刊消息
|
||
* @description 获取期刊消息
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getNotices
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*
|
||
* @return notices:消息list
|
||
* @return journal_info:期刊消息
|
||
*/
|
||
public function getNotices(){
|
||
$data = $this->request->post();
|
||
$journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find();
|
||
$list = $this->journal_notices_obj->where('journal_id',$data['journal_id'])->where('state',0)->select();
|
||
return jsonSuccess(['journal_info'=>$journal_info,'notices'=>$list]);
|
||
}
|
||
|
||
/**
|
||
* @title 增加期刊收刊文章
|
||
* @description 增加期刊收刊文章
|
||
* @author wangjinlei
|
||
* @url /master/Journal/addJournalCfp
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:title type:string require:1 desc:标题
|
||
* @param name:icon type:string require:1 desc:图标
|
||
* @param name:sort type:int require:1 desc:权重
|
||
* @param name:showtime type:string require:1 desc:显示时间
|
||
* @param name:content type:string require:1 desc:内容
|
||
*
|
||
* @return notices:消息list
|
||
* @return journal_info:期刊消息
|
||
*/
|
||
public function addJournalCfp(){
|
||
$data = $this->request->post();
|
||
$insert['journal_id'] = $data['journal_id'];
|
||
$insert['title'] = trim($data['title']);
|
||
$insert['icon'] = $data['icon'];
|
||
$insert['sort'] = isset($data['sort'])?$data['sort']:0;
|
||
$insert['showtime'] = $data['showtime'];
|
||
$insert['content'] = $data['content'];
|
||
$insert['ctime'] = time();
|
||
$this->journal_cfp_obj->insert($insert);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 删除期刊收刊文章
|
||
* @description 删除期刊收刊文章
|
||
* @author wangjinlei
|
||
* @url /master/Journal/delJournalCfp
|
||
* @method POST
|
||
*
|
||
* @param name:journal_cfp_id type:int require:1 desc:期刊收刊id
|
||
*
|
||
*/
|
||
public function delJournalCfp(){
|
||
$data = $this->request->post();
|
||
$this->journal_cfp_obj->where('journal_cfp_id',$data['journal_cfp_id'])->update(['state'=>1]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 编辑期刊收刊信息
|
||
* @description 编辑期刊收刊信息
|
||
* @author wangjinlei
|
||
* @url /master/Journal/editJournalCfp
|
||
* @method POST
|
||
*
|
||
* @param name:journal_cfp_id type:int require:1 desc:期刊收刊id
|
||
* @param name:title type:string require:1 desc:标题
|
||
* @param name:icon type:string require:1 desc:图标
|
||
* @param name:sort type:int require:1 desc:权重
|
||
* @param name:showtime type:string require:1 desc:显示时间
|
||
* @param name:content type:string require:1 desc:内容
|
||
*/
|
||
public function editJournalCfp(){
|
||
$data = $this->request->post();
|
||
$update['title'] = $data['title'];
|
||
$update['icon'] = $data['icon'];
|
||
$update['sort'] = $data['sort'];
|
||
$update['showtime'] = $data['showtime'];
|
||
$update['content'] = $data['content'];
|
||
$this->journal_cfp_obj->where('journal_cfp_id',$data['journal_cfp_id'])->update($update);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 获取期刊收刊列表
|
||
* @description 获取期刊收刊列表
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getJournalCfps
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*
|
||
* @return journal:期刊信息#
|
||
* @return cfps:收刊列表#
|
||
*/
|
||
public function getJournalCfps(){
|
||
$data = $this->request->post();
|
||
$journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find();
|
||
$list = $this->journal_cfp_obj->where('journal_id',$data['journal_id'])->where('state',0)->order('sort desc ,journal_cfp_id asc')->select();
|
||
|
||
$re['cfps'] = $list;
|
||
$re['journal'] = $journal_info;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title cfp图片上传
|
||
* @description cfp图片上传
|
||
* @author wangjinlei
|
||
* @url /master/Journal/up_cfp_file
|
||
* @method POST
|
||
*
|
||
* @param name:name type:string require:1 default:journalCfp desc:文件域名称
|
||
*
|
||
* @return upurl:图片地址
|
||
*/
|
||
public function up_cfp_file() {
|
||
$file = request()->file('journalCfp');
|
||
if ($file) {
|
||
$info = $file->move(ROOT_PATH . 'public' . DS . 'journalCfp');
|
||
if ($info) {
|
||
return json(['code'=>0 , 'msg'=>'success', 'upurl' => str_replace("\\", "/", $info->getSaveName())]);
|
||
} else {
|
||
return json(['code' => 1, 'msg' => $file->getError()]);
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @title 添加期刊paper
|
||
* @description 添加期刊paper
|
||
* @author wangjinlei
|
||
* @url /master/Journal/addJournalPaper
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:title type:string require:1 desc:标题
|
||
*
|
||
*/
|
||
public function addJournalPaper(){
|
||
$data = $this->request->post();
|
||
$insert['journal_id'] = $data['journal_id'];
|
||
$insert['title'] = $data['title'];
|
||
$this->journal_paper_obj->insert($insert);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 删除期刊paper
|
||
* @description 删除期刊paper
|
||
* @author wangjinlei
|
||
* @url /master/Journal/delJournalPaper
|
||
* @method POST
|
||
*
|
||
* @param name:journal_paper_id type:int require:1 desc:期刊paperid
|
||
*
|
||
*/
|
||
public function delJournalPaper(){
|
||
$data = $this->request->post();
|
||
$this->journal_paper_obj->where('journal_paper_id',$data['journal_paper_id'])->update(['state'=>1]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 编辑期刊paper
|
||
* @description 编辑期刊paper
|
||
* @author wangjinlei
|
||
* @url /master/Journal/editJournalPaper
|
||
* @method POST
|
||
*
|
||
* @param name:journal_paper_id type:int require:1 desc:期刊paperid
|
||
* @param name:title type:string require:1 desc:标题
|
||
*
|
||
*/
|
||
public function editJournalPaper(){
|
||
$data = $this->request->post();
|
||
$this->journal_paper_obj->where('journal_paper_id',$data['journal_paper_id'])->update(['title'=>$data['title']]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 获取期刊缩略图
|
||
* @description 获取期刊缩略图
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getJournalIcon
|
||
* @method POST
|
||
*
|
||
* @param name:issn type:int require:1 desc:issn号
|
||
*
|
||
* @return icon:图片地址#
|
||
*/
|
||
public function getJournalIcon(){
|
||
$data = $this->request->post();
|
||
$journal_info = $this->journal_obj->where('issn',$data['issn'])->find();
|
||
|
||
$re['icon'] = $journal_info['licon'];
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 通用话题--获取通用话题列表
|
||
* @description 通用话题--获取通用话题列表
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getBaseTopicList
|
||
* @method POST
|
||
*
|
||
* @return topics:通用话题#
|
||
*/
|
||
public function getBaseTopicList(){
|
||
$father = $this->base_topic_obj->where('parent_id',0)->where('state',0)->order('sort desc')->select();
|
||
foreach ($father as $k => $v){
|
||
$cache = $this->base_topic_obj->where('parent_id',$v['base_topic_id'])->where('state',0)->order('sort desc')->select();
|
||
$father[$k]['children'] = $cache;
|
||
}
|
||
$re['topics'] = $father;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 通用话题--增加通用话题
|
||
* @description 通用话题--增加通用话题
|
||
* @author wangjinlei
|
||
* @url /master/Journal/addBaseTopic
|
||
* @method POST
|
||
*
|
||
* @param name:title type:string require:1 desc:话题名称标题
|
||
* @param name:parent_id type:int require:1 desc:父级话题id
|
||
* @param name:sort type:int require:1 desc:权重值
|
||
* @param name:icon type:string require:1 desc:图标
|
||
*
|
||
*/
|
||
public function addBaseTopic(){
|
||
$data = $this->request->post();
|
||
$check = $this->base_topic_obj->where('title',$data['title'])->where('state',0)->find();
|
||
if($check != null){
|
||
return jsonError('此话题已存在,话题名不能重复!!');
|
||
}
|
||
|
||
$insert['title'] = trim($data['title']);
|
||
$insert['parent_id'] = $data['parent_id'];
|
||
$insert['sort'] = $data['sort'];
|
||
$insert['icon'] = $data['icon'];
|
||
|
||
$this->base_topic_obj->insert($insert);
|
||
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 通用话题--编辑通用话题
|
||
* @description 通用话题--编辑通用话题
|
||
* @author wangjinlei
|
||
* @url /master/Journal/editBaseTopic
|
||
* @method POST
|
||
*
|
||
* @param name:base_topic_id type:int require:1 desc:通用话题id
|
||
* @param name:title type:string require:1 desc:话题名称标题
|
||
* @param name:sort type:int require:1 desc:权重值
|
||
*/
|
||
public function editBaseTopic(){
|
||
$data = $this->request->post();
|
||
$update['title'] = trim($data['title']);
|
||
$update['sort'] = $data['sort'];
|
||
if(isset($data['icon'])){
|
||
$update['icon'] = $data['icon'];
|
||
}
|
||
$this->base_topic_obj->where('base_topic_id',$data['base_topic_id'])->update($update);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 通用话题--删除通用话题
|
||
* @description 通用话题--删除通用话题
|
||
* @author wangjinlei
|
||
* @url /master/Journal/delBaseTopic
|
||
* @method POST
|
||
*
|
||
* @param name:base_topic_id type:int require:1 desc:通用话题id
|
||
*/
|
||
public function delBaseTopic(){
|
||
$data = $this->request->post();
|
||
$this->base_topic_obj->where('base_topic_id',$data['base_topic_id'])->update(['state'=>1]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 通用话题--图片上传
|
||
* @description 通用话题--图片上传
|
||
* @author wangjinlei
|
||
* @url /master/Journal/baseTopic_up_file
|
||
* @method POST
|
||
*
|
||
* @param name:name type:string require:1 default:baseTopic desc:文件域名称
|
||
*
|
||
* @return upurl:图片地址
|
||
*/
|
||
public function baseTopic_up_file() {
|
||
$file = request()->file('baseTopic');
|
||
if ($file) {
|
||
$info = $file->move(ROOT_PATH . 'public' . DS . 'baseTopic');
|
||
if ($info) {
|
||
return json(['code'=>0 , 'msg'=>'success', 'upurl' => str_replace("\\", "/", $info->getSaveName())]);
|
||
} else {
|
||
return json(['code' => 1, 'msg' => $file->getError()]);
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @title 增加期刊paper文章
|
||
* @description 增加期刊paper文章
|
||
* @author wangjinlei
|
||
* @url /master/Journal/addJournalPaperArt
|
||
* @method POST
|
||
*
|
||
* @param name:journal_paper_id type:int require:1 desc:期刊paperid
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:title type:string require:1 desc:标题
|
||
* @param name:sort type:int require:1 desc:权重
|
||
* @param name:content type:string require:1 desc:内容
|
||
*
|
||
*/
|
||
public function addJournalPaperArt(){
|
||
$data = $this->request->post();
|
||
$insert['journal_paper_id'] = $data['journal_paper_id'];
|
||
$insert['journal_id'] = $data['journal_id'];
|
||
$insert['title'] = $data['title'];
|
||
$insert['content'] = $data['content'];
|
||
$insert['sort'] = $data['sort'];
|
||
$insert['ctime'] = time();
|
||
$this->journal_paper_art_obj->insert($insert);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 删除期刊paper文章
|
||
* @description 删除期刊paper文章
|
||
* @author wangjinlei
|
||
* @url /master/Journal/delJournalPaperArt
|
||
* @method POST
|
||
*
|
||
* @param name:journal_paper_art_id type:int require:1 desc:期刊paperid
|
||
*
|
||
*/
|
||
public function delJournalPaperArt(){
|
||
$data = $this->request->post();
|
||
$this->journal_paper_art_obj->where('journal_paper_art_id',$data['journal_paper_art_id'])->update(['state'=>1]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 编辑期刊paper文章
|
||
* @description 编辑期刊paper文章
|
||
* @author wangjinlei
|
||
* @url /master/Journal/editJournalPaperArt
|
||
* @method POST
|
||
*
|
||
* @param name:journal_paper_art_id type:int require:1 desc:期刊paper文章id
|
||
* @param name:title type:string require:1 desc:标题
|
||
* @param name:content type:string require:1 desc:内容
|
||
* @param name:sort type:int require:1 desc:权重
|
||
*
|
||
*/
|
||
public function editJournalPaperArt(){
|
||
$data = $this->request->post();
|
||
$update['title'] = $data['title'];
|
||
$update['content'] = $data['content'];
|
||
$update['sort']=$data['sort'];
|
||
$this->journal_paper_art_obj->where('journal_paper_art_id',$data['journal_paper_art_id'])->update($update);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 增加期刊line
|
||
* @description 增加期刊line
|
||
* @author wangjinlei
|
||
* @url /master/Journal/addJournalLine
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:title type:string require:1 desc:标题
|
||
* @param name:time type:string require:1 desc:时间
|
||
* @param name:img type:string require:1 desc:图片
|
||
* @param name:intro type:string require:1 desc:简介
|
||
* @param name:dist type:int require:1 desc:距离
|
||
*/
|
||
public function addJournalLine(){
|
||
$data = $this->request->post();
|
||
$insert['journal_id'] = $data['journal_id'];
|
||
$insert['title'] = $data['title'];
|
||
$insert['time'] = $data['time'];
|
||
$insert['img'] = $data['img'];
|
||
$insert['intro'] = $data['intro'];
|
||
$insert['dist'] = $data['dist'];
|
||
$this->journal_line_obj->insert($insert);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 删除期刊line
|
||
* @description 删除期刊line
|
||
* @author wangjinlei
|
||
* @url /master/Journal/delJournalLine
|
||
* @method POST
|
||
*
|
||
* @param name:journal_line_id type:int require:1 desc:期刊时间轴id
|
||
*/
|
||
public function delJournalLine(){
|
||
$data = $this->request->post();
|
||
$this->journal_line_obj->where('journal_line_id',$data['journal_line_id'])->update(['state'=>1]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 编辑期刊line
|
||
* @description 编辑期刊line
|
||
* @author wangjinlei
|
||
* @url /master/Journal/editJournalLine
|
||
* @method POST
|
||
*
|
||
* @param name:journal_line_id type:int require:1 desc:期刊时间轴id
|
||
* @param name:title type:string require:1 desc:标题
|
||
* @param name:time type:string require:1 desc:时间
|
||
* @param name:img type:string require:1 desc:图片地址
|
||
* @param name:intro type:string require:1 desc:简介
|
||
* @param name:dist type:int require:1 desc:距离
|
||
*/
|
||
public function editJournalLine(){
|
||
$data = $this->request->post();
|
||
$update['title'] = $data['title'];
|
||
$update['time'] = $data['time'];
|
||
$update['img'] = $data['img'];
|
||
$update['intro'] = $data['intro'];
|
||
$update['dist'] = $data['dist'];
|
||
$this->journal_line_obj->where('journal_line_id',$data['journal_line_id'])->update($update);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 获取期刊lines
|
||
* @description 获取期刊lines
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getJournalLines
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*
|
||
* @return journal:期刊信息#
|
||
* @return lines:array#
|
||
*/
|
||
public function getJournalLines(){
|
||
$data = $this->request->post();
|
||
$journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find();
|
||
$list = $this->journal_line_obj->where('journal_id',$data['journal_id'])->where('state',0)->order('journal_line_id')->select();
|
||
|
||
$re['journal'] = $journal_info;
|
||
$re['lines'] = $list;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 增加期刊关联期刊
|
||
* @description 增加期刊关联期刊
|
||
* @author wangjinlei
|
||
* @url /master/Journal/addJournalralet
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:relat_id type:int require:1 desc:关联期刊id
|
||
*/
|
||
public function addJournalralet(){
|
||
$data = $this->request->post();
|
||
$journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find();
|
||
$rearr = $journal_info['relate']==''?[]:explode(',',$journal_info['relate']);
|
||
if(count($rearr)>5){
|
||
return jsonError('No more than four');
|
||
}
|
||
$rearr[] = $data['relat_id'];
|
||
|
||
$this->journal_obj->where('journal_id',$data['journal_id'])->update(['relate'=> implode(',', $rearr)]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 删除期刊关联期刊
|
||
* @description 删除期刊关联期刊
|
||
* @author wangjinlei
|
||
* @url /master/Journal/delJournalralet
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:relat_id type:int require:1 desc:关联期刊id
|
||
*/
|
||
public function delJournalralet(){
|
||
$data = $this->request->post();
|
||
$journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find();
|
||
$rearr = $journal_info['relate']==''?[]:explode(',',$journal_info['relate']);
|
||
foreach ($rearr as $k => $v){
|
||
if($v == $data['relat_id']){
|
||
unset($rearr[$k]);
|
||
}
|
||
}
|
||
$this->journal_obj->where('journal_id',$data['journal_id'])->update(['relate'=> implode(',', $rearr)]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 获取期刊关联期刊
|
||
* @description 获取期刊关联期刊
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getJournalralet
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
*
|
||
* @return journal:当前期刊#
|
||
* @return journals:期刊array#
|
||
*/
|
||
public function getJournalralet(){
|
||
$data = $this->request->post();
|
||
$journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find();
|
||
$rearr = $journal_info['relate']==''?[]:explode(',',$journal_info['relate']);
|
||
$list = $this->journal_obj->where('journal_id','in',$rearr)->where('state',0)->select();
|
||
|
||
$re['journal'] = $journal_info;
|
||
$re['journals'] = $list;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 增加期刊line文章
|
||
* @description 增加期刊line文章
|
||
* @author wangjinlei
|
||
* @url /master/Journal/addJournalLineArt
|
||
* @method POST
|
||
*
|
||
* @param name:journal_line_id type:int require:1 desc:期刊id
|
||
* @param name:article_id type:int require:1 desc:文章id
|
||
*
|
||
*/
|
||
public function addJournalLineArt(){
|
||
$data = $this->request->post();
|
||
$insert['journal_line_id'] = $data['journal_line_id'];
|
||
$insert['article_id'] = $data['article_id'];
|
||
$this->article_to_line_obj->insert($insert);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 删除期刊line文章
|
||
* @description 删除期刊line文章
|
||
* @author wangjinlei
|
||
* @url /master/Journal/delJournalLineArt
|
||
* @method POST
|
||
*
|
||
* @param name:article_to_line_id type:int require:1 desc:期刊id
|
||
*
|
||
*/
|
||
public function delJournalLineArt(){
|
||
$data = $this->request->post();
|
||
$this->article_to_line_obj->where('article_to_line_id',$data['article_to_line_id'])->update(['state'=>1]);
|
||
return jsonSuccess([]);
|
||
}
|
||
|
||
/**
|
||
* @title 获取期刊line文章
|
||
* @description 获取期刊line文章
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getJournalLineArt
|
||
* @method POST
|
||
*
|
||
* @param name:journal_line_id type:int require:1 desc:期刊lineid
|
||
*
|
||
* @return journalLine:期刊line#
|
||
* @return journal:期刊信息#
|
||
* @return articles: 文章列表array#
|
||
*
|
||
*/
|
||
public function getJournalLineArt(){
|
||
$data = $this->request->post();
|
||
$journal_line_info = $this->journal_line_obj->where('journal_line_id',$data['journal_line_id'])->find();
|
||
$journal_info = $this->journal_obj->where('journal_id',$journal_line_info['journal_id'])->find();
|
||
$list = $this->article_to_line_obj->field('j_article_to_line.*,j_article.*')
|
||
->join('j_article','j_article.article_id = j_article_to_line.article_id','LEFT')
|
||
->where('j_article_to_line.journal_line_id',$data['journal_line_id'])
|
||
->where('j_article_to_line.state',0)
|
||
->select();
|
||
|
||
$re['journalLine'] = $journal_line_info;
|
||
$re['journal'] = $journal_info;
|
||
$re['articles'] = $list;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 获取文章排除line
|
||
* @description 获取文章排除line
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getArticleByLine
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊id
|
||
* @param name:journal_line_id type:int require:1 desc:时间线id
|
||
* @param name:title type:string require:1 desc:标题
|
||
* @param name:pageIndex type:int require:1 desc:当前页码数
|
||
* @param name:pageSize type:int require:1 desc:单页数据条数
|
||
*
|
||
* $return count:总数
|
||
* @return dataList:array#
|
||
*/
|
||
public function getArticleByLine(){
|
||
$data = $this->request->post();
|
||
//排除line
|
||
$ids = $this->article_to_line_obj->where('journal_line_id',$data['journal_line_id'])->where('state',0)->column('article_id');
|
||
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
|
||
$list = $this->article_obj->where('journal_id',$data['journal_id'])->where('state',0)->where('article_id','not in',$ids)->where('title','like','%'.$data['title'].'%')->limit($limit_start,$data['pageSize'])->select();
|
||
$count = $this->article_obj->where('journal_id',$data['journal_id'])->where('state',0)->where('article_id','not in',$ids)->where('title','like','%'.$data['title'].'%')->count();
|
||
|
||
$re['count'] = $count;
|
||
$re['dataList'] = $list;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 获取期刊paper
|
||
* @description 获取期刊paper
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getJournalPapers
|
||
* @method POST
|
||
*
|
||
* @param name:journal_id type:int require:1 desc:期刊paperid
|
||
*
|
||
* @return paperLists:paperlist#
|
||
*
|
||
*/
|
||
public function getJournalPapers(){
|
||
$data = $this->request->post();
|
||
$journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find();
|
||
$journalPapers = $this->journal_paper_obj->where('journal_id',$data['journal_id'])->where('state',0)->select();
|
||
|
||
$re['journalInfo'] = $journal_info;
|
||
$re['paperLists'] = $journalPapers;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 获取期刊paper文章列表
|
||
* @description 获取期刊paper文章列表
|
||
* @author wangjinlei
|
||
* @url /master/Journal/getJournalPaperArt
|
||
* @method POST
|
||
*
|
||
* @param name:journal_paper_id type:int require:1 desc:期刊paperid
|
||
*
|
||
* @return paperinfo:array#
|
||
* @return articleLists:paperlist#
|
||
*
|
||
*/
|
||
public function getJournalPaperArt(){
|
||
$data = $this->request->post();
|
||
$paper_info = $this->journal_paper_obj->where('journal_paper_id',$data['journal_paper_id'])->find();
|
||
$list = $this->journal_paper_art_obj->where('journal_paper_id',$data['journal_paper_id'])->where('state',0)->order('sort')->select();
|
||
|
||
$re['paperinfo'] = $paper_info;
|
||
$re['articleLists'] = $list;
|
||
return jsonSuccess($re);
|
||
}
|
||
|
||
/**
|
||
* @title 期刊分期--封面图片上传
|
||
* @description 期刊分期--封面图片上传
|
||
* @author wangjinlei
|
||
* @url /master/Journal/up_stage_icon
|
||
* @method POST
|
||
*
|
||
* @param name:stage_icon type:string require:1 desc:封面图片
|
||
*
|
||
* @return url:图片地址
|
||
*/
|
||
public function upStageIcon(){
|
||
$file = request()->file('stage_icon');
|
||
if ($file) {
|
||
$info = $file->move(ROOT_PATH . 'public' . DS . 'journalstage');
|
||
if ($info) {
|
||
return json(['code'=>0 , 'msg'=>'success', 'url' => str_replace("\\", "/", 'journalstage/'.$info->getSaveName())]);
|
||
} else {
|
||
return json(['code' => 1, 'msg' => $file->getError()]);
|
||
}
|
||
}
|
||
}
|
||
}
|