關於同類業務有多個分支的接口設計

同業務多分支的接口設計

場景說明
好比處於下游的系統,在接收源系統的計劃訂單的時候,因訂單的種類比較多,例如:採購訂單、銷售訂單、調撥訂單、預售訂單等待,若是這些訂單的差別比較大,須要分開建多個表,這樣後臺接口就須要設計一番了。
下面就按步驟直接貼代碼案例
第一步: 建立一個接口,定義接收訂單的方法;
public interface OrderRepeaterServiceI {api

Result receiveOrder(ReceiveProductOrder order);

}app

第二步: 定義接口的實現類,2個br/>@Service
public class PurchaseOrderServiceImpl implements OrderRepeaterServiceI {br/>@Override
public Result receiveOrder(ReceiveProductOrder order) {
System.out.println("採購訂單執行分支...");
return null;
}ide

@Service
public class SaleOrderServiceImpl implements OrderRepeaterServiceI {br/>@Override
public Result receiveOrder(ReceiveProductOrder order) {
System.out.println("銷售訂單執行分支...");
return null;
}
}測試

第三步: 定義分發器服務br/>@Service
public class OrderRepeaterService {設計

@Resource
private OrderRepeaterServiceI purchaseOrderServiceImpl;

@Resource
private OrderRepeaterServiceI saleOrderServiceImpl;

public Result receiveOrder(String orderType, ReceiveProductOrder order) throws Exception {
    OrderRepeaterServiceI orderService = null;
    switch (orderType) {
        case "10" : orderService = purchaseOrderServiceImpl;break;
        case "20" : orderService = saleOrderServiceImpl;break;
    }
    if (orderService != null) {
        orderService.receiveOrder(order);
    } else {
        throw new RuntimeException("訂單類型未知異常.");
    }
    return Result.successWithData("成功");
}

}code

第四步: 定義接收源系統的控制器br/>@Controller
@RequestMapping(value = "/mtsapi")
public class OrderApiController {接口

private static final Logger logger = Logger.getLogger(OrderSapApiController.class);

@Resource
private OrderRepeaterService orderRepeaterService;

@RequestMapping(value = "/testService")
@ResponseBody
public Result testService(String orderType) {

    try {
        ReceiveProductOrder order = new ReceiveProductOrder();
        order.setOrderTypeCode("10");
        order.setRelatedDocCode("SO18031610001");
        return orderRepeaterService.receiveOrder(orderType, order);
    } catch (Exception e) {
        logger.error("接口測試異常.");
        return Result.errorWithData("測試異常");
    }
}

}get

相關文章
相關標籤/搜索