Browse Source

细节优化

wufeng 2 years ago
parent
commit
d8805463e0

+ 24 - 6
app/admin/controller/Base.php

@@ -6,12 +6,15 @@ namespace app\admin\controller;
 
 use think\App;
 use think\facade\Db;
+use app\admin\model\DataGroup as DataGroupModel;
 
 class Base extends \app\BaseController
 {
     public  $post=[];
     public  $uid='';
     public  $uname='';
+    public  $roleid='';
+
     public function __construct(App $app)
     {
         parent::__construct($app);
@@ -36,9 +39,26 @@ class Base extends \app\BaseController
         if($uid==false || $uid['status']==0){
             return error_show(102,'账户已禁用');
         }
+        $this->roleid = $uid['roleid'];//权限id
     }
 
+    //用户数据权限检查
     public function  checkRole(){
+
+        if($this->roleid==1 || $this->roleid==33) return [];// 超级管理员(roleid==1)和最高领导(roleid==33)能看到所有人的数据
+
+        $data = get_group_share_uid($this->uid);
+        /**
+         * data[\app\admin\model\DataGroup::$type_全部] 0全部
+         * data[\app\admin\model\DataGroup::$type_可编辑] 1可编辑
+         * data[\app\admin\model\DataGroup::$type_只读] 2只读
+         */
+
+        if(!empty($data[DataGroupModel::$type_全部])) $data['write']=$data[DataGroupModel::$type_全部];//兼容以前的写法
+
+        return $data;
+
+        /**
         $uid = Db::name("user_role")->where(['uid'=>$this->uid,"is_del"=>0,"status"=>1])->find();
         if($uid==false){
             return [];
@@ -91,23 +111,21 @@ class Base extends \app\BaseController
                 }
             }
         }
-        /**
-         * 离职交接权限
-         */
+        //离职交接权限
         $resgin= Db::name("resign_info")->where([["hand_uid","=",$this->uid],["is_del","=",0],['status',"=",4]])
             ->column(['resign_uid']);
         if(!empty($resgin)){
             $action['write']= array_unique(array_merge($action['write'],$resgin));
         }
 
-        /**
-         * 超级管理员看到所有人的数据
-         */
+        // 超级管理员看到所有人的数据
         if($uid['roleid']==1 || $uid['roleid']==33){
             $action['write']=[];
         }
         $action['roleid']=$uid['roleid'];
         $action['action_conllect']=implode(",",array_unique(explode(",",$action['action_conllect'])));
         return $action;
+
+        */
     }
 }

+ 2 - 1
app/admin/controller/DataGroup.php

@@ -176,7 +176,8 @@ class DataGroup extends Base
             }
             if ($delete_data) Db::name('data_group_userid')
                 ->whereIn('id', $delete_data)
-                ->where(['is_del' => DataGroupModel::$delete_正常, 'data_group_id' => $delete_data])->update(['is_del' => DataGroupModel::$delete_删除]);
+                ->where(['is_del' => DataGroupModel::$delete_正常, 'data_group_id' => $param['id']])
+                ->update(['is_del' => DataGroupModel::$delete_删除]);
 
             if ($insert_data) Db::name('data_group_userid')->insertAll($insert_data);
 

+ 0 - 30
app/admin/controller/DataShare.php

@@ -210,35 +210,5 @@ class DataShare extends Base
 
     }
 
-    //获取被共享的菜单列表
-    public function getDataShareMenuList()
-    {
-
-        $group = Db::name('data_group_userid')
-            ->field('data_group_id')
-            ->where([
-                'is_del' => DataGroupModel::$delete_正常,
-                'status' => DataGroupModel::$status_启用,
-                'uid' => $this->uid,
-            ])->buildSql();
-
-        $menu_ids = Db::name('data_share')
-            ->field('menu_ids')
-            ->where([
-                'is_del' => DataShareModel::$delete_正常,
-                'status' => DataShareModel::$status_启用,
-            ])->where(function ($query) use ($group) {
-                return $query->where('uid', $this->uid)->whereOr('data_group_id in ' . $group);
-            })->buildSql();
-
-        $list = Db::name('admin_menu')
-            ->field('id,menu_name')
-            ->where('id IN ' . $menu_ids)
-            ->where('is_del', 0)
-            ->select()
-            ->toArray();
-
-        return app_show(0, '获取菜单成功', $list);
-    }
 
 }

+ 12 - 9
app/admin/controller/Goodup.php

@@ -4,6 +4,7 @@ namespace app\admin\controller;
 
 use app\admin\model\ActionLog;
 use app\admin\model\ChangeLog;
+use app\admin\model\DataGroup as DataGroupModel;
 use app\admin\model\ProcessOrder;
 use app\youzan\model\PlatformYouzan;
 use think\App;
@@ -116,11 +117,11 @@ class Goodup extends Base
         if($token==""){
             return error_show(101,'token不能为空');
         }
-        $apply_id =GetUserInfo($token);
-        if(empty($apply_id)||$apply_id['code']!=0){
-            return error_show(102,"申请人数据不存在");
-        }
-        $rm= isset($apply_id["data"]['id']) ?  $apply_id["data"]['id'] : "";
+//        $apply_id =GetUserInfo($token);
+//        if(empty($apply_id)||$apply_id['code']!=0){
+//            return error_show(102,"申请人数据不存在");
+//        }
+//        $rm= isset($apply_id["data"]['id']) ?  $apply_id["data"]['id'] : "";
 //        if($rm!=''){
 //            $useinfo = Db::name("user_role")->where(['uid'=>$rm,"status"=>1,"is_del"=>0])->find();
 //            if($useinfo==false){
@@ -132,13 +133,11 @@ class Goodup extends Base
 //            }
 //        }
         $role=$this->checkRole();
-        if(!empty($role['write'])){
-            $where[]=["gb.createrid","in",$role['write']];
-        }
+        if(!empty($role[DataGroupModel::$type_全部]))  $where[]=["gb.createrid","in",$role[DataGroupModel::$type_全部]];
+
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
         if ($company_name !== "") $where[] = ["gb.createrid", 'in', get_company_item_user_by_name($company_name)];
 
-
         $count = Db::name('good_basic')->alias('gb')->where($where)->count();
         $total = ceil($count / $size);
         $page = $page >= $total ? $total : $page;
@@ -185,6 +184,10 @@ class Goodup extends Base
 
             $value['has_account'] = (int)isset($account[$value['supplierNo']]);
 
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['createrid'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
             $data[] = $value;
         }
         return app_show(0,"获取成功",['list'=>$data,'count'=>$count]);

+ 2 - 0
app/admin/model/DataGroup.php

@@ -17,6 +17,8 @@ class DataGroup extends Model
     public static $delete_正常 = 0;//0未删除
     public static $delete_删除 = 1;//1删除
 
+    public static $type_全部 = 0;//全部(这个值不在数据表里体现,只在业务逻辑处理中作为配置项)
+
     public static $type_可编辑 = 1;//1可编辑
     public static $type_只读 = 2;//2只读
     public static $type_不共享 = 3;//3不共享

+ 1 - 2
app/admin/route/app.php

@@ -630,5 +630,4 @@ route::rule('addDataShare', 'admin/DataShare/addDataShare');//新建共享规则
 route::rule('getDataShareDetail', 'admin/DataShare/getDataShareDetail');//获取共享规则详情
 route::rule('editDataShare', 'admin/DataShare/editDataShare');//修改共享规则
 route::rule('deleteDataShare', 'admin/DataShare/deleteDataShare');//删除共享规则
-route::rule('statusDataShare', 'admin/DataShare/statusDataShare');//启/禁用共享规则
-route::rule('getDataShareMenuList','admin/DataShare/getDataShareMenuList');//获取被共享的菜单列表
+route::rule('statusDataShare', 'admin/DataShare/statusDataShare');//启/禁用共享规则

+ 14 - 3
app/common.php

@@ -5,6 +5,8 @@ use think\facade\Config;
 use think\facade\Db;
 use think\facade\Filesystem;
 use think\helper\Str;
+use app\admin\model\DataGroup as DataGroupModel;
+use app\admin\model\DataShare as DataShareModel;
 
 // 应用公共文件
 function app_show($code=0,$message="",$data=[]){
@@ -1221,7 +1223,6 @@ if (!function_exists('checkHasAccountBySupplierNos')) {
 if (!function_exists('get_group_share_uid')) {
     function get_group_share_uid(int $uid = 0, int $menu_id = 0)
     {
-
         //原始数据
         $data = [DataGroupModel::$type_可编辑 => [], DataGroupModel::$type_只读 => [], DataGroupModel::$type_不共享 => []];
 
@@ -1275,10 +1276,20 @@ if (!function_exists('get_group_share_uid')) {
             $data[$s['type']] = array_merge($data[$s['type']], [$s['source_uid']], $source_group_uid);
         }
 
+        //离职交接权限
+        $resign_uid = Db::name("resign_info")
+            ->where([["hand_uid", "=", $uid], ["is_del", "=", 0], ['status', "=", 4]])
+            ->order('resign_uid')
+            ->column('resign_uid');
+
+        if (!empty($resign_uid)) $data[DataGroupModel::$type_可编辑] = array_merge($data[DataGroupModel::$type_可编辑], $resign_uid);
+
         unset($data[DataGroupModel::$type_不共享]);
 
-        $data[0] = array_merge($data[DataGroupModel::$type_可编辑], $data[DataGroupModel::$type_只读]);
-        asort($data[0]);
+        $data[DataGroupModel::$type_全部] = array_merge($data[DataGroupModel::$type_可编辑], $data[DataGroupModel::$type_只读]);
+
+        sort($data[DataGroupModel::$type_全部]);
+
         return $data;
 
     }