$form['data']['attr_id']]); if (!empty($attr)) { // 判断件数 $qGoods = QiDingDongGoods::findOne(['goods_id' => $attr->goods_id]); $floor = $qGoods->content['goods']['sampling_num']; // 起订量 $specs = array_column($qGoods->content['specs'], 'package_num', 'spec_id'); $_floor = $specs[$attr->third_spec_id] ?? 0; if ($form['data']['num'] != $floor && ($form['data']['num'] % $_floor) !== 0) throw new \Exception("起订量为 {$floor} 或 {$_floor} 的倍数"); } } } /** * @param $params * @return array|void * @throws \Exception */ public function validBuyNum($params) { $return = [ 'status' => true, 'msg' => 'success' ]; $attrs = $params['attrs'] ?? []; if(empty($attrs)) return $return; try { foreach ($attrs as $attr_id => $num) { $attr = QiDingDongGoodsAttr::findOne(['goods_attr_id' => $attr_id]); if (!empty($attr)) { // 判断件数 $qGoods = QiDingDongGoods::findOne(['goods_id' => $attr->goods_id]); if (empty($qGoods->can_sale)) throw new \Exception("当前商品不可售"); $floor = $qGoods->content['goods']['sampling_num']; // 起订量 $specs = array_column($qGoods->content['specs'], 'package_num', 'spec_id'); $_floor = $specs[$attr->third_spec_id] ?? 0; if ($num != $floor && ($num % $_floor) !== 0) throw new \Exception("起订量为 {$floor} 或 {$_floor} 的倍数"); $addr = UserAddress::getUserAddress($params['user_id'], $params['address_id'] ?? 0); if (!empty($addr)) { $is_d = true; $region = QiDingDongRegion::findOne(['local_id' => $addr['district_id']]); if (empty($region)) { $is_d = false; $region = QiDingDongRegion::findOne(['local_id' => $addr['city_id']]); } // 取运费 $shipContentModel = RequestHelper::contentModelInstance($qGoods->mall_id); $shipContentModel->content->data = new ShippingFeeModel(); $shipContentModel->content->data->goods_id = $qGoods->third_goods_id; $shipContentModel->content->data->spec_id = $attr->third_spec_id; $shipContentModel->content->data->province = $region->province_id; $shipContentModel->content->data->city = $region->city_id; $shipContentModel->content->data->area = $is_d ? $region->id : $region->district_id; $shipContentModel->content->data->num = $num; $shipContentModel->content->data->yf_mode = StatusEnum::ENABLED; $shipContentModel->content->data->device = QiDingDongEnums::REQUEST_PARAMS_DEVICE; $req = new ShippingFeeRequest(); $res = RequestHelper::send($req, RequestHelper::enCrypto($shipContentModel, $qGoods->mall_id), $qGoods->mall_id); if (is_string($res)) throw new \Exception($res); $return['extra'][$attr->goods_id]['shipping_fee'] = bcmul($res['total_ship_price'] ?? 0, 0.01, 2); } } } } catch (\Exception $e) { $return = [ 'status' => false, 'msg' => $e->getMessage() ]; } return $return; } }