|
|
@@ -385,16 +385,21 @@ func (s *VehicleService) calculateFee(vehicle *dao.Vehicle, stayTime int64) floa
|
|
|
// 1. 根据车辆类型ID获取收费配置(唯一)
|
|
|
var feeConfig dao.FeeConfig
|
|
|
if err := global.GVA_DB.Where("vehicle_type_id = ?", vehicle.VehicleTypeID).First(&feeConfig).Error; err != nil {
|
|
|
- // 无配置 → 默认计费
|
|
|
+ // 无配置 → 默认计费:0.1元/分钟
|
|
|
+ return float64(stayTime) * 0.1
|
|
|
+ }
|
|
|
+ // 配置存在但全为 0 → 同样回退默认费率
|
|
|
+ if feeConfig.UnitFee == 0 && feeConfig.StartFee == 0 && feeConfig.DailyMaxFee == 0 {
|
|
|
return float64(stayTime) * 0.1
|
|
|
}
|
|
|
|
|
|
- // 2. 判断VIP有效性
|
|
|
+ // 2. 判断VIP有效性(必须IsVip=true、过期时间未到、且过期时间非零值)
|
|
|
isVIP := false
|
|
|
if vehicle.OwnerId != nil {
|
|
|
var owner dao.Owner
|
|
|
if err := global.GVA_DB.First(&owner, *vehicle.OwnerId).Error; err == nil {
|
|
|
- isVIP = owner.IsVip && time.Now().Before(owner.VipExpireTime)
|
|
|
+ now := time.Now()
|
|
|
+ isVIP = owner.IsVip && owner.VipExpireTime.After(now) && !owner.VipExpireTime.IsZero()
|
|
|
}
|
|
|
}
|
|
|
|