用了什么技术?
- 前端:Vue,AJAX
-后端:Servlet
MVC流程:客户端向服务端发送请求,首先经过前端控制器DispatcherServlet,利用反射机制,通过前端发送过来的地址,截取类名和方法名,通过Class.forName获取到类,再通过getMethod()和invoke()调用类中的方法,最后把json返回给前台 - Service事务管理:beginTransaction()开启事务,commitTransaction()提交事务
- JSON数据转换:用到jackson里面的objectMapper,通过里面的writerValueAsString()将结果集转成json格式返回给前端
这个项目有几张表,表之间有什么关联关系?
- 有 用户表,商家表,食品表,购物车表,订单表,订单明细表,配送信息表
- 数据库:一对多和多对一的映射
一对多体现在:一个商家有多个食品,一个订单有多个明细
多对一体现在:多个订单来自于同一个商家,多个购物车里有同一个食品,多个明细里面有同一个食品 - gitee:代码版本管理工具
后端核心业务
生成订单
1.通过商家Id,获取当前商家信息(businessDao.getBusinessById),
查询购物车列表listcart,获取到当前用户购物车中的数据(cartDao.listCart方法)
遍历ListCart,计算总价(数量*单价+配送费)
2.创建订单,返回订单的编号(ordersDao.createOrders())
3.将信息批量添加到订单明细表里
- 首先订单明细有很多条记录,是一个集合,
我们需要遍历ListCart,for循环里new一个订单明细对象,把属性加进去,最后都放到List集合里
最后((orderDetail.saveOrderDetail()))
如何批量添加:需要动态拼接sql "insert into orderDetail(orderId,foodId,quantity values)"
每遍历一次拿到一个明细
for(OrderDetail od:list){
sql.append("od.getOrderId()+"","+od.getFoodId()+'',"+od.getQuantity()+"),")
}
4.清空购物车removecart
跨域问题怎么解决的?
- 不符合同源策略:协议,ip,端口号有一个不一样就不同源
- 解决方式:后端在filter里用cors,配置请求头,让前后端请求地址一样