1
0
Fork 0
master
panliang 2023-12-08 16:55:30 +08:00
parent feaad6fd2f
commit 15463a5b90
8 changed files with 81 additions and 9 deletions

View File

@ -50,7 +50,7 @@ class ArticleController extends AdminController
return $this->baseForm()->title('')->body([
amisMake()->TextControl()->name('title')->label(__('article.title'))->required(true),
amisMake()->SelectControl()->name('category_id')->label(__('article.category_id'))->options($this->getCategoryOptions())->required(),
amisMake()->SelectControl()->name('party_cate_id')->label(__('article.party_cate_id'))->options($this->getPartyCateOptions()),
amisMake()->SelectControl()->name('party_cate_id')->label(__('article.party_cate_id'))->options($this->getPartyCateOptions())->searchable(),
amisMake()->ImageControl()->name('cover')->label(__('article.cover'))->autoUpload(true),
Components::make()->sortControl('sort', __('article.sort')),
amisMake()->DateTimeControl()->name('published_at')->label(__('article.published_at'))->value(now())->format('YYYY-MM-DD HH:mm:ss')->description('*不填写则默认为创建时间'),

View File

@ -32,6 +32,7 @@ class PartyUserController extends AdminController
]))
->columns([
amisMake()->TableColumn()->name('id')->label(__('party_user.id')),
amisMake()->TableColumn()->name('username')->label(__('party_user.username')),
amisMake()->TableColumn()->name('name')->label(__('party_user.name')),
amisMake()->TableColumn()->type('avatar')->src('${avatar}')->name('avatar')->label(__('party_user.avatar')),
amisMake()->TableColumn()->name('cate.name')->label(__('party_user.cate_id')),

View File

@ -14,12 +14,12 @@ class ArticleController extends Controller
{
$category = Keyword::where('key', 'category_1')->first();
if (!$category) {
return $this->response()->error('文章不存在');
return $this->response()->fail('文章不存在');
}
$article = Article::where('category_id', $category->id)->publish()->sort()->first();
if (!$article) {
return $this->response()->success([]);
return $this->response()->success('');
}
return $this->response()->success(ArticleResource::make($article));
@ -31,12 +31,12 @@ class ArticleController extends Controller
$user = auth('api')->user();
$category = Keyword::where('key', 'category_2')->first();
if (!$category) {
return $this->response()->error('文章不存在');
return $this->response()->fail('文章不存在');
}
$article = Article::where('category_id', $category->id)->where('party_cate_id', $user->cate_id)->publish()->sort()->first();
$article = Article::with(['partyCate'])->where('category_id', $category->id)->where('party_cate_id', $user->cate_id)->publish()->sort()->first();
if (!$article) {
return $this->response()->success([]);
return $this->response()->success('');
}
return $this->response()->success(ArticleResource::make($article));

View File

@ -17,8 +17,8 @@ class AuthController extends Controller
]);
$user = PartyUser::where('username', $request->input('username'))->first();
if (!Hash::check($request->input('password'), $user->password)) {
throw new BaseException('用户名或密码错误');
if (!$user || !Hash::check($request->input('password'), $user->password)) {
return $this->response()->fail('用户名或密码错误');
}
// 更新第三方账户
// $openid = $request->input('openid');

View File

@ -39,6 +39,38 @@ class RankController extends Controller
return $this->response()->success($rankList);
}
// 当前用户本季度排名
public function current(Request $request)
{
$request->validate([
// user: 党员, cate: 党支部
'type' => ['required', Rule::in(['user', 'cate'])]
]);
$type = $request->input('type', 'user');
$query = match($type) {
'user' => PartyUser::query(),
'cate' => PartyCate::query(),
};
$query->orderBy('current_score', 'desc');
if ($request->filled('limit')) {
$query->limit($request->input('limit'));
}
$list = $query->get();
$user = auth('api')->user();
$rank = ['score' => '-', 'rank' => '-'];
foreach ($list as $index => $item) {
if ($item->id == match($type) {
'user' => $user->id,
'cate' => $user->cate_id
}) {
$rank['score'] = $item->score;
$rank['rank'] = $index + 1;
}
}
return $this->response()->success($rank);
}
// 获取已有的期数
public function dates(Request $request)
{
@ -56,7 +88,7 @@ class RankController extends Controller
return $this->response()->success($list);
}
// 党员其他季度的排名记录
// 其他季度的排名记录
public function list(Request $request)
{
$request->validate([
@ -86,4 +118,33 @@ class RankController extends Controller
return $this->response()->success($rankList);
}
public function currentList(Request $request)
{
$request->validate([
// 期数
'sn' => 'required',
// user: 党员, cate: 党支部
'type' => ['required', Rule::in(['user', 'cate'])]
]);
$type = $request->input('type', 'user');
$query = match($type) {
'user' => UserRank::query(),
'cate' => CateRank::query(),
};
$list = $query->where('sn', $request->input('sn'))->orderBy('score', 'desc')->get();
$user = auth('api')->user();
$rank = ['score' => '-', 'rank' => '-'];
foreach ($list as $index => $item) {
if (match($type) {
'user' => $item->user_id == $user->id,
'cate' => $item->cate_id == $user->cate_id,
}) {
$rank['score'] = $item->score;
$rank['rank'] = $index + 1;
}
}
return $this->response()->success($rank);
}
}

View File

@ -18,6 +18,7 @@ class ArticleResource extends JsonResource
'id' => $this->id,
'title' => $this->title,
'content' => $this->content,
'party_cate' => $this->whenLoaded('partyCate')
];
}
}

View File

@ -41,6 +41,11 @@ class Article extends Model
return $this->belongsTo(Keyword::class, 'category_id');
}
public function partyCate()
{
return $this->belongsTo(PartyCate::class, 'party_cate_id');
}
public function scopeSort($q)
{
$q->orderBy('sort', 'asc')->latest('published_at')->latest('id');

View File

@ -17,6 +17,7 @@ use Illuminate\Support\Facades\Route;
Route::post('web/upload', [\App\Http\Controllers\WebController::class, 'upload']);
Route::get('keyword', [\App\Http\Controllers\Api\KeywordController::class, 'index']);
Route::get('banner', [\App\Http\Controllers\Api\BannerController::class, 'index']);
Route::post('login', [\App\Http\Controllers\Api\AuthController::class, 'login']);
@ -34,4 +35,7 @@ Route::group(['middleware' => 'auth:api'], function () {
Route::post('user/profile', [\App\Http\Controllers\Api\AccountController::class, 'update']);
Route::get('article/cate', [\App\Http\Controllers\Api\ArticleController::class, 'cate']);
Route::get('rank/current', [\App\Http\Controllers\Api\RankController::class, 'current']);
Route::get('rank/current-list', [\App\Http\Controllers\Api\RankController::class, 'currentList']);
});