| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <?php
- namespace addons\Sudoku\common\logic\order\purchase;
- use addons\Sudoku\common\logic\order\purchase\BasePurchase;
- use addons\Sudoku\common\models\AddonsSudokuLog;
- use common\enums\AppEnum;
- use common\enums\GoodsTypeEnum;
- use common\enums\StatusEnum;
- use common\helpers\ArrayHelper;
- use common\helpers\BcHelper;
- use addons\Sudoku\common\logic\order\OrderFormLogic;
- use common\helpers\StringHelper;
- use common\models\goods\GoodsAttr;
- use common\models\order\OrderDetail;
- use common\models\user\User;
- use common\models\user\UserAddress;
- use common\traits\ErrorTrait;
- use Exception;
- use yii\helpers\Json;
- /**
- * 立即付款订单处理
- * @Author ltm
- * @DateTime 2021-12-30 16:40:40
- * @copyright: Copyright (c) 2020 广东七件事集团
- */
- class BuyNowPurchase extends BasePurchase {
- use ErrorTrait;
- /**
- * @desc:执行
- * @Author: ltm
- * @Date: 2021/12/30
- * @Time: 16:56
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param OrderFormLogic $form
- * @return OrderFormLogic|false
- */
- public function execute(OrderFormLogic $form){
- try {
- // 合法性验证
- $user = User::getOne([['id'=>$form->user_id,'mall_id'=>$form->mall_id]]);
- if(empty($user)) throw new Exception('下单用户不存在');
- $params['where'][] = ['id' => $form->id];
- $params['where'][] = ['user_id' => $form->user_id];
- $params['with'] = ['goods','user','address','order'];
- $detail = AddonsSudokuLog::getOne($params['where'],true,$params['with']);
- $sku = GoodsAttr::getOne([['<>','status',StatusEnum::DELETE],['goods_id' => $detail['goods_id']]],true,['goods','goods.extra']);
- if(empty($sku) || empty($sku['goods'])) throw new Exception('找不到产品信息或者产品已删除');
- if($detail['status'] == StatusEnum::ENABLED&&$detail['order']['order_status'] == StatusEnum::ENABLED) throw new Exception('奖品已经领取');
- if($detail['status'] == StatusEnum::ENABLED&&$detail['order']['order_status'] != StatusEnum::ENABLED) $form->status = 0; //订单过去重新领取
- if($detail['status'] == StatusEnum::ENABLED&&$detail['order']['order_status'] == StatusEnum::DISABLED) $form->status = 1; //订单未支付
- $form->sku[$detail['goods']['id']] = $sku;
- $form->type = 'buy_now';
- $form->data['num'] = 1; //补充参数
- //获取奖品规格详情
- if($detail['goods']['id']){
- $goods_attr_params['where'][] = ['=','goods_id',$detail['goods']['id']];
- $goods_attr_params['select'] = 'id,goods_id,name,sign_id,stock,price,original_price,cost_price,goods_no,weight,pic_url';
- $sku = GoodsAttr::getOne($goods_attr_params['where'],true,null,'id',$goods_attr_params['select']);
- $form->sku[$detail['goods']['id']]['weight'] = $sku['weight'];
- $form->data['attr_id'] = $sku['id']; //补充参数
- }
- if(empty($detail) || empty($detail['goods'])) throw new Exception('找不到该商品信息');
- if($form->address_id) $detail['address'] = UserAddress::getOne([['user_id' =>$form->user_id ],['id' => $form->address_id]],true);
- if(!$detail['address']){
- $detail['address'] = UserAddress::getOne([['user_id' =>$form->user_id ]],true);
- }
- if(empty($detail['address']) || empty($detail['address'])) throw new Exception('收货地址无效');
- $form->address_id = $detail['address']['id']; //收货地址
- $form->address_default = $detail['address'];
- $buy_num = 1;
- if ($buy_num > $detail['goods']['stock']) throw new Exception('商品' . $detail['goods']['goods_name'] . '库存不足! ');
- $order_goods = new OrderDetail();
- $order_goods = $order_goods->loadDefaultValues();
- $order_goods->goods_id = $detail['goods_id'];
- $order_goods->goods_name = $detail['goods']['goods_name'];
- $order_goods->goods_attr_id = $sku['id'];
- $order_goods->sign_id = $sku['sign_id'];
- $order_goods->goods_attr_name = $sku['name'];
- $order_goods->num = $buy_num;
- $order_goods->cost_price = $sku['cost_price'];
- $order_goods->price = $sku['price'] ;
- $order_goods->goods_price = "0";
- $order_goods->original_goods_price = $sku['original_price'];
- $order_goods->pic_url = !empty($sku['pic_url']) ? $sku['pic_url'] : $detail['goods']['cover_pic'];
- $order_goods->user_id = $form->user_id;
- $order_goods->mch_id = $detail['goods']['mch_id'];
- $order_goods->mall_id = $form->mall_id;
- // 默认数据带下单数量方便计算
- $goods = $detail['goods'];
- $form->goods = $detail['goods'];
- $form->order = $detail['order'];
- $goods['number'] = $buy_num;
- $form->order_goods[] = ArrayHelper::toArray($order_goods);
- $form->mch_id = $detail['goods']['mch_id'];
- $form->user = $user;
- return $form;
- } catch (Exception $e) {
- $this->setError($e->getMessage());
- return false;
- }
- }
- /**
- * 获取下单类型
- * @Author ltm
- * @DateTime 2021-09-23 09:48:45
- * @copyright: Copyright (c) 2020 广东七件事集团
- * @return string
- */
- public static function getType(): string{
- return 'buy_now';
- }
- }
|