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.

194 lines
4.7 KiB

  1. # 价格计算系统说明
  2. ## 概述
  3. 本系统实现了基于当前地址、日期、宠物类型等因素的智能价格计算功能,所有价格计算结果均保留2位小数。
  4. ## 核心功能
  5. ### 1. 价格计算器 (PriceCalculator)
  6. 位置:`utils/priceCalculator.js`
  7. 主要功能:
  8. - 根据地址自动识别城市并应用相应价格倍率
  9. - 根据日期类型(节假日/周末/普通日)计算不同价格
  10. - 支持会员折扣计算
  11. - 支持套餐免费额度计算
  12. - 支持多次服务费用计算
  13. - 支持定制服务费用计算
  14. ### 2. 价格配置管理
  15. 位置:`pages/priceConfig.vue` (后台管理页面)
  16. 配置项包括:
  17. - 基础价格配置(普通/节假日/周末)
  18. - 会员折扣配置(新晋家长/普卡/银卡/金卡)
  19. - 提前熟悉费用配置
  20. - 多次服务费用配置
  21. - 宠物额外费用配置
  22. - 套餐免费额度配置
  23. - 节假日配置
  24. - 城市差异化配置
  25. ## 使用方法
  26. ### 1. 初始化价格计算器
  27. ```javascript
  28. import PriceCalculator from '@/utils/priceCalculator.js'
  29. // 使用默认配置
  30. const priceCalculator = new PriceCalculator()
  31. // 使用自定义配置
  32. const customConfig = {
  33. basePrice: {
  34. normal: 80,
  35. holiday: 90,
  36. weekend: 85
  37. },
  38. // ... 其他配置
  39. }
  40. const priceCalculator = new PriceCalculator(customConfig)
  41. ```
  42. ### 2. 计算订单总价
  43. ```javascript
  44. const orderData = {
  45. needPreFamiliarize: ['需要提前熟悉'],
  46. pets: [
  47. {
  48. petId: 1,
  49. serviceDate: '2024-01-15',
  50. name: '小白',
  51. petType: 'cat',
  52. bodyType: '小型',
  53. feedCount: 2,
  54. customServices: [
  55. { name: '梳毛服务', price: 20, quantity: 1 }
  56. ]
  57. }
  58. ]
  59. }
  60. const userAddress = '北京市朝阳区某某街道'
  61. const memberLevel = 'silver'
  62. const result = priceCalculator.calculateOrderTotal(orderData, userAddress, memberLevel)
  63. console.log('订单总价:', result.totalWithDiscount)
  64. console.log('城市倍率:', result.cityRate)
  65. console.log('会员折扣:', result.memberDiscount)
  66. ```
  67. ### 3. 计算单日价格
  68. ```javascript
  69. const pets = [/* 宠物数据 */]
  70. const dateString = '2024-01-15'
  71. const feedCount = 2
  72. const customServices = [/* 定制服务数据 */]
  73. const dailyPrice = priceCalculator.calculateDailyPrice(pets, dateString, feedCount, customServices)
  74. console.log('基础服务费用:', dailyPrice.baseServiceCost)
  75. console.log('宠物额外费用:', dailyPrice.petExtraCost)
  76. console.log('多次服务费用:', dailyPrice.multiServiceCost)
  77. console.log('定制服务费用:', dailyPrice.customServiceCost)
  78. console.log('免费额度:', dailyPrice.freeQuota)
  79. console.log('总价:', dailyPrice.totalOriginalPrice)
  80. ```
  81. ### 4. 获取价格明细
  82. ```javascript
  83. const priceDetails = priceCalculator.getPriceDetails(orderData, userAddress, memberLevel)
  84. console.log('价格明细:', priceDetails.priceDetails)
  85. console.log('城市倍率:', priceDetails.cityRate)
  86. console.log('会员等级:', priceDetails.memberLevel)
  87. ```
  88. ## 价格计算规则
  89. ### 1. 基础价格
  90. - 普通日:75元
  91. - 周末:80元
  92. - 节假日:85元
  93. ### 2. 城市价格倍率
  94. - 北京:1.2倍
  95. - 上海:1.15倍
  96. - 广州:1.1倍
  97. - 深圳:1.15倍
  98. - 其他城市:1.0倍
  99. ### 3. 会员折扣
  100. - 新晋家长:9.5折
  101. - 普卡会员:9折
  102. - 银卡会员:8.8折
  103. - 金卡会员:8.5折
  104. ### 4. 宠物额外费用
  105. - 大型犬:40元
  106. - 中型犬:30元
  107. - 小型犬:15元
  108. - 猫:10元
  109. ### 5. 多次服务费用
  110. - 一天两次:45元
  111. - 一天三次:130元
  112. ### 6. 套餐免费额度
  113. - 3只及以上猫:免费30元
  114. - 2只及以上小型犬:免费30元
  115. - 1只及以上中型犬:免费30元
  116. - 混合类型(1猫1小型犬):免费25元
  117. ### 7. 提前熟悉费用
  118. - 基础价格:40元
  119. - 节假日倍率:1.2倍
  120. ## 前端集成
  121. ### 1. serviceNew2.vue
  122. - 使用价格计算器计算订单总价
  123. - 在日期选择界面显示会员折扣后价格
  124. - 支持实时价格更新
  125. ### 2. confirmOrder.vue
  126. - 使用价格计算器计算最终订单价格
  127. - 显示详细的价格明细
  128. - 支持优惠券和会员折扣叠加
  129. ## 后台管理
  130. ### 1. 价格配置管理页面
  131. - 支持所有价格参数的配置
  132. - 支持节假日日期配置
  133. - 支持城市价格倍率配置
  134. - 支持免费规则配置
  135. ### 2. API接口
  136. - `getPriceConfig()`: 获取价格配置
  137. - `savePriceConfig()`: 保存价格配置
  138. - `updatePriceConfig()`: 更新价格配置
  139. - `calculateOrderPrice()`: 计算订单价格
  140. ## 注意事项
  141. 1. 所有价格计算结果均保留2位小数
  142. 2. 城市识别基于地址字符串匹配
  143. 3. 节假日配置支持后台动态管理
  144. 4. 会员折扣和城市倍率可以叠加使用
  145. 5. 套餐免费额度按规则优先级计算
  146. ## 扩展功能
  147. 1. 支持更多城市的价格倍率配置
  148. 2. 支持更复杂的会员等级体系
  149. 3. 支持季节性价格调整
  150. 4. 支持特殊活动价格优惠
  151. 5. 支持批量价格计算