document
API test

获取运费信息

POST

Description or Example

# 核心代码 ```java @FeignClient("bitmall-member") public interface MemberService { /** * 通过地址ID, 获取用户的地址信息 * @param id * @return */ @RequestMapping("/member/memberreceiveaddress/info/{id}") R info(@PathVariable("id") Long id); } ``` ```java /** * 通过用户的地址, 计算邮费 * @param addrId * @return */ @GetMapping("/fare") public R getFare(@RequestParam Long addrId) { FareVO fareVO = wareInfoService.getFare(addrId); return R.ok().setData(fareVO); } ``` ```java @Override public FareVO getFare(Long addrId) { // 这里不需要异步编排, 因为虽然调用了远程微服务, 但是其他操作并没有非常耗时, 几乎是一瞬间执行完的, 因此, 异步编排反而会拖累系统, // 复杂度更高 // 0. 封装目标对象 FareVO fareVO = new FareVO(); // 1. 通过地址Id获取用户地址 R info = memberService.info(addrId); MemberAddressVO addressVO = info.getData("memberReceiveAddress", new TypeReference<MemberAddressVO>() {}); fareVO.setMemberAddressVO(addressVO); fareVO.setFare(RandomUtil.randomBigDecimal(new BigDecimal("0.01"), new BigDecimal("100.00"))); return fareVO; } ``` # 知识点 ## 为什么跨过了Memeber, 先访问Ware呢? > 这个问题很抽象, 即为什么不直接访问Member微服务获取地址信息, 而去访问Ware微服务, 然后远程调用, 因为, 如果我们想要做运费信息, 我们肯定需要知道来源地和目的地, 因此调用Ware没有问题 > 但是, 我们并没有真正的去写计算运费的代码, 只是简单的弄了一个随机数来替代, 相关的代码以后完善 ## 获取价格存在的问题 > 这里获取运费是通过随机值的, 因此每次获取的运费都不一样, 以至于比价的时候出现问题