package com.hai.goods.service;

import com.hai.entity.GoodsPresent;
import com.hai.entity.GoodsPresentRecord;
import com.hai.entity.HighChildOrder;
import com.hai.entity.HighOrder;

import java.util.List;
import java.util.Map;

/**
 * @serviceName GoodsPresentService.java
 * @author Sum1Dream
 * @version 1.0.0
 * @Description // 商品赠送业务
 * @createTime 14:17 2023/4/17
 **/
public interface GoodsPresentService {

    /**
     * @Author Sum1Dream
     * @Name insertGoodsPresent
     * @Description // 新增
     * @Date 15:08 2023/4/11
     * @Param [GoodsPresent]
     * @Return void
     */
    void insertPresent(GoodsPresent present);

    /**
     * @Author Sum1Dream
     * @Name updateGoodsPresent
     * @Description // 更新
     * @Date 15:14 2023/4/11
     * @Param [GoodsPresent]
     * @Return void
     */
    void updatePresent(GoodsPresent present);

    /**
     * @Author Sum1Dream
     * @Name getGoodsPresentList
     * @Description // 查询
     * @Date 15:17 2023/4/11
     * @Param [map]
     * @Return java.util.List<com.hai.entity.GoodsPresent>
     */
    List<GoodsPresent> getPresentList(Map<String , Object> map);

    List<GoodsPresent> getPresentList(Long goodsId);


    /**
     * @Author Sum1Dream
     * @Name findGoodsPresentById
     * @Description // 根据id查询详情
     * @Date 16:19 2023/4/11
     * @Param [id]
     * @Return com.hai.entity.GoodsPresent
     */
    GoodsPresent findPresentById(Long id);

    /**
     * @Author Sum1Dream
     * @Name deletePresent
     * @Description // 删除
     * @Date 17:37 2023/4/13
     * @Param [id]
     * @Return void
     */
    void deletePresent(Long id);


    /**
     * @Author Sum1Dream
     * @Name insertPresentRecord
     * @Description //TODO
     * @Date 14:46 2023/4/27
     * @Param [record]
     * @Return void
     */
    void insertPresentRecord(GoodsPresentRecord record);

    /**
     * @Author Sum1Dream
     * @Name getPresentRecord
     * @Description //TODO
     * @Date 14:46 2023/4/27
     * @Param [map]
     * @Return java.util.List<com.hai.entity.GoodsPresentRecord>
     */
    List<GoodsPresentRecord> getPresentRecord(Map<String , Object> map);

    void presentUser(HighOrder order , HighChildOrder highChildOrder);

    /**
     * @Author Sum1Dream
     * @Name preGiveUser
     * @Description // 预送用户卡券
     * @Date 14:45 2023/5/10
     * @Param [order, highChildOrder]
     * @Return void
     */
    void preGiveUser( HighChildOrder highChildOrder);
}
