public async Task <ResponseMessage> SongClollectionDeleted([FromBody] SongCollectionRequest request) { // 日志输出:请求体 Console.WriteLine("WS------ Request: \r\n" + JsonUtil.ToJson(request)); // 创建响应体 ResponseMessage response = new ResponseMessage(); // 模型验证 if (!Util.ModelValidCheck(ModelState, response)) { return(response); } try { // 业务处理 await Manager.CollectionSongCancel(response, request, default(CancellationToken)); } catch (Exception e) { response.Code = ResponseDefine.ServiceError; response.Message += "\r\n" + e.Message; // 日志输出:服务器错误 Console.WriteLine("WS------ ServiceError: \r\n" + e); } // 日志输出:响应体 Console.WriteLine("WS------ Response: \r\n" + response != null ? JsonUtil.ToJson(response) : ""); return(response); }
/// <summary> /// 取消收藏歌曲 /// </summary> /// <param name="response"></param> /// <param name="request"></param> /// <param name="cancellationToken"></param> public async Task CollectionSongCancel([Required] ResponseMessage response, [Required] SongCollectionRequest request, CancellationToken cancellationToken = default(CancellationToken)) { // Check arguments. if (request.User == null || request.User.Id == null) { Def.Response.Wrap(response, Def.Response.BadRequsetCode, "请求体未包含系统用户信息,用户未登陆不能进行收藏歌曲操作"); return; } if (request.SongId == null) { Def.Response.Wrap(response, Def.Response.BadRequsetCode, "取消歌曲收藏,其ID不能为空"); return; } // Check whether user exist. var user = TheUsers.ById(request.User.Id).SingleOrDefault(); if (user == null) { Def.Response.Wrap(response, Def.Response.NotFoundCode, Def.User.NotFoundMsg); return; } // Check song exist. var songs = TheSongs.ById(request.SongId); if (songs.Count() == 0) { Def.Response.Wrap(response, Def.Response.BadRequsetCode, "你所取消收藏的歌曲不存在"); return; } // Check play list exist. var playListId = TheUsers.FindPlayListIdByType(request.User.Id, Def.PlayList.Type.Collection).SingleOrDefault(); if (playListId == null) { Def.Response.Wrap(response, Def.Response.NotFoundCode, "收藏歌单未找到,可能的原因是创建账号时没有默认创建收藏歌单!"); return; } // Check the correlation between songs and songs. var playListSong = _RelPlayListSongStore.ById(request.User.Id, playListId, request.SongId).SingleOrDefault(); if (playListSong == null) { Def.Response.Append(response, "你所取消收藏的歌曲不在你的收藏歌单中!"); // 修改ResponseMessage方法,添加追加函数? return; } else { await _RelPlayListSongStore.Delete(request.User.Id, playListSong, cancellationToken); response.Append("歌曲取消收藏成功!"); } }
/// <summary> /// 用户收藏歌曲,通过UserId在UserPlayList中找到RecommendPlayList,在PlayListSong中添加记录,需要对SongId进行有效性验证 /// </summary> /// <param name="userId">用户ID</param> /// <param name="songId">歌曲ID</param> public async Task CollectionSongAsync([Required] ResponseMessage response, [Required] SongCollectionRequest request, CancellationToken cancellationToken = default(CancellationToken)) { if (request.User == null || request.User.Id == null) { response.Code = ResponseDefine.BadRequset; response.Message += "\r\n" + "请求体未包含系统用户信息,用户未登陆不能进行收藏歌曲操作"; return; } // 判断用户是否存在 //var user = await TheUsers.ReadAsync(a => a.Where(b => b.Id == request.User.Id), cancellationToken); var user = TheUsers.ById(request.User.Id).SingleOrDefault(); if (user == null) { response.Code = ResponseDefine.NotFound; response.Message += "\r\n" + Def.User.NotFoundMsg; return; } // 找到PlayListId var RecommendPlayListId = await _RelUserPlayListStore.ReadAsync(a => a.Where(b => b.UserId == request.User.Id && b.Type == Def.PlayList.Type.Recommend).Select(c => c.PlayListId), cancellationToken); // 找不到歌单 if (RecommendPlayListId == null) { response.Code = ResponseDefine.NotFound; response.Message += "\r\n" + Def.PlayList.NotFoundMsg; return; } // 判断是否已经收藏 var playListSong = _RelPlayListSongStore.BySongId(user.Id, request.SongId).SingleOrDefault(); if (playListSong == null) { // 判断歌曲是否存在 await _RelPlayListSongStore.Create(user.Id, RecommendPlayListId, request.SongId, cancellationToken); } else { response.Code = ResponseDefine.PostRepeat; } }
public Task <List <Song> > Handle(SongCollectionRequest collectionRequest, CancellationToken cancellationToken) { var songs = _songRepository.Get(); return(Task.FromResult(_objectMapper.Map <List <Song> >(songs))); }