Package.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. <?php
  2. namespace app\api\controller\service;
  3. use app\common\controller\Api;
  4. use addons\service\library\Refund;
  5. use think\Db;
  6. use think\Exception;
  7. use think\Loader;
  8. /**
  9. * 套餐接口
  10. */
  11. class Package extends Api
  12. {
  13. protected $noNeedLogin = ['packageList','packageDetail','goodsPackage'];
  14. protected $noNeedRight = ['*'];
  15. /**
  16. * 首页套餐卡列表
  17. * @return void
  18. * @throws \think\db\exception\DataNotFoundException
  19. * @throws \think\db\exception\ModelNotFoundException
  20. * @throws \think\exception\DbException
  21. */
  22. public function packageList()
  23. {
  24. if (!$this->request->isPost()) {
  25. $this->error('请求方式异常');
  26. }
  27. $limit = 10;
  28. $page = input('page/d',1);
  29. $page = empty($page)?0:($page-1)*$limit;
  30. $limit = $page.','.$limit;
  31. $list = \app\api\model\service\PackageCard::where(['status'=>'normal'])->field('id,name,images,original_price,price,salenums,info_images,flow_images')->order('weigh desc')->limit($limit)->select();
  32. if($list)
  33. {
  34. foreach ($list as &$value)
  35. {
  36. $value = \app\api\model\service\PackageCard::packageInfo($value);
  37. }
  38. }
  39. $this->success('信息返回成功',$list);
  40. }
  41. public function goodsPackage()
  42. {
  43. if (!$this->request->isPost()) {
  44. $this->error('请求方式异常');
  45. }
  46. $goodsId = input('goods_id','');
  47. $list = \app\api\model\service\PackageGoods::where(['package_card_id'=>$goodsId,'status'=>'normal'])->field('package_card_id')->group('package_card_id')->order('id desc')->select();
  48. $data = [];
  49. if($list)
  50. {
  51. foreach ($list as $value)
  52. {
  53. $package = \app\api\model\service\PackageCard::where(['id'=>$value['package_card_id'],'status'=>'normal'])->field('id,name,images,original_price,price,salenums,content')->find();
  54. if($package)
  55. {
  56. $data[] = \app\api\model\service\PackageCard::packageInfo($package);
  57. }
  58. }
  59. }
  60. $this->success('信息返回成功',$data);
  61. }
  62. public function packageDetail()
  63. {
  64. if (!$this->request->isPost()) {
  65. $this->error('请求方式异常');
  66. }
  67. $id = input('id','');
  68. $uid = $this->auth->isLogin()?$this->auth->id:'';
  69. $money = $uid?\app\api\model\service\User::where('id',$uid)->value('money'):0.00;
  70. $isPlus = $uid?\app\api\model\service\UserInfo::where('user_id',$uid)->value('is_plus'):0;
  71. $discount = $uid?\app\api\model\service\UserInfo::where('user_id',$uid)->value('discount '):0;
  72. $package = \app\api\model\service\PackageCard::where(['status'=>'normal','id'=>$id])->find();
  73. !$package && $this->error('套餐产品信息异常');
  74. $package = \app\api\model\service\PackageCard::packageInfo($package);
  75. $package['goods'] = \app\api\model\service\PackageGoods::getList($package['id']);
  76. $this->success('信息返回成功',['package'=>$package,'money'=>$money,'isPlus'=>$isPlus,'discount'=>$discount]);
  77. }
  78. public function createPackageOrder()
  79. {
  80. if (!$this->request->isPost()) {
  81. $this->error('请求方式异常');
  82. }
  83. $uid = $this->auth->id;
  84. $post = input('post.','','trim,strip_tags,htmlspecialchars,xss_clean');
  85. $validate = Loader::validate('service.PackageOrder');
  86. if(!$validate->scene('add')->check($post)){
  87. $this->error($validate->getError());
  88. }
  89. $re = '';
  90. Db::startTrans();
  91. try{
  92. $post['user_id'] = $uid;
  93. $re = \app\api\model\service\PackageOrder::createOrder($post);
  94. Db::commit();
  95. } catch (Exception $e) {
  96. Db::rollback();
  97. $this->error($e->getMessage());
  98. }
  99. $this->success('支付信息返回成功',$re);
  100. }
  101. public function packageOrderList()
  102. {
  103. if (!$this->request->isPost()) {
  104. $this->error('请求方式异常');
  105. }
  106. $uid = $this->auth->id;
  107. $post = input('post.','','trim,strip_tags');
  108. $post['user_id'] = $uid;
  109. $re = [];
  110. try{
  111. $re = \app\api\model\service\PackageOrder::getOrderList($post);
  112. } catch (Exception $e) {
  113. $this->error($e->getMessage());
  114. }
  115. $this->success('信息返回成功',$re);
  116. }
  117. public function getPackageDetail()
  118. {
  119. if (!$this->request->isPost()) {
  120. $this->error('请求方式异常');
  121. }
  122. $type = input('type','');
  123. if($type == 'detail')
  124. {
  125. $detailId = input('detail_id','');
  126. $info = \app\api\model\service\PackageOrderDetail::where(['id'=>$detailId])->find();
  127. !$info && $this->error('信息异常');
  128. $this->success('信息返回成功',$info);
  129. }
  130. $id = input('id','');
  131. $list = \app\api\model\service\PackageOrderDetail::where(['package_order_id'=>$id])->select();
  132. $this->success('信息返回成功',$list);
  133. }
  134. public function createServiceOrder()
  135. {
  136. if (!$this->request->isPost()) {
  137. $this->error('请求方式异常');
  138. }
  139. $uid = $this->auth->id;
  140. $post = input('post.','','trim,strip_tags');
  141. $post['user_id'] = $uid;
  142. try{
  143. \app\api\model\service\Order::createPackageOrder($post);
  144. } catch (Exception $e) {
  145. $this->error($e->getMessage());
  146. }
  147. $this->success('订单预约成功');
  148. }
  149. public function cancelPackage()
  150. {
  151. if (!$this->request->isPost()) {
  152. $this->error('请求方式异常');
  153. }
  154. $uid = $this->auth->id;
  155. $id = input('id','');
  156. $info = \app\api\model\service\PackageOrder::where(['id'=>$id,'status'=>['in',[1,-1]],'user_id'=>$uid])->field('id,status,user_id,starttime,endtime,orderId,payprice,trade_no,paytype')->find();
  157. !$info && $this->error('当前订单无法申请退款');
  158. //$info['endtime']<time() && $this->error('订单已超出有效期,无法退款');
  159. $totalPrice = sprintf("%.2f",\app\api\model\service\PackageOrderDetail::getRefundPrice($info));
  160. \app\api\model\service\PackageOrder::where(['id'=>$id])->update(['is_service'=>1,'status'=>-2,'original_status'=>$info['status'],'total_refund_price'=>$totalPrice,'refund_price'=>$totalPrice]);
  161. $this->success('套餐卡退款申请已提交');
  162. }
  163. }