order-food-admin/app/Http/Controllers/Api/Miniprogram/TalkController.php

80 lines
2.6 KiB
PHP

<?php
namespace App\Http\Controllers\Api\Miniprogram;
use DB;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Models\{UserTalk,UserPraiseTalk};
use App\Http\Resources\{UserTalksResource};
class TalkController extends Controller
{
public function list(Request $request){
$sort_type = $request->input('sort_type', '1');
$per_page = $request->input('per_page', 10);
$user = auth('api')->user();
$query = UserTalk::with(['praise', 'user']);
if($sort_type == 2){
$query->orderBy('praise_num', 'desc');
}
$list = $query->where('is_show', 1)->orderBy('created_at', 'desc')->paginate($per_page);
// dd($list);
return UserTalksResource::collection($list)->additional(['code' => Response::HTTP_OK, 'message' => '']);
}
/**
* 发表言论
*/
public function post(Request $request){
$content = $request->input('content');
//检查是否有头像昵称
$user = auth('api')->user();
//检测是否绑定昵称头像
if(!$user->avatar || !$user->nick_name){
return $this->error('未绑定昵称头像', 501);
}
$len = mb_strlen($content);
if($len <= 0 || $len > 200){
return $this->error('留言长度应不长于200');
}
UserTalk::create([
'user_id' => $user->id,
'talk_content' => $content,
'is_show' => 1
]);
return $this->success('发布成功!');
}
/**
* 点赞, 取消点赞
*/
public function clickPraise($talk_id){
$user = auth('api')->user();
$talk = UserTalk::findOrFail($talk_id);
if(!$talk){
return $this->error('数据不存在', 404);
}
try {
DB::beginTransaction();
if(UserPraiseTalk::where(['user_id'=>$user->id, 'talk_id'=>$talk_id])->exists()){//已点赞,则取消
UserPraiseTalk::where(['user_id'=>$user->id, 'talk_id'=>$talk_id])->delete();
$talk->decrement('praise_num');
$talk_praise = false;
}else{
UserPraiseTalk::create([
'user_id'=>$user->id,
'talk_id'=>$talk_id,
]);
$talk->increment('praise_num');
$talk_praise = true;
}
DB::commit();
} catch(\Throwable $th){
return $this->error('操作失败:'.$th->getMessage());
}
return $this->success(['praise_status'=>$talk_praise],'操作成功');
}
}