GoodsEval.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace app\api\controller\mall;
  3. use app\common\controller\Api;
  4. use app\common\model\OrderInfo;
  5. use app\common\model\Orders;
  6. use think\db\Query;
  7. /**
  8. * 商城商品评价接口
  9. * @inheritdoc
  10. */
  11. class GoodsEval extends Api
  12. {
  13. protected $noNeedRight='*';
  14. protected $noNeedLogin=['goods'];
  15. /**
  16. * 商品评价列表
  17. * @ApiParams (name=goods_id,description=商品ID)
  18. * @ApiParams (name=page,description=分页)
  19. * @ApiParams (name=limit,description=分页)
  20. */
  21. public function goods(){
  22. $data=$this->_validate([
  23. 'goods_id|商品'=>['require'],
  24. ]);
  25. $list=\app\common\model\GoodsEval::with(['user'])->where('goods_id',$data['goods_id'])
  26. ->order('id','desc')
  27. ->paginate(input('limit')?:15);
  28. $this->success('',$list);
  29. }
  30. /**
  31. * 待评价已评价列表
  32. * @ApiParams (name=type,description=1待评价2已评价)
  33. * @ApiParams (name=page,description=分页)
  34. * @ApiParams (name=limit,description=分页)
  35. * @ApiReturnParams (name=eval,description=评价对象)
  36. * @ApiReturnParams (name="eval.content",description=评价内容)
  37. */
  38. public function user_list(){
  39. $data=$this->_validate([
  40. 'type'=>['require','in:1,2'],
  41. ]);
  42. $user=$this->auth->getUser();
  43. $goods= OrderInfo::order('id','desc')
  44. ->where('user_id',$user->id)
  45. ->where(function (Query $query)use ($data){
  46. $orders=(new Orders())->getTable();
  47. if($data['type']==1){
  48. $query
  49. ->whereNotExists("select * from goods_eval where goods_eval.order_id=order_info.order_id and goods_eval.goods_id=order_info.goods_id")
  50. ->whereExists("select * from orders where {$orders}.id=order_info.order_id and {$orders}.status=".Orders::S_OVER);
  51. }else{
  52. $query
  53. ->whereExists('select * from goods_eval where goods_eval.order_id=order_info.order_id and goods_eval.goods_id=order_info.goods_id')
  54. ->whereExists("select * from {$orders} where {$orders}.id=order_info.order_id and {$orders}.status=".Orders::S_OVER);
  55. }
  56. })
  57. ->with('orders')
  58. ->group('order_id,goods_id')
  59. ->paginate(input('limit')?:15);
  60. foreach ($goods as $good){
  61. $good['eval']=\app\common\model\GoodsEval::getEval($good);
  62. }
  63. $this->success('',$goods);
  64. }
  65. /**
  66. * 评价商品
  67. * @ApiParams (name=goods_id,description=商品ID)
  68. * @ApiParams (name=order_id,description=订单ID)
  69. * @ApiParams (name=content,description=内容)
  70. */
  71. public function create(){
  72. $data=$this->_validate([
  73. 'goods_id'=>['require'],
  74. 'order_id'=>['require'],
  75. 'content|内容'=>['require','max:250'],
  76. ]);
  77. $user=$this->auth->getUser();
  78. $orderCheck=$user->orders()->where('id',$data['order_id'])
  79. ->where('status',Orders::S_OVER)
  80. ->find();
  81. if(!$orderCheck){
  82. $this->error('您无法进行评价');
  83. }
  84. $has=\app\common\model\GoodsEval::where('user_id',$user['id'])
  85. ->where('goods_id',$data['goods_id'])
  86. ->where('order_id',$data['order_id'])
  87. ->find();
  88. if($has){
  89. $this->error('您已评价');
  90. }
  91. $eval=\app\common\model\GoodsEval::create([
  92. 'user_id'=>$user['id'],
  93. 'goods_id'=>$data['goods_id'],
  94. 'order_id'=>$data['order_id'],
  95. 'content'=>$data['content'],
  96. ]);
  97. $this->success('',$eval);
  98. }
  99. }