package com.ruoyi.account.api.feignClient; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.api.dto.VinManagementQueryDTO; import com.ruoyi.account.api.factory.VinManagementFallbackFactory; import com.ruoyi.account.api.model.TVinManagement; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.math.BigDecimal; import java.util.List; /** * VIN 管理内部服务 */ @FeignClient(contextId = "VinManagementClient", value = ServiceNameConstants.ACCOUNT_SERVICE, fallbackFactory = VinManagementFallbackFactory.class) public interface VinManagementClient { @GetMapping("/t-vin-management/inner/ids-by-app-user") R> getVinIdsByAppUserId(@RequestParam("appUserId") Long appUserId); /** * 根据VIN码查询未删除的VIN记录(订单侧VIN鉴权使用) */ @GetMapping("/t-vin-management/inner/get-by-vin") R getVinByCode(@RequestParam("vin") String vin); /** * 根据VIN记录ID批量查询(订单侧列表/详情回填VIN码、车牌号、手机号使用) */ @PostMapping("/t-vin-management/inner/list-by-ids") R> getVinByIds(@RequestBody List ids); /** * 按车队分页查询VIN码车辆(车队管理-查看车队抽屉使用,query.fleetId 必须传入) */ @PostMapping("/t-vin-management/inner/page-by-fleet") R> getVinPageByFleet(@RequestBody VinManagementQueryDTO query); /** * 按公司查询未删除的VIN码列表(公司详情-充电用户信息聚合使用) */ @GetMapping("/t-vin-management/inner/list-by-company") R> listByCompany(@RequestParam("companyId") Integer companyId); /** * 按车队统计未删除的VIN车辆数(车队管理-列表"VIN码车辆数"使用) */ @GetMapping("/t-vin-management/inner/count-by-fleet") R countByFleet(@RequestParam("fleetId") Integer fleetId); /** * 锁定VIN余额(VIN码充电申请,分配模式,按「余额-锁定金额」条件更新,余额不足返回失败;返回锁定后剩余可用金额) */ @PostMapping("/t-vin-management/inner/lock-balance") R lockBalance(@RequestParam("vinId") Long vinId, @RequestParam("amount") BigDecimal amount); /** * 结算VIN余额(解锁锁定额并按实际消费扣减,允许扣成负数;返回扣减后余额) *

订单号非空时按订单号幂等(同事务写消费流水),补偿重试不会重复结算

*/ @PostMapping("/t-vin-management/inner/settle-balance") R settleBalance(@RequestParam("vinId") Long vinId, @RequestParam("lockedAmount") BigDecimal lockedAmount, @RequestParam("actualAmount") BigDecimal actualAmount, @RequestParam(value = "orderCode", required = false) String orderCode, @RequestParam(value = "userInfo", required = false) String userInfo, @RequestParam(value = "userName", required = false) String userName, @RequestParam(value = "remark", required = false) String remark); /** * 释放VIN锁定金额(未产生消费时使用,返回释放后余额) */ @PostMapping("/t-vin-management/inner/unlock-balance") R unlockBalance(@RequestParam("vinId") Long vinId, @RequestParam("amount") BigDecimal amount); }