public PageResult Search(MusicRequestType type, string key, int page, int size = 20)
        {
            PageResult result = null;
            var        keys   = GlobalHelper.ToSeparateByJieba(key);

            switch (type)
            {
            case MusicRequestType.Song:
                result = SearchSong(keys, page, size);
                break;

            case MusicRequestType.Album:
                result = SearchAlbum(keys, page, size);
                break;

            case MusicRequestType.PlayList:
                break;

            case MusicRequestType.MV:
                break;

            case MusicRequestType.Lyric:
                break;

            case MusicRequestType.Singer:
                result = SearchSinger(keys, page, size);
                break;

            case MusicRequestType.User:
                break;
            }
            return(result);
        }
        /// <summary>
        /// 获取某一页的歌曲类型搜索结果
        /// </summary>
        /// <param name="type"></param>
        /// <param name="searchKey"></param>
        /// <param name="currentPageNumber"></param>
        /// <param name="size"></param>
        /// <returns></returns>
        private PageResult GetJMusicInfoOfPageModel(MusicRequestType type, string searchKey, int currentPageNumber, int size)
        {
            ISearchService musicSearchService = new SearchService();
            var            result             = musicSearchService.Search(type, searchKey, currentPageNumber, size);

            return(result);
        }
        /// <summary>
        /// 添加UserLike
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="objId"></param>
        /// <param name="type"></param>
        public void Create(int userId, int objId, MusicRequestType type)
        {
            var user = _userManager.Find(userId);

            if (user.IsAdmin)
            {
                ThrowException("用户不存在!");
            }
            UserLike userLike = null;

            switch (type)
            {
            case MusicRequestType.Song:
                var music = _musicManager.Find(objId);
                if (!music.IsPublished)
                {
                    ThrowException("歌曲不存在!");
                }
                if (JMDbContext.UserLike.Any(u => u.UserId == userId && u.MusicId == objId))
                {
                    ThrowException("您的喜好歌曲中已存在该歌曲,无需重复添加");
                }
                userLike = new UserLike()
                {
                    UserId  = userId,
                    MusicId = objId,
                };
                break;

            default:
                return;
            }
            Create(userLike);
            Save();
        }
Esempio n. 4
0
        public bool IsExistOfUserMusicList(int musicListId, int objId, MusicRequestType type)
        {
            switch (type)
            {
            case MusicRequestType.Song:
                return(_ctx.UserMusicListMusic.Any(l => l.MusicId == objId && l.MusicListId == musicListId));

            default:
                return(false);
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="musicId"></param>
        /// <param name="type"></param>
        /// <param name="isToAdd">false 删除  true添加  null toggle</param>
        /// <returns></returns>
        public bool ToggleUserLike(int musicId, MusicRequestType type, bool?isToAdd = null)
        {
            if (_musicSourceType == MusicSourceType.JM)
            {
                var user = App.User;
                if (user != null)
                {
                    switch (isToAdd)
                    {
                    case true:
                        if (!MusicService.IsUserLike(user.Id, musicId, type))
                        {
                            MusicService.ToggleUserLike(user.Id, musicId, type);
                        }
                        else
                        {
                            return(true);
                        }
                        break;

                    case false:
                        if (MusicService.IsUserLike(user.Id, musicId, type))
                        {
                            MusicService.ToggleUserLike(user.Id, musicId, type);
                        }
                        else
                        {
                            return(true);
                        }
                        break;

                    case null:
                        MusicService.ToggleUserLike(user.Id, musicId, type);
                        break;
                    }
                    if (_musicPlayerMenuViewModel.Id == musicId)
                    {
                        ChangeILikeState();
                    }
                    return(true);
                }
                else
                {
                    JMMessageBox.Show("添加我喜欢出错", "请先登录", JMMessageBoxButtonType.OK, JMMessageBoxIconType.Error);
                }
            }
            else
            {
                JMMessageBox.Show("添加我喜欢出错", "该音乐类型不支持", JMMessageBoxButtonType.OK, JMMessageBoxIconType.Error);
            }

            return(false);
        }
        public UserLike Find(int userId, int objId, MusicRequestType type)
        {
            UserLike userLike = null;

            switch (type)
            {
            case MusicRequestType.Song:
                userLike = JMDbContext.UserLike.SingleOrDefault(u => u.UserId == userId && u.MusicId == objId);
                break;
            }
            return(userLike);
        }
        public void Delete(int userId, int objId, MusicRequestType type)
        {
            UserLike userLike = null;

            switch (type)
            {
            case MusicRequestType.Song:
                userLike = JMDbContext.UserLike.SingleOrDefault(u => u.UserId == userId && u.MusicId == objId);
                break;

            default:
                return;
            }
            if (userLike != null)
            {
                Remove(userLike);
            }
        }
 private void GetJMusics(MusicRequestType type, int page, int size)
 {
     Task.Factory.StartNew(() =>
     {
         try
         {
             var musicInfoOfPageModel = GetJMusicInfoOfPageModel(type, _lastSearchKey, page, size);
             if (musicInfoOfPageModel == null)
             {
                 return;
             }
             MusicSearchInfoChangedUtil.InvokeFromJMSearchChanged(musicInfoOfPageModel, page);
         }
         catch (Exception ex)
         {
             MusicSearchInfoChangedUtil.InvokeFromJMSearchChanged(null, page, false, ex.Message);
         }
     });
 }
Esempio n. 9
0
        public void AddToUserMusicList(int userId, int objId, int userMusicListId, MusicRequestType type)
        {
            var user = _userManager.Find(userId);

            if (user == null || user.IsAdmin)
            {
                ThrowException("用户不存在");
            }

            UserMusicList list = JMDbContext.UserMusicList.SingleOrDefault(u => u.Id == userMusicListId && u.UserId == userId && !u.IsDeleted);

            if (list == null)
            {
                ThrowException("未找到该用户的歌单");
            }

            switch (type)
            {
            case MusicRequestType.Song:
                var music = _musicManager.Find(objId);
                if (music == null || !music.IsPublished)
                {
                    ThrowException("歌曲不存在");
                }
                var listMusic = new UserMusicListMusic()
                {
                    MusicId     = music.Id,
                    MusicListId = list.Id
                };
                JMDbContext.UserMusicListMusic.Add(listMusic);
                break;

            default:
                return;
            }
            Save();
        }
Esempio n. 10
0
 public void AddToUserMusicList(int userId, int objId, int musicListId, MusicRequestType type)
 {
     _userMusicListManager.AddToUserMusicList(userId, objId, musicListId, type);
 }
Esempio n. 11
0
 public bool IsUserLike(int userId, int objId, MusicRequestType type)
 {
     return(_userLikeManager.Find(userId, objId, type) != null);
 }
Esempio n. 12
0
 public void ToggleUserLike(int userId, int objId, MusicRequestType type)
 {
     _userLikeManager.Toggle(userId, objId, type);
 }
Esempio n. 13
0
 public MusicSearchInfoRequestArgs(MusicRequestType type, int targetPageNumber, int size = 20) : base(targetPageNumber)
 {
     Type = type;
     Size = size;
 }
Esempio n. 14
0
 public static void InvokeFromJMRequest(MusicRequestType type, int targetPageNumber = 1, int size = 20)
 => JMRequestEvent?.Invoke(null, new MusicSearchInfoRequestArgs(type, targetPageNumber, size));