generated from panliang/owl-admin-starter
api
parent
feaad6fd2f
commit
15463a5b90
|
|
@ -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('*不填写则默认为创建时间'),
|
||||
|
|
|
|||
|
|
@ -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')),
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ class ArticleResource extends JsonResource
|
|||
'id' => $this->id,
|
||||
'title' => $this->title,
|
||||
'content' => $this->content,
|
||||
'party_cate' => $this->whenLoaded('partyCate')
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
|
|
@ -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']);
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue