package com.czg.service.order.service;

import com.czg.resp.CzgResult;
import com.czg.service.order.dto.VipMemberPayParamDTO;
import com.czg.service.order.dto.VipPayParamDTO;
import com.czg.service.order.dto.VipRefundDTO;

import java.math.BigDecimal;
import java.util.Map;


/**
 * 用户余额 充值/会员购买开通
 * @author ww
 */
public interface ShopUserPayService {

    //-----------------------------------------------------------------会员支付--------------------------------------------------------------------

    /**
     * 现金充值
     */
    CzgResult<Object> cashPayVip(VipPayParamDTO payParam);

    /**
     * js支付
     */
    CzgResult<Map<String, Object>> jsPayVip(String clintIp, VipPayParamDTO payParam);

    /**
     * 小程序支付
     */
    CzgResult<Map<String, Object>> ltPayVip(String clintIp, VipPayParamDTO payParam);

    /**
     * PC扫码支付
     */
    CzgResult<Map<String, Object>> scanPayVip(String clintIp, VipPayParamDTO payParam);

    /**
     * 聚合反扫
     */
    CzgResult<Map<String, Object>> microPayVip(VipPayParamDTO payParam);
    //-----------------------------------------------------------------会员开通购买 ----------------------------------------------------------

    CzgResult<Map<String, Object>> ltPayMember(String clientIP, VipMemberPayParamDTO payParam);

    CzgResult<Map<String, Object>> recharge(String clientIP, VipPayParamDTO rechargeDTO, Long userId);



    //-----------------------------------------------------------------退款-----------------------------------------------------------------

    /**
     * 退款前校验
     */
    CzgResult<Map<String, BigDecimal>> refundVipBefore(VipRefundDTO payParam);

    /**
     * 会员退款
     */
    CzgResult<Object> refundVip(VipRefundDTO payParam);
}
