checkSign([]); \debug_log(\post_params()); $post_data = \post_params(); if ($post_data) { if (is_string($post_data)) { $post_data = json_decode($post_data, true); } $data = $post_data['data']; $type = 0; if ($post_data['type'] === 'order.delivery') { //订单发货 $type = 1; $orderNoHead = substr($data['orderSn'], 0, 2); $result = [ 'code' => 1, 'msg' => '状态错误' ]; switch ($orderNoHead) { case 'PO': $result = $this->PurchaseOrderHandle($type, $data); break; case 'OR': $result = $this->OrderHandle($type, $data); break; } } elseif ($post_data['type'] === 'goods.undercarriage' || $post_data['type'] === 'goods.storage.delete' || $post_data['type'] === 'goods.storage.remove' || $post_data['type'] === 'goods.alter' || $post_data['type'] === 'goods.price.alter' ) { $order_url = "/user/setGoods"; $order_data['params_data'] = [ 'stbz_goods_id' => $post_data['data']['goodsIds'], 'status' => 2 ]; //如果下架或者删除商品就直接删除云仓商品 //如果更改商品信息就下架 if ($post_data['type'] === 'goods.alter' || $post_data['type'] === 'goods.price.alter') { //商品下架 foreach ($post_data['data']['goodsIds'] as $item) { $goods = $this->actionGetGoodsItem($item); if ($goods['code'] == 1) { return json_encode($goods); } $attr = $this->handleAttr($goods['data']['specs'], $goods['data']['cover']); $data = [ 'name' => $goods['data']['title'], 'goods_no' => (string)$item, 'g_s_pic_url' => $goods['data']['cover'], 'desc' => $goods['data']['description'], 'g_price' => sprintf('%.2f', $goods['data']['cost_price'] * 0.01), 'g_wholesale_price' => sprintf('%.2f', $goods['data']['sale_price'] * 0.01), 'g_wholesale_ladder_rebate' => '[]', 'g_wholesale_rebate_switch' => '0', 'weight' => '', 'g_original_price' => sprintf('%.2f', $goods['data']['sale_price'] * 0.01), 'g_unit' => $goods['data']['unit'], 'g_shop_count' => 1, 'num' => $goods['data']['total_stock'], 'use_attr' => '1', 'g_pic_list' => $goods['data']['covers'], 'g_send_type' => '0', 'attrs' => $attr, 'is_change' => 1, 'stbz_goods_id' => $item, 'market_price' => sprintf('%.2f', $goods['data']['market_price'] * 0.01) ]; $result = $this->commonHandle($data, $item); if (intval($result['code']) !== 0) { return json_encode($result); } $order_data['params_data'] = json_encode([ 'stbz_goods_id' => [$item], 'status' => $goods['data']['status'] == 1 ? 0 : 2, ]); $domain = (new OptionSetting)->getCloudDomainName(); $orderInfo = cloud_post($domain. $order_url, $order_data); $orderInfo = json_decode($orderInfo,true); debug_log('胜天半子更改商品状态' . $goods['data']['status'] . json_encode($orderInfo)); } return ; // $order_data['params_data']['status'] = 0; } $order_data['params_data'] = json_encode($order_data['params_data']); $domain = (new OptionSetting)->getCloudDomainName(); $orderInfo = cloud_post($domain. $order_url, $order_data); $orderInfo = json_decode($orderInfo, true); if (intval($orderInfo['code']) === 0) { $cloud_goods_ids = array_column($orderInfo['data'], 'id'); if ($post_data['type'] === 'goods.undercarriage') { Goods::updateAll(['status' => 0], ['cloud_goods_id' => $cloud_goods_ids, 'is_wholesale' => 0]); } } debug_log('胜天半子更改商品状态' . json_encode($orderInfo)); } elseif ($post_data['type'] === 'order.cancel') { //订单取消 } elseif ($post_data['type'] === 'afterSale.refuse') { //售后拒绝 $this->PurchaseOrderHandle(2, $data, 1); } elseif ($post_data['type'] === 'afterSale.agree') { //售后同意 $this->PurchaseOrderHandle(2, $data, 2); } elseif ($post_data['type'] === 'afterSale.success') { //退款到账 $this->PurchaseOrderHandle(2, $data, 3); } return json_encode([ 'code' => 1 ]); } } public function commonHandle($data, $id = 0) { $supplier = Supplier::findOne(['is_stbz' => 1, 'is_delete' => 0]); if (!$supplier) { return [ 'code' => 1, 'msg' => '供货商未找到', ]; } $params = [ 'goods_ids' => $id ]; $stbz_result = \stbz_client()->getApiResponse('get', '/v2/GoodsStorage/Add', $params); $returnData = \json_decode($stbz_result, true); if ($returnData['code'] != 1 && $returnData['code'] != 0) { return [ 'code' => 1, 'msg' => $returnData['msg'], ]; } $supplierForm = new SupplierForm(); $supplierForm->attributes = $data; $supplierForm->token_supplier_id = $supplier->cloud_supplier_id; $setGoods = $supplierForm->setGoods(); if ($setGoods['code'] == 1) { return $setGoods; } // 提交审核 $supplierForm = new SupplierForm(); $supplierForm->attributes = ['goods_id' => $setGoods['data']['goods_id']]; $supplierForm->token_supplier_id = $supplier->cloud_supplier_id; $submitAudit = $supplierForm->auditSubmit(); if ($submitAudit['code'] == 1) { return $submitAudit; } // 审核商品 $form = new PlatformForm(); $form->attributes = [ 'id' => $submitAudit['data']['goods_id'], 'status' => 1, ]; return $form->auditHandle(); } public function handleAttr($specs, $image) { $attr = []; foreach ($specs['options'] as $i) { $attr_list = []; $value_ids = explode('_', $i['spec_value_ids']); foreach ($value_ids as $ii) { foreach ($specs['values'] as $iii) { if ($ii == $iii['id']) { foreach ($specs['names'] as $iiii) { if ($iiii['id'] == $iii['spec_name_id']) { $attr_list = array_merge($attr_list, [ [ 'attr_group_name' => ($iiii['name'] === '默认' ? '规格' : $iiii['name']), 'attr_name' => $iii['name'] ] ]); } } } } } $attr = array_merge($attr, [ [ 'attr_list' => $attr_list, 'num' => $i['stock'], 'price' => sprintf('%.2f', $i['cost_price'] * 0.01), 'wholesale_price' => sprintf('%.2f', $i['sale_price'] * 0.01), 'no' => $i['id'], 'pic' => $i['image'] == '' ? $image : $i['image'], 'share_commission_first' => '', 'share_commission_second' => '', 'share_commission_third' => '', ] ]); } return $attr; } private function PurchaseOrderHandle($type = 0, $data = null, $refund_status = 0) { try { $domain = (new OptionSetting)->getCloudDomainName(); if ($type === 1) { //订单发货 //获取订单信息 $order_url = "/user/getOrder"; $order_data['order_no'] = $data['orderSn']; $order_data['status'] = 1; $orderInfo = cloud_post($domain. $order_url, $order_data); $orderInfo = json_decode($orderInfo,true); if($orderInfo['code'] != 0){ throw new \Exception($orderInfo['msg']); }else{ $logistic = \stbz_client()->getApiResponse('get', '/v2/logistic', [ 'orderSn' => $data['orderSn'], 'sku' => $data['sku'], ]); \debug_log($logistic); // $logistic = '{"id":"51OO7sen5LIgT4c7S9FX","code":1,"msg":"操作成功","data":{"list":null,"info":{"name":"皇家物流","no":"hj413132163413","remark":""}}}'; $returnData = \json_decode($logistic, true); if ($returnData['code'] != 1) { throw new \Exception($returnData['msg']); } if(empty($returnData['data']['info']) || empty($returnData['data']['info']['no'])){ throw new \Exception('物流单号是空的'); } $name = $returnData['data']['info']['name']; $no = $returnData['data']['info']['no']; $orderInfo = $orderInfo['data']; $cloud_supplier_id = $orderInfo['supplier_id']; $supplier = new SupplierForm(); $supplier->send_type = 1; $supplier->express_name = $name; $supplier->express_no = $no; $supplier->order_id = $orderInfo['id']; $result = $supplier->supplierPurchaseSend($cloud_supplier_id); if ((int)$result['code'] === 1) { throw new \Exception($result['msg']); } } } elseif ($type === 2) {//订单售后 //获取订单信息 $order_data['order_no'] = $data['orderSn']; $orderNoHead = substr($data['orderSn'], 0, 2); // $order_url = "/user/getOrder"; $order_data['order_no'] = $data['orderSn']; $order_data['stbz_refund_id'] = $data['afterSaleId']; if ($orderNoHead === 'OR') { $order_data['status'] = 1; } else { $order_data['status'] = 0; } // if ($refund_status !== 3) { $order_url = "/user/getRefundOrder"; // } $orderInfo = cloud_post($domain. $order_url, $order_data); $orderInfo = json_decode($orderInfo,true); if($orderInfo['code'] != 0){ throw new \Exception($orderInfo['msg']); }else{ $orderInfo = $orderInfo['data']; if ($refund_status === 3) { $orderTransit = \app\models\OrderTransit::findOne(['cloud_order_no' => $data['orderSn']]); $order = \app\models\Order::findone($orderTransit['order_id']); if($order){ $order->stbz_refund_ok = 1; $order->save(); } $result = [ 'code' => 1, 'msg' => '状态错误' ]; if ($orderNoHead === 'OR') { $order = PurchaseOrder::findOne(['cloud_order_id' => $orderInfo['id'], 'is_delete' => 0]); if ((int)$order['trade_status'] === 0) { //未发货时取消订单打款到账 $form = new OrderForm(); $form->delete_pass = 1; $result = $form->revokeApply($order); if ($result['code'] === 0) { return json_encode([ 'code' => 1 ]); } else { debug_log('打款失败'); return; } } } $form = new SupplierForm(); $form->status = 1; $form->is_agree = 1; $form->order_id = $orderInfo['id']; $res = $form->supplierApplyHandle($orderInfo['supplier_id']); } else { $form = new SupplierForm(); $form->order_id = $orderInfo['id']; if ($refund_status === 1) { $form->is_agree = 2; $form->reason = "拒绝退货"; $res = $form->supplierApplyHandle($orderInfo['supplier_id']); } else { $form->order_id = $orderInfo['order_id']; if ($orderNoHead === 'PO') { $res = $form->supplierPurchaseOrderList($orderInfo['supplier_id']); } else { $res = $form->supplierOrderList($orderInfo['supplier_id']); } if ($res['code'] !== 0) { debug_log('supplier_id' . $orderInfo['supplier_id']); debug_log($res['msg']);die; } else { debug_log('111'); debug_log('order' . json_encode($orderInfo)); debug_log('res' . json_encode($res)); $stbz_refund_id = $res['data']['list'][0]['stbz_refund_id']; $goods_list = $res['data']['list'][0]['goods_list']; debug_log('goods_list' . json_encode($goods_list)); if (!empty($goods_list)) { foreach ($goods_list as $item) { if ($item['stbz_goods_id'] && $item['goods_no']) { $goods_result = $this->actionGetAfterSaleItem($stbz_refund_id); if ($goods_result['code'] === 1) { return false; } $goods = $goods_result['data']; $form->is_agree = 1; $form->mobile = $goods['sellerInfo']['phone']; $form->name = $goods['sellerInfo']['realName']; $form->detail = $goods['sellerInfo']['address']; $form->zipcode = '1'; $form->order_id = $orderInfo['id']; debug_log('115'); $res = $form->supplierApplyHandle($orderInfo['supplier_id']); debug_log(json_encode($res)); if ($res['code'] !== 0) { debug_log($res['msg']);die; } } } return json_encode([ 'code' => 1 ]); } } } } if ((int)$res['code'] === 0) { return json_encode([ 'code' => 1 ]); } } } } catch (\Exception $e) { debug_log('订单发货' . $e->getMessage() . $e->getFile() . $e->getLine()); return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } private function OrderHandle($type = 0, $data = null) { try { if ($type === 1) { //订单发货 //获取订单信息 $order_url = "/user/getOrder"; $order_data['order_no'] = $data['orderSn']; $order_data['status'] = 2; $domain = (new OptionSetting)->getCloudDomainName(); $orderInfo = cloud_post($domain. $order_url, $order_data); $orderInfo = json_decode($orderInfo,true); if($orderInfo['code'] != 0){ throw new \Exception($orderInfo['msg']); }else{ debug_log('order_info' . json_encode($orderInfo)); $orderInfo = $orderInfo['data']; $cloud_supplier_id = $orderInfo['supplier_id']; debug_log('cloud_supplier_id' . $cloud_supplier_id); $supplier = new SupplierForm(); $supplier->send_type = 2; $supplier->order_id = $orderInfo['id']; $result = $supplier->supplierOrderSend($cloud_supplier_id); if ((int)$result['code'] === 1) { throw new \Exception($result['msg']); } } } } catch (\Exception $e) { debug_log('订单发货' . $e->getMessage() . $e->getLine() . $e->getFile()); return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } /** * 获取商品详情 * @author Syan mzsongyan@gmail.com * @date 2022-09-16 */ public function actionGetGoodsItem($goodsId = null) { $id = $goodsId; $params = [ 'id' => $id, ]; $key = md5(json_encode(\array_merge($params, ['type' => 'stbz_get_goods_item']))); if (0 && \Yii::$app->cache->exists($key)) { $data = \Yii::$app->cache->get($key); $returnData = \json_decode($data, true); } else { $data = \stbz_client()->getApiResponse('get', '/v2/Goods/Detail', $params); $returnData = \json_decode($data, true); if ($returnData['code'] != 1) { return [ 'code' => 1, 'msg' => $returnData['msg'], ]; } \Yii::$app->cache->set($key, $data, 600); } return [ 'code' => 0, 'msg' => 'success', 'data' => $returnData['data'], ]; } public function actionGetAfterSaleItem($id = null) { $data = \stbz_client()->getApiResponse('get', '/v2/afterSale/' . $id); $returnData = \json_decode($data, true); if ($returnData['code'] != 1) { return [ 'code' => 1, 'msg' => $returnData['msg'], ]; } return [ 'code' => 0, 'msg' => 'success', 'data' => $returnData['data'], ]; } public function setGoods($stbz_goods) { if ($stbz_goods['code'] === 1) { return false; } $goods = $stbz_goods['data']; $price = sprintf("%.2f", ($goods['agreement_price'] * 0.01)); $original_price = sprintf("%.2f", ($goods['guide_price'] * 0.01)); $attr = $this->setAttr($goods['specs'], $goods['cover']); if ($attr['code'] === 0) { $attr = $attr['data']; } else { debug_log($attr['msg']); } $data = [ 'cat_id' => '0', 'name' => $goods['title'], 'goods_no' => (string)$goods['id'], 'g_s_pic_url' => $goods['cover'], 'desc' => $goods['description'], 'g_price' => $price, 'g_wholesale_price' => $price, 'g_wholesale_ladder_rebate' => '[]', 'g_wholesale_rebate_switch' => '0', 'weight' => '', 'g_original_price' => $original_price, 'g_unit' => $goods['unit'], 'g_shop_count' => 1, 'num' => $goods['total_stock'], 'use_attr' => '1', 'g_pic_list' => $goods['covers'], 'g_send_type' => '0', 'attrs' => $attr, 'is_change' => 1, 'stbz_goods_id' => $goods['id'], ]; $supplier = Supplier::findOne(['is_stbz' => 1, 'is_delete' => 0]); if (!$supplier) { return [ 'code' => 1, 'msg' => '供货商未找到', ]; } $supplierForm = new SupplierForm(); $supplierForm->attributes = $data; $supplierForm->token_supplier_id = $supplier->cloud_supplier_id; $setGoods = $supplierForm->setGoods(); if ($setGoods['code'] == 1) { return $setGoods; } // 提交审核 $supplierForm = new SupplierForm(); $supplierForm->attributes = ['goods_id' => $setGoods['data']['goods_id']]; $supplierForm->token_supplier_id = $supplier->cloud_supplier_id; $submitAudit = $supplierForm->auditSubmit(); debug_log('审核' . json_encode($submitAudit)); if ($submitAudit['code'] == 1) { return $submitAudit; } // 审核商品 $form = new PlatformForm(); $form->attributes = [ 'id' => $submitAudit['data']['goods_id'], 'status' => 1, ]; $res = $form->auditHandle(); debug_log('审核' . json_encode($submitAudit)); if ($res['code'] == 1) { return $submitAudit; } } public function setAttr($specs, $cover) { try { $attr = []; foreach ($specs['options'] as $option) { $attr_list = []; $value_ids = explode('_', $option['spec_value_ids']); foreach ($value_ids as $value_id) { foreach ($specs['values'] as $value) { if ($value_id === $value['id']) { foreach ($specs['names'] as $name) { if ($name['id'] === $value['spec_name_id']) { array_push($attr_list, [ 'attr_group_name' => $name['name'] === '默认' ? '规格' : $name['name'], 'attr_name' => $value['name'] ]); } } } } } array_push($attr, [ 'attr_list' => $attr_list, 'num' => $option['stock'], 'price' => sprintf("%.2f", ($option['agreement_price'] * 0.01)), 'wholesale_price' => sprintf("%.2f", ($option['agreement_price'] * 0.01)), 'no' => $option['id'], 'pic' => $option['image'] ?: $cover, 'share_commission_first' => '', 'share_commission_second' => '', 'share_commission_third' => '', 'weight' => $option['weight'] ]); } return [ 'code' => 0, 'msg' => 'success', 'data' => $attr ]; } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } }