示例#1
0
        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));
        }
示例#2
0
        /// <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}");
            }
        }
示例#3
0
        /// <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();
        }
示例#4
0
        /// <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));
        }