User.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
  4. * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
  5. * @author pillar<ltmn@qq.com>
  6. * 小程序公共API服务
  7. */
  8. namespace app\popupshop\controller\api\v1;
  9. use app\popupshop\controller\api\Base;
  10. use app\popupshop\model\SaleOrder;
  11. use app\popupshop\model\SaleOrderCache;
  12. use app\popupshop\model\SaleUser;
  13. use app\popupshop\model\Bank;
  14. use app\popupshop\model\BankBill;
  15. use think\facade\Request;
  16. class User extends Base{
  17. public function initialize() {
  18. parent::initialize();
  19. if(!$this->user){
  20. exit(json_encode(['code'=>401,'msg'=>'用户认证失败']));
  21. }
  22. }
  23. /**
  24. * 获取用户的套餐订单
  25. */
  26. public function saleOrder(){
  27. $param['page'] = Request::param('page/d');
  28. $param['types'] = Request::param('types/d');
  29. $param['sign'] = Request::param('sign');
  30. $rel = $this->apiSign($param);
  31. if($rel['code'] != 200){
  32. return enjson(204,'签名失败');
  33. }
  34. $condition = [];
  35. $condition['member_miniapp_id'] = $this->miniapp_id;
  36. $condition['user_id'] = $this->user->id;
  37. $condition['is_del'] = 0;
  38. switch ($param['types']) {
  39. case 1:
  40. $condition['paid_at'] = 1;
  41. $condition['is_entrust'] = 0;
  42. break;
  43. case 2:
  44. $condition['paid_at'] = 1;
  45. $condition['is_entrust'] = 1;
  46. $condition['express_status'] = 0;
  47. break;
  48. case 3:
  49. $condition['paid_at'] = 1;
  50. $condition['is_entrust'] = 1;
  51. $condition['express_status'] = 1;
  52. default:
  53. $condition['paid_at'] = 1;
  54. break;
  55. }
  56. $order = SaleOrder::where($condition)->order('id desc')->paginate(10);
  57. if($order->isEmpty()){
  58. return enjson(204,'空内容');
  59. }
  60. $data = [];
  61. foreach ($order as $key => $value) {
  62. $data[$key] = SaleOrder::order_data($value);
  63. }
  64. return enjson(200,'成功',$data);
  65. }
  66. /**
  67. * 获取用户的订单
  68. */
  69. public function saleOrderReview(){
  70. $param['order_no'] = Request::param('order_no');
  71. $param['sign'] = Request::param('sign');
  72. $rel = $this->apiSign($param);
  73. if($rel['code'] != 200){
  74. return enjson(204,'签名失败');
  75. }
  76. $validate = $this->validate($param,'Sale.saleOrderReview');
  77. if(true !== $validate){
  78. return enjson(403,$validate);
  79. }
  80. $condition = [];
  81. $condition['member_miniapp_id'] = $this->miniapp_id;
  82. $condition['user_id'] = $this->user->id;
  83. $condition['is_del'] = 0;
  84. $condition['order_no'] = $param['order_no'];
  85. $order = SaleOrder::where($condition)->find();
  86. if(empty($order)){
  87. return enjson(204,'空内容');
  88. }
  89. return enjson(200,'成功',SaleOrder::order_data($order));
  90. }
  91. /**
  92. * 申请退货
  93. */
  94. public function orderOut(){
  95. if (request()->isPost()) {
  96. $param['order_no'] = Request::param('order_no');
  97. $param['sign'] = Request::param('sign');
  98. $rel = $this->apiSign($param);
  99. if($rel['code'] != 200){
  100. return enjson(204,'签名失败');
  101. }
  102. $validate = $this->validate($param,'Sale.saleOrderReview');
  103. if(true !== $validate){
  104. return enjson(403,$validate);
  105. }
  106. $condition = [];
  107. $condition['member_miniapp_id'] = $this->miniapp_id;
  108. $condition['user_id'] = $this->user->id;
  109. $condition['paid_at'] = 1; //支付
  110. $condition['is_del'] = 0; //删除
  111. $condition['is_entrust'] = 0; //确认委托
  112. $condition['is_out'] = 0; //退货
  113. $condition['is_settle'] = 0; //结算
  114. $condition['order_no'] = $param['order_no'];
  115. $order = SaleOrder::where($condition)->find();
  116. if(empty($order)){
  117. return enjson(403,'当前订单不支持退货');
  118. }
  119. foreach ($order as $key => $value) {
  120. # code...
  121. }
  122. //更新订单状态
  123. $order->is_out = 1;
  124. $order->status = 1;
  125. $order->save();
  126. SaleOrderCache::where(['order_no' => $param['order_no']])->update(['is_out' => 1,'is_entrust' => 0]);
  127. //把资金退回账户
  128. $amount = $order->order_amount*6/1000;
  129. $fees = $amount < 0.01 ? 0.01 : $amount;
  130. $order_amount = (float)money($order->order_amount-$fees);
  131. Bank::setDueMoney($this->miniapp_id,$order->user_id,$order_amount);
  132. BankBill::add($this->miniapp_id,$order->user_id,$order_amount,'退货,扣除交易手续费¥'.$fees,0,$order->order_no);
  133. return enjson(200,'退货成功');
  134. }
  135. }
  136. }