Files
OA/app/disk/controller/Api.php
T
2026-07-23 09:40:36 +08:00

162 lines
4.7 KiB
PHP

<?php
/**
+-----------------------------------------------------------------------------------------------
* GouGuOPEN [ 左手研发,右手开源,未来可期!]
+-----------------------------------------------------------------------------------------------
* @Copyright (c) 2021~2024 http://www.gouguoa.com All rights reserved.
+-----------------------------------------------------------------------------------------------
* @Licensed 勾股OA,开源且可免费使用,但并不是自由软件,未经授权许可不能去除勾股OA的相关版权信息
+-----------------------------------------------------------------------------------------------
* @Author 勾股工作室 <hdm58@qq.com>
+-----------------------------------------------------------------------------------------------
*/
declare (strict_types = 1);
namespace app\disk\controller;
use app\api\BaseController;
use think\facade\Db;
use think\facade\View;
class Api extends BaseController
{
//获取共享空间
public function get_group()
{
$where=[];
$whereOr=[];
$where[] = ['delete_time','=',0];
$uid=$this->uid;
if($uid>1){
$map1=[
['admin_id','=',$uid],
];
$map2=[
['', 'exp', Db::raw("FIND_IN_SET('{$uid}',director_uids)")],
];
$map3=[
['', 'exp', Db::raw("FIND_IN_SET('{$uid}',group_uids)")],
];
$whereOr =[$map1,$map2,$map3];
}
$list = Db::name('DiskGroup')
->where($where)
->where(function ($query) use($whereOr) {
if (!empty($whereOr)){
$query->whereOr($whereOr);
}
})
->select()->toArray();
return to_assign(0, '',$list);
}
/**
* 空间成员列表
*/
public function memberlist()
{
$param = get_params();
if (request()->isAjax()) {
$group_uids = Db::name('DiskGroup')->where('id',$param['id'])->value('group_uids');
$list['data']=[];
if(!empty($group_uids)){
$list['data'] = Db::name('Admin')
->field('a.*,p.title as position, d.title as department')
->alias('a')
->join('Position p','p.id = a.position_id')
->join('Department d','d.id = a.did')
->where([['a.id','in',$group_uids],['a.status','=',1]])
->select()->toArray();
}
table_assign(0,'', $list);
}
else{
$detail = Db::name('DiskGroup')->where('id',$param['id'])->find();
View::assign('detail', $detail);
return view();
}
}
/**
* 设置空间成员
*/
public function memberset()
{
$param = get_params();
if (request()->isAjax()) {
$uid=$this->uid;
$detail = Db::name('DiskGroup')->where('id',$param['id'])->find();
$array = array_map('trim', explode(',', $detail['director_uids']));
if($uid==1 || $detail['admin_id'] == $uid || in_array($uid, $array)){
$res = Db::name('DiskGroup')->where('id',$param['id'])->update(['group_uids'=>$param['group_uids']]);
if($res!==false){
return to_assign(0,'操作成功',['return_id'=>$param['id']]);
}
else{
return to_assign(1,'操作失败');
}
}else{
return to_assign(1,'只要超级管理员、创建人、空间管理人员才有权限操作');
}
}
else{
// 禁止访问
throw new \think\exception\HttpException(403, '禁止访问');
}
}
/**
* 空间管理员列表
*/
public function adminlist()
{
$param = get_params();
if (request()->isAjax()) {
$director_uids = Db::name('DiskGroup')->where('id',$param['id'])->value('director_uids');
$list['data']=[];
if(!empty($director_uids)){
$list['data'] = Db::name('Admin')
->field('a.*,p.title as position, d.title as department')
->alias('a')
->join('Position p','p.id = a.position_id')
->join('Department d','d.id = a.did')
->where([['a.id','in',$director_uids],['a.status','=',1]])
->select()->toArray();
}
table_assign(0,'', $list);
}
else{
$detail = Db::name('DiskGroup')->where('id',$param['id'])->find();
View::assign('detail', $detail);
return view();
}
}
/**
* 设置空间管理员
*/
public function adminset()
{
$param = get_params();
if (request()->isAjax()) {
$uid=$this->uid;
$detail = Db::name('DiskGroup')->where('id',$param['id'])->find();
if($uid==1 || $detail['admin_id'] == $uid){
$res = Db::name('DiskGroup')->where('id',$param['id'])->update(['director_uids'=>$param['director_uids']]);
if($res!==false){
return to_assign(0,'操作成功',['return_id'=>$param['id']]);
}
else{
return to_assign(1,'操作失败');
}
}else{
return to_assign(1,'只要超级管理员和创建人才有权限操作');
}
}
else{
// 禁止访问
throw new \think\exception\HttpException(403, '禁止访问');
}
}
}