GoodsFav.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace app\api\controller\mall;
  3. use app\admin\model\GoodsViewFavCart;
  4. use app\common\controller\Api;
  5. use app\common\model\Favourite;
  6. use app\common\model\GoodsSku;
  7. use think\Db;
  8. /**
  9. * 商城收藏接口
  10. * @inheritdoc
  11. */
  12. class GoodsFav extends Api
  13. {
  14. protected $noNeedRight = '*';
  15. /**
  16. * 收藏商品列表
  17. * @ApiParams (name=page,description=分页)
  18. * @ApiParams (name=limit,description=分页)
  19. * @ApiReturnParams (name=goods,description=商品对象)
  20. * @ApiReturnParams (name=sku,description=规格对象)
  21. */
  22. public function index(){
  23. $user=$this->auth->getUser();
  24. Favourite::delNotExists();
  25. $list=$user->favourite()
  26. ->order('id','desc')
  27. ->with(['goods'])
  28. ->paginate(input('limit',15))->toArray();
  29. foreach ($list['data'] as &$item){
  30. $item['sku']=GoodsSku::find($item['goods_sku_id']);
  31. }
  32. $this->success('',$list);
  33. }
  34. /**
  35. * 添加收藏
  36. * @ApiParams (name=goods_id,dexcription=商品id)
  37. * @ApiParams (name=goods_sku_id,dexcription=商品skuid)
  38. */
  39. public function store(){
  40. $user=$this->auth->getUser();
  41. $data=$this->_validate([
  42. 'goods_id'=>['require'],
  43. 'goods_sku_id'=>['require'],
  44. ]);
  45. $sku=GoodsSku::where('goods_id',$data['goods_id'])->where('id',$data['goods_sku_id'])->findOrFail();
  46. if(!$user->favourite()->where('fav_id',$data['goods_id'])->where('goods_sku_id',$data['goods_sku_id'])->find()){
  47. $user->favourite()->save([
  48. 'fav_type'=>'goods',
  49. 'fav_id'=>$data['goods_id'],
  50. 'goods_sku_id'=>$data['goods_sku_id'],
  51. ]);
  52. GoodsViewFavCart::increment($sku['goods_id'],'fav');
  53. }
  54. $this->success();
  55. }
  56. /**
  57. * 删除收藏
  58. * @ApiParams (name=goods_id,dexcription=商品id)
  59. * @ApiParams (name=goods_sku_id,dexcription=商品skuid)
  60. */
  61. public function del(){
  62. $user=$this->auth->getUser();
  63. $data=$this->_validate([
  64. 'goods_id'=>['require'],
  65. 'goods_sku_id'=>['require'],
  66. ]);
  67. $user->favourite()->where('fav_id',$data['goods_id'])->where('goods_sku_id',$data['goods_sku_id'])->delete();
  68. $this->success();
  69. }
  70. }