Exemple #1
0
        /// <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("歌曲取消收藏成功!");
            }
        }
Exemple #2
0
        /// <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;
            }
        }
Exemple #3
0
        /// <summary>
        /// 用户信息更新
        /// </summary>
        /// <param name="response"></param>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        public async Task Update([Required] ResponseMessage <UserJson> response, [Required] UserUpdateRequest request, CancellationToken cancellationToken = default(CancellationToken))
        {
            // 检查参数格式
            if (request.User == null || request.User.Id == null || request.User.Name == null || request.User.Pwd == null)
            {
                Def.Response.Wrap(response, Def.Response.NotAllowCode, "你还没有登陆,不能够修改用户信息");
                return;
            }
            if (request.UpdateUser == null || request.UpdateUser.Id == null)
            {
                Def.Response.Wrap(response, Def.Response.BadRequsetCode, "修改用户信息的请求有误");
                return;
            }
            // 判断用户是否存在及其密码是否正确
            if (request.User.Id != request.UpdateUser.Id)
            {
                Def.Response.Wrap(response, Def.Response.NotSupportCode, "抱歉,暂时不支持修改其他账号的用户信息");  // 用户是不应该知道自己的ID的
            }
            // 检查参数有效
            var dbuser = TheUsers.ById(request.UpdateUser.Id).SingleOrDefault();

            if (dbuser == null)
            {
                Def.Response.Wrap(response, Def.Response.BadRequsetCode, Def.User.NotFoundMsg);
                return;
            }
            // 判断密码是否错误
            else if (dbuser.Pwd != request.User.Pwd)
            {
                Def.Response.Wrap(response, Def.Response.BadRequsetCode, "用户密码错误");
                return;
            }
            // 用户数据更新: 将数据库中拿出的user更新几个变化的值
            dbuser._Update(_Mapper.Map <User>(request.UpdateUser));
            dbuser._UpdateUserId = request.User.Id;
            await TheUsers.UpdateAsync(dbuser, cancellationToken);

            response.Extension = _Mapper.Map <UserJson>(dbuser);  // 返回的User包含完整的用户信息
        }