package cn.iocoder.yudao.module.pay.convert.wallet; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.dict.core.DictFrameworkUtils; import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.recharge.AppPayWalletRechargeCreateRespVO; import cn.iocoder.yudao.module.pay.controller.app.wallet.vo.recharge.AppPayWalletRechargeRespVO; import cn.iocoder.yudao.module.pay.dal.dataobject.order.PayOrderDO; import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletRechargeDO; import cn.iocoder.yudao.module.pay.enums.DictTypeConstants; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; import java.util.List; import java.util.Map; @Mapper public interface PayWalletRechargeConvert { PayWalletRechargeConvert INSTANCE = Mappers.getMapper(PayWalletRechargeConvert.class); @Mapping(target = "totalPrice", expression = "java( payPrice + bonusPrice)") PayWalletRechargeDO convert(Long walletId, Integer payPrice, Integer bonusPrice, Long packageId); AppPayWalletRechargeCreateRespVO convert(PayWalletRechargeDO bean); default PageResult convertPage(PageResult pageResult, List payOrderList) { PageResult voPageResult = BeanUtils.toBean(pageResult, AppPayWalletRechargeRespVO.class); Map payOrderMap = CollectionUtils.convertMap(payOrderList, PayOrderDO::getId); voPageResult.getList().forEach(recharge -> { recharge.setPayChannelName(DictFrameworkUtils.getDictDataLabel( DictTypeConstants.CHANNEL_CODE, recharge.getPayChannelCode())); MapUtils.findAndThen(payOrderMap, recharge.getPayOrderId(), order -> recharge.setPayOrderChannelOrderNo(order.getChannelOrderNo())); }); return voPageResult; } }