| 
									
										
										
										
											2021-11-18 17:57:04 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace app\repository; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use app\traits\cms\ArticleTrait; | 
					
						
							|  |  |  | use app\traits\cms\MenuTrait; | 
					
						
							|  |  |  | use app\traits\CmsCategoryTrait; | 
					
						
							| 
									
										
										
										
											2021-12-01 16:53:44 +08:00
										 |  |  | use tauthz\facade\Enforcer; | 
					
						
							| 
									
										
										
										
											2021-11-18 17:57:04 +08:00
										 |  |  | 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; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-12-01 16:53:44 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * 获取后台用户权限列表 | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @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); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-11-18 17:57:04 +08:00
										 |  |  | } |