<?php namespace App\Http\Controllers\Api; use App\Command\Log; use App\Handlers\FileUploadHandler; use App\Models\Comment; use App\Models\CommentTpl; use App\Jobs\AutoCompleteOrder; use App\Models\OrderGoods; use App\Models\OrderInfo; use Illuminate\Support\Facades\DB; use Illuminate\Http\Request; class CommentController extends BaseController { public function add(Request $request) { $useObj = $request->user(); $og_id = $request->og_id ?? 0; $star = $request->star ?? 0; $content = $request->content ?? ''; $ogObj = OrderGoods::find($og_id); if (!$ogObj) { return $this->JsonResponse('', '参数错误', 201); } $oid = $ogObj->order_id; $orderObj = OrderInfo::find($oid); DB::beginTransaction(); try { $comObj = new Comment(); $comObj->og_id = $og_id; $comObj->goods_id = $ogObj->goods_id; $comObj->star = $star; $comObj->content = $content; $comObj->nickname = $useObj->name; $comObj->avatar = $useObj->avatar ?? ''; $comObj->phone = $useObj->phone; if ($comObj->save()) { //更新评论状态 $ogObj->is_comment = 1; $ogObj->save(); } //2分钟执行订单分佣 $count = OrderGoods::where('order_id', $oid)->where('is_comment', 0)->count(); Log::add('订单商品评论' . $og_id, ['num' => $count]); if ($count == 0) { if ($useObj->spuid || $useObj->merchant_id) { $orderObj->is_commission = 1; $orderObj->order_status = 4; $orderObj->save(); } // Log::add('调用分佣', $orderObj->toArray()); // $this->dispatch(new AutoCompleteOrder($orderObj, 10)); } DB::commit(); return $this->JsonResponse(''); } catch (\Exception $exception) { Log::add('添加评论失败', $exception->getMessage()); DB::rollBack(); return $this->JsonResponse('', '添加评论失败', 201); } } public function getList(Request $request) { $gid = $request->gid ?? 0; $page = $request->page ?? 1; $limit = $request->limit ?? 10; $sql = Comment::where(['goods_id' => $gid, 'deleted_at' => null]) ->select('id', 'nickname', 'avatar', 'content', 'addtime'); $data = [ 'total' => $sql->count(), 'total_page' => ceil($sql->count() / $limit), 'list' => [] ]; $listData = $sql->offset(($page - 1) * $limit)->limit($limit)->orderBy('created_at', 'DESC')->get(); if ($listData->toArray()) { foreach ($listData as $item) { $data['list'][] = [ 'id' => $item->id, 'nickname' => $item->nickname, 'avatar' => $item->avatar ? env('IMAGE_URL') . $item->avatar : '', 'content' => $item->content, 'addtime' => $item->addtime, ]; } } return $this->JsonResponse($data); } }