Example #1
0
        /// <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;
            }
        }