| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- <?php
- namespace addons\GroupBuy\common\logic\order\purchase;
- use addons\GroupBuy\common\models\GroupBuyActiveGoodsAttr;
- use common\enums\GoodsTypeEnum;
- use common\helpers\ArrayHelper;
- use common\helpers\BcHelper;
- use addons\GroupBuy\common\logic\order\OrderFormLogic;
- use common\models\order\OrderDetail;
- use common\models\user\User;
- use Exception;
- use yii\helpers\Json;
- /**
- * 立即付款订单处理
- * @Author bing
- * @DateTime 2021-09-23 09:40:40
- * @copyright: Copyright (c) 2020 广东七件事集团
- */
- class BuyNowPurchase extends BasePurchase {
- /**
- * @desc:执行
- * @Author: hua
- * @Date: 2021/12/15
- * @Time: 9:56
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $form
- * @return object|false
- */
- public function execute( $form){
- try {
- $data = is_array($form->data)?$form->data:Json::decode($form->data,true);
- // 合法性验证
- $user = User::getOne([['id'=>$form->user_id,'mall_id'=>$form->mall_id]]);
- if(empty($user)) throw new Exception('下单用户不存在');
- if(!isset($data['num']) || (int)$data['num'] < 1) throw new Exception('请设置正确的下单数量');
- $sku = GroupBuyActiveGoodsAttr::getOne([
- ['attr_id'=>$data['attr_id']],
- ['mall_id'=>$form->mall_id],
- ['group_buy_active_id'=>$data['active_id']]
- ],true,[
- 'goods','groupBuyActive','goodsAttr'
- ]);
- if(empty($sku) || empty($sku['goods'])) throw new Exception('找不到该拼团商品信息');
- if(in_array($sku['goods']['goods_type'],[GoodsTypeEnum::GoodsTypePhysical])) {
- $this->checkAddress($form['action'],$data,$form->user_id);
- $form['is_address'] = 1;
- }
- $buy_num = $data['num'];
- if ($buy_num > $sku['stock']) throw new Exception('商品' . $sku['goods']['goods_name'] . '库存不足! ');
- $order_goods = new OrderDetail();
- $order_goods = $order_goods->loadDefaultValues();
- $order_goods->goods_id = $sku['goods_id'];
- $order_goods->goods_name = $sku['goods']['goods_name'];
- $order_goods->goods_attr_id = $sku['attr_id'];
- $order_goods->sign_id = $sku['goodsAttr']['sign_id'];
- $order_goods->goods_attr_name = $sku['goodsAttr']['name'];
- $order_goods->num = $buy_num;
- //$order_goods->cost_price = $sku['goodsAttr']['cost_price'];
- $order_goods->cost_price = $sku['group_buy_price']; //商品成本价 修改成拼团价格
- $order_goods->price = $sku['goodsAttr']['price'] ;
- $order_goods->goods_price = BcHelper::mul($order_goods->num, $sku['group_buy_price']);
- $order_goods->original_goods_price = $sku['goodsAttr']['original_price'];
- $order_goods->pic_url = !empty($sku['goodsAttr']['pic_url']) ? $sku['goodsAttr']['pic_url'] : $sku['goods']['cover_pic'];
- $order_goods->user_id = $form->user_id;
- $order_goods->mch_id = $sku['goods']['mch_id'];
- $order_goods->mall_id = $form->mall_id;
- // 默认数据带下单数量方便计算
- $goods = $sku['goods'];
- $goods['number'] = $buy_num;
- $form->order_goods[] = ArrayHelper::toArray($order_goods);
- $form->sku[$sku['goods_id']] = $sku;
- $form->user = $user;
- return $form;
- } catch (Exception $e) {
- $this->setError($e->getMessage());
- return false;
- }
- }
- /**
- * 获取下单类型
- * @Author bing
- * @DateTime 2021-09-23 09:48:45
- * @copyright: Copyright (c) 2020 广东七件事集团
- * @return string
- */
- public static function getType(): string{
- return 'buy_now';
- }
- }
|