package com.jsowell.pile.service;

import com.jsowell.pile.domain.MemberBasicInfo;
import com.jsowell.pile.dto.BindingCarNoDTO;
import com.jsowell.pile.vo.uniapp.MemberVO;
import com.jsowell.pile.vo.uniapp.MemberWalletLogVO;
import com.jsowell.pile.vo.uniapp.PersonalPileInfoVO;
import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO;

import java.util.List;

/**
 * 会员基础信息Service接口
 *
 * @author jsowell
 * @date 2022-10-12
 */
public interface IMemberBasicInfoService {
	/**
	 * 查询会员基础信息
	 *
	 * @param id 会员基础信息主键
	 * @return 会员基础信息
	 */
	public MemberBasicInfo selectMemberBasicInfoById(Integer id);

	/**
	 * 查询会员基础信息列表
	 *
	 * @param memberBasicInfo 会员基础信息
	 * @return 会员基础信息集合
	 */
	// public List<MemberBasicInfo> selectMemberBasicInfoList(MemberBasicInfo memberBasicInfo);

	/**
	 * 新增会员基础信息
	 *
	 * @param memberBasicInfo 会员基础信息
	 * @return 结果
	 */
	public int insertMemberBasicInfo(MemberBasicInfo memberBasicInfo);

	/**
	 * 修改会员基础信息
	 *
	 * @param memberBasicInfo 会员基础信息
	 * @return 结果
	 */
	public int updateMemberBasicInfo(MemberBasicInfo memberBasicInfo);

	/**
	 * 批量删除会员基础信息
	 *
	 * @param ids 需要删除的会员基础信息主键集合
	 * @return 结果
	 */
	public int deleteMemberBasicInfoByIds(List<Integer> ids);


	/**
	 * 通过物理卡号查询基本信息
	 *
	 * @param physicsCard 物理卡号
	 * @return 会员基础信息
	 */
	MemberVO selectInfoByPhysicsCard(String physicsCard);

	/**
	 * 根据手机号和运营商id查询会员信息
	 * @param phone 手机号 mobile number
	 * @param merchantId 运营商id
	 * @return 会员信息
	 */
	MemberBasicInfo selectInfoByMobileNumberAndMerchantId(String phone, String merchantId);

	/**
	 * 根据手机号查询会员信息
	 * @param mobileNumber 手机号
	 * @return
	 */
	MemberBasicInfo selectInfoByMobileNumber(String mobileNumber);

	/**
	 * 根据会员id查询会员信息
	 * @param memberId 会员id
	 * @return
	 */
	MemberBasicInfo selectInfoByMemberId(String memberId);

	/**
	 * 更新会员余额
	 * @param dto
	 * @return
	 */
	int updateMemberBalance(UpdateMemberBalanceDTO dto);

	/**
	 *
	 * @param memberId
	 * @return
	 */
	MemberVO queryMemberInfoByMemberId(String memberId);

	List<MemberVO> selectMemberList(String mobileNumber, String nickName);

	/**
	 * 查询用户账户余额变动信息
	 * @param memberId 会员id
	 * @param type 1-进账；2-出账 不传查全部
	 */
	List<MemberWalletLogVO> getMemberBalanceChanges(String memberId, String type);

	/**
	 * 通过memberId查询会员的个人桩信息
	 * @param memberId
	 * @return
	 */
	List<PersonalPileInfoVO> getMemberPersonPileInfo(String memberId);

}
