76 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
| <?php
 | |
| 
 | |
| namespace app\repository;
 | |
| 
 | |
| use app\traits\cms\ArticleTrait;
 | |
| use app\traits\cms\MenuTrait;
 | |
| use app\traits\CmsCategoryTrait;
 | |
| use tauthz\facade\Enforcer;
 | |
| use think\db\exception\DataNotFoundException;
 | |
| use think\db\exception\DbException;
 | |
| use think\db\exception\ModelNotFoundException;
 | |
| use think\Model;
 | |
| use app\service\Repository;
 | |
| 
 | |
| /**
 | |
|  * CMS 基础功能仓储
 | |
|  *
 | |
|  * Class CmsRepository
 | |
|  * @package app\repository
 | |
|  * @method self getInstance(Model $model = null) static
 | |
|  */
 | |
| class CmsRepository extends Repository
 | |
| {
 | |
|     use CmsCategoryTrait;
 | |
|     use MenuTrait;
 | |
|     use ArticleTrait;
 | |
| 
 | |
|     /**
 | |
|      * xmSelect下拉列表格式处理
 | |
|      * 如 [['title' => 'aa', 'value' => 1, 'selected' => true, 'prefix' => '    ']]
 | |
|      *
 | |
|      * @param  array  $data  待处理的数据
 | |
|      * @param  string  $symbol  分隔符号 默认  
 | |
|      * @param  int  $repeatNum  重复次数 默认4
 | |
|      * @return array
 | |
|      */
 | |
|     public function handleSelectedList(array $data, string $symbol = ' ', int $repeatNum = 4): array
 | |
|     {
 | |
|         $list = [];
 | |
|         foreach ($data as $item) {
 | |
|             $level    = $item['level'] ?? 0;
 | |
|             $arr = $item;
 | |
|             $arr['children'] = $arr['children'] ?? [];
 | |
|             $arr['prefix'] = str_repeat($symbol, $level * $repeatNum);
 | |
|             $list[] = $arr;
 | |
|         }
 | |
| 
 | |
|         return $list;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 获取后台用户权限列表
 | |
|      *
 | |
|      * @param  int  $accountId
 | |
|      * @return array
 | |
|      */
 | |
|     public function getUserRules(int $accountId): array
 | |
|     {
 | |
|         $rules = [];
 | |
|         $roles = Enforcer::getRolesForUser($accountId);
 | |
|         foreach ($roles as $role) {
 | |
|             $rules = array_merge($rules, Enforcer::getPermissionsForUser($role));
 | |
|         }
 | |
| 
 | |
|         $ruleNameList = [];
 | |
|         foreach ($rules as $rule) {
 | |
|             if (isset($rule[2])) {
 | |
|                 $ruleNameList[] = $rule[1].':'.$rule[2];
 | |
|             } else {
 | |
|                 $ruleNameList[] = $rule[1];
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         return array_unique($ruleNameList);
 | |
|     }
 | |
| } |