| <?xml version="1.0" encoding="UTF-8"?> | 
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | 
| <mapper namespace="cc.mrbird.febs.vip.mapper.MallVipBenefitsRecordMapper"> | 
|   | 
|     <select id="selectMemberBenefitsRecordInPage" resultType="cc.mrbird.febs.vip.entity.MallVipBenefitsRecord"> | 
|         SELECT | 
|             mallMember.name memberName, | 
|             mallMember.phone memberPhone, | 
|             config.name levelName, | 
|             benefits.name benefitsName, | 
|             benefitsDetail.link_type, | 
|             case when benefitsDetail.link_type = 3 then coupon.name | 
|                 when benefitsDetail.link_type = 2 then goods.goods_name | 
|                 else '-' | 
|                 end receiveName, | 
|             case when record.id is not null then 1 | 
|                 else 2 end hasReceive, | 
|             record.id, | 
|             record.receive_cnt, | 
|             record.receive_time, | 
|             record.receive_type, | 
|             record.status | 
|         FROM mall_member mallMember | 
|             inner join mall_vip_config config on mallMember.level = config.code | 
|             inner join mall_vip_config_benefits configBenefits on config.id = configBenefits.config_id | 
|             inner join mall_vip_benefits benefits on configBenefits.benefits_id = benefits.id and benefits.gain_type = 2 and benefits.type != 1 | 
|             inner join mall_vip_benefits_details benefitsDetail on benefits.id=benefitsDetail.benefits_id and (benefitsDetail.link_type = 2 or benefitsDetail.link_type = 3) | 
|             left join mall_goods_coupon coupon on benefitsDetail.content = coupon.id | 
|             left join mall_goods goods on benefitsDetail.content = goods.ID | 
|             LEFT JOIN mall_vip_benefits_record record ON record.member_id = mallMember.ID and record.benefits_type = 2 | 
|         <where> | 
|             1=1 | 
|             <if test="record.memberPhone != null and record.memberPhone != ''"> | 
|                 and mallMember.phone = #{record.memberPhone} | 
|             </if> | 
|             <if test="record.status != null"> | 
|                 and record.status = #{record.status} | 
|             </if> | 
|             <if test="record.hasReceive != null and record.hasReceive == 1"> | 
|                 and record.id is not null | 
|             </if> | 
|             <if test="record.hasReceive != null and record.hasReceive == 2"> | 
|                 and record.id is null | 
|             </if> | 
|             <if test="record.birthday != null"> | 
|                 and date_format(mallMember.birthday, '%m-%d') = date_format(#{record.birthday}, '%m-%d') | 
|             </if> | 
|             <if test="record.birthdayStart != null"> | 
|                 and date_format(mallMember.birthday, '%Y-%m-%d') >= date_format(#{record.birthdayStart}, '%Y-%m-%d') | 
|             </if> | 
|             <if test="record.birthdayEnd != null"> | 
|                 and date_format(mallMember.birthday, '%Y-%m-%d') <= date_format(#{record.birthdayEnd}, '%Y-%m-%d') | 
|             </if> | 
|             <if test="record.receiveStartTime != null"> | 
|                 and date_format(mallMember.receiveTime, '%Y-%m-%d') >= date_format(#{record.receiveStartTime}, '%Y-%m-%d') | 
|             </if> | 
|             <if test="record.receiveEndTime != null"> | 
|                 and date_format(mallMember.receiveTime, '%Y-%m-%d') <= date_format(#{record.receiveEndTime}, '%Y-%m-%d') | 
|             </if> | 
|         </where> | 
|     </select> | 
|   | 
| </mapper> |