UserGroup.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\model\DataGroupUserid;
  4. use think\App;
  5. use think\facade\Validate;
  6. class UserGroup extends Base{
  7. public function __construct(App $app) {
  8. parent::__construct($app);
  9. $this->model=new \app\admin\model\DataGroup();
  10. }
  11. //用户组列表
  12. public function list(){
  13. $param = $this->request->param(['page' => 1, 'size' => 10, 'status' => '', 'title' => '', 'uid' => '', 'type'
  14. => '', 'supplierNo' => ''],"post","trim");
  15. $where=[["is_del","=","0"]];
  16. if($param['status']!=='') $where[]=["status","=",$param['status']];
  17. if($param['title']!='') $where[]=["title","like","%".$param['title']."%"];
  18. if($param['uid']!='') $where[]=["id","in",function()use($param){
  19. return DataGroupUserid::GroupIdByUid($param['uid']);
  20. }];
  21. if($param['type']!='') $where[]=["type","=",$param['type']];
  22. $list= $this->model->with(["userGroup"=>["userInfo"]])->where($where)->order("id desc")->paginate
  23. (["list_rows"=>$param["size"], "page"=>$param["page"]]);
  24. foreach ($list->items() as &$item){
  25. $item->nickname=array_column($item->userGroup->toArray(),"nickname");
  26. }
  27. return success("获取成功",["list"=>$list->items(),"count"=>$list->total()]);
  28. }
  29. /**
  30. * @param title|用户组名称:require|max:255,
  31. * @param type|共享类型:require|number|1,2,3,
  32. * @param uids|组成员:require,
  33. * @param remark|备注:max:255
  34. * @return \think\response\Json
  35. */
  36. public function create(){
  37. $param = $this->request->param(['title' => '', 'type' => '', 'uids'=>[],'remark'=>""],"post","trim");
  38. $valid =Validate::rule([
  39. "title|用户组名称"=>"require",
  40. 'type|共享类型'=>"require|number|in:1,2,3",
  41. 'uids|组成员'=>"require|array",
  42. 'remark|备注'=>"max:255"
  43. ]);
  44. if(!$valid->check($param)) return error($valid->getError());
  45. $this->model->startTrans();
  46. try{
  47. $data=[
  48. "title"=>$param['title'],
  49. "type"=>$param['type'],
  50. "remark"=>$param['remark'],
  51. "createrid"=>$this->uid,
  52. "creater"=>$this->uname,
  53. ];
  54. $create= $this->model->create($data);
  55. if($create){
  56. $dataGroupUserid=new DataGroupUserid();
  57. $dataGroupUserid->saveAll(array_map(function($item)use($create){
  58. return ["data_group_id"=>$create->id,"uid"=>$item];
  59. },$param['uids']));
  60. }
  61. $this->model->commit();
  62. }catch (\Exception $e){
  63. $this->model->rollback();
  64. return error($e->getMessage());
  65. }
  66. return success("添加成功");
  67. }
  68. /**
  69. * @param id|用户组id:require|number
  70. * @return \think\Response|\think\response\Json|void
  71. *
  72. */
  73. public function info(){
  74. $id=$this->request->param("id","0","intval");
  75. $info= $this->model->with(["userGroup"=>["userInfo"]])->findOrEmpty($id);
  76. if($info->isEmpty()) return error("数据不存在");
  77. return success("获取成功",$info);
  78. }
  79. /**
  80. * @param id|用户组id:require|number
  81. * @param title|用户组名称:require|max:255,
  82. * @param type|共享类型:require|number|1,2,3,
  83. * @param uids|组成员:require,
  84. * @param remark|备注:max:255
  85. * @return \think\Response|\think\response\Json|void
  86. * @throws \think\exception\PDOException
  87. */
  88. public function save(){
  89. $param = $this->request->param(['id' => '', 'title' => '', 'type' => '', 'uids'=>[],'remark'=>""],"post","trim");
  90. $valid =Validate::rule([
  91. "id|用户组id"=>"require|number|gt:0",
  92. "title|用户组名称"=>"require",
  93. 'type|共享类型'=>"require|number|in:1,2,3",
  94. 'uids|组成员'=>"require|array",
  95. 'remark|备注'=>"max:255"
  96. ]);
  97. if(!$valid->check($param)) return error($valid->getError());
  98. $info= $this->model->with(["userGroup"])->findOrEmpty($param['id']);
  99. if($info->isEmpty()) return error("数据不存在");
  100. $this->model->startTrans();
  101. try{
  102. $info->title=$param['title'];
  103. $info->type=$param['type'];
  104. $info->remark=$param['remark'];
  105. if($info->save()){
  106. $remove =array_diff(array_column($info->userGroup->toArray(),"uid"),$param['uids']);
  107. $dataGroupUserid=new DataGroupUserid();
  108. if(!empty($remove)) $dataGroupUserid->where(["data_group_id"=>$info->id,"uid"=>$remove])->delete();
  109. $add =array_diff($param['uids'],array_column($info->userGroup->toArray(),"uid"));
  110. if(!empty($add)) $dataGroupUserid->saveAll(array_map(function($item)use($info){
  111. return ["data_group_id"=>$info->id,"uid"=>$item];
  112. },$add));
  113. }
  114. $this->model->commit();
  115. }catch (\Exception $e){
  116. $this->model->rollback();
  117. return error($e->getMessage());
  118. }
  119. return success("保存成功");
  120. }
  121. /**
  122. * @param id|用户组id:require|number
  123. * @return \think\Response|\think\response\Json|void
  124. * @throws \think\exception\PDOException
  125. */
  126. public function delete(){
  127. $id=$this->request->param("id","0","intval");
  128. $info= $this->model->with(["userGroup"])->findOrEmpty($id);
  129. if($info->isEmpty()) return error("数据不存在");
  130. $info->is_del=1;
  131. if($info->save()){
  132. $info->userGroup->save(["is_del"=>1]);
  133. };
  134. return success("删除成功");
  135. }
  136. /**
  137. * @param id|用户组id:require|number
  138. * @param status|状态:require|number|in:0,1
  139. * @return \think\Response|\think\response\Json|void
  140. * @throws \think\exception\PDOException
  141. */
  142. public function status(){
  143. $param = $this->request->param(['id' => '', 'status' => ''],"post","intval");
  144. $valid =Validate::rule([
  145. "id|用户组id"=>"require|number|gt:0",
  146. "status|状态"=>"require|number|in:0,1"
  147. ]);
  148. if(!$valid->check($param)) return error($valid->getError());
  149. $info= $this->model->with(["userGroup"])->findOrEmpty($param['id']);
  150. if($info->isEmpty()) return error("数据不存在");
  151. $info->status=$param['status'];
  152. if($info->save()){
  153. $info->userGroup->save(["status"=>$param['status']]);
  154. };
  155. return success("修改成功");
  156. }
  157. /**
  158. * @return \think\Response|\think\response\Json|void
  159. */
  160. public function getGroupAll(){
  161. $list= $this->model->where("is_del",0)->order("id","desc")->select();
  162. return success("获取成功",$list);
  163. }
  164. }