关于同类业务有多个分支的接口设计
同业务多分支的接口设计
场景说明
比如处于下游的系统,在接收源系统的计划订单的时候,因订单的种类比较多,例如:采购订单、销售订单、调拨订单、预售订单等待,如果这些订单的差异比较大,需要分开建多个表,这样后台接口就需要设计一番了。
下面就按步骤直接贴代码案例
第一步: 创建一个接口,定义接收订单的方法;
public interface OrderRepeaterServiceI {
为清苑等地区用户提供了全套网页设计制作服务,及清苑网站建设行业解决方案。主营业务为网站建设、做网站、清苑网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
Result receiveOrder(ReceiveProductOrder order);
}
第二步: 定义接口的实现类,2个@Service
br/>@Service
br/>@Override
System.out.println("采购订单执行分支...");
return null;
}
@Service
public class SaleOrderServiceImpl implements OrderRepeaterServiceI {@Override
br/>@Override
System.out.println("销售订单执行分支...");
return null;
}
}
第三步: 定义分发器服务@Service
br/>@Service
@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("成功");
}
}
第四步: 定义接收源系统的控制器@Controller
br/>@Controller
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("测试异常");
}
}
}
文章名称:关于同类业务有多个分支的接口设计
文章网址:http://pwwzsj.com/article/iicjcs.html