Goods.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <?php
  2. namespace app\data\controller\api;
  3. use app\data\model\ShopGoods;
  4. use app\data\model\ShopGoodsCart;
  5. use app\data\model\ShopGoodsCate;
  6. use app\data\model\ShopGoodsCollection;
  7. use app\data\model\ShopGoodsMark;
  8. use app\data\model\ShopOrderItem;
  9. use app\data\service\ExpressService;
  10. use app\data\service\GoodsService;
  11. use think\admin\Controller;
  12. use hg\apidoc\annotation\Title;
  13. use hg\apidoc\annotation\Method;
  14. use hg\apidoc\annotation\Param;
  15. use hg\apidoc\annotation\Returned;
  16. /**
  17. * 商品数据接口
  18. * Class Goods
  19. * @package app\data\controller\api
  20. */
  21. class Goods extends Auth
  22. {
  23. /**
  24. * @Title ("获取分类数据")
  25. * @throws \think\db\exception\DataNotFoundException
  26. * @throws \think\db\exception\DbException
  27. * @throws \think\db\exception\ModelNotFoundException
  28. */
  29. public function getCate()
  30. {
  31. $this->success('获取分类成功', ShopGoodsCate::treeData());
  32. }
  33. /**
  34. * 获取标签数据
  35. */
  36. public function getMark()
  37. {
  38. $this->success('获取标签成功', ShopGoodsMark::items());
  39. }
  40. /**
  41. * @Title ("商品数据展示")
  42. * @Param ("cateids",desc="商品分类id")
  43. * @throws \think\db\exception\DataNotFoundException
  44. * @throws \think\db\exception\DbException
  45. * @throws \think\db\exception\ModelNotFoundException
  46. */
  47. public function getGoods()
  48. {
  49. // 更新访问统计
  50. $map = $this->_vali(['code.default' => '']);
  51. if ($map['code']) ShopGoods::mk()->where($map)->inc('num_read')->update([]);
  52. // 商品数据处理
  53. $query = ShopGoods::mQuery()->like('name,marks,cateids,payment')->equal('code,vip_entry');
  54. $result = $query->where(['deleted' => 0, 'status' => 1])->order('sort desc,id desc')->page(true, false, false, 10);
  55. if (count($result['list']) > 0) GoodsService::bindData($result['list']);
  56. $this->success('获取商品数据', $result);
  57. }
  58. /**
  59. * 获取配送区域
  60. */
  61. public function getRegion()
  62. {
  63. $this->success('获取区域成功', ExpressService::region(3, 1));
  64. }
  65. /**
  66. * @Title("购物车添加")
  67. * @Param ("admin_id",desc="商家id")
  68. * @Param ("goods_id",desc="商品id")
  69. * @Param ("item_id",desc="规格id")
  70. * @Param ("num",desc="数量")
  71. * @return void
  72. */
  73. public function cart_add()
  74. {
  75. $user = $this->getUser();
  76. $data = $this->_vali([
  77. 'admin_id.default'=>'',
  78. 'item_id.default' => '',
  79. 'num.default' => '',
  80. 'goods_id.default' =>'',
  81. 'admin_id.require' =>'店铺不能为空',
  82. 'item_id.require' => '选择商品规格不能为空!',
  83. 'num.require' => '数量不能为空!',
  84. 'goods_id.require' =>'商品不能为空'
  85. ]);
  86. $add_data=[
  87. 'admin_id'=>$data['admin_id'],
  88. 'goods_id'=>$data['goods_id'],
  89. 'item_id'=>$data['item_id'],
  90. 'user_id'=>$user['id'],
  91. 'num'=>$data['num'],
  92. 'create_time'=>date('Y-m-d H:i:s')
  93. ];
  94. ShopGoodsCart::mk()->insert($add_data);
  95. $this->success('成功加入购物车!');
  96. }
  97. /**
  98. * @Title ("购物车列表")
  99. * @return void
  100. * @throws \think\db\exception\DataNotFoundException
  101. * @throws \think\db\exception\DbException
  102. * @throws \think\db\exception\ModelNotFoundException
  103. *
  104. */
  105. public function goods_cart_list(){
  106. $user = $this->getUser();
  107. $query = ShopGoodsCart::mQuery()->alias('cart');
  108. $cart_list = $query ->join('system_user admin','admin.id=cart.admin_id')
  109. ->where('cart.user_id',$user['id'])
  110. ->group('cart.admin_id')
  111. ->field('cart.admin_id,admin.nickname')
  112. ->page(true, false, false, 10);
  113. foreach ($cart_list['list'] as $k=>$v){
  114. $cart_list['list'][$k]['goods_item']= ShopGoodsCart::mk()->alias('cart')
  115. ->join('shop_goods goods','cart.goods_id=goods.id')
  116. ->join('shop_goods_item item','cart.item_id=item.id')
  117. ->join('system_user admin','admin.id=cart.admin_id')
  118. ->where('cart.user_id',$user['id'])
  119. ->where('cart.admin_id',$cart_list['list'][$k]['admin_id'])
  120. ->field('cart.*,goods.cover,goods.name,item.price_selling,item.goods_spec')
  121. ->select();
  122. }
  123. $this->success('我的购物车列表',$cart_list);
  124. }
  125. /**
  126. * @Title ("修改购物车")
  127. * @Param ("cart_id",desc="购物车id")
  128. * @Param ("num",desc="数量")
  129. */
  130. public function goods_cart_save(){
  131. $user = $this->getUser();
  132. $cart_id= input('cart_id');
  133. $num = input('num');
  134. ShopGoodsCart::mk()->where(array('id'=>$cart_id,'user_id'=>$user['id']))->save(['num'=>$num]);
  135. $this->success('购物车修改完成');
  136. }
  137. /**
  138. * @Title ("删除购物车")
  139. * @Param ("cart_ids",desc="购物车id")
  140. */
  141. public function goods_cart_del(){
  142. $user = $this->getUser();
  143. $cart_id= input('cart_ids');
  144. ShopGoodsCart::mk()->whereIn('id',$cart_id)->where('user_id',$user['id'])->delete();
  145. $this->success('购物车已删除');
  146. }
  147. /**
  148. * @Title ("添加我的收藏")
  149. * @Param ("goods_id",desc="商品id")
  150. */
  151. public function collection(){
  152. $user =$this->getUser();
  153. $goods_id = input('goods_id');
  154. ShopGoodsCollection::mk()->insertGetId(['uuid'=>$user['id'],'goods_id'=>$goods_id,'create_at'=>date('Y-m-d H:i:s')]);
  155. $this->success('商品收藏成功');
  156. }
  157. /**
  158. * @Title ("删除我的收藏")
  159. * @Param ("coll_ids",desc="收藏id")
  160. */
  161. public function del_collection(){
  162. $user = $this->getUser();
  163. $coll_ids = input('coll_ids');
  164. ShopGoodsCollection::mk()->whereIn('id',$coll_ids)->where('uuid',$user['id'])->delete();
  165. $this->success('商品收藏已取消');
  166. }
  167. /**
  168. * @Title ("我的收藏列表")
  169. */
  170. public function collection_list(){
  171. $user = $this->getUser();
  172. $list = ShopGoodsCollection::mk()->where('uuid',$user['id'])->order('id','desc')->paginate();
  173. $this->success('我的收藏列表',$list);
  174. }
  175. }