package com.cyksj.service.mange.coupon;

import com.cyksj.model.entity.Coupon;
import com.cyksj.model.entity.CouponDistributePopularize;
import com.cyksj.model.entity.CouponRecommend;
import com.cyksj.model.entity.CouponUser;
import com.cyksj.model.request.CouponActiveReq;
import com.cyksj.model.request.CouponDistributeReq;

/*
 *项目名: netflix
 *文件名: CouponCommonService
 *创建者: JavaZou
 *创建时间:2022/11/17 16:59
 */
public interface CouponCommonService {
	/**
	 * 新增优惠券
	 *
	 * @param coupon
	 */
	void saveCoupon(Coupon coupon) throws Exception;

	/**
	 * 更新优惠券
	 *
	 * @param coupon
	 */
	void updateCoupon(Coupon coupon) throws Exception;

	/**
	 * 发放优惠券
	 *
	 * @param couponActiveReq
	 */
	void sendCoupon(CouponActiveReq couponActiveReq);

	/**
	 * 设置为推荐优惠券
	 *
	 * @param couponRecommend
	 */
	void setHotCoupon(CouponRecommend couponRecommend);

	/**
	 * 关联推广者
	 *
	 * @param couponDistributeReq
	 */
	void setPopularizeRelation(CouponDistributeReq couponDistributeReq);

	/**
	 * 设置推广者优惠券兑换码
	 *
	 * @param couponDistributePopularize
	 */
	void setPopularizeRelationCode(CouponDistributePopularize couponDistributePopularize);

	/**
	 * 发放优惠券
	 */
	void corpSendCoupon(String unionid, Long couponId) throws Exception;

	/**
	 * 发放优惠券至用户
	 */
	Boolean sendCouponToUser(Long userId, Long couponId, Long couponActiveId, Long recommendId, Long popularizeId, CouponUser.Channel channel);
}