濟(jì)同城平臺,服務(wù)報價管理功能實(shí)現(xiàn))
低空經(jīng)濟(jì)同城平臺服務(wù)報價管理功能實(shí)現(xiàn)同城低空平臺的航拍、巡檢、植保等服務(wù)非標(biāo)屬性很強(qiáng)計價維度包含作業(yè)類型、機(jī)型、空域等級、作業(yè)面積、時長、后期剪輯、加急溢價等不能直接復(fù)用同城配送簡單計價邏輯。報價管理模塊負(fù)責(zé)套餐維護(hù)、計價規(guī)則配置、訂單預(yù)估價計算、價格明細(xì)留存、飛手改價管控向上給小程序預(yù)約提供實(shí)時報價向下對接訂單、空域、結(jié)算模塊保證價格透明、可審計、規(guī)則可動態(tài)調(diào)整。本文基于SpringBoot講解整套落地實(shí)現(xiàn)方案。后端技術(shù)棧SpringBoot MyBatis-Plus Redis RabbitMQ報價模塊獨(dú)立封裝為price-service對外提供預(yù)估價接口供C端預(yù)約、后臺下單、飛手接單頁面調(diào)用。MySQL存儲套餐、計價因子、附加項(xiàng)配置Redis緩存套餐與價格規(guī)則MQ用于報價記錄異步歸檔。整體業(yè)務(wù)流程用戶在小程序選擇服務(wù)類型、機(jī)型標(biāo)記作業(yè)區(qū)域填寫作業(yè)時長、是否加急、是否需要后期后端讀取對應(yīng)的基礎(chǔ)套餐價格疊加空域附加費(fèi)、差旅費(fèi)、加急費(fèi)、后期制作費(fèi)同時匹配片區(qū)浮動系數(shù)算出預(yù)估總價并拆解明細(xì)生成訂單后價格快照存入訂單飛手端支持在平臺限額內(nèi)微調(diào)報價超出閾值需要管理員審批訂單結(jié)算時以確認(rèn)報價為準(zhǔn)所有計價因子、計算明細(xì)存檔用于對賬與糾紛核驗(yàn)。下面是報價計算、套餐規(guī)則查詢核心Java示例代碼Service public class DronePriceService { Autowired private PricePackageMapper pricePackageMapper; private PriceExtraItemMapper priceExtraItemMapper; Autowired private RedisTemplateString,Object redisTemplate; /** * 訂單報價統(tǒng)一計算入口 */ public ResultDTOPriceVO calculatePrice(PriceQueryDTO dto){ // 讀取套餐緩存 String pkgKey price:pkg: dto.getPackageId(); PricePackageDTO pkg (PricePackageDTO) redisTemplate.opsForValue().get(pkgKey); if(pkg null){ pkg pricePackageMapper.selectById(dto.getPackageId()); redisTemplate.opsForValue().set(pkgKey, pkg, 30, TimeUnit.MINUTES); } if(pkg null || pkg.getStatus() ! 1){ return ResultDTO.fail(套餐不存在或已下架); } BigDecimal basePrice pkg.getBasePrice(); // 片區(qū)浮動系數(shù) BigDecimal areaRate dto.getAreaRate() null ? BigDecimal.ONE : dto.getAreaRate(); // 加急系數(shù)、后期費(fèi)用、空域附加費(fèi) BigDecimal rushRate dto.getIsRush() ? new BigDecimal(1.3) : BigDecimal.ONE; BigDecimal airspaceFee dto.getAirspaceLevel() 2 ? new BigDecimal(150) : BigDecimal.ZERO; BigDecimal editFee dto.getNeedEdit() ? pkg.getEditFee() : BigDecimal.ZERO; // 基礎(chǔ)價格計算 BigDecimal total basePrice.multiply(areaRate).multiply(rushRate).add(airspaceFee).add(editFee); // 最低價格兜底 if(total.compareTo(pkg.getFloorPrice()) 0){ total pkg.getFloorPrice(); } PriceVO vo new PriceVO(); vo.setBasePrice(basePrice); vo.setAreaRate(areaRate); vo.setRushRate(rushRate); vo.setAirspaceFee(airspaceFee); vo.setEditFee(editFee); vo.setTotalPrice(total); // 保存報價快照 savePriceSnapshot(dto, vo); return ResultDTO.success(vo); } /** * 異步保存報價快照用于訂單溯源對賬 */ private void savePriceSnapshot(PriceQueryDTO query, PriceVO vo){ PriceSnapshot snapshot new PriceSnapshot(); snapshot.setOrderId(query.getOrderId()); snapshot.setPackageId(query.getPackageId()); snapshot.setPriceDetail(JSONUtil.toJsonStr(vo)); snapshot.setCreateTime(LocalDateTime.now()); priceSnapshotMapper.insert(snapshot); } }套餐與計價因子模型設(shè)計后臺可以維護(hù)多套標(biāo)準(zhǔn)化套餐區(qū)分房產(chǎn)航拍、風(fēng)光航拍、電力巡檢、農(nóng)田植保、熱成像檢測。每個套餐綁定基礎(chǔ)計價方式支持按次、按小時、按面積三種模式。計價因子拆分為獨(dú)立配置項(xiàng)片區(qū)溢價系數(shù)、夜間作業(yè)系數(shù)、加急系數(shù)、空域報備服務(wù)費(fèi)、差旅費(fèi)、后期剪輯費(fèi)、LiDAR特殊設(shè)備附加費(fèi)。因子配置化之后運(yùn)營在后臺調(diào)整數(shù)值即可改價不需要修改代碼上線。同時配置每個套餐的底價防止疊加折扣后價格過低。附加費(fèi)用與差異化定價邏輯低空業(yè)務(wù)很多額外成本和空域、地點(diǎn)強(qiáng)綁定。管制空域會產(chǎn)生報備材料、人工對接成本單獨(dú)收取空域服務(wù)費(fèi)偏遠(yuǎn)點(diǎn)位增加跨區(qū)域差旅費(fèi)夜間、應(yīng)急加急訂單設(shè)置上浮系數(shù)大型測繪、高精度建模根據(jù)精度等級、作業(yè)面積階梯計價。旺季、節(jié)假日可以開啟全局浮動系數(shù)淡季可以配置優(yōu)惠折扣。所有附加項(xiàng)在前端展示明細(xì)用戶下單時清楚每一筆費(fèi)用構(gòu)成減少價格糾紛。飛手改價與審批管控平臺支持飛手自主報價或者對預(yù)估價微調(diào)同時設(shè)置價格上下浮動閾值。比如允許在預(yù)估價格±15%內(nèi)直接修改超出范圍的調(diào)價需要提交后臺人工審批。審批流會記錄調(diào)價原因、新舊價格、操作人審批記錄和報價快照一起存入訂單。這種模式兼顧標(biāo)準(zhǔn)化套餐下單和非標(biāo)定制項(xiàng)目適合大型測繪、長期巡檢項(xiàng)目。報價快照與對賬機(jī)制每次調(diào)用報價接口都會生成一條報價快照記錄保存當(dāng)時所有因子、系數(shù)、明細(xì)和總價??煺罩蛔芳硬桓戮退愫罄m(xù)套餐規(guī)則修改歷史訂單依然保留當(dāng)時的價格版本。訂單溯源模塊關(guān)聯(lián)報價快照用戶對費(fèi)用產(chǎn)生異議時可以直接調(diào)取快照復(fù)現(xiàn)當(dāng)時的計算邏輯。結(jié)算、分傭都以訂單確認(rèn)快照為準(zhǔn)避免規(guī)則迭代造成歷史訂單結(jié)算錯亂。緩存與并發(fā)優(yōu)化套餐基礎(chǔ)信息、計價因子屬于熱點(diǎn)配置統(tǒng)一放入Redis緩存后臺修改配置后主動清除緩存實(shí)時生效。報價計算屬于輕量計算不依賴復(fù)雜數(shù)據(jù)庫多表聯(lián)查小程序預(yù)約頁面可以快速返回預(yù)估價格。報價快照寫入采用MQ異步落庫不阻塞前端預(yù)估價響應(yīng)鏈路提升用戶下單體驗(yàn)。聯(lián)動上下游業(yè)務(wù)模塊報價模塊依賴空域預(yù)約模塊返回空域等級自動判斷是否疊加空域附加費(fèi)報價結(jié)果隨訂單推送至飛手調(diào)度飛手接單頁面展示價格明細(xì)資質(zhì)核驗(yàn)?zāi)K不直接參與計價但特種資質(zhì)對應(yīng)的高端機(jī)型套餐和計價規(guī)則綁定訂單支付、分傭結(jié)算讀取訂單內(nèi)的報價快照平臺傭金、飛手分成基于確認(rèn)總價計算。異常場景處理作業(yè)中途用戶提出增加拍攝內(nèi)容、延長飛行時長系統(tǒng)生成增項(xiàng)報價單用戶確認(rèn)之后更新訂單價格快照空域?qū)徟∪∠唵螆髢r快照保留用于統(tǒng)計分析片區(qū)臨時管制后臺一鍵調(diào)整該片區(qū)浮動系數(shù)新預(yù)約訂單自動使用新價格套餐下架之后已經(jīng)下單在履約中的訂單不受影響沿用下單時的快照價格。權(quán)限與數(shù)據(jù)隔離普通用戶只能查看自己訂單的報價明細(xì)飛手只能查看自己承接訂單的價格不能查看其他飛手報價管理員擁有套餐、計價因子、審批記錄全部權(quán)限。報價記錄支持按時間段、服務(wù)類型、片區(qū)導(dǎo)出報表統(tǒng)計不同業(yè)務(wù)線客單價、溢價占比輔助運(yùn)營調(diào)整套餐定價策略。報價管理模塊的核心價值是把低空非標(biāo)服務(wù)的成本要素抽象成可配置因子在標(biāo)準(zhǔn)化套餐和飛手自主報價之間找到平衡既滿足C端用戶快速預(yù)約下單也適配大型測繪、巡檢項(xiàng)目的定制報價需求同時用快照機(jī)制保證價格可追溯和空域預(yù)約、飛手調(diào)度、資質(zhì)核驗(yàn)?zāi)K共同形成交易閉環(huán)。