Files
journal/application/master/controller/Journal.php
wangjinlei c0fba968de 1
2022-09-30 18:03:31 +08:00

2492 lines
180 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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]]);
}
/**
* 获取全部期刊
*/
public function getJournals()
{
$jouranls = $this->journal_obj->where('state', 0)->select();
$re['journals'] = $jouranls;
return jsonSuccess($re);
}
/**
* 获取分期通过期刊
*/
public function getStagesByJournal()
{
$data = $this->request->post();
$rule = new Validate([
'journal_id' => 'require|number'
]);
if (!$rule->check($data)) {
return jsonError($rule->getError());
}
$list = $this->journal_stage_obj->where('journal_id', $data['journal_id'])->where('state', 0)->select();
foreach ($list as $k => $vv) {
$list[$k]['title'] = $vv['stage_year'] . ' Vol.' . $vv['stage_vol'] . ' issue.' . $vv['stage_no'] . $vv['stage_pagename'] . $vv['stage_page'];
}
$re['stages'] = $list;
return jsonSuccess($re);
}
/**
* 获取期刊和分期信息
*/
public function getJournalsAndStage()
{
$data = $this->request->post();
$journal_list = $this->journal_obj->where('state', 0)->select();
$frag = [];
foreach ($journal_list as $v) {
// $v['journal_stage_id'] = $v['journal_id'];
$cache_list = $this->journal_stage_obj->where('journal_id', $v['journal_id'])->where('state', 0)->select();
foreach ($cache_list as $k => $vv) {
$cache_list[$k]['title'] = $vv['stage_year'] . ' Vol.' . $vv['stage_vol'] . ' issue.' . $vv['stage_no'] . $vv['stage_pagename'] . $vv['stage_page'];
}
if (count($cache_list) > 0) {
$v['children'] = $cache_list;
} else {
$v['children'] = [];
}
$frag[] = $v;
}
return json(['code' => 0, 'msg' => 'success', 'data' => ['joutaglist' => $frag]]);
}
/**
* @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']);
}
}
/**
* 推送邮件给编委
*/
private function pushEmailToBoardByJournal()
{
$data = $this->request->post();
$rule = new Validate([
'journal_id' => 'require'
]);
if (!$rule->check($data)) {
return jsonError($rule->getError());
}
$journal_info = $this->journal_obj->where('journal_id', $data['journal_id'])->find();
$boards = $this->board_obj->where('journal_id', $data['journal_id'])->where('type', 2)->where('state', 0)->select();
$tt = "Life Research journal is currently applying for Web of Science Core Collection (SCI), and we have received modification comments from Web of Science Editorial Team. Life Research is expected to be indexed in SCI in two years. <br><br>";
$tt .= "According to the opinions, the editorial board of Life Research journal needs to be reorganized. <strong>Please send the URL of your latest publication record (ORCID or ResearchGate) to this email address (liferes@tmrjournals.com)</strong>. We will choose new editorial board members based on the latest publication record. If you cannot respond within two weeks, you will be temporarily removed from the editorial board list until you send us the publication record.<br><br>";
$tt .= "Thank you very much for your support.<br><br>";
$tt .= "Life Research Editorial Team";
// $name = 'haoRan Zhang';
// // $maidata['email'] = 'liferes@tmrjournals.com';
// $maidata['email'] = '751475802@qq.com';
// $maidata['title'] = 'Please send the URL of your latest publication record (Life Research)';
// $maidata['content'] = "Dear ".$name.",<br><br>".$tt;
// // $maidata['tmail'] = $journal_info['email'];
// // $maidata['tpassword'] = $journal_info['epassword'];
// $maidata['tmail'] = 'liferes@tmrjournals.com';
// $maidata['tpassword'] = 'Wu999999lifere';
// Queue::push('app\api\job\mail@fire', $maidata, "mail");
// $r = sendEmail($maidata['email'],$maidata['title'],$maidata['title'],$maidata['content'],$maidata['tmail'],$maidata['tpassword']);
foreach ($boards as $v) {
if ($v['email'] == '') {
continue;
}
$maidata['email'] = $v['email'];
$maidata['title'] = 'Please send the URL of your latest publication record (Life Research)';
$maidata['content'] = "Dear " . $v['name'] . ",<br><br>" . $tt;
$maidata['tmail'] = $journal_info['email'];
$maidata['tpassword'] = $journal_info['epassword'];
Queue::push('app\api\job\mail@fire', $maidata, "mail");
// Queue::push('app\api\job\mail@propa', $maidata, "mail");
}
return jsonSuccess([]);
}
/**
* 发送推广邮件到订阅者
*/
public function pushEmailToDY()
{
$frag = $this->subscribe_journal_obj->where('journal_id', 1)->where('state', 0)->limit(0, 1000)->select();
$articles = $this->article_obj
->field('j_article.*,j_journal_stage.stage_year,j_journal_stage.stage_vol,j_journal_stage.stage_no')
->join('j_journal_stage', 'j_journal_stage.journal_stage_id = j_article.journal_stage_id', 'left')
->where('j_article.journal_id', 1)
->where('j_article.journal_stage_id', '<', 375)
->limit(20)
->order('pdf_num desc')->select();
$tt = 'Greetings!<br>';
$tt .= 'Thank you for your attention to TMR Publishing Group and your active participation.<br><br>';
$tt .= "According to Clarivate's latest policy (https://clarivate.com/news/clarivate-announces-changes-to-the-2023-journal-citation-reports/), Traditional Medicine Research (ISSN 2413-3973) will get the first Impact Factor in 2023. You are welcome to pay attention to the journal and submit manuscripts. <br><br>";
$tt .= "Attached are some popular papers published in Traditional Medicine Research.<br><br>";
$tt .= "You are always welcome to read and share the articles and encourage you to submit your manuscripts to us through the following channels: www.tmrjournals.com/tmr<br><br>";
foreach ($articles as $v) {
$tt .= "<a href='https://www.tmrjournals.com/article.html?J_num=1&a_id=" . $v['article_id'] . "'>" . $v['title'] . "</a><br>";
$tt .= "Traditional Medicine Research. " . $v['stage_year'] . " " . $v['stage_vol'] . "(" . $v['stage_no'] . ")<br>";
$tt .= "<a href='https://www.tmrjournals.com/public/articlePDF/" . $v['file_pdf'] . "'>Download pdf</a><br><br><br>";
}
$frag1 = [];
$frag1[] = [
'subscribe_journal_id' => 7,
'email' => '751475802@qq.com'
];
$frag1[] = [
'subscribe_journal_id' => 7,
'email' => 'tmr@tmrjournals.com'
];
foreach ($frag as $v) {
$cache_tt = $tt . '<a href="http://journalapi.tmrjournals.com/public/index.php/api/Journal/UnsubscribeJournal/snum/' . $v['subscribe_journal_id'] . '">Unsubscribe</a>';
$maidata['email'] = $v['email'];
$maidata['title'] = "Traditional Medicine Research will get the first Impact Factor (WOS) in 2023";
$maidata['content'] = $cache_tt;
// $maidata['tmail'] = 'publicrelations@tmrjournals.com';
// $maidata['tpassword'] = 'pRWU999999';
// $maidata['tmail'] = 'ghr@tmrjournals.com';
// $maidata['tpassword'] = 'Gh999666';
// echo aliemail($maidata['email'], $maidata['title'], $maidata['content']);
Queue::push('app\api\job\mail@propa', $maidata, "mail");
// sendEmail($maidata['email'],$maidata['title'],$maidata['title'],$maidata['content'],$maidata['tmail'],$maidata['tpassword']);
}
return jsonSuccess([]);
}
/**
* 发送邮件至审稿人
*/
public function pushEmailToReviewer()
{
$data = $this->request->post();
$topic_tem = Db::name('topic_tem');
$tems = $topic_tem->where('topic_id', $data['topic'])->where('state', 0)->select();
$frag = [];
foreach ($tems as $k => $v) {
$url = "http://api.tmrjournals.com/public/index.php/api/Reviewer/getRevEmailByTopic";
$pag = [];
$pag['topic'] = $v['p_title'];
$cache_res = object_to_array(json_decode(myPost($url, $pag)));
if ($cache_res['code'] == 0) {
$emails = $cache_res['data']['reviewers'];
foreach ($emails as $val) {
$frag[] = $val;
}
}
}
$article_ids = $this->article_to_topic_obj->where('topic_id', $data['topic'])->where('state', 0)->column('article_id');
$articles = $this->article_obj
->field('j_article.*,j_journal_stage.stage_year,j_journal_stage.stage_vol,j_journal_stage.stage_no')
->join('j_journal_stage', 'j_journal_stage.journal_stage_id = j_article.journal_stage_id', 'left')
->where('j_journal_stage.stage_year', '>=', '2020')
->where('j_article.article_id', 'in', $article_ids)
->where('j_article.journal_id', 1)
->where('j_article.state', 0)
->select();
$tt = 'Greetings!<br>';
$tt .= 'Thank you for your contribution to TMR Publishing Group and your active participation in the peer review process.<br>';
$tt .= "According to Clarivate's latest policy (https://clarivate.com/news/clarivate-announces-changes-to-the-2023-journal-citation-reports/), Traditional Medicine Research (ISSN 2413-3973) will get the first Impact Factor in 2023. You are welcome to pay attention to the journal and submit manuscripts.<br>Attached are some papers published in Traditional Medicine Research, which are related to your research field. You are always welcome to read and to share the articles and encourage you to submit your manuscripts to us through the following channels: www.tmrjournals.com/tmr <br><br>";
foreach ($articles as $v) {
$tt .= "<a href='https://www.tmrjournals.com/article.html?J_num=1&a_id=" . $v['article_id'] . "'>" . $v['title'] . "</a><br>";
$tt .= "Traditional Medicine Research. " . $v['stage_year'] . " " . $v['stage_vol'] . "(" . $v['stage_no'] . ")<br>";
$tt .= "<a href='https://www.tmrjournals.com/public/articlePDF/" . $v['file_pdf'] . "'>Download pdf</a><br><br><br>";
}
$frag1 = [];
$frag1[] = [
'user_id' => 54,
'email' => '751475802@qq.com'
];
$frag1[] = [
'user_id' => 28,
'email' => 'tmr@tmrjournals.com'
];
foreach ($frag as $v) {
$cache_tt = $tt . '<a href="http://api.tmrjournals.com/public/index.php/api/User/unAdvertForUser/uid/' . $v['user_id'] . '">Unsubscribe</a>';
$maidata['email'] = $v['email'];
$maidata['title'] = "Traditional Medicine Research will get the first Impact Factor (WOS) in 2023";
$maidata['content'] = $cache_tt;
// $maidata['tmail'] = 'publicrelations@tmrjournals.com';
// $maidata['tpassword'] = 'pRWU999999';
// $maidata['tmail'] = 'ghr@tmrjournals.com';
// $maidata['tpassword'] = 'Gh999666';
// echo aliemail($maidata['email'], $maidata['title'], $maidata['content']);
Queue::push('app\api\job\mail@propa', $maidata, "mail");
// sendEmail($maidata['email'],$maidata['title'],$maidata['title'],$maidata['content'],$maidata['tmail'],$maidata['tpassword']);
}
return jsonSuccess(['num' => count($frag)]);
}
// public function toReviewerEmail()//$email, $topic_id)
// {
// $data = $this->request->post();
// $article_ids = $this->article_to_topic_obj->where('topic_id', $data['topic_id'])->where('state', 0)->column('article_id');
// $articles = $this->article_obj
// ->field('j_article.*,j_journal_stage.stage_year,j_journal_stage.stage_vol,j_journal_stage.stage_no')
// ->join('j_journal_stage', 'j_journal_stage.journal_stage_id = j_article.journal_stage_id', 'left')
// ->where('j_journal_stage.stage_year', '>=', '2020')
// ->where('j_article.article_id', 'in', $article_ids)
// ->where('j_article.journal_id',1)
// ->where('j_article.state', 0)
// ->select();
// $tt = 'Greetings!<br>';
// $tt .= 'Thank you for your contribution to TMR Publishing Group and your active participation in the peer review process.<br>';
// $tt .= "According to Clarivate's latest policy (https://clarivate.com/news/clarivate-announces-changes-to-the-2023-journal-citation-reports/), Traditional Medicine Research (ISSN 2413-3973) will get the first Impact Factor in 2023. You are welcome to pay attention to the journal and submit manuscripts.Attached are some papers published in Traditional Medicine Research, which are related to your research field. You are always welcome to read and to share the articles and encourage you to submit your manuscripts to us through the following channels: www.tmrjournals.com/tmr <br><br>";
// foreach($articles as $v){
// $tt .= "<a href='https://www.tmrjournals.com/article.html?J_num=1&a_id=".$v['article_id']."'>".$v['title']."</a><br>";
// $tt .= "Traditional Medicine Research. ".$v['stage_year']." ".$v['stage_vol']."(".$v['stage_no'].")<br>";
// $tt .= "<a href='https://www.tmrjournals.com/public/articlePDF/".$v['file_pdf']."'>Download pdf</a><br><br><br>";
// }
// $maidata['email'] = $data['email'];
// $maidata['title'] = "Traditional Medicine Research will get the first Impact Factor (WOS) in 2023";
// $maidata['content'] = $tt;
// $maidata['tmail'] = 'publicrelations@tmrjournals.com';
// $maidata['tpassword'] = 'pRWU999999';
// echo sendEmail($maidata['email'],$maidata['title'],$maidata['title'],$maidata['content'],$maidata['tmail'],$maidata['tpassword']);
// // Queue::push('app\api\job\mail@fire', $maidata, "mail");
// }
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,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UmVhZHlxyWU8AAADI2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDNBODgyQzU3MUM4MTFFQkE4MjRBNTM0MTVGNUZGNzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDNBODgyQzY3MUM4MTFFQkE4MjRBNTM0MTVGNUZGNzMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowM0E4ODJDMzcxQzgxMUVCQTgyNEE1MzQxNUY1RkY3MyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowM0E4ODJDNDcxQzgxMUVCQTgyNEE1MzQxNUY1RkY3MyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/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']);
}
}
/**
* 添加分期应对投稿系统
*/
public function addStageForTG(){
$data = $this->request->post();
$journal_info = $this->journal_obj->where('issn',$data['issn'])->find();
$insert_data['journal_id'] = $journal_info['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]]);
}
/**
* 获取stages通过issn号
*/
public function getStageByISSN()
{
$data = $this->request->post();
$rule = new Validate([
'issn' => 'require'
]);
if (!$rule->check($data)) {
return jsonError($rule->getError());
}
$journal_info = $this->journal_obj->where('issn',$data['issn'])->find();
$stages = $this->journal_stage_obj->where('journal_id',$journal_info['journal_id'])->where('state',0)->order('journal_stage_id desc')->select();
$re['stages'] = $stages;
return jsonSuccess($re);
}
/**
* 获取分期详情
*/
public function getStageDetail(){
$data = $this->request->post();
$rule = new Validate([
'journal_stage_id'=>'require|number'
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$stage = $this->journal_stage_obj->where('journal_stage_id',$data['journal_stage_id'])->find();
$re['stage'] = $stage;
return jsonSuccess($re);
}
/**
* @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']);
}
}
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 .= '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,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UmVhZHlxyWU8AAADI2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDNBODgyQzU3MUM4MTFFQkE4MjRBNTM0MTVGNUZGNzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDNBODgyQzY3MUM4MTFFQkE4MjRBNTM0MTVGNUZGNzMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowM0E4ODJDMzcxQzgxMUVCQTgyNEE1MzQxNUY1RkY3MyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowM0E4ODJDNDcxQzgxMUVCQTgyNEE1MzQxNUY1RkY3MyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/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()]);
}
}
}
}