You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

4.7 KiB

价格计算系统说明

概述

本系统实现了基于当前地址、日期、宠物类型等因素的智能价格计算功能,所有价格计算结果均保留2位小数。

核心功能

1. 价格计算器 (PriceCalculator)

位置:utils/priceCalculator.js

主要功能:

  • 根据地址自动识别城市并应用相应价格倍率
  • 根据日期类型(节假日/周末/普通日)计算不同价格
  • 支持会员折扣计算
  • 支持套餐免费额度计算
  • 支持多次服务费用计算
  • 支持定制服务费用计算

2. 价格配置管理

位置:pages/priceConfig.vue (后台管理页面)

配置项包括:

  • 基础价格配置(普通/节假日/周末)
  • 会员折扣配置(新晋家长/普卡/银卡/金卡)
  • 提前熟悉费用配置
  • 多次服务费用配置
  • 宠物额外费用配置
  • 套餐免费额度配置
  • 节假日配置
  • 城市差异化配置

使用方法

1. 初始化价格计算器

import PriceCalculator from '@/utils/priceCalculator.js'

// 使用默认配置
const priceCalculator = new PriceCalculator()

// 使用自定义配置
const customConfig = {
  basePrice: {
    normal: 80,
    holiday: 90,
    weekend: 85
  },
  // ... 其他配置
}
const priceCalculator = new PriceCalculator(customConfig)

2. 计算订单总价

const orderData = {
  needPreFamiliarize: ['需要提前熟悉'],
  pets: [
    {
      petId: 1,
      serviceDate: '2024-01-15',
      name: '小白',
      petType: 'cat',
      bodyType: '小型',
      feedCount: 2,
      customServices: [
        { name: '梳毛服务', price: 20, quantity: 1 }
      ]
    }
  ]
}

const userAddress = '北京市朝阳区某某街道'
const memberLevel = 'silver'

const result = priceCalculator.calculateOrderTotal(orderData, userAddress, memberLevel)

console.log('订单总价:', result.totalWithDiscount)
console.log('城市倍率:', result.cityRate)
console.log('会员折扣:', result.memberDiscount)

3. 计算单日价格

const pets = [/* 宠物数据 */]
const dateString = '2024-01-15'
const feedCount = 2
const customServices = [/* 定制服务数据 */]

const dailyPrice = priceCalculator.calculateDailyPrice(pets, dateString, feedCount, customServices)

console.log('基础服务费用:', dailyPrice.baseServiceCost)
console.log('宠物额外费用:', dailyPrice.petExtraCost)
console.log('多次服务费用:', dailyPrice.multiServiceCost)
console.log('定制服务费用:', dailyPrice.customServiceCost)
console.log('免费额度:', dailyPrice.freeQuota)
console.log('总价:', dailyPrice.totalOriginalPrice)

4. 获取价格明细

const priceDetails = priceCalculator.getPriceDetails(orderData, userAddress, memberLevel)

console.log('价格明细:', priceDetails.priceDetails)
console.log('城市倍率:', priceDetails.cityRate)
console.log('会员等级:', priceDetails.memberLevel)

价格计算规则

1. 基础价格

  • 普通日:75元
  • 周末:80元
  • 节假日:85元

2. 城市价格倍率

  • 北京:1.2倍
  • 上海:1.15倍
  • 广州:1.1倍
  • 深圳:1.15倍
  • 其他城市:1.0倍

3. 会员折扣

  • 新晋家长:9.5折
  • 普卡会员:9折
  • 银卡会员:8.8折
  • 金卡会员:8.5折

4. 宠物额外费用

  • 大型犬:40元
  • 中型犬:30元
  • 小型犬:15元
  • 猫:10元

5. 多次服务费用

  • 一天两次:45元
  • 一天三次:130元

6. 套餐免费额度

  • 3只及以上猫:免费30元
  • 2只及以上小型犬:免费30元
  • 1只及以上中型犬:免费30元
  • 混合类型(1猫1小型犬):免费25元

7. 提前熟悉费用

  • 基础价格:40元
  • 节假日倍率:1.2倍

前端集成

1. serviceNew2.vue

  • 使用价格计算器计算订单总价
  • 在日期选择界面显示会员折扣后价格
  • 支持实时价格更新

2. confirmOrder.vue

  • 使用价格计算器计算最终订单价格
  • 显示详细的价格明细
  • 支持优惠券和会员折扣叠加

后台管理

1. 价格配置管理页面

  • 支持所有价格参数的配置
  • 支持节假日日期配置
  • 支持城市价格倍率配置
  • 支持免费规则配置

2. API接口

  • getPriceConfig(): 获取价格配置
  • savePriceConfig(): 保存价格配置
  • updatePriceConfig(): 更新价格配置
  • calculateOrderPrice(): 计算订单价格

注意事项

  1. 所有价格计算结果均保留2位小数
  2. 城市识别基于地址字符串匹配
  3. 节假日配置支持后台动态管理
  4. 会员折扣和城市倍率可以叠加使用
  5. 套餐免费额度按规则优先级计算

扩展功能

  1. 支持更多城市的价格倍率配置
  2. 支持更复杂的会员等级体系
  3. 支持季节性价格调整
  4. 支持特殊活动价格优惠
  5. 支持批量价格计算