/** * ShipfeeQueryModel::cal_eub_jiete() * 中国邮政EUB捷特运费计算 * @param float $weight 重量 * @param string $countryname 发往国家 * @param $data 待定 * @param $discount 是否有折扣 * @return false or array */ public function cal_eub_jiete($weight, $countryname, $data, $discount = true) { $totalfee = 0; $arealist = array(); $maxWeight = 0; $chAlias = 'eub_fujian'; $res = array(); $res = TransOpenApiModel::cacheCarrierInfoByChannelAli("trans_channels", "channelAlias='{$chAlias}'", "{$chAlias}_carrier", 600, 0); $maxWeight = !empty($res['weightMax']) ? floatval($res['weightMax']) : 0; if (!empty($maxWeight)) { if ($weight > $maxWeight) { return false; } } $arealist = TransOpenApiModel::cacheTableInfo('trans_freight_eub_jiete', '1', 'cal_eub_jiete', 86400, 0); if (empty($arealist)) { return false; } $arearow = array(); foreach ($arealist as $value) { $countrys = explode(',', $value['countrys']); $countrys = array_map(array($this, 'callback_trimspace'), $countrys); if (in_array($countryname, $countrys)) { $arearow = $value; break; } } if (empty($arearow)) { return false; } $rate1 = empty($arearow['discount']) ? 0 : floatval($arearow['discount']); $rate2 = empty($arearow['discount1']) ? 0 : floatval($arearow['discount1']); $rate = 0; $rateweight = empty($arearow['nextweight']) ? 0 : floatval($arearow['nextweight']); $noweight = empty($arearow['noWeight']) ? 0 : intval($arearow['noWeight']) / 1000; if ($weight <= $rateweight) { if ($weight <= $noweight && $noweight > 0) { $shipfee = $arearow['unitprice'] * $noweight + $arearow['handlefee']; } else { $shipfee = $arearow['unitprice'] * $weight + $arearow['handlefee']; } $totalfee = $shipfee; if ($rate1 > 0) { $shipfee = $shipfee * $rate1; $rate = $rate1; } } else { $shipfee = $arearow['unitprice'] * $weight + $arearow['handlefee']; $totalfee = $shipfee; if ($rate2 > 0) { $shipfee = $shipfee * $rate2; $rate = $rate2; } } return array('discount' => $rate, 'fee' => $shipfee, 'totalfee' => $totalfee); }