package com.cool.store.service;

import com.cool.store.context.LoginUserInfo;
import com.cool.store.dto.decoration.ConstructionScheduleDTO;
import com.cool.store.dto.decoration.DecorationModelDTO;
import com.cool.store.dto.decoration.ThreeAcceptanceDTO;
import com.cool.store.request.*;


import com.cool.store.response.ThreeSignResponse;
import com.cool.store.vo.*;
import com.cool.store.vo.Fitment.DecorationStageVO;
import com.cool.store.vo.Fitment.DesignInfoVo;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @Auther: WangShuo
 * @Date: 2024/04/28/下午4:45
 * @Version 1.0
 * @注释:
 */
public interface DecorationService {

    /**
     * @Auther: wangshuo
     * @Date: 2024/4/28
     * @description:获取设计阶段子阶段信息
     */
    DesignInfoVo  DesignInfo(Long shopId);
    /**
     * @Auther: wangshuo
     * @Date: 2024/4/30
     * @description:获取装修款阶段信息
     */
    DecorationStageVO getDecorationGoldStage(Long shopId);
    /**
     * @Auther: wangshuo
     * @Date: 2024/4/28
     * @description:获取装修款和支付二维码
     */
    DecorationModelDTO decorationModel(Long shopId);
    /**
     * @Auther: wangshuo
     * @Date: 2024/4/28
     * @description:提交装修款付款凭证
     */
    Boolean submitDecorationModel(LinePaySubmitRequest LinePaySubmitRequest, PartnerUserInfoVO partnerUserInfoVO);

    /**
     * @Auther: wangshuo
     * @Date: 2024/4/29
     * @description:获得装修款信息
     */
    LinePayVO getDecorationModel(Long shopId, PartnerUserInfoVO partnerUserInfoVO);
    /**
     * @Auther: wangshuo
     * @Date: 2024/4/28
     * @description:施工阶段下的信息
     */
    List<ConstructionScheduleDTO> getConstruction(Long shopId);
    /**
     * @Auther: wangshuo
     * @Date: 2024/4/29
     * @description:获取施工阶段信息
     */
    ConstructionScheduleDTO  getConstructionInfo(Long shopId);
    /**
     * @Auther: wangshuo
     * @Date: 2024/4/29
     * @description:提交三方验收检查项
     */
    Boolean submitThreeCheck(ThreeAcceptanceCheckRequest request);
    /**
     * @Auther: wangshuo
     * @Date: 2024/5/6
     * @description:查看三方验收检查项
     */
    ThreeAcceptanceCheckRequest getThreeChecks(Long shopId);
    /**
     * @Auther: wangshuo
     * @Date: 2024/5/6
     * @description:mini提交三方验收检签字
     */
    Boolean miniSubmitAcceptanceSign(ThreeAcceptanceRequest request);
    /**
     * @Auther: wangshuo
     * @Date: 2024/5/6
     * @description:pc提交三方验收检签字
     */
    Boolean pcSubmitAcceptanceSign(ThreeAcceptanceRequest request);
    /**
     * @Auther: wangshuo
     * @Date: 2024/5/6
     * @description:查看三方验收签字
     */
    ThreeSignResponse getThreeAcceptanceSign(Long shopId);
    /**
     * @Auther: wangshuo
     * @Date: 2024/5/3
     * @description:预约验收
     */
    Boolean bookingAcceptance(BookingAcceptanceRequest response,LoginUserInfo user);

    /**
     * @Auther: wangshuo
     * @Date: 2024/5/3
     * @description:获取三方验收列表
     */
    PageInfo<fitmentCheckVO> getFitmentAcceptanceList(AcceptanceListRequest request, LoginUserInfo user);
/**
 * @Auther: wangshuo
 * @Date: 2024/5/11
 * @description:三方获取验收列表详情
 */
    fitmentCheckVO getAcceptanceDetail(Long shopId, LoginUserInfo user);


    /**
     * 提交设计数据
     * @param request
     * @param user
     * @return
     */
    Boolean submitDecorationDesign(DecorationDesignRequest request, LoginUserInfo user);

    /**
     * 获取设计数据
     * @param shopId
     * @return
     */
    DecorationDesignVO getDecorationDesign(Long shopId);


    /**
     * 提交装修数据
     * @param request
     * @param user
     * @return
     */
    Boolean submitConstructionData(ConstructionRequest request,LoginUserInfo user);

    /**
     * 查询装修数据
     * @param shopId
     * @return
     */
    ConstructionDataVO getConstructionData(Long shopId);

    /**
     *  确认设计数据方案
     * @param request
     * @param user
     * @return
     */
    Boolean confirmDesign(DecorationDesignRequest request, LoginUserInfo user);

    /**
     * 装修阶段确认完成
     * @param shopId
     * @param user
     * @return
     */
    Boolean confirmComplete(Long shopId, LoginUserInfo user);
}
