数据库设计
商品表
秒杀商品表
订单表
秒杀订单表
商品列表页
pojo层创建Goods类、MiaoshaGoods类、MiaoshaOrder类、OrderInfo类
创建GoodsVo类继承Goods表,将Goods表和MiaoshaGoods表合并
public class GoodsVo extends Goods{
private Double miaoshaPrice;
private Integer stockCount;
private Date startDate;
private Date endDate;
public Integer getStockCount() {
return stockCount;
}
public void setStockCount(Integer stockCount) {
this.stockCount = stockCount;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public Double getMiaoshaPrice() {
return miaoshaPrice;
}
public void setMiaoshaPrice(Double miaoshaPrice) {
this.miaoshaPrice = miaoshaPrice;
}
}
创建GoodsDao,做连接查询(MiaoshaGoods、Goods),包含Goods中所有字段和MiaoshaGoods中的stock_count,start_date,end_date,miaosha_price(g.*,mg.stock_count,mg.start_date,mg.end_date,mg.miaosha_price)
@Mapper
public interface GoodsDao {
@Select({"select g.*,mg.stock_count,mg.start_date,mg.end_date,mg.miaosha_price from miaosha_goods mg left join goods g on mg.goods_id = g.id"})
public List<GoodsVo>listGoodsVo();
@Select("select g.*,mg.stock_count, mg.start_date, mg.end_date,mg.miaosha_price from miaosha_goods mg left join goods g on mg.goods_id = g.id where g.id = #{goodsId}")
public GoodsVo getGoodsVoByGoodsId(long goodsId);
@Update("update miaosha_goods set stock_count = stock_count-1 where goods_id = #{goodsId}")
public void reduceStock(MiaoshaGoods miaoshaGoods);
}
创建商品服务类GoodsService类,注入GoodsDao
@Service
public class GoodsService {
@Autowired
GoodsDao goodsDao;
public List<GoodsVo> listGoodsVo(){
return goodsDao.listGoodsVo();
}
public GoodsVo getGoodsVoByGoodsId(long goodsId) {
return goodsDao.getGoodsVoByGoodsId(goodsId);
}
//减库存
public void reduceStock(GoodsVo goods) {
MiaoshaGoods g = new MiaoshaGoods();
g.setGoodsId(goods.getId());
goodsDao.reduceStock(g);
}
}
Controller层
//获取商品列表
@RequestMapping("/to_list")
public String list(Model model, MiaoshaUser user) {
model.addAttribute("user", user);
//查询商品列表,包括商品和秒杀商品
List<GoodsVo> goodsList = goodsService.listGoodsVo();
model.addAttribute("goodsList", goodsList);
return "goods_list";
}
效果