delete(); // 删除党员排名记录 UserRank::whereIn('user_id', $ids)->delete(); return true; } public function validate($data, $model = null) { $createRules = [ 'username' => ['required', Rule::unique('party_users', 'username')], 'password' => ['required'], 'name' => ['required'], ]; $updateRules = [ 'username' => [Rule::unique('party_users', 'username')->ignore($model?->id)] ]; $validator = Validator::make($data, $model ? $updateRules : $createRules, [ 'username.required' => __('party_user.username') . '必填', 'password.required' => __('party_user.password') . '必填', 'name.required' => __('party_user.name') . '必填', 'username.unique' => ':input 已经存在', ]); if ($validator->fails()) { return $validator->errors()->first(); } 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; } /** * 增加党员得分 * * @param PartyUser $user 党员 * @param string $type 类型 keywords(score_cate).key * @param int $score 得分 * @return void */ public function incrementScore(PartyUser $user, string $type, int $score) { $scores = $user->scores; if (isset($scores[$type])) { $scores[$type] += $score; } $user->update([ 'score' => $user->score + $score, 'current_score' => $user->current_score + $score, 'scores' => $scores, ]); // 同时增加党支部的得分 if ($user->cate) { PartyCateService::make()->incrementScore($user->cate, $type, $score); } } /** * 五星维度配置 * Echarts 雷达图 echarts.apache.org * * @param PartyUser $user 党员 * * @return array */ public function getChartOption(PartyUser $user) { $typeList = Keyword::filter(['key' => 'score_cate_'])->sort()->get(); $scores = $user->scores ?: []; $values = $typeList->map(fn($item) => data_get($scores, $item->key, 0))->all(); $max = max($values); $options = [ 'radar' => [ 'indicator' => $typeList->map(fn($item) => ['name' => $item->name, 'max' => $max])->all(), ], 'series' => [ [ 'type' => 'radar', 'data' => [ ['value' => $values] ], 'label' => ['show' => true] ] ] ]; return $options; } }