【客户下单】后台系统匹配分区关键字实现自动分单
2023-09-14 09:15:20 时间
【客户下单】后台系统基于分区关键字匹配实现自动分单
通过前端传递过来的”省市区”,找到区域,在通过区域找到分区,将客户发货地址与分区的关键字进行匹配,如果包含分区的关键字或辅助关键字,就通过分区找到定区,基于定区找到快递员,实现自动分单。
@Service
@Transactional
public class OrderServiceImpl implements OrderService{
@Autowired
private FixedAreaRepository fixedAreaRepository;
@Autowired
private OrderRepository orderRepository;
@Autowired
private AreaRepository areaRepository;
@Override
public void saveOrder(Order order){
//基于分区关键字匹配实现自动分单逻辑:通过省市区查询分区关键字,匹配地址,基于分区实现自动分单
//寄件人省市区
Area area = order.getSendArea();
Area persistArea = areaRepository.findByProvinceAndCityAndDistrict(area.getProvince(),area.getCity(),area.getDistrict());
for(SubArea subArea : persistArea.getSubareas()){
//当前客户的下单地址是否包含分区关键字
if(order.getSendAddress().contains(subArea.getKeyWords())){
//找到分区,找到定区,找到快递员
Iterator<Courier> iterator = subArea.getFixedArea().getCouriers().iterator();
if(iterator.hasNext()){
Courier courier = iterator.next();
if(courier!=null){
//自动分单成功
System.out.println("自动分单成功...");
saveOrder(order,courier);
return;
}
}
}
}
for(SubArea subArea : persistArea.getSubareas()){
//当前客户的下单地址是否包含分区辅助关键字
if(order.getSendAddress().contains(subArea.getAssistKeyWords())){
//找到分区,找到定区,找到快递员
Iterator<Courier> iterator = subArea.getFixedArea().getCouriers().iterator();
if(iterator.hasNext()){
Courier courier = iterator.next();
if(courier!=null){
//自动分单成功
System.out.println("自动分单成功...");
//将快递员关联到订单上
order.setCourier(courier);
//保存订单
order.setOrderNum(UUID.randomUUID().toString());//生成订单号
orderRepository.save(order);
return;
}
}
}
}
}
相关文章
- 手把手教你怎么实现一个后台管理系统——菜单权限篇(一)
- WordPress后台找回ICP备案号设置选项
- 禁用WordPress后台自动保存和修订版本的方法
- 如何做好一款管理后台框架
- 尚医通-后台接口
- 一个支持消息推送,文件管理,在线用户监控的后台权限管理系统来了
- 【Android 进程保活】Android 进程优先级 ( 前台进程 | 可见进程 | 服务进程 | 后台进程 | 空进程 )
- dedecms后台验证码显示不正常的四种处理办法详解程序员
- 用ABAP实现SM36的设置后台JOB详解编程语言
- 如何让 Linux 脚本在后台自动运行?(linux脚本后台运行)
- Dell大举收购Oracle,增强后台数据运营能力(dell收购oracle)
- 基于jquery实现后台左侧菜单点击上下滑动显示
- PHP自动生成后台导航网址的最佳方法
- js调用后台、后台调用前台等方法总结