//[Authorize] public async Task <APIResult> GetMemberDetails([FromBody] ShopMember input) { var shopMember = await db.ShopMembers.FindAsync(input.Id); shopMember.ShopMemberLevel = await db.ShopMemberLevel.FindAsync(shopMember.ShopMemberLevelId); var shopMemberModel = _mapper.Map <ShopMemberModel>(shopMember); #region 直接拿小程序部分的代码使用 IQueryable <GetBillModel> unionQuery = GetRecharge(shopMember); var rtn = unionQuery.OrderByDescending(m => m.BillDateTime) .Select(m => new { m.Amount, m.BillType, BillDateTime = m.BillDateTime.ToString("yyyy-MM-dd HH:mm:ss") }); #endregion return(await Task.FromResult(Success(new { shopMemberModel, rtn }))); }
public static ShopMember GetShopMember(ShopDbContext shopDb, int shopId, int memberId) { ShopMember shopMember = shopDb.Query <ShopMember>() .Where(m => !m.IsDel && m.MemberId == memberId && m.ShopId == shopId) .FirstOrDefault(); return(shopMember); }
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { try { datareceived = sport.ReadLine(); theNewId = Int64.Parse(datareceived.Trim(), NumberStyles.HexNumber); using (SqlConnection connection = new SqlConnection( global::GymMembershipSystem.Properties.Settings.Default.GymMembershipSystemDatabase)) { using (SqlCommand cmd = new SqlCommand("SELECT id, (Name + ' ' + Surname) AS Name, Gender, LastEntrance FROM Member WHERE CardId=@CardId", connection)) { cmd.CommandType = CommandType.Text; cmd.Parameters.AddWithValue("@CardId", theNewId); connection.Open(); SqlDataReader dr = cmd.ExecuteReader(); if (dr.HasRows == true) { ShopMember shopmember = new ShopMember(); while (dr.Read()) { string id = dr["id"].ToString(); string name = dr["Name"].ToString(); string gender = dr["Gender"].ToString(); string lastentrance = dr["LastEntrance"].ToString(); shopmember.id = dr["id"].ToString(); shopmember.Name = dr["Name"].ToString(); shopmember.Gender = dr["Gender"].ToString(); shopmember.LastEntrance = dr["LastEntrance"].ToString(); SetText(shopmember); sport.Close(); } sport.Open(); } connection.Close(); } } } catch (Exception ex) { List <Label> Labels = new List <Label>(); Labels.Add(MyLabel.SetOKLabel("General Error")); Labels.Add(MyLabel.SetOKLabel(ex.Message)); List <Button> Buttons = new List <Button>(); Buttons.Add(MyButton.SetOKThemeButton()); MyMessageBox.Show( Labels, "", Buttons, MyImage.SetFailed()); } }
public ShopMemberServer(ShopDbContext shopDb, int shopId, int memberId) { this.shopDb = shopDb; mShopMember = GetShopMember(shopDb, shopId, memberId); if (mShopMember == null) { throw new Exception("会员信息不存在"); } }
/// <summary> /// 获取用户消费记录 /// </summary> /// <param name="shopMember"></param> /// <returns></returns> private IQueryable <GetBillModel> GetRecharge(ShopMember shopMember) { var rechargeQuery = db.Query <ShopMemberRecharge>() .Where(m => !m.IsDel && m.Status == ShopMemberTransactionStatus.已完成) .Where(m => m.ShopMemberId == shopMember.Id) .Select(m => new GetBillModel() { Amount = ((m.Amount + m.PresentedAmount) / 100m), BillType = 1, BillDateTime = m.TransactionTime }); var consumeQuery = db.Query <ShopMemberConsume>() .Where(m => !m.IsDel && m.ShopMemberId == shopMember.Id) .Select(m => new GetBillModel() { Amount = (m.Amount / 100m), BillType = 2, BillDateTime = m.TransactionTime }); var refundQuery = db.Query <ShopMemberRufund>() .Where(m => !m.IsDel && m.ShopMemberId == shopMember.Id) .Select(m => new GetBillModel() { Amount = (m.Amount / 100m), BillType = 3, BillDateTime = m.TransactionTime }); var unionQuery = rechargeQuery.Union(consumeQuery).Union(refundQuery); //var rechargeQuery = db.Query<ShopMemberRecharge>() // .Where(m => !m.IsDel && m.Status == ShopMemberTransactionStatus.已完成) // .Where(m => m.ShopMemberId == shopMember.Id) // .Select(m => new GetBillModel() // { // Amount = (m.Amount + m.PresentedAmount) / 100m, // BillType = 1, // BillDateTime = m.TransactionTime // }); //var consumeQuery = db.Query<ShopMemberConsume>() // .Where(m => !m.IsDel && m.ShopMemberId == shopMember.Id) // .Select(m => new GetBillModel() // { // Amount = m.Amount / 100m, // BillType = 2, // BillDateTime = m.TransactionTime // }); //var unionQuery = rechargeQuery.Union(consumeQuery); return(unionQuery); }
public APIResult GetBill([FromBody] GetBillArgsModel args) { if (!args.ShopId.HasValue) { throw new Exception("ShopId不能为空"); } int memberId = GetMemberId(); ShopMember shopMember = db.Query <ShopMember>() .Where(m => !m.IsDel && m.MemberId == memberId && m.ShopId == args.ShopId.Value) .FirstOrDefault(); var rechargeQuery = db.Query <ShopMemberRecharge>() .Where(m => !m.IsDel && m.Status == ShopMemberTransactionStatus.已完成) .Where(m => m.ShopMemberId == shopMember.Id) .Select(m => new GetBillModel() { Amount = ((m.Amount + m.PresentedAmount) / 100m).ToString("#0.00"), BillType = 1, BillDateTime = m.TransactionTime }); var consumeQuery = db.Query <ShopMemberConsume>() .Where(m => !m.IsDel && m.ShopMemberId == shopMember.Id) .Select(m => new GetBillModel() { Amount = (m.Amount / 100m).ToString("#0.00"), BillType = 2, BillDateTime = m.TransactionTime }); var refundQuery = db.Query <ShopMemberRufund>() .Where(m => !m.IsDel && m.ShopMemberId == shopMember.Id) .Select(m => new GetBillModel() { Amount = (m.Amount / 100m).ToString("#0.00"), BillType = 3, BillDateTime = m.TransactionTime }); var unionQuery = rechargeQuery.Union(consumeQuery).Union(refundQuery); var rtn = unionQuery.OrderByDescending(m => m.BillDateTime) .ToPagedList(args.PageIndex, args.PageSize); decimal balance = shopMember == null ? 0 : shopMember.Balance / 100m; return(Success(new GetBillReturnModel() { Balance = balance, Bill = rtn })); }
public APIResult Register([FromBody] RegisterArgsModel args) { if (!CheckVerificationCode(args.Phone, args.Code)) { return(Error("验证码错误")); } int memberId = GetMemberId(); var model = db.Query <ShopMember>() .FirstOrDefault(m => !m.IsDel && m.MemberId == memberId && m.ShopId == args.ShopId.Value); if (model != null) { throw new Exception("该会员已注册过"); } var members = memberDb.Members.Find(memberId); var shopMember = new ShopMember() { ShopId = args.ShopId.Value, AddIp = GetIp(), AddTime = DateTime.Now, MemberId = memberId, Sex = args.Sex, Phone = args.Phone, Credits = 0, Balance = 0, BirthDay = args.BirthDay.Value, Name = members.NickName }; db.Add(shopMember); var shopMemberServer = new ShopMemberServer(db, shopMember); if (!shopMemberServer.CheckPhoneNumCanUse(args.Phone, args.ShopId.Value)) { return(Error("该手机号码已注册")); } //shopMemberServer.SetPassword(args.Password); db.SaveChanges(); //更新会员等级 ShopMemberLevelServer.UpdateMemberLevel(db, db.ShopMemberSet.FirstOrDefault(m => m.ShopId.Equals(args.ShopId) && !m.IsDel), memberId, args.ShopId.Value, _logger); return(Success(new { shopMember.Id })); }
private void SetText(ShopMember shopmember) { // InvokeRequired required compares the thread ID of the // calling thread to the thread ID of the creating thread. // If these threads are different, it returns true. if (label12.InvokeRequired) { SetTextCallback d = new SetTextCallback(SetText); this.Invoke(d, new object[] { shopmember }); } else { label12.Text = shopmember.id; label13.Text = shopmember.Name; label15.Text = shopmember.Gender; label17.Text = shopmember.LastEntrance; } }
public APIResult Add([FromBody] AddArgsModel args) { //TODO:这里还需要进行锁操作,保证每个店铺的库存不是负数 if (args.Items == null || args.Items.Count <= 0) { throw new Exception("商品内容不能为空"); } bool isTakeOut = args.IsTakeOut == null ? false : args.IsTakeOut.Value; bool isThird = false; var memberId = GetMemberId(); var shop = db.Query <Shop>() .Where(m => !m.IsDel) .Where(m => m.Id == args.ShopId) .FirstOrDefault(); if (shop == null) { throw new Exception("商铺纪录不存在"); } ShopMember shopMember = ShopMemberServer.GetShopMember(db, shop.Id, memberId); var shopMemberSet = ShopMemberServer.GetShopMemberSet(db, shop.Id); bool IsTopUpDiscount = shopMemberSet == null ? false : shopMemberSet.IsTopUpDiscount; double memberDiscount = 1; if (shopMember != null) { var shopMemberLevel = db.GetSingle <ShopMemberLevel>(shopMember.ShopMemberLevelId); if (shopMemberLevel != null) { memberDiscount = shopMemberLevel.Discount; } } var shoptakeoutinfo = db.ShopTakeOutInfo.FirstOrDefault(r => r.ShopId == args.ShopId && !r.IsDel); if (shoptakeoutinfo != null && shoptakeoutinfo.TakeDistributionType == TakeDistributionType.达达配送 && isTakeOut && args.TakeWay == TakeWay.送货上门) { isThird = true; } var model = new ShopOrder() { AddTime = DateTime.Now, MemberId = memberId, ShopId = args.ShopId, Remark = args.Remark, AddUser = $"member{memberId}", AddIp = GetIp(), Flag = Guid.NewGuid().ToString(), IsTakeOut = isTakeOut, Status = ShopOrderStatus.待支付, takeDistributionType = isThird == true ? TakeDistributionType.达达配送 : TakeDistributionType.商家配送 }; ShopOrderServer shopOrderServer = new ShopOrderServer(model); db.AddTo(model); if (isTakeOut) { shopOrderServer.RecordTakeout(db, shop, memberId, args.TakeWay.Value, args.PickupTime); } else if (args.IsSelfHelp.HasValue && args.IsSelfHelp.Value) { shopOrderServer.RecordShopOrderSelfHelp(db, shop.Id, args.IsSelfHelpTakeOut ?? false); } else if (!string.IsNullOrEmpty(args.ShopPartFlag)) { shopOrderServer.RecordScancode(db, args.ShopPartFlag); } else { throw new Exception("请先扫描桌上二唯码"); } int cartCount = 0; args.Items.ForEach(m => cartCount += m.Count); shopOrderServer.RecordOtherFee(db, args.TakeWay, cartCount); var commodityIdAndCounts = new Dictionary <int, int>(); //商铺库存判断 foreach (var item in args.Items) { var stock = db.Query <ShopCommodityStock>() .Where(m => !m.IsDel) .Where(m => m.ShopId == shop.Id) .Where(m => m.Sku.Flag == item.SkuFlag) .Select(m => new { m.Id, m.Stock, IsCombo = m.Sku.Commodity.CategoryId == 0, //是否套餐 CommodityName = m.Sku.Commodity.Name, m.Sku.CommodityId, m.CostPrice, m.SalePrice, m.MarketPrice, HasVipPrice = m.Sku.Commodity.UseMemberPrice, SkuSummary = m.Sku.Summary }) .FirstOrDefault(); if (stock == null) { throw new Exception("商品不存在或者商铺商品未上架"); } if (stock.Stock <= 0 || stock.Stock < item.Count) { throw new Exception("库存不足"); } db.AddStock(stock.Id, -item.Count); //纪录下commodity的count if (commodityIdAndCounts.ContainsKey(stock.CommodityId)) { commodityIdAndCounts[stock.CommodityId] += item.Count; } else { commodityIdAndCounts.Add(stock.CommodityId, item.Count); } var orderItem = new ShopOrderItem() { CommodityName = stock.CommodityName, CommodityStockId = stock.Id, AddIp = model.AddIp, AddTime = model.AddTime, AddUser = model.AddUser, CostPrice = stock.CostPrice, SalePrice = (stock.HasVipPrice && !stock.IsCombo && (!IsTopUpDiscount || args.IsBalance)) ? ShopMemberServer.GetMemberPrice(stock.SalePrice, memberDiscount) : stock.SalePrice, PrimePrice = stock.SalePrice, ShopOrder = model, Count = item.Count, SkuSummary = stock.SkuSummary }; db.AddTo(orderItem); model.Amount += orderItem.SalePrice * orderItem.Count; } if (args.ComboPrice.HasValue) { model.Amount += args.ComboPrice.Value; } //这里尝试扣钱 //var memberAmount = db.GetMemberAmountList(memberId); //var availAmount = memberAmount.GetAvailAmount(); //if (availAmount >= model.Amount) //{ // memberAmount.DecreaseAvailAmount(model.Amount, 0, $"{shop.Name}消费", Newtonsoft.Json.JsonConvert.SerializeObject(new { shopId = shop.Id, orderFlag = model.Flag }), FinaceType.商品购买支出); // memberAmount.UpdateMemberAmountCache(); // model.PayTime = DateTime.Now; // //更新商品的销售量 // //注意,这里如果有一个品牌,多个店铺的情况,会出现销售额共享的情况 // var commodityIds = commodityIdAndCounts.Select(m => m.Key).ToList(); // var commoditys = db.Query<ShopBrandCommodity>() // .Where(m => commodityIds.Contains(m.Id)) // .ToList(); // foreach (var item in commoditys) // { // item.SalesForMonth += commodityIdAndCounts[item.Id]; // } // db.SaveChanges(); // AfterOrderPlacing(model, shop.Name); //} //else //{ // db.SaveChanges(); //} model.OrderNumber = shopOrderServer.GenerateOrderNumber(); shopOrderServer.ComputePayment(db); db.SaveChanges(); model.Shop = null; //不返回商店信息 return(Success(model)); }
public ShopMemberServer(ShopDbContext shopDb, ShopMember shopMember) { this.shopDb = shopDb; mShopMember = shopMember; }
/// <summary> /// 升级(不开启降级使用) /// </summary> /// <param name="count"></param> /// <param name="shopId"></param> /// <returns></returns> private async static Task <ShopMemberLevel> GetLevelUp(ShopDbContext db, int count, int shopId, ShopMember shopMember, 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())); } foreach (var item in shopMemberLevels) { if (count >= item.MinIntegral && count <= item.MaxIntegral) { shopMemberLevel = item; } } var oldShopMemberLevel = await shopMemberLevels.FirstOrDefaultAsync(m => !m.IsDel && m.Id.Equals(shopMember.ShopMemberLevelId)); if (oldShopMemberLevel != null) { if (oldShopMemberLevel.Sort >= shopMemberLevel.Sort) { return(await Task.FromResult(oldShopMemberLevel)); } } return(await Task.FromResult(shopMemberLevel)); }