itemmodel中新增乙個
private promomodel promomodel;
並建立get set方法。
修改getitembyid方法
@override
public itemmodel getitembyid(integer id)
itemmodel itemmodel = convertitemmodelfromitemdo(itemdo,itemstockdo);
//獲取活動商品資訊
promomodel promomodel = promoservice.getpromomodelbyitemid(itemmodel.getid());
if (promomodel != null && promomodel.getstatus().intvalue() !=3)
return itemmodel;
}
private itemmodel convertitemmodelfromitemdo(itemdo itemdo,itemstockdo itemstockdo)
itemmodel itemmodel = new itemmodel();
beanutils.copyproperties(itemdo,itemmodel);
itemmodel.setprice(bigdecimal.valueof(itemdo.getprice()));
itemmodel.setstock(itemstockdo.getstock());
return itemmodel;
}
@override
public promomodel getpromomodelbyitemid(integer itemid)
//判斷秒殺活動開始或者結束
date now = new date();
if (promomodel.getstartdate().compareto(now)>0) else if (promomodel.getenddate().compareto(now)<=0) else
return promomodel;
}
private promomodel convertmodelfromdo(promodo promodo)
promomodel promomodel = new promomodel();
beanutils.copyproperties(promodo,promomodel);
promomodel.setpromoitemprice(new bigdecimal(promodo.getpromoitemprice()));
return promomodel;
}
@override
@transactional
public ordermodel createorder(integer userid,integer promoid, integer itemid, integer amount) throws busines***ception
if (itemmodel.getstock()99)
//校驗活動資訊
if (promoid != null)else if (itemmodel.getpromomodel().getstatus() != 2)
}//落單減庫存(下單就鎖庫存),支付減庫存(支付才去減庫存)這裡使用落單減庫存
boolean result = itemservice.decreasestock(itemid,amount);
if (!result)
//訂單入庫
ordermodel ordermodel = new ordermodel();
ordermodel.setuserid(userid);
ordermodel.setitemid(itemid);
ordermodel.setamount(amount);
ordermodel.setpromoid(promoid);
if (promoid !=null)else
ordermodel.setorderprice(ordermodel.getitemprice().multiply(
new bigdecimal(amount)
));//生成交易流水號
ordermodel.setid(generateoderno());
orderinfodo orderinfodo = convertdofrommodel(ordermodel);
//加上商品銷量
itemservice.increasesales(itemid,amount);
//返回前端
return null;
}
電商秒殺專案 交易模組
首先建立交易模型,然後根據模型建立表,生成實體。然後建立service,寫建立訂單的方法。建立訂單 1校驗下單狀態 商品存在?使用者合法?購買數量正確?override public itemmodel getitembyid integer id itemmodel itemmodel conve...
電商秒殺優化
增加並行數量,就是增大對資料庫的訪問。而這三種優化快取效果排序 頁面快取 url快取 物件快取 jss,js這些內容的優化 首先在goodscontroller中找到商品列表goodlist,資料通過model來傳到good list.html頁面中去 那麼如何取出我們的頁面快取呢?通過下面這句 s...
電商秒殺系統設計
秒殺場景一般會在電商 舉行一些活動或者節假日在12306 上搶票時遇到。對於電商 中一些稀缺或者 商品,電商 一般會在約定時間點對其進行限量銷售,因為這些商品的特殊性,會吸引大量使用者前來搶購,並且會在約定的時間點同時在秒殺頁面進行搶購。限流 鑑於只有少部分使用者能夠秒殺成功,所以要限制大部分流量,...