商品表
CREATE TABLE `goods` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '商品ID', `goods_name` varchar(16) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '商品名称', `goods_title` varchar(64) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '商品标题', `goods_img` varchar(64) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '商品的图片', `goods_detail` longtext CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '商品的详情介绍', `goods_price` decimal(10,2) DEFAULT 0.00 COMMENT '商品单价', `goods_stock` int(11) DEFAULT 0 COMMENT '商品库存', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
-- ---------------------------- -- Records of goods -- ---------------------------- INSERT INTO `goods` VALUES ('1', '小米Mix2', '小米Mix2(黑科技十足)', '/img/小米Mix2.png', '小米Mix2s', '3499.00', '10'); INSERT INTO `goods` VALUES ('2', 'huawei mate10', 'Huawei华为', '/img/huawei.png', 'Huwei Mate10', '4800.00', '10'); INSERT INTO `goods` VALUES ('3', 'honor10', '荣耀10', '/img/荣耀10.png', 'Honor 10', '2799.00', '10'); INSERT INTO `goods` VALUES ('4', '三星s9', 'Sanxing S9', '/img/三星.png', 'sanxing S9', '6899.00', '10'); INSERT INTO `goods` VALUES ('5', 'iPhone X', 'iphoneX(全网通)', '/img/iPhoneX.png', 'iphoneX', '8848.00', '8'); INSERT INTO `goods` VALUES ('6', '小米8', '黑科技十足', '/img/小米8.png', '小米8', '3499.00', '10'); DROP TABLE IF EXISTS `goods`;
秒杀商品表
DROP TABLE IF EXISTS `miaosha_goods`; CREATE TABLE `miaosha_goods` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '秒杀的商品表', `goods_id` bigint(20) DEFAULT NULL COMMENT '商品的ID', `miaosha_price` decimal(10,2) DEFAULT 0.00 COMMENT '秒杀价', `stock_count` int(11) DEFAULT NULL COMMENT '库存数量', `start_date` datetime DEFAULT NULL COMMENT '秒杀开始时间', `end_date` datetime DEFAULT NULL COMMENT '秒杀结束时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of miaosha_goods -- ---------------------------- INSERT INTO `miaosha_goods` VALUES ('1', '1', '300.00', '6', '2018-05-26 11:33:59', '2018-05-26 11:34:08'); INSERT INTO `miaosha_goods` VALUES ('2', '2', '150.00', '5', '2018-05-25 11:34:32', '2018-07-19 11:34:40'); INSERT INTO `miaosha_goods` VALUES ('3', '3', '100.00', '10', '2018-06-14 10:24:04', '2018-07-19 10:24:21'); INSERT INTO `miaosha_goods` VALUES ('4', '4', '200.00', '6', '2018-05-25 10:24:42', '2018-07-19 10:24:47'); INSERT INTO `miaosha_goods` VALUES ('5', '5', '800.00', '5', '2018-05-25 11:11:42', '2018-06-15 11:11:50'); INSERT INTO `miaosha_goods` VALUES ('6', '6', '1.00', '10', '2018-05-31 09:15:13', '2018-06-30 09:15:18');
订单表
DROP TABLE IF EXISTS `order_info`; CREATE TABLE `order_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` bigint(20) DEFAULT NULL COMMENT '用户', `goods_id` bigint(20) DEFAULT NULL COMMENT '商品ID', `delivery_addr_id` bigint(20) DEFAULT NULL COMMENT '收货地址ID', `goods_name` varchar(16) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '冗余过来的商品名称', `goods_count` int(11) DEFAULT 0 COMMENT '商品数量', `goods_price` decimal(10,2) DEFAULT 0.00 COMMENT '商品价格', `order_channel` tinyint(4) DEFAULT 0 COMMENT '1pc,2android,3ios', `status` tinyint(4) DEFAULT 0 COMMENT '订单状态,0新建来支付,1已经支付,2已经发货,3已经收货,4已退款,5已完成', `create_date` datetime DEFAULT NULL COMMENT '创建时间', `pay_date` datetime DEFAULT NULL COMMENT '支付时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
秒杀订单表
DROP TABLE IF EXISTS `miaosha_order`; CREATE TABLE `miaosha_order` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` bigint(20) DEFAULT NULL COMMENT '用户ID', `order_id` bigint(20) DEFAULT NULL COMMENT '订单ID', `goods_id` bigint(20) DEFAULT NULL COMMENT '商品ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
创建domain对象
public class Goods { private Long id; private String goodsName; private String goodsTitle; private String goodsImg; private String goodsDetail; private Double goodsPrice; private Integer goodsStock; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getGoodsName() { return goodsName; } public void setGoodsName(String goodsName) { this.goodsName = goodsName; } public String getGoodsTitle() { return goodsTitle; } public void setGoodsTitle(String goodsTitle) { this.goodsTitle = goodsTitle; } public String getGoodsImg() { return goodsImg; } public void setGoodsImg(String goodsImg) { this.goodsImg = goodsImg; } public String getGoodsDetail() { return goodsDetail; } public void setGoodsDetail(String goodsDetail) { this.goodsDetail = goodsDetail; } public Double getGoodsPrice() { return goodsPrice; } public void setGoodsPrice(Double goodsPrice) { this.goodsPrice = goodsPrice; } public Integer getGoodsStock() { return goodsStock; } public void setGoodsStock(Integer goodsStock) { this.goodsStock = goodsStock; } }
package cn.tedu.miaosha.domain; import java.util.Date; public class MiaoshaGoods { private Long id; private Long goodsId; private Integer stockCount; private Date startDate; private Date endDate; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Long getGoodsId() { return goodsId; } public void setGoodsId(Long goodsId) { this.goodsId = goodsId; } 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; } }
package cn.tedu.miaosha.domain; public class MiaoshaOrder { private Long id; private Long userId; private Long orderId; private Long goodsId; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Long getUserId() { return userId; } public void setUserId(Long userId) { this.userId = userId; } public Long getOrderId() { return orderId; } public void setOrderId(Long orderId) { this.orderId = orderId; } public Long getGoodsId() { return goodsId; } public void setGoodsId(Long goodsId) { this.goodsId = goodsId; } }
package cn.tedu.miaosha.domain; import java.util.Date; public class MiaoshaUser { private Long id; private String nickname; private String password; private String salt; private String head; private Date registerDate; private Date lastLoginDate; private Integer loginCount; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSalt() { return salt; } public void setSalt(String salt) { this.salt = salt; } public String getHead() { return head; } public void setHead(String head) { this.head = head; } public Date getRegisterDate() { return registerDate; } public void setRegisterDate(Date registerDate) { this.registerDate = registerDate; } public Date getLastLoginDate() { return lastLoginDate; } public void setLastLoginDate(Date lastLoginDate) { this.lastLoginDate = lastLoginDate; } public Integer getLoginCount() { return loginCount; } public void setLoginCount(Integer loginCount) { this.loginCount = loginCount; } }
package cn.tedu.miaosha.domain; import java.util.Date; public class OrderInfo { private Long id; private Long userId; private Long goodsId; private Long deliveryAddrId; private String goodsName; private Integer goodsCount; private Double goodsPrice; private Integer orderChannel; private Integer status; private Date createDate; private Date payDate; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Long getUserId() { return userId; } public void setUserId(Long userId) { this.userId = userId; } public Long getGoodsId() { return goodsId; } public void setGoodsId(Long goodsId) { this.goodsId = goodsId; } public Long getDeliveryAddrId() { return deliveryAddrId; } public void setDeliveryAddrId(Long deliveryAddrId) { this.deliveryAddrId = deliveryAddrId; } public String getGoodsName() { return goodsName; } public void setGoodsName(String goodsName) { this.goodsName = goodsName; } public Integer getGoodsCount() { return goodsCount; } public void setGoodsCount(Integer goodsCount) { this.goodsCount = goodsCount; } public Double getGoodsPrice() { return goodsPrice; } public void setGoodsPrice(Double goodsPrice) { this.goodsPrice = goodsPrice; } public Integer getOrderChannel() { return orderChannel; } public void setOrderChannel(Integer orderChannel) { this.orderChannel = orderChannel; } public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } public Date getPayDate() { return payDate; } public void setPayDate(Date payDate) { this.payDate = payDate; } }
package cn.tedu.miaosha.dao; import java.util.List; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import cn.tedu.miaosha.domain.MiaoshaGoods; import cn.tedu.miaosha.vo.GoodsVo; @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(@Param("goodsId")long goodsId); @Update("update miaosha_goods set stock_count = stock_count - 1 where goods_id = #{goodsId}") public int reduceStock(MiaoshaGoods g); }
package cn.tedu.miaosha.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.tedu.miaosha.dao.GoodsDao; import cn.tedu.miaosha.domain.MiaoshaGoods; import cn.tedu.miaosha.vo.GoodsVo; @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); } }
添加商品页面
<div class="panel panel-default" style="height:100%;background-color:rgba(222,222,222,0.8)"> <div class="panel-heading" align="center" style="font-size:30px;color:black ;font-weight: bold;font-family:宋体;background-color:#E3E3E3">秒杀商品列表</div> <table class="table" id="goodslist"> <tr><td>商品名称</td><td>商品图片</td><td>商品原价</td><td>秒杀价</td><td>库存数量</td><td>详情</td></tr> <tr th:each="goods,goodsStat : ${goodsList}"> <td th:text="${goods.goodsName}"></td> <td ><img th:src="@{${goods.goodsImg}}" width="100" height="100" /></td> <td th:text="${goods.goodsPrice}"></td> <td th:text="${goods.miaoshaPrice}"></td> <td th:text="${goods.stockCount}"></td> <td><a th:href="'/goods/to_detail/'+${goods.id}">详情</a></td> </tr> </table> </div>
img图片