package com.hzs.retail.member.service;

import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.retail.member.CuMemberRetailRegion;
import com.hzs.common.domain.retail.member.ext.CuMemberRetailRegionExt;
import com.hzs.common.domain.system.base.BdArea;
import com.hzs.retail.member.param.RetailMemberRegionParam;
import com.hzs.retail.member.vo.UnboundAreaVO;

import java.util.List;

/**
 * 新零售会员区域配置 服务类
 */
public interface ICuMemberRetailRegionService extends IService<CuMemberRetailRegion> {

    /**
     * 查询会员收益区域
     *
     * @param pkMember   会员ID
     * @param gradeValue 等级值
     * @param systemType 系统类型
     * @return
     */
    CuMemberRetailRegionExt getRegionByMember(Long pkMember, Integer gradeValue, Integer systemType);

    /**
     * 设置会员收益区域
     *
     * @param param 设置参数
     * @return
     */
    String setRegion(RetailMemberRegionParam param);

    /**
     * 未绑定收益区域
     **/
    List<UnboundAreaVO> unboundAreaList(Integer pkCountry, Integer systemType);

    /**
     * 查询会员收益区域
     **/
    List<CuMemberRetailRegionExt> memberretailRegList(CuMemberRetailRegionExt mrrExt);

    /**
     * 会员购买订单数量
     *
     * @param pkMember      会员ID
     * @param systemType    系统类型
     * @param waresCodeList 商品列表
     * @return
     */
    int getOrderCount(Long pkMember, Integer systemType, List<String> waresCodeList);

    /**
     * 查询可选收益区域树结构 入参常量为 RetailRegionTreeQueryConstants
     *
     * @param queryType
     * @param pkMember
     * @return
     */
    List<Tree<String>> getRegionTreeList(String queryType, Long pkMember);
    List<BdArea> getRegionList(String queryType, Long pkMember);

    /**
     * 插入或更新区域选择
     *
     * @param retailRegion
     * @return
     */
    int mergeMemberRetailRegion(CuMemberRetailRegion retailRegion);

}
