package cn.iocoder.yudao.module.trade.service.brokerage; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserCreateReqVO; import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserPageReqVO; import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryPageReqVO; import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryRespVO; import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankByUserCountRespVO; import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankPageReqVO; import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; /** * 分销用户 Service 接口 * * @author owen */ public interface BrokerageUserService { /** * 获得分销用户 * * @param id 编号 * @return 分销用户 */ BrokerageUserDO getBrokerageUser(Long id); /** * 获得分销用户分页 * * @param pageReqVO 分页查询 * @return 分销用户分页 */ PageResult getBrokerageUserPage(BrokerageUserPageReqVO pageReqVO); /** * 修改推广员编号 * * @param id 用户编号 * @param bindUserId 推广员编号 */ void updateBrokerageUserId(Long id, Long bindUserId); /** * 修改推广资格 * * @param id 用户编号 * @param enabled 推广资格 */ void updateBrokerageUserEnabled(Long id, Boolean enabled); /** * 获得用户的推广人 * * @param id 用户编号 * @return 用户的推广人 */ BrokerageUserDO getBindBrokerageUser(Long id); /** * 获得或创建分销用户 * * @param id 用户编号 * @return 分销用户 */ BrokerageUserDO getOrCreateBrokerageUser(Long id); /** * 更新用户佣金 * * @param id 用户编号 * @param price 用户可用佣金 * @return 更新结果 */ boolean updateUserPrice(Long id, Integer price); /** * 更新用户冻结佣金 * * @param id 用户编号 * @param frozenPrice 用户冻结佣金 */ void updateUserFrozenPrice(Long id, Integer frozenPrice); /** * 更新用户冻结佣金(减少),更新用户佣金(增加) * * @param id 用户编号 * @param frozenPrice 减少冻结佣金(负数) */ void updateFrozenPriceDecrAndPriceIncr(Long id, Integer frozenPrice); /** * 获得推广用户数量 * * @param bindUserId 绑定的推广员编号 * @param level 推广用户等级 * @return 推广用户数量 */ Long getBrokerageUserCountByBindUserId(Long bindUserId, Integer level); /** * 【会员】绑定推广员 * * @param userId 用户编号 * @param bindUserId 推广员编号 * @return 是否绑定 */ boolean bindBrokerageUser(@NotNull Long userId, @NotNull Long bindUserId); /** * 【管理员】创建分销用户 * * @param createReqVO 请求 * @return 编号 */ Long createBrokerageUser(@Valid BrokerageUserCreateReqVO createReqVO); /** * 获取用户是否有分销资格 * * @param userId 用户编号 * @return 是否有分销资格 */ Boolean getUserBrokerageEnabled(Long userId); /** * 获得推广人排行 * * @param pageReqVO 分页查询 * @return 推广人排行 */ PageResult getBrokerageUserRankPageByUserCount(AppBrokerageUserRankPageReqVO pageReqVO); /** * 获得下级分销统计分页 * * @param pageReqVO 分页查询 * @param userId 用户编号 * @return 下级分销统计分页 */ PageResult getBrokerageUserChildSummaryPage(AppBrokerageUserChildSummaryPageReqVO pageReqVO, Long userId); }