/// <summary> /// 判断用户是否拥有足够的积分/VIP分 ,并扣除相应金钱 并记录消费流水 /// </summary> /// <param name="type">1积分 2金钱/VIP分</param> /// <param name="coin">数量</param> /// <param name="userID">用户ID</param> /// <param name="coinSourceEnum">coinSourceEnum</param> /// <param name="needSave">是否保存DBContext</param> /// <returns></returns> public Tuple <bool, string> HasEnoughCoinAndSubCoin(int type, int coin, long userID, CoinSourceEnum coinSourceEnum, bool needSave = false) { bool ok = false; string msg = string.Empty; var ext = _amazonBBSDBContext.UserExt.FirstOrDefault(a => a.UserID == userID); if (type == 1) { ok = ext.TotalScore >= coin; } else { ok = ext.TotalCoin >= coin; } if (ok) { //扣除 if (type == 1) { ext.TotalScore -= coin; } else { ext.TotalCoin -= coin; } //记录流水 ScoreCoinLog scorecoinlog = new ScoreCoinLog() { UserID = userID, Coin = -coin, CoinSource = coinSourceEnum.GetHashCode(), CoinTime = DateTime.Now, CoinType = type, CreateUser = userID.ToString(), UserName = _amazonBBSDBContext.UserBase.FirstOrDefault(a => a.UserID == userID).UserName, }; _amazonBBSDBContext.ScoreCoinLog.Add(scorecoinlog); if (needSave) { _amazonBBSDBContext.SaveChanges(); } } else { msg = $"你的{(type == 1 ? "积分" : "金钱")}不足够"; } return(new Tuple <bool, string>(ok, msg)); }
public UserSet GetUserSet(long uid) { if (uid == 0) { return(new UserSet()); } var set = _amazonBBSDBContext.UserSet.FirstOrDefault(a => a.UserId == uid && a.IsDelete == 0); if (set == null) { set = new UserSet { IsDelete = 0, UserId = uid, CreateTime = DateTime.Now, ShowOrHideBaseInfo = true }; _amazonBBSDBContext.UserSet.Add(set); _amazonBBSDBContext.SaveChanges(); } return(set); }
public Tuple <bool, string> AutoSendReply(long buyerUserId, int ordertype, long userGiftIdOrPartyId, long mainId) { var ok = false; var msg = string.Empty; bool isAutoSend = false;//是否自动发货 var tran = _amazonBBSDBContext.Database.BeginTransaction(); try { //判断有没有自动回复 var autoReply = _amazonBBSDBContext.AutoReply.FirstOrDefault(a => a.OrderType == ordertype && a.ItemID == mainId); if (autoReply != null) { var autoReplyItem = _amazonBBSDBContext.AutoReplyItem.Where(a => a.AutoReplyId == autoReply.AutoReplyId && a.IsDelete == 0 && !a.IsUsed).OrderBy(a => a.CreateTime).ThenBy(a => a.GroupId).GroupBy(a => a.GroupId).FirstOrDefault(); if (autoReplyItem != null) { msg = autoReply.Content; autoReplyItem.ToList().ForEach(a => { msg = msg.Replace($"#{a.ReplaceKey}#", a.ReplaceValue); var item = _amazonBBSDBContext.AutoReplyItem.FirstOrDefault(auto => auto.AutoReplyItemId == a.AutoReplyItemId); item.IsUsed = true; }); ok = true; isAutoSend = true; } else { //没有自动发货了 isAutoSend = false; msg = "自动发货通知,本产品库存不足,无法自动发出货物,请联系相关产品的管理员进行发出!"; ok = true; } _noticeService.OnBuySuccess_Notice_AutoReply_Buyer(buyerUserId, msg); } else { ok = true; } #region 添加发货状态 var existOrderSend = _amazonBBSDBContext.OrderSend.FirstOrDefault(x => x.MainID == mainId && x.MainType == ordertype && x.UserGiftId == userGiftIdOrPartyId && x.CreateUser == buyerUserId ); if (existOrderSend == null) { _amazonBBSDBContext.OrderSend.Add(new OrderSend() { MainID = mainId, MainType = ordertype, IsDelete = 0, //OrderID = orderId, UserGiftId = userGiftIdOrPartyId, SendStatus = isAutoSend ? OrderSendEnumType.Sended.GetHashCode() : OrderSendEnumType.NoSend.GetHashCode(), UpdateTime = DateTime.Now, UpdateUser = buyerUserId, CreateTime = DateTime.Now, CreateUser = buyerUserId, }); } else { } #endregion #region 添加收货状态 var existOrderCheck = _amazonBBSDBContext.OrderCheck.FirstOrDefault(x => x.CreateUser == buyerUserId && x.UserGiftId == userGiftIdOrPartyId && x.MainID == mainId && x.MainType == ordertype); if (existOrderCheck == null) { _amazonBBSDBContext.OrderCheck.Add(new OrderCheck { UpdateUser = buyerUserId, UpdateTime = DateTime.Now, CreateTime = DateTime.Now, CreateUser = buyerUserId, CheckStatus = OrderCheckEnumType.NoCheck.GetHashCode(), IsDelete = 0, //OrderID = orderId, UserGiftId = userGiftIdOrPartyId, MainID = mainId, MainType = ordertype }); } #endregion #region 如果没有自动发货,则后台通知管理员尽快发货 if (!isAutoSend) { _noticeService.OnUserBuySuccess_Notice_Master(buyerUserId, ordertype, mainId); } #endregion _amazonBBSDBContext.SaveChanges(); tran.Commit(); } catch (Exception e) { ErrorBLL.Instance.Log(e.ToString()); tran.Rollback(); ok = false; } return(new Tuple <bool, string>(ok, msg)); }