public UserSession SetUserSesion(string openId, string userName, string headerUrl, string phone, CourseScheduleType currentScheduleType, UserRole userRole, MemberType memberType, bool courseSkipToday, EUserAccount userAccount) { UserSession session = new UserSession() { OpenId = openId, UserName = userName, HeaderUrl = headerUrl, Phone = phone, CurrentScheduleType = currentScheduleType, CurrentScheduleTypeName = BaseEnumSrv.GetCourseScheduleTypeName(currentScheduleType), MemeberType = memberType, UserRole = userRole, CourseSkipToday = courseSkipToday, UserAccount = userAccount }; var json = JsonConvert.SerializeObject(session); HttpContext.Session.SetString(EduConstant.UserSessionKey, json); return(session); }
//查询某个帐户余额 public UserAccount GetUserAccount(EUserAccount _accountName, int _userId) { long _val = 0; switch (_accountName) { case EUserAccount.cobi: _val = new BCW.BLL.User().GetGold(_userId); break; case EUserAccount.money: _val = new BCW.BLL.User().GetMoney(_userId); break; case EUserAccount.bank: _val = new BCW.BLL.User().GetBank(_userId); break; default: return(null); } UserAccount _userAccount = new UserAccount(); _userAccount.accountName = _accountName; _userAccount.value = _val; return(_userAccount); }
public void OnGet() { var us = base.GetUserSession(); if (us != null) { UserAccount = _UserSrv.GetUserAccount(us.OpenId); } }
/// <summary> /// /获取订单行,更新课时 /// </summary> /// <param name="userOpenId"></param> /// <param name="line"></param> private EUserAccount UpdateUserAccountByOrderLine(string userOpenId, EOrderLine line) { EUserAccount userAccount = _dbContext.DBUserAccount.Where(a => a.UserOpenId == userOpenId).FirstOrDefault(); if (userAccount == null) { UserSrv userSrv = new UserSrv(_dbContext); userAccount = userSrv.CreateNewUserAccount(userOpenId); } CourseScheduleType courseScheduleType = (CourseScheduleType)line.Ext1; ECourseDateRange dr = null; switch (courseScheduleType) { case CourseScheduleType.Standard: case CourseScheduleType.VIP: userAccount.RemainCourseTime += line.Qty; if (userAccount.BuyDate == DateTime.MinValue) { userAccount.BuyDate = DateTime.Now; } if (userAccount.DeadLine == DateTime.MinValue) { userAccount.DeadLine = DateTime.Now; } userAccount.DeadLine = userAccount.DeadLine.AddYears(1); break; case CourseScheduleType.Summer: userAccount.RemainSummerTime += line.Qty; dr = StaticDataSrv.CourseDateRange.Where(a => a.CourseScheduleType == CourseScheduleType.Summer && a.Year == DateTime.Now.Year).FirstOrDefault(); userAccount.SummerDeadLine = dr.EndDate; if (userAccount.SummerBuyDate == DateTime.MinValue) { userAccount.SummerBuyDate = DateTime.Now; } break; case CourseScheduleType.Winter: userAccount.RemainWinterTime += line.Qty; dr = StaticDataSrv.CourseDateRange.Where(a => a.CourseScheduleType == CourseScheduleType.Winter && a.Year == DateTime.Now.Year).FirstOrDefault(); userAccount.WinterDeadLine = dr.EndDate; if (userAccount.WinterBuyDate == DateTime.MinValue) { userAccount.WinterBuyDate = DateTime.Now; } break; } return(userAccount); }
public EUserAccount PayCourseSuccess(WXPaySuccess wXPaySuccess) { EUserAccount eUserAccount = null; try { string orderId = wXPaySuccess.OrderId; // NLogHelper.InfoTxt($"PayCourseSuccess OrderId:{orderId}"); BeginTrans(); //跟新订单状态 var order = _dbContext.DBOrder.Where(a => a.OrderId == orderId && a.OrderStatus == OrderStatus.Created).FirstOrDefault(); if (order == null) { throw new Exception($"没有找到状态为[{ OrderStatus.Created}]的[{orderId}]订单,"); } order.OrderStatus = OrderStatus.PaySuccess; //获取订单行,更新课时 var line = _dbContext.DBOrderLine.Where(a => a.OrderId == orderId).FirstOrDefault(); eUserAccount = UpdateUserAccountByOrderLine(order.CustOpenId, line); var ui = _dbContext.DBUserInfo.Where(a => a.OpenId == order.CustOpenId).FirstOrDefault(); if (ui.UserRole == UserRole.Visitor) { ui.UserRole = UserRole.Member; } //如果是JSPay if (wXPaySuccess.IsJSPay) { ui.MemberType = MemberType.VIP; eUserAccount.VIPPrice1 = Math.Round(line.Price / line.Qty, 2); } //查看用户是否有邀请人 SalesSrv salesSrv = new SalesSrv(_dbContext); var inviteLog = salesSrv.GetInviteLogByInvitedOpenId(ui.OpenId); if (inviteLog != null) { salesSrv.CreateRewardTrans(inviteLog.Id, inviteLog.OwnOpenId, AmountTransType.Invited_Paied, out eUserAccount, false); } _dbContext.SaveChanges(); CommitTrans(); } catch (Exception ex) { RollBackTrans(); NLogHelper.ErrorTxt($"[PayCourseSuccess] {ex.Message}"); throw ex; } return(eUserAccount); }
public ResultNormal PaySuccess(WXPaySuccess paySuccess) { ResultNormal result = new ResultNormal(); try { EUserAccount eUserAccount = _BusinessSrv.PayCourseSuccess(paySuccess); if (eUserAccount != null) { var us = GetUserSession(false); us.UserAccount = eUserAccount; us.UserRole = EduCenterModel.BaseEnum.UserRole.Member; SetUserSesion(us); } } catch (Exception ex) { result.ErrorMsg = ex.Message; } return(result); }
/// <summary> ///根据传入的班类,如果是假期班,有假期班课时则扣减假期班,没则扣标准班 /// </summary> /// <param name="openId"></param> /// <param name="memberType"></param> /// <param name="courseScheduleType"></param> /// <returns>返回-1 用户余额不足</returns> public int UpdateUserCourseTimeOnce(string openId, MemberType memberType, CourseScheduleType courseScheduleType) { EUserAccount result = _dbContext.DBUserAccount.Where(a => a.UserOpenId == openId).FirstOrDefault(); double reduceTime = 2; if (result.ReduceTime > 0) { reduceTime = result.ReduceTime; } switch (courseScheduleType) { case CourseScheduleType.Summer: if (result.RemainSummerTime == 0) { if (result.RemainCourseTime == 0) { return(-1); } else { result.RemainCourseTime -= reduceTime; } } else { result.RemainSummerTime -= reduceTime; } break; case CourseScheduleType.Winter: if (result.RemainWinterTime == 0) { if (result.RemainCourseTime == 0) { return(-1); } else { result.RemainCourseTime -= reduceTime; } } else { result.RemainWinterTime -= reduceTime; } break; default: if (result.RemainCourseTime == 0) { return(-1); } else { result.RemainCourseTime -= reduceTime; } break; } //if(memberType == MemberType.Normal) //{ // switch (courseScheduleType) // { // case CourseScheduleType.Summer: // if (result.RemainSummerTime == 0) return -1; // else result.RemainSummerTime -= 2; // break; // case CourseScheduleType.Winter: // if (result.RemainWinterTime == 0) return -1; // else result.RemainWinterTime -= 2; // break; // default: // if (result.RemainCourseTime == 0) return -1; // else result.RemainCourseTime -= 2; // break; // } //} //else //{ //} return(0); }
public bool CreateRewardTrans(long inviteLogId, string ownOpenId, AmountTransType TransType, out EUserAccount UserAccount, bool needSave = true) { int c = _dbContext.DBInviteRewardTrans.Where(a => a.InviteLogId == inviteLogId && a.TransType == TransType).Count(); UserAccount = null; if (c == 0) { var reward = new EInviteRewardTrans() { Amount = GlobalSrv.GetRewardAmount(TransType), Direction = AmountTransDirection.In, InviteLogId = inviteLogId, TransDateTime = DateTime.Now, TransType = TransType, UserOpenId = ownOpenId, TransStatus = AmountTransStatus.Created }; _dbContext.DBInviteRewardTrans.Add(reward); UserAccount = _dbContext.DBUserAccount.Where(a => a.UserOpenId == ownOpenId).FirstOrDefault(); if (UserAccount != null) { UserAccount.InviteRewards += reward.Amount; UserAccount.RemainRewards += reward.Amount; } var inviteLog = _dbContext.DBInviteLog.Where(a => a.Id == inviteLogId).FirstOrDefault(); if (inviteLog != null) { if (TransType == AmountTransType.Invited_TrialReward) { inviteLog.InviteStatus = InviteStatus.ApplyTrial; } else if (TransType == AmountTransType.Invited_Paied) { inviteLog.InviteStatus = InviteStatus.Paied; } } if (needSave) { _dbContext.SaveChanges(); } return(true); } return(false); }