| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?php
- namespace addons\WangDianTong\common\traits;
- use addons\WangDianTong\common\enums\WangDianTongEnum;
- use addons\WangDianTong\common\expand\sdk\wangdian\qjb\model\AfterSalesRefundRawRefundUploadModel;
- use addons\WangDianTong\common\expand\sdk\wangdian\qjb\model\OrderItemModel;
- use addons\WangDianTong\common\expand\sdk\wangdian\qjb\request\AfterSalesRefundRawRefundUploadRequest;
- use addons\WangDianTong\common\helper\EmojiHelper;
- use common\enums\StatusEnum;
- use yii\helpers\Json;
- trait FlagshipCreateRefundSendTrait
- {
- /**
- * @param array $config
- * @param array $refund
- * @param int $refund_status
- * @return mixed|true|null
- * @throws \Exception
- */
- protected function flagship(array $config, array $refund, int $refund_status)
- {
- $flag = $this->retry(function () use ($config, $refund, $refund_status) {
- return $this->flagshipSend($config, $refund, $refund_status);
- }, 1);
- if (is_string($flag)) throw new \Exception($flag);
- return $flag;
- }
- protected function flagshipSend(array $config, array $refund, int $refund_status)
- {
- $req = new AfterSalesRefundRawRefundUploadRequest($config);
- $model = new AfterSalesRefundRawRefundUploadModel();
- $model->shop_no = $config['shop_no'];
- $orderItemModel = new OrderItemModel();
- $orderItemModel->oid = "{$refund['order']['order_no']}_{$refund['order_detail_id']}"; // 原始子单号
- $orderItemModel->tid = $refund['order']['order_no'];
- $orderItemModel->refund_no = $refund['order_no'];
- $orderItemModel->num = $refund['orderDetail']['num'];
- // 售后类型:1=仅退款,2=退货退款,3=换货
- $type = $refund['type'];
- // 判断有没有发货 - 如果是已发货的并且为仅退款申请那么映射过去的为4退款不退货
- if ($refund['orderDetail']['shipping_status'] == StatusEnum::ENABLED && $type == StatusEnum::ENABLED) {
- $type = 4;
- }
- $orderItemModel->type = $type; // 0取消订单1退款(未发货,退款申请)2退货3换货4退款不退货
- // 1取消退款,2已申请退款,3等待退货,4等待收货,5退款成功
- $status_key = $refund['refund_status'] < 0 ? 'refund_status' : 'step_status';
- $orderItemModel->status = WangDianTongEnum::REFUND_FLAGSHIP_MAP[$refund[$status_key]];
- $orderItemModel->refund_version = 1;
- $orderItemModel->refund_amount = $refund['refund_price'];
- $orderItemModel->actual_refund_amount = $refund['reality_refund_price'];
- $orderItemModel->title = "";
- $orderItemModel->buyer_nick = EmojiHelper::convert($refund['base_user']['nickname'] ?? '');
- $orderItemModel->is_aftersale = $type == 3; // 换货才为售后?
- $orderItemModel->logistics_name = $refund['express'];
- $orderItemModel->refund_time = date('Y-m-d H:i:s', $refund['created_at']);
- if (!empty($refund['refund_at'])) {
- $orderItemModel->current_phase_timeout = date('Y-m-d H:i:s', $refund['refund_at']);
- }
- $orderItemModel->reason = EmojiHelper::convert($refund['reason'] ?? '');
- $model->order_list = [$orderItemModel->toArray()];
- $resp = $req->send($model);
- if ($resp->getError()) return $resp->getError();
- try {
- $res = $resp->toArray();
- if (!isset($res['status']) || $res['status'] != StatusEnum::DISABLED) return $res['message'] ?? var_export($res, true);
- } catch (\Exception $e) {
- return $e->getMessage();
- }
- return true;
- }
- }
|