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); }
private void WXLoginCallBack(EUserInfo ui) { var userAccount = _UserSrv.GetUserAccount(ui.OpenId); CourseScheduleType courseScheduleType = _UserSrv.GetCurrentCourseScheduleType(ui.OpenId, ui.MemberType); bool isSkipTodayCourse = _UserSrv.IsSkipTodayUserCourse(ui.OpenId); base.SetUserSesion(ui.OpenId, ui.Name, ui.wx_headimgurl, ui.Phone, courseScheduleType, ui.UserRole, ui.MemberType, isSkipTodayCourse, userAccount); }
/// <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 List <EUserCourse> CreateNewCourse(string openId, string lessonCode, CourseScheduleType courseScheduleType) { EUserCourse eUserCourse = new EUserCourse { CourseScheduleType = courseScheduleType, CreateDateTime = DateTime.Now, LessonCode = lessonCode, UserOpenId = openId, UseRightNow = false, }; List <EUserCourse> list = new List <EUserCourse>(); list.Add(eUserCourse); return(list); }
public static int NeedRecharge(UserSession us, CourseScheduleType courseScheduleType) { if (us.MemeberType != MemberType.VIP) { if (courseScheduleType == CourseScheduleType.Summer && us.UserAccount.RemainSummerTime <= 0) { return(-1); } else if (courseScheduleType == CourseScheduleType.Winter && us.UserAccount.RemainWinterTime <= 0) { return(-1); } else { if (courseScheduleType == CourseScheduleType.Standard && us.UserAccount.RemainCourseTime <= 0) { return(-1); } } } else { if (courseScheduleType == CourseScheduleType.Summer && us.UserAccount.RemainSummerTime <= 0 && us.UserAccount.RemainCourseTime <= 0) { return(-2); } else if (courseScheduleType == CourseScheduleType.Winter && us.UserAccount.RemainWinterTime <= 0 && us.UserAccount.RemainCourseTime <= 0) { return(-2); } else { if (courseScheduleType == CourseScheduleType.Standard && us.UserAccount.RemainCourseTime <= 0) { return(-2); } } } return(0); }
public static string GetCourseScheduleTypeName(CourseScheduleType courseScheduleType) { switch (courseScheduleType) { case CourseScheduleType.Group: return("团购课"); case CourseScheduleType.Standard: return("标准课"); case CourseScheduleType.Summer: return("暑假班"); case CourseScheduleType.Winter: return("寒假班"); case CourseScheduleType.SummerWinter: return("寒暑假班"); } return(""); }
public IActionResult OnPostGet(int year, CourseScheduleType scheduleType) { ResultObject <PPlan> result = new ResultObject <PPlan>(); try { ECourseDateRange dr = StaticDataSrv.CourseDateRange.Where(a => a.CourseScheduleType == scheduleType && a.Year == year).FirstOrDefault(); result.Entity.PlanInfo = ""; if (dr != null) { result.Entity.PlanInfo = $"{dr.Year} {dr.CourseDateRangeName}: {dr.StartDate.ToString("MM月dd日")} 到 {dr.EndDate.ToString("MM月dd日")}"; } result.Entity.CourseScheduleList = _CourseSrv.GetCourseScheduleByYearType(year, scheduleType); } catch (Exception ex) { result.ErrorMsg = ex.Message; } return(new JsonResult(result)); }
//删除用户课程,并创建新课程 public void AdjustUserCourse(string openId, string fromLessonCode, string toLessonCode, CourseScheduleType courseScheduleType, bool isAdmin = false) { try { bool isDelete = false; try { isDelete = DeleteUserCourse(openId, fromLessonCode); } catch (Exception ex) { throw ex; } if (isDelete) { UserSelectNewCourses(openId, toLessonCode, courseScheduleType, true, true); } } catch (Exception ex) { throw ex; } }
public void UserSelectNewCourses(string openId, string lessonCode, CourseScheduleType courseScheduleType, bool useRightNow = false, bool isAdmin = false) { var list = CreateNewCourse(openId, lessonCode, courseScheduleType); UserSelectNewCourses(openId, list, courseScheduleType, useRightNow, isAdmin); }
/// <summary> /// 新建课时交易 /// </summary> /// <param name="line"></param> //private void AddCourseTimeTransByLine(EOrderLine line) //{ // EUserCourseTimeTrans trans = new EUserCourseTimeTrans // { // CourseScheduleType = (CourseScheduleType)line.Ext1, // TransQty = line.Qty, // UserOpenId = line.OrderId, // CoursePriceCode = line.ItemCode, // TransDateTime = DateTime.Now, // }; // _dbContext.DBUserCourseTimeTrans.Add(trans); //} #endregion #region 用户课程 /// <summary> /// 用户选择课程 /// </summary> /// <param name="courseList"></param> public void UserSelectNewCourses(string openId, List <EUserCourse> courseList, CourseScheduleType courseScheduleType, bool useRightNow = false, bool isAdmin = false) { try { BeginTrans(); if (courseList.Count > 0) { UserSrv userSrv = new UserSrv(_dbContext); TecSrv tecSrv = new TecSrv(_dbContext); //不是后台选择,且选择已满 if (!isAdmin && !userSrv.CheckUserCanSelectCourse(openId, courseScheduleType)) { throw new EduException("无法选择,您已经选择过此类课程!,如果疑问,请联系客服"); } else { foreach (var c in courseList) { if (userSrv.CheckUserHasThisCourse(openId, c.LessonCode)) { c.CourseScheduleType = courseScheduleType; continue; } c.UserOpenId = openId; c.UseRightNow = useRightNow; //更新课程总人数 var cs = _dbContext.DbCourseSchedule.Where(a => a.LessonCode == c.LessonCode).FirstOrDefault(); cs.ApplyNum++; //获取课程对应的老师 var cls = _dbContext.DBCourseInfoClass.Where(s => s.CourseCode == cs.CourseCode).FirstOrDefault(); var tecCode = cls.TecCode; //更新老师课程 tecSrv.UpdateTecCourse(tecCode, cs, DateTime.Now, useRightNow); //添加用户课程 userSrv.AddUserCourse(c); } userSrv.UpdateCanSelectCourse(openId, courseScheduleType, false); } _dbContext.SaveChanges(); userSrv.AddNextCourseLog(openId, false); CommitTrans(); } } catch (Exception ex) { RollBackTrans(); throw ex; } }
public IActionResult OnPostGetCourseScheduleList(int year, int day, int lesson, CourseScheduleType courseScheduleType) { ResultList <SCourseSchedule> result = new ResultList <SCourseSchedule>(); try { result.List = _CourseSrv.GetCourseSchedule_ForSelection(year, day, lesson); } catch (Exception ex) { result.ErrorMsg = 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)); }
public List <ECourseSchedule> GetCourseScheduleByYearType(int year, CourseScheduleType scheduleType) { return(_dbContext.DbCourseSchedule.Where(a => a.Year == year && a.CourseScheduleType == scheduleType).ToList()); }
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)); }
/// <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); }
/// <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); }
/// <summary> /// /// </summary> /// <param name="openId"></param> /// <param name="LessonCode">选择后的用户课程</param> /// <param name="origUserCourseId">之前的用户课程Id</param> /// <param name="courseScheduleType"></param> /// <returns></returns> public IActionResult OnPostSaveUserCourse(string openId, string lessonCode, long origUserCourseId, CourseScheduleType courseScheduleType) { ResultObject <EUserCourse> result = new ResultObject <EUserCourse>(); try { if (origUserCourseId == 0) { _BusinessSrv.UserSelectNewCourses(openId, lessonCode, courseScheduleType, true, true); } else { var origUserCoures = _UserSrv.GetUserCouresById(origUserCourseId); //也许只是假期版和标准版切换 if (origUserCoures.LessonCode == lessonCode) { _UserSrv.SwitchUserCourseScheduleType(openId, lessonCode, courseScheduleType); } else { //删除老课程 //创建新课程 _BusinessSrv.AdjustUserCourse(openId, origUserCoures.LessonCode, lessonCode, courseScheduleType, true); } } result.Entity = _UserSrv.GetUserCouresByCode(lessonCode); } catch (Exception ex) { result.ErrorMsg = ex.Message; } return(new JsonResult(result)); }