文件
mashangyoujiu/Application/Distribution/Behavior/paySuccessBehavior.class.php

132 行
6.7 KiB
PHP
可执行文件

<?php
namespace Distribution\Behavior;
use Common\Model\RetailStoreXcxConfigModel;
use Common\Model\RetailBillOnlineModel;
use Common\Model\RetailBillDiscountModel;
use Common\Model\RetailGoodsModel;
use Common\Model\ImageGalleryModel;
use Common\Model\RetailSellModel;
use Common\Model\RetailMaiyatianOrderModel;
class paySuccessBehavior extends \Think\Behavior
{
public function run(&$param)
{
file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/paySuccess.txt', var_export($param, true) . PHP_EOL, FILE_APPEND);
$online = (new RetailBillOnlineModel)->where(['bill_id' => $param['id']])->find();
$allMoney = (int)$param['all_money'] * 100;
$amountReceived = (int)$param['amount_received'] * 100;
$coordinates = getAddress($online["user_address"], 1);
$data = [
'order' => [
'order_id' => $param['order_no'],
'order_sn' => (int)$param['id'],
'shop_id' => $param['store_id'],
'origin_tag' => 'weixin',
'is_pre_order' => false,
'total_price' => $allMoney,
'balance_price' => $amountReceived,
'create_time' => (int)$param['add_time'],
'delivery_time' => 0,
'delivery_end' => 0,
'delivery_type' => 0,
'is_picker' => false,
'pick_time' => 0,
'user_remark' => '',
'greeting' => '',
'pickup_code' => '',
'order_fee' => [
'total_fee' => $allMoney,
'send_fee' => 0,
'package_fee' => 0,
'discount_fee' => 0,
'shop_fee' => $amountReceived,
'user_fee' => $amountReceived,
'pay_type' => 2,
'need_invoice' => false,
'invoice' => [],
'commission' => 0,
'activity' => [],
'is_first' => false,
'is_favorite' => false,
],
'order_goods' => array_map(function ($item) use ($param) {
$ImageGalleryModel = new ImageGalleryModel();
$thumb = $ImageGalleryModel->getFieldPath(array('id' => $item['goods_img_id']));
$skuInfo = @json_decode($item["sku_json_info"], true);
$goods = (new RetailGoodsModel)->where(['id' => $item['goods_id']])->find();
$sell = (new RetailSellModel)->where(['bill_id' => $param['id']])->find();
$price = (int)$sell['price'] * 100;
$allMoney = (int)$sell['all_money'] * 100;
return [
'goods_id' => $item['goods_id'],
'goods_name' => $item['goods_name'],
'thumb' => $thumb,
'sku_id' => $item['sku_id'],
'sku_name' => is_array($skuInfo) && isset($skuInfo['name']) ? $skuInfo['name'] : '',
'food_property' => '',
'sku_attributes' => [],
'unit' => $item['company'],
'weight' => empty($goods['weight_value']) ? 0 : $goods['weight_value'],
'upc' => empty($item['goods_code']) ? '' : $item['goods_code'],
'shelf_no' => empty($item['goods_number']) ? '' : $item['goods_number'],
'number' => $sell['sell_number'],
'goods_price' => $price,
'goods_total_fee' => $allMoney,
'package_number' => 0,
'package_price' => 0,
'package_total_fee' => 0,
'reduce_fee' => $price,
'discount_fee' => 0,
'discount_platform_fee' => 0,
'discount_merchant_fee' => 0,
'discount_agent_fee' => 0,
'discount_logistics_fee' => 0,
'total_fee' => $allMoney,
'goods_code' => empty($item['goods_code']) ? '' : $item['goods_code'],
'sku_code' => is_array($skuInfo) && isset($skuInfo['sku_code']) ? $skuInfo['sku_code'] : '',
];
}, $param['goods']),
],
'order_customer' => [
'real_name' => $online['user_name'],
'phone' => $online['user_phone'],
'secret_phone' => preg_replace('/(\d{3})\d{4}(\d{4})/', '$1****$2', $online['user_phone']),
'order_phone' => '',
'reserve_phone' => '',
'address' => $online['user_address'],
'longitude' => isset($coordinates['lng']) ? (string)$coordinates['lng'] : '',
'latitude' => isset($coordinates['lat']) ? (string)$coordinates['lat'] : '',
],
'update_time' => time(),
];
$config = (new RetailStoreXcxConfigModel)->where(['storeid' => $param['store_id']])->find();
$delayed = $config[(int)$online['pickup_type'] === 2 ? 'send_delayed_time' : 'pickup_delayed_time'];
if ((int)$delayed === 0) {
$delayed = 10 * 60;
}
$data['order']['is_pre_order'] = $param['add_time'] - $online['user_select_time'] > $delayed;
$data['order']['delivery_time'] = (int)$online['user_select_time'];
$data['order']['is_picker'] = (int)$online['pickup_type'] === 1;
$data['order']['pick_time'] = $data['order']['is_picker'] ? $online['user_select_time'] : 0;
$data['order']['user_remark'] = empty($online['remark']) ? '' : $online['remark'];
$data['order']['pickup_code'] = $data['order']['is_picker'] ? $online['pick_code'] : '';
$data['order']['order_fee']['send_fee'] = (int)$online['pickup_type'] === 2 ? (int)$online['delivery_fee'] * 100 : 0;
$discount = (new RetailBillDiscountModel)->where(['bill_id' => $param['id']])->find();
if ($discount) {
$data['order']['order_fee']['discount_fee'] = $online['coupon_money'];
$data['order']['order_fee']['shop_fee'] = $amountReceived + $online['coupon_money'];
}
$data['order_id'] = $param['order_no'];
$data['store_id'] = (int)$param['store_id'];
$data['order'] = json_encode($data['order'], JSON_UNESCAPED_UNICODE);
$data['order_customer'] = json_encode($data['order_customer'], JSON_UNESCAPED_UNICODE);
(new RetailMaiyatianOrderModel)->add($data);
}
}