文件
mashangyoujiu/Application/SmallProgramApi/Controller/AdvanceController.class.php

1257 行
60 KiB
PHP
可执行文件

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

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

<?php
namespace SmallProgramApi\Controller;
use Api\Controller\CostCalculationController;
use Common\Business\CouponUse;
use Common\Business\ShopCoupon;
use Common\Model\AdvanceGoodsModel;
use LittleGift\Business\Order;
//[1.8.68]
class AdvanceController extends BaseController
{
/**
* 预售下单接口(定金,全额)
* [pickup_type=>[1自提 2配送 3快递],all_money=>总价,address_id=>收货地址id,
* coupon_id=>优惠券id,coupon_type=>优惠券类型,link_name=>姓名,mobile_phone=>电话,
* delivery_fee=>配送费,remark=>用户留言,start_date=>配送或者自提时间,
* advance_id=>预售活动,goods_id=>商品id,sku_id=>规格id,num=>购买数量]
*/
public function advance_place_order()
{
//验证参数列表及规则
$verifyItem = array(
'pickup_type' => array('in' => array(1, 2, 3), 'require_link' => array(
array('require_data' => 1, 'link_key' => array('link_name', 'mobile_phone'))),
array('require_data' => 2, 'link_key' => array('address_id')),
array('require_data' => 3, 'link_key' => array('address_id')),
),
'all_money' => array('type' => 'money'),
'goods_id' => array('type' => 'number'),
'sku_id' => array('type' => 'number', 'require' => false),
'num' => array('type' => 'number'),
'address_id' => array('type' => 'number', 'min' => 1, 'require' => false),
'coupon_id' => array('type' => 'number', 'min' => 1, 'require' => false),
'coupon_type' => array('in' => array(1, 2), 'require' => false),
'link_name' => array('type' => 'name', 'require' => false),
'mobile_phone' => array('type' => 'mobile', 'require' => false),
'delivery_fee' => array('type' => 'money', 'min' => 0, 'require' => false),
'remark' => array('type' => 'string', 'maxLen' => 255, 'require' => false),
'start_date' => array('type' => 'string', 'require' => false),
);
$post = I('post.');
$verify = verifyRequestParam($post, $verifyItem);//验证参数是否正确
if ($verify['error'] == 1) {
$result['status'] = 0;
$result['msg'] = $verify['key'] . $verify['message'];
$this->ajaxReturn($result);
}
$pickup_type = $post['pickup_type'];
$frontAllMoney = $post['all_money'];
$address_id = $post['address_id'];
$coupon_id = $post['coupon_id'];
$coupon_type = $post['coupon_type'];
$link_name = $post['link_name'];
$mobile_phone = $post['mobile_phone'];
$delivery_fee = $post['delivery_fee'];
$remark = $post['remark'];
$user_select_time = $post['start_date'];
$user_select_time = strtotime($user_select_time);
$advance_id = $post['advance_id'];
$goods_id = $post['goods_id'];
$sku_id = $post['sku_id'];
$num = $post['num'];
$uid = self::$uid;
$store_id = self::$store_id;
$merchant_id = self::$merchant_id;
$time = time();
$ver = $this->verifyPlaceOrder();
if (!$ver) {
$this->ajaxReturn(array('status' => 0, 'msg' => '当前时间未在商家营业时间内'));
}
$AdvanceGoods = new AdvanceGoodsModel();
$advance_sale_status = $AdvanceGoods->advance_master_verify($store_id); //预售活动总开关验证
if ($advance_sale_status['status'] == 0) {
$this->ajaxReturn($advance_sale_status);
}
$storeSet = $this->getStoreSet_v2();//获取门店设置
$delivery_set = $storeSet['delivery_set'];//存储是否开启自提、同城配送、快递发货
if ($delivery_set[$pickup_type - 1] != 1) {
$res = array('status' => 0, 'msg' => '该配送方式已关闭');
$this->ajaxReturn($res);
}
$advance_info = $AdvanceGoods->advance_activity_state(array("merchant_id" => $merchant_id, "store_id" => $store_id, "advance_id" => $advance_id, "pickup_type" => $pickup_type)); //验证预售活动
if ($advance_info['status'] == 0) {
$this->ajaxReturn($advance_info);
}
$advance_info = $advance_info['advance'];
$goods = array(
'goods_id' => $goods_id,
'sku_id' => $sku_id,
'num' => $num,
'delivery_template_id' => $advance_info['delivery_template_id'],
'weight_value' => $advance_info['weight_value'],
);
$advance_goods_info = $AdvanceGoods->advance_goods_state(array("goods" => $goods, "advance_info" => $advance_info, 'uid' => $uid)); //验证预售商品
if ($advance_goods_info['status'] == 0) {
$this->ajaxReturn($advance_goods_info);
}
$BillModel = D('RetailBillOrder');//订单主表
$SkuListModel = D('RetailSkuList');
$SellModel = D('RetailSell');
switch ($advance_info['attribute_state']) {
case 2:
$sku_info = $advance_goods_info['sku_info'];
if (!empty($sku_info['sku_id_list'])) {
$map = array(
'id' => array('in', $sku_info['sku_id_list'])
);
$name = $SkuListModel->getFindField($map, 'name', true);
$sku_info['name'] = implode(',', $name);
} else {
$sku_info['name'] = '';
}
$redis_key = 'retail_advance_goods_' . $advance_info['id'] . '_' . $advance_info['goods_id'] . '_' . $sku_info['sku_id'] . '_*';
$sku = json_encode($sku_info);
$surplus_num = $sku_info['surplus_num']; //剩余库存
$purchase_price = $sku_info['purchase_price']; //成本价
$online_price = $sku_info['online_price']; //原价
$goods_img_id = $sku_info['goods_img_id']; //图片id
$goods_name = $advance_info['goods_name'] . $sku_info['name'];
break;
case 1:
$redis_key = 'retail_advance_goods_' . $advance_info['id'] . '_' . $advance_info['goods_id'] . '_0_*';
$surplus_num = $advance_info['surplus_num']; //剩余库存
$purchase_price = $advance_info['purchase_price']; //成本价
$online_price = $advance_info['online_price']; //原价
$goods_img_id = $advance_info['goods_img_id']; //图片id
$goods_name = $advance_info['goods_name'];
break;
}
// 获取待支付库存
$wait_pay_num = $this->getWaitNum($redis_key);
//判断redis存入库存是否已经超时当前库存
if (round($surplus_num - $wait_pay_num - $goods['num'], 3) < 0) {
$res = array(
'status' => 0,
'msg' => '商品' . $advance_info['goods_name'] . '库存不足.',
);
$this->ajaxReturn($res);
}
$arrive_price_coupon = $advance_goods_info['arrive_price_coupon']; //单个抵现优惠金额
$earnest_price = $advance_goods_info['earnest_price']; //单个定金金额
$coupon_less_money = 0; //优惠券优惠金额
$all_earnest_price = 0; //总定金金额
$all_arrive_price = 0; //总抵现优惠金额
$vid = 0;
$vipInfo = $this->getVipInfo();
if (!empty($vipInfo)) {
$vid = $vipInfo['vid'];
}
$before_unit_price = $advance_goods_info['advance_price'];
$all_advance_price = round($before_unit_price * $goods['num'], 2);
$all_money = round($before_unit_price * $goods['num'], 2);
if ($advance_info['advance_type'] == 2) {
$all_earnest_price = round($earnest_price * $goods['num'], 2);
if (!empty($arrive_price_coupon) && $arrive_price_coupon > 0) {
$all_arrive_price = round($arrive_price_coupon * $goods['num'], 2);
}
$all_money = round($all_money - $all_arrive_price, 2);
}
$sell_info[] = array(
'num' => $goods['num'], //购买数量
'goods_num' => $surplus_num,
'goods_id' => $goods['goods_id'],
'price' => $advance_goods_info['advance_price'],
'all_money' => $all_money,
'type' => 1,
'store_id' => $store_id,
'merchant_id' => $merchant_id,
'goods_class_id' => $advance_info['goods_class_id'],
'goods_name' => $advance_info['goods_name'],
'pricing_method' => $advance_info['pricing_method'],
'purchase_price' => $purchase_price,
'original_price' => $online_price,
'goods_img_id' => $goods_img_id,
'attribute_state' => $advance_info['attribute_state'],
'sell_type' => 1,
'goods_type' => 1,
'vid' => $vid ? $vid : 0,
'uid' => $uid,
'sku_json_info' => $sku,
'sell_number' => $goods['num'],
'pa_state' => 0,
'coupon_money' => 0,
'use_integral' => 0,
'get_integral' => 0,
'integral_dis_money' => 0,
'goods_name_detail' => $goods_name,
'redis_key' => $redis_key,
'company' => $advance_info['company']
);
$all_money = $all_money ? $all_money : 0.01;
if ($advance_info['advance_type'] == 1) {
//判断是否满足优惠金额
$tail_money = $all_money;
} else if ($advance_info['advance_type'] == 2) {
$tail_money = round($all_money - $all_earnest_price, 2);
}
$ApiRedis = new \Addons\Api\RedisController();
//判断优惠券
if (!empty($coupon_type) && !empty($coupon_id)) {
$CouponModel = D('RetailCoupon');//门店优惠券
if ($coupon_type == 1) { //门店的优惠券
$CouponLogsModel = D('RetailCouponLogs');//门店优惠券领取记录
$sMap = array(
'l.' . $CouponLogsModel::ID => $coupon_id,
'l.' . $CouponLogsModel::STORE_ID => $store_id,
'l.' . $CouponLogsModel::UID => $uid,
'l.' . $CouponLogsModel::STATUS => 1, //未使用的优惠券
'c.' . $CouponModel::BEGIN_TIME => array('lt', $time), //开始时间小于当前时间
'c.' . $CouponModel::END_TIME => array('gt', $time), //结束时间大于当前时间
'c.' . $CouponModel::NEED_MONEY => array('elt', $tail_money),
'c.' . $CouponModel::STORE_ID => $store_id
);
$sFields = array(
'l.' . $CouponLogsModel::ID,
'c.' . $CouponModel::NEED_MONEY,
'c.' . $CouponModel::REDUCTION_MONEY,
);
$coupon = $CouponLogsModel->getCoupon($sMap, $sFields);
if (!empty($coupon)) {
$coupon = $coupon[0];
if (round($coupon[$CouponModel::NEED_MONEY] - $tail_money, 2) > 0) {
$res = array('status' => 0, 'msg' => '订单总额不足以使用该优惠券', 'data' => $sell_info);
$this->ajaxReturn($res);
}
$coupon_less_money = $coupon[$CouponModel::REDUCTION_MONEY];
} else {
$res = array('status' => 0, 'msg' => '优惠券异常', 'data' => $sell_info);
$this->ajaxReturn($res);
}
} else { //商户优惠券
$VipMCouponModel = D('RetailVipMCoupon');
$map = array(
'v.' . $VipMCouponModel::IS_USE => 1,
'v.' . $VipMCouponModel::VID => $vid,
'v.' . $VipMCouponModel::START_TIME => array("LT", $time),
'v.' . $VipMCouponModel::END_TIME => array("GT", $time),
'v.' . $VipMCouponModel::MERCHANT_ID => $merchant_id,
'v.' . $VipMCouponModel::ID => $coupon_id,
);
$fields = array(
'v.' . $VipMCouponModel::ID,
'v.' . $VipMCouponModel::NEED_MONEY,
'v.' . $VipMCouponModel::REDUCE_MONEY,
'v.' . $VipMCouponModel::ID,
);
$couponRes = $VipMCouponModel->getFindUseCoupon($map, self::$store_id, $fields);
if ($couponRes['status'] == 1) {
$coupon = $couponRes['coupon'];
} else {
$this->ajaxReturn($couponRes);
}
if (round($coupon[$VipMCouponModel::NEED_MONEY] - $all_money, 2) > 0) {
$res = array('status' => 0, 'msg' => '该订单不足以使用该优惠券', 'data' => $sell_info);
$this->ajaxReturn($res);
}
$coupon_less_money = $coupon[$VipMCouponModel::REDUCE_MONEY];
}
if (!empty($coupon_less_money)) {
$sell_info = reduceOrderMoney($sell_info, floatval($coupon_less_money), $all_money, $SellModel::COUPON_MONEY);
$sell_info = ascSortByFields($sell_info, $SellModel::PRICE);
$all_money = round($all_money - $coupon_less_money, 2);
$all_money = $all_money >= 0.01 ? $all_money : 0.01;
$coupon_time = 602;
$coupon_redis_key = 'retail_coupon_store_id_' . $store_id . '_uid_' . $uid . '_coupon_type_' . $coupon_type . '_coupon_id_' . $coupon_id;
$parameter = array(
'coupon_id' => $coupon_id,
'coupon_type' => $coupon_type,
'uid' => $uid,
'coupon_redis_key' => $coupon_redis_key,
'coupon_time' => $coupon_time
);
$CouponModel->frozen($parameter);
}
} else {
$coupon_id = 0;
$coupon_type = 0;
}
$user_address = '';
//判断商品发货方式设置
switch ($pickup_type) {
case 2:
//同城配送
$AddressModel = D('RetailAddress');
$response = $this->getLngLatAndFee($address_id);
if ($response['status'] == 0) {
$res = array('status' => 0, 'msg' => $response['msg']);
$this->ajaxReturn($res);
}
if ($delivery_fee != $response['fee']) {
$res = array('status' => 0, 'msg' => '配送费有变动,请退出重试');
$this->ajaxReturn($res);
}
$addressInfo = $response['address'];
$link_name = $addressInfo[$AddressModel::NAME];
$mobile_phone = $addressInfo[$AddressModel::PHONE];
$user_address = $addressInfo[$AddressModel::ADDRESS];
break;
case 3:
//计算配送费
$CostCalculation = new CostCalculationController();
$AddressModel = D('RetailAddress');
$addressInfo = $AddressModel->getUserAddress($address_id);
$link_name = $addressInfo['name'];
$mobile_phone = $addressInfo['phone'];
$user_address = $addressInfo['address'];
$province = $addressInfo['province'];
$city = $addressInfo['city'];
$area = $addressInfo['area'];
$cost_fee = $CostCalculation->getFreight(json_encode(array($goods)), $store_id, $province, $city, $area);
if ($cost_fee['status'] == 1) {
if ($cost_fee['delivery_fee'] != $delivery_fee) {
$res = array('status' => 0, 'msg' => '快递费有变动,请退出重试');
$this->ajaxReturn($res);
}
} else {
$this->ajaxReturn($cost_fee);
}
break;
}
//配送费
if ($delivery_fee && ($pickup_type == 2 || $pickup_type == 3)) {
$all_money += $delivery_fee;
} else {
$delivery_fee = 0;
}
$all_money = round($all_money, 2);
if ($all_money != $frontAllMoney) {
$res['d'] = $all_money . ' ' . $frontAllMoney;
$res['status'] = 0;
$res['msg'] = '商品信息有变动,请退出重试';
$this->ajaxReturn($res);
}
// 判断是否为会员
if (!empty($vipInfo)) {
$vip_type = $vipInfo['user_type'];
$VipConfigModel = D('RetailVipConfig'); //获取商户会员设置
$vip_config = $VipConfigModel->getFind(array("merchantid" => self::$merchant_id));
if ($vip_config) {
$give_state = true; //判断是否执行基于订单
if ($advance_info['integral_mem_status'] == 1 && $advance_info['integral'] > 0) {
$parameter = array(
'vip_type' => $vip_type,
'vip_config' => $vip_config,
'integral' => $advance_info['integral'],
'num' => $num
);
$integral = $VipConfigModel->buy_goods_get_integral($parameter);
if ($integral > 0) {
$give_state = false;
}
}
if ($give_state) {
$parameter = array(
'vip_type' => $vip_type,
'vip_config' => $vip_config
);
$percent_state = $VipConfigModel->buy_integral_config($parameter);
if ($percent_state) {
$parameter['all_money'] = $all_money - $delivery_fee;
$integral = $VipConfigModel->buy_get_integral($parameter);
}
}
}
}
//添加bill_order表数据
$billData = array(
'vid' => $vid,
'pay_state' => 0,
'pay_type' => 0,//支付类型
'all_money' => $all_money,
'amount_received' => $all_money,//实收金额
'store_id' => $store_id,
'merchant_id' => $merchant_id,
'uid' => $uid,
'type' => 1,//出售类型 1:线上商城 2:店内
'add_time' => $time,
);
$bill = $BillModel->addBillOrder($billData);
if (!$bill) {
$res = array('status' => 0, 'msg' => '下单失败');
$this->ajaxReturn($res);
}
if (!empty($bill)) {
$BillOnlineModel = D('RetailBillOnline');
$billOnlineData = array(
'bill_id' => $bill['id'],
'pickup_type' => $pickup_type,
'user_name' => $link_name,
'user_phone' => $mobile_phone,
'delivery_fee' => $delivery_fee,
'order_genre' => 4,
'remark' => $remark,
'user_select_time' => $user_select_time,
);
if ($pickup_type == 2 || $pickup_type == 3) {
$billOnlineData['user_address'] = $user_address;
}
$addOnline = $BillOnlineModel->addOrder($billOnlineData);//添加线上表数据
if ($addOnline) {
$BillDisModel = D('RetailBillDiscount');
$billDisData = array(
'bill_id' => $bill['id'],
'get_integral' => ($vipInfo && $integral) ? $integral : 0,
);
if (!empty($coupon_id)) {
$billDisData['coupon_money'] = $coupon_less_money;
$billDisData['coupon_type'] = $coupon_type;
$billDisData['coupon_id'] = $coupon_id;
}
$addDis = $BillDisModel->addOrder($billDisData);//添加优惠表数据
if (empty($addDis)) {
$res = array('status' => 0, 'msg' => '数据库错误,请重试');
$this->ajaxReturn($res);
}
$advance_order = array(
'bill_id' => $bill['id'],
'advance_id' => $advance_info['id'],
'goods_id' => $goods['goods_id'],
'all_advance_price' => $all_advance_price,
'buy_number' => $goods['num'],
'all_earnest_price' => $all_earnest_price,
'all_arrive_price' => $all_arrive_price,
'advance_type' => $advance_info['advance_type'],
'uid' => $uid,
'tail_end_time' => $advance_info['tail_end_time'],
'refuse_earnest_price' => $advance_info['refuse_earnest_price']
);
if ($advance_info['attribute_state'] == 2) {
$advance_order['sku_id'] = $sku_info['sku_id'];
}
$addAdvance = D("RetailBillAdvance")->addOrder($advance_order);
if (!$addAdvance) {
$res = array('status' => 0, 'msg' => '下单失败');
$this->ajaxReturn($res);
}
} else {
$res = array('status' => 0, 'msg' => '数据库错误,请重试');
$this->ajaxReturn($res);
}
}
$SmallProgramModel = D('RetailSmallProgramUser');
if ($pickup_type == 1) {
$updateUser = array(
'link_name' => $link_name,
'mobile_phone' => $mobile_phone,
);
$SmallProgramModel->updateOrder(array('id' => $uid), $updateUser);//更新小程序需用户信息
}
if ($bill) {
// 循环 添加 sell 表数据
$sell_redis = array();
foreach ($sell_info as $key => $val) {
if (!empty($vipInfo) && $integral > 0) {
$val['get_integral'] = $integral;
}
$val['bill_id'] = $bill['id'];
$val['add_time'] = $time;
$val['pay_state'] = 0;
$redis_key = $val['redis_key'];
$goods_num = $val['goods_num'];
$goods_name = $val['goods_name_detail'];
unset($val['redis_key']);
unset($val['goods_num']);
unset($val['goods_name_detail']);
unset($val['guide_royalty_state']);
unset($val['guide_royalty_custom_state']);
unset($val['guide_royalty_online_price']);
$add_sell = $SellModel->addOrder($val);
if (!$add_sell) {
$res = array('status' => 0, 'msg' => '抱歉,下单失败,请稍后再试');
$this->ajaxReturn($res);
}
$wait_pay_num = $this->getWaitNum($redis_key);
// 判断库存
if (round($goods_num - $wait_pay_num - $val['num'], 3) < 0) {
$res = array(
'goods_num' => $goods_num,
'wait_pay_num' => $wait_pay_num,
'num' => $val['num'],
'status' => 0,
'msg' => '商品' . $goods_name . '库存不足..',
);
$this->ajaxReturn($res);
}
$redis_key_set = substr($redis_key, 0, -1);
$redis_key_set = $redis_key_set . $uid . '_' . $bill['id'];
// 下单成功,添加redis数据库记录
// 添加 设置数据类型
$redis_save = array(
'bill_id' => $bill['id'],
'num' => $val['num'],
'expiration_time' => time() + 602,
'key' => $redis_key_set,
);
$set_result = $ApiRedis::$redis->setex($redis_key_set, 602, json_encode($redis_save));
if (!$set_result) {
$res = array('status' => 0, 'msg' => '下单失败');
$this->ajaxReturn($res);
}
$sell_redis[] = $redis_key_set;
// 再次判断库存,获取待支付库存
$wait_pay_num = $this->getWaitNum($redis_key);
// 判断规格,获取现有现有库存
if (round($goods_num - $wait_pay_num, 3) < -1) {
$ApiRedis::$redis->delete($ApiRedis::$redis->keys('*_' . $bill['id']));
$res = array(
'goods_num' => $goods_num,
'wait_pay_num' => $wait_pay_num,
'num' => $val['num'],
'status' => 0,
'msg' => '商品' . $goods_name . '库存不足...',
);
$this->ajaxReturn($res);
}
}
$res['sell_redis'] = $sell_redis;
$res['status'] = 1;
$res['msg'] = '下单成功';
if ($advance_info['advance_type'] == 2) {
$all_money = $all_earnest_price; //支付定金
}
$res['data'] = array(
'order_no' => $bill['order_no'],
'allMoney' => $all_money,
);
} else {
$res = array('status' => 0, 'msg' => '下单失败');
}
$this->ajaxReturn($res);
}
/**
* 预售下单接口(定金,全额)
* [pickup_type=>[1自提 2配送 3快递],all_money=>总价,address_id=>收货地址id,
* coupon_id=>优惠券id,coupon_type=>优惠券类型,link_name=>姓名,mobile_phone=>电话,
* delivery_fee=>配送费,remark=>用户留言,start_date=>配送或者自提时间,
* advance_id=>预售活动,goods_id=>商品id,sku_id=>规格id,num=>购买数量]
*/
public function advance_place_order_v1()
{
if (empty(self::$uid) || self::$user['login_state'] != 1) {
$res['status'] = -1;
$res['msg'] = '用户未登录';
$this->ajaxReturn($res);
}
//验证参数列表及规则
$verifyItem = array(
'pickup_type' => array('in' => array(1, 2, 3), 'require_link' => array(
array('require_data' => 1, 'link_key' => array('link_name', 'mobile_phone'))),
array('require_data' => 2, 'link_key' => array('address_id')),
array('require_data' => 3, 'link_key' => array('address_id')),
),
'all_money' => array('type' => 'money'),
'goods_id' => array('type' => 'number'),
'sku_id' => array('type' => 'number', 'require' => false),
'num' => array('type' => 'number'),
'address_id' => array('type' => 'number', 'min' => 1, 'require' => false),
'coupon_id' => array('type' => 'number', 'min' => 1, 'require' => false),
'coupon_type' => array('in' => array(1, 2, 3), 'require' => false),
'link_name' => array('type' => 'name', 'require' => false),
'mobile_phone' => array('type' => 'mobile', 'require' => false),
'delivery_fee' => array('type' => 'money', 'min' => 0, 'require' => false),
'remark' => array('type' => 'string', 'maxLen' => 255, 'require' => false),
'start_date' => array('type' => 'string', 'require' => false),
);
$post = I('post.');
$verify = verifyRequestParam($post, $verifyItem);//验证参数是否正确
if ($verify['error'] == 1) {
$result['status'] = 0;
$result['msg'] = $verify['key'] . $verify['message'];
$this->ajaxReturn($result);
}
$platform_type = self::$merchant['platform_type']; //商户平台类型 1默认系统 2微礼平台
$pickup_type = $post['pickup_type'];
$frontAllMoney = $post['all_money'];
$address_id = $post['address_id'];
$coupon_id = $post['coupon_id'];
$coupon_type = $post['coupon_type'];
$link_name = $post['link_name'];
$mobile_phone = $post['mobile_phone'];
$delivery_fee = $post['delivery_fee'];
$remark = $post['remark'];
$user_select_time = $post['start_date'];
$user_select_time = strtotime($user_select_time);
$advance_id = $post['advance_id'];
$goods_id = $post['goods_id'];
$sku_id = $post['sku_id'];
$num = $post['num'];
$uid = self::$uid;
$store_id = self::$store_id;
$merchant_id = self::$merchant_id;
$time = time();
$ver = $this->verifyPlaceOrder();
if (!$ver) {
$this->ajaxReturn(array('status' => 0, 'msg' => '当前时间未在商家营业时间内'));
}
$AdvanceGoods = new AdvanceGoodsModel();
$advance_sale_status = $AdvanceGoods->advance_master_verify($store_id); //预售活动总开关验证
if ($advance_sale_status['status'] == 0) {
$this->ajaxReturn($advance_sale_status);
}
$storeSet = $this->getStoreSet_v2();//获取门店设置
$delivery_set = $storeSet['delivery_set'];//存储是否开启自提、同城配送、快递发货
if ($delivery_set[$pickup_type - 1] != 1) {
$res = array('status' => 0, 'msg' => '该配送方式已关闭');
$this->ajaxReturn($res);
}
$advance_info = $AdvanceGoods->advance_activity_state(array("merchant_id" => $merchant_id, "store_id" => $store_id, "advance_id" => $advance_id, "pickup_type" => $pickup_type)); //验证预售活动
if ($advance_info['status'] == 0) {
$this->ajaxReturn($advance_info);
}
$advance_info = $advance_info['advance'];
$goods = array(
'goods_id' => $goods_id,
'sku_id' => $sku_id,
'num' => $num,
'delivery_template_id' => $advance_info['delivery_template_id'],
'weight_value' => $advance_info['weight_value'],
);
$advance_goods_info = $AdvanceGoods->advance_goods_state(array("goods" => $goods, "advance_info" => $advance_info, 'uid' => $uid, 'merchant_id' => $merchant_id, 'platform_type' => $platform_type, 'third_code' => self::$store['third_code'])); //验证预售商品
if ($advance_goods_info['status'] == 0) {
$this->ajaxReturn($advance_goods_info);
}
$BillModel = D('RetailBillOrder');//订单主表
$SkuListModel = D('RetailSkuList');
$SellModel = D('RetailSell');
switch ($advance_info['attribute_state']) {
case 2:
$sku_info = $advance_goods_info['sku_info'];
if ($platform_type == 2) {
//第三方平台
$third_goods_code = $sku_info['third_goods_code'];
}
if (!empty($sku_info['sku_id_list'])) {
$map = array(
'id' => array('in', $sku_info['sku_id_list'])
);
$name = $SkuListModel->getFindField($map, 'name', true);
$sku_info['name'] = implode(',', $name);
} else {
$sku_info['name'] = '';
}
$redis_key = 'retail_advance_goods_' . $advance_info['id'] . '_' . $advance_info['goods_id'] . '_' . $sku_info['sku_id'] . '_*';
$sku = json_encode($sku_info);
$surplus_num = $sku_info['surplus_num']; //剩余库存
$purchase_price = $sku_info['purchase_price']; //成本价
$online_price = $sku_info['online_price']; //原价
$goods_img_id = $sku_info['goods_img_id']; //图片id
$goods_name = $advance_info['goods_name'] . $sku_info['name'];
$goods['weight_value'] = $sku_info['weight_value'];
break;
case 1:
if ($platform_type == 2) {
//第三方平台
$third_goods_code = $advance_info['third_goods_code'];
}
$redis_key = 'retail_advance_goods_' . $advance_info['id'] . '_' . $advance_info['goods_id'] . '_0_*';
$surplus_num = $advance_info['surplus_num']; //剩余库存
$purchase_price = $advance_info['purchase_price']; //成本价
$online_price = $advance_info['online_price']; //原价
$goods_img_id = $advance_info['goods_img_id']; //图片id
$goods_name = $advance_info['goods_name'];
break;
}
// 获取待支付库存
$wait_pay_num = $this->getWaitNum($redis_key);
//判断redis存入库存是否已经超时当前库存
if (round($surplus_num - $wait_pay_num - $goods['num'], 3) < 0) {
$res = array(
'status' => 0,
'msg' => '商品' . $advance_info['goods_name'] . '库存不足.',
);
$this->ajaxReturn($res);
}
$arrive_price_coupon = $advance_goods_info['arrive_price_coupon']; //单个抵现优惠金额
$earnest_price = $advance_goods_info['earnest_price']; //单个定金金额
$coupon_less_money = 0; //优惠券优惠金额
$all_earnest_price = 0; //总定金金额
$all_arrive_price = 0; //总抵现优惠金额
$vid = 0;
$vipInfo = $this->getVipInfo();
if($platform_type == 2 && empty($vipInfo)){
$res = array(
'status' => 0,
'msg' => '请绑定会员卡',
);
$this->ajaxReturn($res);
}
if (!empty($vipInfo)) {
$vid = $vipInfo['vid'];
}
$before_unit_price = $advance_goods_info['advance_price'];//优惠前的单价
$all_advance_price = round($before_unit_price * $goods['num'], 2); //总预售价
$all_money = round($before_unit_price * $goods['num'], 2);//总价
if ($advance_info['advance_type'] == 2) {
$all_earnest_price = round($earnest_price * $goods['num'], 2);
if (!empty($arrive_price_coupon) && $arrive_price_coupon > 0) {
$all_arrive_price = round($arrive_price_coupon * $goods['num'], 2);
}
$all_money = round($all_money - $all_arrive_price, 2);
}
$sell_info[] = array(
'num' => $goods['num'], //购买数量
'goods_num' => $surplus_num,
'goods_id' => $goods['goods_id'],
'price' => $advance_goods_info['advance_price'],
'all_money' => $all_money,
'type' => 1,
'store_id' => $store_id,
'merchant_id' => $merchant_id,
'goods_class_id' => $advance_info['goods_class_id'],
'goods_name' => $advance_info['goods_name'],
'pricing_method' => $advance_info['pricing_method'],
'purchase_price' => $purchase_price,
'original_price' => $online_price,
'goods_img_id' => $goods_img_id,
'attribute_state' => $advance_info['attribute_state'],
'sell_type' => 1,
'goods_type' => 1,
'vid' => $vid ? $vid : 0,
'uid' => $uid,
'sku_json_info' => $sku ? $sku : null,
'sku_id' => $sku_info['sku_id'] ? $sku_info['sku_id'] : 0,
'sell_number' => $goods['num'],
'pa_state' => 0,
'coupon_money' => 0,
'use_integral' => 0,
'get_integral' => 0,
'integral_dis_money' => 0,
'goods_name_detail' => $goods_name,
'redis_key' => $redis_key,
'company' => $advance_info['company'],
'serial_number_state' => $advance_info['serial_number_state'] ? $advance_info['serial_number_state'] : 0
);
$all_money = $all_money ? $all_money : 0.01;
if ($advance_info['advance_type'] == 1) {
//判断是否满足优惠金额
$tail_money = $all_money;
} else if ($advance_info['advance_type'] == 2) {
$tail_money = round($all_money - $all_earnest_price, 2);
}
$ApiRedis = new \Addons\Api\RedisController();
//免配送费门槛金额
$delivery_cost = self::$store['delivery_cost'];
$delivery_status = self::$store['delivery_status'];
$before_less_money = $all_money;
//判断优惠券
if (!empty($coupon_type) && !empty($coupon_id)) {
$CouponModel = D('RetailCoupon');//门店优惠券
$coupon_redis_key = 'retail_coupon_store_id_' . $store_id . '_uid_' . $uid . '_coupon_type_' . $coupon_type . '_coupon_id_' . $coupon_id;
if (C('IS_SET_REDIS')) {
$user_shop_coupon = $ApiRedis::$redis->mget($ApiRedis::$redis->keys($redis_key));
if (!empty($user_shop_coupon)) {
$res['status'] = 0;
$res['msg'] = '该优惠券正在核销中,请勿重复使用';
$res['data'] = $sell_info;
$this->ajaxReturn($res);
}
}
switch ($coupon_type) {
case 1:
//门店的优惠券
$CouponLogsModel = D('RetailCouponLogs');//门店优惠券领取记录
$sMap = array(
'l.' . $CouponLogsModel::ID => $coupon_id,
'l.' . $CouponLogsModel::STORE_ID => $store_id,
'l.' . $CouponLogsModel::UID => $uid,
'l.' . $CouponLogsModel::STATUS => 1, //未使用的优惠券
'c.' . $CouponModel::BEGIN_TIME => array('lt', $time), //开始时间小于当前时间
'c.' . $CouponModel::END_TIME => array('gt', $time), //结束时间大于当前时间
'c.' . $CouponModel::NEED_MONEY => array('elt', $tail_money),
'c.' . $CouponModel::STORE_ID => $store_id
);
$sFields = array(
'l.' . $CouponLogsModel::ID,
'c.' . $CouponModel::NEED_MONEY,
'c.' . $CouponModel::REDUCTION_MONEY,
);
$coupon = $CouponLogsModel->getCoupon($sMap, $sFields);
if (!empty($coupon)) {
$coupon = $coupon[0];
if (round($coupon[$CouponModel::NEED_MONEY] - $tail_money, 2) > 0) {
$res = array('status' => 0, 'msg' => '订单总额不足以使用该优惠券', 'data' => $sell_info);
$this->ajaxReturn($res);
}
$coupon_less_money = $coupon[$CouponModel::REDUCTION_MONEY];
} else {
$res = array('status' => 0, 'msg' => '优惠券异常', 'data' => $sell_info);
$this->ajaxReturn($res);
}
break;
case 2:
//会员普通优惠券
$CouponClass = new CouponUse();
$result = $CouponClass->PlaceOrderCoupon([
'merchant_id' => self::$merchant_id,
'store_id' => self::$store_id,
'vip_id' => $vid,
'coupon_id' => $coupon_id,
'order_money' => $tail_money,
'sellDataArray' => $sell_info,
]);
if ($result['status'] != 1) {
$result['msg'] = $result['message'];
$this->ajaxReturn($result);
}
$coupon = $result['data']['coupon']; //优惠券信息
$goods_type = $coupon['appoint_type']; //1 全部商品 2指定分类 3指定商品
$coupon_less_money = $coupon['discount_amount']; //优惠金额
$activity_goods = $result['data']['activity_goods'];//参与优惠的商品信息
$activity_goods_money = $result['data']['activity_goods_money']; //参与优惠的商品总金额
break;
case 3:
//商家券
$ShopCouponClass = new ShopCoupon();
$result = $ShopCouponClass->xcxPlaceOrder([
'coupon_id' => $coupon_id,
'allMoney' => $tail_money,
'store_id' => self::$store_id,
'sellDataArray' => $sell_info
]);
if ($result['status'] != 1) {
$result['msg'] = $result['message'];
$this->ajaxReturn($result);
}
$activity_goods = $result['data']['goods']; //参与优惠的商品信息
$shop_coupon = $result['data']['shop_coupon']; //商家券信息
$activity_goods_money = $result['data']['goods_money']; //参与优惠的商品总金额
$goods_type = $shop_coupon['goods_type']; //1所有商品 2指定商品
$coupon_less_money = json_decode($shop_coupon['coupon_use_rule'], true)['fixed_normal_coupon']['discount_amount']; //优惠金额
break;
}
if (!empty($coupon_less_money)) {
if (($coupon_type == 3 || $coupon_type == 2) && ($goods_type == 2 || $goods_type == 3) && (count($activity_goods) != count($sell_info))) {
//优惠券指定商品或分类
$activity_goods = ascSortByFields($activity_goods, 'price');
$CouponClass = new CouponUse();
$sellDataArray_new = reduceOrderMoney($activity_goods, floatval($coupon_less_money), $activity_goods_money, $SellModel::COUPON_MONEY);
$sell_info = $CouponClass->sellDataArrayReplace([
'sellDataArray' => $sell_info,
'sellDataArray_new' => $sellDataArray_new
]);
} else {
$sell_info = reduceOrderMoney($sell_info, floatval($coupon_less_money), $all_money, $SellModel::COUPON_MONEY);
}
$sell_info = ascSortByFields($sell_info, $SellModel::PRICE);
$all_money = round($all_money - $coupon_less_money, 2);
$all_money = $all_money >= 0.01 ? $all_money : 0.01;
if (C('IS_SET_REDIS')) {
$coupon_time = 602;
$parameter = array(
'coupon_id' => $coupon_id,
'coupon_type' => $coupon_type,
'uid' => $uid,
'coupon_redis_key' => $coupon_redis_key,
'coupon_time' => $coupon_time
);
$CouponModel->frozen($parameter);
}
}
} else {
$coupon_id = 0;
$coupon_type = 0;
}
$user_address = '';
//判断商品发货方式设置
switch ($pickup_type) {
case 2:
//同城配送
$AddressModel = D('RetailAddress');
$response = $this->getLngLatAndFee($address_id);
if ($response['status'] == 0) {
$res = array('status' => 0, 'msg' => $response['msg']);
$this->ajaxReturn($res);
}
if ($delivery_fee != $response['fee']) {
$res = array('status' => 0, 'msg' => '配送费有变动,请退出重试');
$this->ajaxReturn($res);
}
$addressInfo = $response['address'];
$link_name = $addressInfo[$AddressModel::NAME];
$mobile_phone = $addressInfo[$AddressModel::PHONE];
$user_address = $addressInfo[$AddressModel::ADDRESS];
break;
case 3:
//计算配送费
$CostCalculation = new CostCalculationController();
$AddressModel = D('RetailAddress');
$addressInfo = $AddressModel->getUserAddress($address_id);
$link_name = $addressInfo['name'];
$mobile_phone = $addressInfo['phone'];
$user_address = $addressInfo['address'];
$province = $addressInfo['province'];
$city = $addressInfo['city'];
$area = $addressInfo['area'];
$cost_fee = $CostCalculation->getFreight(json_encode(array($goods)), $store_id, $province, $city, $area);
if ($cost_fee['status'] == 1) {
if ($cost_fee['delivery_fee'] != $delivery_fee) {
$res = array('status' => 0, 'msg' => '快递费有变动,请退出重试');
$this->ajaxReturn($res);
}
} else {
$this->ajaxReturn($cost_fee);
}
break;
}
if ($pickup_type != 1 && $delivery_status == 1) {
if ($before_less_money >= $delivery_cost) {
$delivery_fee = 0;
}
}
//配送费
if ($delivery_fee && ($pickup_type == 2 || $pickup_type == 3)) {
$all_money += $delivery_fee;
} else {
$delivery_fee = 0;
}
$all_money = round($all_money, 2);
if ($all_money != $frontAllMoney) {
$res['d'] = $all_money . ' ' . $frontAllMoney;
$res['status'] = 0;
$res['msg'] = '商品信息有变动,请退出重试';
$this->ajaxReturn($res);
}
// 判断是否为会员
if (!empty($vipInfo)) {
$vip_type = $vipInfo['user_type'];
$VipConfigModel = D('RetailVipConfig'); //获取商户会员设置
$vip_config = $VipConfigModel->getFind(array("merchantid" => self::$merchant_id));
if ($vip_config) {
$give_state = true; //判断是否执行基于订单
if ($advance_info['integral_mem_status'] == 1 && $advance_info['integral'] > 0) {
$parameter = array(
'vip_type' => $vip_type,
'vip_config' => $vip_config,
'integral' => $advance_info['integral'],
'num' => $num
);
$integral = $VipConfigModel->buy_goods_get_integral($parameter);
if ($integral > 0) {
$give_state = false;
}
}
if ($give_state) {
$parameter = array(
'vip_type' => $vip_type,
'vip_config' => $vip_config
);
$percent_state = $VipConfigModel->buy_integral_config($parameter);
if ($percent_state) {
$parameter['all_money'] = $all_money - $delivery_fee;
$integral = $VipConfigModel->buy_get_integral($parameter);
}
}
}
}
//添加bill_order表数据
$billData = array(
'vid' => $vid,
'pay_state' => 0,
'pay_type' => 0,//支付类型
'all_money' => $all_money,
'amount_received' => $all_money,//实收金额
'store_id' => $store_id,
'merchant_id' => $merchant_id,
'uid' => $uid,
'type' => 1,//出售类型 1:线上商城 2:店内
'add_time' => $time,
);
$bill = $BillModel->addBillOrder($billData);
if (!$bill) {
$res = array('status' => 0, 'msg' => '下单失败');
$this->ajaxReturn($res);
}
if (!empty($bill)) {
if ($platform_type == 2) {
//第三方平台
$third_order = [
'Customer_Code' => self::$store['third_code'],
'Member_Code' => $vipInfo['card_num'],
'AreaName' => $user_address ? $user_address : '',
'Remark' => '',
'Swno' => $bill['order_no'],
'Details' => [
[
'third_goods_code' => $third_goods_code,
'num' => $goods['num'],
'all_money' => $all_advance_price,
'company'=>$advance_info['company']
]
]
];
$ThirdOrderClass = new Order();
$thirdResult = $ThirdOrderClass->orderInsert([
'merchant_id' => $merchant_id,
'order_type' => 1,
'third_order' => json_encode($third_order)
]);
if ($thirdResult['status'] == 0) {
$res = array('status' => 0, 'msg' => 'Q3 ERP平台下单失败' . $thirdResult['message']);
$this->ajaxReturn($res);
}
if ($thirdResult['status'] == 1 && !empty($thirdResult['data'])) {
//修改订单
$BillModel->updateOrder(['id' => $bill['id']], [
'platform_type' => 2,
'third_order' => $thirdResult['data']
]);
}
}
$BillOnlineModel = D('RetailBillOnline');
$billOnlineData = array(
'bill_id' => $bill['id'],
'pickup_type' => $pickup_type,
'user_name' => $link_name,
'user_phone' => $mobile_phone,
'delivery_fee' => $delivery_fee,
'order_genre' => 4,
'remark' => $remark,
'user_select_time' => $user_select_time,
);
if ($pickup_type == 2 || $pickup_type == 3) {
$billOnlineData['user_address'] = $user_address;
}
$addOnline = $BillOnlineModel->addOrder($billOnlineData);//添加线上表数据
if ($addOnline) {
$BillDisModel = D('RetailBillDiscount');
$billDisData = array(
'bill_id' => $bill['id'],
'get_integral' => ($vipInfo && $integral) ? $integral : 0,
);
if (!empty($coupon_id)) {
$billDisData['coupon_money'] = $coupon_less_money;
$billDisData['coupon_type'] = $coupon_type;
$billDisData['coupon_id'] = $coupon_id;
}
$addDis = $BillDisModel->addOrder($billDisData);//添加优惠表数据
if (empty($addDis)) {
$res = array('status' => 0, 'msg' => '数据库错误,请重试');
$this->ajaxReturn($res);
}
$advance_order = array(
'bill_id' => $bill['id'],
'advance_id' => $advance_info['id'],
'goods_id' => $goods['goods_id'],
'all_advance_price' => $all_advance_price,
'buy_number' => $goods['num'],
'all_earnest_price' => $all_earnest_price,
'all_arrive_price' => $all_arrive_price,
'advance_type' => $advance_info['advance_type'],
'uid' => $uid,
'tail_end_time' => $advance_info['tail_end_time'],
'refuse_earnest_price' => $advance_info['refuse_earnest_price']
);
if ($advance_info['attribute_state'] == 2) {
$advance_order['sku_id'] = $sku_info['sku_id'];
}
$addAdvance = D("RetailBillAdvance")->addOrder($advance_order);
if (!$addAdvance) {
$res = array('status' => 0, 'msg' => '下单失败');
$this->ajaxReturn($res);
}
} else {
$res = array('status' => 0, 'msg' => '数据库错误,请重试');
$this->ajaxReturn($res);
}
}
$SmallProgramModel = D('RetailSmallProgramUser');
if ($pickup_type == 1) {
$updateUser = array(
'link_name' => $link_name,
'mobile_phone' => $mobile_phone,
);
$SmallProgramModel->updateOrder(array('id' => $uid), $updateUser);//更新小程序需用户信息
}
if ($bill) {
// 循环 添加 sell 表数据
$sell_redis = array();
foreach ($sell_info as $key => $val) {
if (!empty($vipInfo) && $integral > 0) {
$val['get_integral'] = $integral;
}
$val['bill_id'] = $bill['id'];
$val['add_time'] = $time;
$val['pay_state'] = 0;
$redis_key = $val['redis_key'];
$goods_num = $val['goods_num'];
$goods_name = $val['goods_name_detail'];
unset($val['redis_key']);
unset($val['goods_num']);
unset($val['goods_name_detail']);
unset($val['guide_royalty_state']);
unset($val['guide_royalty_custom_state']);
unset($val['guide_royalty_online_price']);
$add_sell = $SellModel->addOrder($val);
if (!$add_sell) {
$res = array('status' => 0, 'msg' => '抱歉,下单失败,请稍后再试');
$this->ajaxReturn($res);
}
if($platform_type != 2){
$wait_pay_num = $this->getWaitNum($redis_key);
// 判断库存
if (round($goods_num - $wait_pay_num - $val['num'], 3) < 0) {
$res = array(
'goods_num' => $goods_num,
'wait_pay_num' => $wait_pay_num,
'num' => $val['num'],
'status' => 0,
'msg' => '商品' . $goods_name . '库存不足..',
);
$this->ajaxReturn($res);
}
}
$redis_key_set = substr($redis_key, 0, -1);
$redis_key_set = $redis_key_set . $uid . '_' . $bill['id'];
// 下单成功,添加redis数据库记录
// 添加 设置数据类型
$redis_save = array(
'bill_id' => $bill['id'],
'num' => $val['num'],
'expiration_time' => time() + 602,
'key' => $redis_key_set,
);
$set_result = $ApiRedis::$redis->setex($redis_key_set, 602, json_encode($redis_save));
if (!$set_result) {
$res = array('status' => 0, 'msg' => '下单失败');
$this->ajaxReturn($res);
}
$sell_redis[] = $redis_key_set;
if($platform_type != 2){
// 再次判断库存,获取待支付库存
$wait_pay_num = $this->getWaitNum($redis_key);
// 判断规格,获取现有现有库存
if (round($goods_num - $wait_pay_num, 3) < -1) {
$ApiRedis::$redis->delete($ApiRedis::$redis->keys('*_' . $bill['id']));
$res = array(
'goods_num' => $goods_num,
'wait_pay_num' => $wait_pay_num,
'num' => $val['num'],
'status' => 0,
'msg' => '商品' . $goods_name . '库存不足...',
);
$this->ajaxReturn($res);
}
}
}
$res['sell_redis'] = $sell_redis;
$res['status'] = 1;
$res['msg'] = '下单成功';
if ($advance_info['advance_type'] == 2) {
$all_money = $all_earnest_price; //支付定金
}
$res['data'] = array(
'order_no' => $bill['order_no'],
'allMoney' => $all_money,
);
} else {
$res = array('status' => 0, 'msg' => '下单失败');
}
$this->ajaxReturn($res);
}
/**
* 尾款支付信息
*/
public function advance_tail_info()
{
$order_no = I("post.order_no");
if (empty($order_no)) {
$res = array('status' => 0, 'msg' => '参数缺失');
$this->ajaxReturn($res);
}
$bill_advance = D("RetailBillAdvance")->tail_verify(array('order_no' => $order_no)); //验证查询订单信息
if ($bill_advance['status'] == 0) {
$this->ajaxReturn($bill_advance);
}
$bill_info = $bill_advance['data']['bill_info'];
$tail_money = round($bill_info['all_money'] - $bill_info['all_earnest_price'], 2);
if (C('IS_SET_REDIS')) {
$ApiRedis = new \Addons\Api\RedisController();
$bill_info['sku_id'] = $bill_info['sku_id'] ? $bill_info['sku_id'] : 0;
$redis_key = 'retail_advance_goods_' . $bill_info['advance_id'] . '_' . $bill_info['goods_id'] . '_' . $bill_info['sku_id'] . '_' . $bill_info['uid'] . '_' . $bill_info['bill_id'];
$redis_save = array(
'bill_id' => $bill_info['bill_id'],
'num' => 0,
'expiration_time' => time() + 602,
'key' => $redis_key,
);
$set_result = $ApiRedis::$redis->setex($redis_key, 602, json_encode($redis_save));
if (!$set_result) {
$res = array('status' => 0, 'msg' => '尾款失败');
$this->ajaxReturn($res);
}
}
$res = array(
'status' => 1,
'msg' => '验证成功',
'data' => array(
'all_money' => $tail_money
)
);
$this->ajaxReturn($res);
}
/**
* 获取下单参数
*/
public function get_pay_info()
{
$advance_id = I("post.id");
if (empty($advance_id)) {
$res = array('status' => 0, 'msg' => '参数缺失');
$this->ajaxReturn($res);
}
$advance_info = D("AdvanceGoods")->getFind(array('id' => $advance_id));
if (empty($advance_info) || $advance_info['advance_state'] == 0) {
$res = array('status' => 0, 'msg' => '该预售活动已下架');
$this->ajaxReturn($res);
}
$storeSet = $this->getStoreSet_v2();//基本设置
$delivery_set = $storeSet['delivery_set'];
$advance_delivery_type = explode(',', $advance_info['delivery_type']);
foreach ($delivery_set as $key => $val) {
if ($delivery_set[$key] == 1 && !in_array($key + 1, $advance_delivery_type)) {
$delivery_set[$key] = 0;
}
}
$storeSet['delivery_set'] = $delivery_set;
$SmallProgramModel = D('RetailSmallProgramUser');
$address = $this->getDefaultAddress_v1();//默认地址
$ConfigModel = D('RetailMerchantConfig');
$merchantConfig = $ConfigModel->getConfig(self::$merchant_id);
$delivery_cost = self::$store['delivery_cost'];
$delivery_status = self::$store['delivery_status'];
$res = array(
'status' => 1,
'msg' => '获取成功',
'data' => array(
'link_name' => self::$user[$SmallProgramModel::LINK_NAME],
'mobile_phone' => self::$user[$SmallProgramModel::MOBILE_PHONE],
'storeSet' => $storeSet,
'address' => $address,
'merchantConfig' => $merchantConfig
),
'delivery_cost' => $delivery_cost,
'delivery_status' => $delivery_status,
);
$this->ajaxReturn($res);
}
}