520 行
28 KiB
PHP
可执行文件
520 行
28 KiB
PHP
可执行文件
<?php
|
||
|
||
namespace Common\Lib;
|
||
|
||
class Maiyatian extends MaiyatianBase
|
||
{
|
||
/**
|
||
* 初始化
|
||
* @param integer $id 店铺标识
|
||
*/
|
||
public function __construct($id)
|
||
{
|
||
parent::__construct();
|
||
$this->store = (new \Common\Model\StoreModel)->where(['id' => $id])->find();
|
||
}
|
||
|
||
public function oauth()
|
||
{
|
||
return sprintf('%s/oauth/index/?app_key=%s&response_type=code&view=web&redirect_uri=%s&shop_id=%s&state=%s', C('MYT_OAUTH_DOMAIN'), C('MYT_APPKEY'), urlencode($this->redirectUri), $this->store['id'], $this->store['id']);
|
||
}
|
||
|
||
public function token($code)
|
||
{
|
||
$result = $this->request('/v1/channel/access_token', [
|
||
'grant_type' => 'shop',
|
||
'code' => $code,
|
||
'shop_id' => (string)$this->store['id'],
|
||
'category' => $this->store['maiyatian_category'],
|
||
'name' => $this->store['storetag'],
|
||
'type' => 'waimai',
|
||
'longitude' => $this->store['longitude'],
|
||
'latitude' => $this->store['latitude'],
|
||
]);
|
||
if ($result['code'] === 200) {
|
||
$data = json_decode($result['data'], true);
|
||
return $data;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 新订单
|
||
* @param array $data
|
||
* @param array order 订单主体信息
|
||
* @param string order.order_id 平台方订单唯一ID
|
||
* @param integer order.order_sn 平台方流水号,需要当天自然数增长,不能随便传一个数字
|
||
* @param string order.origin_tag 原始订单来源渠道标识(枚举值参考附录)
|
||
* @param boolean order.is_pre_order 是否预约单
|
||
* @param integer order.total_price 订单金额(单位:分)
|
||
* @param integer order.balance_price 实付金额(单位:分)
|
||
* @param integer order.create_time 下单时间(单位:unix 时间戳,精确到秒)
|
||
* @param integer order.delivery_time 期望送达时间(单位:unix 时间戳,精确到秒)
|
||
* @param integer order.delivery_end [可选] 期望截止时间(单位:unix 时间戳,精确到秒)
|
||
* @param integer order.delivery_type 配送类型:0=麦芽田自动适配,1=同城配送,2=全国快递
|
||
* @param boolean order.is_picker 是否自提
|
||
* @param integer order.pick_time [可选] 自提时间 (单位:unix 时间戳,精确到秒)
|
||
* @param string order.user_remark 用户备注
|
||
* @param string order.greeting [可选] 祝福语
|
||
* @param string order.pickup_code [可选] 取货码
|
||
* @param array order.order_fee 订单费用信息
|
||
* @param integer order.order_fee.total_fee 订单原价总金额(单位:分)
|
||
* @param integer order.order_fee.send_fee 顾客下单时支付的配送费(单位:分)
|
||
* @param integer order.order_fee.package_fee 餐盒费(单位:分)
|
||
* @param integer order.order_fee.discount_fee 优惠总金额(单位:分)
|
||
* @param integer order.order_fee.shop_fee 商户应收金额(单位:分)
|
||
* @param integer order.order_fee.user_fee 用户实付金额(单位:分)
|
||
* @param integer order.order_fee.pay_type 付款类型:1=货到付款,2=线上
|
||
* @param boolean order.order_fee.need_invoice [可选] 是否需要发票
|
||
* @param array order.order_fee.invoice [可选] 发票相关数据
|
||
* @param integer order.order_fee.invoice.type 发票类型:1=公司,2=个人
|
||
* @param string order.order_fee.invoice.title 发票抬头
|
||
* @param string order.order_fee.invoice.taxer_id 纳税人识别号
|
||
* @param string order.order_fee.invoice.email [可选] 发票邮箱,比如 example@qq.com
|
||
* @param integer order.order_fee.invoice.form_type [可选] 发票类型:1=纸质,2=电子
|
||
* @param integer order.order_fee.commission [可选] 用户备注佣金(单位:分)
|
||
* @param array order.order_fee.activity [可选] 活动详情
|
||
* @param integer order.order_fee.activity.type 活动类型(枚举值参考附录)
|
||
* @param string order.order_fee.activity.title 活动说明
|
||
* @param integer order.order_fee.activity.merchant 商户金额(单位:分)
|
||
* @param integer order.order_fee.activity.reduce 减免金额(单位:分)
|
||
* @param boolean order.order_fee.is_first [可选] 是否首次购买
|
||
* @param boolean order.order_fee.is_favorite [可选] 是否收藏用户
|
||
* @param array order.order_goods 订单商品
|
||
* @param string order.order_goods.goods_id 平台方商品ID
|
||
* @param string order.order_goods.goods_name 商品名称
|
||
* @param string order.order_goods.thumb 商品图片
|
||
* @param string order.order_goods.sku_id 平台方规格ID
|
||
* @param string order.order_goods.sku_name [可选] 商品SKU名称
|
||
* @param array order.order_goods.food_property 商品属性
|
||
* @param array order.order_goods.sku_attributes 规则信息
|
||
* @param string order.order_goods.sku_attributes.name 商品SKU套餐名称
|
||
* @param string order.order_goods.unit 商品单位
|
||
* @param integer order.order_goods.weight 商品单个重量
|
||
* @param string order.order_goods.upc [可选] 商品统一编码
|
||
* @param string order.order_goods.shelf_no [可选] 货架号
|
||
* @param integer order.order_goods.number 数量
|
||
* @param integer order.order_goods.goods_price 商品单价(单位:分)
|
||
* @param integer order.order_goods.goods_total_fee 商品总价(单位:分)
|
||
* @param integer order.order_goods.package_number [可选] 包装盒数量
|
||
* @param integer order.order_goods.package_price [可选] 包装盒单价(单位:分)
|
||
* @param integer order.order_goods.package_total_fee [可选] 包装盒总价(单位:分)
|
||
* @param integer order.order_goods.reduce_fee 商品折扣单价(单位:分)
|
||
* @param integer order.order_goods.discount_fee 商品总优惠金额(单位:分)
|
||
* @param integer order.order_goods.discount_platform_fee [可选] 渠道承担费用(单位:分)
|
||
* @param integer order.order_goods.discount_merchant_fee [可选] 商户承担费用(单位:分)
|
||
* @param integer order.order_goods.discount_agent_fee [可选] 代理商承担费用(单位:分)
|
||
* @param integer order.order_goods.discount_logistics_fee [可选] 物流承担费用(单位:分)
|
||
* @param integer order.order_goods.total_fee 合计费用(折扣后)(单位:分)
|
||
* @param string order.order_goods.goods_code [可选] 系统外,商户自定义商品编码ID
|
||
* @param string order.order_goods.sku_code [可选] 系统外,商户自定义商品SKU编码ID
|
||
* @param array order.customer 用户信息
|
||
* @param string order.customer.real_name 客户真实姓名
|
||
* @param string order.customer.phone 客户电话
|
||
* @param string order.customer.secret_phone 客户加密电话
|
||
* @param string order.customer.order_phone [可选] 预定人电话
|
||
* @param string order.customer.reserve_phone [可选] 备用电话
|
||
* @param string order.customer.address 客户详细地址
|
||
* @param string order.customer.longitude 收货经度(国测局02标准,如高德)
|
||
* @param string order.customer.latitude 收货纬度(国测局02标准,如高德)
|
||
* @param integer order.customer.update_time 订单创建时间(单位:unix 时间戳,精确到秒)
|
||
*/
|
||
public function orderCreated($data) {
|
||
$param = $this->orderParam($data);
|
||
$result = $this->request('/v1/channel/order_created', $param);
|
||
return $result['code'] === 200 && $result['message'] === 'ok';
|
||
}
|
||
|
||
/**
|
||
* 订单修改
|
||
* @param array $data
|
||
* @param array order 订单主体信息
|
||
* @param string order.order_id 平台方订单唯一ID
|
||
* @param integer order.order_sn 平台方流水号,需要当天自然数增长,不能随便传一个数字
|
||
* @param string order.origin_tag 原始订单来源渠道标识(枚举值参考附录)
|
||
* @param boolean order.is_pre_order 是否预约单
|
||
* @param integer order.total_price 订单金额(单位:分)
|
||
* @param integer order.balance_price 实付金额(单位:分)
|
||
* @param integer order.create_time 下单时间(单位:unix 时间戳,精确到秒)
|
||
* @param integer order.delivery_time 期望送达时间(单位:unix 时间戳,精确到秒)
|
||
* @param integer order.delivery_end [可选] 期望截止时间(单位:unix 时间戳,精确到秒)
|
||
* @param integer order.delivery_type 配送类型:0=麦芽田自动适配,1=同城配送,2=全国快递
|
||
* @param boolean order.is_picker 是否自提
|
||
* @param integer order.pick_time [可选] 自提时间 (单位:unix 时间戳,精确到秒)
|
||
* @param string order.user_remark 用户备注
|
||
* @param string order.greeting [可选] 祝福语
|
||
* @param string order.pickup_code [可选] 取货码
|
||
* @param array order.order_fee 订单费用信息
|
||
* @param integer order.order_fee.total_fee 订单原价总金额(单位:分)
|
||
* @param integer order.order_fee.send_fee 顾客下单时支付的配送费(单位:分)
|
||
* @param integer order.order_fee.package_fee 餐盒费(单位:分)
|
||
* @param integer order.order_fee.discount_fee 优惠总金额(单位:分)
|
||
* @param integer order.order_fee.shop_fee 商户应收金额(单位:分)
|
||
* @param integer order.order_fee.user_fee 用户实付金额(单位:分)
|
||
* @param integer order.order_fee.pay_type 付款类型:1=货到付款,2=线上
|
||
* @param boolean order.order_fee.need_invoice [可选] 是否需要发票
|
||
* @param array order.order_fee.invoice [可选] 发票相关数据
|
||
* @param integer order.order_fee.invoice.type 发票类型:1=公司,2=个人
|
||
* @param string order.order_fee.invoice.title 发票抬头
|
||
* @param string order.order_fee.invoice.taxer_id 纳税人识别号
|
||
* @param string order.order_fee.invoice.email [可选] 发票邮箱,比如 example@qq.com
|
||
* @param integer order.order_fee.invoice.form_type [可选] 发票类型:1=纸质,2=电子
|
||
* @param integer order.order_fee.commission [可选] 用户备注佣金(单位:分)
|
||
* @param array order.order_fee.activity [可选] 活动详情
|
||
* @param integer order.order_fee.activity.type 活动类型(枚举值参考附录)
|
||
* @param string order.order_fee.activity.title 活动说明
|
||
* @param integer order.order_fee.activity.merchant 商户金额(单位:分)
|
||
* @param integer order.order_fee.activity.reduce 减免金额(单位:分)
|
||
* @param boolean order.order_fee.is_first [可选] 是否首次购买
|
||
* @param boolean order.order_fee.is_favorite [可选] 是否收藏用户
|
||
* @param array order.order_goods 订单商品
|
||
* @param string order.order_goods.goods_id 平台方商品ID
|
||
* @param string order.order_goods.goods_name 商品名称
|
||
* @param string order.order_goods.thumb 商品图片
|
||
* @param string order.order_goods.sku_id 平台方规格ID
|
||
* @param string order.order_goods.sku_name [可选] 商品SKU名称
|
||
* @param array order.order_goods.food_property 商品属性
|
||
* @param array order.order_goods.sku_attributes 规则信息
|
||
* @param string order.order_goods.sku_attributes.name 商品SKU套餐名称
|
||
* @param string order.order_goods.unit 商品单位
|
||
* @param integer order.order_goods.weight 商品单个重量
|
||
* @param string order.order_goods.upc [可选] 商品统一编码
|
||
* @param string order.order_goods.shelf_no [可选] 货架号
|
||
* @param integer order.order_goods.number 数量
|
||
* @param integer order.order_goods.goods_price 商品单价(单位:分)
|
||
* @param integer order.order_goods.goods_total_fee 商品总价(单位:分)
|
||
* @param integer order.order_goods.package_number [可选] 包装盒数量
|
||
* @param integer order.order_goods.package_price [可选] 包装盒单价(单位:分)
|
||
* @param integer order.order_goods.package_total_fee [可选] 包装盒总价(单位:分)
|
||
* @param integer order.order_goods.reduce_fee 商品折扣单价(单位:分)
|
||
* @param integer order.order_goods.discount_fee 商品总优惠金额(单位:分)
|
||
* @param integer order.order_goods.discount_platform_fee [可选] 渠道承担费用(单位:分)
|
||
* @param integer order.order_goods.discount_merchant_fee [可选] 商户承担费用(单位:分)
|
||
* @param integer order.order_goods.discount_agent_fee [可选] 代理商承担费用(单位:分)
|
||
* @param integer order.order_goods.discount_logistics_fee [可选] 物流承担费用(单位:分)
|
||
* @param integer order.order_goods.total_fee 合计费用(折扣后)(单位:分)
|
||
* @param string order.order_goods.goods_code [可选] 系统外,商户自定义商品编码ID
|
||
* @param string order.order_goods.sku_code [可选] 系统外,商户自定义商品SKU编码ID
|
||
* @param array order.customer 用户信息
|
||
* @param string order.customer.real_name 客户真实姓名
|
||
* @param string order.customer.phone 客户电话
|
||
* @param string order.customer.secret_phone 客户加密电话
|
||
* @param string order.customer.order_phone [可选] 预定人电话
|
||
* @param string order.customer.reserve_phone [可选] 备用电话
|
||
* @param string order.customer.address 客户详细地址
|
||
* @param string order.customer.longitude 收货经度(国测局02标准,如高德)
|
||
* @param string order.customer.latitude 收货纬度(国测局02标准,如高德)
|
||
* @param integer order.customer.update_time 订单创建时间(单位:unix 时间戳,精确到秒)
|
||
*/
|
||
public function orderModified($data) {
|
||
$param = $this->orderParam($data);
|
||
$result = $this->request('/v1/channel/order_modified', $param);
|
||
return $result['code'] === 200 && $result['message'] === 'ok';
|
||
}
|
||
|
||
/**
|
||
* 订单确认
|
||
* @param string $orderId 平台方订单唯一ID
|
||
*/
|
||
public function orderConfirmed($orderId) {
|
||
$result = $this->request('/v1/channel/order_confirmed', [
|
||
'order_id' => $orderId,
|
||
'shop_id' => (string)$this->store['id'],
|
||
'update_time' => time(),
|
||
]);
|
||
return $result['code'] === 200 && $result['message'] === 'ok';
|
||
}
|
||
|
||
/**
|
||
* 订单催单
|
||
* @param array $data
|
||
* @param string order_id 平台方订单唯一ID
|
||
* @param integer remind_id 平台方催单ID
|
||
* @param string reason [可选] 催单原因
|
||
*/
|
||
public function orderRemind($data) {
|
||
$result = $this->request('/v1/channel/order_remind', [
|
||
'order_id' => $data['order_id'],
|
||
'shop_id' => (string)$this->store['id'],
|
||
'remind_id' => $data['remind_id'],
|
||
'reason' => $data['reason'],
|
||
'update_time' => time(),
|
||
]);
|
||
return $result['code'] === 200 && $result['message'] === 'ok';
|
||
}
|
||
|
||
/**
|
||
* 订单申请退款
|
||
* @param array $data
|
||
* @param string order_id 平台方订单唯一ID
|
||
* @param string refund_id [可选] 退款标识
|
||
* @param integer type 退款类型:1=全部,2=部分
|
||
* @param string reason 原因
|
||
* @param array goods 退款商品信息
|
||
* @param string goods.goods_id 平台方商品ID
|
||
* @param string goods.goods_name 商品名称
|
||
* @param string goods.upc 商品统一编码
|
||
* @param string goods.shelf_no 货架号
|
||
* @param string goods.sku_id 平台方规格ID
|
||
* @param integer goods.number 数量
|
||
* @param integer goods.goods_total_fee 商品总价(单位:分)
|
||
* @param integer goods.package_number 包装盒数量
|
||
* @param integer goods.package_fee 餐盒费
|
||
* @param integer goods.refund_fee 退款金额
|
||
* @param integer goods.total_price 订单金额
|
||
* @param integer goods.count 商品数量
|
||
*/
|
||
public function orderApplyFefund($data) {
|
||
$result = $this->request('/v1/channel/order_apply_refund', [
|
||
'order_id' => $data['order_id'],
|
||
'shop_id' => (string)$this->store['id'],
|
||
'refund_id' => $data['refund_id'],
|
||
'type' => $data['type'],
|
||
'reason' => $data['reason'],
|
||
'goods' => [
|
||
'goods_id' => $data['goods']['goods_id'],
|
||
'goods_name' => $data['goods']['goods_name'],
|
||
'upc' => $data['goods']['upc'],
|
||
'shelf_no' => $data['goods']['shelf_no'],
|
||
'sku_id' => $data['goods']['sku_id'],
|
||
'number' => $data['goods']['number'],
|
||
'goods_total_fee' => $data['goods']['goods_total_fee'],
|
||
'package_number' => $data['goods']['package_number'],
|
||
'package_fee' => $data['goods']['package_fee'],
|
||
'refund_fee' => $data['goods']['refund_fee'],
|
||
'total_price' => $data['goods']['total_price'],
|
||
'count' => $data['goods']['count'],
|
||
],
|
||
'update_time' => time(),
|
||
]);
|
||
return $result['code'] === 200 && $result['message'] === 'ok';
|
||
}
|
||
|
||
/**
|
||
* 订单退款
|
||
* @param array $data
|
||
* @param string order_id 平台方订单唯一ID
|
||
* @param string status 退款状态:1=确认,2=驳回,3=用户取消退款申请
|
||
* @param integer type 退款类型:1=全部,2=部分
|
||
* @param string reason 原因
|
||
* @param array goods 退款商品信息
|
||
* @param string goods.goods_id 平台方商品ID
|
||
* @param string goods.goods_name 商品名称
|
||
* @param string goods.upc 商品统一编码
|
||
* @param string goods.shelf_no 货架号
|
||
* @param string goods.sku_id 平台方规格ID
|
||
* @param integer goods.number 数量
|
||
* @param integer goods.goods_total_fee 商品总价(单位:分)
|
||
* @param integer goods.package_number 包装盒数量
|
||
* @param integer goods.package_fee 餐盒费
|
||
* @param integer goods.refund_fee 退款金额
|
||
* @param integer goods.total_price 订单金额
|
||
* @param integer goods.count 商品数量
|
||
*/
|
||
public function orderRefunded($data) {
|
||
$result = $this->request('/v1/channel/order_refunded', [
|
||
'order_id' => $data['order_id'],
|
||
'shop_id' => (string)$this->store['id'],
|
||
'status' => $data['status'],
|
||
'type' => $data['type'],
|
||
'reason' => $data['reason'],
|
||
'goods' => [
|
||
'goods_id' => $data['goods']['goods_id'],
|
||
'goods_name' => $data['goods']['goods_name'],
|
||
'upc' => $data['goods']['upc'],
|
||
'shelf_no' => $data['goods']['shelf_no'],
|
||
'sku_id' => $data['goods']['sku_id'],
|
||
'number' => $data['goods']['number'],
|
||
'goods_total_fee' => $data['goods']['goods_total_fee'],
|
||
'package_number' => $data['goods']['package_number'],
|
||
'package_fee' => $data['goods']['package_fee'],
|
||
'refund_fee' => $data['goods']['refund_fee'],
|
||
'total_price' => $data['goods']['total_price'],
|
||
'count' => $data['goods']['count'],
|
||
],
|
||
'update_time' => time(),
|
||
]);
|
||
return $result['code'] === 200 && $result['message'] === 'ok';
|
||
}
|
||
|
||
/**
|
||
* 订单取消
|
||
* @param array $data
|
||
* @param string order_id 平台方订单唯一ID
|
||
* @param string reason 催单原因
|
||
* @param integer reason_code 取消类型:1=系统取消,2=用户取消,3=客服取消,4=商户取消,5=其他,8=线下取消
|
||
*/
|
||
public function orderCanceled($data) {
|
||
$result = $this->request('/v1/channel/order_canceled', [
|
||
'order_id' => $data['order_id'],
|
||
'shop_id' => (string)$this->store['id'],
|
||
'reason' => $data['reason'],
|
||
'reason_code' => $data['reason_code'],
|
||
'update_time' => time(),
|
||
]);
|
||
return $result['code'] === 200 && $result['message'] === 'ok';
|
||
}
|
||
|
||
/**
|
||
* 订单完成
|
||
* @param array $data
|
||
* @param string orderId 平台方订单唯一ID
|
||
*/
|
||
public function orderDone($orderId) {
|
||
$result = $this->request('/v1/channel/order_done', [
|
||
'order_id' => $orderId,
|
||
'shop_id' => (string)$this->store['id'],
|
||
'update_time' => time(),
|
||
]);
|
||
return $result['code'] === 200 && $result['message'] === 'ok';
|
||
}
|
||
|
||
/**
|
||
* 平台方自配送状态同步
|
||
* @param array $data
|
||
* @param string order_no 三方平台订单号
|
||
* @param string source_order_no 下单方提供的单号
|
||
* @param string status 配送状态
|
||
* @param string rider_name 骑手姓名
|
||
* @param string rider_phone 骑手手机号
|
||
* @param string logistic_tag 配送方
|
||
* @param string longitude 经度(国测局02标准,如高德)
|
||
* @param string latitude 纬度(国测局02标准,如高德)
|
||
* @param string pickup_code [可选] 取货码
|
||
*/
|
||
public function selfDeliveryChange($data) {
|
||
$result = $this->request('/v1/channel/self_delivery_change', [
|
||
'order_no' => $data['order_no'],
|
||
'source_order_no' => $data['source_order_no'],
|
||
'shop_id' => (string)$this->store['id'],
|
||
'status' => $data['status'],
|
||
'rider_name' => $data['rider_name'],
|
||
'rider_phone' => $data['rider_phone'],
|
||
'logistic_tag' => $data['logistic_tag'],
|
||
'longitude' => $data['longitude'],
|
||
'latitude' => $data['latitude'],
|
||
'pickup_code' => $data['pickup_code'],
|
||
'update_time' => time(),
|
||
]);
|
||
return $result['code'] === 200 && $result['message'] === 'ok';
|
||
}
|
||
|
||
/**
|
||
* 查询订单信息
|
||
* @param string $orderId 平台方订单唯一ID
|
||
*/
|
||
public function queryOrder($orderId) {
|
||
$result = $this->request('/v1/channel/query_order', [
|
||
'order_id' => $orderId,
|
||
'shop_id' => (string)$this->store['id'],
|
||
]);
|
||
if ($result['code'] === 200 && $result['message'] === 'ok') {
|
||
return @json_decode($result['data'], true);
|
||
}
|
||
}
|
||
|
||
private function orderParam($data) {
|
||
$param = [
|
||
'order' => [
|
||
'order_id' => $data['order']['order_id'],
|
||
'order_sn' => $data['order']['order_sn'],
|
||
'shop_id' => (string)$this->store['id'],
|
||
'shop_name' => $this->store['storetag'],
|
||
'origin_tag' => $data['order']['origin_tag'],
|
||
'category' => $this->store['maiyatian_category'],
|
||
'is_pre_order' => $data['order']['is_pre_order'],
|
||
'total_price' => $data['order']['total_price'],
|
||
'balance_price' => $data['order']['balance_price'],
|
||
'create_time' => $data['order']['create_time'],
|
||
'delivery_time' => $data['order']['delivery_time'],
|
||
'delivery_end' => $data['order']['delivery_end'],
|
||
'delivery_type' => $data['order']['delivery_type'],
|
||
'is_picker' => $data['order']['is_picker'],
|
||
'pick_time' => empty($data['order']['pick_time']) ? 0 : $data['order']['pick_time'],
|
||
'user_remark' => $data['order']['user_remark'],
|
||
'greeting' => empty($data['order']['greeting']) ? '' : $data['order']['greeting'],
|
||
'pickup_code' => empty($data['order']['pickup_code']) ? '' : $data['order']['pickup_code'],
|
||
'order_fee' => [
|
||
'total_fee' => $data['order']['order_fee']['total_fee'],
|
||
'send_fee' => $data['order']['order_fee']['send_fee'],
|
||
'package_fee' => $data['order']['order_fee']['package_fee'],
|
||
'discount_fee' => $data['order']['order_fee']['discount_fee'],
|
||
'shop_fee' => $data['order']['order_fee']['shop_fee'],
|
||
'user_fee' => $data['order']['order_fee']['user_fee'],
|
||
'pay_type' => $data['order']['order_fee']['pay_type'],
|
||
'commission' => is_numeric($data['order']['order_fee']['commission']) ? $data['order']['order_fee']['commission'] : 0,
|
||
'is_first' => is_bool($data['order']['order_fee']['is_first']) ? $data['order']['order_fee']['is_first'] : true,
|
||
'is_favorite' => is_bool($data['order']['order_fee']['is_favorite']) ? $data['order']['order_fee']['is_favorite'] : false,
|
||
],
|
||
'order_goods' => [],
|
||
],
|
||
'order_customer' => [
|
||
'real_name' => $data['order_customer']['real_name'],
|
||
'phone' => $data['order_customer']['phone'],
|
||
'secret_phone' => $data['order_customer']['secret_phone'],
|
||
'order_phone' => empty($data['order_customer']['order_phone']) ? '' : $data['order_customer']['order_phone'],
|
||
'reserve_phone' => empty($data['order_customer']['reserve_phone']) ? '' : $data['order_customer']['reserve_phone'],
|
||
'address' => $data['order_customer']['address'],
|
||
'longitude' => $data['order_customer']['longitude'],
|
||
'latitude' => $data['order_customer']['latitude'],
|
||
],
|
||
'update_time' => time(),
|
||
];
|
||
|
||
if (is_array($data['order']['order_goods'])) {
|
||
foreach($data['order']['order_goods'] as $item) {
|
||
$data['order']['order_goods'][] = [
|
||
'goods_id' => $item['goods_id'],
|
||
'goods_name' => $item['goods_name'],
|
||
'thumb' => $item['thumb'],
|
||
'sku_id' => $item['sku_id'],
|
||
'sku_name' => empty($item['sku_name']) ? '' : $item['sku_name'],
|
||
'food_property' => $item['food_property'],
|
||
'sku_attributes' => [
|
||
'name' => $item['sku_attributes']['name'],
|
||
],
|
||
'unit' => $item['unit'],
|
||
'weight' => $item['weight'],
|
||
'upc' => empty($item['upc']) ? '' : $item['upc'],
|
||
'shelf_no' => empty($item['shelf_no']) ? '' : $item['shelf_no'],
|
||
'number' => $item['number'],
|
||
'goods_price' => $item['goods_price'],
|
||
'goods_total_fee' => $item['goods_total_fee'],
|
||
'package_number' => is_numeric($item['package_number']) ? $item['package_number'] : 0,
|
||
'package_price' => is_numeric($item['package_price']) ? $item['package_price'] : 0,
|
||
'package_total_fee' => is_numeric($item['package_total_fee']) ? $item['package_total_fee'] : 0,
|
||
'reduce_fee' => $item['reduce_fee'],
|
||
'discount_fee' => $item['discount_fee'],
|
||
'discount_platform_fee' => is_numeric($item['discount_platform_fee']) ? $item['discount_platform_fee'] : 0,
|
||
'discount_merchant_fee' => is_numeric($item['discount_merchant_fee']) ? $item['discount_merchant_fee'] : 0,
|
||
'discount_agent_fee' => is_numeric($item['discount_agent_fee']) ? $item['discount_agent_fee'] : 0,
|
||
'discount_logistics_fee' => is_numeric($item['discount_logistics_fee']) ? $item['discount_logistics_fee'] : 0,
|
||
'total_fee' => $item['total_fee'],
|
||
'goods_code' => empty($item['goods_code']) ? '' : $item['goods_code'],
|
||
'sku_code' => empty($item['sku_code']) ? '' : $item['sku_code'],
|
||
];
|
||
}
|
||
}
|
||
if ($data['order']['order_fee']['need_invoice'] && is_array($data['order']['order_fee']['invoice'])) {
|
||
$param['need_invoice'] = true;
|
||
$param['invoice'] = [
|
||
'type' => $data['order']['order_fee']['invoice']['type'],
|
||
'title' => $data['order']['order_fee']['invoice']['title'],
|
||
'taxer_id' => $data['order']['order_fee']['invoice']['taxer_id'],
|
||
'email' => $data['order']['order_fee']['invoice']['email'] || '',
|
||
'form_type' => $data['order']['order_fee']['invoice']['form_type'] || 2,
|
||
];
|
||
}
|
||
if (is_array($data['order']['order_fee']['activity'])) {
|
||
$param['activity'] = [];
|
||
foreach($data['order']['order_fee']['activity'] as $item) {
|
||
$param['activity'][] = [
|
||
'type' => $item['type'],
|
||
'title' => $item['title'],
|
||
'merchant' => $item['merchant'],
|
||
'reduce' => $item['reduce'],
|
||
];
|
||
}
|
||
}
|
||
return $param;
|
||
}
|
||
} |