OrderRefundDetailForm.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. /*
  8. * @Author: your name
  9. * @Date: 2021-03-02 09:50:20
  10. * @LastEditTime: 2021-04-29 16:34:55
  11. * @LastEditors: Please set LastEditors
  12. * @Description: In User Settings Edit
  13. * @FilePath: \admin_php\modules\client\models\v1\OrderRefundDetailForm.php
  14. */
  15. namespace app\modules\client\models\v1;
  16. use app\models\Express;
  17. use app\models\Goods;
  18. use app\models\OrderDetail;
  19. use app\models\OrderRefund;
  20. use app\models\RefundAddress;
  21. use app\models\Order;
  22. use app\models\SupplierRefundAddress;
  23. use app\models\SupplierSetting;
  24. use yii\base\Model;
  25. use yii\helpers\Json;
  26. class OrderRefundDetailForm extends Model
  27. {
  28. public $store_id;
  29. public $user_id;
  30. public $order_refund_id;
  31. public function rules()
  32. {
  33. return [
  34. [['order_refund_id'], 'required'],
  35. ];
  36. }
  37. public function search()
  38. {
  39. if (!$this->validate()) {
  40. return [
  41. 'code' => 1,
  42. 'msg' => $this->getErrorSummary(false)[0],
  43. ];
  44. }
  45. $order_refund = OrderRefund::find()->alias('or')
  46. // ->leftJoin(['od' => OrderDetail::tableName()], 'or.order_detail_id=od.id')
  47. // ->leftJoin(['g' => Goods::tableName()], 'od.goods_id=g.id')
  48. ->where([
  49. 'or.id' => $this->order_refund_id,
  50. 'or.is_delete' => 0,
  51. ])
  52. // od.goods_id,od.goods_name as name,od.num,od.total_price,od.attr, od.pic
  53. ->select('or.is_user_cancel,or.order_detail_id,or.id order_refund_id,or.order_id,or.desc refund_desc,or.type refund_type,or.status refund_status,or.refuse_desc,or.pic_list refund_pic_list,or.refund_price,or.is_agree,or.is_user_send,or.user_send_express,or.user_send_express_no, or.address_id, or.refund_address')
  54. ->asArray()->one();
  55. if (!$order_refund) {
  56. return [
  57. 'code' => 1,
  58. 'msg' => '售后单不存在'
  59. ];
  60. }
  61. $refundAddress = RefundAddress::findOne($order_refund['address_id']);
  62. if ($refundAddress) {
  63. $order_refund['re_name'] = $refundAddress->name;
  64. $order_refund['re_address'] = $refundAddress->address;
  65. $order_refund['re_mobile'] = $refundAddress->mobile;
  66. }
  67. if ($order_refund['refund_address']) {
  68. $refund_address = json_decode($order_refund['refund_address'], true);
  69. if (!empty($refund_address)) {
  70. $order_refund['re_name'] = $refund_address['name'];
  71. $order_refund['re_address'] = $refund_address['address'];
  72. $order_refund['re_mobile'] = $refund_address['mobile'];
  73. }
  74. }
  75. $order_refund['is_front_centralize'] = 0;
  76. // $order_refund['goods_pic'] = $order_refund['pic'] ?: Goods::getGoodsPicStatic($order_refund['goods_id']);
  77. // $order_refund['attr'] = json_decode($order_refund['attr']);
  78. $order_refund['goods_list'] = OrderDetail::find()->where(['order_id' => $order_refund['order_id']])->andWhere(['in', 'id', Json::decode($order_refund['order_detail_id'])])
  79. ->select('goods_id,goods_name as name,num,total_price,attr,pic as goods_pic, goods_info')->asArray()->all();
  80. foreach ($order_refund['goods_list'] as &$goods) {
  81. $goods['attr'] = Json::decode($goods['attr']);
  82. $goods_info = json_decode($goods['goods_info'], true);
  83. $order_refund['is_front_centralize'] = intval($goods_info['is_front_centralize']);
  84. }
  85. $order_refund['refund_pic_list'] = json_decode($order_refund['refund_pic_list']);
  86. $order_refund['express_list'] = Express::getExpressList();
  87. $order_refund['order_refund_status_bg'] = \Yii::$app->request->hostInfo . \Yii::$app->request->baseUrl . '/statics/images/order-refund-status-bg.png';
  88. // $rmSum = \app\models\OrderRefundMoney::find()->where(['is_delete' => 0, 'status' => 1, 'order_id' => $order_refund['order_id']])->sum('refund_price');
  89. // $order_refund['refund_price'] += $rmSum;
  90. $orderTransit = \app\models\OrderTransit::findOne(['order_id' => $order_refund['order_id'], 'is_delete' => 0]);
  91. $order_refund['$orderTransit'] = $orderTransit;
  92. if($orderTransit){
  93. $supplier = \app\models\Supplier::findOne(['cloud_supplier_id' => $orderTransit->cloud_supplier_id]);
  94. }
  95. if($orderTransit && $supplier['is_stbz']){
  96. $form = new \app\modules\admin\models\SupplierForm();
  97. $form->order_id = (string)$orderTransit['cloud_order_id'];
  98. $res = $form->supplierPurchaseOrderList($orderTransit['cloud_supplier_id']);
  99. $order_refund['$res'] = $res;
  100. if ($res['code'] == 0) {
  101. $stbz_refund_id = $res['data']['list'][0]['stbz_refund_id'];
  102. if($stbz_refund_id){
  103. $logistic = \stbz_client()->getApiResponse('get', '/v2/logistic/firms');
  104. $order_refund['$logistic'] = $logistic;
  105. // \debug_log($logistic);
  106. // $logistic = '{"id":"51OO7sen5LIgT4c7S9FX","code":1,"msg":"操作成功","data":{"list":null,"info":{"name":"皇家物流","no":"hj413132163413","remark":""}}}';
  107. $returnData = \json_decode($logistic, true);
  108. if ($returnData['code'] == 1) {
  109. if($returnData['data']){
  110. $order_refund['express_list'] = $returnData['data'];
  111. }
  112. $order_refund['express_list1'] = $returnData;
  113. }
  114. }
  115. }
  116. }
  117. return [
  118. 'code' => 0,
  119. 'msg' => 'success',
  120. 'data' => $order_refund,
  121. ];
  122. }
  123. }