1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165 |
- <?php
- namespace app\common\logic;
- use think\facade\Db;
- /**
- * ============================================================================
- * DSMall多用户商城
- * ============================================================================
- * 版权所有 2014-2028 长沙德尚网络科技有限公司,并保留所有权利。
- * 网站地址: http://www.csdeshang.com
- * ----------------------------------------------------------------------------
- * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
- * 不允许对程序代码以任何形式任何目的的再发布。
- * ============================================================================
- * 逻辑层模型
- */
- class Buyvirtual
- {
- /**
- * 虚拟商品购买第一步,得到购买数据(商品、店铺、会员)
- * @param int $goods_id 商品ID
- * @param int $quantity 购买数量
- * @param int $member_id 会员ID
- * @return array
- */
- public function getBuyStep1Data($goods_id, $quantity, $member_id)
- {
- return $this->getBuyStepData($goods_id, $quantity, $member_id);
- }
- /**
- * 虚拟商品购买第二步,得到购买数据(商品、店铺、会员)
- * @param int $goods_id 商品ID
- * @param int $quantity 购买数量
- * @param int $member_id 会员ID
- * @return array
- */
- public function getBuyStep2Data($goods_id, $quantity, $member_id, $extra = [])
- {
- return $this->getBuyStepData($goods_id, $quantity, $member_id, $extra);
- }
- /**
- * 得到虚拟商品购买数据(商品、店铺、会员)
- * @param int $goods_id 商品ID
- * @param int $quantity 购买数量
- * @param int $member_id 会员ID
- * @return array
- */
- public function getBuyStepData($goods_id, $quantity, $member_id, $extra = [])
- {
- $goods_info = model('goods')->getGoodsOnlineInfoAndPromotionById($goods_id);
- if (empty($goods_info)) {
- return ds_callback(false, '该商品不符合购买条件,可能的原因有:下架、不存在、过期等');
- }
- if ($goods_info['is_virtual'] != 1 || $goods_info['virtual_indate'] < TIMESTAMP) {
- return ds_callback(false, '该商品不符合购买条件,可能的原因有:下架、不存在、过期等');
- }
- if ($goods_info['virtual_limit'] > $goods_info['goods_storage']) {
- $goods_info['virtual_limit'] = $goods_info['goods_storage'];
- }
- if (isset($extra['pintuan_id']) && intval($extra['pintuan_id']) > 0) {
- //如果是特定拼团商品,则只按照拼团的规则进行处理
- model('buy_1', 'logic')->getPintuanInfo($goods_info, $quantity, $extra, $member_id);
- } else {
- //取得抢购信息
- $goods_info = $this->_getGroupbuyInfo($goods_info);
- }
- $quantity = abs(intval($quantity));
- $quantity = $quantity == 0 ? 1 : $quantity;
- $quantity = $quantity > $goods_info['virtual_limit'] ? $goods_info['virtual_limit'] : $quantity;
- if ($quantity > $goods_info['goods_storage']) {
- return ds_callback(false, '该商品库存不足');
- }
- $goods_info['quantity'] = $quantity;
- $goods_info['goods_total'] = ds_price_format($goods_info['goods_price'] * $goods_info['quantity']);
- $goods_info['goods_original_total'] = ds_price_format($goods_info['goods_original_price'] * $goods_info['quantity']);
- $goods_info['goods_discount_total'] = ds_price_format($goods_info['goods_original_total'] - $goods_info['goods_total']);
- $goods_info['goods_image_url'] = goods_cthumb($goods_info['goods_image'], 240, $goods_info['store_id']);
- $return = [];
- $return['goods_info'] = $goods_info;
- $return['store_info'] = model('store')->getStoreOnlineInfoByID($goods_info['store_id'], 'store_name,store_id,member_id');
- $return['member_info'] = model('member')->getMemberInfoByID($member_id);
- // $pd_payment_info = model('payment')->getPaymentOpenInfo(array('payment_code'=>'predeposit'));
- // if (empty($pd_payment_info)) {
- // $return['member_info']['available_predeposit'] = 0;
- // $return['member_info']['available_rc_balance'] = 0;
- // }
- //返回店铺可用的代金券
- $return['store_voucher_list'] = [];
- if (config('ds_config.voucher_allow')) {
- $voucher_model = model('voucher');
- $condition = [];
- $condition[] = ['voucher_store_id', '=', $goods_info['store_id']];
- $condition[] = ['voucher_owner_id', '=', $member_id];
- $return['store_voucher_list'] = $voucher_model->getCurrentAvailableVoucher($condition, $goods_info['goods_total']);
- }
- return ds_callback(true, '', $return);
- }
- /**
- * 虚拟商品购买第三步
- * @param array $post 接收POST数据,必须传入goods_id:商品ID,quantity:购买数量,buyer_phone:接收手机,buyer_msg:买家留言
- * @param int $member_id
- * @return array
- */
- public function buyStep3($post, $member_id)
- {
- $result = $this->getBuyStepData($post['goods_id'], $post['quantity'], $member_id, $post);
- if (!$result['code'])
- return $result;
- $goods_info = $result['data']['goods_info'];
- $member_info = $result['data']['member_info'];
- $goods_info['store_voucher_list'] = isset($result['data']['store_voucher_list']) ? $result['data']['store_voucher_list'] : [];
- //应付总金额计算
- $pay_total = $goods_info['goods_price'] * $goods_info['quantity'];
- $store_id = $goods_info['store_id'];
- $store_goods_total_list = [$store_id => $pay_total];
- $pay_total = $store_goods_total_list[$store_id];
- //整理数据
- $input = [];
- $input['quantity'] = $goods_info['quantity'];
- $input['buyer_phone'] = $post['buyer_phone'];
- $input['buyer_msg'] = $post['buyer_msg'];
- $input['pay_total'] = $pay_total;
- $input['order_from'] = $post['order_from'];
- $input['pintuan_id'] = isset($post['pintuan_id']) ? $post['pintuan_id'] : 0;
- $input['pintuangroup_id'] = isset($post['pintuangroup_id']) ? $post['pintuangroup_id'] : 0;
- $goods_model = model('goods');
- $input['voucher'] = isset($post['voucher']) ? $post['voucher'] : '';
- try {
- //开始事务
- Db::startTrans();
- //生成订单
- $order_info = $this->_createOrder($input, $goods_info, $member_info);
- // var_dump($order_info);exit();
- if (!$order_info) {
- Db::rollback();
- return false;
- }
- //处理卡券相关数据
- //生成推广记录
- $this->addOrderInviter($order_info);
- //提交事务
- Db::commit();
- } catch (Exception $e) {
- //回滚事务
- Db::rollback();
- return ds_callback(false, $e->getMessage());
- }
- //变更库存和销量
- \mall\queue\QueueClient::push('createOrderUpdateStorage', [$goods_info['goods_id'] => $goods_info['quantity']]);
- //更新抢购信息
- $this->_updateGroupBuy($goods_info);
- return ds_callback(true, '', ['order_id' => $order_info['order_id'], 'order_sn' => $order_info['order_sn']]);
- }
- /**
- * 生成推广记录
- * @param array $order_list
- */
- public function addOrderInviter($order = [])
- {
- if (!config('ds_config.inviter_open')) {
- return;
- }
- if (empty($order) || !is_array($order))
- return;
- $inviter_ratio_1 = config('ds_config.inviter_ratio_1');
- $inviter_ratio_2 = config('ds_config.inviter_ratio_2');
- $inviter_ratio_3 = config('ds_config.inviter_ratio_3');
- $orderinviter_model = model('orderinviter');
- $order_id = $order['order_id'];
- $goods = $order;
- //查询商品的分销信息
- $goods_common_info = Db::name('goodscommon')->alias('gc')->join('goods g', 'g.goods_commonid=gc.goods_commonid')->where('g.goods_id=' . $goods['goods_id'])->field('gc.goods_commonid,gc.inviter_open,gc.inviter_ratio')->find();
- if (!$goods_common_info['inviter_open']) {
- return;
- }
- $goods_amount = $goods['goods_price'] * $goods['goods_num'] * $goods_common_info['inviter_ratio'] / 100;
- $inviter_ratios = [
- $inviter_ratio_1,
- $inviter_ratio_2,
- $inviter_ratio_3,
- ];
- //判断买家是否是分销员
- if (config('ds_config.inviter_return')) {
- if (Db::name('inviter')->where('inviter_state=1 AND inviter_id=' . $order['buyer_id'])->value('inviter_id')) {
- if (isset($inviter_ratios[0]) && floatval($inviter_ratios[0]) > 0) {
- $money_1 = round($inviter_ratios[0] / 100 * $goods_amount, 2);
- if ($money_1 > 0) {
- //生成推广记录
- Db::name('orderinviter')->insert([
- 'orderinviter_addtime' => TIMESTAMP,
- 'orderinviter_store_name' => $order['store_name'],
- 'orderinviter_goods_amount' => $goods_amount,
- 'orderinviter_goods_quantity' => $goods['goods_num'],
- 'orderinviter_order_type' => 1,
- 'orderinviter_store_id' => $goods['store_id'],
- 'orderinviter_goods_commonid' => $goods_common_info['goods_commonid'],
- 'orderinviter_goods_id' => $goods['goods_id'],
- 'orderinviter_level' => 1,
- 'orderinviter_goods_name' => $goods['goods_name'],
- 'orderinviter_order_id' => $order_id,
- 'orderinviter_order_sn' => $order['order_sn'],
- 'orderinviter_member_id' => $order['buyer_id'],
- 'orderinviter_member_name' => $order['buyer_name'],
- 'orderinviter_money' => $money_1,
- 'orderinviter_remark' => '获得分销员返佣,佣金比例' . $inviter_ratios[0] . '%,订单号' . $order['order_sn'],
- ]);
- }
- }
- }
- }
- //一级推荐人
- $inviter_1_id = Db::name('member')->where('member_id', $order['buyer_id'])->value('inviter_id');
- if (!$inviter_1_id || !Db::name('inviter')->where('inviter_state=1 AND inviter_id=' . $inviter_1_id)->value('inviter_id')) {
- return;
- }
- $inviter_1 = Db::name('member')->where('member_id', $inviter_1_id)->field('inviter_id,member_id,member_name')->find();
- if ($inviter_1 && isset($inviter_ratios[0]) && floatval($inviter_ratios[0]) > 0) {
- $money_1 = round($inviter_ratios[0] / 100 * $goods_amount, 2);
- if ($money_1 > 0) {
- //生成推广记录
- Db::name('orderinviter')->insert([
- 'orderinviter_addtime' => TIMESTAMP,
- 'orderinviter_store_name' => $order['store_name'],
- 'orderinviter_goods_amount' => $goods_amount,
- 'orderinviter_goods_quantity' => $goods['goods_num'],
- 'orderinviter_order_type' => 1,
- 'orderinviter_store_id' => $goods['store_id'],
- 'orderinviter_goods_commonid' => $goods_common_info['goods_commonid'],
- 'orderinviter_goods_id' => $goods['goods_id'],
- 'orderinviter_level' => 1,
- 'orderinviter_goods_name' => $goods['goods_name'],
- 'orderinviter_order_id' => $order_id,
- 'orderinviter_order_sn' => $order['order_sn'],
- 'orderinviter_member_id' => $inviter_1['member_id'],
- 'orderinviter_member_name' => $inviter_1['member_name'],
- 'orderinviter_money' => $money_1,
- 'orderinviter_remark' => '获得一级推荐佣金,佣金比例' . $inviter_ratios[0] . '%,推荐关系' . $inviter_1['member_name'] . '->' . $order['buyer_name'] . ',订单号' . $order['order_sn'],
- ]);
- }
- }
- if (config('ds_config.inviter_level') <= 1) {
- return;
- }
- //二级推荐人
- $inviter_2_id = Db::name('member')->where('member_id', $inviter_1_id)->value('inviter_id');
- if (!$inviter_2_id || !Db::name('inviter')->where('inviter_state=1 AND inviter_id=' . $inviter_2_id)->value('inviter_id')) {
- return;
- }
- $inviter_2 = Db::name('member')->where('member_id', $inviter_2_id)->field('inviter_id,member_id,member_name')->find();
- if ($inviter_2 && isset($inviter_ratios[1]) && floatval($inviter_ratios[1]) > 0) {
- $money_2 = round($inviter_ratios[1] / 100 * $goods_amount, 2);
- if ($money_2 > 0) {
- //生成推广记录
- Db::name('orderinviter')->insert([
- 'orderinviter_addtime' => TIMESTAMP,
- 'orderinviter_store_name' => $order['store_name'],
- 'orderinviter_goods_amount' => $goods_amount,
- 'orderinviter_goods_quantity' => $goods['goods_num'],
- 'orderinviter_order_type' => 1,
- 'orderinviter_store_id' => $goods['store_id'],
- 'orderinviter_goods_commonid' => $goods_common_info['goods_commonid'],
- 'orderinviter_goods_id' => $goods['goods_id'],
- 'orderinviter_level' => 2,
- 'orderinviter_goods_name' => $goods['goods_name'],
- 'orderinviter_order_id' => $order_id,
- 'orderinviter_order_sn' => $order['order_sn'],
- 'orderinviter_member_id' => $inviter_2['member_id'],
- 'orderinviter_member_name' => $inviter_2['member_name'],
- 'orderinviter_money' => $money_2,
- 'orderinviter_remark' => '获得二级推荐佣金,佣金比例' . $inviter_ratios[1] . '%,推荐关系' . $inviter_2['member_name'] . '->' . $inviter_1['member_name'] . '->' . $order['buyer_name'] . ',订单号' . $order['order_sn'],
- ]);
- }
- }
- if (config('ds_config.inviter_level') <= 2) {
- return;
- }
- //三级推荐人
- $inviter_3_id = Db::name('member')->where('member_id', $inviter_2_id)->value('inviter_id');
- if (!$inviter_3_id || !Db::name('inviter')->where('inviter_state=1 AND inviter_id=' . $inviter_3_id)->value('inviter_id')) {
- return;
- }
- $inviter_3 = Db::name('member')->where('member_id', $inviter_3_id)->field('inviter_id,member_id,member_name')->find();
- if ($inviter_3 && isset($inviter_ratios[2]) && floatval($inviter_ratios[2]) > 0) {
- $money_3 = round($inviter_ratios[2] / 100 * $goods_amount, 2);
- if ($money_3 > 0) {
- //生成推广记录
- Db::name('orderinviter')->insert([
- 'orderinviter_addtime' => TIMESTAMP,
- 'orderinviter_store_name' => $order['store_name'],
- 'orderinviter_goods_amount' => $goods_amount,
- 'orderinviter_goods_quantity' => $goods['goods_num'],
- 'orderinviter_order_type' => 1,
- 'orderinviter_store_id' => $goods['store_id'],
- 'orderinviter_goods_commonid' => $goods_common_info['goods_commonid'],
- 'orderinviter_goods_id' => $goods['goods_id'],
- 'orderinviter_level' => 3,
- 'orderinviter_goods_name' => $goods['goods_name'],
- 'orderinviter_order_id' => $order_id,
- 'orderinviter_order_sn' => $order['order_sn'],
- 'orderinviter_member_id' => $inviter_3['member_id'],
- 'orderinviter_member_name' => $inviter_3['member_name'],
- 'orderinviter_money' => $money_3,
- 'orderinviter_remark' => '获得三级推荐佣金,佣金比例' . $inviter_ratios[2] . '%,推荐关系' . $inviter_3['member_name'] . '->' . $inviter_2['member_name'] . '->' . $inviter_1['member_name'] . '->' . $order['buyer_name'] . ',订单号' . $order['order_sn'],
- ]);
- }
- }
- }
- /**
- * 生成订单
- * @param array $input 表单数据
- * @param unknown $goods_info 商品数据
- * @param unknown $member_info 会员数据
- * @throws Exception
- * @return array
- */
- private function _createOrder($input, $goods_info, $member_info)
- {
- extract($input);
- $vrorder_model = model('vrorder');
- //存储生成的订单,函数会返回该数组
- $order_list = [];
- $order = [];
- $order_code = [];
- //验证代金券
- if (!empty($input['voucher'])) {
- if (preg_match_all('/^(\d+)\|(\d+)\|([\d.]+)$/', $input['voucher'], $matchs)) {
- if (floatval($matchs[3][0]) > 0) {
- $input_voucher = [];
- $input_voucher['vouchertemplate_id'] = $matchs[1][0];
- $input_voucher['voucher_price'] = $matchs[3][0];
- $voucher_list = $goods_info['store_voucher_list'];
- if (is_array($voucher_list) && isset($voucher_list[$input_voucher['vouchertemplate_id']])) {
- $input_voucher['voucher_id'] = $voucher_list[$input_voucher['vouchertemplate_id']]['voucher_id'];
- $input_voucher['voucher_code'] = $voucher_list[$input_voucher['vouchertemplate_id']]['voucher_code'];
- $input_voucher['voucher_owner_id'] = $voucher_list[$input_voucher['vouchertemplate_id']]['voucher_owner_id'];
- $input_voucher['voucher_price'] = floatval($input_voucher['voucher_price']);
- $pay_total = bcsub($pay_total, $input_voucher['voucher_price'], 2);
- if ($pay_total < 0) {
- $pay_total = 0;
- }
- } else {
- $input_voucher = [];
- }
- }
- }
- }
- //新增内容
- $order['order_state'] = ORDER_STATE_NEW;
- $orderAmount = $input['pay_total']; //初始订单金额
- $order['deduction_amount'] = 0;
- //这里开始新增
- $orderSn = makePaySn($member_info['member_id']);
- $cardId = input('post.card_id'); //抵扣卡的Id
- if (!empty($cardId) || $cardId != 0) {
- if (strpos($cardId, ',') !== false) {
- $card_ids = explode(',', $cardId);
- } else {
- $card_ids[] = $cardId;
- }
- $SubCard = model('Subcard');
- foreach ($card_ids as $key => $value) {
- $where = [];
- $where['id'] = $value;
- $where['member_id'] = $member_info['member_id'];
- $cardInfo = $SubCard->where($where)->find();
- if (!$cardInfo && $cardInfo['card_status'] != 3 && $cardInfo['balance'] != 0) {
- continue;
- }
- if (!empty($cardInfo['bind_cate'])) {
- $cateLimits = explode(',', $cardInfo['bind_cate']);
- $diff = array_values(array_diff([$goods_info['gc_id']], $cateLimits));
- if (!empty($diff)) {
- continue;
- }
- }
- $balance = $cardInfo['balance'];
- //1.卡的余额要变, 订单金额也要变
- if ($balance < $orderAmount - $order['deduction_amount']) {
- //余额小于 先冻结起来
- $pay_amount = $balance;
- $order['deduction_amount'] += $pay_amount;
- $unpaid_amount =
- $order['card_id'] = $value;
- $logic_payment = model('payment', 'logic'); //推送消息记录
- $updateInfo = [
- 'balance' => 0,
- 'card_status' => 3,//用完了
- 'freeze' => $cardInfo['freeze'] + $pay_amount, //余额冻结
- 'used_count' => $cardInfo['used_count'] + 1,
- 'update_time' => time(),
- ];
- $info = [
- 'cardNo' => $cardInfo['card_no'],
- 'memberId' => $member_info['member_id'],
- 'amount' => $pay_amount,
- 'orderNo' => $orderSn,
- ];
- $logic_payment->payRecordPushNoAmount($info, 1);
- } else {
- //余额大于等于订单金额
- $pay_amount = $orderAmount - $order['deduction_amount'];
- $order['deduction_amount'] += $pay_amount;
- $order['card_id'] = $cardId;
- $order['payment_time'] = TIMESTAMP;
- $order['payment_code'] = 'card';
- $updateInfo = [
- 'balance' => $balance - $pay_amount,
- 'card_status' => 2, //状态为使用中
- 'freeze' => $cardInfo['freeze'] + $pay_amount, //余额冻结
- 'used_count' => $cardInfo['used_count'] + 1,
- 'update_time' => time(),
- ];
- $order['order_state'] = 40; //直接就到了待发货阶段
- $logic_payment = model('payment', 'logic'); //推送消息记录
- $info = [
- 'cardNo' => $cardInfo['card_no'],
- 'memberId' => $member_info['member_id'],
- 'amount' => $pay_amount,
- 'orderNo' => $orderSn,
- ];
- $logic_payment->payRecordPushNoAmount($info, 1);
- }
- $res = Db::name('sub_card')->where([
- ['id', '=', $value],
- ])->update($updateInfo);
- $expenseData[$key] = [
- 'member_id' => $member_info['member_id'],
- 'card_id' => $value,
- 'expense_amount' => $pay_amount, //抵消金额
- 'order_amount' => $orderAmount,
- 'expense_time' => time(),
- 'is_vir' => 1,
- ];
- }
- }
- //这里结束新增
- $order['order_sn'] = $orderSn;
- $order['store_id'] = $goods_info['store_id'];
- $order['store_name'] = $goods_info['store_name'];
- $order['buyer_id'] = $member_info['member_id'];
- $order['buyer_name'] = $member_info['member_name'];
- $order['buyer_phone'] = $input['buyer_phone'];
- $order['buyer_msg'] = $input['buyer_msg'];
- $order['add_time'] = TIMESTAMP;
- $order['order_amount'] = $orderAmount;
- $order['pd_amount'] = 0;
- $order['goods_id'] = $goods_info['goods_id'];
- $order['goods_name'] = $goods_info['goods_name'];
- $order['goods_price'] = $goods_info['goods_price'];
- $order['goods_num'] = $input['quantity'];
- $order['goods_image'] = $goods_info['goods_image'];
- $store_gc_id_commis_rate_list = model('storebindclass')->getStoreGcidCommisRateList([$goods_info]);
- $order['commis_rate'] = floatval(@$store_gc_id_commis_rate_list[$goods_info['store_id']][$goods_info['gc_id']]);
- $order['gc_id'] = $goods_info['gc_id'];
- $order['vr_indate'] = $goods_info['virtual_indate'];
- $order['vr_code'] = $goods_info['virtual_code'];
- $order['vr_invalid_refund'] = $goods_info['virtual_invalid_refund'];
- $order['order_from'] = $input['order_from'];
- $order['order_promotion_type'] = 0;
- if (isset($goods_info['ifgroupbuy']) && $goods_info['ifgroupbuy'] == 1) {
- $order['order_promotion_type'] = 1;
- $order['promotions_id'] = $goods_info['groupbuy_id'];
- } else if (isset($goods_info['ifpintuan']) && intval($input['pintuan_id']) > 0) {
- $order['order_promotion_type'] = 2;
- $order['promotions_id'] = $input['pintuangroup_id'];
- }
- $order_id = $vrorder_model->addVrorder($order);
- if (!$order_id) {
- ds_json_encode(10001, '订单保存失败');
- exit();
- }
- $order['order_id'] = $order_id;
- //存在虚拟商品编号 且 付费金额为 0时 ,获取消费券
- if ($order['order_amount'] - $order['deduction_amount'] == 0) {
- $result = $vrorder_model->addVrorderCode($order);
- if (!$result) {
- ds_json_encode(10001, '兑换码获取失败');
- exit();
- }
- // $param = array('order_id' => $order['order_id'], 'buyer_id' => $order['buyer_id'], 'buyer_phone' => $order['buyer_phone']);
- // \mall\queue\QueueClient::push('sendVrCode', $param);
- }
- if (!empty($expenseData)) {
- foreach ($expenseData as $key => $value) {
- //插入消费记录
- $value['order_id'] = $order_id;
- $addExpense = Db::name('sub_card_expense')->insert($value);
- }
- if ($order['deduction_amount'] == $order['order_amount']) {
- $logic_payment->paysuccesspush($order, 1);
- }
- }
- $order['order_id'] = $order_id;
- if ($order['order_promotion_type'] == 2) {
- $res = model('buy_1', 'logic')->updatePintuan($input, $goods_info, $order, 1, $member_info['member_id']);
- if (!$order['promotions_id']) {
- $vrorder_model->editVrorder(['promotions_id' => $res['pintuangroup_id']], ['order_id' => $order['order_id']]);
- }
- }
- // 提醒[库存报警]
- if ($goods_info['goods_storage_alarm'] >= ($goods_info['goods_storage'] - $input['quantity'])) {
- $param = [];
- $param['common_id'] = $goods_info['goods_commonid'];
- $param['sku_id'] = $goods_info['goods_id'];
- $ten_param = [$param['common_id'], $param['sku_id']];
- $weixin_param = [
- 'url' => config('ds_config.h5_site_url') . '/seller/goods_form_2?commonid=' . $goods_info['goods_commonid'] . '&class_id=' . $goods_info['gc_id'],
- 'data' => [
- "keyword1" => [
- "value" => $goods_info['goods_storage'] - $input['quantity'],
- "color" => "#333",
- ],
- "keyword2" => [
- "value" => date('Y-m-d H:i'),
- "color" => "#333",
- ],
- ],
- ];
- \mall\queue\QueueClient::push('sendStoremsg', ['code' => 'goods_storage_alarm', 'store_id' => $goods_info['store_id'], 'param' => $param, 'ali_param' => $param, 'ten_param' => $ten_param, 'weixin_param' => $weixin_param]);
- }
- //更新使用的代金券状态
- if (!empty($input_voucher) && is_array($input_voucher)) {
- \mall\queue\QueueClient::push('editVoucherState', [$goods_info['store_id'] => $input_voucher]);
- }
- return $order;
- }
- /**
- * 更新抢购购买人数和数量
- */
- private function _updateGroupBuy($goods_info)
- {
- if (isset($goods_info['ifgroupbuy']) && $goods_info['groupbuy_id']) {
- $groupbuy_info = [];
- $groupbuy_info['groupbuy_id'] = $goods_info['groupbuy_id'];
- $groupbuy_info['quantity'] = $goods_info['quantity'];
- \mall\queue\QueueClient::push('editGroupbuySaleCount', $groupbuy_info);
- }
- }
- /**
- * 充值卡支付
- * 如果充值卡足够就单独支付了该订单,如果不足就暂时冻结,等API支付成功了再彻底扣除
- */
- private function _rcbPay($order_info, $input, $buyer_info)
- {
- $available_rcb_amount = floatval($buyer_info['available_rc_balance']);
- if ($available_rcb_amount <= 0)
- return;
- if (!isset($order_info['rcb_amount'])) {
- $order_info['rcb_amount'] = 0;
- }
- if (!isset($order_info['pd_amount'])) {
- $order_info['pd_amount'] = 0;
- }
- $vrorder_model = model('vrorder');
- $predeposit_model = model('predeposit');
- $order_amount = floatval($order_info['order_amount']);
- $data_pd = [];
- $data_pd['member_id'] = $buyer_info['member_id'];
- $data_pd['member_name'] = $buyer_info['member_name'];
- $data_pd['amount'] = $order_amount;
- $data_pd['order_sn'] = $order_info['order_sn'];
- if ($available_rcb_amount >= $order_amount) {
- // 预存款立即支付,订单支付完成
- $predeposit_model->changeRcb('order_pay', $data_pd);
- $available_rcb_amount -= $order_amount;
- // 订单状态 置为已支付
- $data_order = [];
- $order_info['order_state'] = $data_order['order_state'] = 40;
- $data_order['payment_time'] = TIMESTAMP;
- $data_order['payment_code'] = 'predeposit';
- $data_order['rcb_amount'] = $order_info['order_amount'];
- $result = $vrorder_model->editVrorder($data_order, ['order_id' => $order_info['order_id']]);
- if (!$result) {
- throw new \think\Exception('订单更新失败', 10006);
- }
- if ($order_info['order_promotion_type'] != 2) {
- //发放兑换码
- $insert = $vrorder_model->addVrorderCode($order_info);
- //发送兑换码到手机
- $param = ['order_id' => $order_info['order_id'], 'buyer_id' => $order_info['buyer_id'], 'buyer_phone' => $order_info['buyer_phone']];
- \mall\queue\QueueClient::push('sendVrCode', $param);
- // 支付成功发送店铺消息
- $param = [];
- $param['code'] = 'new_order';
- $param['store_id'] = $order_info['store_id'];
- $param['ali_param'] = [
- 'order_sn' => $order_info['order_sn'],
- ];
- $param['ten_param'] = [
- $order_info['order_sn'],
- ];
- $param['param'] = $param['ali_param'];
- $param['weixin_param'] = [
- 'url' => config('ds_config.h5_site_url') . '/seller/vrorder_detail?order_id=' . $order_info['order_id'],
- 'data' => [
- "keyword1" => [
- "value" => $order_info['order_sn'],
- "color" => "#333",
- ],
- "keyword2" => [
- "value" => $order_info['goods_name'],
- "color" => "#333",
- ],
- "keyword3" => [
- "value" => $order_info['order_amount'],
- "color" => "#333",
- ],
- "keyword4" => [
- "value" => date('Y-m-d H:i', $order_info['add_time']),
- "color" => "#333",
- ],
- ],
- ];
- \mall\queue\QueueClient::push('sendStoremsg', $param);
- if (!$insert) {
- throw new \think\Exception('兑换码发送失败', 10006);
- }
- }
- } else {
- //暂冻结预存款,后面还需要 API彻底完成支付
- $data_pd['amount'] = $available_rcb_amount;
- $predeposit_model->changeRcb('order_freeze', $data_pd);
- //预存款支付金额保存到订单
- $data_order = [];
- $order_info['rcb_amount'] = $data_order['rcb_amount'] = $available_rcb_amount;
- $result = $vrorder_model->editVrorder($data_order, ['order_id' => $order_info['order_id']]);
- if (!$result) {
- throw new \think\Exception('订单更新失败', 10006);
- }
- }
- return $order_info;
- }
- /**
- * 预存款支付
- * 如果预存款足够就单独支付了该订单,如果不足就暂时冻结,等API支付成功了再彻底扣除
- */
- private function _pdPay($order_info, $input, $buyer_info)
- {
- if ($order_info['order_state'] == ORDER_STATE_PAY)
- return;
- $available_pd_amount = floatval($buyer_info['available_predeposit']);
- if ($available_pd_amount <= 0)
- return;
- if (!isset($order_info['rcb_amount'])) {
- $order_info['rcb_amount'] = 0;
- }
- if (!isset($order_info['pd_amount'])) {
- $order_info['pd_amount'] = 0;
- }
- $vrorder_model = model('vrorder');
- $predeposit_model = model('predeposit');
- //充值卡支付金额
- $rcb_amount = isset($order_info['rcb_amount']) ? floatval($order_info['rcb_amount']) : 0;
- $order_amount = floatval($order_info['order_amount']) - $rcb_amount;
- $data_pd = [];
- $data_pd['member_id'] = $buyer_info['member_id'];
- $data_pd['member_name'] = $buyer_info['member_name'];
- $data_pd['amount'] = $order_amount;
- $data_pd['order_sn'] = $order_info['order_sn'];
- if ($available_pd_amount >= $order_amount) {
- //预存款立即支付,订单支付完成
- $predeposit_model->changePd('order_pay', $data_pd);
- $available_pd_amount -= $order_amount;
- //下单,支付被冻结的充值卡
- $pd_amount = $rcb_amount;
- if ($pd_amount > 0) {
- $data_pd = [];
- $data_pd['member_id'] = $buyer_info['member_id'];
- $data_pd['member_name'] = $buyer_info['member_name'];
- $data_pd['amount'] = $pd_amount;
- $data_pd['order_sn'] = $order_info['order_sn'];
- $predeposit_model->changeRcb('order_comb_pay', $data_pd);
- }
- // 订单状态 置为已支付
- $data_order = [];
- $data_order['order_state'] = 40;
- $data_order['payment_time'] = TIMESTAMP;
- $data_order['payment_code'] = 'predeposit';
- $data_order['pd_amount'] = $order_amount;
- $result = $vrorder_model->editVrorder($data_order, ['order_id' => $order_info['order_id']]);
- if (!$result) {
- throw new \think\Exception('订单更新失败', 10006);
- }
- if ($order_info['order_promotion_type'] != 2) {
- //发放兑换码
- $result = $vrorder_model->addVrorderCode($order_info);
- if (!$result) {
- var_dump(1);
- exit();
- ds_json_encode(10001, '兑换码获取失败');
- exit();
- }
- // //发送兑换码到手机
- // $param = array('order_id' => $order_info['order_id'], 'buyer_id' => $order_info['buyer_id'], 'buyer_phone' => $order_info['buyer_phone']);
- // \mall\queue\QueueClient::push('sendVrCode', $param);
- // 支付成功发送店铺消息
- $param = [];
- $param['code'] = 'new_order';
- $param['store_id'] = $order_info['store_id'];
- $param['ali_param'] = [
- 'order_sn' => $order_info['order_sn'],
- ];
- $param['ten_param'] = [
- $order_info['order_sn'],
- ];
- $param['param'] = $param['ali_param'];
- $param['weixin_param'] = [
- 'url' => config('ds_config.h5_site_url') . '/seller/vrorder_detail?order_id=' . $order_info['order_id'],
- 'data' => [
- "keyword1" => [
- "value" => $order_info['order_sn'],
- "color" => "#333",
- ],
- "keyword2" => [
- "value" => $order_info['goods_name'],
- "color" => "#333",
- ],
- "keyword3" => [
- "value" => $order_info['order_amount'],
- "color" => "#333",
- ],
- "keyword4" => [
- "value" => date('Y-m-d H:i', $order_info['add_time']),
- "color" => "#333",
- ],
- ],
- ];
- \mall\queue\QueueClient::push('sendStoremsg', $param);
- }
- } else {
- //暂冻结预存款,后面还需要 API彻底完成支付
- $data_pd['amount'] = $available_pd_amount;
- $predeposit_model->changePd('order_freeze', $data_pd);
- //预存款支付金额保存到订单
- $data_order = [];
- $data_order['pd_amount'] = $available_pd_amount;
- $result = $vrorder_model->editVrorder($data_order, ['order_id' => $order_info['order_id']]);
- if (!$result) {
- throw new \think\Exception('订单更新失败', 10006);
- }
- }
- }
- /**
- * 充值卡支付
- * 如果充值卡足够就单独支付了该订单,如果不足就暂时冻结,等API支付成功了再彻底扣除
- */
- public function rcbPay($order_info, $input, $buyer_info)
- {
- $available_rcb_amount = floatval($buyer_info['available_rc_balance']);
- if ($available_rcb_amount <= 0)
- return $order_info;
- $vrorder_model = model('vrorder');
- $predeposit_model = model('predeposit');
- $order_amount = round($order_info['order_amount'] - $order_info['rcb_amount'] - $order_info['pd_amount'], 2);
- $data_pd = [];
- $data_pd['member_id'] = $buyer_info['member_id'];
- $data_pd['member_name'] = $buyer_info['member_name'];
- $data_pd['amount'] = $order_amount;
- $data_pd['order_sn'] = $order_info['order_sn'];
- if ($available_rcb_amount >= $order_amount) {
- // 预存款立即支付,订单支付完成
- $predeposit_model->changeRcb('order_pay', $data_pd);
- $available_rcb_amount -= $order_amount;
- //支付被冻结的充值卡
- $rcb_amount = isset($order_info['rcb_amount']) ? floatval($order_info['rcb_amount']) : 0;
- if ($rcb_amount > 0) {
- $data_pd = [];
- $data_pd['member_id'] = $buyer_info['member_id'];
- $data_pd['member_name'] = $buyer_info['member_name'];
- $data_pd['amount'] = $rcb_amount;
- $data_pd['order_sn'] = $order_info['order_sn'];
- $predeposit_model->changeRcb('order_comb_pay', $data_pd);
- }
- // 订单状态 置为已支付
- $data_order = [];
- $order_info['order_state'] = $data_order['order_state'] = 40;
- $data_order['payment_time'] = TIMESTAMP;
- $data_order['payment_code'] = 'predeposit';
- $data_order['rcb_amount'] = round($order_info['rcb_amount'] + $order_amount, 2);
- $result = $vrorder_model->editVrorder($data_order, ['order_id' => $order_info['order_id']]);
- if (!$result) {
- throw new \think\Exception('订单更新失败', 10006);
- }
- if ($order_info['order_promotion_type'] != 2) {
- //发放兑换码
- $insert = $vrorder_model->addVrorderCode($order_info);
- //发送兑换码到手机
- $param = ['order_id' => $order_info['order_id'], 'buyer_id' => $order_info['buyer_id'], 'buyer_phone' => $order_info['buyer_phone']];
- \mall\queue\QueueClient::push('sendVrCode', $param);
- // 支付成功发送店铺消息
- $param = [];
- $param['code'] = 'new_order';
- $param['store_id'] = $order_info['store_id'];
- $param['ali_param'] = [
- 'order_sn' => $order_info['order_sn'],
- ];
- $param['ten_param'] = [
- $order_info['order_sn'],
- ];
- $param['param'] = $param['ali_param'];
- $param['weixin_param'] = [
- 'url' => config('ds_config.h5_site_url') . '/seller/vrorder_detail?order_id=' . $order_info['order_id'],
- 'data' => [
- "keyword1" => [
- "value" => $order_info['order_sn'],
- "color" => "#333",
- ],
- "keyword2" => [
- "value" => $order_info['goods_name'],
- "color" => "#333",
- ],
- "keyword3" => [
- "value" => $order_info['order_amount'],
- "color" => "#333",
- ],
- "keyword4" => [
- "value" => date('Y-m-d H:i', $order_info['add_time']),
- "color" => "#333",
- ],
- ],
- ];
- \mall\queue\QueueClient::push('sendStoremsg', $param);
- if (!$insert) {
- throw new \think\Exception('兑换码发送失败', 10006);
- }
- }
- } else {
- //暂冻结预存款,后面还需要 API彻底完成支付
- $data_pd['amount'] = $available_rcb_amount;
- $predeposit_model->changeRcb('order_freeze', $data_pd);
- //预存款支付金额保存到订单
- $data_order = [];
- $order_info['rcb_amount'] = $data_order['rcb_amount'] = round($order_info['rcb_amount'] + $available_rcb_amount, 2);
- $result = $vrorder_model->editVrorder($data_order, ['order_id' => $order_info['order_id']]);
- if (!$result) {
- throw new \think\Exception('订单更新失败', 10006);
- }
- }
- return $order_info;
- }
- /**
- * 预存款支付 主要处理
- * 如果预存款足够就单独支付了该订单,如果不足就暂时冻结,等API支付成功了再彻底扣除
- */
- public function pdPay($order_info, $input, $buyer_info)
- {
- if ($order_info['order_state'] == ORDER_STATE_PAY)
- return $order_info;
- $available_pd_amount = floatval($buyer_info['available_predeposit']);
- if ($available_pd_amount <= 0)
- return $order_info;
- $vrorder_model = model('vrorder');
- $predeposit_model = model('predeposit');
- $order_amount = round($order_info['order_amount'] - $order_info['rcb_amount'] - $order_info['pd_amount'], 2);
- $data_pd = [];
- $data_pd['member_id'] = $buyer_info['member_id'];
- $data_pd['member_name'] = $buyer_info['member_name'];
- $data_pd['amount'] = $order_amount;
- $data_pd['order_sn'] = $order_info['order_sn'];
- if ($available_pd_amount >= $order_amount) {
- //预存款立即支付,订单支付完成
- $predeposit_model->changePd('order_pay', $data_pd);
- $available_pd_amount -= $order_amount;
- //下单,支付被冻结的充值卡
- $pd_amount = floatval($order_info['rcb_amount']);
- if ($pd_amount > 0) {
- $data_pd = [];
- $data_pd['member_id'] = $buyer_info['member_id'];
- $data_pd['member_name'] = $buyer_info['member_name'];
- $data_pd['amount'] = $pd_amount;
- $data_pd['order_sn'] = $order_info['order_sn'];
- $predeposit_model->changeRcb('order_comb_pay', $data_pd);
- }
- //支付被冻结的预存款
- $pd_amount = isset($order_info['pd_amount']) ? floatval($order_info['pd_amount']) : 0;
- if ($pd_amount > 0) {
- $data_pd = [];
- $data_pd['member_id'] = $buyer_info['member_id'];
- $data_pd['member_name'] = $buyer_info['member_name'];
- $data_pd['amount'] = $pd_amount;
- $data_pd['order_sn'] = $order_info['order_sn'];
- $predeposit_model->changePd('order_comb_pay', $data_pd);
- }
- // 订单状态 置为已支付
- $data_order = [];
- $order_info['order_state'] = $data_order['order_state'] = 40;
- $order_info['payment_time'] = $data_order['payment_time'] = TIMESTAMP;
- $order_info['payment_code'] = $data_order['payment_code'] = 'predeposit';
- $order_info['pd_amount'] = $data_order['pd_amount'] = round($order_info['pd_amount'] + $order_amount, 2);
- $result = $vrorder_model->editVrorder($data_order, ['order_id' => $order_info['order_id']]);
- if (!$result) {
- throw new \think\Exception('订单更新失败', 10006);
- }
- if ($order_info['order_promotion_type'] != 2) {
- //发放兑换码
- $vrorder_model->addVrorderCode($order_info);
- //发送兑换码到手机
- $param = ['order_id' => $order_info['order_id'], 'buyer_id' => $order_info['buyer_id'], 'buyer_phone' => $order_info['buyer_phone']];
- \mall\queue\QueueClient::push('sendVrCode', $param);
- // 支付成功发送店铺消息
- $param = [];
- $param['code'] = 'new_order';
- $param['store_id'] = $order_info['store_id'];
- $param['ali_param'] = [
- 'order_sn' => $order_info['order_sn'],
- ];
- $param['ten_param'] = [
- $order_info['order_sn'],
- ];
- $param['param'] = $param['ali_param'];
- $param['weixin_param'] = [
- 'url' => config('ds_config.h5_site_url') . '/seller/vrorder_detail?order_id=' . $order_info['order_id'],
- 'data' => [
- "keyword1" => [
- "value" => $order_info['order_sn'],
- "color" => "#333",
- ],
- "keyword2" => [
- "value" => $order_info['goods_name'],
- "color" => "#333",
- ],
- "keyword3" => [
- "value" => $order_info['order_amount'],
- "color" => "#333",
- ],
- "keyword4" => [
- "value" => date('Y-m-d H:i', $order_info['add_time']),
- "color" => "#333",
- ],
- ],
- ];
- \mall\queue\QueueClient::push('sendStoremsg', $param);
- }
- } else {
- //暂冻结预存款,后面还需要 API彻底完成支付
- $data_pd['amount'] = $available_pd_amount;
- $predeposit_model->changePd('order_freeze', $data_pd);
- //预存款支付金额保存到订单
- $data_order = [];
- $order_info['pd_amount'] = $data_order['pd_amount'] = round($order_info['pd_amount'] + $available_pd_amount, 2);
- $result = $vrorder_model->editVrorder($data_order, ['order_id' => $order_info['order_id']]);
- if (!$result) {
- throw new \think\Exception('订单更新失败', 10006);
- }
- }
- return $order_info;
- }
- /**
- * 积分支付
- */
- public function pointPay($order_info, $input, $buyer_info)
- {
- $point_ratio = config('app.point_ratio');
- $point_amount = floatval($buyer_info['point'] / $point_ratio);
- if ($point_amount <= 0)
- return $order_info;
- $vrorder_model = model('vrorder');
- $predeposit_model = model('predeposit');
- $order_amount = round($order_info['order_amount'] - $order_info['rcb_amount'] - $order_info['pd_amount'], 2);
- $data_point = [];
- $data_point['member_id'] = $buyer_info['member_id'];
- $data_point['union_id'] = $buyer_info['member_wxunionid'];
- $data_point['member_name'] = $buyer_info['member_name'];
- $data_point['amount'] = $order_amount;
- $data_point['order_sn'] = $order_info['order_sn'];
- if ($point_amount >= $order_amount) {
- //积分立即支付,订单支付完成
- $predeposit_model->changePoint('order_pay', $data_point);
- // 订单状态 置为已支付
- $data_order = [];
- $order_info['order_state'] = $data_order['order_state'] = 40;
- $data_order['payment_time'] = TIMESTAMP;
- $data_order['payment_code'] = 'predeposit';
- $data_order['point_amount'] = round($order_info['point_amount'] + ($order_amount * $point_ratio), 2);
- $result = $vrorder_model->editVrorder($data_order, ['order_id' => $order_info['order_id']]);
- if (!$result) {
- throw new \think\Exception('订单更新失败', 10006);
- }
- if ($order_info['order_promotion_type'] != 2) {
- //发放兑换码
- $insert = $vrorder_model->addVrorderCode($order_info);
- //发送兑换码到手机
- $param = ['order_id' => $order_info['order_id'], 'buyer_id' => $order_info['buyer_id'], 'buyer_phone' => $order_info['buyer_phone']];
- \mall\queue\QueueClient::push('sendVrCode', $param);
- // 支付成功发送店铺消息
- $param = [];
- $param['code'] = 'new_order';
- $param['store_id'] = $order_info['store_id'];
- $param['ali_param'] = [
- 'order_sn' => $order_info['order_sn'],
- ];
- $param['ten_param'] = [
- $order_info['order_sn'],
- ];
- $param['param'] = $param['ali_param'];
- $param['weixin_param'] = [
- 'url' => config('ds_config.h5_site_url') . '/seller/vrorder_detail?order_id=' . $order_info['order_id'],
- 'data' => [
- "keyword1" => [
- "value" => $order_info['order_sn'],
- "color" => "#333",
- ],
- "keyword2" => [
- "value" => $order_info['goods_name'],
- "color" => "#333",
- ],
- "keyword3" => [
- "value" => $order_info['order_amount'],
- "color" => "#333",
- ],
- "keyword4" => [
- "value" => date('Y-m-d H:i', $order_info['add_time']),
- "color" => "#333",
- ],
- ],
- ];
- \mall\queue\QueueClient::push('sendStoremsg', $param);
- if (!$insert) {
- throw new \think\Exception('兑换码发送失败', 10006);
- }
- }
- } else {
- //暂冻结预存款,后面还需要 API彻底完成支付
- $data_point['amount'] = $point_amount;
- $predeposit_model->changeRcb('order_freeze', $data_point);
- //预存款支付金额保存到订单
- $data_order = [];
- $order_info['point_amount'] = $data_order['point_amount'] = $order_info['point_amount'] + $point_amount * $point_ratio;
- $result = $vrorder_model->editVrorder($data_order, ['order_id' => $order_info['order_id']]);
- if (!$result) {
- throw new \think\Exception('订单更新失败', 10006);
- }
- }
- return $order_info;
- }
- /**
- * 取得抢购信息
- * @param array $goods_info
- * @return array
- */
- private function _getGroupbuyInfo($goods_info = [])
- {
- if (!config('ds_config.groupbuy_allow') || empty($goods_info) || !is_array($goods_info))
- return $goods_info;
- $groupbuy_info = model('groupbuy')->getGroupbuyInfoByGoodsCommonID($goods_info['goods_commonid']);
- if (empty($groupbuy_info))
- return $goods_info;
- // 虚拟抢购数量限制
- if ($groupbuy_info['groupbuy_upper_limit'] > 0 && $groupbuy_info['groupbuy_upper_limit'] < $goods_info['virtual_limit']) {
- $goods_info['virtual_limit'] = $groupbuy_info['groupbuy_upper_limit'];
- }
- $goods_info['goods_price'] = $groupbuy_info['groupbuy_price'];
- $goods_info['groupbuy_id'] = $groupbuy_info['groupbuy_id'];
- $goods_info['ifgroupbuy'] = true;
- return $goods_info;
- }
- }
|