generated from panliang/owl-admin-starter
api
parent
feaad6fd2f
commit
15463a5b90
|
|
@ -50,7 +50,7 @@ class ArticleController extends AdminController
|
||||||
return $this->baseForm()->title('')->body([
|
return $this->baseForm()->title('')->body([
|
||||||
amisMake()->TextControl()->name('title')->label(__('article.title'))->required(true),
|
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('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),
|
amisMake()->ImageControl()->name('cover')->label(__('article.cover'))->autoUpload(true),
|
||||||
Components::make()->sortControl('sort', __('article.sort')),
|
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('*不填写则默认为创建时间'),
|
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([
|
->columns([
|
||||||
amisMake()->TableColumn()->name('id')->label(__('party_user.id')),
|
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()->name('name')->label(__('party_user.name')),
|
||||||
amisMake()->TableColumn()->type('avatar')->src('${avatar}')->name('avatar')->label(__('party_user.avatar')),
|
amisMake()->TableColumn()->type('avatar')->src('${avatar}')->name('avatar')->label(__('party_user.avatar')),
|
||||||
amisMake()->TableColumn()->name('cate.name')->label(__('party_user.cate_id')),
|
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();
|
$category = Keyword::where('key', 'category_1')->first();
|
||||||
if (!$category) {
|
if (!$category) {
|
||||||
return $this->response()->error('文章不存在');
|
return $this->response()->fail('文章不存在');
|
||||||
}
|
}
|
||||||
|
|
||||||
$article = Article::where('category_id', $category->id)->publish()->sort()->first();
|
$article = Article::where('category_id', $category->id)->publish()->sort()->first();
|
||||||
if (!$article) {
|
if (!$article) {
|
||||||
return $this->response()->success([]);
|
return $this->response()->success('');
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->response()->success(ArticleResource::make($article));
|
return $this->response()->success(ArticleResource::make($article));
|
||||||
|
|
@ -31,12 +31,12 @@ class ArticleController extends Controller
|
||||||
$user = auth('api')->user();
|
$user = auth('api')->user();
|
||||||
$category = Keyword::where('key', 'category_2')->first();
|
$category = Keyword::where('key', 'category_2')->first();
|
||||||
if (!$category) {
|
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) {
|
if (!$article) {
|
||||||
return $this->response()->success([]);
|
return $this->response()->success('');
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->response()->success(ArticleResource::make($article));
|
return $this->response()->success(ArticleResource::make($article));
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,8 @@ class AuthController extends Controller
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$user = PartyUser::where('username', $request->input('username'))->first();
|
$user = PartyUser::where('username', $request->input('username'))->first();
|
||||||
if (!Hash::check($request->input('password'), $user->password)) {
|
if (!$user || !Hash::check($request->input('password'), $user->password)) {
|
||||||
throw new BaseException('用户名或密码错误');
|
return $this->response()->fail('用户名或密码错误');
|
||||||
}
|
}
|
||||||
// 更新第三方账户
|
// 更新第三方账户
|
||||||
// $openid = $request->input('openid');
|
// $openid = $request->input('openid');
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,38 @@ class RankController extends Controller
|
||||||
return $this->response()->success($rankList);
|
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)
|
public function dates(Request $request)
|
||||||
{
|
{
|
||||||
|
|
@ -56,7 +88,7 @@ class RankController extends Controller
|
||||||
return $this->response()->success($list);
|
return $this->response()->success($list);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 党员其他季度的排名记录
|
// 其他季度的排名记录
|
||||||
public function list(Request $request)
|
public function list(Request $request)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
|
|
@ -86,4 +118,33 @@ class RankController extends Controller
|
||||||
|
|
||||||
return $this->response()->success($rankList);
|
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,
|
'id' => $this->id,
|
||||||
'title' => $this->title,
|
'title' => $this->title,
|
||||||
'content' => $this->content,
|
'content' => $this->content,
|
||||||
|
'party_cate' => $this->whenLoaded('partyCate')
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,11 @@ class Article extends Model
|
||||||
return $this->belongsTo(Keyword::class, 'category_id');
|
return $this->belongsTo(Keyword::class, 'category_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function partyCate()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(PartyCate::class, 'party_cate_id');
|
||||||
|
}
|
||||||
|
|
||||||
public function scopeSort($q)
|
public function scopeSort($q)
|
||||||
{
|
{
|
||||||
$q->orderBy('sort', 'asc')->latest('published_at')->latest('id');
|
$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::post('web/upload', [\App\Http\Controllers\WebController::class, 'upload']);
|
||||||
|
|
||||||
Route::get('keyword', [\App\Http\Controllers\Api\KeywordController::class, 'index']);
|
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']);
|
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::post('user/profile', [\App\Http\Controllers\Api\AccountController::class, 'update']);
|
||||||
|
|
||||||
Route::get('article/cate', [\App\Http\Controllers\Api\ArticleController::class, 'cate']);
|
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