package shop.alien.store.service;

import com.baomidou.mybatisplus.extension.service.IService;
import shop.alien.entity.store.LifeDiscountCouponFriendRule;
import shop.alien.entity.store.LifeDiscountCouponStoreFriend;
import shop.alien.entity.store.UserLoginInfo;
import shop.alien.entity.store.dto.LifeDiscountCouponStoreFriendDto;
import shop.alien.entity.store.vo.LifeDiscountCouponFriendRuleDetailVo;
import shop.alien.entity.store.vo.LifeDiscountCouponFriendRuleVo;
import shop.alien.entity.store.vo.LifeDiscountCouponStoreFriendVo;

import java.util.List;

/**
 * <p>
 * 优惠券商户发放好友优惠券关系表	 服务类
 * </p>
 *
 * @author ssk
 * @since 2025-02-19
 */
public interface LifeDiscountCouponStoreFriendService extends IService<LifeDiscountCouponStoreFriend> {

    /**
     * 获取该店铺的好友及其可用优惠券列表
     */
    List<LifeDiscountCouponStoreFriendVo> getFriendCouponList(UserLoginInfo userLoginInfo, String friendUserId);

    /**
     * 设置该好友店铺发放什么优惠券
     */
    boolean setFriendCoupon(UserLoginInfo userLoginInfo, LifeDiscountCouponStoreFriendDto lifeDiscountCouponStoreFriendDto);

    /**
     * 消费后发放好友优惠券并返回列表
     */
    List<LifeDiscountCouponStoreFriendVo> issueFriendCoupon(LifeDiscountCouponStoreFriendDto lifeDiscountCouponStoreFriendDto);

    /**
     * 获取该订单发放的好友列表
     */
    List<LifeDiscountCouponStoreFriendVo> getSendCoupons(LifeDiscountCouponStoreFriendDto lifeDiscountCouponStoreFriendDto);

    /**
     * 修改好友优惠劵发布状态
     *
     * @param giveCouponId
     * @param releaseType
     */
    int releaseAndCancelFriendStoreCoupon(String giveCouponId, String releaseType);

    LifeDiscountCouponFriendRuleVo saveFriendCouponRule(LifeDiscountCouponFriendRule lifeDiscountCouponFriendRule);

    void delFriendCouponRule(String id);

    List<LifeDiscountCouponFriendRuleDetailVo> getReceivedFriendCouponList(String storeId,String friendStoreUserId);

    List<LifeDiscountCouponFriendRuleVo> getRuleList(String storeId);

    LifeDiscountCouponFriendRuleVo getRuleById(String id);

    List<LifeDiscountCouponFriendRuleVo> getReceivedSendFriendCouponList(String storeUserId, String friendStoreUserId,String storeName);
}
