12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package com.hosea.service.infra.user;
- import com.hosea.service.domain.user.User;
- import com.hosea.service.domain.user.UserStatus;
- import com.hosea.service.user.client.dto.data.UserDTO;
- import org.mapstruct.AfterMapping;
- import org.mapstruct.Mapper;
- import org.mapstruct.Mapping;
- import org.mapstruct.MappingTarget;
- import org.mapstruct.factory.Mappers;
- /**
- * 用户-PO与领域实体转换器
- *
- * @author hosea
- * @date 2025-07-19
- */
- @Mapper
- public interface UserConversion {
- /**
- * 自动实现类
- */
- UserConversion INSTANCE = Mappers.getMapper(UserConversion.class);
- /**
- * 领域转PO
- */
- @Mapping(target = "id", source = "unique.id")
- @Mapping(target = "username", source = "unique.name")
- @Mapping(target = "nickname", source = "nickName")
- @Mapping(target = "displayname", source = "displayName")
- @Mapping(target = "employeenumber", source = "employeeNumber")
- @Mapping(target = "status", ignore = true)
- UserInfoPO toPo(User user);
- /**
- * 领域转PO-映射后的自定义转换
- */
- @AfterMapping
- default void toPo(User user, @MappingTarget UserInfoPO po) {
- if (UserStatus.Normal.equals(user.getStatus())) {
- po.setStatus(1L);
- }
- }
- /**
- * PO转领域
- */
- @Mapping(target = "unique.id", source = "id")
- @Mapping(target = "unique.name", source = "username")
- @Mapping(target = "nickName", source = "nickname")
- @Mapping(target = "displayName", source = "displayname")
- @Mapping(target = "employeeNumber", source = "employeenumber")
- @Mapping(target = "status", ignore = true)
- User toDomain(UserInfoPO po);
- /**
- * PO转领域-映射后的自定义转换
- */
- @AfterMapping
- default void toDomain(UserInfoPO po, @MappingTarget User user) {
- user.setStatus(po.getStatus() == 1L ? UserStatus.Normal : UserStatus.Disable);
- }
- /**
- * PO转DTO
- */
- @Mapping(target = "name", source = "username")
- @Mapping(target = "nickName", source = "nickname")
- @Mapping(target = "displayName", source = "displayname")
- @Mapping(target = "employeeNumber", source = "employeenumber")
- UserDTO toDto(UserInfoPO po);
- }
|