2026-06-26 20b96473f2520590a0dca6b775b81e3ea06a77a0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package cn.iocoder.yudao.module.promotion.dal.dataobject.combination;
 
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
 
import java.time.LocalDateTime;
 
// TODO 芋艿:把字段的顺序,和 do 顺序对齐下
/**
 * 拼团记录 DO
 *
 * 1. 用户参与拼团时,会创建一条记录
 * 2. 团长的拼团记录,和参团人的拼团记录,通过 {@link #headId} 关联
 *
 * @author HUIHUI
 */
@TableName("promotion_combination_record")
@KeySequence("promotion_combination_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CombinationRecordDO extends BaseDO {
 
    /**
     * 团长编号 - 团长
     */
    public static final Long HEAD_ID_GROUP = 0L;
 
    /**
     * 编号,主键自增
     */
    @TableId
    private Long id;
 
    /**
     * 拼团活动编号
     *
     * 关联 {@link CombinationActivityDO#getId()}
     */
    private Long activityId;
    /**
     * 拼团商品单价
     *
     * 冗余 {@link CombinationProductDO#getCombinationPrice()}
     */
    private Integer combinationPrice;
    /**
     * SPU 编号
     */
    private Long spuId;
    /**
     * 商品名字
     */
    private String spuName;
    /**
     * 商品图片
     */
    private String picUrl;
    /**
     * SKU 编号
     */
    private Long skuId;
    /**
     * 购买的商品数量
     */
    private Integer count;
 
    /**
     * 用户编号
     */
    private Long userId;
 
    /**
     * 用户昵称
     */
    private String nickname;
    /**
     * 用户头像
     */
    private String avatar;
 
    /**
     * 团长编号
     *
     * 关联 {@link CombinationRecordDO#getId()}
     *
     * 如果是团长,则它的值是 {@link #HEAD_ID_GROUP}
     */
    private Long headId;
    /**
     * 开团状态
     *
     * 关联 {@link CombinationRecordStatusEnum}
     */
    private Integer status;
    /**
     * 订单编号
     */
    private Long orderId;
    /**
     * 开团需要人数
     *
     * 关联 {@link CombinationActivityDO#getUserSize()}
     */
    private Integer userSize;
    /**
     * 已加入拼团人数
     */
    private Integer userCount;
    /**
     * 是否虚拟成团
     *
     * 默认为 false。
     * 拼团过期都还没有成功,如果 {@link CombinationActivityDO#getVirtualGroup()} 为 true,则执行虚拟成团的逻辑,才会更新该字段为 true
     */
    private Boolean virtualGroup;
 
    /**
     * 过期时间
     *
     * 基于 {@link CombinationRecordDO#getStartTime()} + {@link CombinationActivityDO#getLimitDuration()} 计算
     */
    private LocalDateTime expireTime;
    /**
     * 开始时间 (订单付款后开始的时间)
     */
    private LocalDateTime startTime;
    /**
     * 结束时间(成团时间/失败时间)
     */
    private LocalDateTime endTime;
 
}