| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- <?php
- /**
- * Created by PhpStorm.
- * Name: 芸众商城系统
- * Author: 广州市芸众信息科技有限公司
- * Profile: 广州市芸众信息科技有限公司位于国际商贸中心的广州,专注于移动电子商务生态系统打造,拥有芸众社交电商系统、区块链数字资产管理系统、供应链管理系统、电子合同等产品/服务。官网 :www.yunzmall.com www.yunzshop.com
- * Date: 2021/9/22
- * Time: 13:37
- */
- namespace business\common\services;
- use business\admin\menu\BusinessMenu;
- use business\common\models\Department;
- use business\common\models\Premission;
- use business\common\models\Staff;
- use Illuminate\Support\Facades\DB;
- use Exception;
- class AuthService
- {
- /*
- * 设置权限
- */
- public static function setAuth($auth, $department_id = 0, $is_leader = 0, $staff_id = 0, $right_type = 0)
- {
- $where = [
- 'business_id' => SettingService::getBusinessId(),
- 'uniacid' => \YunShop::app()->uniacid,
- ];
- if ($department_id) {
- if (!Department::business()->find($department_id)) {
- return self::returnArr(0, '部门不存在');
- }
- $where['department_id'] = $department_id;
- $where['type'] = $is_leader ? 2 : 1;
- } elseif ($staff_id) {
- if (!$staff = Staff::business()->find($staff_id)) {
- return self::returnArr(0, '员工不存在');
- }
- $where['staff_id'] = $staff_id;
- $where['type'] = 3;
- } else {
- return self::returnArr(0, '权限类型异常');
- }
- DB::beginTransaction();
- $insert_data = [];
- $time = time();
- try {
- foreach ($auth as $k => $v) {
- foreach ($v as $kk => $vv) {
- $insert_data[] = array_merge($where, [
- 'module' => $k,
- 'route' => $vv,
- 'created_at' => $time,
- 'updated_at' => $time
- ]);
- }
- Premission::where($where)->delete();
- }
- if ($insert_data) {
- Premission::insert($insert_data);
- }
- if (isset($staff)) {
- $staff->right_type = in_array($right_type, [0, 1]) ? $right_type : 0;
- $staff->save();
- }
- } catch (Exception $e) {
- DB::rollBack();
- return self::returnArr(0, $e->getMessage());
- }
- DB::commit();
- return self::returnArr(1, '成功');
- }
- /*
- * 获取权限列表
- */
- public static function getAuthList($department_id = 0, $is_leader = 0, $staff_id = 0)
- {
- $menu = (new BusinessMenu())->getMenu();
- $menu = $menu['all_route'];
- if ($department_id) {
- if (!Department::business()->find($department_id)) {
- return self::returnArr(0, '部门不存在');
- }
- $where[] = ['department_id', $department_id];
- $where[] = ['type', $is_leader ? 2 : 1];
- } elseif ($staff_id) {
- if (!Staff::business()->find($staff_id)) {
- return self::returnArr(0, '员工不存在');
- }
- $where[] = ['staff_id', $staff_id];
- $where[] = ['type', 3];
- } else {
- return self::returnArr(0, '权限类型异常');
- }
- $right_arr = Premission::business()->where($where)->get();
- $return_data = [];
- foreach ($menu as $k => $v) {
- $return_data[$k] = self::foreachAuthList($v, $right_arr, $k);
- }
- return self::returnArr(1, '成功', $return_data);
- }
- /*
- * 循环组装权限列表数据
- */
- private static function foreachAuthList(&$menu, &$right_arr, $module)
- {
- foreach ($menu as $k => $v) {
- if (!$v['premit']) {
- unset($menu[$k]);
- continue;
- }
- $menu[$k] = [
- 'name' => $v['page_name'],
- 'route' => $v['route'],
- 'can' => $right_arr->where('route', $v['route'])->where('module', $module)->isNotEmpty() ? 1 : 0,
- 'child' => [],
- ];
- if ($v['child']) {
- $menu[$k]['can'] = 0;
- $menu[$k]['child'] = self::foreachAuthList($v['child'], $right_arr, $module);
- }
- }
- return array_values($menu);
- }
- public static function returnArr($result, $msg = '', $data = [])
- {
- return ['result' => $result, 'msg' => $msg, 'data' => $data];
- }
- }
|