package cn.iocoder.yudao.module.mp.convert.user; import cn.hutool.core.date.LocalDateTimeUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.module.mp.controller.admin.user.vo.MpUserRespVO; import cn.iocoder.yudao.module.mp.controller.admin.user.vo.MpUserUpdateReqVO; import cn.iocoder.yudao.module.mp.dal.dataobject.account.MpAccountDO; import cn.iocoder.yudao.module.mp.dal.dataobject.user.MpUserDO; import me.chanjar.weixin.mp.bean.result.WxMpUser; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; import org.mapstruct.factory.Mappers; import java.util.List; @Mapper public interface MpUserConvert { MpUserConvert INSTANCE = Mappers.getMapper(MpUserConvert.class); MpUserRespVO convert(MpUserDO bean); List convertList(List list); PageResult convertPage(PageResult page); @Mappings(value = { @Mapping(source = "openId", target = "openid"), @Mapping(source = "unionId", target = "unionId"), @Mapping(source = "headImgUrl", target = "headImageUrl"), @Mapping(target = "subscribeTime", ignore = true), // 单独转换 }) MpUserDO convert(WxMpUser wxMpUser); default MpUserDO convert(MpAccountDO account, WxMpUser wxMpUser) { MpUserDO user = convert(wxMpUser); user.setSubscribeStatus(wxMpUser.getSubscribe() ? CommonStatusEnum.ENABLE.getStatus() : CommonStatusEnum.DISABLE.getStatus()); user.setSubscribeTime(LocalDateTimeUtil.of(wxMpUser.getSubscribeTime() * 1000L)); if (account != null) { user.setAccountId(account.getId()); user.setAppId(account.getAppId()); } return user; } default List convertList(MpAccountDO account, List wxUsers) { return CollectionUtils.convertList(wxUsers, wxUser -> convert(account, wxUser)); } MpUserDO convert(MpUserUpdateReqVO bean); }