package com.liquidnet.service.adam.service;

import com.liquidnet.service.adam.dto.vo.*;
import com.liquidnet.service.adam.entity.AdamEnters;

import java.util.List;

public interface IAdamRdmService {
    boolean setUidByMobile(String mobile, String uid);

    String getUidByMobile(String mobile);

    void delUidByMobile(String mobile);

    boolean setUidByPlatformOpenId(String platform, String openId, String uid);

    String getUidByPlatformOpenId(String platform, String openId);

    void delUidByPlatformOpenId(String platform, String openId);

    boolean setUserInfoVoByUid(String uid, AdamUserInfoVo vo);

    AdamUserInfoVo getUserInfoVoByUid(String uid);

    void delUserInfoVoByUid(String uid);

    boolean setRealInfoVoByUid(String uid, AdamRealInfoVo vo);

    AdamRealInfoVo getRealInfoVoByUid(String uid);

    boolean setCertification(int idType, String idNo, String idName);

    boolean isCertification(int idType, String idNo, String idName);

    boolean setThirdPartVoListByUid(String uid, List<AdamThirdPartInfoVo> voList);

    List<AdamThirdPartInfoVo> getThirdPartVoListByUid(String uid);

    AdamThirdPartInfoVo getThirdPartVoByUidPlatform(String uid, String platform);

    void delThirdPartVoListByUid(String uid);

    boolean setEntersVoByUid(String uid, List<AdamEntersVo> list);

    List<AdamEntersVo> getEntersVoByUid(String uid);

    AdamEntersVo getEntersVoByUidEntersId(String uid, String entersId);

    List<AdamEntersVo> getEntersVoByUidEntersIds(String uid, String... entersIds);

    void delEntersVoByUid(String uid);

    boolean setAddressesVoByUid(String uid, List<AdamAddressesVo> list);

    List<AdamAddressesVo> getAddressesVoByUid(String uid);

    AdamAddressesVo getAddressesVoByUidAddressesId(String uid, String addressesId);

    void delAddressesVoByUid(String uid);

    boolean setBlacklistForMember(List<String> uids);

    List<String> getBlacklistForMember();

    boolean setUserMemberVoByUid(String uid, AdamUserMemberVo vo);

    AdamUserMemberVo getUserMemberVoByUid(String uid);

    void delUserMemberVoByUid(String uid);

    AdamMemberSimpleVo getMemberSimpleVo();

    boolean setMemberVoByMemberId(String memberId, AdamMemberVo vo);

    AdamMemberVo getMemberVoByMemberId(String memberId);

    void delMemberVoByMemberId(String memberId);

    boolean setMemberPriceVoByMemberId(String memberId, List<AdamMemberPriceVo> vos);

    List<AdamMemberPriceVo> getMemberPriceVoByMemberId(String memberId);

    AdamMemberPriceVo getMemberPriceVoByPriceId(String memberId, String memberPriceId);

    boolean setMemberRightsVoByMemberId(String memberId, List<AdamMemberRightsVo> vos);

    List<AdamMemberRightsVo> getMemberRightsVoByMemberId(String memberId);

    String getMemberAgreement();

    boolean setShotMemberOrderVoByOrderNo(String orderNo, AdamMemberOrderVo vo);

    AdamMemberOrderVo getShotMemberOrderVoByOrderNo(String orderNo);

    void delShotMemberOrderVoByOrderNo(String orderNo);

    boolean setMaxMemberNo(int val);

    int incrMemberNo();

    int getMaxMemberNo();

    boolean setMemberCodeVoByCode(String memberCode, AdamMemberCodeVo vo);

    AdamMemberCodeVo getMemberCodeVoByCode(String memberCode);

    /**
     * Temporarily connect Mongo
     */
    AdamMemberCodeVo getMemberCodeVoByBuyOrderNo(String buyOrderNo);

    void delMemberCodeVoByCode(String memberCode);

    boolean setTagsForSex(List<AdamTagVo> voList);

    List<AdamTagVo> getTagsForSex();

    boolean setTagsForMusic(List<AdamTagParentVo> voList);

    List<AdamTagParentVo> getTagsForMusic();
}
