80 lines
2.6 KiB
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],'操作成功');
|
|
}
|
|
} |