resloveData($data); $validate = $this->validate($data); if ($validate !== true) { $this->setError($validate); return false; } $info = $this->modelName::create($data); $this->createPermission($info); return true; } /** * 创建权限 */ public function createPermission(PartyCate $info) { $parent = AdminPermission::firstOrCreate(['slug' => 'party_cate_list'], ['name' => '党支部']); AdminPermissionService::make()->store([ 'slug' => 'party_cate_' . $info->id, 'name' => $info->name, 'parent_id' => $parent->id, 'order' => 2, 'http_method' => $info->id, ]); } /** * 当前用户拥有的支部权限 id * * @return array null: 全部权限, []: 支部id */ public function catePermissions() { $user = Admin::user(); // 判断当前账户拥有的支部权限 if ($user->can('party_cate_all')) { return null; } $permissions = Cache::get('parte_cate_id_permission', function () use ($user) { return $user->allPermissions()->where(fn ($item) => Str::startsWith($item->slug, 'party_cate_'))->map(fn($item) => explode('party_cate_', $item->slug)[1])->all(); }); return count($permissions) == 0 ? [0] : $permissions; } public function preDelete(array $ids) { // 删除党员记录 PartyUser::whereIn('cate_id', $ids)->delete(); // 删除审核记录 UserScore::whereIn('cate_id', $ids)->delete(); // 删除支部排名记录 CateRank::whereIn('cate_id', $ids)->delete(); // 删除党员排名记录 UserRank::whereIn('cate_id', $ids)->delete(); // 删除权限 AdminPermission::whereIn('slug', array_map(fn ($v) => 'party_cate_' . $v, $ids))->delete(); return true; } public function resloveData($data, $model = null) { if (!$model) { $list = UserScore::getTypeList(); $scores = []; foreach ($list as $item) { $scores[$item->key] = 0; } $data['scores'] = $scores; } return $data; } public function incrementScore(PartyCate $info, $type, $score) { $scores = $info->scores; if (isset($scores[$type])) { $scores[$type] += $score; } $info->update([ 'score' => $info->score + $score, 'current_score' => $info->current_score + $score, 'scores' => $scores, ]); } }