// +---------------------------------------------------------------------- declare (strict_types = 1); namespace app\api\controller; use app\api\model\Comment as CommentModel; use app\api\service\User as UserService; use app\common\model\CommentPraise as CommentPraiseModel; /** * 商品评价控制器 * Class Comment * @package app\api\controller */ class Comment extends Controller { /** * 商品评价列表 * @param int $goodsId 商品ID * @param int|null $scoreType 评价评分 * @param int $sortType 排序方式 0-时间倒序 1-点赞倒序 * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function list(int $goodsId, int $scoreType = null, $sortType = 0) { // 评价列表 $model = new CommentModel; $list = $model->getCommentList($goodsId, $scoreType, $sortType); return $this->renderSuccess(compact('list')); } /** * 商品评分总数 * @param int $goodsId * @return array|\think\response\Json * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function total(int $goodsId) { // 指定评分总数 $model = new CommentModel; $total = $model->getTotal($goodsId); return $this->renderSuccess(compact('total')); } /** * 商品评价列表 (限制数量, 用于商品详情页展示) * @param int $goodsId * @param int $limit * @return array|\think\response\Json * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function listRows(int $goodsId, int $limit = 5) { // 评价列表 $model = new CommentModel; $list = $model->listRows($goodsId, $limit); // 评价总数量 $total = $model->rowsTotal($goodsId); return $this->renderSuccess(compact('list', 'total')); } public function praise($commentId) { $userinfo = UserService::getCurrentLoginUser(true); $one = CommentPraiseModel::where('comment_id', $commentId)->where('user_id', $userinfo->user_id)->find(); $commentPraiseModel = new CommentPraiseModel; $data = [ 'comment_id' => $commentId, 'user_id' => $userinfo->user_id ]; if (empty($one)) { // 点赞 $commentPraiseModel->addOne($data); CommentModel::where($data)->inc('praise_num', 1); CommentModel::setIncByField($commentId, 'praise_num', 1); return $this->renderSuccess([], '点赞成功'); } else { // 取消点赞 $commentPraiseModel->deleteOne($data); CommentModel::setDecByField($commentId, 'praise_num', 1); return $this->renderSuccess([], '取消点赞成功'); } } }