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 List <RTecCourse> GetTecCourse(string tecCode, int year, int month) { var times = StaticDataSrv.CourseTime; var linq = _dbContext.DBTecCourse.Join(_dbContext.DbCourseSchedule, tc => tc.LessonCode, cs => cs.LessonCode, (tc, cs) => new RTecCourse { Day = tc.Day, CourseName = tc.CourseName, CourseDateTime = tc.CourseDateTime, CoursingStatus = tc.CoursingStatus, CourseScheduleType = tc.CourseScheduleType, TecCode = tc.TecCode, Lesson = tc.Lesson, TimeRange = times[tc.Lesson].TimeRange, ApplyNum = cs.ApplyNum, LessonCode = cs.LessonCode, CoursingStatusName = BaseEnumSrv.GetCoursingStatusName(tc.CoursingStatus), }) .Where(a => a.CourseDateTime.Year == year && a.CourseDateTime.Month == month && a.TecCode == tecCode //a.CourseScheduleType == CourseScheduleType.Standard ); if (StaticDataSrv.CurrentScheduleType == CourseScheduleType.Standard) { linq = linq.Where(a => a.CourseScheduleType == CourseScheduleType.Standard); } linq = linq.OrderBy(a => a.Lesson); var result = linq.ToList(); return(result); }
public RTrialLog GetTrialLogById(long Id) { var times = StaticDataSrv.TrialTime; var sql = from tl in _dbContext.DBTrialLog join ui in _dbContext.DBUserInfo on tl.OpenId equals ui.OpenId join sales in _dbContext.DBUserInfo on ui.SalesOpenId equals sales.OpenId into salesUser from sui in salesUser.DefaultIfEmpty() where tl.Id == Id select new RTrialLog { Id = tl.Id, ApplyDateTime = tl.ApplyDateTime, TrialDateTime = tl.TrialDateTime, CourseCode = tl.CourseCode, CourseName = tl.CourseName, TecCode = tl.TecCode, TecName = tl.TecName, OpenId = ui.OpenId, CourseType = tl.CourseType, WXName = ui.Name, UserRealName = ui.ChildName, Lesson = tl.Lesson, UserPhone = ui.Phone, TrialLogStatus = tl.TrialLogStatus, TrialLogStatusName = BaseEnumSrv.GetTrialLogStatusName(tl.TrialLogStatus), TrialTimeStr = times[tl.Lesson].TimeRange, SalesOpenId = sui == null?"":sui.OpenId, SalesName = sui == null ? "自助完成" : sui.RealName, }; return(sql.FirstOrDefault()); }
public List <RInviteLog> QueryInviteLog(string openId, out int totalPage, int pageIndex = 1, int pageSize = 20) { var sql = from log in _dbContext.DBInviteLog join ui in _dbContext.DBUserInfo on log.InvitedOpenId equals ui.OpenId where log.OwnOpenId == openId select new RInviteLog { InvitedDateTime = log.InvitedDateTime, InvitedOpenId = log.InvitedOpenId, InvitedWxName = ui.Name, InviteStatus = log.InviteStatus, InviteStatusName = BaseEnumSrv.GetInviteStatusName(log.InviteStatus), OwnOpenId = log.OwnOpenId, Id = log.Id }; int totalCount = sql.Count(); totalPage = Convert.ToInt32(totalCount / pageSize) + 1; var result = sql.OrderByDescending(a => a.InvitedDateTime) .Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); return(result); }
public IActionResult OnPostSignForUser(string openId, string lessonCode, MemberType memberType, string date) { ResultNormal result = new ResultNormal(); try { var csType = _UserSrv.GetCurrentCourseScheduleType(openId, memberType); var us = GetUserSession(false); if (us != null) { DateTime signDate = DateTime.Parse(date); var log = _BusinessSrv.UpdateCourseLogToSigned(openId, memberType, csType, lessonCode, signDate, us.OpenId); //wx通知 --Begin var course = _CourseSrv.GetCourseSchedule(log.LessonCode); if (course == null) { result.ErrorMsg = "已签到,但未发送消息通知,请告知管理员!"; return(new JsonResult(result)); } var userAccount = _UserSrv.GetUserAccount(openId); if (userAccount.ReduceTime == 0) { userAccount.ReduceTime = 2; } var time = StaticDataSrv.CourseTime; UserSignTemplate wxMessage = new UserSignTemplate(); wxMessage.data = wxMessage.GenerateData(openId, log.SignName, $"{log.CourseDateTime} | {time[course.Lesson].TimeRange}", course.CourseName, userAccount.ReduceTime, userAccount.RemainCourseTime, userAccount.RemainSummerTime, userAccount.RemainWinterTime); WXApi.SendTemplateMessage <UserSignTemplate>(wxMessage); //wx通知 --End } else { result.IntMsg = -1; result.ErrorMsg = "请重新登陆"; } result.SuccessMsg = BaseEnumSrv.GetUserCourseLogStatusNameForTec(UserCourseLogStatus.SignIn); } catch (Exception ex) { result.ErrorMsg = ex.Message; } return(new JsonResult(result)); }
public List <RAmountTrans> QueryUserAmountTrans(string openId) { var sql = _dbContext.DBInviteRewardTrans.Where(a => a.UserOpenId == openId) .OrderByDescending(a => a.TransDateTime) .Select(a => new RAmountTrans { Amount = a.Amount.ToString("0.00"), TransDate = a.TransDateTime.ToString("yyyy-MM-dd HH:mm"), UserOpenId = openId, TransTypeName = BaseEnumSrv.GetAmountTransTypeName(a.TransType), transDirection = a.Direction, }); return(sql.ToList()); }
public List <RTecLesson> GetTecOneDayAllLesson(string tecCode, string date) { var time = StaticDataSrv.CourseTime; var result = _dbContext.DBTecCourse.Where(a => a.CourseDateTime.ToString("yyyy-MM-dd") == date && a.TecCode == tecCode) .Select(a => new RTecLesson() { Id = a.Id, TimeRange = time[a.Lesson].TimeRange, LessonCode = a.LessonCode, CourseName = a.CourseName, Lesson = a.Lesson, CoursingStatus = a.CoursingStatus, CourseStatusName = BaseEnumSrv.GetCoursingStatusName(a.CoursingStatus), }).OrderBy(a => a.Lesson); return(result.ToList()); }
public List <RUserCharge> QueryChargeOrderList(string openId, int pageIndex, int pageSize) { var sql = from l in _dbContext.DBOrderLine join o in _dbContext.DBOrder on l.OrderId equals o.OrderId where o.CustOpenId == openId && o.OrderStatus == OrderStatus.PaySuccess orderby o.CreateDateTime descending select new RUserCharge { Amount = l.Price.ToString(), CreateDateTime = o.CreateDateTime.ToString("yyyy-MM-dd"), ItemName = $"{BaseEnumSrv.GetOrderTypeName(o.OrderType)}[{l.Qty}]课时", Qty = l.Qty.ToString(), UserOpenId = openId, }; return(sql.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList()); }
public RInviteLog GetInviteLogById(long Id) { var sql = from log in _dbContext.DBInviteLog join ui in _dbContext.DBUserInfo on log.InvitedOpenId equals ui.OpenId where log.Id == Id select new RInviteLog { InvitedDateTime = log.InvitedDateTime, InvitedOpenId = log.InvitedOpenId, InvitedWxName = ui.Name, InviteStatus = log.InviteStatus, InviteStatusName = BaseEnumSrv.GetInviteStatusName(log.InviteStatus), OwnOpenId = log.OwnOpenId, Id = log.Id }; return(sql.FirstOrDefault()); }
public IActionResult OnPostQueryOneDayCourse(string tecCode, DateTime date) { ResultList <RTecCourse> result = new ResultList <RTecCourse>(); try { result.List = _TecSrv.GetOneDayCourse(tecCode, date); foreach (var c in result.List) { c.CoursingStatusName = BaseEnumSrv.GetCoursingStatusName(c.CoursingStatus); } } catch (Exception ex) { result.ErrorMsg = ex.Message; } return(new JsonResult(result)); }
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; } }
public IActionResult OnPostSignCourse(string LessonCode) { ResultNormal result = new ResultNormal(); try { var us = base.GetUserSession(false); if (us != null) { _BusinessSrv.UpdateCourseLogToSigned(us.OpenId, us.MemeberType, us.CurrentScheduleType, LessonCode, DateTime.Now, us.OpenId, true, true); } else { result.IntMsg = -1; result.ErrorMsg = "请重新登陆!"; } } catch (EduException eex) { if (eex.EduErrorMessage == EduErrorMessage.NoCourseTime) { result.IntMsg = (long)EduErrorMessage.NoCourseTime; result.ErrorMsg = BaseEnumSrv.EduErrorMessageName(eex.EduErrorMessage); } result.ErrorMsg = eex.Message; } catch (Exception ex) { result.ErrorMsg = "签到失败,请联系工作人员"; NLogHelper.ErrorTxt($"签到页面[OnPostSignCourse]:{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); }
public List <RTrialLog> QueryTrialLogList_BackEnd(string fromDate, string toDate, out int RecordTotal, string tecCode = null, int pageIndex = 0, int pageSize = 20) { List <RTrialLog> result = null; var times = StaticDataSrv.TrialTime; var sql = from tl in _dbContext.DBTrialLog join ui in _dbContext.DBUserInfo on tl.OpenId equals ui.OpenId //获取接待人 join sales in _dbContext.DBUserInfo on ui.SalesOpenId equals sales.OpenId into salesUser from sui in salesUser.DefaultIfEmpty() //获取邀请人 join invite in _dbContext.DBInviteLog on ui.OpenId equals invite.InvitedOpenId into InvitedLog from iui in InvitedLog.DefaultIfEmpty() //查看奖励是否发送 join trans in _dbContext.DBInviteRewardTrans.Where(a => a.TransType == AmountTransType.Invited_TrialReward) on iui.Id equals trans.InviteLogId into invitetrans from itr in invitetrans.DefaultIfEmpty() where tl.TrialDateTime >= DateTime.Parse(fromDate) && tl.TrialDateTime <= DateTime.Parse(toDate) select new RTrialLog { Id = tl.Id, ApplyDateTime = tl.ApplyDateTime, TrialDateTime = tl.TrialDateTime, CourseCode = tl.CourseCode, CourseName = tl.CourseName, TecCode = tl.TecCode, TecName = tl.TecName, OpenId = ui.OpenId, SalesName = sui == null ? "自助完成" : sui.RealName, WxRemindCount = tl.WxRemindCount, WXName = ui.Name, UserRealName = ui.ChildName, UserPhone = ui.Phone, TrialLogStatus = tl.TrialLogStatus, TrialLogStatusName = BaseEnumSrv.GetTrialLogStatusName(tl.TrialLogStatus), TrialTimeStr = times[tl.Lesson].TimeRange, InviteOwnId = iui == null ? "" : iui.OwnOpenId, InviteOwnName = iui == null ? "" : iui.OwnName, InviteLogId = iui == null?0:iui.Id, HasRewarded = itr == null ? false : true, }; if (!string.IsNullOrEmpty(tecCode)) { sql = sql.Where(a => a.TecCode == tecCode); } RecordTotal = sql.Count(); sql = sql.OrderByDescending(a => a.TrialDateTime); result = sql.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); return(result); }
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)); }