1.前台controller
@Controller
@RequestMapping("/order")
public class OrderController {
@Autowired
private CartService cartService;
//http://www.jt.com/order/create.html
@RequestMapping("/create")
public String create(Model model){
Long userId = UserThreadLocal.get().getId();
//获取用户的购物信息
List<Cart> carts = cartService.findCartByUserId(userId);
model.addAttribute("carts", carts);
return "order-cart";
}
}
一、订单入库:
1.前台controller
@RequestMapping("/submit")
@ResponseBody
public SysResult saveOrder(Order order){
try {
//获取userId
Long userId = UserThreadLocal.get().getId();
order.setUserId(userId);
String orderId = orderService.saveOrder(order);
return SysResult.oK(orderId);
} catch (Exception e) {
e.printStackTrace();
}
return SysResult.build(201,"订单入库失败");
}
2.前台service
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
private HttpClientService httpClient;
private static ObjectMapper objectMapper= new ObjectMapper();
@Override
public String saveOrder(Order order) {
String orderId = null;
try {
String orderJSON = objectMapper.writeValueAsString(order);
String uri = "http://order.jt.com/order/create";
Map<String,String> params = new HashMap<String, String>();
params.put("orderJSON", orderJSON);
//获取后台返回值json数据
String jsonData = httpClient.doPost(uri,params);
SysResult sysResult = objectMapper.readValue(jsonData, SysResult.class);
if(sysResult.getStatus() !=200){
//后台操作有误
throw new RuntimeException();
}
orderId = (String) sysResult.getData();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
}
return orderId;
}
}
3.后台controller
@Controller
@RequestMapping("/order")
public class OrderController {
@Autowired
private OrderService orderService;
private static ObjectMapper objectMapper = new ObjectMapper();
@RequestMapping("/create")
@ResponseBody
public SysResult saveOrder(String orderJSON){
try {
Order order = objectMapper.readValue(orderJSON, Order.class);
String orderId = orderService.saveOrder(order);
return SysResult.oK(orderId);
} catch (Exception e) {
e.printStackTrace();
}
return SysResult.build(201,"订单添加失败");
}
}
4.后台service
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private OrderItemMapper orderItemMapper;
@Autowired
private OrderShippingMapper orderShippingMapper;
@Override
public String saveOrder(Order order) {
String orderId = order.getUserId()+""+System.currentTimeMillis();
Date date = new Date();
//1.入库order表
order.setOrderId(orderId);
order.setStatus(1); //表示未付款
order.setCreated(date);
order.setUpdated(date);
orderMapper.insert(order);
System.out.println("订单表入库成功!!!");
//入库订单物流信息
OrderShipping shipping = order.getOrderShipping();
shipping.setOrderId(orderId);
shipping.setCreated(date);
shipping.setUpdated(date);
orderShippingMapper.insert(shipping);
System.out.println("订单物流入库成功!!!");
//订单商品入库 insert into 表名(....字段名) value(....),(.....),(.....)
List<OrderItem> orderItems = order.getOrderItems();
//orderItemMapper.saveItems(orderItems,orderId);
for (OrderItem orderItem : orderItems) {
orderItem.setOrderId(orderId);
orderItem.setCreated(date);
orderItem.setUpdated(date);
orderItemMapper.insert(orderItem);
}
System.out.println("订单入库全部成功!!");
return orderId;
}
}
mybatis实现批量入库
<insert>
insert into
tb_order_item(item_id,order_id)
values
<foreach collection="orderItems" open="(" close=")" separator="," item="item">
#{item.item_id},#{order_id}
</foreach>
</insert>
前台js
function submit_Order() {
$("#submit_message").hide();
jQuery.ajax( {
type : "POST",
dataType : "json",
url : "/service/order/submit",
data : $("#orderForm").serialize(),
cache : false,
success : function(result) {
if(result.status == 200){
location.href = "/order/success.html?id="+result.data;
}else{
$("#submit_message").html("订单提交失败,请稍后重试...").show();
}
},
error : function(error) {
$("#submit_message").html("请不要频繁点击, 请稍后重试...").show();
}
});
}
二、订单查询
1.前台controller
//根据orderId查询数据库
@RequestMapping("/success")
public String findOrderById(String id,Model model){
Order order = orderService.findOrderById(id);
model.addAttribute("order", order);
return "success";
}
2.前台service
@Override
public Order findOrderById(String id) {
String uri = "http://order.jt.com/order/query/"+id;
String orderJSON = httpClient.doGet(uri);
Order order = null;
try {
order = objectMapper.readValue(orderJSON, Order.class);
} catch (Exception e) {
e.printStackTrace();
}
return order;
}
3.后台controller
@RequestMapping("/query/{orderId}")
@ResponseBody
public Order findOrderById(@PathVariable String orderId){
return orderService.findOrderById(orderId);
}
4.后台service
@Override
public Order findOrderById(String orderId) {
Order order = orderMapper.selectByPrimaryKey(orderId);
//查询订单的物流信息
OrderShipping shipping = orderShippingMapper.selectByPrimaryKey(orderId);
//查询orderItem数据
OrderItem orderItem = new OrderItem();
orderItem.setOrderId(orderId);
List<OrderItem> orderItems = orderItemMapper.select(orderItem);
order.setOrderShipping(shipping);
order.setOrderItems(orderItems);
return order;
}