package com.jsowell.pile.mapper;

import com.jsowell.pile.domain.MemberGroup;
import com.jsowell.pile.dto.MemberGroupDTO;
import com.jsowell.pile.vo.base.MemberGroupStationVO;
import com.jsowell.pile.vo.uniapp.customer.MemberVO;
import com.jsowell.pile.vo.web.MemberDiscountVO;
import com.jsowell.pile.vo.web.MemberGroupVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 会员组Mapper接口
 *
 * @author jsowell
 * @date 2023-12-26
 */
@Repository
public interface MemberGroupMapper {
    /**
     * 查询会员组
     *
     * @param id 会员组主键
     * @return 会员组
     */
    MemberGroup selectMemberGroupById(Long id);

    /**
     * 查询会员组列表
     *
     * @param memberGroup 会员组
     * @return 会员组集合
     */
    List<MemberGroup> selectMemberGroupList(MemberGroup memberGroup);

    /**
     * 新增会员组
     *
     * @param memberGroup 会员组
     * @return 结果
     */
    int insertMemberGroup(MemberGroup memberGroup);

    /**
     * 修改会员组
     *
     * @param memberGroup 会员组
     * @return 结果
     */
    int updateMemberGroup(MemberGroup memberGroup);

    /**
     * 删除会员组
     *
     * @param id 会员组主键
     * @return 结果
     */
    int deleteMemberGroupById(Long id);

    /**
     * 批量删除会员组
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteMemberGroupByIds(Long[] ids);

    List<MemberGroupVO> queryMemberGroupList(MemberGroupDTO dto);

    /**
     * 查询会员折扣
     * @param merchantId
     * @param stationId
     * @param memberId
     * @return
     */
    MemberDiscountVO queryMemberDiscount(@Param("merchantId") String merchantId, @Param("stationId") String stationId, @Param("memberId") String memberId);

    MemberGroupVO queryByGroupCodeAndMemberId(@Param("groupCode") String groupCode, @Param("memberId") String memberId);

    List<MemberVO> queryMemberList(@Param("groupCode") String groupCode);

    MemberGroup selectByGroupCode(String groupCode);

    MemberGroupVO queryByStationId(String stationId);

    MemberGroupVO queryByMerchantId(String merchantId);

    /**
     * 查询集团编号
     * @param merchantId 运营商id
     * @param stationId 站点id
     * @param memberId 会员id
     * @return
     */
    String queryMemberGroupCode(@Param("merchantId") String merchantId, @Param("stationId") String stationId, @Param("memberId") String memberId);

    List<MemberGroupStationVO> queryStationList(MemberGroupDTO dto);
}
