order_existence_verify($parameter); //验证订单 if($verify_bill_order['status'] == 0){ return $verify_bill_order; } $billOrder = $verify_bill_order['bill_order']; $verify_bill_online = D("RetailBillOnline")->delivery_verify($billOrder); if($verify_bill_online['status'] == 0){ return $verify_bill_online; } $onlineOrder = $verify_bill_online['online_order']; //online_order 信息 if ($onlineOrder["order_genre"] == 2) { //拼团订单 $BillGroupModel = D('RetailBillGroup'); $state = $BillGroupModel->getFindField(array($BillGroupModel::BILL_ID => $billOrder["id"]), $BillGroupModel::STATE); if ($state != 2) { $result['status'] = 0; $result['msg'] = '该订单未拼团成功,不能进行配送'; return $result; } } $verify_delivery = D('RetailDeliveryConfig')->delivery_verify(); if($verify_delivery['status'] == 0){ return $verify_delivery; } $deliveryConfig = $verify_delivery['delivery_config']; $StoreModel = D('RetailStore'); $store = $StoreModel->getFind(array('id'=>$billOrder['store_id'])); if (empty($store[$StoreModel::DETAIL_ADDRESS]) || empty($store[$StoreModel::LATITUDE]) || empty($store[$StoreModel::LONGITUDE])) { $res['status'] = 0; $res['msg'] = '请检查后台本门店详细地址与经纬度'; return $res; } $lngLat = getAddress($onlineOrder["user_address"], 2); if (empty($lngLat['lng']) || empty($lngLat['lat'])) { $res['status'] = 0; $res['msg'] = '百度地图获取经纬度失败,请检测合伙人地图设置'; return $res; } $UuMerchantModel = D('RetailUuMerchant'); $openid = $UuMerchantModel->getFindField(array($UuMerchantModel::MERCHANT_ID => $parameter['merchant_id']), $UuMerchantModel::OPENID); $store_position = Convert_GCJ02_To_BD09($store[$StoreModel::LATITUDE],$store[$StoreModel::LONGITUDE]); $data = array( 'from_address' => $store[$StoreModel::DETAIL_ADDRESS], 'to_address' => $onlineOrder["user_address"], 'city_name' => $store[$StoreModel::CITY], 'county_name' => $store[$StoreModel::AREA], 'send_type' => 0, 'to_lat' => $lngLat['lat'], 'to_lng' => $lngLat['lng'], 'from_lat' => $store_position['lat'], 'from_lng' => $store_position['lng'], 'openid' => $openid, 'appid' => $deliveryConfig['uu_appid'], ); file_put_contents('./deliveryUU.txt', json_encode($data) . "\r\n", FILE_APPEND); $content = A('Retail/Uudelivery')->getorderprice($data, $deliveryConfig['uu_appkey']);//获取uu价格 $content = json_decode($content, true); if ($content['return_code'] == 'ok' && $content['appid']) { $UuOrderModel = D('RetailUuOrder'); $item = array( $UuOrderModel::ORIGIN_ID => $billOrder["id"], $UuOrderModel::ORDER_ID => $billOrder["order_no"], $UuOrderModel::PRICE_TOKEN => $content['price_token'], $UuOrderModel::TOTAL_MONEY => $content['total_money'], $UuOrderModel::NEED_PAY_MONEY => $content['need_paymoney'], $UuOrderModel::TOTAL_PRICE_OFF => $content['total_priceoff'], $UuOrderModel::DISTANCE => $content['distance'], $UuOrderModel::FREIGHT_MONEY => $content['freight_money'], $UuOrderModel::COUPON_AMOUNT => $content['coupon_amount'], $UuOrderModel::EXPIRES_IN => $content['expires_in'], $UuOrderModel::MERCHANT_ID => $parameter['merchant_id'], $UuOrderModel::STORE_ID => $parameter['store_id'], $UuOrderModel::ADD_TIME => time(), $UuOrderModel::ORDER_GENRE => $onlineOrder["order_genre"] ); $add = $UuOrderModel->addOrder($item); if ($add) { D("RetailBillOnline")->updateOrder(array("bill_id"=>$billOrder['id']), array("delivery_record_id" => $add)); $res['status'] = 1; $res['msg'] = '实际需要支付金额' . $content['need_paymoney'] . '元,配送距离' . $content['distance'] . '米'; } else { $res['status'] = 0; $res['msg'] = '价格计算成功,存表失败,请重新配送'; } } else { $res['status'] = 0; $res['msg'] = $content['return_msg']; } return $res; } /** * 配送 * option_type 1收银机 2后台 * operation_id 后台操作者Id * order_no 订单编号 * type 1商家配送 2达达配送 3UU配送 * uu_phone 发件人手机号 * special_type 特殊处理类型,是否需要保温箱 1需要 0不需要 * note 备注 * * */ public function deliveryOrder($parameter) { $option_type = $parameter['option_type']?$parameter['option_type']:1; $merchant_id = $parameter['merchant_id']; $store_id = $parameter["store_id"]; $store = $parameter['store']; $cashier = $parameter["cashier"]; $cashier_id = $parameter["cashier_id"]; $operation_id = $parameter['operation_id']; $order_no = $parameter["order_no"]; $type = $parameter["type"]; $uu_phone = $parameter["uu_phone"]; $special_type = $parameter["special_type"]?$parameter["special_type"]: 0; $note = $parameter["note"]; if (empty($uu_phone) && $option_type == 1) { $CashierModel = D('RetailCashier'); $uu_phone = $cashier[$CashierModel::MOBILE]; } if (empty($order_no) || empty($type)) { $result['status'] = 0; $result['msg'] = "缺少参数"; return $result; } //查询该订单 $BillModel = D('RetailBillOrder'); $verify_bill_order = $BillModel->order_existence_verify($parameter); if($verify_bill_order['status'] == 0){ return $verify_bill_order; } $billOrder = $verify_bill_order['bill_order']; //订单信息 $OnlineModel = D('RetailBillOnline'); $verify_online_order = $OnlineModel->delivery_verify($billOrder); if($verify_online_order['status'] == 0){ return $verify_online_order; } $onlineOrder = $verify_online_order['online_order']; //线上订单 if ($onlineOrder[$OnlineModel::ORDER_GENRE] == 2) { //拼团订单 $BillGroupModel = D('RetailBillGroup'); $state = $BillGroupModel->getFindField(array($BillGroupModel::BILL_ID => $billOrder[$BillModel::ID]), $BillGroupModel::STATE); if ($state != 2) { $result['status'] = 0; $result['msg'] = '该订单未拼团成功,不能进行配送'; return $result; } } if ($type == 2) { $da_parameter = array( 'bill_order'=>$billOrder, 'online_order'=>$onlineOrder, 'store'=>$store, 'merchant_id'=>$merchant_id, 'store_id'=>$store_id ); $res = $this->toDaDaDelivery($da_parameter);//达达配送 } else if ($type == 3) { $uu_parameter = array( 'bill_order'=>$billOrder, 'online_order'=>$onlineOrder, 'special_type'=>$special_type, 'uu_phone'=>$uu_phone, 'note'=>$note, 'store'=>$store, 'merchant_id'=>$merchant_id, 'store_id'=>$store_id ); $res = $this->toUUDelivery($uu_parameter);//UU配送 } else { $res = array( 'status' => 1, 'msg' => '配送成功' ); } if ($res['status'] == 1) { $time = time(); if($option_type == 2){ $bSave = array( $BillModel::OPERATION_ID => $operation_id ); }else if($option_type == 1){ $bSave = array( $BillModel::CASHIER_ID => $cashier_id ); } $bUpdate = $BillModel->updateOrder(array("id"=>$billOrder['id']), $bSave); $oSave = array( $OnlineModel::STATUS => $type == 1 ? 2 : 1, $OnlineModel::DELIVERY_TYPE => $type, $OnlineModel::DELIVERY_RECORD_ID => $res['delivery_record_id'], $OnlineModel::DELIVERY_TIME => strval($time), ); $oUpdate = $OnlineModel->updateOrder(array("bill_id"=>$billOrder['id']), $oSave); if ($oUpdate) { $result = $res; } else { $BillModel->updateOrder(array("id"=>$billOrder['id']), array($BillModel::FINISH_TIME => '', $BillModel::CASHIER_ID => null)); $result['status'] = 0; $result['msg'] = '配送成功,订单更新失败,请联系管理员'; } if($billOrder['order_type'] == 3){ //换货订单减少商家库存 $param = array( 'bill_order'=>$billOrder ); A("Api/Inventory")->CustomerStockDec($param); } $SmallProgramUserModel = D('RetailSmallProgramUser'); $xcxVipInfo = $SmallProgramUserModel->getFind(array($SmallProgramUserModel::ID => $billOrder[$BillModel::UID])); $StoreModel = D('RetailStore'); $SellModel = D('RetailSell'); $sMap = array( $SellModel::BILL_ID => $billOrder[$BillModel::ID] ); $sFields = array( $SellModel::GOODS_NAME, ); $sellOrder = $SellModel->getSelect($sMap, $sFields, '', '1,2'); if (count($sellOrder) > 1) { $goods_name = $sellOrder[0][$SellModel::GOODS_NAME] . '等商品'; }else{ $goods_name = $sellOrder[0][$SellModel::GOODS_NAME]; } switch ($onlineOrder[$OnlineModel::ORDER_GENRE]) { case '1': $order_type = '普通订单'; break; case '2': $order_type = '拼团订单'; break; case '3': $order_type = '秒杀订单'; break; case '4': $order_type = '预售订单'; break; default: $order_type = '普通订单'; } $tempSend = array( 'merchant_id' => $billOrder[$BillModel::MERCHANT_ID], 'openid' => $xcxVipInfo[$SmallProgramUserModel::OPENID], 'form_id' => $onlineOrder[$OnlineModel::FORM_ID], 'type' => 2,//'1自提通知 2发货通知', 'sendData' => array( 'store_name' => $store[$StoreModel::STORE_NAME], 'delivery_type' => $type == 1 ? '商家配送' : ($type == 2 ? '达达配送' : 'UU跑腿配送'), 'delivery_time' => date('Y-m-d H:i:s'), 'order_no' => $billOrder[$BillModel::ORDER_NO], 'user_address' => $onlineOrder[$OnlineModel::USER_ADDRESS], 'user_phone' => $onlineOrder[$OnlineModel::USER_PHONE], 'username' => $onlineOrder[$OnlineModel::USER_NAME], 'price' => $billOrder[$BillModel::ALL_MONEY], 'add_time' => date('Y-m-d H:i:s', $billOrder[$BillModel::ADD_TIME]), 'goods_name' => $goods_name, 'store_address' => $store[$StoreModel::ADDRESS], 'store_phone' => $store[$StoreModel::PHONE], 'user_remark' => $onlineOrder[$OnlineModel::REMARK], 'order_type' => $order_type, ), ); A('Api/XcxMark')->sendMark($tempSend);//小程序模板通知 } else { $result = $res; } return $result; } /** * 达达配送 * @param $billOrder 订单主表 * @param $onlineOrder 线上表 * @return mixed */ protected function toDaDaDelivery($parameter) { $billOrder =$parameter['bill_order']; $onlineOrder = $parameter['online_order']; $store = $parameter['store']; $merchant_id = $parameter['merchant_id']; $store_id = $parameter['store_id']; $BillModel = D('RetailBillOrder'); $OnlineModel = D('RetailBillOnline'); $DeliveryConfigModel = D('RetailDeliveryConfig'); $deliveryConfig = $DeliveryConfigModel->getFind(); if (empty($deliveryConfig)) { $result['status'] = 0; $result['msg'] = '请先联系合伙人完善开发者信息'; return $result; } $da_app_key = $deliveryConfig[$DeliveryConfigModel::DA_APP_KEY]; $da_app_secret = $deliveryConfig[$DeliveryConfigModel::DA_APP_SECRET]; if (empty($da_app_key) || empty($da_app_secret)) { $result['status'] = 0; $result['msg'] = '请联系合伙人完善达达配送所需信息'; return $result; } $StoreModel = D('RetailStore'); if ($store[$StoreModel::DADA_OPEN_STATE] != 2) { $result['status'] = 0; $result['msg'] = "该门店未开启达达配送"; return $result; } if ($store[$StoreModel::DADA_SYNC_STATE] != 2) { $result['status'] = 0; $result['msg'] = "门店未同步达达配送"; return $result; } $store_city = substr($store[$StoreModel::CITY], 0, -3); $DaDaCityModel = D('RetailDaDaCity'); $cMap = array( $DaDaCityModel::CITY_NAME => array('like', $store_city . "%") ); $city_code = $DaDaCityModel->getFindField($cMap, $DaDaCityModel::CITY_CODE); if (empty($city_code)) { $result['status'] = 0; $result['msg'] = '订单所在城市有误'; return $result; } if (!$onlineOrder[$OnlineModel::USER_ADDRESS]) { $result['status'] = 0; $result['msg'] = '收货人信息有误'; return $result; } $DaMerchantModel = D('RetailDaMerchant'); $da_merchant_id = $DaMerchantModel->getFindField(array($DaMerchantModel::MERCHANT_ID => $merchant_id), $DaMerchantModel::RESULT_ID); if (empty($da_merchant_id)) { $result['status'] = 0; $result['msg'] = '请先在达达配送注册达达商户'; return $result; } $lngLat = getAddress($onlineOrder[$OnlineModel::USER_ADDRESS], 1); $title = 'http'; if ($_SERVER['HTTPS'] == 'on') { $title .= 's'; } $http = $title . '://' . $_SERVER['HTTP_HOST']; $data = array( 'origin_id' => $billOrder[$BillModel::ORDER_NO], 'shop_no' => $store[$StoreModel::ORIGIN_SHOP_ID], 'city_code' => $city_code, 'cargo_price' => $billOrder[$BillModel::ALL_MONEY], 'is_prepay' => 0, 'receiver_name' => $onlineOrder[$OnlineModel::USER_NAME], 'receiver_address' => $onlineOrder[$OnlineModel::USER_ADDRESS], 'receiver_lat' => $lngLat['lat'], 'receiver_lng' => $lngLat['lng'], 'receiver_phone' => $onlineOrder[$OnlineModel::USER_PHONE], 'cargo_weight'=>1, 'callback' => $http . '/index.php/NotifyApi/DaDa/orderCallBack' ); $DaOrderModel = D('RetailDaOrder'); $oldDaOrder = $DaOrderModel->getFind(array($DaOrderModel::ORDER_NO => strval($billOrder[$BillModel::ORDER_NO]))); if ($onlineOrder[$OnlineModel::PICKUP_TYPE] == 2 && ($onlineOrder[$OnlineModel::CANCEL_DELIVERY_STATUS] == 1 || empty($oldDaOrder))) { //第一次下单 $success = A('Retail/DadaCeshi')->addorder($da_app_key, $da_app_secret, $da_merchant_id, $data); } else if ($onlineOrder[$OnlineModel::PICKUP_TYPE] == 2 && $onlineOrder[$OnlineModel::CANCEL_DELIVERY_STATUS] == 2 && !empty($oldDaOrder)) { $success = A('Retail/DadaCeshi')->reAddOrder($da_app_key, $da_app_secret, $da_merchant_id, $data); } else { $result['status'] = 0; $result['msg'] = '您的操作有误'; return $result; } file_put_contents('./deliveryDaDa.txt', $success . "\r\n", FILE_APPEND); $success = json_decode($success, true); if ($success['status'] == 'success') { $item = array( $DaOrderModel::ORDER_GENRE => $onlineOrder[$OnlineModel::ORDER_GENRE], $DaOrderModel::ORDER_NO => $billOrder[$BillModel::ORDER_NO], $DaOrderModel::ORDER_STATUS => 1,//待接单=1 待取货=2 配送中=3 已完成=4 已取消=5 已过期=7 指派单=8 妥投异常之物品返回中=9 妥投异常之物品返回完成=10 创建达达运单失败=1000 $DaOrderModel::MERCHANT_ID => $merchant_id, $DaOrderModel::STORE_ID => $store_id, $DaOrderModel::ADD_TIME => time(), $DaOrderModel::DISTANCE => $success['result']['distance'], $DaOrderModel::FEE => $success['result']['fee'], $DaOrderModel::DELIVER_FEE => $success['result']['deliverFee'], ); $clerk_id = $DaOrderModel->addOrder($item); if ($clerk_id) { $result['delivery_record_id'] = $clerk_id; $result['status'] = 1; $result['msg'] = $success['msg'] . "配送距离" . $success['result']['distance'] . "米,实际配送费" . $success['result']['fee'] . "运费" . $success['result']['deliverFee']; } else { $result['status'] = 1; $result['msg'] = $success['msg'] . "配送距离" . $success['result']['distance'] . "米,实际配送费" . $success['result']['fee'] . "运费" . $success['result']['deliverFee'] . '订单状态未修改'; } } else { $result['status'] = 0; $result['msg'] = $success['msg']; } return $result; } /** * UU配送 * @param $billOrder 订单主表 * @param $onlineOrder 订单线上表 * @param $special_type 特殊处理类型,是否需要保温箱 1需要 0不需要 * @param $uu_phone 发件人手机号 * @param $note 备注 * @return mixed */ protected function toUUDelivery($parameter) { $billOrder =$parameter['bill_order']; $onlineOrder = $parameter['online_order']; $special_type = $parameter['special_type']; $uu_phone = $parameter['uu_phone']; $note = $parameter['note']; $store = $parameter['store']; $merchant_id = $parameter['merchant_id']; $store_id = $parameter['store_id']; $OnlineModel = D('RetailBillOnline'); if (!$billOrder) { $res['status'] = 0; $res['msg'] = '参数错误,请重新下单'; return $res; } $UuOrderModel = D('RetailUuOrder'); $orderInfo = $UuOrderModel->getFind(array($UuOrderModel::ID => $onlineOrder[$OnlineModel::DELIVERY_RECORD_ID])); if (empty($orderInfo)) { $res['status'] = 0; $res['msg'] = '未找到订单,刷新重试'; return $res; } $DeliveryConfigModel = D('RetailDeliveryConfig'); $deliveryConfig = $DeliveryConfigModel->getFind(); if (empty($deliveryConfig)) { $result['status'] = 0; $result['msg'] = '请先联系合伙人完善开发者信息'; return $result; } $uu_app_id = $deliveryConfig[$DeliveryConfigModel::UU_APPID]; $uu_ip = $deliveryConfig[$DeliveryConfigModel::UU_IP]; $uu_app_key = $deliveryConfig[$DeliveryConfigModel::UU_APP_KEY]; if (empty($uu_app_id) || empty($uu_ip) || empty($uu_app_key)) { $result['status'] = 0; $result['msg'] = '请联系合伙人完善UU配送所需信息'; return $result; } $UuMerchantModel = D('RetailUuMerchant'); $openid = $UuMerchantModel->getFindField(array($UuMerchantModel::MERCHANT_ID => $parameter['merchant_id']), $UuMerchantModel::OPENID); $title = 'http'; if ($_SERVER['HTTPS'] == 'on') { $title .= 's'; } $http = $title . '://' . $_SERVER['HTTP_HOST']; $data = array( 'price_token' => $orderInfo[$UuOrderModel::PRICE_TOKEN], 'order_price' => $orderInfo[$UuOrderModel::TOTAL_MONEY], 'balance_paymoney' => $orderInfo[$UuOrderModel::NEED_PAY_MONEY], 'receiver' => $onlineOrder[$OnlineModel::USER_NAME], 'receiver_phone' => $onlineOrder[$OnlineModel::USER_PHONE], 'push_type' => 0, 'special_type' => $special_type, 'callme_withtake' => 1, 'pubusermobile' => $uu_phone, 'openid' => $openid, 'appid' => $uu_app_id, 'callback_url' => $http . '/index.php/NotifyApi/Uu/orderCallBack', ); if (!empty($note)) { $data['note'] = $note; } $content = A('Retail/Uudelivery')->addorder($data, $uu_app_key); $content = json_decode($content, true); if ($content['return_code'] == 'ok' && $content['appid'] == $data['appid']) { $save = array( $UuOrderModel::ORDER_CODE => $content['ordercode'], $UuOrderModel::STATE => 1 ); $uuSave = $UuOrderModel->updateOrder(array($UuOrderModel::ID => $orderInfo[$UuOrderModel::ID]), $save); if ($uuSave) { $res['delivery_record_id'] = $onlineOrder[$OnlineModel::DELIVERY_RECORD_ID]; $res['status'] = 1; $res['msg'] = '下单成功'; } else { $res['status'] = 0; $res['msg'] = '下单成功,订单状态修改失败'; } } else { $res['status'] = 0; $res['msg'] = $content['return_msg']; } return $res; } /** * 取消配送 * order_no 订单号 * reason //UU取消配送原因 * reason_id //达达取消配送原因id */ public function cancelDelivery($parameter) { $order_no = $parameter["order_no"]; $reason = $parameter["reason"]?$parameter["reason"]:''; $reason_id = $parameter["reason_id"]?$parameter["reason_id"]:0; $merchant_id = $parameter["merchant_id"]; $store_id = $parameter["store_id"]; if (empty($order_no)) { $result['status'] = 0; $result['msg'] = "缺少参数"; return $result; } //查询该订单 $BillModel = D('RetailBillOrder'); $bMap = array( $BillModel::ORDER_NO => strval($order_no), $BillModel::STORE_ID => $store_id, $BillModel::PAY_STATE => 1,//支付成功 $BillModel::TYPE => 1,//商城订单 $BillModel::ORDER_TYPE => array("in","1,3"),//购买订单 换货订单 ); $billOrder = $BillModel->getFind($bMap);//主订单 if (empty($billOrder)) { $result['status'] = 0; $result['msg'] = '暂未查询到该订单'; return $result; } $OnlineModel = D('RetailBillOnline'); $oMap = array( $OnlineModel::BILL_ID => $billOrder[$BillModel::ID] ); $onlineOrder = $OnlineModel->getFind($oMap);//线上订单 if (empty($onlineOrder)) { $result['status'] = 0; $result['msg'] = '数据库操作有误'; return $result; } if (($onlineOrder[$OnlineModel::DELIVERY_TYPE] == 2 || $onlineOrder[$OnlineModel::DELIVERY_TYPE] == 3) && (empty($reason) && empty($reason_id))) { $result['status'] = 0; $result['msg'] = "缺少取消原因"; return $result; } if ($onlineOrder[$OnlineModel::STATUS] == 3) { $result['status'] = 0; $result['msg'] = '订单已收货,请刷新页面查看'; return $result; } $type = $onlineOrder[$OnlineModel::DELIVERY_TYPE]; if ($type == 2 || $type == 3) { $DeliveryConfigModel = D('RetailDeliveryConfig'); $deliveryConfig = $DeliveryConfigModel->getFind(); if (empty($deliveryConfig)) { $result['status'] = 0; $result['msg'] = '请先联系合伙人完善开发者信息'; return $result; } if ($type == 2) { //达达配送 $DaMerchantModel = D('RetailDaMerchant'); $result_id = $DaMerchantModel->getFindField(array($DaMerchantModel::MERCHANT_ID => $merchant_id), $DaMerchantModel::RESULT_ID); if (empty($result_id)) { $res['status'] = 0; $res['msg'] = '请先在达达配送注册达达商户'; return $res; } $data = array(); $data['order_id'] = $billOrder[$BillModel::ORDER_NO]; $data['cancel_reason_id'] = $reason_id; $success = A('Retail/DadaCeshi')->formalCancel($deliveryConfig[$DeliveryConfigModel::DA_APP_KEY], $deliveryConfig[$DeliveryConfigModel::DA_APP_SECRET], $result_id, $data); $success = json_decode($success, true); if ($success['status'] == 'success') { $DaOrderModel = D('RetailDaOrder'); $dMap = array( $DaOrderModel::ID => $onlineOrder[$OnlineModel::DELIVERY_RECORD_ID] ); $cancel_reason = M('retail_da_reason')->where(array('reasonid' => $reason_id))->getField('reason'); $save_d = array( $DaOrderModel::DEDUCT_FEE => $success['result']['deduct_fee'], $DaOrderModel::ORDER_STATUS => 5, $DaOrderModel::CANCEL_REASON => $cancel_reason, $DaOrderModel::CANCEL_FROM => 2, ); $clerk_save = $DaOrderModel->updateOrder($dMap, $save_d); if (!$clerk_save) { $res['status'] = 1; $res['msg'] = $success['msg'] . "订单修改失败"; } else { $res['status'] = 1; $res['msg'] = $success['msg'] . "扣除费用" . $success['result']['deduct_fee'] . "元"; } } else { $res['status'] = 0; $res['msg'] = $success['msg']; } } else { //UU配送 $uu_app_id = $deliveryConfig[$DeliveryConfigModel::UU_APPID]; $uu_ip = $deliveryConfig[$DeliveryConfigModel::UU_IP]; $uu_app_key = $deliveryConfig[$DeliveryConfigModel::UU_APP_KEY]; if (empty($uu_app_id) || empty($uu_ip) || empty($uu_app_key)) { $result['status'] = 0; $result['msg'] = '请联系合伙人完善UU配送所需信息'; return $result; } $UuOrderModel = D('RetailUuOrder'); $uuMap = array($UuOrderModel::ID => $onlineOrder[$OnlineModel::DELIVERY_RECORD_ID]); $uu_order_info = $UuOrderModel->getFind($uuMap); if (!$uu_order_info) { $res['status'] = 0; $res['msg'] = '未找到该uu订单'; return $res; } $UuMerchantModel = D('RetailUuMerchant'); $openid = $UuMerchantModel->getFindField(array($UuMerchantModel::MERCHANT_ID => $merchant_id), $UuMerchantModel::OPENID); $data['order_code'] = $uu_order_info[$UuOrderModel::ORDER_CODE]; $data['reason'] = $reason ? $reason : ''; $data['openid'] = $openid; $data['appid'] = $uu_app_id; $content = A('Retail/Uudelivery')->cancelorder($data, $uu_app_key); $content = json_decode($content, true); if ($content['return_code'] == 'ok' && $content['appid'] == $data['appid']) { $save = $UuOrderModel->updateOrder($uuMap, array($UuOrderModel::STATE => '-1')); if ($save) { $res['status'] = 1; $res['msg'] = '取消配送成功'; } else { $res['status'] = 0; $res['msg'] = '取消成功,订单状态修改失败'; } } else { $res['status'] = 0; $res['msg'] = $content['return_msg']; } } } else { $res['status'] = 1; $res['msg'] = '取消配送成功'; } if ($res['status'] == 1) { if($billOrder['order_type'] == 3){ //换货订单商家库存增加 $param = array( 'bill_order'=>$billOrder ); A("Api/Inventory")->CustomerStockInc($param); } $saveOnline = array( $OnlineModel::DELIVERY_TYPE => 1,//配送方式 $OnlineModel::DELIVERY_RECORD_ID => 0,//配送id $OnlineModel::STATUS => 1,//状态:未发货 $OnlineModel::CANCEL_DELIVERY_STATUS => 2,//1取消过配送 ); } $OnlineModel->updateOrder($oMap, $saveOnline); return $res; } }