package com.ruoyi.user.mapper;
|
|
import java.util.Date;
|
import java.util.List;
|
import org.apache.ibatis.annotations.Param;
|
import com.ruoyi.user.domain.vo.PartnerEarningStatVo;
|
import com.ruoyi.user.domain.vo.PartnerInviteStatVo;
|
import com.ruoyi.user.domain.vo.PartnerSalesStatVo;
|
import com.ruoyi.user.domain.vo.PartnerSubAccountStatVo;
|
import com.ruoyi.user.domain.vo.PartnerSubAccountVo;
|
|
/**
|
* 服务商首页概览 数据层
|
*
|
* 全部聚合均以 account_user.supplier_id = #{providerUserId} 圈定「名下子账号」范围,
|
* 命中既有索引 idx_account_user_supplier / idx_earning_user_time /
|
* idx_sales_seller_time / idx_purchase_user_time;
|
* 时间区间由 Service 侧算好传入,避免 SQL 内做日期方言运算。
|
*
|
* @author hugray
|
*/
|
public interface AccountPartnerMapper
|
{
|
/**
|
* 聚合子账号总数 / L1-L3 等级分布 / 当月与上月新增绑定数(单条 SQL 取回,避免多次数据库往返)
|
*
|
* 三者同源 account_user(同 where 条件),故合并为一条 SQL。
|
*
|
* @param providerUserId 服务商账号ID
|
* @param monthStart 当月起始(含)
|
* @param nextMonthStart 次月起始(不含)
|
* @param prevMonthStart 上月起始(含)
|
* @return 子账号统计(无数据时各栏为 0)
|
*/
|
public PartnerSubAccountStatVo selectSubAccountStat(@Param("providerUserId") Long providerUserId,
|
@Param("monthStart") Date monthStart,
|
@Param("nextMonthStart") Date nextMonthStart,
|
@Param("prevMonthStart") Date prevMonthStart);
|
|
/**
|
* 聚合名下子账号当月与上月收益合计(来自 account_earning_record)
|
*
|
* @param providerUserId 服务商账号ID
|
* @param monthStart 当月起始(含)
|
* @param nextMonthStart 次月起始(不含)
|
* @param prevMonthStart 上月起始(含)
|
* @return 收益合计(单位:分;无流水时各栏为 0)
|
*/
|
public PartnerEarningStatVo selectEarningMonthStat(@Param("providerUserId") Long providerUserId,
|
@Param("monthStart") Date monthStart,
|
@Param("nextMonthStart") Date nextMonthStart,
|
@Param("prevMonthStart") Date prevMonthStart);
|
|
/**
|
* 聚合名下子账号当月销售额与销售单数(来自 account_sales_record)
|
*
|
* @param providerUserId 服务商账号ID
|
* @param monthStart 当月起始(含)
|
* @param nextMonthStart 次月起始(不含)
|
* @return 销售额(分)与单数(无流水时各栏为 0)
|
*/
|
public PartnerSalesStatVo selectSalesMonthStat(@Param("providerUserId") Long providerUserId,
|
@Param("monthStart") Date monthStart,
|
@Param("nextMonthStart") Date nextMonthStart);
|
|
/**
|
* 聚合名下子账号当月进货额(来自 account_purchase_order)
|
*
|
* @param providerUserId 服务商账号ID
|
* @param monthStart 当月起始(含)
|
* @param nextMonthStart 次月起始(不含)
|
* @return 进货额(单位:分;无流水时为 0)
|
*/
|
public Long selectPurchaseMonthAmount(@Param("providerUserId") Long providerUserId,
|
@Param("monthStart") Date monthStart,
|
@Param("nextMonthStart") Date nextMonthStart);
|
|
/**
|
* 聚合当月新邀请总数与等级分布(推荐人 ∈ 本服务商体系)
|
*
|
* 推荐人范围含服务商本人与名下全部子账号;时间按被邀请会员的 referrer_bind_time 归月。
|
*
|
* @param providerUserId 服务商账号ID
|
* @param monthStart 当月起始(含)
|
* @param nextMonthStart 次月起始(不含)
|
* @return 新邀请总数与 C/L1/L2/L3 分布(无数据时各栏为 0)
|
*/
|
public PartnerInviteStatVo selectInviteMonthStat(@Param("providerUserId") Long providerUserId,
|
@Param("monthStart") Date monthStart,
|
@Param("nextMonthStart") Date nextMonthStart);
|
|
/**
|
* 查询名下子账号列表(供「子账号管理」分页使用)
|
*
|
* 范围:supplier_id = 当前服务商、del_flag = '0'、system_level ∈ {L1,L2,L3};
|
* level 非空时再按等级过滤(仅接受 L1/L2/L3,非法值由服务层归一为全部);
|
* keyword 非空时按昵称/手机号模糊匹配(通配符已由服务层转义);
|
* 按 user_id 倒序(新开通在前)。分页由 Controller 侧 startPage() 织入,语句本身不挂 join,
|
* 避免干扰 PageHelper 的 count SQL。
|
*
|
* @param providerUserId 服务商账号ID
|
* @param level 等级筛选(可空;L1/L2/L3)
|
* @param keyword 昵称/手机号搜索关键字(可空;已转义 like 通配符)
|
* @return 子账号列表(分页)
|
*/
|
public List<PartnerSubAccountVo> selectSubAccountList(@Param("providerUserId") Long providerUserId,
|
@Param("level") String level,
|
@Param("keyword") String keyword);
|
|
/**
|
* 统计名下子账号各等级已开通数(供剩余额度计算)
|
*
|
* 与列表同一口径(supplier_id + del_flag = '0' + system_level ∈ {L1,L2,L3}),
|
* 只为取 l1/l2/l3 计数,故不涉及月份区间列。
|
*
|
* @param providerUserId 服务商账号ID
|
* @return 各等级已开通数(无数据时各栏为 0)
|
*/
|
public PartnerSubAccountStatVo selectSubAccountLevelCount(@Param("providerUserId") Long providerUserId);
|
}
|