This commit is contained in:
Administrator
2022-01-19 17:51:39 +08:00
parent a786f6f8e5
commit 30457f9d79
3 changed files with 352 additions and 125 deletions

View File

@@ -16,7 +16,8 @@ use think\Queue;
* @title 领域接口
* @description 领域接口
*/
class Major extends Controller{
class Major extends Controller {
protected $article_obj = '';
protected $user_obj = '';
protected $user_act_obj = '';
@@ -34,7 +35,8 @@ class Major extends Controller{
protected $chief_to_journal_obj = '';
protected $login_auto_obj = '';
protected $major_obj = "";
protected $major_to_journal_obj = '';
protected $sync_obj = '';
public function __construct(\think\Request $request = null) {
parent::__construct($request);
@@ -55,8 +57,10 @@ class Major extends Controller{
$this->chief_to_journal_obj = Db::name('chief_to_journal');
$this->login_auto_obj = Db::name('login_auto');
$this->major_obj = Db::name("major");
$this->major_to_journal_obj = Db::name('major_to_journal');
$this->sync_obj = Db::name("sync");
}
/**
* @title 添加领域
* @description 添加领域
@@ -70,27 +74,27 @@ class Major extends Controller{
* @param name:pid type:int require:1 desc:父级id(0代表顶级)
*
*/
public function addMajor(){
public function addMajor() {
$data = $this->request->post();
$insert['major_title'] = trim($data['major_title']);
$insert['pid'] = $data['pid'];
if(isset($data['nickname'])){
if (isset($data['nickname'])) {
$insert['nickname'] = trim($data['nickname']);
}
if(isset($data['major_sort'])){
if (isset($data['major_sort'])) {
$insert['major_sort'] = $data['major_sort'];
}
if($data['pid']==0){
if ($data['pid'] == 0) {
$insert['major_level'] = 1;
}else{
$p_major = $this->major_obj->where('major_id',$data['pid'])->find();
$insert['major_level'] = $p_major['major_level']+1;
} else {
$p_major = $this->major_obj->where('major_id', $data['pid'])->find();
$insert['major_level'] = $p_major['major_level'] + 1;
}
$insert['major_ctime'] = time();
$this->major_obj->insert($insert);
return jsonSuccess([]);
}
/**
* @title 编辑领域
* @description 编辑领域
@@ -104,19 +108,45 @@ class Major extends Controller{
* @param name:major_sort type:int require:0 desc:权重
*
*/
public function editMajor(){
public function editMajor() {
$data = $this->request->post();
$update['major_title'] = trim($data['major_title']);
if(isset($data['nickname'])){
if (isset($data['nickname'])) {
$update['nickname'] = trim($data['nickname']);
}
if(isset($data['major_sort'])){
if (isset($data['major_sort'])) {
$update['major_sort'] = $data['major_sort'];
}
$this->major_obj->where("major_id",$data['major_id'])->update($update);
$this->major_obj->where("major_id", $data['major_id'])->update($update);
return jsonSuccess([]);
}
/**
* @title 删除大池子领域
* @description 删除大池子领域
* @author wangjinlei
* @url /api/Major/delMajor
* @method POST
*
* @param name:major_id type:int require:1 desc:领域id
*
*/
public function delMajor() {
$data = $this->request->post();
//判断是否有子集
$check_child = $this->major_obj->where('pid', $data['major_id'])->where('major_state', 0)->select();
if ($check_child) {
return jsonError("存在子集不能删除");
}
//判断是否存在引用
$check_journal = $this->major_to_journal_obj->where('major_id', $data['major_id'])->where("mtj_state", 0)->select();
if ($check_journal) {
return jsonError("期刊存在引用,不能删除");
}
$this->major_obj->where("major_id", $data['major_id'])->update(['major_state' => 1]);
return jsonSuccess([]);
}
/**
* @title 获取领域树
* @description 获取领域树
@@ -126,20 +156,20 @@ class Major extends Controller{
*
* @return majors:领域树
*/
public function getMajorList(){
public function getMajorList() {
//查询顶级
$list = $this->major_obj->where('pid',0)->where('major_state',0)->order('major_sort desc')->select();
foreach ($list as $k => $v){
$list = $this->major_obj->where('pid', 0)->where('major_state', 0)->order('major_sort desc')->select();
foreach ($list as $k => $v) {
$cache_child = $this->getMajorChild($v);
if($cache_child!=null){
if ($cache_child != null) {
$list[$k]['children'] = $cache_child;
}
}
$re['majors'] = $list;
return jsonSuccess($re);
}
/**
* @title 添加期刊领域
* @description 添加期刊领域
@@ -148,30 +178,204 @@ class Major extends Controller{
* @method POST
*
* @param name:major_id type:int require:1 desc:领域id
* @param name:jou $name Description
* @param name:journal_issn type:string require:1 desc:期刊issn
*
* @return majors:领域树
*/
public function addJournalMajor(){
public function addJournalMajor() {
$data = $this->request->post();
//判断major父级是否存在
$major_info = $this->major_obj->where('major_id', $data['major_id'])->where("major_state", 0)->find();
$check_major = $this->major_to_journal_obj->where('major_id', $major_info['pid'])->where('journal_issn',trim($data['journal_issn']))->where('mtj_state', 0)->find();
if ($major_info['pid'] != 0 && $check_major == null) {
return jsonError("父级必须存在");
}
//判断是否重复添加
$check = $this->major_to_journal_obj->where('major_id', $data['major_id'])->where('journal_issn', trim($data['journal_issn']))->where('mtj_state', 0)->find();
if ($check) {
return jsonError("重复添加");
}
$has = $this->major_to_journal_obj->where('major_id', $data['major_id'])->where('journal_issn', trim($data['journal_issn']))->where('mtj_state', 1)->find();
if ($has) {
$this->major_to_journal_obj->where('major_id', $data['major_id'])->where('journal_issn', trim($data['journal_issn']))->where('mtj_state', 1)->update(['mtj_state' => 0]);
} else {
$insert['major_id'] = $data['major_id'];
$insert['journal_issn'] = trim($data['journal_issn']);
$insert['mtj_ctime'] = time();
$this->major_to_journal_obj->insert($insert);
}
return jsonSuccess([]);
}
/**
* @title 删除期刊领域
* @description 删除期刊领域
* @author wangjinlei
* @url /api/Major/delJournalMajor
* @method POST
*
* @param name:major_id type:int require:1 desc:领域id
* @param name:journal_issn type:string require:1 desc:期刊issn
*
*/
public function delJournalMajor() {
$data = $this->request->post();
//判断是否有子集
$check = $this->major_to_journal_obj
->join("t_major","t_major.major_id = t_major_to_journal.major_id","left")
->where("t_major_to_journal.journal_issn", trim($data['journal_issn']))
->where("t_major_to_journal.mtj_state",0)
->where("t_major.pid",$data['major_id'])
->select();
if($check){
return jsonError("存在子集不能删除");
}
$this->major_to_journal_obj->where('major_id', $data['major_id'])->where('journal_issn', $data['journal_issn'])->update(['mtj_state'=> 1]);
return jsonSuccess([]);
}
/**
* @title 获取期刊领域树
* @description 获取期刊领域树
* @author wangjinlei
* @url /api/Major/getJournalMajorList
* @method POST
*
* @param name:journal_issn type:string require:1 desc:期刊issn号
*
* @return majors:领域信息#
*/
public function getJournalMajorList() {
$data = $this->request->post();
if (!isset($data['journal_issn'])) {
return jsonError("参数异常");
}
// $data['journal_issn'] = '2815-7125';
//获取主节点
$list = $this->major_to_journal_obj
->field('t_major.*')
->join("t_major", 't_major.major_id = t_major_to_journal.major_id', 'left')
->where("t_major_to_journal.journal_issn", trim($data['journal_issn']))
->where("t_major.pid", 0)
->where("t_major_to_journal.mtj_state", 0)
->select();
foreach ($list as $k => $v) {
$cache_child = $this->getJournalMajorChild($v, trim($data['journal_issn']));
if ($cache_child != null) {
$list[$k]['children'] = $cache_child;
}
}
$re['majors'] = $list;
return jsonSuccess($re);
}
/**
* @title 获取全部期刊
* @description 获取全部期刊
* @author wangjinlei
* @url /api/Major/getAllJournals
* @method POST
*
* @return journals:期刊信息#
*/
public function getAllJournals() {
$list = $this->journal_obj->where('state', 0)->select();
$re['journals'] = $list;
return jsonSuccess($re);
}
/**
* @title 同步大池子数据
* @description 同步大池子数据
* @author wangjinlei
* @url /api/Major/synchronization
* @method POST
*
*/
public function synchronization(){
$url = "http://journalapi.tmrjournals.com/public/index.php/master/Major/sync_all";
$url1 = "http://api.tmrjournals.cn/public/index.php/master/Major/sync_all";
$list = $this->major_obj->select();
myPost($url, ['majors'=> json_encode($list)]);
myPost($url1, ['majors'=> json_encode($list)]);
$this->sync_obj->where('akey',1)->update(['all_major'=> time()]);
return jsonSuccess([]);
}
/**
* @title 同步小池子数据
* @description 同步小池子数据
* @author wangjinlei
* @url /api/Major/synchronizationJournal
* @method POST
*
*/
public function synchronizationJournal(){
$url = "http://journalapi.tmrjournals.com/public/index.php/master/Major/sync_journal";
$url1 = "http://api.tmrjournals.cn/public/index.php/master/Major/sync_journal";
$list = $this->major_to_journal_obj->select();
myPost($url, ['majors'=> json_encode($list)]);
myPost($url1, ['majors'=> json_encode($list)]);
$this->sync_obj->where('akey',1)->update(['journal_major'=> time()]);
return jsonSuccess([]);
}
/**
* @title 获取大池子最后同步时间
* @description 获取大池子最后同步时间
* @author wangjinlei
* @url /api/Major/getLastSyncTime
* @method POST
*
* @return sync:同步时间记录#
*/
public function getLastSyncTime(){
$d = $this->sync_obj->where('akey',1)->find();
$re['sync'] = $d;
return jsonSuccess($re);
}
/**
* 获取领域子树
*/
private function getMajorChild($major){
$list = $this->major_obj->where('pid',$major['major_id'])->where('major_state',0)->order("major_sort desc")->select();
if($list == null){
private function getMajorChild($major) {
$list = $this->major_obj->where('pid', $major['major_id'])->where('major_state', 0)->order("major_sort desc")->select();
if ($list == null) {
return null;
}
foreach ($list as $k => $v){
foreach ($list as $k => $v) {
$cache_child = $this->getMajorChild($v);
if($cache_child!=null){
if ($cache_child != null) {
$list[$k]['children'] = $cache_child;
}
}
return $list;
}
/**
* 获取期刊领域树子集
* @param type $major
* @param type $issn
*/
private function getJournalMajorChild($major, $issn) {
$list = $this->major_to_journal_obj
->field("t_major.*")
->join("t_major", "t_major_to_journal.major_id=t_major.major_id", 'left')
->where("pid", $major['major_id'])
->where("t_major_to_journal.journal_issn", $issn)
->where("t_major_to_journal.mtj_state", 0)
->select();
foreach ($list as $k => $v) {
$cache_child = $this->getJournalMajorChild($v, $issn);
if ($cache_child != null) {
$list[$k]['children'] = $cache_child;
}
}
return $list;
}
}