package com.ydtech.modules.partner.dao; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydtech.modules.partner.model.PartnerPremiumDetails; import org.apache.ibatis.annotations.*; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; @Mapper public interface PartnerPremiumDetailsMapper extends BaseMapper { @Select("SELECT user_id AS userId, SUM(DISTINCT sumpremium) AS num FROM partner_premium_details ${ew.customSqlSegment}") List> selectTotalSumPremiumGroupBy(@Param("ew") QueryWrapper queryWrapper); @Select("SELECT SUM(db.sumpremium) FROM (SELECT DISTINCT orderno,sumpremium FROM partner_premium_details ${ew.customSqlSegment}) db ") BigDecimal selectTotalSumPremium(@Param("ew") QueryWrapper queryWrapper); @Select("SELECT " + " d.orderno, " + " d.company_id, " + " d.user_id, " + " d.user_name, " + " d.issuer_id, " + " d.issuer_name, " + " d.sumpremium, " + " d.proportional, " + " d.extract_fee, " + " d.licenseno, " + " d.source, " + " d.create_time, " + " u.`name` AS userName, " + " u.mobile " + "FROM " + " partner_premium_details d " + " LEFT JOIN sys_user u ON u.id = d.user_id ${ew.customSqlSegment}") Page queryPage(@Param("page") Page page, @Param("ew") Wrapper queryWrapper); @Select("SELECT user_id AS userId,SUM( sumpremium) AS premium,SUM(extract_fee) AS commission FROM partner_premium_details ${ew.customSqlSegment} ") List> selectCombinedStatistics(@Param("ew")QueryWrapper wrapper); // @Select("SELECT SUM(extract_fee) AS commission FROM partner_premium_details WHERE app_status = 1 AND status = 1 AND user_id = #{userId} AND source = #{grade} AND DATE(create_time) >= DATE(#{createTime}) ") BigDecimal commissionAfterUserLocking(@Param("userId") String userId,@Param("grade") Integer grade,@Param("createTime") Date createTime); @Update("UPDATE partner_premium_details SET app_status = 0 WHERE app_status = 1 AND source = #{originalLevel} AND user_id = #{userId} AND DATE(create_time) >= #{identityTime} ") void updateAppStatus(@Param("originalLevel") String originalLevel,@Param("userId") String userId, @Param("identityTime")Date identityTime); @Select(" SELECT create_time FROM partner_premium_details WHERE app_status = 1 AND status = 1 AND user_id = #{userId} AND source = #{grade} ORDER BY create_time LIMIT 1 ") Date queryRemainingDaysExpiration(@Param("userId") String userId, @Param("grade") Integer grade); }