public async Task <APIResult> GetCommoditiesForMember([FromBody] GetShopCategoryAndCommoditiesArgsModel args) { if (string.IsNullOrEmpty(args.ShopFlag)) { throw new Exception("ShopFlag不能为空"); } var res = await Task.Run(() => { var shop = db.Query <Shop>() .Where(m => !m.IsDel) .Where(m => m.Flag == args.ShopFlag) .FirstOrDefault(); var memberId = GetMemberId(); var shopMember = ShopMemberServer.GetShopMember(db, shop.Id, memberId); ShopMemberLevel shopMemberLevel = null; if (shopMember != null) { shopMemberLevel = db.GetSingle <ShopMemberLevel>(shopMember.ShopMemberLevelId); } ShopBrandCommodityServer server = new ShopBrandCommodityServer(db, shop, args.DiningWay); GetShopCommoditiesAndCombos rtn = new GetShopCommoditiesAndCombos() { CategoryAndCommodity = server.GetCategoryAndCommodity(shopMemberLevel?.Discount), Commodity = server.GetComboList() }; return(rtn); }); return(Success(res)); }
/// <summary> ///更新排序 /// </summary> /// <param name="shopid">店铺Ids</param> /// <returns></returns> private void SetSort(int shopid) { try { int level = 1; ShopMemberLevel minMemberLevel = new ShopMemberLevel(); var shopidMemberLevel = db.ShopMemberLevel.Where(m => !m.IsDel && m.ShopId.Equals(shopid)); minMemberLevel = shopidMemberLevel.FirstOrDefault(m => m.MinIntegral.Equals(shopidMemberLevel.Min(d => d.MinIntegral))); minMemberLevel.Sort = level; foreach (var minMemberLevelItem in shopidMemberLevel) { level++; minMemberLevel = shopidMemberLevel.FirstOrDefault(m => m.MinIntegral.Equals(minMemberLevel.MaxIntegral + 1)); if (minMemberLevel != null) { minMemberLevel.Sort = level; } } db.SaveChanges(); //List<AddMemberLevelModel> newlist = new List<AddMemberLevelModel>(); //var minMemberLevel = memberLevelModel.FirstOrDefault(m => m.MinIntegral.Equals(memberLevelModel.Min(d => d.MinIntegral))); //minMemberLevel.Sort = level; //newlist.Add(minMemberLevel); //memberLevelModel.Remove(minMemberLevel); //while (isWhile) //{ // if (memberLevelModel.Count.Equals(0)) // { // isWhile = false; // continue; // } // minMemberLevel = memberLevelModel.FirstOrDefault(m => m.MinIntegral.Equals(newlist.FirstOrDefault(c => c.Sort.Equals(level)).MaxIntegral + 1)); // level++; // minMemberLevel.Sort = level; // newlist.Add(minMemberLevel); // memberLevelModel.Remove(minMemberLevel); //} //var shopMemberLevels = _mapper.Map<List<ShopMemberLevel>>(newlist); //return shopMemberLevels; } catch (Exception e) { throw new Exception($"更新排序错误:{e}"); } }
/// <summary> /// 更新腻会员等级 /// </summary> /// <param name="db"></param> /// <param name="memberId"></param> /// <param name="shopId"></param> /// <returns></returns> public static async Task UpdateMemberLevel(ShopDbContext db, ShopMemberSet shopMemberSet, int memberId, int shopId, ILogger _logger) { int count = await ShopIntegralRechargeServer.GetMemberIntegral(db, memberId, shopId, _logger); var shopmember = await db.ShopMembers.FirstOrDefaultAsync(m => m.MemberId.Equals(memberId) && m.ShopId.Equals(shopId) && !m.IsDel); ShopMemberLevel shopMemberLevels = null; if (shopMemberSet.IsSavaLevel) { shopMemberLevels = await GetLevelByIntegral(db, count, shopId, _logger); } else { shopMemberLevels = await GetLevelUp(db, count, shopId, shopmember, _logger); } if (shopMemberLevels == null) { return; } shopmember.ShopMemberLevelId = shopMemberLevels.Id; await db.SaveChangesAsync(); }
/// <summary> /// 根据积分获取等级(开启降级使用) /// </summary> /// <param name="count"></param> /// <param name="shopId"></param> /// <returns></returns> private async static Task <ShopMemberLevel> GetLevelByIntegral(ShopDbContext db, int count, int shopId, ILogger _logger) { ShopMemberLevel shopMemberLevel = null; var shopMemberLevels = db.ShopMemberLevel.OrderBy(m => m.Sort).Where(m => !m.IsDel && m.ShopId.Equals(shopId)); if (shopMemberLevels.Count() == 0) { return(await Task.FromResult(new ShopMemberLevel() { Id = 0, LevelName = "", MemberLevel = "" })); } var maxIntegralshopMemberLevels = await shopMemberLevels.MaxAsync(m => m.MaxIntegral); if (count > maxIntegralshopMemberLevels) { return(await Task.FromResult(await shopMemberLevels.LastOrDefaultAsync())); } var minIntegralshopMemberLevels = await shopMemberLevels.MinAsync(m => m.MinIntegral); if (count < minIntegralshopMemberLevels) { return(await Task.FromResult(new ShopMemberLevel() { Id = 0, LevelName = "", MemberLevel = "" })); } foreach (var item in shopMemberLevels) { if (count >= item.MinIntegral && count <= item.MaxIntegral) { shopMemberLevel = item; } } return(await Task.FromResult(shopMemberLevel)); }