Goods.php 8.2 KB

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