Api.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. /**
  3. +-----------------------------------------------------------------------------------------------
  4. * GouGuOPEN [ 左手研发,右手开源,未来可期!]
  5. +-----------------------------------------------------------------------------------------------
  6. * @Copyright (c) 2021~2024 http://www.gouguoa.com All rights reserved.
  7. +-----------------------------------------------------------------------------------------------
  8. * @Licensed 勾股OA,开源且可免费使用,但并不是自由软件,未经授权许可不能去除勾股OA的相关版权信息
  9. +-----------------------------------------------------------------------------------------------
  10. * @Author 勾股工作室 <hdm58@qq.com>
  11. +-----------------------------------------------------------------------------------------------
  12. */
  13. declare (strict_types = 1);
  14. namespace app\disk\controller;
  15. use app\api\BaseController;
  16. use think\facade\Db;
  17. use think\facade\View;
  18. class Api extends BaseController
  19. {
  20. //获取共享空间
  21. public function get_group()
  22. {
  23. $where=[];
  24. $whereOr=[];
  25. $where[] = ['delete_time','=',0];
  26. $uid=$this->uid;
  27. if($uid>1){
  28. $map1=[
  29. ['admin_id','=',$uid],
  30. ];
  31. $map2=[
  32. ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',director_uids)")],
  33. ];
  34. $map3=[
  35. ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',group_uids)")],
  36. ];
  37. $whereOr =[$map1,$map2,$map3];
  38. }
  39. $list = Db::name('DiskGroup')
  40. ->where($where)
  41. ->where(function ($query) use($whereOr) {
  42. if (!empty($whereOr)){
  43. $query->whereOr($whereOr);
  44. }
  45. })
  46. ->select()->toArray();
  47. return to_assign(0, '',$list);
  48. }
  49. /**
  50. * 空间成员列表
  51. */
  52. public function memberlist()
  53. {
  54. $param = get_params();
  55. if (request()->isAjax()) {
  56. $group_uids = Db::name('DiskGroup')->where('id',$param['id'])->value('group_uids');
  57. $list['data']=[];
  58. if(!empty($group_uids)){
  59. $list['data'] = Db::name('Admin')
  60. ->field('a.*,p.title as position, d.title as department')
  61. ->alias('a')
  62. ->join('Position p','p.id = a.position_id')
  63. ->join('Department d','d.id = a.did')
  64. ->where([['a.id','in',$group_uids],['a.status','=',1]])
  65. ->select()->toArray();
  66. }
  67. table_assign(0,'', $list);
  68. }
  69. else{
  70. $detail = Db::name('DiskGroup')->where('id',$param['id'])->find();
  71. View::assign('detail', $detail);
  72. return view();
  73. }
  74. }
  75. /**
  76. * 设置空间成员
  77. */
  78. public function memberset()
  79. {
  80. $param = get_params();
  81. if (request()->isAjax()) {
  82. $uid=$this->uid;
  83. $detail = Db::name('DiskGroup')->where('id',$param['id'])->find();
  84. $array = array_map('trim', explode(',', $detail['director_uids']));
  85. if($uid==1 || $detail['admin_id'] == $uid || in_array($uid, $array)){
  86. $res = Db::name('DiskGroup')->where('id',$param['id'])->update(['group_uids'=>$param['group_uids']]);
  87. if($res!==false){
  88. return to_assign(0,'操作成功',['return_id'=>$param['id']]);
  89. }
  90. else{
  91. return to_assign(1,'操作失败');
  92. }
  93. }else{
  94. return to_assign(1,'只要超级管理员、创建人、空间管理人员才有权限操作');
  95. }
  96. }
  97. else{
  98. // 禁止访问
  99. throw new \think\exception\HttpException(403, '禁止访问');
  100. }
  101. }
  102. /**
  103. * 空间管理员列表
  104. */
  105. public function adminlist()
  106. {
  107. $param = get_params();
  108. if (request()->isAjax()) {
  109. $director_uids = Db::name('DiskGroup')->where('id',$param['id'])->value('director_uids');
  110. $list['data']=[];
  111. if(!empty($director_uids)){
  112. $list['data'] = Db::name('Admin')
  113. ->field('a.*,p.title as position, d.title as department')
  114. ->alias('a')
  115. ->join('Position p','p.id = a.position_id')
  116. ->join('Department d','d.id = a.did')
  117. ->where([['a.id','in',$director_uids],['a.status','=',1]])
  118. ->select()->toArray();
  119. }
  120. table_assign(0,'', $list);
  121. }
  122. else{
  123. $detail = Db::name('DiskGroup')->where('id',$param['id'])->find();
  124. View::assign('detail', $detail);
  125. return view();
  126. }
  127. }
  128. /**
  129. * 设置空间管理员
  130. */
  131. public function adminset()
  132. {
  133. $param = get_params();
  134. if (request()->isAjax()) {
  135. $uid=$this->uid;
  136. $detail = Db::name('DiskGroup')->where('id',$param['id'])->find();
  137. if($uid==1 || $detail['admin_id'] == $uid){
  138. $res = Db::name('DiskGroup')->where('id',$param['id'])->update(['director_uids'=>$param['director_uids']]);
  139. if($res!==false){
  140. return to_assign(0,'操作成功',['return_id'=>$param['id']]);
  141. }
  142. else{
  143. return to_assign(1,'操作失败');
  144. }
  145. }else{
  146. return to_assign(1,'只要超级管理员和创建人才有权限操作');
  147. }
  148. }
  149. else{
  150. // 禁止访问
  151. throw new \think\exception\HttpException(403, '禁止访问');
  152. }
  153. }
  154. }