package cn.lili.modules.wallet.entity.dos; import cn.lili.common.security.sensitive.Sensitive; import cn.lili.common.security.sensitive.enums.SensitiveStrategy; import cn.lili.modules.wallet.entity.dto.MemberWalletUpdateDTO; import cn.lili.modules.wallet.entity.enums.DepositServiceTypeEnum; import cn.lili.mybatis.BaseIdEntity; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; /** * 预存款日志实体 * * @author pikachu * @since 2020-02-25 14:10:16 */ @Data @TableName("li_wallet_log") @ApiModel(value = "钱包变动日志") @NoArgsConstructor public class WalletLog extends BaseIdEntity { private static final long serialVersionUID = -1599270544927161096L; @ApiModelProperty(value = "会员id") private String memberId; @ApiModelProperty(value = "会员名称") @Sensitive(strategy = SensitiveStrategy.PHONE) private String memberName; @ApiModelProperty(value = "金额") private Double money; /** * @see DepositServiceTypeEnum */ @ApiModelProperty(value = "业务类型") private String serviceType; @ApiModelProperty(value = "日志明细") private String detail; @CreatedBy @TableField(fill = FieldFill.INSERT) @ApiModelProperty(value = "创建者", hidden = true) private String createBy; @CreatedDate @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @TableField(fill = FieldFill.INSERT) @ApiModelProperty(value = "创建时间", hidden = true) private Date createTime; /** * 构建新的预存款日志对象 * * @param memberName 会员名称 * @param memberWalletUpdateDTO 变动模型 */ public WalletLog(String memberName, MemberWalletUpdateDTO memberWalletUpdateDTO) { this.setMemberId(memberWalletUpdateDTO.getMemberId()); this.setMemberName(memberName); this.setMoney(memberWalletUpdateDTO.getMoney()); this.setDetail(memberWalletUpdateDTO.getDetail()); this.setServiceType(memberWalletUpdateDTO.getServiceType()); } /** * 构建新的预存款日志对象 * * @param memberName 会员名称 * @param memberWalletUpdateDTO 变动模型 * @param isReduce 是否是消费 */ public WalletLog(String memberName, MemberWalletUpdateDTO memberWalletUpdateDTO, boolean isReduce) { this.setMemberId(memberWalletUpdateDTO.getMemberId()); this.setMemberName(memberName); this.setMoney(isReduce ? -memberWalletUpdateDTO.getMoney() : memberWalletUpdateDTO.getMoney()); this.setDetail(memberWalletUpdateDTO.getDetail()); this.setServiceType(memberWalletUpdateDTO.getServiceType()); } }