|
|
|
@ -30,6 +30,7 @@ import javax.persistence.criteria.Predicate;
|
|
|
|
|
import javax.persistence.criteria.Root;
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.function.Function;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -57,9 +58,9 @@ public class CMSJournalService {
|
|
|
|
|
@Autowired
|
|
|
|
|
private RedisTemplate redisTemplate;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 分页 + 条件检索
|
|
|
|
|
*
|
|
|
|
|
* @param param
|
|
|
|
|
* @param page
|
|
|
|
|
* @param size
|
|
|
|
@ -120,6 +121,7 @@ public class CMSJournalService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 检索条件
|
|
|
|
|
*
|
|
|
|
|
* @param param
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
@ -159,6 +161,7 @@ public class CMSJournalService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 期刊的音乐数量
|
|
|
|
|
*
|
|
|
|
|
* @param journalNos
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
@ -167,8 +170,7 @@ public class CMSJournalService {
|
|
|
|
|
if (!CollectionUtils.isEmpty(journalNos)) {
|
|
|
|
|
List<Map<String, Long>> journalSongCountList = journalSongDao.findSongCountByJournalNos(journalNos);
|
|
|
|
|
songCountMap = journalSongCountList.stream()
|
|
|
|
|
.collect(Collectors.toMap(
|
|
|
|
|
map -> String.valueOf(map.get("journalNo")),
|
|
|
|
|
.collect(Collectors.toMap(map -> String.valueOf(map.get("journalNo")),
|
|
|
|
|
map -> Long.valueOf(String.valueOf(map.get("songCount")))));
|
|
|
|
|
}
|
|
|
|
|
return songCountMap;
|
|
|
|
@ -176,6 +178,7 @@ public class CMSJournalService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 期刊的标签信息
|
|
|
|
|
*
|
|
|
|
|
* @param ids
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
@ -204,6 +207,7 @@ public class CMSJournalService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 新增期刊
|
|
|
|
|
*
|
|
|
|
|
* @param param
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
@ -229,6 +233,7 @@ public class CMSJournalService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 移动对象
|
|
|
|
|
*
|
|
|
|
|
* @param param
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
@ -246,6 +251,7 @@ public class CMSJournalService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 构建对象
|
|
|
|
|
*
|
|
|
|
|
* @param id
|
|
|
|
|
* @param param
|
|
|
|
|
* @param token
|
|
|
|
@ -270,6 +276,7 @@ public class CMSJournalService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 保存期刊的标签、音乐信息
|
|
|
|
|
*
|
|
|
|
|
* @param journalId
|
|
|
|
|
* @param param
|
|
|
|
|
*/
|
|
|
|
@ -317,11 +324,16 @@ public class CMSJournalService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询期刊详情
|
|
|
|
|
*
|
|
|
|
|
* @param id
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public Result<JournalVO> findOne(String id) {
|
|
|
|
|
Journal journal = journalDao.findById(id).get();
|
|
|
|
|
Optional<Journal> optional=journalDao.findById(id);
|
|
|
|
|
if(!optional.isPresent()) {
|
|
|
|
|
return Result.failed("无法找到期刊: "+id);
|
|
|
|
|
}
|
|
|
|
|
Journal journal = optional.get();
|
|
|
|
|
JournalVO response = new JournalVO();
|
|
|
|
|
response.setId(journal.getId());
|
|
|
|
|
response.setJournalNo(journal.getJournalNo());
|
|
|
|
@ -338,6 +350,7 @@ public class CMSJournalService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 期刊的音乐信息
|
|
|
|
|
*
|
|
|
|
|
* @param journalNo
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
@ -352,10 +365,10 @@ public class CMSJournalService {
|
|
|
|
|
songVO.setArtist(item.getArtist());
|
|
|
|
|
songVO.setAlbum(item.getAlbum());
|
|
|
|
|
if (StringUtils.isNotBlank(item.getUrl())) {
|
|
|
|
|
songVO.setUrl(Constants.MUSIC_RESOURCE_PREFIX + item.getUrl());
|
|
|
|
|
songVO.setUrl(Constants.RESOURCE_PREFIX + item.getUrl());
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isNotBlank(item.getImage())) {
|
|
|
|
|
songVO.setImage(Constants.MUSIC_RESOURCE_PREFIX + item.getImage());
|
|
|
|
|
songVO.setImage(Constants.RESOURCE_PREFIX + item.getImage());
|
|
|
|
|
}
|
|
|
|
|
list.add(songVO);
|
|
|
|
|
}
|
|
|
|
@ -365,6 +378,7 @@ public class CMSJournalService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 更新期刊
|
|
|
|
|
*
|
|
|
|
|
* @param id
|
|
|
|
|
* @param token
|
|
|
|
|
* @param param
|
|
|
|
@ -379,15 +393,75 @@ public class CMSJournalService {
|
|
|
|
|
updateJournal(journal, param, token);
|
|
|
|
|
journalDao.save(journal);
|
|
|
|
|
redisTemplate.opsForValue().set("journal_" + id, journal);
|
|
|
|
|
if (!CollectionUtils.isEmpty(param.getTag())) {
|
|
|
|
|
journalTagDao.deleteByJournalId(id);
|
|
|
|
|
|
|
|
|
|
batchUpdateJournalRelatesInfo(id, journal.getJournalNo(), param);
|
|
|
|
|
return Result.success();
|
|
|
|
|
}
|
|
|
|
|
if (!CollectionUtils.isEmpty(param.getSongs())) {
|
|
|
|
|
journalSongDao.deleteByJournalNo(id);
|
|
|
|
|
|
|
|
|
|
private void batchUpdateJournalRelatesInfo(String journalId, String journalNo, JournalAddModel param) {
|
|
|
|
|
// 标签信息
|
|
|
|
|
List<String> updateTags = param.getTag();
|
|
|
|
|
List<String> currentTags = journalTagDao.findTagsByJournalId(journalId);
|
|
|
|
|
if (!CollectionUtils.isEmpty(updateTags) && !isCollectionEqual(currentTags, updateTags)) {
|
|
|
|
|
// 清理当前journalTag
|
|
|
|
|
journalTagDao.deleteByJournalId(journalId);
|
|
|
|
|
List<JournalTag> updatedJournalTags = updateTags.stream().map(t -> createJournalTag(t, journalId))
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
journalTagDao.saveAll(updatedJournalTags);
|
|
|
|
|
}
|
|
|
|
|
batchSaveJournalRelatesInfo(id, param);
|
|
|
|
|
return Result.success();
|
|
|
|
|
|
|
|
|
|
// 歌曲信息
|
|
|
|
|
List<String> updateSongs = param.getSongs();
|
|
|
|
|
if (!CollectionUtils.isEmpty(updateSongs)) {
|
|
|
|
|
// 清理当前journalSong
|
|
|
|
|
journalSongDao.deleteByJournalNo(journalId);
|
|
|
|
|
List<SongInfo> songList = songDao.orderByField(updateSongs);
|
|
|
|
|
List<JournalSong> updatedJournalSong = new ArrayList<>();
|
|
|
|
|
for (int i = 1; i < songList.size(); i++) {
|
|
|
|
|
SongInfo song = songList.get(i);
|
|
|
|
|
JournalSong journalSong = new JournalSong();
|
|
|
|
|
journalSong.setId(String.valueOf(idWorker.nextId()));
|
|
|
|
|
journalSong.setName(song.getName());
|
|
|
|
|
journalSong.setAlbum(song.getAlbum());
|
|
|
|
|
journalSong.setArtist(song.getArtist());
|
|
|
|
|
journalSong.setUrl(Constants.SONG_KEY_PREFIX+song.getUrl());
|
|
|
|
|
journalSong.setImage(Constants.SONG_KEY_PREFIX+song.getImage());
|
|
|
|
|
journalSong.setLyricUrl(Constants.SONG_KEY_PREFIX+song.getLyricUrl());
|
|
|
|
|
journalSong.setSongId(song.getId());
|
|
|
|
|
journalSong.setJournalNo(journalNo);
|
|
|
|
|
journalSong.setSongNo(i);
|
|
|
|
|
|
|
|
|
|
updatedJournalSong.add(journalSong);
|
|
|
|
|
}
|
|
|
|
|
journalSongDao.saveAll(updatedJournalSong);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private JournalTag createJournalTag(String tagId, String journalId) {
|
|
|
|
|
JournalTag journalTag = new JournalTag();
|
|
|
|
|
journalTag.setId(String.valueOf(idWorker.nextId()));
|
|
|
|
|
journalTag.setJournalId(journalId);
|
|
|
|
|
journalTag.setTagId(tagId);
|
|
|
|
|
return journalTag;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private boolean isCollectionEqual(List<String> current, List<String> update) {
|
|
|
|
|
if ((null == current && null == update) || (current.isEmpty() && update.isEmpty())) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
if (current.size() != update.size()) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
Collections.sort(current);
|
|
|
|
|
Collections.sort(update);
|
|
|
|
|
for (int i = 0; i < current.size(); i++) {
|
|
|
|
|
if (!current.get(i).equals(update.get(i))) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void updateJournal(Journal journal, JournalAddModel param, String token) {
|
|
|
|
|
String title = param.getTitle();
|
|
|
|
|
if (!StringTools.isEmpty(title)) {
|
|
|
|
@ -420,7 +494,8 @@ public class CMSJournalService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private String copyJournalImage(String srcKey, String journalNo) {
|
|
|
|
|
String destKeySuffix = String.format("%05d/%s", Integer.parseInt(journalNo), srcKey.replace(Constants.TEMP_KEY_PREFIX, ""));
|
|
|
|
|
String destKeySuffix = String.format("%05d/%s", Integer.parseInt(journalNo),
|
|
|
|
|
srcKey.replace(Constants.TEMP_KEY_PREFIX, ""));
|
|
|
|
|
String destKey = Constants.MUSIC_KEY_PREFIX + destKeySuffix;
|
|
|
|
|
int copy = s3Service.copy(Constants.BUCKET, srcKey, destKey);
|
|
|
|
|
if (copy > 0) {
|
|
|
|
@ -428,8 +503,10 @@ public class CMSJournalService {
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 删除期刊的标签、音乐信息
|
|
|
|
|
*
|
|
|
|
|
* @param journalId
|
|
|
|
|
* @param journalNo
|
|
|
|
|
*/
|
|
|
|
@ -440,6 +517,7 @@ public class CMSJournalService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 发布期刊
|
|
|
|
|
*
|
|
|
|
|
* @param id
|
|
|
|
|
* @param queryModel
|
|
|
|
|
* @return
|
|
|
|
@ -461,6 +539,7 @@ public class CMSJournalService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 更新期刊启停状态
|
|
|
|
|
*
|
|
|
|
|
* @param id
|
|
|
|
|
* @param state
|
|
|
|
|
* @return
|
|
|
|
@ -472,6 +551,7 @@ public class CMSJournalService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 删除期刊
|
|
|
|
|
*
|
|
|
|
|
* @param id
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|