Comment.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. /**
  3. *
  4. * @copyright ©2020 点小铺
  5. * @author hanj
  6. * @link: https://dyuit.com
  7. * Created by VSCode
  8. */
  9. namespace app\api\controller\sharing;
  10. use app\api\controller\Controller;
  11. use app\api\model\sharing\Order as OrderModel;
  12. use app\api\model\sharing\OrderGoods as OrderGoodsModel;
  13. use app\api\model\sharing\Comment as CommentModel;
  14. /**
  15. * 拼团订单评价管理
  16. * Class Comment
  17. * @package app\api\controller\sharing
  18. */
  19. class Comment extends Controller
  20. {
  21. /**
  22. * 待评价订单商品列表
  23. * @param $order_id
  24. * @return array
  25. * @throws \Exception
  26. * @throws \app\common\exception\BaseException
  27. * @throws \think\exception\DbException
  28. */
  29. public function order($order_id)
  30. {
  31. // 用户信息
  32. $user = $this->getUser();
  33. // 订单信息
  34. $order = OrderModel::getUserOrderDetail($order_id, $user['user_id']);
  35. // 验证订单是否已完成
  36. $model = new CommentModel;
  37. if (!$model->checkOrderAllowComment($order)) {
  38. return $this->renderError($model->getError());
  39. }
  40. // 待评价商品列表
  41. /* @var \think\Collection $goodsList */
  42. $goodsList = OrderGoodsModel::getNotCommentGoodsList($order_id);
  43. if ($goodsList->isEmpty()) {
  44. return $this->renderError('该订单没有可评价的商品');
  45. }
  46. // 提交商品评价
  47. if ($this->request->isPost()) {
  48. $formData = $this->request->post('formData', '', null);
  49. if ($model->addForOrder($order, $goodsList, $formData)) {
  50. return $this->renderSuccess([], '评价发表成功');
  51. }
  52. return $this->renderError($model->getError() ?: '评价发表失败');
  53. }
  54. return $this->renderSuccess(compact('goodsList'));
  55. }
  56. /**
  57. * 商品评价列表
  58. * @param $goods_id
  59. * @param int $scoreType
  60. * @return array
  61. * @throws \think\exception\DbException
  62. */
  63. public function lists($goods_id, $scoreType = -1)
  64. {
  65. $model = new CommentModel;
  66. $list = $model->getGoodsCommentList($goods_id, $scoreType);
  67. $total = $model->getTotal($goods_id);
  68. return $this->renderSuccess(compact('list', 'total'));
  69. }
  70. }