spring+springmvc+hibernate製作一個簡單的電商網站(4) 生成訂單
訂單流程很簡單,認真看就明白了。
一,生成訂單
電商網站大多數是在購物車中開始生成訂單的,當然也有一鍵生成訂單,這裡我們就說一下購物車中生成訂單的流程。
第一步:檢視購物車;
第二步:確認收貨地址;
第三步:生成訂單;
雖然看起來像廢話,但這個其實是三個介面。
上期講到了檢視購物車,現在說一下確認收貨地址:
@RequestMapping(value = "/xxx/xxx/goods_cart2")
public void goods_cart2(HttpServletRequest request, HttpServletResponse response, String store_id){
//這個介面中沒什麼特別注意的:首先需要使用者登陸,在查詢使用者填寫的預設地址,Address表,然後返回給前端就可以了。
}
下面的生成訂單比較主要
@RequestMapping(value = "/xxx/xxx/goods_cart3")
public void goods_cart3(HttpServletRequest request, HttpServletResponse response, String store_id, String addr_id){
//檢視使用者登陸時購物車裡面的資訊如果不為空
OrderForm of = new OrderForm();
//獲取到前端傳過來的資訊,生成訂單
of.setAddTime(new Date());
of.setOrder_id(user.getId() + Commutil.formatTime("yyyyMMddHHmmss", new Date()));//這裡使用的是使用者id + 自定義的時間格式當訂單號
Address addr = this.addressService.getObjById(Long.paserLong(addr_id));
of.setAddr(addr);
of.setOrder_status(10); //這裡要注意:需要確定訂單狀態,用不同的數字去表示,生成訂單10,待支付訂單20,支付成功的訂單20,賣家發貨的訂單30,買家收貨的訂單40,買家評價的訂單50,大概這些。
of.setUser(user);
of.setStore(this.storeService.getObjById(Long.paserLong(store_id));
of.setTotalPrice(//計算好數量與總價);
this.orderFormService.save(of);
//下面要注意,因為購物車中商品有的生成訂單了我們需要更新購物車了
GoodsCart gc;
for(StoreCart sc : cart //這個cart就是獲取的購物車資訊){
if(sc.getStore().getId().toString().equals(store_id)){
for(Iterator localIterator2 = sc.getGcs().iterator(); localIterator2.hasNext(); ){
gc = (GoodsCart)localIteratore2.next();
gc.setOf(of);
this.goodsCartService.update(gc);
}
sc.setUser(user);
sc.setSc_status(1);
this.storeCartService.update(sc);
break;
}
}
}
明天補上訂單列表