package com.hzs.member.store.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.domain.member.store.CuStore;
import com.hzs.common.domain.member.store.ext.CuStoreExt;
import com.hzs.member.store.param.StoreQueryParam;
import com.hzs.member.store.vo.CuStoreVO;
import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;

import java.util.List;

/**
 * 店铺设置 服务类
 *
 * @author hzs
 * @since 2023-05-04
 */
public interface ICuStoreService extends IService<CuStore> {

    /**
     * @description: 查询店铺列表
     * @author: zhang jing
     * @date: 2023/5/4 17:55
     * @param: [storeVO]
     * @return: java.util.List<com.hzs.member.store.vo.CuStoreVO>
     **/
    List<CuStoreVO> queryStoreList(CuStoreVO storeVO);

    /**
     * @description: 校验店铺订单
     * @author: zhang jing
     * @date: 2023/10/31 17:23
     * @param: [storeVO]
     * @return: java.util.List<com.hzs.member.store.vo.CuStoreVO>
     **/
    CuStoreVO checkOrder(CuStoreVO storeVO);


    /**
     * @description: 添加店铺
     * @author: zhang jing
     * @date: 2023/10/12 11:36
     * @param: [store, currency]
     * @return: boolean
     **/
    boolean saveStore(CuStore store, R<CurrencyDTO> currency, CuMember member);

    /**
     * @description: 批量删除
     * @author: zhang jing
     * @date: 2023/10/31 15:30
     * @param: [pkId]
     * @return: boolean
     **/
    boolean batchDelete(String pkId);

    List<CuStore> selectMaxList(Integer pkCountry);

    /*
     * @description: 查询所有国家的店铺
     * @author: sui q
     * @date: 2024/4/3 10:16
     * @param: null null
     **/
    List<CuStoreExt> queryAllMemberStore();

    /**
     * 查询会员端店铺列表
     *
     * @param param 查询参数
     * @return
     */
    List<CuStoreExt> queryStoreApiList(StoreQueryParam param);

    /**
     * @description: 店铺配置发起签呈
     * @author: zhang jing
     * @date: 2024/4/3 11:32
     * @param: [custoreVO]
     * @return: boolean
     **/
    boolean petition(CuStoreVO custoreVO);

    /**
     * @description: 店铺配置签呈审批
     * @author: zhang jing
     * @date: 2024/4/3 11:51
     * @param: [approvalBusinessResultDTO]
     * @return: boolean
     **/
    boolean cuStoreByBusinessNo(ApprovalBusinessResultDTO approvalBusinessResultDTO);

    /**
     * @description: 查询店铺等级值
     * @author: zhang jing
     * @date: 2024/4/9 11:50
     * @param: [param]
     * @return: java.lang.Integer
     **/
    CuStoreVO queryStoreLevelById(CuStoreVO param);

    /**
     * @description: 修改店铺信息
     * @author: zhang jing
     * @date: 2024/7/4 14:05
     * @param: [cuStore]
     * @return: int
     **/
    int updateStore(CuStore cuStore);

}
