Pricing.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use app\common\model\Goods;
  5. use app\common\model\DiscountCoupon;
  6. use addons\epay\controller\Index;
  7. use app\common\model\Order;
  8. use app\common\model\Cart;
  9. use app\common\model\OrderInvoice;
  10. use think\Exception;
  11. use think\Db;
  12. /**
  13. * 定价接口
  14. */
  15. class Pricing extends Api
  16. {
  17. protected $noNeedLogin = ['goodslist'];
  18. protected $noNeedRight = ['*'];
  19. /**
  20. *
  21. * @ApiTitle (定价产品列表)
  22. * @ApiMethod (POST)
  23. * @ApiReturnParams (name="name",description="商品名称")
  24. * @ApiReturnParams (name="price",description="价格")
  25. * @ApiReturnParams (name="retail",description="划线价格")
  26. * @ApiReturnParams (name="image",description="商品图片")
  27. */
  28. public function goodslist(){
  29. $list = Goods::field('id,name,price,retail,image')->where('id','in','1,2,3')->select();
  30. $list?$this->success('请求成功',$list):$this->error('请求失败',$list);
  31. }
  32. /**
  33. *
  34. * @ApiTitle (定价产品详情)
  35. * @ApiMethod (POST)
  36. * @ApiParams (name="id",description="产品id")
  37. * @ApiReturnParams (name="name",description="商品名称")
  38. * @ApiReturnParams (name="price",description="价格")
  39. * @ApiReturnParams (name="retail",description="划线价格")
  40. * @ApiReturnParams (name="image",description="商品图片")
  41. * @ApiReturnParams (name="after_sale",description="售后服务")
  42. */
  43. public function gooddetail(){
  44. $gooddetail = Goods::where('id',input('id'))->field('id,name,price,retail,image,after_sale,after_sale')->find();
  45. $gooddetail['coupon'] = DiscountCoupon::where(['uid'=>$this->auth->id,'status'=>1])->select();
  46. $gooddetail?$this->success('请求成功',$gooddetail):$this->error('请求失败',$gooddetail);
  47. }
  48. /**
  49. * 定价产品下单
  50. * @ApiMethod (POST)
  51. * @ApiParams (name="deploy_type",description="部署方式0自己部署 1授权部署")
  52. * @ApiParams (name="deploy",description="授权部署信息(授权部署时传)")
  53. * @ApiParams (name="type",description="1页面下单,2是购物车下单")
  54. * @ApiParams (name="goods_id",description="商品id")
  55. * @ApiParams (name="discount_id",description="优惠券id")
  56. */
  57. public function place_order(){
  58. if(input('deploy_type')==1 && empty(input('deploy'))){
  59. $this->error('请填写授权部署信息');
  60. }
  61. $data = [
  62. 'uid' => $this->auth->id,
  63. 'type' => 1,
  64. 'goods_id' => input('goods_id'),
  65. 'goods_name' => Goods::where('id',input('goods_id'))->value('name'),
  66. 'order_no' => pay_no($this->auth->id),
  67. 'discount_id' => input('discount_id'),
  68. 'discount' => DiscountCoupon::where('id',input('discount_id'))->value('price'),
  69. // 'payment_type' => input('payment_type'),
  70. // 'number_goods' => 1,
  71. 'deploy_type' => input('deploy_type'),
  72. 'deploy' => input('deploy'),
  73. ];
  74. Db::startTrans();
  75. if(input('discount_id')){
  76. $data['amount_real'] = Goods::where('id',input('goods_id'))->value('price') - DiscountCoupon::where('id',input('discount_id'))->value('price');
  77. DiscountCoupon::where('id',input('discount_id'))->update(['status'=>2]);
  78. }else{
  79. $data['amount_real'] = Goods::where('id',input('goods_id'))->value('price');
  80. }
  81. try {
  82. $id = Order::insertGetId($data);
  83. if(input('type')==2){
  84. if(!Cart::where(['user_id'=>$this->auth->id,'goods_id'=>input('goods_id')])->delete()){
  85. $this->error('参数错误');
  86. }
  87. }
  88. // $this->pay_order($data['amount_real'],$data['order_no'],$data['payment_type'],$data['goods_name'],'scan');
  89. Db::commit();
  90. $this->success('下单成功',$id);
  91. }catch (Exception $exception){
  92. Db::rollback();
  93. $this->error($exception);
  94. return false;
  95. }
  96. }
  97. /**
  98. * 取消订单
  99. * @ApiMethod (POST)
  100. * @ApiParams (name="id")
  101. */
  102. public function cancellation_order(){
  103. $dispose = Order::where(['id'=>input('id')])->update(['status'=>0,'cancel_datetime'=>date('Y-m-d H:i:s')]);
  104. if($dispose){
  105. $this->success('取消成功');
  106. }else{
  107. $this->success('取消失败');
  108. }
  109. }
  110. /**
  111. * 定价产品支付
  112. * @ApiMethod (POST)
  113. * @ApiParams (name="id",description="订单id")
  114. */
  115. public function pay_order($amount,$orderid,$type,$title,$method){
  116. return '1';
  117. $params = [
  118. 'amount'=>$amount,
  119. 'orderid'=>$orderid,
  120. 'type'=>$type,//可选alipay或wechat
  121. 'title'=>$title,
  122. 'notifyurl'=>"回调地址",
  123. 'returnurl'=>"返回地址",
  124. 'method'=>$method
  125. // 'openid'=>"用户的OpenID",
  126. // 'auth_code'=>"验证码"
  127. ];
  128. \addons\epay\library\Service::submitOrder($params);
  129. }
  130. /**
  131. * 购物车列表
  132. * @ApiMethod (POST)
  133. * @ApiReturnParams (name="item",description="规格0自己部署 1授权部署")
  134. * @ApiReturnParams (name="remark",description="备注")
  135. */
  136. public function cart_list(){
  137. $list = Cart::all(function ($query){
  138. $query->where('user_id',$this->auth->id)->order('id desc');
  139. });
  140. foreach ($list as $v){
  141. $v['goods'] = Goods::field('name,price,image')->find(['id'=>$v['goods_id']]);
  142. }
  143. $this->success('请求成功',$list);
  144. }
  145. /**
  146. * 购物车详情
  147. * @ApiMethod (POST)
  148. * @ApiParams (name="id",description="记录id")
  149. * @ApiReturnParams (name="item",description="规格0自己部署 1授权部署")
  150. * @ApiReturnParams (name="remark",description="备注")
  151. */
  152. public function cart_details(){
  153. $list = Cart::get(function ($query){
  154. $query->where(['user_id'=>$this->auth->id,'id'=>input('id')])->order('id desc');
  155. });
  156. $list['goods'] = Goods::field('name,price,image,after_sale')->find(['id'=>$list['goods_id']]);
  157. $list['coupon'] = DiscountCoupon::where(['uid'=>$this->auth->id,'status'=>1])->select();
  158. $this->success('请求成功',$list);
  159. }
  160. /**
  161. * 加入购物车
  162. * @ApiMethod ("POST")
  163. * @ApiParams (name="goods_id",description="商品id")
  164. * @ApiParams (name="item",description="规格0自己部署 1授权部署")
  165. * @ApiParams (name="remark",description="备注")
  166. */
  167. public function add_cart(){
  168. if(input('item') == 1 && !input('remark')){
  169. $this->error('部署信息不能为空');
  170. }
  171. $cart = Cart::get(['user_id'=>$this->auth->id,'goods_id'=>input('goods_id')]);
  172. if ($cart){
  173. $this->success('购物车已存在该商品');
  174. }else{
  175. Cart::create(['user_id'=>$this->auth->id,'goods_id'=>input('goods_id'),'item'=>input('item'),'remark'=>input('remark')]);
  176. $this->success('添加成功');
  177. }
  178. }
  179. /**
  180. * 删除购物车
  181. * @ApiMethod ("POST")
  182. * @ApiParams (name="id",description="记录id")
  183. */
  184. public function del_cart(){
  185. $cart = Cart::get(['user_id'=>$this->auth->id,'id'=>input('id')]);
  186. if (!$cart){
  187. $this->error('记录不存在');
  188. }else{
  189. $cart->delete();
  190. $this->success('删除成功');
  191. }
  192. }
  193. }