Orderrefund.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <?php
  2. /**
  3. * Index.php
  4. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  5. * =========================================================
  6. * Copy right 2015-2025 杭州牛之云科技有限公司, 保留所有权利。
  7. * ----------------------------------------------
  8. * 官方网址: https://www.niushop.com
  9. * =========================================================
  10. * @author : niuteam
  11. * @date : 2022.8.8
  12. * @version : v5.0.0.1
  13. */
  14. namespace app\api\controller;
  15. use app\model\member\Member as MemberModel;
  16. use app\model\order\OrderRefund as OrderRefundModel;
  17. class Orderrefund extends BaseApi
  18. {
  19. /**
  20. * 售后列表
  21. */
  22. public function lists()
  23. {
  24. $token = $this->checkToken();
  25. if ($token[ 'code' ] < 0) return $this->response($token);
  26. $order_refund_model = new OrderRefundModel();
  27. $condition = array (
  28. [ "nop.member_id", "=", $this->member_id ],
  29. );
  30. $refund_status = isset($this->params[ 'refund_status' ]) ? $this->params[ 'refund_status' ] : 'all';
  31. switch ( $refund_status ) {
  32. // case "waitpay"://处理中
  33. // $condition[] = [ "refund_status", "=", 1 ];
  34. // break;
  35. default :
  36. $condition[] = [ "nop.refund_status", "<>", 0 ];
  37. break;
  38. }
  39. $page_index = isset($this->params[ 'page' ]) ? $this->params[ 'page' ] : 1;
  40. $page_size = isset($this->params[ 'page_size' ]) ? $this->params[ 'page_size' ] : PAGE_LIST_ROWS;
  41. $res = $order_refund_model->getRefundOrderGoodsPageList($condition, $page_index, $page_size, "refund_action_time desc");
  42. return $this->response($res);
  43. }
  44. /**
  45. * 退款数据查询
  46. * @return string
  47. */
  48. public function refundData()
  49. {
  50. $token = $this->checkToken();
  51. if ($token[ 'code' ] < 0) return $this->response($token);
  52. $order_goods_id = isset($this->params[ 'order_goods_id' ]) ? $this->params[ 'order_goods_id' ] : '0';
  53. $order_refund_model = new OrderRefundModel();
  54. $order_goods_info_result = $order_refund_model->getRefundDetail($order_goods_id);
  55. $order_goods_info = $order_goods_info_result[ "data" ];//订单项信息
  56. $refund_money_array = $order_refund_model->getOrderRefundMoney($order_goods_id);
  57. if (isset($refund_money_array[ 'code' ]) && $refund_money_array[ 'code' ] != 0) return $this->response($refund_money_array);
  58. $refund_delivery_money = $refund_money_array[ 'refund_delivery_money' ];//其中的运费
  59. $refund_money = $refund_money_array[ 'refund_money' ];//总退款
  60. $refund_type = $order_refund_model->getRefundType($order_goods_info);
  61. $refund_reason_type = $order_refund_model->refund_reason_type;
  62. $result = array (
  63. "order_goods_info" => $order_goods_info,
  64. "refund_money" => $refund_money,
  65. "refund_type" => $refund_type,
  66. "refund_reason_type" => $refund_reason_type,
  67. "refund_delivery_money" => $refund_delivery_money
  68. );
  69. return $this->response($this->success($result));
  70. }
  71. /**
  72. * 多个退款数据查询
  73. */
  74. public function refundDataBatch()
  75. {
  76. $token = $this->checkToken();
  77. if ($token[ 'code' ] < 0) return $this->response($token);
  78. $order_goods_ids = isset($this->params[ 'order_goods_ids' ]) ? $this->params[ 'order_goods_ids' ] : '';
  79. $order_refund_model = new OrderRefundModel();
  80. if (empty($order_goods_ids)) return $this->response($this->error('', '未传order_goods_ids'));
  81. $order_goods_id_arr = explode(',', $order_goods_ids);
  82. foreach ($order_goods_id_arr as $item) {
  83. $order_goods_info_result[] = $order_refund_model->getRefundDetail($item)[ 'data' ] ?? [];
  84. }
  85. $order_goods_info = $order_goods_info_result;//订单项信息
  86. $refund_money_array = $order_refund_model->getOrderRefundMoney($order_goods_ids);
  87. $refund_delivery_money = $refund_money_array[ 'refund_delivery_money' ];//其中的运费
  88. $refund_money = $refund_money_array[ 'refund_money' ];//总退款
  89. $refund_type = $order_refund_model->getRefundOrderType($order_goods_info[ 0 ][ 'order_id' ]);
  90. $refund_reason_type = $order_refund_model->refund_reason_type;
  91. $result = array (
  92. "order_goods_info" => $order_goods_info,
  93. "refund_money" => $refund_money,
  94. "refund_type" => $refund_type,
  95. "refund_reason_type" => $refund_reason_type,
  96. "refund_delivery_money" => $refund_delivery_money
  97. );
  98. return $this->response($this->success($result));
  99. }
  100. /**
  101. * 发起退款
  102. */
  103. public function refund()
  104. {
  105. $token = $this->checkToken();
  106. if ($token[ 'code' ] < 0) return $this->response($token);
  107. $member_model = new MemberModel();
  108. $member_info_result = $member_model->getMemberInfo([ [ "member_id", "=", $this->member_id ] ]);
  109. $member_info = $member_info_result[ "data" ];
  110. $order_refund_model = new OrderRefundModel();
  111. $order_goods_ids = $this->params[ 'order_goods_ids' ] ?? '0';
  112. $refund_type = $this->params[ 'refund_type' ] ?? 1;
  113. $refund_reason = $this->params[ 'refund_reason' ] ?? '';
  114. $refund_remark = $this->params[ 'refund_remark' ] ?? '';
  115. if (empty($order_goods_ids)) return $this->response($this->error('', '未传order_goods_ids'));
  116. $buyer_name = empty($member_info[ 'nickname' ]) ? '' : '【' . $member_info[ 'nickname' ] . '】';
  117. $log_data = [
  118. 'uid' => $this->member_id,
  119. 'nick_name' => $member_info[ 'nickname' ],
  120. 'action' => '买家' . $buyer_name . '发起了退款申请',
  121. 'action_way' => 1
  122. ];
  123. $order_goods_ids = explode(',', $order_goods_ids);
  124. foreach ($order_goods_ids as $item) {
  125. $data = array (
  126. "order_goods_id" => $item,
  127. "refund_type" => $refund_type,
  128. "refund_reason" => $refund_reason,
  129. "refund_remark" => $refund_remark
  130. );
  131. $result = $order_refund_model->orderRefundApply($data, $member_info, $log_data);
  132. }
  133. return $this->response($result);
  134. }
  135. /**
  136. * 取消发起的退款申请
  137. */
  138. public function cancel()
  139. {
  140. $token = $this->checkToken();
  141. if ($token[ 'code' ] < 0) return $this->response($token);
  142. $member_model = new MemberModel();
  143. $member_info_result = $member_model->getMemberInfo([ [ "member_id", "=", $this->member_id ] ]);
  144. $member_info = $member_info_result[ "data" ];
  145. $order_refund_model = new OrderRefundModel();
  146. $order_goods_id = isset($this->params[ 'order_goods_id' ]) ? $this->params[ 'order_goods_id' ] : '0';
  147. $data = array (
  148. "order_goods_id" => $order_goods_id
  149. );
  150. $buyer_name = empty($member_info[ 'nickname' ]) ? '' : '【' . $member_info[ 'nickname' ] . '】';
  151. $log_data = [
  152. 'uid' => $this->member_id,
  153. 'nick_name' => $member_info[ 'nickname' ],
  154. 'action' => '买家' . $buyer_name . '撤销了维权',
  155. 'action_way' => 1
  156. ];
  157. $res = $order_refund_model->memberCancelRefund($data, $member_info, $log_data);
  158. return $this->response($res);
  159. }
  160. /**
  161. * 买家退货
  162. * @return string
  163. */
  164. public function delivery()
  165. {
  166. $token = $this->checkToken();
  167. if ($token[ 'code' ] < 0) return $this->response($token);
  168. $member_model = new MemberModel();
  169. $member_info_result = $member_model->getMemberInfo([ [ "member_id", "=", $this->member_id ] ]);
  170. $member_info = $member_info_result[ "data" ];
  171. $order_refund_model = new OrderRefundModel();
  172. $order_goods_id = isset($this->params[ 'order_goods_id' ]) ? $this->params[ 'order_goods_id' ] : '0';
  173. $refund_delivery_name = isset($this->params[ 'refund_delivery_name' ]) ? $this->params[ 'refund_delivery_name' ] : '';//物流公司名称
  174. $refund_delivery_no = isset($this->params[ 'refund_delivery_no' ]) ? $this->params[ 'refund_delivery_no' ] : '';//物流编号
  175. $refund_delivery_remark = isset($this->params[ 'refund_delivery_remark' ]) ? $this->params[ 'refund_delivery_remark' ] : '';//买家发货说明
  176. $data = array (
  177. "order_goods_id" => $order_goods_id,
  178. "refund_delivery_name" => $refund_delivery_name,
  179. "refund_delivery_no" => $refund_delivery_no,
  180. "refund_delivery_remark" => $refund_delivery_remark
  181. );
  182. $res = $order_refund_model->orderRefundDelivery($data, $member_info);
  183. return $this->response($res);
  184. }
  185. /**
  186. * 维权详情
  187. * @return string
  188. */
  189. public function detail()
  190. {
  191. $token = $this->checkToken();
  192. if ($token[ 'code' ] < 0) return $this->response($token);
  193. $order_refund_model = new OrderRefundModel();
  194. $order_goods_id = isset($this->params[ 'order_goods_id' ]) ? $this->params[ 'order_goods_id' ] : '0';
  195. $order_goods_info_result = $order_refund_model->getMemberRefundDetail($order_goods_id, $this->member_id);
  196. $order_goods_info = $order_goods_info_result[ "data" ] ?? [];
  197. if ($order_goods_info) {
  198. //查询店铺收货地址
  199. $order_goods_info_result[ "data" ] = array_merge($order_goods_info_result[ "data" ], $order_refund_model->getRefundAddress($this->site_id, $order_goods_info[ 'refund_address_id' ]));
  200. }
  201. return $this->response($order_goods_info_result);
  202. }
  203. }