package com.czg.order.dto;

import com.czg.utils.AssertUtil;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;

/**
 * 小程序支付 其它类型
 * payType 必填  支付方式，ALIPAY 支付宝，WECHAT 微信
 * openId  必填
 * @author ww
 */
@Data
@Accessors(chain = true)
public class LtPayOtherDTO {
    /**
     * 积分商品id/团购商品id
     */
    @NotNull(message = "需要购买的商品不能为空")
    private Long paramId;
    /**
     * 店铺Id
     */
    @NotNull(message = "未指定店铺")
    private Long shopId;
    /**
     * 兑换数量
     */
    @NotNull(message = "兑换数量不能为空")
    private int number;
    /**
     * 支付方式，ALIPAY 支付宝，WECHAT 微信
     */
    private String payType;
    /**
     * 用户openId
     */
    private String openId;

    /**
     * 用户Id 对应 用户表 userID
     */
    private Long userId;

    /**
     * 用户IP 后端填充
     */
    private String ip;
    /**
     * 兑换价格 后端自己计算填充
     */
    private BigDecimal price;

    /**
     * 对应的记录Id 支付回调向该内容进行回填
     * 积分商品为 mk_points_goods_record 主键id
     * 团购商品为 gb_order_detail 主键id
     *
     */
    private Long recordId;
    /**
     * 霸王餐充值为 订单id 会员充值为 活动id
     */
    private Long relatedId;

    public void checkPayInfo(){
        AssertUtil.isBlank(payType, "支付方式不能为空");
        AssertUtil.isBlank(openId, "openId 不能为空");
        AssertUtil.isNull(userId, "用户Id 不能为空");
    }
}
