使用RestTemplate的postForObject方法直接傳遞對象

用戶支付成功後,我們要向中間商的系統打款,【訂單支付成功接口】請求內部的【消息推送接口】,通過Rabbitmq消息通知中間商的系統,他們返回打款是否成功,這裏展示的是【訂單支付成功接口】向【消息推送接口】的請求。

@RequestBody這個註解很重要,一定要加這個註解,否則請用戶求對象huaBoOrderPushRequest對象的字段都爲null。

【消息推送接口】

/**
 * @author johny
 * @date 2020/5/13
 */
@RestController
@RequestMapping("/order")
@Slf4j
public class OrderController {
    @Autowired
    private OrderService orderService;
    @Autowired
    private RabbitTemplate rabbitTemplate;
    @PostMapping("/push")
    public ResultData updateOrderStatus(@RequestBody HuaBoOrderPushRequest huaBoOrderPushRequest){
        HuaBoOrderPushDomainFactory huaBoOrderPushDomainFactory = new  HuaBoOrderPushDomainFactory();
        HuaBoOrderPushDomain huaBoOrderPushDomain = huaBoOrderPushDomainFactory.compose(huaBoOrderPushRequest);
        try {
            orderService.updateOrderByHuaBoOrderPush(huaBoOrderPushDomain);
        }catch (Exception e){
            log.error("更改訂單支付狀態失敗:",e);
            return ResultData.getFailResult(e.getMessage());
        }
        return ResultData.getSuccessResult();
    }
}

【訂單支付成功接口】

@Autowired
    RestTemplate restTemplate;

    /**
     * 主訂單號	orderId
     * 客戶訂單號	outTradeId
     * 訂單狀態	orderStatus
     * 錯誤消息	cause
     * 簽名	sign
     */
    public ResultData orderPush(HuaboOrderPushRequest huaboOrderPushRequest) throws MalformedURLException {
        ......

        ResponseEntity<ResultData> resp = restTemplate.postForEntity(PropertyUtil.getProperty("huabo.order.push"), huaboOrderPushRequest, ResultData.class);

        return resp.getBody();
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章