package com.sonic.lion.domain.input;

import lombok.Data;

import java.time.Duration;
import java.time.LocalDateTime;

@Data
public class RefundVipInput {

    /**
     * 用户Id
     */
    private Long userId;

    /**
     * 会员类型
     */
    private String memberType;

    /**
     * 赠送的会员类型
     */
    private String rewardMemberType;

    /**
     * 到期时间
     */
    private LocalDateTime endTime;

    /**
     * 赠送的到期时间
     */
    private LocalDateTime rewardEndTime;

    /**
     * /**
     * 1、endTime 未过期，endTime - 当前时间 = 会员剩余时间 （取memberType为会员类型）
     * 2、rewardEndTime 未过期，endTime为空或已过期，rewardEndTime - 当前时间 = 会员剩余时间（取rewardMemberType为会员类型）
     * 3、rewardEndTime未过期，endTime未过期，rewardEndTime - endTime = 会员剩余时间（取rewardMemberType为会员类型）
     */


    /**
     * 订阅应该退的
     *
     * @return
     */
    public long secondsWhenEndTimeNotExp() {
        LocalDateTime now = LocalDateTime.now();
        if (endTime != null && endTime.isAfter(now)) {
            Duration duration = Duration.between(now, endTime);
            return duration.getSeconds();
        }
        return 0;
    }

    /**
     * 赠送 应该退的
     *
     * @return
     */
    public long secondsWhenRewardEndTimeNotExp() {
        LocalDateTime now = LocalDateTime.now();
        if (rewardEndTime != null && rewardEndTime.isAfter(now)) {
            if (endTime != null && endTime.isAfter(now)) {
                Duration duration = Duration.between(endTime, rewardEndTime);
                return duration.getSeconds();
            }
            if (endTime == null || endTime.isBefore(now)) {
                Duration duration = Duration.between(now, rewardEndTime);
                return duration.getSeconds();
            }
        }
        return 0;
    }
}
