mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 04:08:43 +08:00 
			
		
		
		
	分佣: 推广人排行
This commit is contained in:
		@@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
 | 
				
			|||||||
import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
 | 
					import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.*;
 | 
					import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.*;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.convert.brokerage.BrokerageRecordConvert;
 | 
					import cn.iocoder.yudao.module.trade.convert.brokerage.BrokerageRecordConvert;
 | 
				
			||||||
 | 
					import cn.iocoder.yudao.module.trade.convert.brokerage.BrokerageUserConvert;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
 | 
					import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum;
 | 
					import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawStatusEnum;
 | 
					import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawStatusEnum;
 | 
				
			||||||
@@ -90,24 +91,15 @@ public class AppBrokerageUserController {
 | 
				
			|||||||
        return success(respVO);
 | 
					        return success(respVO);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // TODO 芋艿:临时 mock =>
 | 
					 | 
				
			||||||
    @GetMapping("/rank-page-by-user-count")
 | 
					    @GetMapping("/rank-page-by-user-count")
 | 
				
			||||||
    @Operation(summary = "获得分销用户排行分页(基于用户量)")
 | 
					    @Operation(summary = "获得分销用户排行分页(基于用户量)")
 | 
				
			||||||
    @PreAuthenticated
 | 
					    @PreAuthenticated
 | 
				
			||||||
    public CommonResult<PageResult<AppBrokerageUserRankByUserCountRespVO>> getBrokerageUserRankPageByUserCount(AppBrokerageUserRankPageReqVO pageReqVO) {
 | 
					    public CommonResult<PageResult<AppBrokerageUserRankByUserCountRespVO>> getBrokerageUserRankPageByUserCount(AppBrokerageUserRankPageReqVO pageReqVO) {
 | 
				
			||||||
        AppBrokerageUserRankByUserCountRespVO vo1 = new AppBrokerageUserRankByUserCountRespVO()
 | 
					        // 分页查询
 | 
				
			||||||
                .setId(1L).setNickname("芋1**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
 | 
					        PageResult<AppBrokerageUserRankByUserCountRespVO> pageResult = brokerageUserService.getBrokerageUserRankPageByUserCount(pageReqVO);
 | 
				
			||||||
                .setBrokerageUserCount(10);
 | 
					        // 拼接数据
 | 
				
			||||||
        AppBrokerageUserRankByUserCountRespVO vo2 = new AppBrokerageUserRankByUserCountRespVO()
 | 
					        Map<Long, MemberUserRespDTO> userMap = memberUserApi.getUserMap(convertSet(pageResult.getList(), AppBrokerageUserRankByUserCountRespVO::getId));
 | 
				
			||||||
                .setId(2L).setNickname("芋2**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
 | 
					        return success(BrokerageUserConvert.INSTANCE.convertPage03(pageResult, userMap));
 | 
				
			||||||
                .setBrokerageUserCount(6);
 | 
					 | 
				
			||||||
        AppBrokerageUserRankByUserCountRespVO vo3 = new AppBrokerageUserRankByUserCountRespVO()
 | 
					 | 
				
			||||||
                .setId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
 | 
					 | 
				
			||||||
                .setBrokerageUserCount(4);
 | 
					 | 
				
			||||||
        AppBrokerageUserRankByUserCountRespVO vo4 = new AppBrokerageUserRankByUserCountRespVO()
 | 
					 | 
				
			||||||
                .setId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
 | 
					 | 
				
			||||||
                .setBrokerageUserCount(4);
 | 
					 | 
				
			||||||
        return success(new PageResult<>(asList(vo1, vo2, vo3, vo4), 10L));
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @GetMapping("/rank-page-by-price")
 | 
					    @GetMapping("/rank-page-by-price")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,9 +4,11 @@ import cn.hutool.core.map.MapUtil;
 | 
				
			|||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
					import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
				
			||||||
import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
 | 
					import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserRespVO;
 | 
					import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserRespVO;
 | 
				
			||||||
 | 
					import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankByUserCountRespVO;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
 | 
					import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryBO;
 | 
					import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryBO;
 | 
				
			||||||
import org.mapstruct.Mapper;
 | 
					import org.mapstruct.Mapper;
 | 
				
			||||||
 | 
					import org.mapstruct.MappingTarget;
 | 
				
			||||||
import org.mapstruct.factory.Mappers;
 | 
					import org.mapstruct.factory.Mappers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
@@ -55,4 +57,13 @@ public interface BrokerageUserConvert {
 | 
				
			|||||||
                user -> target.setNickname(user.getNickname()).setAvatar(user.getAvatar()));
 | 
					                user -> target.setNickname(user.getNickname()).setAvatar(user.getAvatar()));
 | 
				
			||||||
        return target;
 | 
					        return target;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    default PageResult<AppBrokerageUserRankByUserCountRespVO> convertPage03(PageResult<AppBrokerageUserRankByUserCountRespVO> pageResult, Map<Long, MemberUserRespDTO> userMap) {
 | 
				
			||||||
 | 
					        for (AppBrokerageUserRankByUserCountRespVO vo : pageResult.getList()) {
 | 
				
			||||||
 | 
					            copyTo(userMap.get(vo.getId()), vo);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return pageResult;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void copyTo(MemberUserRespDTO from, @MappingTarget AppBrokerageUserRankByUserCountRespVO to);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,9 +67,10 @@ public interface BrokerageRecordMapper extends BaseMapperX<BrokerageRecordDO> {
 | 
				
			|||||||
                                                                     @Param("endTime") LocalDateTime endTime);
 | 
					                                                                     @Param("endTime") LocalDateTime endTime);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Select("SELECT user_id AS id, SUM(price) AS brokeragePrice FROM trade_brokerage_record " +
 | 
					    @Select("SELECT user_id AS id, SUM(price) AS brokeragePrice FROM trade_brokerage_record " +
 | 
				
			||||||
            "WHERE biz_type = #{bizType} AND status = #{status} AND create_time BETWEEN #{beginTime} AND #{endTime} " +
 | 
					            "WHERE biz_type = #{bizType} AND status = #{status} AND deleted = FALSE " +
 | 
				
			||||||
 | 
					            "AND unfreeze_time BETWEEN #{beginTime} AND #{endTime} " +
 | 
				
			||||||
            "GROUP BY user_id " +
 | 
					            "GROUP BY user_id " +
 | 
				
			||||||
            "ORDER BY SUM(price) DESC")
 | 
					            "ORDER BY brokeragePrice DESC")
 | 
				
			||||||
    IPage<AppBrokerageUserRankByPriceRespVO> selectSummaryPricePageGroupByUserId(IPage<?> page,
 | 
					    IPage<AppBrokerageUserRankByPriceRespVO> selectSummaryPricePageGroupByUserId(IPage<?> page,
 | 
				
			||||||
                                                                                 @Param("bizType") Integer bizType,
 | 
					                                                                                 @Param("bizType") Integer bizType,
 | 
				
			||||||
                                                                                 @Param("status") Integer status,
 | 
					                                                                                 @Param("status") Integer status,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,10 +5,16 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
				
			|||||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
					import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
				
			||||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 | 
					import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserPageReqVO;
 | 
					import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserPageReqVO;
 | 
				
			||||||
 | 
					import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankByUserCountRespVO;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
 | 
					import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
 | 
				
			||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 | 
					import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
				
			||||||
import org.apache.ibatis.annotations.Mapper;
 | 
					import org.apache.ibatis.annotations.Mapper;
 | 
				
			||||||
 | 
					import org.apache.ibatis.annotations.Param;
 | 
				
			||||||
 | 
					import org.apache.ibatis.annotations.Select;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.time.LocalDateTime;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -124,4 +130,12 @@ public interface BrokerageUserMapper extends BaseMapperX<BrokerageUserDO> {
 | 
				
			|||||||
                .inIfPresent(BrokerageUserDO::getLevel, levels));
 | 
					                .inIfPresent(BrokerageUserDO::getLevel, levels));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Select("SELECT bind_user_id AS id, COUNT(1) AS brokerageUserCount FROM trade_brokerage_user " +
 | 
				
			||||||
 | 
					            "WHERE bind_user_id IS NOT NULL AND deleted = FALSE " +
 | 
				
			||||||
 | 
					            "AND bind_user_time BETWEEN #{beginTime} AND #{endTime} " +
 | 
				
			||||||
 | 
					            "GROUP BY bind_user_id " +
 | 
				
			||||||
 | 
					            "ORDER BY brokerageUserCount DESC")
 | 
				
			||||||
 | 
					    IPage<AppBrokerageUserRankByUserCountRespVO> selectCountPageGroupByBindUserId(Page<?> page,
 | 
				
			||||||
 | 
					                                                                                  @Param("beginTime") LocalDateTime beginTime,
 | 
				
			||||||
 | 
					                                                                                  @Param("endTime") LocalDateTime endTime);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.trade.service.brokerage;
 | 
				
			|||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
					import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
				
			||||||
import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
 | 
					import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserPageReqVO;
 | 
					import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserPageReqVO;
 | 
				
			||||||
 | 
					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 cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.validation.constraints.NotNull;
 | 
					import javax.validation.constraints.NotNull;
 | 
				
			||||||
@@ -130,4 +132,12 @@ public interface BrokerageUserService {
 | 
				
			|||||||
     * @return 是否有分销资格
 | 
					     * @return 是否有分销资格
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    Boolean getUserBrokerageEnabled(Long userId);
 | 
					    Boolean getUserBrokerageEnabled(Long userId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 获得推广人排行
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param pageReqVO 分页查询
 | 
				
			||||||
 | 
					     * @return 推广人排行
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    PageResult<AppBrokerageUserRankByUserCountRespVO> getBrokerageUserRankPageByUserCount(AppBrokerageUserRankPageReqVO pageReqVO);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,17 +2,22 @@ package cn.iocoder.yudao.module.trade.service.brokerage;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import cn.hutool.core.collection.CollUtil;
 | 
					import cn.hutool.core.collection.CollUtil;
 | 
				
			||||||
import cn.hutool.core.lang.Assert;
 | 
					import cn.hutool.core.lang.Assert;
 | 
				
			||||||
 | 
					import cn.hutool.core.util.ArrayUtil;
 | 
				
			||||||
import cn.hutool.core.util.BooleanUtil;
 | 
					import cn.hutool.core.util.BooleanUtil;
 | 
				
			||||||
import cn.hutool.core.util.ObjectUtil;
 | 
					import cn.hutool.core.util.ObjectUtil;
 | 
				
			||||||
import cn.hutool.core.util.StrUtil;
 | 
					import cn.hutool.core.util.StrUtil;
 | 
				
			||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
					import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
				
			||||||
 | 
					import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserPageReqVO;
 | 
					import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserPageReqVO;
 | 
				
			||||||
 | 
					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 cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.dal.dataobject.config.TradeConfigDO;
 | 
					import cn.iocoder.yudao.module.trade.dal.dataobject.config.TradeConfigDO;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.dal.mysql.brokerage.BrokerageUserMapper;
 | 
					import cn.iocoder.yudao.module.trade.dal.mysql.brokerage.BrokerageUserMapper;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageBindModeEnum;
 | 
					import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageBindModeEnum;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageEnabledConditionEnum;
 | 
					import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageEnabledConditionEnum;
 | 
				
			||||||
import cn.iocoder.yudao.module.trade.service.config.TradeConfigService;
 | 
					import cn.iocoder.yudao.module.trade.service.config.TradeConfigService;
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
import org.springframework.validation.annotation.Validated;
 | 
					import org.springframework.validation.annotation.Validated;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -208,6 +213,13 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
 | 
				
			|||||||
                .orElse(false);
 | 
					                .orElse(false);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public PageResult<AppBrokerageUserRankByUserCountRespVO> getBrokerageUserRankPageByUserCount(AppBrokerageUserRankPageReqVO pageReqVO) {
 | 
				
			||||||
 | 
					        IPage<AppBrokerageUserRankByUserCountRespVO> pageResult = brokerageUserMapper.selectCountPageGroupByBindUserId(MyBatisUtils.buildPage(pageReqVO),
 | 
				
			||||||
 | 
					                ArrayUtil.get(pageReqVO.getTimes(), 0), ArrayUtil.get(pageReqVO.getTimes(), 1));
 | 
				
			||||||
 | 
					        return new PageResult<>(pageResult.getRecords(), pageResult.getTotal());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private boolean isUserCanBind(BrokerageUserDO user, Boolean isNewUser) {
 | 
					    private boolean isUserCanBind(BrokerageUserDO user, Boolean isNewUser) {
 | 
				
			||||||
        // 校验分销功能是否启用
 | 
					        // 校验分销功能是否启用
 | 
				
			||||||
        TradeConfigDO tradeConfig = tradeConfigService.getTradeConfig();
 | 
					        TradeConfigDO tradeConfig = tradeConfigService.getTradeConfig();
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user