Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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());
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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));
        }
Exemple #6
0
        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());
        }
Exemple #7
0
        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());
        }
Exemple #8
0
        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());
        }
Exemple #9
0
        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);
        }
Exemple #14
0
        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);
        }
Exemple #15
0
        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));
        }