diff --git a/luoo_common/pom.xml b/luoo_common/pom.xml index c4a4784..eeec0f8 100644 --- a/luoo_common/pom.xml +++ b/luoo_common/pom.xml @@ -29,5 +29,9 @@ com.github.xiaoymin swagger-bootstrap-ui + + org.springframework.boot + spring-boot-starter-data-mongodb + diff --git a/luoo_user/src/main/java/com/luoo/user/pojo/UserCollect.java b/luoo_common/src/main/java/mongodb/UserCollect.java similarity index 66% rename from luoo_user/src/main/java/com/luoo/user/pojo/UserCollect.java rename to luoo_common/src/main/java/mongodb/UserCollect.java index b09d5e2..8c365bd 100644 --- a/luoo_user/src/main/java/com/luoo/user/pojo/UserCollect.java +++ b/luoo_common/src/main/java/mongodb/UserCollect.java @@ -1,31 +1,22 @@ -package com.luoo.user.pojo; - -import com.fasterxml.jackson.annotation.JsonIgnore; +package mongodb; import lombok.Getter; import lombok.Setter; import java.util.Date; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Table; - import com.fasterxml.jackson.annotation.JsonFormat; + +import org.springframework.data.annotation.Id; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; - /** * 用户收藏 */ @Getter @Setter -@Entity -@Table(name="tb_user_collect") public class UserCollect implements Serializable { private static final long serialVersionUID = 1L; @@ -33,8 +24,7 @@ public class UserCollect implements Serializable { * 收藏ID */ @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE) - private Integer collectId; + private String collectId; /** * 用户ID diff --git a/luoo_music/src/main/java/com/luoo/music/client/UserClient.java b/luoo_music/src/main/java/com/luoo/music/client/UserClient.java index 6a7099d..336beac 100644 --- a/luoo_music/src/main/java/com/luoo/music/client/UserClient.java +++ b/luoo_music/src/main/java/com/luoo/music/client/UserClient.java @@ -2,12 +2,11 @@ package com.luoo.music.client; import api.Result; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.GetMapping; @FeignClient("luoo-user") public interface UserClient { - @RequestMapping(value = "/admin",method= RequestMethod.GET) + @GetMapping("/admin") public Result findAll(); } diff --git a/luoo_music/src/main/java/com/luoo/music/controller/JournalController.java b/luoo_music/src/main/java/com/luoo/music/controller/JournalController.java index 2e9d191..161dca6 100644 --- a/luoo_music/src/main/java/com/luoo/music/controller/JournalController.java +++ b/luoo_music/src/main/java/com/luoo/music/controller/JournalController.java @@ -1,17 +1,15 @@ package com.luoo.music.controller; import java.util.Date; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.stream.Collectors; -import com.luoo.music.client.UserClient; +import com.luoo.music.dao.UserCollectDao; import com.luoo.music.dto.request.JournalQueryReq; import com.luoo.music.dto.response.JournalRespDTO; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; +import org.springframework.util.StopWatch; import org.springframework.web.bind.annotation.*; import com.luoo.music.pojo.Article; import com.luoo.music.service.ArticleService; @@ -22,8 +20,10 @@ import api.PageResult; import api.Result; import constants.Constants; import dto.UserLoginDto; +import enums.CollectTypeEnum; import enums.DateTimePatternEnum; import io.swagger.annotations.ApiOperation; +import mongodb.UserCollect; import util.DateUtil; import util.JwtUtil; @@ -36,7 +36,8 @@ import util.JwtUtil; @CrossOrigin @RequestMapping("/journal") public class JournalController { - + @Autowired + private UserCollectDao userCollectDao; @Autowired private ArticleService articleService; @Autowired @@ -57,14 +58,25 @@ public class JournalController { List list=pageList.stream().map(a->getArticleRespDTO(a,user)).collect(Collectors.toList()); return Result.success(new PageResult(Long.valueOf(list.size()), list) ); } - private JournalRespDTO getArticleRespDTO(Article article, UserLoginDto user) { + private JournalRespDTO getArticleRespDTO(Article article, UserLoginDto userLoginDto) { + StopWatch sw=new StopWatch(); + sw.start("stage1"); JournalRespDTO journalRespDTO=new JournalRespDTO(); journalRespDTO.setId(article.getId()); journalRespDTO.setJournalNo(article.getVolid()); journalRespDTO.setTitle(article.getTitle()); journalRespDTO.setImage(Constants.MUSIC_RESOURCE_PREFIX+article.getImage()); journalRespDTO.setDate(getEditDate(article)); - //TODO: 根据userId查询是否已收藏 + sw.stop(); + System.out.println(sw.prettyPrint()); + sw.start("stage2"); + //根据userId查询是否已收藏 + if(null!=userLoginDto) { + long userCollectCount=userCollectDao.countByUserIdAndObjectIdAndCollectType(userLoginDto.getUserId(), journalRespDTO.getId(), CollectTypeEnum.JOURNAL.getType()); + journalRespDTO.setHaveCollect(userCollectCount>0); + } + sw.stop(); + System.out.println(sw.prettyPrint()); return journalRespDTO; } private String getEditDate(Article article) { diff --git a/luoo_music/src/main/java/com/luoo/music/controller/SongController.java b/luoo_music/src/main/java/com/luoo/music/controller/SongController.java index 2415217..9fad81d 100644 --- a/luoo_music/src/main/java/com/luoo/music/controller/SongController.java +++ b/luoo_music/src/main/java/com/luoo/music/controller/SongController.java @@ -1,5 +1,7 @@ package com.luoo.music.controller; +import com.luoo.music.client.UserClient; +import com.luoo.music.dao.UserCollectDao; import com.luoo.music.dto.response.SongRespDTO; import com.luoo.music.pojo.Article; import com.luoo.music.pojo.Song; @@ -12,10 +14,12 @@ import api.PageResult; import api.Result; import constants.Constants; import dto.UserLoginDto; +import enums.CollectTypeEnum; import enums.VerifyRegexEnum; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import mongodb.UserCollect; import util.JwtUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -32,13 +36,15 @@ import java.util.stream.Collectors; @CrossOrigin @RequestMapping("/song") public class SongController { - + @Autowired + private UserCollectDao userCollectDao; @Autowired private SongService songService; @Autowired private ArticleService articleService; @Autowired private JwtUtil jwtUtil; + /** * 查询全部数据 * @@ -49,17 +55,17 @@ public class SongController { return Result.success(songService.findAll()); } - @ApiOperation(value = "1.根据期刊号查询歌曲信息",notes="若为游客,期刊号须在最新10期内") + @ApiOperation(value = "1.根据期刊号查询歌曲信息", notes = "若为游客,期刊号须在最新10期内") @GetMapping("/getByJournalNo/{journalNo}") @GlobalInterceptor public Result> getByJournalNo(@RequestHeader(value = "token", required = false) String token, @PathVariable String journalNo) { - UserLoginDto user=jwtUtil.getUserLoginDto(token); - if(null==user&&!isLatest10(journalNo)) { + UserLoginDto user = jwtUtil.getUserLoginDto(token); + if (null == user && !isLatest10(journalNo)) { return Result.unauthorized(null); } List songs = songService.findByVolid(journalNo); - List results = songs.stream().map(s -> getSongRespDTO(s)).collect(Collectors.toList()); + List results = songs.stream().map(s -> getSongRespDTO(s, user)).collect(Collectors.toList()); return Result.success(results); } @@ -68,18 +74,17 @@ public class SongController { } @ApiOperation(value = "2.随机播放歌曲", notes = "雀乐FM") - @ApiImplicitParams({ - @ApiImplicitParam(name = "limit", value = "随机歌曲数,最少1首,最多30首", required = false) - }) + @ApiImplicitParams({ @ApiImplicitParam(name = "limit", value = "随机歌曲数,最少1首,最多30首", required = false) }) @GetMapping("/random/{limit}") @GlobalInterceptor - public Result> random(@PathVariable @VerifyParam(required=true,regex=VerifyRegexEnum.RANDOM_SONG_LIMIT) Integer limit) { + public Result> random( + @PathVariable @VerifyParam(required = true, regex = VerifyRegexEnum.RANDOM_SONG_LIMIT) Integer limit) { List songs = songService.random(limit); - List results = songs.stream().map(s -> getSongRespDTO(s)).collect(Collectors.toList()); + List results = songs.stream().map(s -> getSongRespDTO(s, null)).collect(Collectors.toList()); return Result.success(results); } - private SongRespDTO getSongRespDTO(Song song) { + private SongRespDTO getSongRespDTO(Song song, UserLoginDto userLoginDto) { SongRespDTO songRespDTO = new SongRespDTO(); songRespDTO.setJournalNo(song.getVolid()); songRespDTO.setAlbum(song.getAlbum()); @@ -90,6 +95,11 @@ public class SongController { songRespDTO.setPic(Constants.MUSIC_RESOURCE_PREFIX + song.getUrl().replace(".mp3", ".jpg")); songRespDTO.setLrc(Constants.MUSIC_RESOURCE_PREFIX + song.getUrl().replace(".mp3", ".lyric")); songRespDTO.setSongNo(song.getSongno()); + // 根据userId查询是否已收藏 + if (null != userLoginDto) { + long userCollectCount=userCollectDao.countByUserIdAndObjectIdAndCollectType(userLoginDto.getUserId(), songRespDTO.getId(), CollectTypeEnum.SONG.getType()); + songRespDTO.setHaveCollect(userCollectCount>0); + } return songRespDTO; } diff --git a/luoo_music/src/main/java/com/luoo/music/dao/UserCollectDao.java b/luoo_music/src/main/java/com/luoo/music/dao/UserCollectDao.java new file mode 100644 index 0000000..50e64f9 --- /dev/null +++ b/luoo_music/src/main/java/com/luoo/music/dao/UserCollectDao.java @@ -0,0 +1,10 @@ +package com.luoo.music.dao; + + +import org.springframework.data.mongodb.repository.MongoRepository; + +import mongodb.UserCollect; + +public interface UserCollectDao extends MongoRepository { + public long countByUserIdAndObjectIdAndCollectType(String userId, String objectId, Integer collectType); +} diff --git a/luoo_music/src/main/java/com/luoo/music/dto/response/SongRespDTO.java b/luoo_music/src/main/java/com/luoo/music/dto/response/SongRespDTO.java index 2ee2a7d..54a6e59 100644 --- a/luoo_music/src/main/java/com/luoo/music/dto/response/SongRespDTO.java +++ b/luoo_music/src/main/java/com/luoo/music/dto/response/SongRespDTO.java @@ -23,4 +23,6 @@ public class SongRespDTO { private String journalNo; @ApiModelProperty(value = "歌曲号") private Integer songNo; + @ApiModelProperty(value = "已收藏") + private boolean haveCollect; } diff --git a/luoo_user/src/main/java/com/luoo/user/controller/UserCollectController.java b/luoo_user/src/main/java/com/luoo/user/controller/UserCollectController.java index 803de31..bbc37a0 100644 --- a/luoo_user/src/main/java/com/luoo/user/controller/UserCollectController.java +++ b/luoo_user/src/main/java/com/luoo/user/controller/UserCollectController.java @@ -1,7 +1,9 @@ package com.luoo.user.controller; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/luoo_user/src/main/java/com/luoo/user/dao/UserCollectDao.java b/luoo_user/src/main/java/com/luoo/user/dao/UserCollectDao.java index 5dfe209..b16061a 100644 --- a/luoo_user/src/main/java/com/luoo/user/dao/UserCollectDao.java +++ b/luoo_user/src/main/java/com/luoo/user/dao/UserCollectDao.java @@ -1,11 +1,11 @@ package com.luoo.user.dao; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.JpaSpecificationExecutor; -import com.luoo.user.pojo.UserCollect; +import org.springframework.data.mongodb.repository.MongoRepository; -public interface UserCollectDao extends JpaRepository, JpaSpecificationExecutor { +import mongodb.UserCollect; + +public interface UserCollectDao extends MongoRepository { public UserCollect findByUserIdAndObjectIdAndCollectType(String userId, String objectId, Integer collectType); public long deleteByUserIdAndObjectIdAndCollectType(String userId, String objectId, Integer collectType); } diff --git a/luoo_user/src/main/java/com/luoo/user/service/UserCollectService.java b/luoo_user/src/main/java/com/luoo/user/service/UserCollectService.java index 34426df..d1c7d10 100644 --- a/luoo_user/src/main/java/com/luoo/user/service/UserCollectService.java +++ b/luoo_user/src/main/java/com/luoo/user/service/UserCollectService.java @@ -7,16 +7,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.luoo.user.dao.UserCollectDao; -import com.luoo.user.dao.UserInfoDao; -import com.luoo.user.pojo.UserCollect; import api.StatusCode; import enums.CollectTypeEnum; import exception.BizException; - +import mongodb.UserCollect; @Service -@Transactional public class UserCollectService { @Autowired private UserCollectDao userCollectDao; @@ -41,5 +38,4 @@ public class UserCollectService { Integer collectType) { userCollectDao.deleteByUserIdAndObjectIdAndCollectType(userId, objectId, collectType); } - } diff --git a/luoo_user/src/main/java/com/luoo/user/service/UserInfoService.java b/luoo_user/src/main/java/com/luoo/user/service/UserInfoService.java index c04a02d..906a011 100644 --- a/luoo_user/src/main/java/com/luoo/user/service/UserInfoService.java +++ b/luoo_user/src/main/java/com/luoo/user/service/UserInfoService.java @@ -39,7 +39,6 @@ import util.JwtUtil; * */ @Service -@Transactional public class UserInfoService { @Autowired private UserInfoDao userInfoDao;