mirror of
https://gitee.com/coder-xiaomo/flashsale
synced 2025-09-12 06:51:38 +08:00
秒杀(SpringBoot构建电商基础秒杀项目 基础部分完成)
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
MavenRepo: 不存在的Maven依赖,需要手动复制到本地Maven仓库中
|
MavenRepo: 不存在的Maven依赖,需要手动复制到本地Maven仓库中
|
||||||
|
|
||||||
sql: 项目数据库文件
|
sql: 项目数据库文件
|
||||||
|
|
||||||
|
课程:https://www.imooc.com/video/18469
|
@@ -11,7 +11,7 @@
|
|||||||
Target Server Version : 50726
|
Target Server Version : 50726
|
||||||
File Encoding : 65001
|
File Encoding : 65001
|
||||||
|
|
||||||
Date: 05/03/2022 15:19:32
|
Date: 05/03/2022 16:32:52
|
||||||
*/
|
*/
|
||||||
|
|
||||||
SET NAMES utf8mb4;
|
SET NAMES utf8mb4;
|
||||||
@@ -93,6 +93,7 @@ CREATE TABLE `order_info` (
|
|||||||
`item_price` decimal(10, 2) NOT NULL,
|
`item_price` decimal(10, 2) NOT NULL,
|
||||||
`amount` int(255) NOT NULL,
|
`amount` int(255) NOT NULL,
|
||||||
`order_price` decimal(10, 2) NOT NULL,
|
`order_price` decimal(10, 2) NOT NULL,
|
||||||
|
`promo_id` int(11) NOT NULL DEFAULT 0,
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
|
||||||
|
|
||||||
@@ -114,7 +115,7 @@ CREATE TABLE `promo_info` (
|
|||||||
PRIMARY KEY (`id`) USING BTREE,
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
INDEX `item_id`(`item_id`) USING BTREE,
|
INDEX `item_id`(`item_id`) USING BTREE,
|
||||||
CONSTRAINT `promo_info_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `item_info` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
|
CONSTRAINT `promo_info_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `item_info` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
|
||||||
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
|
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Records of promo_info
|
-- Records of promo_info
|
||||||
@@ -135,7 +136,7 @@ CREATE TABLE `sequence_info` (
|
|||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Records of sequence_info
|
-- Records of sequence_info
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
INSERT INTO `sequence_info` VALUES ('order_info', 0, 1);
|
INSERT INTO `sequence_info` VALUES ('order_info', 5, 1);
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Table structure for user_info
|
-- Table structure for user_info
|
||||||
|
@@ -108,6 +108,7 @@
|
|||||||
data: {
|
data: {
|
||||||
"itemId": g_itemVO.id,
|
"itemId": g_itemVO.id,
|
||||||
"amount": 1, // 暂时写死,买1件
|
"amount": 1, // 暂时写死,买1件
|
||||||
|
"promoId": g_itemVO.promoId,
|
||||||
},
|
},
|
||||||
xhrFields: {withCredentials: true},
|
xhrFields: {withCredentials: true},
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
|
@@ -82,7 +82,7 @@ public class ItemController extends BaseController {
|
|||||||
if (itemModel.getPromoModel() != null) {
|
if (itemModel.getPromoModel() != null) {
|
||||||
// 有正在进行或即将进行的秒杀活动
|
// 有正在进行或即将进行的秒杀活动
|
||||||
itemVO.setPromoStatus(itemModel.getPromoModel().getStatus());
|
itemVO.setPromoStatus(itemModel.getPromoModel().getStatus());
|
||||||
itemVO.setPromoId(itemModel.getId());
|
itemVO.setPromoId(itemModel.getPromoModel().getId());
|
||||||
itemVO.setStartDate(itemModel.getPromoModel().getStartDate().toString(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")));
|
itemVO.setStartDate(itemModel.getPromoModel().getStartDate().toString(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")));
|
||||||
itemVO.setPromoPrice(itemModel.getPromoModel().getPromoPrice());
|
itemVO.setPromoPrice(itemModel.getPromoModel().getPromoPrice());
|
||||||
} else {
|
} else {
|
||||||
|
@@ -27,7 +27,8 @@ public class OrderController extends BaseController {
|
|||||||
@RequestMapping(value = "/createorder", method = {RequestMethod.POST}, consumes = {CONTENT_TYPE_FORMED})
|
@RequestMapping(value = "/createorder", method = {RequestMethod.POST}, consumes = {CONTENT_TYPE_FORMED})
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public CommonReturnType createOrder(@RequestParam(name = "itemId") Integer itemId,
|
public CommonReturnType createOrder(@RequestParam(name = "itemId") Integer itemId,
|
||||||
@RequestParam(name = "amount") Integer amount) throws BusinessException {
|
@RequestParam(name = "amount") Integer amount,
|
||||||
|
@RequestParam(name = "promoId", required = false) Integer promoId) throws BusinessException {
|
||||||
// 获取用户登陆状态
|
// 获取用户登陆状态
|
||||||
Boolean isLogin = (Boolean) httpServletRequest.getSession().getAttribute("IS_LOGIN");
|
Boolean isLogin = (Boolean) httpServletRequest.getSession().getAttribute("IS_LOGIN");
|
||||||
if (isLogin == null || !isLogin.booleanValue()) {
|
if (isLogin == null || !isLogin.booleanValue()) {
|
||||||
@@ -36,7 +37,7 @@ public class OrderController extends BaseController {
|
|||||||
// 获取用户的登录信息
|
// 获取用户的登录信息
|
||||||
UserModel userModel = (UserModel) httpServletRequest.getSession().getAttribute("LOGIN_USER");
|
UserModel userModel = (UserModel) httpServletRequest.getSession().getAttribute("LOGIN_USER");
|
||||||
|
|
||||||
OrderModel orderModel = orderService.createOrder(userModel.getId(), itemId, amount);
|
OrderModel orderModel = orderService.createOrder(userModel.getId(), itemId, promoId, amount);
|
||||||
|
|
||||||
return CommonReturnType.create(null);
|
return CommonReturnType.create(null);
|
||||||
}
|
}
|
||||||
|
@@ -7,7 +7,7 @@ public interface OrderDOMapper {
|
|||||||
* This method was generated by MyBatis Generator.
|
* This method was generated by MyBatis Generator.
|
||||||
* This method corresponds to the database table order_info
|
* This method corresponds to the database table order_info
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
int deleteByPrimaryKey(String id);
|
int deleteByPrimaryKey(String id);
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ public interface OrderDOMapper {
|
|||||||
* This method was generated by MyBatis Generator.
|
* This method was generated by MyBatis Generator.
|
||||||
* This method corresponds to the database table order_info
|
* This method corresponds to the database table order_info
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
int insert(OrderDO record);
|
int insert(OrderDO record);
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ public interface OrderDOMapper {
|
|||||||
* This method was generated by MyBatis Generator.
|
* This method was generated by MyBatis Generator.
|
||||||
* This method corresponds to the database table order_info
|
* This method corresponds to the database table order_info
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
int insertSelective(OrderDO record);
|
int insertSelective(OrderDO record);
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ public interface OrderDOMapper {
|
|||||||
* This method was generated by MyBatis Generator.
|
* This method was generated by MyBatis Generator.
|
||||||
* This method corresponds to the database table order_info
|
* This method corresponds to the database table order_info
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
OrderDO selectByPrimaryKey(String id);
|
OrderDO selectByPrimaryKey(String id);
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ public interface OrderDOMapper {
|
|||||||
* This method was generated by MyBatis Generator.
|
* This method was generated by MyBatis Generator.
|
||||||
* This method corresponds to the database table order_info
|
* This method corresponds to the database table order_info
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
int updateByPrimaryKeySelective(OrderDO record);
|
int updateByPrimaryKeySelective(OrderDO record);
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ public interface OrderDOMapper {
|
|||||||
* This method was generated by MyBatis Generator.
|
* This method was generated by MyBatis Generator.
|
||||||
* This method corresponds to the database table order_info
|
* This method corresponds to the database table order_info
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
int updateByPrimaryKey(OrderDO record);
|
int updateByPrimaryKey(OrderDO record);
|
||||||
}
|
}
|
@@ -8,7 +8,7 @@ public class OrderDO {
|
|||||||
* This field was generated by MyBatis Generator.
|
* This field was generated by MyBatis Generator.
|
||||||
* This field corresponds to the database column order_info.id
|
* This field corresponds to the database column order_info.id
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
private String id;
|
private String id;
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ public class OrderDO {
|
|||||||
* This field was generated by MyBatis Generator.
|
* This field was generated by MyBatis Generator.
|
||||||
* This field corresponds to the database column order_info.user_id
|
* This field corresponds to the database column order_info.user_id
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
private Integer userId;
|
private Integer userId;
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ public class OrderDO {
|
|||||||
* This field was generated by MyBatis Generator.
|
* This field was generated by MyBatis Generator.
|
||||||
* This field corresponds to the database column order_info.item_id
|
* This field corresponds to the database column order_info.item_id
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
private Integer itemId;
|
private Integer itemId;
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ public class OrderDO {
|
|||||||
* This field was generated by MyBatis Generator.
|
* This field was generated by MyBatis Generator.
|
||||||
* This field corresponds to the database column order_info.item_price
|
* This field corresponds to the database column order_info.item_price
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
private BigDecimal itemPrice;
|
private BigDecimal itemPrice;
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ public class OrderDO {
|
|||||||
* This field was generated by MyBatis Generator.
|
* This field was generated by MyBatis Generator.
|
||||||
* This field corresponds to the database column order_info.amount
|
* This field corresponds to the database column order_info.amount
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
private Integer amount;
|
private Integer amount;
|
||||||
|
|
||||||
@@ -53,17 +53,26 @@ public class OrderDO {
|
|||||||
* This field was generated by MyBatis Generator.
|
* This field was generated by MyBatis Generator.
|
||||||
* This field corresponds to the database column order_info.order_price
|
* This field corresponds to the database column order_info.order_price
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
private BigDecimal orderPrice;
|
private BigDecimal orderPrice;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* This field was generated by MyBatis Generator.
|
||||||
|
* This field corresponds to the database column order_info.promo_id
|
||||||
|
*
|
||||||
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
|
*/
|
||||||
|
private Integer promoId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method was generated by MyBatis Generator.
|
* This method was generated by MyBatis Generator.
|
||||||
* This method returns the value of the database column order_info.id
|
* This method returns the value of the database column order_info.id
|
||||||
*
|
*
|
||||||
* @return the value of order_info.id
|
* @return the value of order_info.id
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
public String getId() {
|
public String getId() {
|
||||||
return id;
|
return id;
|
||||||
@@ -75,7 +84,7 @@ public class OrderDO {
|
|||||||
*
|
*
|
||||||
* @param id the value for order_info.id
|
* @param id the value for order_info.id
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
public void setId(String id) {
|
public void setId(String id) {
|
||||||
this.id = id == null ? null : id.trim();
|
this.id = id == null ? null : id.trim();
|
||||||
@@ -87,7 +96,7 @@ public class OrderDO {
|
|||||||
*
|
*
|
||||||
* @return the value of order_info.user_id
|
* @return the value of order_info.user_id
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
public Integer getUserId() {
|
public Integer getUserId() {
|
||||||
return userId;
|
return userId;
|
||||||
@@ -99,7 +108,7 @@ public class OrderDO {
|
|||||||
*
|
*
|
||||||
* @param userId the value for order_info.user_id
|
* @param userId the value for order_info.user_id
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
public void setUserId(Integer userId) {
|
public void setUserId(Integer userId) {
|
||||||
this.userId = userId;
|
this.userId = userId;
|
||||||
@@ -111,7 +120,7 @@ public class OrderDO {
|
|||||||
*
|
*
|
||||||
* @return the value of order_info.item_id
|
* @return the value of order_info.item_id
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
public Integer getItemId() {
|
public Integer getItemId() {
|
||||||
return itemId;
|
return itemId;
|
||||||
@@ -123,7 +132,7 @@ public class OrderDO {
|
|||||||
*
|
*
|
||||||
* @param itemId the value for order_info.item_id
|
* @param itemId the value for order_info.item_id
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
public void setItemId(Integer itemId) {
|
public void setItemId(Integer itemId) {
|
||||||
this.itemId = itemId;
|
this.itemId = itemId;
|
||||||
@@ -135,7 +144,7 @@ public class OrderDO {
|
|||||||
*
|
*
|
||||||
* @return the value of order_info.item_price
|
* @return the value of order_info.item_price
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
public BigDecimal getItemPrice() {
|
public BigDecimal getItemPrice() {
|
||||||
return itemPrice;
|
return itemPrice;
|
||||||
@@ -147,7 +156,7 @@ public class OrderDO {
|
|||||||
*
|
*
|
||||||
* @param itemPrice the value for order_info.item_price
|
* @param itemPrice the value for order_info.item_price
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
public void setItemPrice(BigDecimal itemPrice) {
|
public void setItemPrice(BigDecimal itemPrice) {
|
||||||
this.itemPrice = itemPrice;
|
this.itemPrice = itemPrice;
|
||||||
@@ -159,7 +168,7 @@ public class OrderDO {
|
|||||||
*
|
*
|
||||||
* @return the value of order_info.amount
|
* @return the value of order_info.amount
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
public Integer getAmount() {
|
public Integer getAmount() {
|
||||||
return amount;
|
return amount;
|
||||||
@@ -171,7 +180,7 @@ public class OrderDO {
|
|||||||
*
|
*
|
||||||
* @param amount the value for order_info.amount
|
* @param amount the value for order_info.amount
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
public void setAmount(Integer amount) {
|
public void setAmount(Integer amount) {
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
@@ -183,7 +192,7 @@ public class OrderDO {
|
|||||||
*
|
*
|
||||||
* @return the value of order_info.order_price
|
* @return the value of order_info.order_price
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
public BigDecimal getOrderPrice() {
|
public BigDecimal getOrderPrice() {
|
||||||
return orderPrice;
|
return orderPrice;
|
||||||
@@ -195,9 +204,33 @@ public class OrderDO {
|
|||||||
*
|
*
|
||||||
* @param orderPrice the value for order_info.order_price
|
* @param orderPrice the value for order_info.order_price
|
||||||
*
|
*
|
||||||
* @mbg.generated Thu Mar 03 22:04:45 CST 2022
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
*/
|
*/
|
||||||
public void setOrderPrice(BigDecimal orderPrice) {
|
public void setOrderPrice(BigDecimal orderPrice) {
|
||||||
this.orderPrice = orderPrice;
|
this.orderPrice = orderPrice;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method was generated by MyBatis Generator.
|
||||||
|
* This method returns the value of the database column order_info.promo_id
|
||||||
|
*
|
||||||
|
* @return the value of order_info.promo_id
|
||||||
|
*
|
||||||
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
|
*/
|
||||||
|
public Integer getPromoId() {
|
||||||
|
return promoId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method was generated by MyBatis Generator.
|
||||||
|
* This method sets the value of the database column order_info.promo_id
|
||||||
|
*
|
||||||
|
* @param promoId the value for order_info.promo_id
|
||||||
|
*
|
||||||
|
* @mbg.generated Sat Mar 05 15:52:04 CST 2022
|
||||||
|
*/
|
||||||
|
public void setPromoId(Integer promoId) {
|
||||||
|
this.promoId = promoId;
|
||||||
|
}
|
||||||
}
|
}
|
@@ -11,5 +11,5 @@ public interface OrderService {
|
|||||||
* @param amount 购买商品数量
|
* @param amount 购买商品数量
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
OrderModel createOrder(Integer userId, Integer itemId, Integer amount) throws BusinessException;
|
OrderModel createOrder(Integer userId, Integer itemId, Integer promoId, Integer amount) throws BusinessException;
|
||||||
}
|
}
|
||||||
|
@@ -39,7 +39,7 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public OrderModel createOrder(Integer userId, Integer itemId, Integer amount) throws BusinessException {
|
public OrderModel createOrder(Integer userId, Integer itemId, Integer promoId, Integer amount) throws BusinessException {
|
||||||
// 1. 校验下单状态
|
// 1. 校验下单状态
|
||||||
// 下单的商品是否存在;用户是否合法;购买数量是否正确
|
// 下单的商品是否存在;用户是否合法;购买数量是否正确
|
||||||
ItemModel itemModel = itemService.getItemById(itemId);
|
ItemModel itemModel = itemService.getItemById(itemId);
|
||||||
@@ -56,7 +56,18 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
throw new BusinessException(EmBusinessError.PARAMETER_VALIDATION_ERROR, "数量信息不正确");
|
throw new BusinessException(EmBusinessError.PARAMETER_VALIDATION_ERROR, "数量信息不正确");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. 落单减库存 / 支付减库存(有可能超卖)
|
// 校验活动信息
|
||||||
|
if (promoId != null) {
|
||||||
|
if (promoId.intValue() != itemModel.getPromoModel().getId()) {
|
||||||
|
// (1) 校验对应活动是否存在这个适用商品
|
||||||
|
throw new BusinessException(EmBusinessError.PARAMETER_VALIDATION_ERROR, "活动信息不正确");
|
||||||
|
} else if (itemModel.getPromoModel().getStatus() != 2) {
|
||||||
|
// (2) 校验活动是否进行中
|
||||||
|
throw new BusinessException(EmBusinessError.PARAMETER_VALIDATION_ERROR, "不在活动时间内");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 落单减库存
|
||||||
boolean result = itemService.decreaseStock(itemId, amount);
|
boolean result = itemService.decreaseStock(itemId, amount);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
throw new BusinessException(EmBusinessError.STOCK_NOT_ENOUGH);
|
throw new BusinessException(EmBusinessError.STOCK_NOT_ENOUGH);
|
||||||
@@ -67,8 +78,13 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
orderModel.setUserId(userId);
|
orderModel.setUserId(userId);
|
||||||
orderModel.setItemId(itemId);
|
orderModel.setItemId(itemId);
|
||||||
orderModel.setAmount(amount);
|
orderModel.setAmount(amount);
|
||||||
orderModel.setItemPrice(itemModel.getPrice());
|
if (promoId != null) {
|
||||||
orderModel.setOrderPrice(itemModel.getPrice().multiply(new BigDecimal(amount)));
|
orderModel.setItemPrice(itemModel.getPromoModel().getPromoPrice());
|
||||||
|
} else {
|
||||||
|
orderModel.setItemPrice(itemModel.getPrice());
|
||||||
|
}
|
||||||
|
orderModel.setPromoId(promoId);
|
||||||
|
orderModel.setOrderPrice(orderModel.getItemPrice().multiply(new BigDecimal(amount)));
|
||||||
|
|
||||||
// 生成交易流水号(订单号)
|
// 生成交易流水号(订单号)
|
||||||
orderModel.setId(generateOrderNo());
|
orderModel.setId(generateOrderNo());
|
||||||
|
@@ -14,13 +14,16 @@ public class OrderModel {
|
|||||||
// 购买的商品Id
|
// 购买的商品Id
|
||||||
private Integer itemId;
|
private Integer itemId;
|
||||||
|
|
||||||
// 购买商品的单价
|
// 若非空,则表示是以秒杀商品方式下单
|
||||||
|
private Integer promoId;
|
||||||
|
|
||||||
|
// 购买商品的单价(若promoId非空,则表示秒杀商品价格)
|
||||||
private BigDecimal itemPrice;
|
private BigDecimal itemPrice;
|
||||||
|
|
||||||
// 购买数量
|
// 购买数量
|
||||||
private Integer amount;
|
private Integer amount;
|
||||||
|
|
||||||
// 购买金额
|
// 购买金额(若promoId非空,则表示秒杀商品价格)
|
||||||
private BigDecimal orderPrice;
|
private BigDecimal orderPrice;
|
||||||
|
|
||||||
public String getId() {
|
public String getId() {
|
||||||
@@ -47,6 +50,14 @@ public class OrderModel {
|
|||||||
this.itemId = itemId;
|
this.itemId = itemId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Integer getPromoId() {
|
||||||
|
return promoId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPromoId(Integer promoId) {
|
||||||
|
this.promoId = promoId;
|
||||||
|
}
|
||||||
|
|
||||||
public BigDecimal getItemPrice() {
|
public BigDecimal getItemPrice() {
|
||||||
return itemPrice;
|
return itemPrice;
|
||||||
}
|
}
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
<!--
|
<!--
|
||||||
WARNING - @mbg.generated
|
WARNING - @mbg.generated
|
||||||
This element is automatically generated by MyBatis Generator, do not modify.
|
This element is automatically generated by MyBatis Generator, do not modify.
|
||||||
This element was generated on Thu Mar 03 22:04:45 CST 2022.
|
This element was generated on Sat Mar 05 15:52:04 CST 2022.
|
||||||
-->
|
-->
|
||||||
<id column="id" jdbcType="VARCHAR" property="id" />
|
<id column="id" jdbcType="VARCHAR" property="id" />
|
||||||
<result column="user_id" jdbcType="INTEGER" property="userId" />
|
<result column="user_id" jdbcType="INTEGER" property="userId" />
|
||||||
@@ -13,20 +13,21 @@
|
|||||||
<result column="item_price" jdbcType="DECIMAL" property="itemPrice" />
|
<result column="item_price" jdbcType="DECIMAL" property="itemPrice" />
|
||||||
<result column="amount" jdbcType="INTEGER" property="amount" />
|
<result column="amount" jdbcType="INTEGER" property="amount" />
|
||||||
<result column="order_price" jdbcType="DECIMAL" property="orderPrice" />
|
<result column="order_price" jdbcType="DECIMAL" property="orderPrice" />
|
||||||
|
<result column="promo_id" jdbcType="INTEGER" property="promoId" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
<sql id="Base_Column_List">
|
<sql id="Base_Column_List">
|
||||||
<!--
|
<!--
|
||||||
WARNING - @mbg.generated
|
WARNING - @mbg.generated
|
||||||
This element is automatically generated by MyBatis Generator, do not modify.
|
This element is automatically generated by MyBatis Generator, do not modify.
|
||||||
This element was generated on Thu Mar 03 22:04:45 CST 2022.
|
This element was generated on Sat Mar 05 15:52:04 CST 2022.
|
||||||
-->
|
-->
|
||||||
id, user_id, item_id, item_price, amount, order_price
|
id, user_id, item_id, item_price, amount, order_price, promo_id
|
||||||
</sql>
|
</sql>
|
||||||
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
|
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
|
||||||
<!--
|
<!--
|
||||||
WARNING - @mbg.generated
|
WARNING - @mbg.generated
|
||||||
This element is automatically generated by MyBatis Generator, do not modify.
|
This element is automatically generated by MyBatis Generator, do not modify.
|
||||||
This element was generated on Thu Mar 03 22:04:45 CST 2022.
|
This element was generated on Sat Mar 05 15:52:04 CST 2022.
|
||||||
-->
|
-->
|
||||||
select
|
select
|
||||||
<include refid="Base_Column_List" />
|
<include refid="Base_Column_List" />
|
||||||
@@ -37,7 +38,7 @@
|
|||||||
<!--
|
<!--
|
||||||
WARNING - @mbg.generated
|
WARNING - @mbg.generated
|
||||||
This element is automatically generated by MyBatis Generator, do not modify.
|
This element is automatically generated by MyBatis Generator, do not modify.
|
||||||
This element was generated on Thu Mar 03 22:04:45 CST 2022.
|
This element was generated on Sat Mar 05 15:52:04 CST 2022.
|
||||||
-->
|
-->
|
||||||
delete from order_info
|
delete from order_info
|
||||||
where id = #{id,jdbcType=VARCHAR}
|
where id = #{id,jdbcType=VARCHAR}
|
||||||
@@ -46,20 +47,20 @@
|
|||||||
<!--
|
<!--
|
||||||
WARNING - @mbg.generated
|
WARNING - @mbg.generated
|
||||||
This element is automatically generated by MyBatis Generator, do not modify.
|
This element is automatically generated by MyBatis Generator, do not modify.
|
||||||
This element was generated on Thu Mar 03 22:04:45 CST 2022.
|
This element was generated on Sat Mar 05 15:52:04 CST 2022.
|
||||||
-->
|
-->
|
||||||
insert into order_info (id, user_id, item_id,
|
insert into order_info (id, user_id, item_id,
|
||||||
item_price, amount, order_price
|
item_price, amount, order_price,
|
||||||
)
|
promo_id)
|
||||||
values (#{id,jdbcType=VARCHAR}, #{userId,jdbcType=INTEGER}, #{itemId,jdbcType=INTEGER},
|
values (#{id,jdbcType=VARCHAR}, #{userId,jdbcType=INTEGER}, #{itemId,jdbcType=INTEGER},
|
||||||
#{itemPrice,jdbcType=DECIMAL}, #{amount,jdbcType=INTEGER}, #{orderPrice,jdbcType=DECIMAL}
|
#{itemPrice,jdbcType=DECIMAL}, #{amount,jdbcType=INTEGER}, #{orderPrice,jdbcType=DECIMAL},
|
||||||
)
|
#{promoId,jdbcType=INTEGER})
|
||||||
</insert>
|
</insert>
|
||||||
<insert id="insertSelective" parameterType="com.cxyxiaomo.flashsale.dataobject.OrderDO">
|
<insert id="insertSelective" parameterType="com.cxyxiaomo.flashsale.dataobject.OrderDO">
|
||||||
<!--
|
<!--
|
||||||
WARNING - @mbg.generated
|
WARNING - @mbg.generated
|
||||||
This element is automatically generated by MyBatis Generator, do not modify.
|
This element is automatically generated by MyBatis Generator, do not modify.
|
||||||
This element was generated on Thu Mar 03 22:04:45 CST 2022.
|
This element was generated on Sat Mar 05 15:52:04 CST 2022.
|
||||||
-->
|
-->
|
||||||
insert into order_info
|
insert into order_info
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
@@ -81,6 +82,9 @@
|
|||||||
<if test="orderPrice != null">
|
<if test="orderPrice != null">
|
||||||
order_price,
|
order_price,
|
||||||
</if>
|
</if>
|
||||||
|
<if test="promoId != null">
|
||||||
|
promo_id,
|
||||||
|
</if>
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="id != null">
|
<if test="id != null">
|
||||||
@@ -101,13 +105,16 @@
|
|||||||
<if test="orderPrice != null">
|
<if test="orderPrice != null">
|
||||||
#{orderPrice,jdbcType=DECIMAL},
|
#{orderPrice,jdbcType=DECIMAL},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="promoId != null">
|
||||||
|
#{promoId,jdbcType=INTEGER},
|
||||||
|
</if>
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
<update id="updateByPrimaryKeySelective" parameterType="com.cxyxiaomo.flashsale.dataobject.OrderDO">
|
<update id="updateByPrimaryKeySelective" parameterType="com.cxyxiaomo.flashsale.dataobject.OrderDO">
|
||||||
<!--
|
<!--
|
||||||
WARNING - @mbg.generated
|
WARNING - @mbg.generated
|
||||||
This element is automatically generated by MyBatis Generator, do not modify.
|
This element is automatically generated by MyBatis Generator, do not modify.
|
||||||
This element was generated on Thu Mar 03 22:04:45 CST 2022.
|
This element was generated on Sat Mar 05 15:52:04 CST 2022.
|
||||||
-->
|
-->
|
||||||
update order_info
|
update order_info
|
||||||
<set>
|
<set>
|
||||||
@@ -126,6 +133,9 @@
|
|||||||
<if test="orderPrice != null">
|
<if test="orderPrice != null">
|
||||||
order_price = #{orderPrice,jdbcType=DECIMAL},
|
order_price = #{orderPrice,jdbcType=DECIMAL},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="promoId != null">
|
||||||
|
promo_id = #{promoId,jdbcType=INTEGER},
|
||||||
|
</if>
|
||||||
</set>
|
</set>
|
||||||
where id = #{id,jdbcType=VARCHAR}
|
where id = #{id,jdbcType=VARCHAR}
|
||||||
</update>
|
</update>
|
||||||
@@ -133,14 +143,15 @@
|
|||||||
<!--
|
<!--
|
||||||
WARNING - @mbg.generated
|
WARNING - @mbg.generated
|
||||||
This element is automatically generated by MyBatis Generator, do not modify.
|
This element is automatically generated by MyBatis Generator, do not modify.
|
||||||
This element was generated on Thu Mar 03 22:04:45 CST 2022.
|
This element was generated on Sat Mar 05 15:52:04 CST 2022.
|
||||||
-->
|
-->
|
||||||
update order_info
|
update order_info
|
||||||
set user_id = #{userId,jdbcType=INTEGER},
|
set user_id = #{userId,jdbcType=INTEGER},
|
||||||
item_id = #{itemId,jdbcType=INTEGER},
|
item_id = #{itemId,jdbcType=INTEGER},
|
||||||
item_price = #{itemPrice,jdbcType=DECIMAL},
|
item_price = #{itemPrice,jdbcType=DECIMAL},
|
||||||
amount = #{amount,jdbcType=INTEGER},
|
amount = #{amount,jdbcType=INTEGER},
|
||||||
order_price = #{orderPrice,jdbcType=DECIMAL}
|
order_price = #{orderPrice,jdbcType=DECIMAL},
|
||||||
|
promo_id = #{promoId,jdbcType=INTEGER}
|
||||||
where id = #{id,jdbcType=VARCHAR}
|
where id = #{id,jdbcType=VARCHAR}
|
||||||
</update>
|
</update>
|
||||||
</mapper>
|
</mapper>
|
Reference in New Issue
Block a user