wugg 8 months ago
parent
commit
f11afd5901

+ 155 - 1
app/admin/controller/UserGroup.php

@@ -4,10 +4,164 @@
 namespace app\admin\controller;
 
 
+use app\admin\model\DataGroupUserid;
 use think\App;
+use think\facade\Validate;
 class UserGroup extends Base{
     public function __construct(App $app) {
         parent::__construct($app);
-        $this->model=new \app\admin\model\UserGroup();
+        $this->model=new \app\admin\model\DataGroup();
+    }
+    //用户组列表
+    public function list(){
+        $param = $this->request->param(['page' => 1, 'size' => 10, 'status' => '', 'title' => '', 'uid' => '', 'type'
+        => '', 'supplierNo' => ''],"post","trim");
+        $where=[["is_del","=","0"]];
+        if($param['status']!='') $where[]=["status","=",$param['status']];
+        if($param['title']!='') $where[]=["title","like","%".$param['title']."%"];
+        if($param['uid']!='') $where[]=["id","in",function()use($param){
+           return DataGroupUserid::GroupIdByUid($param['uid']);
+        }];
+        if($param['type']!='') $where[]=["type","=",$param['type']];
+        $list= $this->model->with(["userGroup"=>["userInfo"]])->where($where)->order("id desc")->paginate
+        (["list_rows"=>$param["size"], "page"=>$param["page"]]);
+        foreach ($list->items() as &$item){
+            $item->nickname=array_column($item->userGroup->toArray(),"nickname");
+        }
+        return success("获取成功",["list"=>$list->items(),"count"=>$list->total()]);
+    }
+    /**
+     * @param title|用户组名称:require|max:255,
+     * @param type|共享类型:require|number|1,2,3,
+     * @param uids|组成员:require,
+     * @param remark|备注:max:255
+     * @return \think\response\Json
+     */
+    public function create(){
+        $param = $this->request->param(['title' => '', 'type' => '', 'uids'=>[],'remark'=>""],"post","trim");
+        $valid =Validate::rule([
+            "title|用户组名称"=>"require",
+            'type|共享类型'=>"require|number|1,2,3",
+            'uids|组成员'=>"require|array",
+            'remark|备注'=>"max:255"
+            ]);
+        if(!$valid->check($param)) return error($valid->getError());
+        $this->model->startTrans();
+        try{
+            $data=[
+                "title"=>$param['title'],
+                "type"=>$param['type'],
+                "remark"=>$param['remark'],
+                "createrid"=>$this->uid,
+                "creater"=>$this->uname,
+            ];
+           $create= $this->model->create($data);
+           if($create){
+               $dataGroupUserid=new DataGroupUserid();
+               $dataGroupUserid->saveAll(array_map(function($item)use($create){
+                   return ["data_group_id"=>$create->id,"uid"=>$item];
+               },$param['uids']));
+           }
+            $this->model->commit();
+        }catch (\Exception $e){
+                $this->model->rollback();
+                return error($e->getMessage());
+        }
+            return success("添加成功");
+    }
+    /**
+    * @param id|用户组id:require|number
+    * @return \think\Response|\think\response\Json|void
+    *
+    */
+    public function info(){
+        $id=$this->request->param("id","0","intval");
+        $info= $this->model->with(["userGroup"=>["userInfo"]])->findOrEmpty($id);
+        if($info->isEmpty()) return error("数据不存在");
+        return success("获取成功",$info);
+    }
+    /**
+     * @param id|用户组id:require|number
+     *                title|用户组名称:require|max:255,
+     *                type|共享类型:require|number|1,2,3,
+     *                uids|组成员:require,
+     *                remark|备注:max:255
+    * @return \think\Response|\think\response\Json|void
+    * @throws \think\exception\PDOException
+     */
+    public function save(){
+        $param = $this->request->param(['id' => '', 'title' => '', 'type' => '', 'uids'=>[],'remark'=>""],"post","trim");
+        $valid =Validate::rule([
+            "id|用户组id"=>"require|number|gt:0",
+            "title|用户组名称"=>"require",
+            'type|共享类型'=>"require|number|1,2,3",
+            'uids|组成员'=>"require|array",
+            'remark|备注'=>"max:255"
+        ]);
+       if(!$valid->check($param)) return error($valid->getError());
+       $info= $this->model->with(["userGroup"])->findOrEmpty($param['id']);
+       if($info->isEmpty()) return error("数据不存在");
+       $this->model->startTrans();
+       try{
+           $info->title=$param['title'];
+           $info->type=$param['type'];
+           $info->remark=$param['remark'];
+           if($info->save()){
+              $info->userGroup->where("uid","not in",$param['uids'])->save(["is_del"=>1]);
+              $add =array_diff($param['uids'],array_column($info->userGroup->toArray(),"uid"));
+               $dataGroupUserid=new DataGroupUserid();
+               if(!empty($add)) $dataGroupUserid->saveAll(array_map(function($item)use($info){
+                   return ["data_group_id"=>$info->id,"uid"=>$item];
+               },$add));
+           }
+           $this->model->commit();
+       }catch (\Exception $e){
+           $this->model->rollback();
+           return error($e->getMessage());
+       }
+       return success("保存成功");
+    }
+    /**
+     * @param id|用户组id:require|number
+     * @return \think\Response|\think\response\Json|void
+     * @throws \think\exception\PDOException
+     */
+    public function delete(){
+        $id=$this->request->param("id","0","intval");
+        $info= $this->model->with(["userGroup"])->findOrEmpty($id);
+        if($info->isEmpty()) return error("数据不存在");
+        $info->is_del=1;
+        if($info->save()){
+            $info->userGroup->save(["is_del"=>1]);
+        };
+        return success("删除成功");
+    }
+    /**
+     * @param id|用户组id:require|number
+     * @param status|状态:require|number|in:0,1
+     * @return \think\Response|\think\response\Json|void
+     * @throws \think\exception\PDOException
+     */
+    public function status(){
+        $param = $this->request->param(['id' => '', 'status' => ''],"post","intval");
+        $valid =Validate::rule([
+            "id|用户组id"=>"require|number|gt:0",
+            "status|状态"=>"require|number|in:0,1"
+        ]);
+        if(!$valid->check($param)) return error($valid->getError());
+        $info= $this->model->with(["userGroup"])->findOrEmpty($param['id']);
+        if($info->isEmpty()) return error("数据不存在");
+        $info->status=$param['status'];
+        if($info->save()){
+            $info->userGroup->save(["status"=>$param['status']]);
+        };
+        return success("修改成功");
+    }
+    /**
+     * @return \think\Response|\think\response\Json|void
+     */
+    public function getGroupAll(){
+        $list= $this->model->where("is_del",0)->order("id","desc")->select();
+        return success("获取成功",$list);
     }
 }

+ 17 - 1
app/admin/model/DataGroup.php

@@ -10,6 +10,19 @@ use think\Model;
  */
 class DataGroup extends Model
 {
+
+    protected $schema=[
+        'id' => 'integer',
+        'title' => 'string',
+        'type' => 'integer',
+        'remark' => 'string',
+        'status' => 'integer',
+        'is_del' => 'integer',
+        'addtime' => 'datetime',
+        'updatetime' => 'datetime',
+    ];
+    protected $createTime = 'addtime';
+    protected $updateTime = 'updatetime';
 	public static $status_on = 1;//状态:1启用
     public static $status_off = 0;//状态:0禁用
 
@@ -21,7 +34,10 @@ class DataGroup extends Model
     public static $type_write = 1;//1可编辑
     public static $type_read = 2;//2只读
     public static $type_noshare = 3;//3不共享
-    
+
+    public function userGroup(){
+        return $this->hasMany(DataGroupUserid::class,'data_group_id','id')->where(["is_del"=>0])->bind(["uid"]);
+    }
     public static function checkDataShare(int $uid = 0,int $level=2){
             $data = [0=>[],1 => [$uid], 2=> [$uid],3 => []];
             $groupid = DataGroupUserid::GroupIdByUid($uid);

+ 15 - 1
app/admin/model/DataGroupUserid.php

@@ -10,7 +10,21 @@ use think\Model;
  */
 class DataGroupUserid extends Model
 {
-	
+    protected $schema = [
+        'id' => 'integer',
+        'data_group_id' => 'integer',
+        'uid' => 'integer',
+        'status' => 'integer',
+        'addtime' => 'datetime',
+        'updatetime' => 'datetime',
+        'is_del' => 'integer'
+        ];
+    protected $createTime = 'addtime';
+    protected $updateTime = 'updatetime';
+    protected $visible=["id","data_group_id","uid",'status','nickname','mobile',];
+    public  function userInfo(){
+		return $this->belongsTo(\app\user\model\User::class,"uid","account_id")->bind(["nickname","mobile"]);
+	}
 	public static  function GroupIdByUid(int $uid):array{
 		return self::where(["uid"=>$uid,"is_del"=>0,"status"=>1])->column("data_group_id");
 	}

+ 8 - 7
app/admin/route/api.php

@@ -16,10 +16,11 @@ Route::rule('actionstatus', 'admin/Menu/statusMenuAction');
 Route::rule('actionlist', 'admin/Menu/menuActionList');
 Route::rule('actionlistcreate', 'admin/Action/create');
 Route::rule('actionlistdel', 'admin/Action/delete');
-//角色组
-Route::rule('grouplist', 'admin/Group/GroupList');
-Route::rule('groupall', 'admin/Group/GroupAll');
-Route::rule('groupinfo', 'admin/Group/GroupInfo');
-Route::rule('groupadd', 'admin/Group/GroupAdd');
-Route::rule('groupsave', 'admin/Group/GroupSave');
-Route::rule('groupstatus', 'admin/Group/GroupStatus');
+//用户组和数据共享
+route::rule('getDataGroupList', 'admin/UserGroup/list');//获取用户组列表
+route::rule('addDataGroup', 'admin/UserGroup/create');//添加用户组
+route::rule('getDataGroupDetail', 'admin/UserGroup/info');//获取用户组详情
+route::rule('editDataGroup', 'admin/UserGroup/save');//编辑用户组详情
+route::rule('deleteDataGroup', 'admin/UserGroup/delete');//删除用户组
+route::rule('statusDataGroup', 'admin/UserGroup/status');//启/禁用用户组
+route::rule('getDataGroupListAll', 'admin/UserGroup/getGroupAll');//获取用户组列表(全部)

+ 4 - 4
app/bug/controller/WorkRole.php

@@ -16,9 +16,9 @@ class WorkRole extends Base{
 	}
 	
 	public function create(){
-        $param = $this->request->param(["role_name"=>"","companyNo"=>"","level"=>"","work_id"=>"","action"=>[]],"post","trim");
+        $param = $this->request->param(["role_name"=>"","companyNo"=>"","level"=>"","work_id"=>"","belong"=>"","action"=>[]],"post","trim");
         $valid=Validate::rule([
-        	"role_name|角色名称"=>"require|max:255|unique:\app\bug\model\WorkRole,role_name^companyNo^belong",
+        	"role_name|角色名称"=>"require|max:255|unique:\app\bug\model\WorkRole,companyNo^belong",
         	"companyNo|业务公司"=>"max:255",
         	"level|等级"=>"require|number|in:1,2,3,4",
         	"work_id|岗位模板id"=>"require|number",
@@ -47,10 +47,10 @@ class WorkRole extends Base{
 	}
 	
 	public function save(){
-        $param = $this->request->param(["id"=>"",'role_name'=>'',"level"=>"",'companyNo'=>'','work_id'=>'','action'=>[]],'post','trim');
+        $param = $this->request->param(["id"=>"",'role_name'=>'',"level"=>"",'companyNo'=>'',"belong"=>"",'work_id'=>'','action'=>[]],'post','trim');
         $valid=Validate::rule([
         	'id|岗位角色id'=>'require|number|gt:0',
-        	'role_name|角色名称'=>'require|max:255|unique:\app\bug\model\WorkRole,role_name^companyNo^belong',
+        	'role_name|角色名称'=>'require|max:255|unique:\app\bug\model\WorkRole,companyNo^belong',
         	'companyNo|业务公司'=>'max:255',
         	'level|等级'=>'require|number|in:1,2,3,4',
         	'work_id|岗位模板id'=>'require|number',

+ 68 - 16
app/user/controller/AccountItem.php

@@ -4,7 +4,7 @@
 namespace app\user\controller;
 
 
-use think\App;
+use app\user\model\CompanyItem;use think\App;
 use think\facade\Validate;
 class AccountItem extends Base{
 	protected $noLogin=[];
@@ -12,7 +12,12 @@ class AccountItem extends Base{
 		parent::__construct($app);
 		$this->model=new \app\user\model\AccountItem();
 	}
-	
+	/**
+	* @param int $account_id 账户id
+	* @param int $itemid 部门id
+	* @param int $position 1:部门 2:主管部门
+	* @return \think\response\Json
+	 */
 	public function setItem(){
 		$param=$this->request->param(["account_id"=>"","itemid"=>"",'position'=>'1'],"post","trim");
 		$valid = Validate::rule([
@@ -21,21 +26,32 @@ class AccountItem extends Base{
 			]);
 		if($valid->check($param)==false) return error($valid->getError());
 		$info = $this->model->where(["account_id"=>$param['account_id']])->findOrEmpty();
-		if($param['position']==2){
-			$position=$this->model->where([['itemid',"=",$param['itemid']],['position','=',2],['account_id','<>',$param['account_id']],])
-			->findOrEmpty();
-			if($position->isEmpty()==false){
-				$position->position=1;
-				$position->save();
-			}
+		$this->model->startTrans();
+		try{
+		    if($param['position']==2){
+                $position=$this->model->where([['itemid','=',$param['itemid']],['position','=',2],['account_id','<>',$param['account_id']],])
+                ->findOrEmpty();
+                if($position->isEmpty()==false){
+                        $position->position=1;
+                        $position->save();
+                    }
+            }
+            $info->account_id = $param['account_id'];
+            $info->itemid = $param['itemid'];
+            $info->position = $param['position'];
+            $result= $info->save();
+            if($result==false) return error("部门设置失败");
+            $this->model->commit();
+		}catch(\Exception $e){
+		    $this->model->rollback();
+		    return error($e->getMessage());
 		}
-		$info->account_id = $param['account_id'];
-		$info->itemid = $param['itemid'];
-		$info->position = $param['position'];
-		$result= $info->save();
-		return $result ? success("部门设置成功"): error("部门设置失败");
+		return success("部门设置成功");
 	}
-	
+	/**
+    * @param int $account_id 账户id
+    * @return \think\Response|\think\response\Json|void
+     */
 	public function resetItem(){
 		$param=$this->request->param(['account_id'=>''],'post','trim');
 		$valid = Validate::rule([
@@ -47,5 +63,41 @@ class AccountItem extends Base{
 		$result= $info->delete();
 		return $result ? success('部门解除成功'): error('部门解除失败');
 	}
-	
+    /**
+    * @return \think\Response|\think\response\Json
+    * @throws \think\db\exception\DataNotFoundException
+    * @throws \think\db\exception\DbException
+    * @throws \think\db\exception\ModelNotFoundException
+     */
+	public function list(){
+		$param = $this->request->param(['pid' => '', 'name' => '', 'account_id' => '', 'companyNo' => ''], 'post', 'trim');
+		$condition = [["is_del","=",0]];
+		if($param['pid']!=='')$condition[]=['pid','=',$param['pid']];
+		if($param['name']!=='')$condition[]=['name','like','%'.$param['name'].'%'];
+		if($param['account_id']!=='')$condition[]=['account_id','=',$param['account_id']];
+		if($param['companyNo']!=='')$condition[]=['companyNo','like','%'.$param['companyNo'].'%'];
+        $depart = new CompanyItem();
+        $list = $depart->with(["companyInfo"])->where($condition)->order('id asc')->select();
+        $userwhere=[['is_del','=',0]];
+        if(!$list->isEmpty()){
+            $userwhere[]=['itemid', 'in', array_unique(array_column($list->toArray(),"pid"))];
+        }else{
+            $userwhere[]=['itemid', '=', $param['pid']??0];
+        }
+        $item= $this->model->with(['accountInfo'=>['userInfo']])->where($userwhere)->select();
+        return success("获取成功",['depart' => $list, 'item' => $item]);
+	}
+    /**
+    * @return \think\Response|\think\response\Json|void
+     */
+	public function getItem(){
+		$param = $this->request->param(['account_id' => ''], 'post', 'trim');
+		$valid = Validate::rule([
+			'account_id|账户id' => 'require|number|gt:0',
+			]);
+		if($valid->check($param)==false) return error($valid->getError());
+		$info = $this->model->with(['ItemName'])->where(['account_id'=>$param['account_id']])->findOrEmpty();
+		if($info->isEmpty())return error('未找到部门信息');
+		return success('获取成功',$info);
+	}
 }

+ 4 - 0
app/user/model/AccountItem.php

@@ -19,4 +19,8 @@ class AccountItem extends Base
     public function ItemName(){
         return $this->belongsTo(CompanyItem::class,"itemid")->bind(["depart_name"=>"name","depart_link"]);
     }
+
+     public function accountInfo(){
+        return $this->belongsTo(Account::class,'account_id')->bind(['nickname',"account_status"=>"status"]);
+    }
 }

+ 1 - 1
app/user/model/CompanyItem.php

@@ -22,7 +22,7 @@ class CompanyItem extends Base
     protected $updateTime='updatetime';
     protected $createTime='addtime';
     public function companyInfo(){
-    	return $this->belongsTo(CompanyInfo::class,"companyNo","companyNo")->bind(["companyName"=>"company_name"]);
+    	return $this->belongsTo(Headquarters::class,"code","companyNo")->bind(["companyName"=>"name"]);
     }
     
     public function getDepartLinkAttr($v){

+ 1 - 1
app/user/model/User.php

@@ -22,7 +22,7 @@ class User extends Base
         'addtime'       =>'datetime',//
         'updatetime'       =>'datetime',//
     ];
-   protected $updateTime='updatetime';
+    protected $updateTime='updatetime';
     protected $createTime='addtime';
     public function GetFieldDenyAttr($v){
     	return json_decode($v,true);