文件
mashangyoujiu/Application/Common/Business/DeliveryController.class.php

667 行
30 KiB
PHP
可执行文件

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<?php
namespace Api\Controller;
use Think\Controller;
//[1.5.44]
class DeliveryController extends Controller{
/**
* 获取UU配送费和距离
* @param order_no 订单号
*/
public function getUuDeliveryPrice($parameter)
{
$verify_bill_order = D("RetailBillOrder")->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;
}
}