@ -10,31 +10,60 @@ import java.util.Collections;
import java.util.HashMap ;
import java.util.List ;
import java.util.Map ;
import java.util.Objects ;
import java.util.Set ;
import java.util.stream.Collectors ;
import com.luoo.music.client.UserClient ;
import net.oschina.j2cache.CacheChannel ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.core.io.ClassPathResource ;
import org.springframework.data.mongodb.core.MongoTemplate ;
import com.apifan.common.random.RandomSource ;
import com.apifan.common.random.entity.Poem ;
import com.luoo.music.dao.CommentDao ;
import com.luoo.music.dao.TagDao ;
import com.luoo.music.dto.response.CommentDTO ;
import com.luoo.music.dto.response.JournalFilterDTO ;
import com.luoo.music.dto.response.JournalRespDTO ;
import com.luoo.music.dto.response.TagDTO ;
import com.luoo.music.pojo.Journal ;
import com.luoo.music.pojo.Tag ;
import com.luoo.music.service.TagService ;
import constants.Constants ;
import enums.DateTimePatternEnum ;
import org.springframework.data.redis.core.RedisTemplate ;
import org.springframework.stereotype.Component ;
import util.DateUtil ;
import util.StringTools ;
@Component
public class JournalMapper {
public static JournalRespDTO getJournalRespDTO ( Journal journal ) {
@Autowired
private RedisTemplate redisTemplate ;
@Autowired
private CacheChannel cacheChannel ;
@Autowired
private MongoTemplate mongoTemplate ;
@Autowired
private CommentDao commentDao ;
@Autowired
private TagDao tagDao ;
@Autowired
private UserClient userClient ;
public JournalRespDTO getJournalRespDTO ( Journal journal ) {
return getJournalRespDTO ( journal , Collections . emptySet ( ) ) ;
}
public static JournalRespDTO getJournalRespDTO ( Journal journal , Set < String > journalCollectSet ) {
public JournalRespDTO getJournalRespDTO ( Journal journal , Set < String > journalCollectSet ) {
JournalRespDTO journalRespDTO = new JournalRespDTO ( ) ;
journalRespDTO . setId ( journal . getId ( ) ) ;
journalRespDTO . setJournalNo ( journal . getJournalNo ( ) ) ;
@ -48,6 +77,8 @@ public class JournalMapper {
String nameChTags = journal . getNameChTags ( ) ;
if ( ! StringTools . isEmpty ( nameChTags ) ) {
List < String > tags = Arrays . stream ( nameChTags . split ( "," ) ) . collect ( Collectors . toList ( ) ) ;
List < TagDTO > tagInfos = tags . stream ( ) . map ( this : : getTagDto ) . filter ( Objects : : nonNull ) . collect ( Collectors . toList ( ) ) ;
journalRespDTO . setTagInfos ( tagInfos ) ;
journalRespDTO . setTags ( tags ) ;
}
journalRespDTO . setContent ( journal . getContent ( ) ) ;
@ -56,9 +87,22 @@ public class JournalMapper {
return journalRespDTO ;
}
private TagDTO getTagDto ( String tagName ) {
return ( TagDTO ) this . cacheChannel . get ( "tag" , tagName , key - > getTagDtoByName ( tagName ) , false ) . getValue ( ) ;
}
private TagDTO getTagDtoByName ( String tagName ) {
Tag tag = tagDao . findByTagName ( tagName ) ;
if ( null = = tag ) {
return null ;
}
TagDTO tagDTO = new TagDTO ( ) ;
tagDTO . setName ( tag . getNameCh ( ) ) ;
tagDTO . setId ( tag . getId ( ) ) ;
return tagDTO ;
}
public static JournalRespDTO getJournalRespDTO ( Journal journal ,
MongoTemplate mongoTemplate , RedisTemplate redisTemplate , CommentDao commentDao , UserClient userClient , CacheChannel cacheChannel ) {
public JournalRespDTO getJournalRespDTOWithComment ( Journal journal ) {
JournalRespDTO journalRespDTO = getJournalRespDTO ( journal ) ;
CommentDTO commentDTO = CommentMapper . getCommentDTO ( journalRespDTO . getId ( ) , mongoTemplate , commentDao ,
redisTemplate , userClient , cacheChannel ) ;
@ -70,7 +114,7 @@ public class JournalMapper {
}
private static String getPublishDate ( Journal journal ) {
private String getPublishDate ( Journal journal ) {
LocalDateTime date = null = = journal . getPubTime ( ) ? journal . getCreateTime ( ) : journal . getPubTime ( ) ;
return DateUtil . format ( date , DateTimePatternEnum . YYYY_DOT_MM_DOT_DD . getPattern ( ) ) ;
}