package com.iailab.module.system.convert.user; import com.iailab.framework.common.util.collection.CollectionUtils; import com.iailab.framework.common.util.collection.MapUtils; import com.iailab.framework.common.util.object.BeanUtils; import com.iailab.module.system.controller.admin.dept.vo.dept.DeptSimpleRespVO; import com.iailab.module.system.controller.admin.dept.vo.post.PostSimpleRespVO; import com.iailab.module.system.controller.admin.permission.vo.role.RoleSimpleRespVO; import com.iailab.module.system.controller.admin.user.vo.profile.UserProfileRespVO; import com.iailab.module.system.controller.admin.user.vo.user.UserRespVO; import com.iailab.module.system.controller.admin.user.vo.user.UserSimpleRespVO; import com.iailab.module.system.dal.dataobject.dept.DeptDO; import com.iailab.module.system.dal.dataobject.dept.PostDO; import com.iailab.module.system.dal.dataobject.permission.RoleDO; import com.iailab.module.system.dal.dataobject.social.SocialUserDO; import com.iailab.module.system.dal.dataobject.user.AdminUserDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; import java.util.List; import java.util.Map; @Mapper public interface UserConvert { UserConvert INSTANCE = Mappers.getMapper(UserConvert.class); default List convertList(List list, Map deptMap) { return CollectionUtils.convertList(list, user -> convert(user, deptMap.get(user.getDeptId()))); } default UserRespVO convert(AdminUserDO user, DeptDO dept) { UserRespVO userVO = BeanUtils.toBean(user, UserRespVO.class); if (dept != null) { userVO.setDeptName(dept.getName()); } return userVO; } default List convertSimpleList(List list, Map deptMap) { return CollectionUtils.convertList(list, user -> { UserSimpleRespVO userVO = BeanUtils.toBean(user, UserSimpleRespVO.class); MapUtils.findAndThen(deptMap, user.getDeptId(), dept -> userVO.setDeptName(dept.getName())); return userVO; }); } default UserProfileRespVO convert(AdminUserDO user, List userRoles, DeptDO dept, List posts, List socialUsers) { UserProfileRespVO userVO = BeanUtils.toBean(user, UserProfileRespVO.class); userVO.setRoles(BeanUtils.toBean(userRoles, RoleSimpleRespVO.class)); userVO.setDept(BeanUtils.toBean(dept, DeptSimpleRespVO.class)); userVO.setPosts(BeanUtils.toBean(posts, PostSimpleRespVO.class)); userVO.setSocialUsers(BeanUtils.toBean(socialUsers, UserProfileRespVO.SocialUser.class)); return userVO; } }