| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- <?php
- namespace App\Models\Manager\Personnel;
- use Illuminate\Database\Eloquent\Factories\HasFactory;
- use Illuminate\Database\Eloquent\Model;
- use Illuminate\Support\Facades\DB;
- use App\Models\Manager\Menu as MenuModel;
- use App\Models\Manager\Personnel\Employee as EmployeeModel;
- /**
- * 角色权限规则模型
- * @author 唐远望
- * @version 1.0
- * @date 2026-01-05
- */
- class RolesAuthRule extends Model
- {
- use HasFactory;
- // 与模型关联的表名
- protected $table = 'personnel_roles_auth_rule';
- // 是否主动维护时间戳
- public $timestamps = false;
- // 定义时间戳字段名
- // const CREATED_AT = 'insert_time';
- // const UPDATED_AT = 'update_time';
- /**
- * 添加
- * @author 唐远望
- * @version 1.0
- * @date 2025-12-05
- */
- public function addRolesAuthRule_content($data)
- {
- $insert_data = [
- 'url' => $data['url'],
- 'role_id' => $data['role_id'],
- 'menu_id' => $data['menu_id'],
- 'insert_time' => time(),
- ];
- $RolesAuthRule_id = $this->insertGetId($insert_data);
- return $RolesAuthRule_id;
- }
- /**
- * 写入数据
- * @author 唐远望
- * @version 1.0
- * @date 2025-12-05
- * @param $data
- * @return bool
- */
- public function addRolesAuthRule($data)
- {
- $MenuModel = new MenuModel();
- $menu_ids = explode(',', $data['menu_ids']);
- $urls_data = $MenuModel->whereIn('id', $menu_ids)->select(['id', 'url'])->get()->keyBy('id')->toArray();
- $menu_id_log = $this->where(['role_id' => $data['role_id']])->select(['menu_id'])->get()->toArray();
- DB::beginTransaction();
- try {
- //差异新增或者删除
- $add_menu_ids = array_diff($menu_ids, array_column($menu_id_log, 'menu_id'));
- $del_menu_ids = array_diff(array_column($menu_id_log, 'menu_id'), $menu_ids);
- if (!empty($add_menu_ids)) {
- $add_data = [];
- foreach ($add_menu_ids as $menu_id) {
- $add_data[] = [
- 'url' => isset($urls_data[$menu_id]['url']) ? $urls_data[$menu_id]['url'] : '',
- 'role_id' => $data['role_id'],
- 'menu_id' => $menu_id,
- 'insert_time' => time(),
- ];
- }
- $this->insert($add_data);
- }
- if (!empty($del_menu_ids)) {
- $this->where(['role_id' => $data['role_id']])->whereIn('menu_id', $del_menu_ids)->delete();
- }
- DB::commit();
- return true;
- // 成功处理...
- } catch (\Exception $e) {
- DB::rollBack();
- print_r($e->getMessage());
- exit;
- // 错误处理...
- return false;
- }
- }
- /**
- * 编辑内容
- * @author 唐远望
- * @version 1.0
- * @date 2025-12-05
- * @param $data
- * @return bool
- */
- public function editRolesAuthRule_content($RolesAuthRule, $data)
- {
- $RolesAuthRule->url = $data['url'];
- $RolesAuthRule->role_id = $data['role_id'];
- $RolesAuthRule->menu_id = $data['menu_id'];
- $RolesAuthRule->update_time = time();
- $RolesAuthRule->save();
- return true;
- }
- /**
- * 更新数据
- * @author 唐远望
- * @version 1.0
- * @date 2025-12-05
- * @param $data
- * @return bool
- */
- public function updateRolesAuthRule($where, $data)
- {
- DB::beginTransaction();
- try {
- $this->editRolesAuthRule_content($where, $data);
- DB::commit();
- return true;
- // 成功处理...
- } catch (\Exception $e) {
- DB::rollBack();
- // 错误处理...
- return false;
- }
- }
- /**
- * 修改状态
- * @author 唐远望
- * @version 1.0
- * @date 2025-12-05
- * @param $id
- * @param $status
- * @return bool
- */
- public function changeStatus($where, $status)
- {
- $RolesAuthRule = $this->where($where)->first();
- if (!$RolesAuthRule) {
- return false;
- }
- $RolesAuthRule->status = $status;
- $RolesAuthRule->update_time = time();
- $RolesAuthRule->save();
- return true;
- }
- /**
- * 删除数据
- * @author 唐远望
- * @version 1.0
- * @date 2025-12-05
- * @param $id
- * @return bool
- */
- public function deleteRolesAuthRule($where)
- {
- $RolesAuthRule = $this->where($where)->first();
- if (!$RolesAuthRule) {
- return false;
- }
- $RolesAuthRule->delete();
- return true;
- }
- /**
- * 获得权限列表
- * @param integer $uid 用户id
- * @param integer $type
- */
- public function getAuthList($uid, $module = 'manager')
- {
- if (is_super($uid, $module)) {
- $rules = (new MenuModel)->getList($module, true);
- $rules = array_column($rules, 'url');
- } else {
- // 获取用户角色
- $EmployeeModel = new EmployeeModel();
- $role_ids = $EmployeeModel->where([['id', '=', $uid]])->value('role_id');
- if (!$role_ids) return [];
- $rules = $this->where([['role_id', '=', $role_ids]])->pluck('url')->toArray();
- }
- // 循环转大写
- foreach ($rules as $key => $rule) {
- // 转小写,截除左边斜杠
- $value = ltrim(strtolower($rule), '/');
- if ($value != '') {
- $rules[$key] = $value;
- }
- }
- // 去重
- $rules = array_unique($rules);
- // 返回结果
- return $rules;
- }
- }
|