FavoriteService.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. using Muchinfo.MTPClient.Data.Model;
  2. using Muchinfo.MTPClient.Infrastructure.Cache;
  3. using Muchinfo.MTPClient.Infrastructure.Users;
  4. using Muchinfo.MTPClient.IService;
  5. using System.Collections.Generic;
  6. using System.Collections.ObjectModel;
  7. using System.Linq;
  8. using Muchinfo.PC.Common.Extensions;
  9. namespace Muchinfo.MTPClient.Service
  10. {
  11. public class FavoriteService : IFavoriteService
  12. {
  13. /// <summary>
  14. /// 获取自选商品列表
  15. /// </summary>
  16. /// <param name="favoriteId">The favorite identifier.</param>
  17. /// <returns>ObservableCollection{QuoteGoods}.</returns>
  18. public ObservableCollection<QuoteGoods> GetMyFavoriteGoodses(uint favoriteId)
  19. {
  20. var list = FavoriteManager.GetMyFavorites();
  21. if (list == null) return null;
  22. var item = list.FirstOrDefault(z => z.Id == favoriteId);
  23. if (item == null) return null;
  24. var goodsList = item.FavoriteGoodses;
  25. if (goodsList == null || !goodsList.Any()) return null;
  26. var result = new ObservableCollection<QuoteGoods>();
  27. var cacheGoodsList = CacheManager.CacheGoodsBaseInfos;
  28. if (cacheGoodsList == null || !cacheGoodsList.Any()) return null;
  29. var sortList = goodsList.OrderBy(z => z.ShowIndex);
  30. foreach (var localGoods in sortList)
  31. {
  32. if (localGoods == null) continue;
  33. var goods = cacheGoodsList.FirstOrDefault(z => z.Symbol.ToUpper() == localGoods.Symbol.ToUpper());
  34. if (goods == null) continue;
  35. //goods.IsSelected = true;
  36. result.Add(goods);
  37. }
  38. //默认按商品代码排序
  39. return result.OrderBy(z=>z.GoodsCode).ToObservableCollection();
  40. }
  41. /// <summary>
  42. /// 添加商品到我的自选
  43. /// </summary>
  44. /// <param name="favoriteId">The favorite identifier.</param>
  45. /// <param name="goods">The goods.</param>
  46. public void AddToMyFavorite(uint favoriteId, QuoteGoods goods)
  47. {
  48. var list = FavoriteManager.GetMyFavorites();
  49. if (list == null) return;
  50. var item = list.FirstOrDefault(z => z.Id == favoriteId);
  51. if (item == null) return;
  52. var localGoodsList = item.FavoriteGoodses == null ? new List<LocalGoods>() : item.FavoriteGoodses.ToList();
  53. var quoteItem = localGoodsList.FirstOrDefault(z => z.Symbol.ToUpper() == goods.Symbol.ToUpper());
  54. if (quoteItem == null)
  55. {
  56. var showIndex = localGoodsList.Count > 0 ? localGoodsList.Max(z => z.ShowIndex) + 1 : 1;
  57. localGoodsList.Add(new LocalGoods()
  58. {
  59. Symbol = goods.Symbol,
  60. ShowIndex = showIndex
  61. });
  62. }
  63. item.FavoriteGoodses = localGoodsList;
  64. FavoriteManager.AddOrUpdateMyFavorites(item);
  65. }
  66. /// <summary>
  67. /// 从自选删除
  68. /// </summary>
  69. /// <param name="favoriteId">The favorite identifier.</param>
  70. /// <param name="goods">The goods.</param>
  71. public void RemoveFromMyFavorite(uint favoriteId, QuoteGoods goods)
  72. {
  73. var list = FavoriteManager.GetMyFavorites();
  74. if (list == null) return;
  75. var item = list.FirstOrDefault(z => z.Id == favoriteId);
  76. if (item == null) return;
  77. var localGoodsList = item.FavoriteGoodses == null ? new List<LocalGoods>() : item.FavoriteGoodses.ToList();
  78. var quoteItem = localGoodsList.FirstOrDefault(z => z.Symbol.ToUpper() == goods.Symbol.ToUpper());
  79. if (quoteItem == null) return;
  80. localGoodsList.Remove(quoteItem);
  81. item.FavoriteGoodses = localGoodsList;
  82. FavoriteManager.AddOrUpdateMyFavorites(item);
  83. }
  84. /// <summary>
  85. /// 获取所属自选
  86. /// </summary>
  87. /// <param name="goods">The goods.</param>
  88. /// <returns>List{MyFavorite}.</returns>
  89. public List<MyFavorite> GetParentFavorites(QuoteGoods goods)
  90. {
  91. var list = FavoriteManager.GetMyFavorites();
  92. if (list == null || !list.Any()) return null;
  93. var result = new List<MyFavorite>();
  94. foreach (var myFavorite in list)
  95. {
  96. if (myFavorite == null || myFavorite.FavoriteGoodses == null || !myFavorite.FavoriteGoodses.Any()) continue;
  97. var item = myFavorite.FavoriteGoodses.FirstOrDefault(z => z.Symbol.ToUpper() == goods.Symbol.ToUpper());
  98. if (item == null) continue;
  99. result.Add(myFavorite);
  100. }
  101. return result;
  102. }
  103. }
  104. }