后台完成修复,初始化项目

This commit is contained in:
2025-07-01 17:18:04 +08:00
commit 5916f076b7
74 changed files with 17444 additions and 0 deletions

View File

@@ -0,0 +1,89 @@
package com.org.flashsalesystem.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 秒杀活动实体类
* 对应数据库flash_sales表
*/
@Entity
@Table(name = "flash_sales")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class FlashSale {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull(message = "商品ID不能为空")
@Column(name = "product_id", nullable = false)
private Long productId;
@NotNull(message = "秒杀价格不能为空")
@DecimalMin(value = "0.01", message = "秒杀价格必须大于0")
@Column(name = "flash_price", nullable = false, precision = 10, scale = 2)
private BigDecimal flashPrice;
@Min(value = 1, message = "秒杀库存必须大于0")
@Column(name = "flash_stock", nullable = false)
private Integer flashStock;
@NotNull(message = "开始时间不能为空")
@Column(name = "start_time", nullable = false)
private LocalDateTime startTime;
@NotNull(message = "结束时间不能为空")
@Column(name = "end_time", nullable = false)
private LocalDateTime endTime;
/**
* 活动状态1-未开始2-进行中3-已结束
*/
@Column(nullable = false)
private Integer status = 1;
@Column(name = "created_at", nullable = false, updatable = false)
private LocalDateTime createdAt;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "product_id", insertable = false, updatable = false)
private Product product;
@PrePersist
protected void onCreate() {
createdAt = LocalDateTime.now();
}
/**
* 检查活动是否已开始
*/
public boolean isStarted() {
return LocalDateTime.now().isAfter(startTime);
}
/**
* 检查活动是否已结束
*/
public boolean isEnded() {
return LocalDateTime.now().isAfter(endTime);
}
/**
* 检查活动是否正在进行中
*/
public boolean isActive() {
LocalDateTime now = LocalDateTime.now();
return now.isAfter(startTime) && now.isBefore(endTime) && status == 2;
}
}