package com.hzs.member.base.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.ext.CuMemberRegionExt;
import com.hzs.common.domain.member.region.CuMemberRegion;
import com.hzs.common.domain.system.base.BdArea;
import com.hzs.member.base.param.MemberRegionParam;
import com.hzs.member.base.vo.UnboundAreaVO;

import java.util.List;

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

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

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

    /**
     * 可选择的收益区域
     *
     * @param systemType 系统类型
     * @return
     */
    List<BdArea> listChooseRegion(Integer systemType);

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

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

    /**
     * 批量修改已到期的会员收益区域
     **/
    void batchUpdateRetailRegion();

    /**
     * 定时处理收益区域
     */
    void checkRegion();

    /**
     * 取消收益区域
     *
     * @param pkIdList 收益区域ID
     */
    void cancelRegion(List<Long> pkIdList);

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

    /**
     * 处理重复区域
     *
     * @return
     */
    void handleRepeatRegion();


    int validateBindCount(CuMemberRegionExt mrrExt, Integer yesOrNoValue, Integer systemType, Long pkId);
    int validateBindCount(MemberRegionParam mrrExt, Integer yesOrNoValue, Integer systemType, Long pkId);

    Long getRegionVertexPkIdByPkMember(Long pkMember);
}
