package cn.iocoder.yudao.module.custom.service;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.custom.entity.CustomerActive;
import cn.iocoder.yudao.module.custom.vo.CustomerActivePageReqVO;
import cn.iocoder.yudao.module.custom.vo.CustomerActiveSaveReqVO;
import cn.iocoder.yudao.module.member.vo.ActiveMainPageReqVO;
import cn.iocoder.yudao.module.member.vo.ActiveMainRespVO;
import cn.iocoder.yudao.module.order.entity.RepairOrderInfo;
import com.baomidou.mybatisplus.extension.service.IService;

import javax.validation.Valid;
import java.util.List;

/**
 * 用户参与活动记录 Service 接口
 *
 * @author pqz
 */
public interface CustomerActiveService extends IService<CustomerActive> {


    /**
     * 参与活动
     *
     * @param saveReqVO CustomerActiveSaveReqVO实体
     * @author PQZ
     * @date 9:57 2024/9/21
     **/
    RepairOrderInfo attendActive(CustomerActiveSaveReqVO saveReqVO);


    /**
     * 新版参与活动方法
     * @author PQZ
     * @date 11:38 2024/9/28 
     * @param saveReqVO CustomerActiveSaveReqVO
     * @return cn.iocoder.yudao.module.order.entity.RepairOrderInfo
    **/
    RepairOrderInfo attendActiveOrder(CustomerActiveSaveReqVO saveReqVO);


    /**
     * 充值
     * @author PQZ
     * @date 16:25 2024/9/28
     * @param saveReqVO CustomerActiveSaveReqVO 实体
     * @return cn.iocoder.yudao.module.order.entity.RepairOrderInfo
    **/
    RepairOrderInfo recharge(CustomerActiveSaveReqVO saveReqVO);


    /**
     * 删除用户参与活动记录
     *
     * @param id 编号
     */
    void deleteCustomerActive(String id);

    /**
     * 获得用户参与活动记录
     *
     * @param id 编号
     * @return 用户参与活动记录
     */
    CustomerActive getCustomerActive(String id);



    /**
     * 获得用户参与活动记录分页
     *
     * @param pageReqVO 分页查询
     * @return 用户参与活动记录分页
     */
    PageResult<CustomerActive> getCustomerActivePage(CustomerActivePageReqVO pageReqVO);


    /**
     * 可参与营销活动
     * @author PQZ
     * @date 16:18 2024/9/23
     * @param pageReqVO ActiveMainPageReqVO 实体
     * @return java.util.List<cn.iocoder.yudao.module.member.vo.ActiveMainRespVO>
    **/
    List<ActiveMainRespVO> isJoinActive(ActiveMainPageReqVO pageReqVO);

}