mall_id, AddonsEnum::ADDONS_NAME_ENERGY_VALUE)) { $config = \Yii::$app->services->setting->addons->get($form->mall_id, AddonsEnum::ADDONS_NAME_ENERGY_VALUE, 'basic'); if (!empty($config['is_enable'])) { $group_order_goods = $form['group_order_goods']; $goods_id = []; foreach ($group_order_goods as $val) { foreach ($val['goods'] as $v) { if (!isset($goods_id[$v['goods_id']])) { $goods_id[$v['goods_id']] = 0; } $goods_id[$v['goods_id']] += $v['num']; } } /** @var \addons\EnergyValue\common\models\EnergyValueDeductSetting $deduct_setting_class */ $deduct_setting_class = \addons\EnergyValue\common\models\EnergyValueDeductSetting::class; $setting_list = $deduct_setting_class::lists([ 'where' => [ ['mall_id' => $form->mall_id], ['goods_id' => array_keys($goods_id)], ['status' => StatusEnum::ENABLED], ['is_enable' => StatusEnum::ENABLED] ], ]); $total = 0; foreach ($setting_list as $val) { if (isset($goods_id[$val['goods_id']])) { $total = bcadd($total, bcmul($val['num'], $goods_id[$val['goods_id']], 2), 2); } } /** @var \addons\EnergyValue\common\models\EnergyValueUser $user_class */ $user_class = \addons\EnergyValue\common\models\EnergyValueUser::class; $user_energy_value = $user_class::findOne(['user_id' => $form->user_id, 'status' => StatusEnum::ENABLED]); if(($user_energy_value['consumption_cy'] ?? 0) + ($user_energy_value['drive_cy'] ?? 0) < $total){ \Yii::error(self::class.'->'.__FUNCTION__.'//info: '.json_encode([ 'consumption_cy' => $user_energy_value['consumption_cy'] ?? 0, 'drive_cy' => $user_energy_value['drive_cy'] ?? 0, 'total' => $total, 'info' => $user_energy_value ? json_encode($user_energy_value): '', 'user_id' => $form->user_id ])); throw new \Exception('消费力和推动力不足,无法下单'); } } } } catch (\Exception $e) { throw new \Exception($e->getMessage()); } } }