package com.liquidnet.service.goblin.service;

import com.liquidnet.service.goblin.dto.vo.GoblinStoreCouponVo;
import com.liquidnet.service.goblin.dto.vo.GoblinUseResultVo;
import com.liquidnet.service.goblin.dto.vo.GoblinUserCouponVo;
import com.liquidnet.service.goblin.param.BackCouponParam;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

public interface GoblinCouponService {
    //根据spuId获取 该spu可参与的券活动
    ArrayList<String> getSpuType(String spuId, String storeId);

    //获取 类型券列表
    ArrayList<GoblinStoreCouponVo> getSpuByType(String spuId, String storeId, String type);

    //领取券
    Boolean receiveCoupon(String uid, List<GoblinUserCouponVo> userCouponVoList, GoblinStoreCouponVo storeCouponVo);

    //我的券列表 [类型 1可用 2过期/已使用]
    List<GoblinUserCouponVo> getList(String type);

    //是否可用券 [价格] [spuId逗号隔开] [uid]
    Boolean canUse(BigDecimal totalPrice, String spuId, String uid);

    //可用券列表 [价格] [spuId逗号隔开] [uid]
    List<GoblinUserCouponVo> useList(BigDecimal totalPrice, String spuId, String uid);

    //使用券 [券id] [消费内容] [价格] [spuId逗号隔开]
    GoblinUseResultVo useCoupon(String ucouponId,String content, BigDecimal totalPrice, String spuId, String uid);

    //回退券 [list<Data>] [券id ， 用户id]
    Boolean backCoupon(List<BackCouponParam> params);
}
