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 EOrder PayCourseOrder(string userOpenId, ECoursePrice coursePrice) { try { // BeginTrans(); //检查用户是否已经购买暑假寒假 if (coursePrice.CourseScheduleType == CourseScheduleType.Summer || coursePrice.CourseScheduleType == CourseScheduleType.Winter) { var sql = from o in _dbContext.DBOrder join l in _dbContext.DBOrderLine on o.OrderId equals l.OrderId where o.OrderStatus == OrderStatus.PaySuccess && o.CustOpenId == userOpenId && l.ItemCode == coursePrice.PriceCode select o.OrderId; var item = sql.FirstOrDefault(); if (item != null) { var cstName = BaseEnumSrv.GetCourseScheduleTypeName(coursePrice.CourseScheduleType); throw new EduException($"[{cstName}]只能购买一次,您已购买过"); } } //创建购买课时的订单 var Order = CreateBuyCourseOrder(userOpenId, coursePrice); _dbContext.SaveChanges(); // CommitTrans(); return(Order); } catch (Exception ex) { // RollBackTrans(); throw ex; } }
/// <summary> /// VIP 扣减课时,根据传入的班类,如果假期班,有假期班课时,则扣,不然扣标准版 /// /// </summary> /// <param name="openId"></param> /// <param name="memberType"></param> /// <param name="courseScheduleType"></param> /// <param name="lessonCode"></param> /// <param name="signDate"></param> /// <param name="needSave"></param> /// <returns></returns> public EUserCourseLog UpdateCourseLogToSigned(string openId, MemberType memberType, CourseScheduleType courseScheduleType, string lessonCode, DateTime signDate, string signOpenId = "", bool skipLeave = true, //不管是否请假都签到 bool needSave = true) { var date = signDate.ToString("yyyy-MM-dd"); var log = _dbContext.DBUserCourseLog.Where(a => a.UserOpenId == openId && a.LessonCode == lessonCode && a.CourseDateTime == date).FirstOrDefault(); if (log == null) { log = new EUserCourseLog { CourseDateTime = date, CourseScheduleType = courseScheduleType, CreatedDateTime = DateTime.Now, LessonCode = lessonCode, UserSignDateTime = DateTime.Now, UserOpenId = openId }; _dbContext.DBUserCourseLog.Add(log); } else { if (log.UserCourseLogStatus != UserCourseLogStatus.PreNext) { if (log.UserCourseLogStatus == UserCourseLogStatus.Leave && !skipLeave) { return(log); } } } //更新用户课时 if ((int)log.UserCourseLogStatus < 10) { int result = UpdateUserCourseTimeOnce(openId, memberType, courseScheduleType); if (result == -1) { string courseScheduleTypeName = BaseEnumSrv.GetCourseScheduleTypeName(courseScheduleType); throw new EduException($"您的[{courseScheduleTypeName}]课时已用完,请先充值!", EduErrorMessage.NoCourseTime); } } EUserInfo signUser = null; if (string.IsNullOrEmpty(signOpenId)) { signUser = _dbContext.DBUserInfo.Where(a => a.OpenId == signOpenId).FirstOrDefault(); } if (signUser != null) { log.SignOpenId = signUser.OpenId; if (signUser.UserRole == UserRole.Member) { log.SignName = signUser.ChildName; } else if (signUser.UserRole == UserRole.Teacher) { log.SignName = signUser.RealName; } } else { log.SignName = "系统签到"; } log.UserCourseLogStatus = UserCourseLogStatus.SignIn; log.UserSignDateTime = DateTime.Now; if (needSave) { _dbContext.SaveChanges(); } return(log); }
public IActionResult OnPostInitData() { ResultObject <PMyCourse> result = new ResultObject <PMyCourse>(); try { var us = GetUserSession(false); if (us != null) { CourseScheduleType courseScheduleType = _UserSrv.GetCurrentCourseScheduleType(us.OpenId, us.MemeberType); var needRecharge = UserSession.NeedRecharge(us, courseScheduleType); if (needRecharge < 0) { var csTypeName = BaseEnumSrv.GetCourseScheduleTypeName(courseScheduleType); string errorMsg = $"您的{csTypeName}余额不足,请先去充值"; if (needRecharge == -2) { errorMsg = $"您的余额不足,请先去充值"; } result.ErrorMsg = errorMsg; result.IntMsg = -2; return(new JsonResult(result)); } //VIP用户课程(不管暑假寒假) if (us.MemeberType == MemberType.VIP) { result.Entity.UserCourseList = _UserSrv.GetUserCourseAvaliable(us.OpenId); } else { //普通用户 先看是否有标准课,如果有标准课,全部放开。 if (us.UserAccount.RemainCourseTime > 0) { result.Entity.UserCourseList = _UserSrv.GetUserCourseAvaliable(us.OpenId); } else { //如果无标准课,则显示暑假,寒假课 result.Entity.UserCourseList = _UserSrv.GetUserCourseAvaliable(us.OpenId, (int)courseScheduleType); } } result.IntMsg = (int)courseScheduleType; //获取用户最近课程 if (result.Entity.UserCourseList.Count > 0) { DateTime startDate = DateTime.Now; if (us.CourseSkipToday) { startDate = startDate.AddDays(1); } result.Entity.UserShowCourse = _UserSrv.GetNextUserCourse(result.Entity.UserCourseList, startDate); } } else { result.IntMsg = -1; result.ErrorMsg = "需要重新登陆"; } } catch (Exception ex) { result.ErrorMsg = "未能获取数据!请联系客服或稍后再试"; NLogHelper.ErrorTxt(ex.Message); } return(new JsonResult(result)); }
public IActionResult OnPostSubmit(List <string> lessonCodeList, bool useRightNow = false) { ResultNormal result = new ResultNormal(); CourseScheduleType courseScheduleType = CourseScheduleType.Summer; try { var us = base.GetUserSession(false); if (us != null) { var needRecharge = UserSession.NeedRecharge(us, courseScheduleType); if (needRecharge < 0) { var csTypeName = BaseEnumSrv.GetCourseScheduleTypeName(courseScheduleType); string errorMsg = $"您的{csTypeName}余额不足,请先去充值"; if (needRecharge == -2) { errorMsg = $"您的余额不足,请先去充值"; } result.ErrorMsg = errorMsg; result.IntMsg = -2; return(new JsonResult(result)); } List <EUserCourse> ucList = new List <EUserCourse>(); foreach (var lc in lessonCodeList) { EUserCourse uc = new EUserCourse { CourseScheduleType = courseScheduleType, CreateDateTime = DateTime.Now, LessonCode = lc, UseRightNow = useRightNow, UserOpenId = us.OpenId }; ucList.Add(uc); } _BusinessSrv.UserSelectNewCourses(us.OpenId, ucList, courseScheduleType, useRightNow); //更新Session是否跳过当天 us.CourseSkipToday = useRightNow; us.CurrentScheduleType = StaticDataSrv.CurrentScheduleType; SetUserSesion(us); } else { result.IntMsg = -1; result.ErrorMsg = "请重新登陆"; } } catch (EduException ex) { result.ErrorMsg = ex.Message; } catch (Exception ex) { result.ErrorMsg = "提交数据错误!请联系管理员或稍后再试"; NLogHelper.ErrorTxt($"标准班课程选择[OnPostSubmit]:{ex.Message}"); } return(new JsonResult(result)); }