Task.java 3.71 KB
package com.topdraw.business.module.task.domain;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp;

/**
 * @author XiangHan
 * @date 2021-10-22
 */
@Entity
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="tr_task")
public class Task implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    // 任务模板id
    @Column(name = "task_template_id", nullable = false)
    private Long taskTemplateId;

    // 任务重复类型,-1:不限次;1:单次;>1:多次
    @Column(name = "task_repeat_type", nullable = false)
    private Integer taskRepeatType;

    // 任务每日重置 0:不重置;1:重置
    @Column(name = "task_daily_reset", nullable = false)
    private Integer taskDailyReset;

    // 行为量(完成此任务需要多少次相同行为的触发)
    @Column(name = "action_amount", nullable = false)
    private Integer actionAmount;

    // 任务生效时间
    @Column(name = "valid_time")
    private Timestamp validTime;

    // 任务失效时间
    @Column(name = "expire_time")
    private Timestamp expireTime;

    // 显示顺序
    @Column(name = "sequence")
    private Integer sequence;

    // 获得成长值
    @Column(name = "reward_exp", nullable = false)
    private Long rewardExp;

    // 获得积分
    @Column(name = "reward_points", nullable = false)
    private Long rewardPoints;

    // 积分过期时间(空为不过期)
    @Column(name = "reward_points_expire_time")
    private Long rewardPointsExpireTime;

    // 积分获取类型 0:定值;1:随机
    @Column(name = "points_type")
    private Integer pointsType;

    // 随机积分最大值
    @Column(name = "reward_max_points")
    private Integer rewardMaxPoints;

    // 能够获取该任务的用户分组,为空则都能获取
    @Column(name = "groups")
    private String groups;

    // 权益发放策略 0:立即发放;1:次日发放;2:次月发放
    @Column(name = "rights_send_strategy", nullable = false)
    private Integer rightsSendStrategy;

    // 会员等级门槛(0表示无门槛)
    @Column(name = "member_level", nullable = false)
    private Integer memberLevel;

    // 会员vip门槛(0表示没有门槛)
    @Column(name = "member_vip")
    private Integer memberVip;

    // 权益id
    @Column(name = "rights_id")
    private Long rightsId;

    // 权益数量(活动机会次数、优惠券数量、奖品数量)
    @Column(name = "rights_amount")
    private Integer rightsAmount;

    // 权益2id
    @Column(name = "rights2_id")
    private Long rights2Id;

    // 权益2数量
    @Column(name = "rights2_amount")
    private Integer rights2Amount;

    // 权益3id
    @Column(name = "rights3_id")
    private Long rights3Id;

    // 权益3数量
    @Column(name = "rights3_amount")
    private Integer rights3Amount;

    // 状态 0:失效;1:生效
    @Column(name = "status", nullable = false)
    private Integer status;

    // 创建时间
    @CreatedDate
    @Column(name = "create_time")
    private Timestamp createTime;

    // 更新时间
    @LastModifiedDate
    @Column(name = "update_time")
    private Timestamp updateTime;

    public void copy(Task source){
        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
    }
}