package vehicle import ( "errors" "server/dao" "server/global" "server/model/vehicle/request" ) type feeConfigService struct{} func NewFeeConfigService() *feeConfigService { return &feeConfigService{} } // CreateFeeConfig 创建收费配置 func (s *feeConfigService) CreateFeeConfig(req request.FeeConfigCreate) error { // 检查车辆类型是否已存在 var existingConfig dao.FeeConfig result := global.GVA_DB.Where("vehicle_type = ?", req.VehicleType).First(&existingConfig) if result.RowsAffected > 0 { return errors.New("该车辆类型的收费配置已存在") } config := dao.FeeConfig{ VehicleType: req.VehicleType, StartTime: req.StartTime, StartFee: req.StartFee, UnitTime: req.UnitTime, UnitFee: req.UnitFee, DailyMaxFee: req.DailyMaxFee, IsVIPFree: req.IsVIPFree, VIPDiscount: req.VIPDiscount, Description: req.Description, } return global.GVA_DB.Create(&config).Error } // UpdateFeeConfig 更新收费配置 func (s *feeConfigService) UpdateFeeConfig(req request.FeeConfigUpdate) error { var config dao.FeeConfig result := global.GVA_DB.First(&config, req.ID) if result.RowsAffected == 0 { return errors.New("收费配置不存在") } // 检查车辆类型是否被其他配置使用 var existingConfig dao.FeeConfig result = global.GVA_DB.Where("vehicle_type = ? AND id != ?", req.VehicleType, req.ID).First(&existingConfig) if result.RowsAffected > 0 { return errors.New("该车辆类型的收费配置已存在") } config.VehicleType = req.VehicleType config.StartTime = req.StartTime config.StartFee = req.StartFee config.UnitTime = req.UnitTime config.UnitFee = req.UnitFee config.DailyMaxFee = req.DailyMaxFee config.IsVIPFree = req.IsVIPFree config.VIPDiscount = req.VIPDiscount config.Description = req.Description return global.GVA_DB.Save(&config).Error } // GetFeeConfigByID 根据ID获取收费配置 func (s *feeConfigService) GetFeeConfigByID(id uint) (dao.FeeConfig, error) { var config dao.FeeConfig result := global.GVA_DB.First(&config, id) if result.RowsAffected == 0 { return dao.FeeConfig{}, errors.New("收费配置不存在") } return config, nil } // GetFeeConfigByVehicleType 根据车辆类型获取收费配置 func (s *feeConfigService) GetFeeConfigByVehicleType(vehicleType string) (dao.FeeConfig, error) { var config dao.FeeConfig result := global.GVA_DB.Where("vehicle_type = ?", vehicleType).First(&config) if result.RowsAffected == 0 { return dao.FeeConfig{}, errors.New("收费配置不存在") } return config, nil } // ListFeeConfigs 获取收费配置列表 func (s *feeConfigService) ListFeeConfigs(req request.FeeConfigQuery) (int64, []dao.FeeConfig, error) { var configs []dao.FeeConfig var total int64 query := global.GVA_DB.Model(&dao.FeeConfig{}) if req.VehicleType != "" { query = query.Where("vehicle_type LIKE ?", "%"+req.VehicleType+"%") } // 计算总数 query.Count(&total) // 分页查询 offset := (req.Page - 1) * req.PageSize result := query.Offset(offset).Limit(req.PageSize).Find(&configs) if result.Error != nil { return 0, nil, result.Error } return total, configs, nil } // DeleteFeeConfig 删除收费配置 func (s *feeConfigService) DeleteFeeConfig(id uint) error { result := global.GVA_DB.Delete(&dao.FeeConfig{}, id) if result.RowsAffected == 0 { return errors.New("收费配置不存在") } return result.Error }