package cn.iocoder.yudao.module.trade.convert.brokerage; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; 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.app.brokerage.vo.user.AppBrokerageUserChildSummaryRespVO; import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserMySummaryRespVO; 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.service.brokerage.bo.BrokerageWithdrawSummaryRespBO; import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryRespBO; import org.mapstruct.Mapper; import org.mapstruct.MappingTarget; import org.mapstruct.factory.Mappers; import java.util.List; import java.util.Map; import java.util.Optional; /** * 分销用户 Convert * * @author owen */ @Mapper public interface BrokerageUserConvert { BrokerageUserConvert INSTANCE = Mappers.getMapper(BrokerageUserConvert.class); BrokerageUserRespVO convert(BrokerageUserDO bean); List convertList(List list); PageResult convertPage(PageResult page, Map userMap, Map brokerageUserCountMap, Map userOrderSummaryMap); default PageResult convertPage(PageResult pageResult, Map userMap, Map brokerageUserCountMap, Map userOrderSummaryMap, Map withdrawMap) { PageResult result = convertPage(pageResult, userMap, brokerageUserCountMap, userOrderSummaryMap); for (BrokerageUserRespVO userVO : result.getList()) { // 用户信息 copyTo(userMap.get(userVO.getId()), userVO); // 推广用户数量 userVO.setBrokerageUserCount(MapUtil.getInt(brokerageUserCountMap, userVO.getId(), 0)); // 推广订单数量、推广订单金额 Optional orderSummaryOptional = Optional.ofNullable(userOrderSummaryMap.get(userVO.getId())); userVO.setBrokerageOrderCount(orderSummaryOptional.map(UserBrokerageSummaryRespBO::getCount).orElse(0)) .setBrokerageOrderPrice(orderSummaryOptional.map(UserBrokerageSummaryRespBO::getPrice).orElse(0)); // 已提现次数、已提现金额 Optional withdrawSummaryOptional = Optional.ofNullable(withdrawMap.get(userVO.getId())); userVO.setWithdrawCount(withdrawSummaryOptional.map(BrokerageWithdrawSummaryRespBO::getCount).orElse(0)) .setWithdrawPrice(withdrawSummaryOptional.map(BrokerageWithdrawSummaryRespBO::getPrice).orElse(0)); } return result; } default BrokerageUserRespVO copyTo(MemberUserRespDTO source, BrokerageUserRespVO target) { if (target == null) { return null; } Optional.ofNullable(source).ifPresent( user -> target.setNickname(user.getNickname()).setAvatar(user.getAvatar())); return target; } default PageResult convertPage03(PageResult pageResult, Map userMap) { pageResult.getList().forEach(vo -> copyTo(userMap.get(vo.getId()), vo)); return pageResult; } void copyTo(MemberUserRespDTO from, @MappingTarget AppBrokerageUserRankByUserCountRespVO to); default AppBrokerageUserMySummaryRespVO convert(Integer yesterdayPrice, Integer withdrawPrice, Long firstBrokerageUserCount, Long secondBrokerageUserCount, BrokerageUserDO brokerageUser) { AppBrokerageUserMySummaryRespVO respVO = new AppBrokerageUserMySummaryRespVO() .setYesterdayPrice(ObjUtil.defaultIfNull(yesterdayPrice, 0)) .setWithdrawPrice(ObjUtil.defaultIfNull(withdrawPrice, 0)) .setBrokeragePrice(0).setFrozenPrice(0) .setFirstBrokerageUserCount(ObjUtil.defaultIfNull(firstBrokerageUserCount, 0L)) .setSecondBrokerageUserCount(ObjUtil.defaultIfNull(secondBrokerageUserCount, 0L)); // 设置 brokeragePrice、frozenPrice 字段 Optional.ofNullable(brokerageUser) .ifPresent(user -> respVO.setBrokeragePrice(user.getBrokeragePrice()).setFrozenPrice(user.getFrozenPrice())); return respVO; } default void copyTo(List list, Map userMap) { for (AppBrokerageUserChildSummaryRespVO vo : list) { Optional.ofNullable(userMap.get(vo.getId())).ifPresent(user -> vo.setNickname(user.getNickname()).setAvatar(user.getAvatar())); } } }