Bläddra i källkod

feat:加入数据权限类型

lizhi 1 år sedan
förälder
incheckning
02bf48dbfd

+ 41 - 8
protected/components/Controller.php

@@ -14,6 +14,7 @@ class Controller extends CController
     public array $authIds = [];
     public array $companyIds = [];
     public array $schoolIds = [];
+    public int $authType = AUTH_TYPE_COMPANY_SCHOOL;
     private int $_userId = 0;
 
     /**
@@ -126,18 +127,36 @@ class Controller extends CController
         $key = 'user_auth_' . $this->_userId;
         $data = RedisInstance::getInstance()->get($key);
         if (!$data) {
-            $model = Useradmin::model()->findByPk($this->_userId);
-            $authIds = DB::getScalerWithCriteria(
-                'role',
-                DbCriteria::simpleCompare(['id' => $model->role_id])->setSelect('auth_ids')
-            );
-            $this->authIds = $authIds ? explode(',', $authIds) : [];
-            $this->companyIds = $model->company_ids ? explode(',', $model->company_ids) : [];
-            $this->schoolIds = $model->school_ids ? explode(',', $model->school_ids) : [];
+            $user = DB::getInfoWithCriteria('useradmin', DbCriteria::simpleCompare(['u.id' => $this->_userId])
+                ->setAlias('u')
+                ->setSelect('company_ids, school_ids, date_auth_type, auth_ids,cities')
+                ->setJoin('left join wx_role r ON r.id = u.role_id'));
+            if (!$user) {
+                throw new CHttpException(401, '用户不存在');
+            }
+            $this->authIds = $user['auth_ids'] ? explode(',', $user['auth_ids']) : [];
+            $this->authType = $user['date_auth_type'];
+            if ($this->authType == AUTH_TYPE_COMPANY_SCHOOL) {
+                $this->companyIds = $user['company_ids'] ? explode(',', $user['company_ids']) : [];
+                $this->schoolIds = $user['school_ids'] ? explode(',', $user['school_ids']) : [];
+            } elseif ($this->authType == AUTH_TYPE_CITY) {
+                $cities = array_filter(explode(',', $user['cities']));
+                if ($cities) {
+                    $this->companyIds = Helper::arrayColumn(DB::getListWithCriteria('company', DbCriteria::simpleCompare(['is_del' => 0, 'city' => $cities])->setSelect('id')), 'id') ?: [-9999];
+                    $this->schoolIds = Helper::arrayColumn(DB::getListWithCriteria('school', DbCriteria::simpleCompare(['is_del' => 0, 'city' => $cities])->setSelect('id')), 'id') ?: [-9999];
+                } else {
+                    $this->companyIds = [-9999];
+                    $this->schoolIds = [-9999];
+                }
+            } else {
+                $this->companyIds = [-1];
+                $this->schoolIds = [-1];
+            }
             $json = json_encode([
                 'authIds' => $this->authIds,
                 'companyIds' => $this->companyIds,
                 'schoolIds' => $this->schoolIds,
+                'authType' => $this->authType,
             ]);
             RedisInstance::getInstance()->set($key, $json, 86400);
         } else {
@@ -145,6 +164,7 @@ class Controller extends CController
             $this->authIds = $data['authIds'];
             $this->companyIds = $data['companyIds'];
             $this->schoolIds = $data['schoolIds'];
+            $this->authType = $data['authType']?? AUTH_TYPE_COMPANY_SCHOOL;
         }
         LewaimaiAdminPingtaiAuth::$authIds = $this->authIds;
     }
@@ -155,6 +175,19 @@ class Controller extends CController
         RedisInstance::getInstance()->delete('user_auth_' . $id);
     }
 
+    public function clearAuthByCity(string $city): void
+    {
+        // 清除缓存
+        $cri = DbCriteria::simpleCompare(['status' => 1])
+            ->setSelect('id')
+            ->addCondition("find_in_set('{$city}', cities)");
+        $users = DB::getListWithCriteria('useradmin', $cri)?:[];
+        Logger::errorMult('auth_change', $users);
+        foreach ($users['records'] as $user) {
+            $this->clearAuth($user['id']);
+        }
+    }
+
     public function getUserId()
     {
         return $this->_userId;

+ 5 - 2
protected/controllers/CompanyController.php

@@ -160,13 +160,14 @@ class CompanyController extends Controller
         if ($id > 0) {
             $cri->addCondition('id!=' . $id);
         }
+        $isEdit = $id > 0;
         if ($fid = DB::getScalerWithCriteria(self::$table, $cri)) {
             Helper::error('公司名称已存在 ' . $fid);
         }
         $this->dobuleCheck();
         $trans = \Yii::app()->db->beginTransaction();
         try {
-            if ($id) {
+            if ($isEdit) {
                 DB::updateById(self::$table, $data, $id);
                 DB::deleteByCondition('company_canteen_relation', ['company_id' => $id]);
             } else {
@@ -183,7 +184,6 @@ class CompanyController extends Controller
                         $this->getUserId()
                     );
                 }
-                $this->clearAuth();
             }
             $batchArr = [];
             foreach ($canteens as $canteen) {
@@ -199,6 +199,9 @@ class CompanyController extends Controller
             $trans->rollback();
             Helper::error($e->getMessage());
         }
+        if (!$isEdit && $data['city']) {
+            $this->clearAuthByCity($data['city']);
+        }
         Helper::ok();
     }
 

+ 6 - 1
protected/controllers/SchoolController.php

@@ -149,6 +149,7 @@ class SchoolController extends Controller
         if ($id > 0) {
             $cri->addCondition('id!=' . $id);
         }
+        $isEdit = $id > 0;
         if ($fid = DB::getScalerWithCriteria(self::$table, $cri)) {
             Helper::error('学校名称已存在 ' . $fid);
         }
@@ -167,7 +168,6 @@ class SchoolController extends Controller
                         ['school_ids' => trim($user['school_ids'].','.$id, ',')],
                         $this->getUserId()
                     );
-                    $this->clearAuth();
                 }
             }
             $trans->commit();
@@ -175,6 +175,11 @@ class SchoolController extends Controller
             $trans->rollback();
             Helper::error($e->getMessage());
         }
+
+        if (!$isEdit && $data['city']) {
+            $this->clearAuthByCity($data['city']);
+        }
+
         Helper::ok();
     }
 

+ 4 - 3
protected/controllers/SiteController.php

@@ -118,11 +118,12 @@ class SiteController extends Controller
         $newData = [];
         $data = file_get_contents(PROJECT_PATH . '/protected/runtime/city.json');
         foreach (json_decode($data, true) as $province) {
-            $newData[] = ['label' => $province['province'], 'value' => $province['province'], 'children' => array_map(function($city) {
-                return ['label' => $city['city'], 'value' => $city['city']];
-            }, $province['citys'])];
+            foreach ($province['citys'] as $city) {
+                $newData[] = $city['city'];
+            }
         }
         echo json_encode($newData, JSON_UNESCAPED_UNICODE);
+        \CVarDumper::dump(count($newData), 6, 1);die;
     }
 
     public function actionDefault()

+ 54 - 17
protected/controllers/UseradminController.php

@@ -37,7 +37,7 @@ class UseradminController extends Controller
         $name = Helper::getPostString('name');
         $name = $name ? '%' . $name : null;
         $cri = DbCriteria::simpleCompareWithPage(['name' => $name])
-            ->setSelect('id, name, auth_ids, descr, create_date, show_ids')
+            ->setSelect('id, name, auth_ids, descr, create_date, show_ids, date_auth_type')
             ->setOrder('id desc');
         $data = DB::getListWithCriteria('role', $cri);
         if (!empty($data['records'])) {
@@ -70,33 +70,49 @@ class UseradminController extends Controller
         $cri = DbCriteria::simpleCompareWithPage($filters)
             ->setAlias('u')
             ->setDebugUntil('234', '-1')
-            ->setSelect('u.id, u.username, r.name as role_name, u.status, u.role_id, u.sex, u.phone, u.create_date, u.avatar, u.update_date, u.company_ids, u.school_ids')
+            ->setSelect('u.id, u.username, r.date_auth_type, u.cities, r.name as role_name, u.status, u.role_id, u.sex, u.phone, u.create_date, u.avatar, u.update_date, u.company_ids, u.school_ids')
             ->setJoin('left join wx_role r on u.role_id = r.id')
             ->setOrder('id desc');
         $data = DB::getListWithCriteria('useradmin', $cri);
-        if (!empty($data['records'])) {
-            $schools = Helper::arrayColumn(
-                DB::getListWithCriteria('school', DbCriteria::simpleCompare([])->setSelect('id, name')),
-                'name',
-                'id'
-            );
-            $companys = Helper::arrayColumn(
-                DB::getListWithCriteria('company', DbCriteria::simpleCompare([])->setSelect('id, name')),
-                'name',
-                'id'
-            );
-            $data['records'] = array_map(function ($item) use ($schools, $companys) {
-                $item['avatar'] = Helper::getImageUrl($item['avatar']);
+        if (empty($data['records'])) {
+            Helper::ok([]);
+        }
+        $schools = Helper::arrayColumn(
+            DB::getListWithCriteria('school', DbCriteria::simpleCompare([])->setSelect('id, name')),
+            'name',
+            'id'
+        );
+        $companys = Helper::arrayColumn(
+            DB::getListWithCriteria('company', DbCriteria::simpleCompare([])->setSelect('id, name')),
+            'name',
+            'id'
+        );
+
+        foreach ($data['records'] as &$item) {
+            $item['avatar'] = Helper::getImageUrl($item['avatar']);
+            if ($item['date_auth_type'] == AUTH_TYPE_CITY) {
+                $item['company_ids'] = [];
+                $item['school_ids'] = [];
+                $item['company_names'] = [];
+                $item['school_names'] = [];
+                $item['cities'] = array_filter(explode(',', $item['cities']));
+            } elseif ($item['date_auth_type'] == AUTH_TYPE_ALL) {
+                $item['company_ids'] = [];
+                $item['school_ids'] = [];
+                $item['cities'] = ['全部'];
+                $item['company_names'] = ['全部'];
+                $item['school_names'] = ['全部'];
+            } else {
                 $item['company_ids'] = $item['company_ids'] ? array_map(function ($item) {return (int)$item;}, explode(',', $item['company_ids'])) : [];
                 $item['school_ids'] = $item['school_ids'] ? array_map(function ($item) {return (int)$item;}, explode(',', $item['school_ids'])) : [];
+                $item['cities'] = [];
                 $item['company_names'] = array_map(function ($item) use ($companys) {
                     if (isset($companys[$item])) return $companys[$item];
                 }, $item['company_ids']);
                 $item['school_names'] = array_map(function ($item) use ($schools) {
                     if (isset($schools[$item])) return $schools[$item];
                 }, $item['school_ids']);
-                return $item;
-            }, $data['records']);
+            }
         }
         Helper::ok($data);
     }
@@ -122,6 +138,25 @@ class UseradminController extends Controller
         Helper::ok();
     }
 
+    public function actionSaveDataAuth()
+    {
+        $id = Helper::getPostInt('id');
+        $authType = Helper::getPostInt('auth_type');
+        if ($id < 0 || !in_array($authType, [0, 1, 2])) {
+            Helper::error('参数错误');
+        }
+        $info = [
+            'date_auth_type' => $authType,
+        ];
+        DB::updateById('role', $info, $id);
+        $users = DB::getListWithCriteria('useradmin', DbCriteria::simpleCompare(['role_id' => $id])->setSelect('id'))?:[];
+        Logger::errorMult('auth_change', $users);
+        foreach ($users['records'] as $user) {
+            $this->clearAuth($user['id']);
+        }
+        Helper::ok();
+    }
+
     public function actionEditUser()
     {
         $id = Helper::getPostInt('id');
@@ -132,6 +167,7 @@ class UseradminController extends Controller
         $role_id = Helper::getPostInt('role_id');
         $company_ids = Helper::getArrParam($_POST, 'company_ids', 'array_int', []);
         $school_ids = Helper::getArrParam($_POST, 'school_ids', 'array_int', []);
+        $cities = Helper::getArrParam($_POST, 'cities', 'array_string', []);
         // username不能为空和重复
         if (!$username) {
             Helper::error('用户名不能为空');
@@ -151,6 +187,7 @@ class UseradminController extends Controller
             'role_id' => $role_id,
             'company_ids' => $company_ids ? implode(',', $company_ids) : '',
             'school_ids' => $school_ids ? implode(',', $school_ids) : '',
+            'cities' => $cities ? implode(',', $cities) : '',
         ];
         if (!$id) {
             // 新增用户

+ 1 - 0
protected/include/LewaimaiAdminPingtaiAuth.php

@@ -66,6 +66,7 @@ class LewaimaiAdminPingtaiAuth
             // ===================   用户及角色管理  =======================
             'useradmin/rolelist' => 110200, // 角色列表
             'useradmin/saveroleauth' => 110201, // 菜单权限
+            'useradmin/savedataauth' => 110201, // 数据权限
             'useradmin/editrole' => 110202, // 编辑角色
             'useradmin/deleterole' => 110203, // 删除角色
             'useradmin/userlist' => 110100, // 用户列表

+ 4 - 1376
protected/include/define.php

@@ -1,1377 +1,5 @@
 <?php
-
-//这个文件用来定义一些系统使用的常量
-//这两个是与调用api相关的变量
-define("LEWAIMAI_API_KEY", "C9B90DD1E5A8A4677CFD6C3A0B73B4F2");
-
-
-
-if (LEWAIMAI_DEBUG)
-{
-	define("WEIXINDOMAIN", "http://front.lewaimai.com.cn");
-}
-else
-{
-	define("WEIXINDOMAIN", "http://wap.lewaimai.com");
-}
-define("IMAGEDOMAIN", "https://img.lewaimai.com");
-define("LESHUA_WITHDRAW_KEY","05935359390351812408214627931960");
-define("LESHUA_WITHDRAW_UID","szlewaimai");
-define("LESHUA_WITHDRAW_URL","https://mobileykpay.yeahka.com:444/cgi-bin/lewaimaiwithdraw.cgi?");
-define("LESHUA_WITHDRAW_NOTIFY_ADDR","http://www.lewaimai.com/balance/withdrawnotify");
-define("LEKUAISONG_VALIDATE_WITHDRAW_URL","http://deliveryserver.lekuaisong.com/index.php?r=withdraw/validateorder&");
-define("LEKUAISONG_AFRESH_WITHDRAW_URL","http://deliveryserver.lekuaisong.com/index.php?r=withdraw/afreshorder");
-
-//乐刷进件
-define("LESHAU_AGENT_ID","10");
-define("LESHUA_AGENT_KEY","17B10781A8C5178870197906F71749D8");
-define("LESHUA_AGENT_URL","http://61.141.235.66:61000/cgi-bin/merchantitf.cgi");
-
-// api设置
-define("LWM_APPID", "lkdqr9kjs239b23ihsc723jki23d");
-define("LWM_APP_SECRET", "#$%unhi!!@sd$121sp");
-if (LEWAIMAI_DEBUG)
-{
-    define("API_BASE_URL", 'https://api-dev.lewaimai.com');
-}
-else
-{
-    define("API_BASE_URL", 'https://api.lewaimai.com');
-}
-
-//天下支付行业类别数组
-define("TXZF_BUSINESS_TYPE_ARR",json_encode(array(
-    '企业'=>array(
-        '生活/咨询服务'=>array(
-            '人才中介机构/招聘/猎头',
-            '职业社交/婚介/交友',
-            '网上生活服务平台',
-            '咨询/法律咨询/金融咨询等',
-            '家政/婚庆服务/摄影服务',
-            '印刷/维修服务/排版/刻板',
-            '丧葬行业',
-            '广告公司',
-            '会展服务/活动策划',
-            '办证/刻章',
-            '开锁工具',
-            '报社/出版社',
-            '电台/电视台',
-        ),
-		'通信'=>array(
-            '电信运营商',
-            '宽带收费',
-            '话费通讯',
-        ),
-		'金融'=>array(
-        '财经资讯',
-        '股票软件类',
-        ),
-		'平台商'=>array(
-        '平台商',
-        ),
-		'房地产'=>array(
-        '房产预售',
-        '房屋中介',
-        ),
-		'线下零售'=>array(
-        '超市',
-        '便利店',
-        '自动贩卖机',
-        '百货',
-        '其他综合零售',
-        ),
-		'电商/团购'=>array(
-        '团购',
-        '海淘',
-        '线上商超',
-        ),
-		'快递/货运服务'=>array(
-        '物流/快递公司',
-        ),
-		'境外'=>array(
-        '境外',
-        ),
-		'直销'=>array(
-        '直销业务',
-        ),
-		'众筹'=>array(
-        '众筹',
-        ),
-		'预付卡'=>array(
-        '单用途预付卡',
-        ),
-		'时尚'=>array(
-        '服饰类商城/服饰配件/箱包',
-        '礼品/鲜花/纪念品',
-        '户外/运动/健身器材/安防',
-        '乐器',
-        '手表/钟表/眼镜',
-        '黄金珠宝/钻石/玉石',
-        '饰品',
-        ),
-		'生活/家居'=>array(
-        '家居/建材/装饰/布艺类商城',
-        '家用电器',
-        '美妆/护肤/个人护理',
-        '计生用品',
-        '汽车/摩托/自行车/其他交通工具/配件/改装',
-        '工艺品/盆栽/室内装饰品',
-        ),
-		'餐饮/食品'=>array(
-        '普通食品',
-        '保健品/滋补品',
-        '餐饮',
-        ),
-		'数码'=>array(
-        '数码产品',
-        '办公设备',
-        ),
-		'母婴/玩具'=>array(
-        '母婴用品/儿童玩具',
-        '母婴类商城',
-        ),
-		'教育/培训'=>array(
-        '教育/培训/考试缴费/学费',
-        '私立院校',
-        ),
-		'票务'=>array(
-        '影票/演唱会/赛事等娱乐票务',
-        '火车票/船票/车票等交通票务',
-        ),
-		'票务'=>array(
-        '影票/演唱会/赛事等娱乐票务',
-        '火车票/船票/车票等交通票务',
-        ),
-		'机票/旅游'=>array(
-        '旅行社',
-        '旅游服务平台',
-        '航空公司',
-        '机票代理',
-        '旅馆/酒店/景区/度假区',
-        ),
-		'书籍/音像/文具'=>array(
-        '书籍/音像',
-        '文具',
-        ),
-		'收藏/宠物'=>array(
-        '宠物/宠物食品',
-        '非文物类收藏品',
-        '文物经营',
-        '文物拍卖',
-        '文物复制品销售/典当',
-        ),
-		'彩票'=>array(
-        '彩票',
-        ),
-		'保险'=>array(
-        '保险公司',
-        '保险代理公司',
-        '保险经纪公司',
-        '保险公估公司',
-        '保险兼业代理公司',
-        ),
-		'公益'=>array(
-        '公益',
-        ),
-		'网络虚拟服务'=>array(
-        '门户/资讯/论坛',
-        '视频/网络小说/在线图书/音乐',
-        '域名/建站/主机/代码',
-        '搜索引擎/网络广告/网络推广/视频制作',
-        '游戏/点卡/金币',
-        ),
-		'软件'=>array(
-        '软件',
-        ),
-		'机械/电子'=>array(
-        '保健器械',
-        '医疗器械',
-        '电子元器件/仪器仪表/机械设备及配件',
-        ),
-		'苗木/绿化'=>array(
-            '苗木种植',
-            '园林绿化',
-            '化肥/农用药剂等',
-        ),
-		'装饰'=>array(
-         '室内装饰设计服务',
-        ),
-		'娱乐/健身服务'=>array(
-            '美容/健身类会所',
-            '俱乐部/高尔夫球场/休闲会所',
-            '游艺厅/KTV/网吧',
-        ),
-		'其他生活缴费'=>array(
-            '有线电视缴费',
-            '停车场',
-            '物业管理费',
-            '城市交通卡缴费',
-            '其他生活缴费',
-        ),
-		'医疗'=>array(
-            '药品',
-            '保健信息咨询/心理咨询/体检卡',
-            '私立/民营医院/诊所',
-            '挂号平台',
-            '亲子鉴定/催眠',
-            '中草药原材料',
-        ),
-		'交通运输服务类'=>array(
-            '铁路货物运输',
-            '道路运输',
-            '水路运输',
-            '海运',
-            '港口经营港口理货',
-            '航空运输',
-            '租车',
-        ),
-		'数字娱乐'=>array(
-            '企业-数字娱乐',
-            '彩铃',
-        ),
-		'公共事业缴费'=>array(
-            '水电煤缴费/交通罚款等生活缴费',
-        ),
-		'其他'=>array(
-            '其他行业',
-        ),
-	),
-	'个体工商户'=>array(
-    '生活/咨询服务'=>array(
-        '人才中介机构/招聘/猎头',
-        '职业社交/婚介/交友',
-        '咨询/法律咨询/金融咨询等',
-        '家政/婚庆服务/摄影服务',
-        '印刷/维修服务/排版/刻板',
-        '丧葬行业',
-        '广告公司',
-        '会展服务/活动策划',
-        '办证/刻章',
-        '开锁工具',
-    ),
-    '线下零售'=>array(
-        '其他综合零售',
-        '便利店',
-    ),
-    '交通运输服务类'=>array(
-        '租车',
-        '铁路货物运输',
-        '道路运输',
-        '水路运输',
-        '海运',
-        '港口经营港口理货',
-        '航空运输',
-    ),
-    '房地产'=>array(
-        '房屋中介',
-    ),
-    '通信'=>array(
-        '宽带收费',
-        '话费通讯',
-    ),
-    '时尚'=>array(
-        '服饰类商城/服饰配件/箱包',
-        '礼品/鲜花/纪念品',
-        '户外/运动/健身器材/安防',
-        '乐器',
-        '手表/钟表/眼镜',
-        '黄金珠宝/钻石/玉石',
-        '饰品',
-    ),
-    '金融'=>array(
-        '财经资讯',
-        '股票软件类',
-    ),
-    '生活/家居'=>array(
-        '家居/建材/装饰/布艺类商城',
-        '家用电器',
-        '计生用品',
-        '美妆/护肤/个人护理',
-        '工艺品/盆栽/室内装饰品',
-        '汽车/摩托/自行车/其他交通工具/配件/改装',
-    ),
-    '餐饮/食品'=>array(
-        '普通食品',
-        '保健品/滋补品',
-        '餐饮',
-    ),
-    '数码'=>array(
-        '数码产品',
-        '办公设备',
-    ),
-    '母婴/玩具'=>array(
-        '母婴用品/儿童玩具',
-        '母婴类商城',
-    ),
-    '教育/培训'=>array(
-        '教育/培训/考试缴费/学费',
-        '私立院校',
-    ),
-    '票务'=>array(
-        '影票/演唱会/赛事等娱乐票务',
-        '火车票/船票/车票等交通票务',
-    ),
-    '机票/旅游'=>array(
-        '旅行社',
-        '机票代理',
-        '旅馆/酒店/景区/度假区',
-    ),
-    '书籍/音像/文具'=>array(
-        '书籍/音像',
-        '文具',
-    ),
-    '收藏/宠物'=>array(
-        '宠物/宠物食品',
-        '非文物类收藏品',
-        '文物经营',
-        '文物拍卖',
-        '文物复制品销售/典当',
-    ),
-    '保险'=>array(
-        '保险公司',
-        '保险代理公司',
-        '保险经纪公司',
-        '保险公估公司',
-        '保险兼业代理公司',
-    ),
-    '网络虚拟服务'=>array(
-        '门户/资讯/论坛',
-        '视频/网络小说/在线图书/音乐',
-        '域名/建站/主机/代码',
-        '搜索引擎/网络广告/网络推广/视频制作',
-        '游戏/点卡/金币',
-    ),
-    '软件'=>array(
-        '软件',
-    ),
-    '数字娱乐'=>array(
-        '彩铃',
-    ),
-    '机械/电子'=>array(
-        '保健器械',
-        '医疗器械',
-        '电子元器件/仪器仪表/机械设备及配件',
-    ),
-    '苗木/绿化'=>array(
-        '苗木种植',
-        '园林绿化',
-    ),
-    '装饰'=>array(
-        '室内装饰设计服务',
-    ),
-    '娱乐/健身服务'=>array(
-        '美容/健身类会所',
-        '俱乐部/高尔夫球场/休闲会所',
-        '游艺厅/KTV/网吧',
-    ),
-    '其他生活缴费'=>array(
-        '有线电视缴费',
-        '停车场',
-        '物业管理费',
-        '城市交通卡缴费',
-        '其他生活缴费',
-    ),
-    '医疗'=>array(
-        '药品',
-        '保健信息咨询/心理咨询/体检卡',
-        '私立/民营医院/诊所',
-        '挂号平台',
-        '亲子鉴定/催眠',
-        '中草药原材料',
-    ),
-    '彩票'=>array(
-        '彩票',
-    ),
-    '公共事业缴费'=>array(
-        '水电煤缴费/交通罚款等生活缴费',
-    ),
-    '快递/货运服务'=>array(
-        '物流/快递公司',
-    ),
-    '其他'=>array(
-        '其他行业',
-    ),
-
-),
-
-	'事业单位'=>array(
-    '交通运输服务类'=>array(
-        '铁路货物运输',
-        '道路运输',
-        '水路运输',
-        '海运',
-        '港口经营港口理货',
-        '航空运输',
-        '租车',
-    ),
-    '生活/咨询服务'=>array(
-        '报社/出版社',
-        '电台/电视台',
-    ),
-    '票务'=>array(
-        '火车票/船票/车票等交通票务',
-    ),
-    '机票/旅游'=>array(
-        '旅游服务平台',
-        '旅馆/酒店/景区/度假区',
-    ),
-    '教育/培训'=>array(
-        '公立院校',
-    ),
-    '公共事业缴费'=>array(
-        '政府机构',
-        '事业单位',
-        '水电煤缴费/交通罚款等生活缴费',
-    ),
-    '医疗'=>array(
-        '公立医院',
-        '药品',
-        '保健信息咨询/心理咨询/体检卡',
-        '挂号平台',
-    ),
-    '快递/货运服务'=>array(
-        '物流/快递公司',
-    ),
-    '其他生活缴费'=>array(
-        '有线电视缴费',
-        '停车场',
-        '物业管理费',
-        '城市交通卡缴费',
-        '其他生活缴费',
-    ),
-)
-)));
-
-//天下支付微信QQ经营类目
-define("TXZF_WEIXIN_MANAGE_TYPE_ARR",json_encode(
-    array(
-        '企业'=>array(
-            '电商/团购'=>array(
-                '203'=>'线上商超',
-                '2'=>'团购',
-                '3'=>'海淘',
-            ),
-            '线下零售'=>array(
-                '204'=>'超市',
-                '205'=>'便利店',
-                '206'=>'自动贩卖机',
-                '207'=>'百货',
-                '208'=>'其他综合零售',
-            ),
-            '生活/家居'=>array(
-                '6'=>'户外/运动/健身器材/安防',
-                '9'=>'黄金珠宝/钻石/玉石',
-                '19'=>'母婴用品/儿童玩具',
-                '266'=>'家装建材/家居家纺',
-                '267'=>'美妆/护肤',
-                '268'=>'鲜花/盆栽/室内装饰品',
-                '269'=>'交通工具/配件/改装',
-                '271'=>'服饰/箱包/饰品',
-                '272'=>'钟表/眼镜',
-                '284'=>'宠物/宠物食品/饲料',
-                '310'=>'数码家电/办公设备',
-                '315'=>'书籍/音像/文具/乐器',
-                '13'=>'计生用品',
-            ),
-            '餐饮/食品'=>array(
-                '270'=>'食品',
-                '90'=>'餐饮',
-            ),
-            '生活/咨询服务'=>array(
-                '273'=>'婚庆/摄影',
-                '289'=>'装饰/设计',
-                '311'=>'家政/维修服务',
-                '312'=>'广告/会展/活动策划',
-                '42'=>'咨询/法律咨询/金融咨询等',
-                '93'=>'人才中介机构/招聘/猎头',
-                '94'=>'职业社交/婚介/交友',
-                '95'=>'网上生活服务平台',
-            ),
-            '票务/旅游'=>array(
-                '274'=>'机票/机票代理',
-                '275'=>'旅馆/酒店/度假区',
-                '281'=>'娱乐票务',
-                '283'=>'交通票务',
-                '313'=>'景区/宗教',
-                '23'=>'旅行社',
-                '24'=>'旅游服务平台',
-            ),
-            '网络虚拟服务'=>array(
-                '276'=>'在线图书/视频/音乐',
-                '277'=>'软件/建站/技术开发',
-                '278'=>'网络推广/网络广告',
-                '279'=>'游戏',
-                '104'=>'门户/资讯/论坛',
-            ),
-            '教育/培训'=>array(
-                '52'=>'教育/培训/考试缴费/学费',
-                '53'=>'私立院校',
-            ),
-            '娱乐/健身服务'=>array(
-                '280'=>'俱乐部/休闲会所',
-                '54'=>'美容/健身类会所',
-                '56'=>'游艺厅/KTV/网吧',
-            ),
-            '房地产'=>array(
-                '316'=>'房地产',
-            ),
-            '医疗'=>array(
-                '282'=>'保健信息咨询平台',
-                '314'=>'保健器械/医疗器械/非处方药品',
-                '66'=>'私立/民营医院/诊所',
-                '67'=>'挂号平台',
-            ),
-            '收藏/拍卖'=>array(
-                '285'=>'文物经营/文物复制品销售',
-                '325'=>'拍卖/典当',
-                '31'=>'非文物类收藏品',
-            ),
-            '苗木/绿化'=>array(
-                '317'=>'苗木种植/园林绿化',
-                '40'=>'化肥/农用药剂等',
-            ),
-            '交通运输服务类'=>array(
-                '70'=>'物流/快递公司',
-                '259'=>'加油',
-                '75'=>'港口经营港口理货',
-                '77'=>'租车',
-            ),
-            '生活缴费'=>array(
-                '57'=>'水电煤缴费/交通罚款等生活缴费',
-                '287'=>'停车缴费',
-                '288'=>'城市交通/高速收费',
-                '58'=>'有线电视缴费',
-                '60'=>'物业管理费',
-                '62'=>'其他生活缴费',
-            ),
-            '公益'=>array(
-                '103'=>'公益',
-            ),
-            '通信'=>array(
-                '80'=>'电信运营商',
-                '81'=>'宽带收费',
-                '92'=>'话费通讯',
-            ),
-            '金融'=>array(
-                '112'=>'众筹',
-                '318'=>'保险业务',
-                '96'=>'财经资讯',
-                '97'=>'股票软件类',
-            ),
-            '其他'=>array(
-                '111'=>'其他行业',
-            ),
-        ),
-        '个体工商户'=>array(
-            '餐饮/食品'=>array(
-                '292'=>'食品',
-                '153'=>'餐饮',
-            ),
-            '线下零售'=>array(
-                '209'=>'便利店',
-                '210'=>'其他综合零售',
-            ),
-            '生活/家居'=>array(
-                '116'=>'户外/运动/健身器材/安防',
-                '129'=>'母婴用品/儿童玩具',
-                '293'=>'家装建材/家居家纺',
-                '294'=>'美妆/护肤',
-                '295'=>'鲜花/盆栽/室内装饰品',
-                '296'=>'交通工具/配件/改装',
-                '297'=>'服饰/箱包/饰品',
-                '298'=>'钟表/眼镜',
-                '305'=>'宠物/宠物食品/饲料',
-                '319'=>'数码家电/办公设备',
-                '323'=>'书籍/音像/文具/乐器',
-                '123'=>'计生用品',
-            ),
-            '生活/咨询服务'=>array(
-                '299'=>'婚庆/摄影',
-                '306'=>'装饰/设计',
-                '320'=>'家政/维修服务',
-                '321'=>'广告/会展/活动策划',
-                '143'=>'咨询/法律咨询/金融咨询等',
-                '157'=>'职业社交/婚介/交友',
-            ),
-            '娱乐/健身服务'=>array(
-                '300'=>'俱乐部/休闲会所',
-                '148'=>'美容/健身类会所',
-                '149'=>'游艺厅/KTV/网吧',
-            ),
-            '票务/旅游'=>array(
-                '301'=>'旅馆/酒店/度假区',
-                '307'=>'娱乐票务',
-                '308'=>'交通票务',
-            ),
-            '网络虚拟服务'=>array(
-                '302'=>'软件/建站/技术开发',
-                '303'=>'网络推广/网络广告',
-                '304'=>'游戏',
-            ),
-            '教育/培训'=>array(
-                '147'=>'教育/培训/考试缴费/学费',
-            ),
-            '医疗'=>array(
-                '230'=>'私立/民营医院/诊所',
-                '322'=>'保健器械/医疗器械/非处方药品',
-            ),
-            '苗木/绿化'=>array(
-                '324'=>'苗木种植/园林绿化',
-            ),
-            '通信'=>array(
-                '155'=>'话费通讯',
-            ),
-            '生活缴费'=>array(
-                '309'=>'生活缴费',
-            ),
-            '金融'=>array(
-                '242'=>'财经资讯',
-            ),
-            '其他'=>array(
-                '158'=>'其他行业',
-            ),
-        ),
-        '事业单位'=>array(
-            '医疗'=>array(
-                '176'=>'公立医院',
-                '177'=>'挂号平台',
-            ),
-            '教育/培训'=>array(
-                '164'=>'公立院校',
-            ),
-            '其他生活缴费'=>array(
-                '165'=>'水电煤缴费/交通罚款等生活缴费',
-                '167'=>'事业单位',
-                '290'=>'停车缴费',
-                '291'=>'城市交通/高速收费',
-                '170'=>'物业管理费',
-                '172'=>'其他生活缴费',
-            ),
-        ),
-
-    )
-));
-
-//天下支付支付宝经营类目
-define("TXZF_ZHIFUBAO_MANAGE_TYPE_ARR",json_encode(
-    array(
-        '美食'=>array(
-            '中餐'=>array(
-                '2015050700000010'=>'川菜',
-                '2015050700000011'=>'湘菜',
-                '2015050700000012'=>'湖北菜',
-                '2015050700000013'=>'台湾菜',
-                '2015050700000014'=>'新疆菜',
-                '2015050700000015'=>'江浙菜',
-                '2015050700000016'=>'云南菜',
-                '2015050700000017'=>'贵州菜',
-                '2015050700000018'=>'西北菜',
-                '2015050700000019'=>'东北菜',
-                '2015050700000020'=>'香锅/烤鱼',
-                '2015050700000021'=>'海鲜',
-                '2015050700000022'=>'其它地方菜',
-                '2015052200000062'=>'粤菜',
-                '2016010600120962'=>'海南菜',
-                '2016031800152626'=>'鲁菜',
-                '2016031800154367'=>'徽菜',
-                '2016031800154368'=>'晋菜',
-                '2016031800155597'=>'豫菜',
-                '2016031800156722'=>'闽菜',
-                '2016031800158042'=>'上海本帮菜',
-                '2016031800159500'=>'淮扬菜',
-            ),
-            '火锅'=>array(
-                '2015050700000023'=>'麻辣烫/串串香',
-                '2015050700000024'=>'川味/重庆火锅',
-                '2015050700000025'=>'云南火锅',
-                '2015050700000026'=>'老北京涮羊肉',
-                '2015050700000027'=>'港式火锅',
-                '2015050700000028'=>'鱼火锅',
-                '2015050700000029'=>'羊蝎子',
-                '2015050700000030'=>'炭火锅',
-                '2015050700000031'=>'韩式火锅',
-                '2015050700000032'=>'豆捞',
-                '2015050700000033'=>'其它火锅',
-
-            ),
-            '烧烤'=>array(
-                '2015050700000048'=>'中式烧烤',
-                '2015050700000049'=>'拉美烧烤',
-                '2015050700000050'=>'日式烧烤',
-                '2015050700000051'=>'铁板烧',
-                '2015050700000052'=>'韩式烧烤',
-                '2015061690000026'=>'其它烧烤',
-
-            ),
-            '其他美食'=>array(
-                '2015050700000056'=>'自助餐',
-                '2015050700000057'=>'创意菜',
-                '2015050700000058'=>'西餐',
-                '2015050700000059'=>'日韩料理',
-                '2015050700000060'=>'东南亚菜',
-                '2015050700000061'=>'素食',
-                '2015061690000027'=>'其他餐饮美食',
-                '2016031800159501'=>'清真菜',
-                '2016031800160959'=>'茶餐厅',
-                '2016031800162476'=>'土菜/农家菜',
-                '2016070500193665'=>'采摘/农家乐',
-
-            ),
-            '汤/粥/煲/砂锅/炖菜'=>array(
-                '2015050700000053'=>'粥',
-                '2015050700000054'=>'汤',
-                '2015050700000055'=>'砂锅/煲类/炖菜',
-                '2015061690000025'=>'其它',
-
-            ),
-            '快餐'=>array(
-                '2015050700000038'=>'西式快餐',
-                '2015050700000039'=>'中式快餐',
-                '2015061690000030'=>'其它快餐',
-
-            ),
-            '休闲食品'=>array(
-                '2015050700000040'=>'零食',
-                '2015050700000041'=>'生鲜水果',
-                '2015061690000029'=>'其它休闲食品',
-                '2016062900190066'=>'美食特产',
-            ),
-            '小吃'=>array(
-                '2015050700000034'=>'熟食',
-                '2015050700000035'=>'面点',
-                '2015050700000036'=>'米粉/米线',
-                '2015050700000037'=>'其它小吃',
-            ),
-            '休闲茶饮'=>array(
-                '2015050700000042'=>'咖啡',
-                '2015050700000043'=>'奶茶',
-                '2015050700000045'=>'冰激凌',
-                '2015050700000047'=>'饮品/甜点',
-                '2015062600011157'=>'咖啡厅',
-                '2015091100061275'=>'酒吧',
-
-            ),
-            '烘焙糕点'=>array(
-                '2015050700000044'=>'蛋糕',
-                '2015050700000046'=>'面包',
-                '2015061690000028'=>'其它烘焙糕点',
-
-            ),
-        ),
-        '超市便利店'=>array(
-            '超市'=>array(
-                "2015091000058486"=>"/",
-            ),
-            '个人护理'=>array(
-                "2015091000056956"=>"/",
-            ),
-            '便利店'=>array(
-                "2015091000060134"=>"/",
-            ),
-            '烟酒杂货'=>array(
-                "2016062800188784"=>"/",
-            ),
-
-        ),
-        'K歌'=>array(
-            'KTV'=>array(
-                "2015090700042466"=>"量贩式KTV",
-                "2016042200000058"=>"会所型KTV",
-            ),
-            '录音棚'=>array(
-                "2016062900190067"=>"/",
-            ),
-        ),
-        '休闲娱乐'=>array(
-            '棋牌休闲'=>array(
-                "2015090700041394"=>"/",
-            ),
-            '中医养生'=>array(
-                "2015063000012448"=>"/",
-            ),
-            '足疗按摩'=>array(
-                "2015090700039570"=>"/",
-            ),
-            '洗浴/桑拿会所'=>array(
-                "2016012000122673"=>"/",
-            ),
-            '网吧网咖'=>array(
-                "2016012000124191"=>"/",
-            ),
-            '游乐游艺'=>array(
-                "2016012000126089"=>"/",
-            ),
-            '图书馆'=>array(
-                "2016012000127534"=>"/",
-            ),
-            '密室'=>array(
-                "2016012000128641"=>"/",
-            ),
-            '桌面游戏'=>array(
-                "2016012000129781"=>"/",
-            ),
-            '真人CS'=>array(
-                "2016012000130831"=>"/",
-            ),
-        ),
-        '美发/美容/美甲'=>array(
-            '美甲/手护'=>array(
-                "2015063000017354"=>"/",
-            ),
-            'SPA/美容/美体'=>array(
-                "2015063000019130"=>"/",
-            ),
-            '美容美发'=>array(
-                "2015101000066113"=>"/",
-            ),
-            '美容美甲'=>array(
-                "2015101000064159"=>"/",
-            ),
-            '美发美甲'=>array(
-                "2015101000067631"=>"/",
-            ),
-            '美发'=>array(
-                "2015063000015529"=>"/",
-            ),
-            '彩妆造型'=>array(
-                "2016062900190068"=>"/",
-            ),
-            '美睫'=>array(
-                "2016062900190069"=>"/",
-            ),
-            '产后塑形'=>array(
-                "2016062900190070"=>"/",
-            ),
-
-        ),
-        '运动健身'=>array(
-            '篮球场'=>array(
-                "2015110500074890"=>"/",
-            ),
-            '卡丁赛车'=>array(
-                "2015110500081946"=>"/",
-            ),
-            '舞蹈'=>array(
-                "2015110500083341"=>"/",
-            ),
-            '网球场'=>array(
-                "2015110500077463"=>"/",
-            ),
-            '乒乓球馆'=>array(
-                "2015110500077464"=>"/",
-            ),
-            '游泳馆'=>array(
-                "2015110500078657"=>"/",
-            ),
-            '羽毛球馆'=>array(
-                "2015110500073009"=>"/",
-            ),
-            '桌球馆'=>array(
-                "2015110500078658"=>"/",
-            ),
-            '瑜伽'=>array(
-                "2015110500078659"=>"/",
-            ),
-            '足球场'=>array(
-                "2015110500075901"=>"/",
-            ),
-            '武术场馆'=>array(
-                "2015110500085004"=>"/",
-            ),
-            '溜冰场'=>array(
-                "2016012900151604"=>"/",
-            ),
-            '保龄球馆'=>array(
-                "2016051600179926"=>"/",
-            ),
-            '壁球场'=>array(
-                "2016051600183429"=>"/",
-            ),
-            '排球场'=>array(
-                "2016051600181795"=>"/",
-            ),
-            '高尔夫球场'=>array(
-                "2016051600179925"=>"/",
-            ),
-            '体育场馆'=>array(
-                "2016051600178152"=>"/",
-            ),
-            '健身中心'=>array(
-                "2015110500080520"=>"/",
-            ),
-
-        ),
-        '宠物'=>array(
-            '宠物店'=>array(
-                "2016012900148581"=>"/",
-            ),
-            '宠物医院'=>array(
-                "2016012900149738"=>"/",
-            ),
-
-        ),
-        '结婚'=>array(
-            '婚庆公司'=>array(
-                "2016012900134880"=>"/",
-            ),
-            '婚礼策划'=>array(
-                "2016012900138987"=>"/",
-            ),
-            '婚纱/礼服'=>array(
-                "2016012900140916"=>"/",
-            ),
-            '司仪主持'=>array(
-                "2016062900190077"=>"/",
-            ),
-            '婚车租赁'=>array(
-                "2016062900190078"=>"/",
-            ),
-
-        ),
-        '摄影'=>array(
-            '婚纱摄影'=>array(
-                "2016070700195434"=>"旅拍/本地婚纱照",
-                "2016070700195435"=>"本地婚纱摄影",
-            ),
-            '儿童摄影'=>array(
-                "2016012900145271"=>"/",
-            ),
-            '孕妇摄影'=>array(
-                "2016051000164227"=>"/",
-            ),
-            '艺术写真'=>array(
-                "2015063000024698"=>"/",
-            ),
-            '跟拍'=>array(
-                "2016051600176301"=>"/",
-            ),
-            '证件照'=>array(
-                "2016051000165495"=>"/",
-            ),
-            '商业摄影'=>array(
-                "2016063000191709"=>"/",
-            ),
-
-        ),
-        '亲子'=>array(
-            '亲子游乐'=>array(
-                "2016012900143707"=>"/",
-            ),
-            '亲子游泳'=>array(
-                "2016051000164228"=>"/",
-            ),
-            '科普场馆'=>array(
-                "2016051000167013"=>"/",
-            ),
-            '亲子DIY'=>array(
-                "2016051000168501"=>"/",
-            ),
-            '早教中心'=>array(
-                "2016051000170050"=>"/",
-            ),
-            '幼儿外语'=>array(
-                "2016051000165496"=>"/",
-            ),
-            '幼儿才艺'=>array(
-                "2016051000171940"=>"/",
-            ),
-            '亲子服务'=>array(
-                "2016062900190080"=>"/",
-            ),
-
-        ),
-        '洗衣'=>array(
-            '洗衣家纺'=>array(
-                "2016051000173119"=>"/",
-            ),
-            '鞋帽清洗'=>array(
-                "2016051000171941"=>"/",
-            ),
-            '奢侈品养护'=>array(
-                "2016051000165497"=>"/",
-            ),
-            '自助洗衣'=>array(
-                "2016062900190081"=>"/",
-            ),
-
-        ),
-        '书店'=>array(
-            "/"=>array(
-                "2016051000175109"=>"/",
-            ),
-        ),
-        '购物'=>array(
-            "本地购物"=>array(
-                "2015062600009243"=>"/",
-            ),
-            "烟酒(只开酒)"=>array(
-                "2015062600006253"=>"/",
-            ),
-            "当地特色/保健品"=>array(
-                "2015090700035947"=>"/",
-            ),
-            "服装饰品"=>array(
-                '2016062900190084'=>"男性服装",
-                '2016062900190085'=>"女性成衣",
-                '2016062900190086'=>"内衣",
-                '2016062900190087'=>"家居服",
-                '2016062900190088'=>"皮草皮具",
-                '2016062900190089'=>"高档时装正装定制",
-                '2016062900190090'=>"裁缝",
-
-            ),
-            "化妆品"=>array(
-                "2016062900190082"=>"/",
-            ),
-            "茶叶"=>array(
-                "2016062900190083"=>"/",
-            ),
-            "珠宝饰品"=>array(
-                '2016062900190097'=>"珠宝",
-                '2016062900190098'=>"金银",
-                '2016062900190099'=>"钟表店",
-                '2016062900190100'=>"剃须刀",
-                '2016062900190101'=>"瑞士军刀",
-                '2016062900190102'=>"烟酒具",
-                '2016062900190103'=>"配饰商店",
-                '2016062900190104'=>"假发",
-                '2016062900190105'=>"饰物",
-
-            ),
-            "鞋包"=>array(
-                '2016062900190107'=>"鞋类",
-                '2016062900190108'=>"行李箱包",
-            ),
-            "亲子购物"=>array(
-                "2016062900190109"=>"/",
-            ),
-            "婚礼小商品"=>array(
-                "2016062900190110"=>"/",
-            ),
-            "运动户外用品"=>array(
-                "2016062900190111"=>"/",
-            ),
-            "办公用品"=>array(
-                '2016062900190178'=>"打字/打印/扫描",
-                '2016062900190179'=>"文具",
-            ),
-            "文化艺术店"=>array(
-                '2016062900190180'=>"乐器",
-                '2016062900190182'=>"二手商品店",
-                '2016062900190183'=>"文物古董",
-                '2016062900190184'=>"古玩复制品",
-                '2016062900190185'=>"礼品",
-                '2016062900190186'=>"卡片",
-                '2016062900190187'=>"纪念品",
-                '2016062900190188'=>"瓷器",
-                '2016062900190189'=>"玻璃和水晶摆件",
-                '2016062900190190'=>"工艺美术用品",
-                '2016062900190191'=>"艺术品和画廊",
-                '2016062900190192'=>"邮票/纪念币",
-                '2016062900190193'=>"宗教物品",
-            ),
-            "品牌折扣店"=>array(
-                "2016062900190114"=>"/",
-            ),
-            "数码产品"=>array(
-                '2016062900190194'=>"手机",
-                '2016062900190195'=>"通讯设备",
-                '2016062900190196'=>"数码产品及配件",
-                '2016062900190197'=>"专业摄影器材",
-                '2016062900190198'=>"计算机/服务器",
-
-            ),
-            "家用电器"=>array(
-                "2016062900190116"=>"/",
-            ),
-            "家居家纺"=>array(
-                '2016062900190199'=>"草坪和花园用品",
-                '2016062900190200'=>"地毯窗帘等家纺",
-                '2016062900190201'=>"帷幕",
-                '2016062900190202'=>"室内装潢壁炉",
-                '2016062900190203'=>"屏风",
-                '2016062900190204'=>"家庭装饰",
-                '2016062900190205'=>"花木栽种用品",
-            ),
-            "建材"=>array(
-                '2016062900190206'=>"油漆",
-                '2016062900190207'=>"清漆用品",
-                '2016062900190208'=>"大型建材卖场卖场",
-                '2016062900190209'=>"木材与建材商店",
-                '2016062900190210'=>"玻璃",
-                '2016062900190211'=>"墙纸",
-
-            ),
-            "特色集市"=>array(
-                "2016062900190119"=>"/",
-            ),
-            "眼镜店"=>array(
-                "2016062900190120"=>"/",
-            ),
-            "菜市场"=>array(
-                "2016070500193666"=>"/",
-            ),
-            "成人用品"=>array(
-                "2016062900190212"=>"/",
-            ),
-            "报刊/音像/书籍"=>array(
-                '2016062900190174'=>"音像制品租售",
-                '2016062900190175'=>"音像制品/书籍",
-                '2016062900190176'=>"书籍",
-                '2016062900190177'=>"报纸杂志",
-            ),
-            "烟花爆竹"=>array(
-                "2016062900190122"=>"/",
-            ),
-            "国外代购及免税店"=>array(
-                "2016062900190123"=>"/",
-            ),
-
-        ),
-        '爱车'=>array(
-            "洗车"=>array(
-                "2016062900190125"=>"/",
-            ),
-            "4S店/汽车销售"=>array(
-                '2016062900190213'=>"汽车销售",
-                '2016062900190214'=>"二手车销售",
-
-            ),
-            "配件/车饰"=>array(
-                "2016062900190127"=>"/",
-            ),
-            "汽车保险"=>array(
-                "2016062900190128"=>"/",
-            ),
-            "维修保养"=>array(
-                '2016062900190215'=>"拖车",
-                '2016062900190216'=>"维修",
-                '2016062900190217'=>"保养",
-
-            ),
-            "汽车美容"=>array(
-                "2016062900190130"=>"/",
-            ),
-            "汽车租赁"=>array(
-                "2016062900190131"=>"/",
-            ),
-            "停车场"=>array(
-                "2016062900190132"=>"/",
-            ),
-            "加油站"=>array(
-                "2016062900190133"=>"/",
-            ),
-        ),
-        '教育培训'=>array(
-            "职业技术培训"=>array(
-                "2015112300119923"=>"/",
-            ),
-            "外语"=>array(
-                "2016062900190282"=>"/",
-            ),
-            "音乐"=>array(
-                "2016062900190283"=>"/",
-            ),
-            "升学辅导"=>array(
-                "2016062900190284"=>"/",
-            ),
-            "体育"=>array(
-                "2016062900190285"=>"/",
-            ),
-            "美术"=>array(
-                "2016062900190286"=>"/",
-            ),
-            "留学"=>array(
-                "2016062900190287"=>"/",
-            ),
-            "驾校"=>array(
-                "2016062900190288"=>"/",
-            ),
-            "兴趣生活"=>array(
-                "2016062900190289"=>"/",
-            ),
-            "教育院校"=>array(
-                "2016062900190291"=>"中小学校",
-                "2016062900190292"=>"大学与学院",
-                "2016062900190293"=>"成人教育/函授",
-                "2016062900190294"=>"商业/文秘学校",
-                "2016062900190295"=>"儿童保育/学前",
-            ),
-        ),
-        '医疗健康'=>array(
-            "医院"=>array(
-                '2016062900190306'=>"社区医院",
-                '2016062900190307'=>"正骨医生",
-                '2016062900190308'=>"按摩医生",
-                '2016062900190309'=>"眼科医疗服务",
-                '2016062900190310'=>"手足病医疗服务",
-                '2016062900190311'=>"护理/照料服务",
-                '2016062900190312'=>"公立医院",
-
-            ),
-            "中医"=>array(
-                "2016062900190298"=>"/",
-            ),
-            "齿科"=>array(
-                "2016062900190299"=>"/",
-            ),
-            "药店"=>array(
-                "2016062900190300"=>"/",
-            ),
-            "急救服务"=>array(
-                "2016062900190301"=>"/",
-            ),
-            "整形"=>array(
-                "2016062900190302"=>"/",
-            ),
-            "妇幼医院"=>array(
-                "2016062900190303"=>"/",
-            ),
-            "体检中心"=>array(
-                "2016062900190304"=>"/",
-            ),
-
-        ),
-        '航旅'=>array(
-            "景区"=>array(
-                '2015112300087778'=>"门票",
-                '2015112300087779'=>"景区生活服务",
-                '2015112300100346'=>"景区购物",
-            ),
-            "客栈"=>array(
-                '2015112300103487'=>"单体",
-                '2015112300105211'=>"连锁",
-            ),
-            "汽车站"=>array(
-                '2015112300107119'=>"汽车票",
-                '2015112300108166'=>"汽车站购物",
-                '2015112300110076'=>"汽车站生活服务",
-
-            ),
-            "酒店"=>array(
-                '2015112300111726'=>"酒店单体",
-                '2015112300113179'=>"酒店连锁",
-
-            ),
-            "旅行社"=>array(
-                "2015112300118105"=>"旅行社",
-            ),
-            "酒店式公寓"=>array(
-                "2016062900190313"=>"/",
-            ),
-            "度假村"=>array(
-                '2016062900190330'=>"度假别墅服务",
-                '2016062900190331'=>"运动和娱乐露营",
-                '2016062900190332'=>"活动房车和野营",
-
-            ),
-            "航空票务"=>array(
-                '2016062900190333'=>"航空公司",
-                '2016062900190335'=>"机票平台",
-                '2016062900190336'=>"航空系统商",
-
-            ),
-            "货运代理/报关行"=>array(
-                "2016062900190327"=>"/",
-            ),
-            "铁路客运"=>array(
-                "2016062900190317"=>"/",
-            ),
-            "公共交通"=>array(
-                "2016062900190318"=>"/",
-            ),
-            "出租车服务"=>array(
-                "2016062900190319"=>"/",
-            ),
-            "长途公路客运"=>array(
-                "2016062900190320"=>"/",
-            ),
-            "游轮/巡游航线"=>array(
-                "2016062900190328"=>"/",
-            ),
-            "出租船只"=>array(
-                "2016062900190321"=>"/",
-            ),
-            "船舶/海运服务"=>array(
-                "2016062900190329"=>"/",
-            ),
-            "路桥通行费"=>array(
-                "2016062900190322"=>"/",
-            ),
-
-        ),
-        '专业销售/批发'=>array(
-            "汽车/运输工具"=>array(
-                '2016062900190342'=>"机动车/配件批发",
-                '2016062900190343'=>"活动房车销售商",
-                '2016062900190344'=>"汽车轮胎经销",
-                '2016062900190345'=>"汽车零配件",
-                '2016062900190346'=>"船舶及配件",
-                '2016062900190347'=>"拖车篷车娱乐用车",
-                '2016062900190348'=>"轨道交通设备器材",
-                '2016062900190349'=>"飞机/配件",
-                '2016062900190350'=>"运输搬运设备",
-                '2016062900190351'=>"起重装卸设备",
-                '2016062900190352'=>"摩托车及配件",
-                '2016062900190353'=>"电动车及配件",
-                '2016062900190354'=>"露营及旅行汽车",
-                '2016062900190355'=>"雪车",
-
-            ),
-            "办公用品批发"=>array(
-                '2016062900190356'=>"商务家具批发",
-                '2016062900190357'=>"办公器材批发",
-                '2016062900190359'=>"办公用品文具批发",
-
-            ),
-            "工业产品批发零售"=>array(
-                '2016062900190360'=>"金属产品/服务",
-                '2016062900190361'=>"电气产品/设备",
-                '2016062900190362'=>"五金器材/用品",
-                '2016062900190363'=>"管道/供暖设备",
-                '2016062900190364'=>"工业设备/制成品",
-                '2016062900190365'=>"工业耐用品",
-                '2016062900190366'=>"化工产品",
-                '2016062900190367'=>"石油/石油产品",
-
-            ),
-            "药品医疗批发"=>array(
-                '2016062900190368'=>"医疗器械",
-                '2016062900190369'=>"药品批发商",
-                '2016062900190370'=>"康复/身体辅助品",
-
-            ),
-        ),
-        '政府/社会组织'=>array(
-            '政府服务'=>array(
-                '2016062900190374'=>"法庭费用",
-                '2016062900190375'=>"行政费用和罚款",
-                '2016062900190376'=>"保释金",
-                '2016062900190377'=>"税务/海关",
-                '2016062900190378'=>"社会保障服务",
-                '2016062900190379'=>"使领馆",
-                '2016062900190380'=>"国家邮政",
-                '2016062900190381'=>"政府采购",
-                '2016062900190382'=>"政府贷款",
-
-            ),
-            '社会组织'=>array(
-                '2016062900190383'=>"慈善/社会公益",
-                '2016062900190384'=>"行业协会/社团",
-                '2016062900190385'=>"宗教组织",
-                '2016062900190386'=>"汽车协会",
-            ),
-        ),
-        '电影'=>array(
-            '电影院'=>array(
-                "2016062900190388"=>"/",
-            ),
-            '私人影院'=>array(
-                "2016062900190389"=>"/",
-            ),
-
-        ),
-    )
-));
-
-?>
+ const AUTH_TYPE_ALL = 0;
+ const AUTH_TYPE_COMPANY_SCHOOL = 1;
+ const AUTH_TYPE_CITY = 2;
+ const IMAGEDOMAIN = "https://img.lewaimai.com";

+ 6 - 2
script/upgrade/1.0.0.sql

@@ -12,6 +12,7 @@ CREATE TABLE `wx_useradmin` (
   `email` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '员工邮箱地址',
   `school_ids` text COMMENT '分配的学校(用逗号隔开 -1表示全部)',
   `company_ids` text COMMENT '分配的公司(用逗号隔开 -1表示全部)',
+  `cities` text COMMENT '分配的城市(用逗号隔开 -1表示全部)',
   `create_date` datetime NOT NULL DEFAULT now() COMMENT '创建时间',
   `update_date` datetime  NOT NULL DEFAULT now() COMMENT '更新时间',
   PRIMARY KEY (`id`)
@@ -22,6 +23,7 @@ CREATE TABLE `wx_role` (
   `name` VARCHAR(20) NOT NULL COMMENT '角色名',
   `auth_ids` text COMMENT '权限ID(用逗号隔开)',
   `show_ids` text COMMENT '权限ID(用逗号隔开) 用于前端展示',
+  `date_auth_type` TINYINT(4) NOT NULL default 1 COMMENT '数据权限 0-全部学校和餐饮公司 1-指定学校和餐饮公司 2-按城市指定学校',
   `status` TINYINT(1) NOT NULL DEFAULT '1' COMMENT '是否可用,默认1表示可用,0表示已经删除',
   `descr` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '简介',
   `create_date` datetime NOT NULL DEFAULT now() COMMENT '创建时间',
@@ -55,7 +57,8 @@ CREATE TABLE `wx_school` (
   `last_date` datetime COMMENT '最后一次跟进时间',
   `create_date` datetime NOT NULL DEFAULT now() COMMENT '创建时间',
   `update_date` datetime  NOT NULL DEFAULT now() COMMENT '更新时间',
-  PRIMARY KEY (`id`)
+  PRIMARY KEY (`id`),
+  key `idx_city` (`city`) using btree
 ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci comment='学校表';
 
 CREATE TABLE `wx_school_contact` (
@@ -139,7 +142,8 @@ CREATE TABLE `wx_company` (
   `last_date` datetime COMMENT '最后一次跟进时间',
   `create_date` datetime NOT NULL DEFAULT now() COMMENT '创建时间',
   `update_date` datetime  NOT NULL DEFAULT now() COMMENT '更新时间',
-  PRIMARY KEY (`id`)
+  PRIMARY KEY (`id`),
+  key `idx_city` (`city`) using btree
 ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci comment='餐饮公司表';
 
 CREATE TABLE `wx_company_contact` (

+ 10 - 0
web/src/api/roleApi.ts

@@ -21,6 +21,16 @@ export class roleService {
     })
   }
 
+  // 数据权限设置
+  static saveDataAuth(id: number, auth_type:number) {
+    const params = { id, auth_type }
+    return request.post<any>({
+      url: 'useradmin/saveDataAuth',
+      params
+      // showErrorMessage: false // 不显示错误消息
+    })
+  }
+
   // 编辑角色
   static editRole(params: Form.RoleInfo) {
     return request.post<any>({

+ 2 - 2
web/src/components/custom/FollowDrawer.vue

@@ -19,11 +19,11 @@
             <el-col :sm="0" :xs="24">
               <span style="background-color: #f59a23;color: white; padding: 2px 5px">{{ follow.create_date.split(' ')[1] }}</span>
             </el-col>
-            <el-avatar :src="follow.avatar"/> <span style="top: 13px; left:10px; position: relative;" >{{ follow.user_name }}</span>
+            <el-avatar :src="follow.avatar || '/src/assets/img/user/avatar.webp'"/> <span style="top: 13px; left:10px; position: relative;" >{{ follow.user_name }}</span>
             <el-col :span="24">
               <label>关系人:</label> <span>{{ follow.second_name }}</span>
             </el-col>
-            <el-col :span="24">
+            <el-col :span="24" v-if="follow.chat_imgs.length">
               <label style="position: relative;top: -10px;">聊天记录:</label>
               <el-image
                   v-if="follow.chat_imgs.length"

+ 6 - 0
web/src/enums/appEnum.ts

@@ -55,3 +55,9 @@ export enum BgColorEnum {
   DANGER = 'bg-danger',
   INFO = 'bg-info'
 }
+
+export enum AuthTypeEnum {
+  AUTH_TYPE_ALL = 0,
+  AUTH_TYPE_COMPANY_SCHOOL = 1,
+  AUTH_TYPE_CITY = 2,
+}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 2 - 1
web/src/router/utils/city.ts


+ 4 - 1
web/src/typings/api.d.ts

@@ -59,7 +59,6 @@ declare namespace Api {
       phone: string // 手机号
       weixin: string // 微信号
       position?: string // 职位
-      position?: string // 职位
     }
 
     interface Stat {
@@ -143,6 +142,7 @@ declare namespace Api {
       create_date: string
       auth_ids: number[]
       show_ids?: number[]
+      date_auth_type:number
     }
 
     /** 列表返回 */
@@ -166,6 +166,7 @@ declare namespace Api {
       buttons?: string[]
       roles?: string[]
       sex: number
+      date_auth_type:number
       role_name?: string
       status?: 0 | 1
       avatar?: string
@@ -198,6 +199,8 @@ declare namespace Api {
       company_ids: number[]
       school_names: string[]
       company_names: string[]
+      date_auth_type:number
+      cities: string[]
     }
   }
 

+ 1 - 0
web/src/typings/form.d.ts

@@ -30,6 +30,7 @@ declare namespace Form {
     role_id: number
     company_ids: number[]
     school_ids: number[]
+    cities: string[]
   }
 
   interface FindPassword {

+ 1 - 6
web/src/views/canteen/edit.vue

@@ -136,12 +136,7 @@
       { max: 20, message: '长度最多20个字符', trigger: 'blur' }
     ],
     phone: [
-      { required: true, message: '请输入手机号', trigger: 'blur' },
-      {
-        pattern: /^1[3456789]\d{9}$/,
-        message: '请输入正确的手机号码',
-        trigger: 'blur'
-      }
+      { required: true, message: '请输入手机号', trigger: 'blur' }
     ],
     weixin: [
       { max: 20, message: '长度最多20个字符', trigger: 'blur' }

+ 1 - 2
web/src/views/company/relation/modules/user-dialog.vue

@@ -90,8 +90,7 @@
     ],
     company_id: [{ required: true, message: '请输入餐饮公司', trigger: 'blur' }],
     phone: [
-      { required: true, message: '请输入手机号', trigger: 'blur' },
-      { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号码', trigger: 'blur' }
+      { required: true, message: '请输入手机号', trigger: 'blur' }
     ],
     weixin: [
       { max: 20, message: '长度最多20个字符', trigger: 'blur' }

+ 1 - 2
web/src/views/school/relation/modules/user-dialog.vue

@@ -90,8 +90,7 @@
     ],
     school_id: [{ required: true, message: '请输入学校', trigger: 'blur' }],
     phone: [
-      { required: true, message: '请输入手机号', trigger: 'blur' },
-      { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号码', trigger: 'blur' }
+      { required: true, message: '请输入手机号', trigger: 'blur' }
     ],
     weixin: [
       { max: 20, message: '长度最多20个字符', trigger: 'blur' }

+ 35 - 3
web/src/views/system/role/index.vue

@@ -38,6 +38,7 @@
               <ArtButtonMore
                 :list="[
                   { key: 'permission', label: '菜单权限', authId: 110201 },
+                  { key: 'dataAuth', label: '数据权限', authId: 110201 },
                   { key: 'edit', label: '编辑角色', authId: 110202 },
                   { key: 'delete', label: '删除角色', authId: 110203 }
                 ]"
@@ -71,6 +72,24 @@
       </template>
     </ElDialog>
 
+    <el-dialog
+        v-model="dataDialogVisible"
+        title="数据权限"
+        width="500"
+    >
+      <ElSelect v-model="nowRoleInfo.date_auth_type" placeholder="请选择">
+        <ElOption v-for="(item, key) in ['全部学校和餐饮公司', '指定学校和餐饮公司', '按城市指定学校']" :key="key" :value="key" :label="item"></ElOption>
+      </ElSelect>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="dataDialogVisible = false">取消</el-button>
+          <el-button type="primary" @click="dateAuthChange">
+            确定
+          </el-button>
+        </div>
+      </template>
+    </el-dialog>
+
     <ElDialog
       v-model="permissionDialog"
       title="菜单权限"
@@ -119,6 +138,7 @@
   import { formatMenuTitle } from '@/router/utils/utils'
   import { ButtonMoreItem } from '@/components/core/forms/art-button-more/index.vue'
   import { roleService } from '@/api/roleApi'
+  import {AuthTypeEnum} from "@/enums/appEnum";
 
   defineOptions({ name: 'Role' })
 
@@ -129,6 +149,7 @@
     name: '',
     descr: '',
     create_date: '',
+    date_auth_type: AuthTypeEnum.AUTH_TYPE_COMPANY_SCHOOL,
     auth_ids: [],
     show_ids: []
   })
@@ -233,9 +254,21 @@
     }
   }
 
+  const dataDialogVisible = ref(false)
+
+  const dateAuthChange = async () => {
+    dataDialogVisible.value = false
+    await roleService.saveDataAuth(nowRoleInfo.id, nowRoleInfo.date_auth_type).then(() => {
+      getTableData()
+    })
+  }
+
   const buttonMoreClick = (item: ButtonMoreItem, row: any) => {
+    Object.assign(nowRoleInfo, row)
     if (item.key === 'permission') {
       showPermissionDialog(row)
+    } else if (item.key === 'dataAuth') {
+      dataDialogVisible.value = true
     } else if (item.key === 'edit') {
       showDialog('edit', row)
     } else if (item.key === 'delete') {
@@ -267,10 +300,9 @@
       cancelButtonText: '取消',
       type: 'error'
     }).then(() => {
-      roleService.deleteRole({ id })
-      setTimeout(() => {
+      roleService.deleteRole({ id }).then(() => {
         getTableData()
-      }, 1000)
+      })
     })
   }
 

+ 19 - 4
web/src/views/system/user/index.vue

@@ -32,23 +32,36 @@
       >
 
         <template #school_names="scope">
-          <ElTag
+          <ElText
               v-for="item in scope.row.school_names"
               type="primary"
+              size="small"
               style="margin: 5px"
           >
             {{item}}
-          </ElTag>
+          </ElText>
         </template>
 
         <template #company_names="scope">
-          <ElTag
+          <ElText
               v-for="item in scope.row.company_names"
               type="primary"
+              size="small"
               style="margin: 5px"
           >
             {{item}}
-          </ElTag>
+          </ElText>
+        </template>
+
+        <template #cities="scope">
+          <ElText
+              v-for="item in scope.row.cities"
+              type="primary"
+              size="small"
+              style="margin: 5px"
+          >
+            {{item}}
+          </ElText>
         </template>
 
 
@@ -81,6 +94,7 @@
   import {companyApi} from "@/api/companyApi";
   import {commonApi} from "@/api/commonApi";
   import { detectDeviceType } from '@/utils'
+  import {AuthTypeEnum} from "@/enums/appEnum";
 
   defineOptions({ name: 'User' })
 
@@ -170,6 +184,7 @@
         },
         {prop: 'school_names', label: '分管学校(校区)', useSlot: true},
         {prop: 'company_names', label: '分管餐饮公司', useSlot: true},
+        {prop: 'cities', label: '分管地区', useSlot: true},
         {
           prop: 'create_date',
           label: '创建日期',

+ 14 - 4
web/src/views/system/user/modules/user-dialog.vue

@@ -3,7 +3,7 @@
   <ElDialog
     v-model="dialogVisible"
     :title="dialogType === 'add' ? '添加用户' : '编辑用户'"
-    width="30%"
+    width="50%"
     align-center
   >
     <ElForm ref="formRef" :model="formData" :rules="rules" label-width="80px">
@@ -27,16 +27,21 @@
           <ElOption v-for="role in roleList" :key="role.id" :value="role.id" :label="role.name" />
         </ElSelect>
       </ElFormItem>
-      <ElFormItem label="分管学校" prop="school_ids">
+      <ElFormItem label="分管学校" prop="school_ids" v-if="userData.date_auth_type == AuthTypeEnum.AUTH_TYPE_COMPANY_SCHOOL">
         <ElSelect v-model="formData.school_ids" multiple>
           <ElOption v-for="role in schoolList" :key="role.id" :value="role.id" :label="role.name" />
         </ElSelect>
       </ElFormItem>
-      <ElFormItem label="分管餐饮公司" prop="school_ids">
+      <ElFormItem label="分管餐饮公司" prop="school_ids" v-if="userData.date_auth_type == AuthTypeEnum.AUTH_TYPE_COMPANY_SCHOOL">
         <ElSelect v-model="formData.company_ids" multiple>
           <ElOption v-for="role in companyList" :key="role.id" :value="role.id" :label="role.name" />
         </ElSelect>
       </ElFormItem>
+      <ElFormItem label="分管地区" prop="cities" v-if="userData.date_auth_type == AuthTypeEnum.AUTH_TYPE_CITY">
+        <ElSelect v-model="formData.cities" multiple filterable>
+          <ElOption v-for="item in cities" :key="item" :value="item" :label="item" />
+        </ElSelect>
+      </ElFormItem>
     </ElForm>
     <template #footer>
       <div class="dialog-footer">
@@ -50,6 +55,8 @@
 <script setup lang="ts">
   import type { FormInstance, FormRules } from 'element-plus'
   import { UserService } from '@/api/usersApi'
+  import {AuthTypeEnum} from "@/enums/appEnum";
+  import {cities} from "@/router/utils/city";
 
   interface Props {
     visible: boolean
@@ -88,7 +95,8 @@
     sex: 0,
     role_id: 0,
     school_ids: [],
-    company_ids: []
+    company_ids: [],
+    cities:[]
   })
 
   // 表单验证规则
@@ -119,6 +127,7 @@
       role_id: isEdit.value ? row.role_id : 0,
       school_ids: isEdit.value ? row.school_ids || [] : [],
       company_ids: isEdit.value ? row.company_ids || [] : [],
+      cities: isEdit.value ? row.cities || [] : [],
     })
   }
 
@@ -128,6 +137,7 @@
     ([visible]) => {
       if (visible) {
         initFormData()
+        console.log(`%c userData == `, 'background:#41b883 ; padding:1px; color:#fff', props.userData);
         nextTick(() => {
           formRef.value?.clearValidate()
         })

Vissa filer visades inte eftersom för många filer har ändrats