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); } }