Browse Source

调整曲目,专辑收藏,支持老师端

Eric 2 năm trước cách đây
mục cha
commit
d3768ef9b7

+ 13 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicFavorite.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.common.entity.BaseEntity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
@@ -22,6 +23,10 @@ public class MusicFavorite extends BaseEntity {
     @ApiModelProperty(value = "主键id")
     private Long id;  //主键ID
 
+	@TableField("client_type_")
+	@ApiModelProperty(value = "客户端类型")
+	private ClientEnum clientType;
+
     @TableField("user_id_")
     @ApiModelProperty(value = "用户ID(目前只是学生ID)")
     private Long userId;  //用户ID(目前只是学生ID)
@@ -84,8 +89,15 @@ public class MusicFavorite extends BaseEntity {
 	    return this.favoriteFlag;
 	}
 
+	public ClientEnum getClientType() {
+		return clientType;
+	}
+
+	public void setClientType(ClientEnum clientType) {
+		this.clientType = clientType;
+	}
 
-    @Override
+	@Override
     public String toString() {
         return ToStringBuilder.reflectionToString(this);
     }

+ 19 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ClientEnum.java

@@ -32,4 +32,23 @@ public enum ClientEnum implements BaseEnum<String, ClientEnum> {
     public String getMsg() {
         return msg;
     }
+
+    /**
+     * 校验客户端类型合法性
+     * @param clientType 客户端类型
+     * @return boolean
+     */
+    public static boolean invalid(String clientType) {
+
+        ClientEnum[] values = ClientEnum.values();
+
+        for (ClientEnum item : values) {
+
+            if (item.getCode().equals(clientType)) {
+                return false;
+            }
+        }
+
+        return true;
+    }
 }

+ 3 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicFavoriteService.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.yonge.cooleshow.biz.dal.entity.MusicFavorite;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 
 import java.util.List;
 
@@ -18,9 +19,10 @@ public interface MusicFavoriteService extends IService<MusicFavorite> {
      *
      * @param userId 学生id
      * @param musicSheetId 专辑id
+     * @param clientType 客户端类型
      * @return list
      */
-    List<MusicFavorite> getFavorite(Long userId, Long musicSheetId);
+    List<MusicFavorite> getFavorite(Long userId, Long musicSheetId, ClientEnum clientType);
 
     /**
      * 获取曲目收藏数量

+ 5 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java

@@ -18,7 +18,6 @@ import com.yonge.cooleshow.biz.dal.dto.search.TeacherMusicSheetAuditSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.TeacherMusicSheetSearch;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
-import com.yonge.cooleshow.biz.dal.enums.MusicSheetType;
 import com.yonge.cooleshow.biz.dal.vo.HomeMusicSheetVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetShareVo;
@@ -105,9 +104,10 @@ public interface MusicSheetService extends IService<MusicSheet> {
      *
      * @param userId 用户id , 学生id
      * @param musicSheetId 曲目id
+     * @param clientType 客户端类型
      * @return boolean
      */
-    boolean setFavorite(Long userId, Long musicSheetId);
+    boolean setFavorite(Long userId, Long musicSheetId, ClientEnum clientType);
 
     /**
      * 我的单曲
@@ -261,10 +261,11 @@ public interface MusicSheetService extends IService<MusicSheet> {
      * 官网曲目详情
      *
      * @param musicSheetId 曲目id
-     * @param sysUser
+     * @param sysUser SysUser
+     * @param clientType 客户端类型
      * @return
      */
-    MusicSheetWebsiteDetailVo websiteDetail(Long musicSheetId, SysUser sysUser);
+    MusicSheetWebsiteDetailVo websiteDetail(Long musicSheetId, SysUser sysUser, ClientEnum clientType);
 
     /**
      * 查询老师曲目审核数量

+ 3 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicFavoriteServiceImpl.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 import com.yonge.cooleshow.biz.dal.entity.AlbumFavorite;
 import com.yonge.cooleshow.biz.dal.entity.MusicFavorite;
 import com.yonge.cooleshow.biz.dal.dao.MusicFavoriteDao;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.service.MusicFavoriteService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,10 +32,11 @@ public class MusicFavoriteServiceImpl extends ServiceImpl<MusicFavoriteDao,Music
     }
 
     @Override
-    public List<MusicFavorite> getFavorite(Long userId, Long musicSheetId) {
+    public List<MusicFavorite> getFavorite(Long userId, Long musicSheetId, ClientEnum clientType) {
         return this.lambdaQuery()
                    .eq(MusicFavorite::getMusicSheetId, musicSheetId)
                    .eq(MusicFavorite::getUserId, userId)
+                   .eq(MusicFavorite::getClientType, clientType)
                    .list();
 
     }

+ 4 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java

@@ -345,8 +345,8 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean setFavorite(Long userId, Long musicSheetId) {
-        List<MusicFavorite> musicFavorites = musicFavoriteService.getFavorite(userId, musicSheetId);
+    public boolean setFavorite(Long userId, Long musicSheetId, ClientEnum clientType) {
+        List<MusicFavorite> musicFavorites = musicFavoriteService.getFavorite(userId, musicSheetId, clientType);
         if (CollectionUtils.isEmpty(musicFavorites)) {
             MusicFavorite musicFavorite = new MusicFavorite();
             musicFavorite.setMusicSheetId(musicSheetId);
@@ -950,7 +950,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
     }
 
     @Override
-    public MusicSheetWebsiteDetailVo websiteDetail(Long musicSheetId, SysUser sysUser) {
+    public MusicSheetWebsiteDetailVo websiteDetail(Long musicSheetId, SysUser sysUser, ClientEnum clientType) {
         MusicSheetDetailVo detail = detail(musicSheetId, null, null);
         MusicSheetWebsiteDetailVo musicSheetWebsiteDetailVo = new MusicSheetWebsiteDetailVo();
         BeanUtils.copyProperties(detail, musicSheetWebsiteDetailVo);
@@ -983,7 +983,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao, MusicSheet
             }
 
             // 曲目收藏
-            List<MusicFavorite> favorite = musicFavoriteService.getFavorite(sysUser.getId(), detail.getId());
+            List<MusicFavorite> favorite = musicFavoriteService.getFavorite(sysUser.getId(), detail.getId(), clientType);
             if (!CollectionUtils.isEmpty(favorite)) {
                 musicSheetWebsiteDetailVo.setFavorite(YesOrNoEnum.YES);
             }

+ 2 - 1
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MusicAlbumController.java

@@ -130,7 +130,8 @@ public class MusicAlbumController extends BaseController {
      */
     @PostMapping("/favorite/{id}")
     @ApiOperation(value = "专辑收藏/取消收藏")
-    public HttpResponseResult<Boolean> favorite(@ApiParam(value = "专辑编号", required = true) @PathVariable("id") Long id) {
+    public HttpResponseResult<Boolean> favorite(@ApiParam(value = "专辑编号", required = true) @PathVariable("id") Long id,
+                                                @ApiParam(value = "客户端类型") @RequestParam(value = "clientType", required = false) String clientType) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null  || sysUser.getId() == null) {
             return failed("用户信息获取失败");

+ 12 - 2
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/MusicSheetController.java

@@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -170,12 +171,21 @@ public class MusicSheetController extends BaseController {
      */
     @PostMapping("/favorite/{id}")
     @ApiOperation(value = "曲目收藏/取消收藏")
-    public HttpResponseResult<Boolean> favorite(@ApiParam(value = "曲目编号", required = true) @PathVariable("id") Long id) {
+    public HttpResponseResult<Boolean> favorite(@ApiParam(value = "曲目编号", required = true) @PathVariable("id") Long id,
+                                                @ApiParam(value = "客户端类型") @RequestParam(value = "clientType", required = false) String clientType) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null  || sysUser.getId() == null) {
             return failed("用户信息获取失败");
         }
-        return succeed(musicSheetService.setFavorite(sysUser.getId(),id));
+
+        if (StringUtils.isEmpty(clientType)) {
+            clientType = ClientEnum.STUDENT.getCode();
+        }
+        if (ClientEnum.invalid(clientType)) {
+            return failed("无效的客户端类型");
+        }
+
+        return succeed(musicSheetService.setFavorite(sysUser.getId(),id, ClientEnum.valueOf(clientType)));
     }
 
 

+ 14 - 2
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/MusicSheetController.java

@@ -8,12 +8,14 @@ import java.util.Date;
 
 import javax.validation.Valid;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -64,12 +66,22 @@ public class MusicSheetController extends BaseController {
      */
     @PostMapping("/favorite/{id}")
     @ApiOperation(value = "曲目收藏/取消收藏")
-    public HttpResponseResult<Boolean> favorite(@ApiParam(value = "曲目编号", required = true) @PathVariable("id") Long id) {
+    public HttpResponseResult<Boolean> favorite(@ApiParam(value = "曲目编号", required = true) @PathVariable("id") Long id,
+                                                @ApiParam(value = "客户端类型") @RequestParam(value = "clientType", required = false) String clientType) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null  || sysUser.getId() == null) {
             return failed("用户信息获取失败");
         }
-        return succeed(musicSheetService.setFavorite(sysUser.getId(),id));
+
+        // 设置默认客户端
+        if (StringUtils.isEmpty(clientType)) {
+            clientType = ClientEnum.STUDENT.getCode();
+        }
+        if (ClientEnum.invalid(clientType)) {
+            return failed("无效的客户端类型");
+        }
+
+        return succeed(musicSheetService.setFavorite(sysUser.getId(), id, ClientEnum.valueOf(clientType)));
     }
 
 

+ 13 - 2
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenMusicSheetController.java

@@ -8,6 +8,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.HotSearchSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetSearch;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.HotSearchEnum;
 import com.yonge.cooleshow.biz.dal.service.HotSearchService;
 import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
@@ -21,6 +22,7 @@ import com.yonge.toolset.base.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -54,9 +56,18 @@ public class OpenMusicSheetController extends BaseController {
      */
     @GetMapping("/detail/{id}")
     @ApiOperation(value = "曲目详情", notes = "传入musicTag")
-    public HttpResponseResult<MusicSheetWebsiteDetailVo> detail(@ApiParam(value = "曲谱编号", required = true) @PathVariable("id") Long id) {
+    public HttpResponseResult<MusicSheetWebsiteDetailVo> detail(@ApiParam(value = "曲谱编号", required = true) @PathVariable("id") Long id,
+                                                                @ApiParam(value = "客户端类型") @RequestParam(value = "clientType", required = false) String clientType) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        MusicSheetWebsiteDetailVo detail = musicSheetService.websiteDetail(id,sysUser);
+
+        if (StringUtils.isEmpty(clientType)) {
+            clientType = ClientEnum.STUDENT.getCode();
+        }
+        if (ClientEnum.invalid(clientType)) {
+            return failed("无效的客户端类型");
+        }
+
+        MusicSheetWebsiteDetailVo detail = musicSheetService.websiteDetail(id, sysUser, ClientEnum.valueOf(clientType));
         return succeed(detail);
     }