package shop.alien.storeplatform.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.transaction.annotation.Transactional;
import shop.alien.entity.store.LifeGroupBuyMain;
import shop.alien.entity.store.LifeGroupBuyThali;
import shop.alien.entity.store.dto.LifeGroupBuyDto;
import shop.alien.entity.store.vo.LifeGroupBuyThaliVo;
import shop.alien.entity.storePlatform.vo.LifeGroupBuyPlatformDto;

/**
 * 团购服务接口
 * @date 2025-11-11
 */
public interface LifeGroupBuyPlatformService extends IService<LifeGroupBuyMain> {

    /**
     * 保存团购草稿
     *
     * @param lifeGroupBuyDto 团购数据
     * @return 是否保存成功
     * @date 2025-11-11
     */
    @Transactional(rollbackFor = Exception.class)
    boolean saveDraft(LifeGroupBuyPlatformDto lifeGroupBuyDto);

    /**
     * 保存团购并返回套餐信息
     *
     * @param lifeGroupBuyDto 团购数据
     * @return 最新套餐记录
     * @date 2025-11-11
     */
    LifeGroupBuyThali saveThali(LifeGroupBuyPlatformDto lifeGroupBuyDto);

    /**
     * 查询团购套餐列表
     *
     * @param page      页码
     * @param size      每页数量
     * @param storeId   门店编号
     * @param status    状态
     * @param groupName 团购名称
     * @param groupType 团购类型
     * @return 分页数据
     * @date 2025-11-11
     */
    IPage<LifeGroupBuyThaliVo> getThaliList(int page, int size, String storeId, String status, String groupName, String groupType, String reviewType, String groupNo);

    /**
     * 根据编号查询团购详情
     *
     * @param id     团购编号
     * @param userId 用户编号
     * @return 团购详情
     * @date 2025-11-11
     */
    LifeGroupBuyPlatformDto getThaliById(String id, String userId);

    /**
     * 更新团购状态
     *
     * @param id               团购编号
     * @param status           状态值
     * @param approvalComments 审核意见
     * @return 是否更新成功
     * @date 2025-11-11
     */
    boolean updateStatus(String id,String status, String approvalComments);

    /**
     * 删除团购
     *
     * @param id        团购编号
     * @param groupType 团购类型
     * @return 是否删除成功
     * @date 2025-11-11
     */
    boolean delThaliById(String id,String groupType);

    /**
     * 更新团购库存
     *
     * @param id  团购编号
     * @param num 库存数量
     * @return 是否更新成功
     * @date 2025-11-11
     */
    boolean updateNum(String id, String num);
}