/// <summary> /// 根据课程类型返回正在操作的课程名称 /// </summary> /// <param name="obj"></param> /// <returns></returns> private static string GetCourseName(CoachCourse obj) { string courseName = string.Empty; if (obj.Type == CoachDic.BigCourse) { string sql = ""; sql = @"SELECT * FROM dbo.CoachBigCourseInfo WHERE id=@bigCourseId"; var cmd = CommandHelper.CreateText <CoachBigCourseInfo>(FetchType.Fetch, sql); cmd.Params.Add("@bigCourseId", obj.BigCourseId); var result = DbContext.GetInstance().Execute(cmd); var data = result.Entities.FirstOrDefault() as CoachBigCourseInfo; if (data != null) { courseName = data.Name; } } else if (obj.Type == CoachDic.PrivateCourse) { User user = UserHelper.GetUserById(obj.CoachId); if (user != null) { courseName = user.PetName + "(私教)的课程"; } else { courseName = "私教的课程"; } } return(courseName); }
public Response SaveCoursePersonInfoList(CoachCourse obj) { Response rsp = new Response(); List <EntityBase> entites = new List <EntityBase>(); foreach (CoachCoursePersonInfo item in obj.CoursePersonInfoList) { item.CourseId = obj.Id; item.IsSignIn = false; //检测此学员是否有悦动力账户 if (!string.IsNullOrEmpty(item.StudentMobile)) { var ydlUser = UserHelper.GetUserByMobile(item.StudentMobile);//通过手机号反查悦动力账户 if (ydlUser != null) { item.YdlUserId = ydlUser.Id;//此学员在悦动力有账户, 保存其id , 方便后续关联 } } item.RowState = RowState.Added; item.TrySetNewEntity(); entites.Add(item); } if (entites.Count > 0) { rsp = DbContext.GetInstance().Execute(CommandHelper.CreateSave(entites)); } return(rsp); }
/// <summary> /// 返还或者扣除次数 /// 业务逻辑: 根据以前的人头数和这次修改的人头数做比较, /// 然后得到差值(比如2次), 通过差值(比如2次)返还2次或者扣除2次 /// </summary> /// <param name="oldCoachCourse"></param> /// <param name="updateObj"></param> /// <returns></returns> public Response AddOrSubAmount(Response response, CoachCourse oldCoachCourse, CoachCourse updateObj) { var personInfoList = CoachHelper.Instance.GetCoachCoursePersonInfoList(oldCoachCourse.Id); int oldCount = personInfoList.Count;//之前的人数 int newCount = updateObj.CoursePersonInfoList.Count; int subValue = oldCount - newCount; if (subValue == 0) { //不做任何操作 return(response); } else if (subValue > 0) { //返还次数 for (int i = 0; i < subValue; i++) { response = CoachHelper.Instance.AddOne(oldCoachCourse); } } else if (subValue < 0) { subValue = Math.Abs(subValue); //扣除次数 for (int i = 0; i < subValue; i++) { response = CoachHelper.Instance.SubOne(oldCoachCourse); } } return(response); }
/// <summary> /// 判断课程时间范围是否和请假重合 /// </summary> /// <param name="obj"></param> /// <returns></returns> public bool IsRepeatTimeInCoachLeave(CoachCourse obj) { //此算法来源于 SO 的牛b算法, 当时本人写了几百行代码都没解决, SO 大神一句就搞定了, 膜拜 //http://stackoverflow.com/questions/13513932/algorithm-to-detect-overlapping-periods var sql = @" SELECT COUNT(*) FROM dbo.CoachLeave WHERE @BeginTime < EndTime AND BeginTime < @EndTime AND CoachId=@CoachId AND State='010002' "; var cmdVal = CommandHelper.CreateText <ClubUser>(FetchType.Scalar, sql); cmdVal.Params.Add("@BeginTime", obj.BeginTime); cmdVal.Params.Add("@EndTime", obj.EndTime); cmdVal.Params.Add("@CoachId", obj.CoachId); var result = DbContext.GetInstance().Execute(cmdVal); if ((int)result.Tag == 1) { return(true); } else { return(false); } }
/// <summary> /// 获取对应课程SMS 接收人电话(分教练或学员) /// </summary> /// <param name="obj"></param> /// <param name="personType"></param> /// <returns></returns> private static string GetTelNo(User current, CoachCourse obj, CoursePersonType personType) { string userid = ""; string telno = string.Empty; switch (personType) { case CoursePersonType.Student: if (string.IsNullOrEmpty(current.Id)) { userid = obj.CreatorId; } else { userid = current.Id; } break; case CoursePersonType.Coacher: userid = obj.CoachId; break; } User user = UserHelper.GetUserById(userid); if (user != null) { telno = user.Mobile; } return(telno); }
public bool IsRepeatInPrivateCoach(CoachCourse obj) { var sql = @" SELECT COUNT(*) FROM dbo.CoachCourse WHERE (EndTime = @EndTime OR BeginTime = @BeginTime) AND CoachId=@CoachId AND State!=@State "; if (obj.RowState == RowState.Modified) { sql += " AND Id!=@Id "; //如果是修改操作, 把自己(修改记录)剔除掉判断 . 如果是添加操作, 所有记录参与判断 } var cmdVal = CommandHelper.CreateText<ClubUser>(FetchType.Scalar, sql); cmdVal.Params.Add("@BeginTime", obj.BeginTime); cmdVal.Params.Add("@EndTime", obj.EndTime); cmdVal.Params.Add("@CoachId", obj.CoachId); cmdVal.Params.Add("@State", CoachDic.CourseFinished); if (obj.RowState == RowState.Modified) { cmdVal.Params.Add("@Id", obj.Id); } var result = DbContext.GetInstance().Execute(cmdVal); if ((int)result.Tag == 1) { return true; } else { return false; } }
public void GetBalance(CoachCourse coachCourse, CoachCoursePersonInfo item) { if (coachCourse.Type == CoachDic.BigCourse) { var money = CoachHelper.Instance.GetBigCourseBalance(item.YdlUserId, coachCourse.BigCourseId); if (money != null) { item.Amount = money.Amount; item.ThenTotalAmount = money.ThenTotalAmount; } } else if (coachCourse.Type == CoachDic.PrivateCourse) { var money = CoachHelper.Instance.GetPrivateCourseBalance(item.YdlUserId, coachCourse.CoachId); if (money != null) { item.Amount = money.Amount; item.ThenTotalAmount = money.ThenTotalAmount; } } else if (coachCourse.Type == CoachDic.BootcampCourse) { var money = CoachHelper.Instance.GetBootcampBalance(item.YdlUserId, coachCourse.CoachBootcampId); if (money != null) { item.Amount = money.Amount; item.ThenTotalAmount = money.ThenTotalAmount; } } }
public void GetMyBalance(CoachCourse coachCourse, string currentUserid) { if (coachCourse.Type == CoachDic.BigCourse) { var money = CoachHelper.Instance.GetBigCourseBalance(currentUserid, coachCourse.BigCourseId); if (money != null) { coachCourse.Amount = money.Amount; } } else if (coachCourse.Type == CoachDic.PrivateCourse) { var money = CoachHelper.Instance.GetPrivateCourseBalance(currentUserid, coachCourse.CoachId); if (money != null) { coachCourse.Amount = money.Amount; } } else if (coachCourse.Type == CoachDic.BootcampCourse) { var money = CoachHelper.Instance.GetBootcampBalance(currentUserid, coachCourse.CoachBootcampId); if (money != null) { coachCourse.Amount = money.Amount; if (money.Amount < 0) { coachCourse.Amount = 0; } } } }
public Response Execute(User currentUser, string request) { var req = JsonConvert.DeserializeObject <Request <GetCoachRelatedFilter> >(request); string sql = @" SELECT a.*, b.Name AS VenueName, c.Name AS CourseGoalName, c.Code AS CourseGoalCode, CoachName = dbo.fn_GetUserName(d.Id), BigCourseName = e.Name, e.Price AS BigCourseUnitPrice, f.Grade AS CoachGrade, d.Code AS CoachCode, b.Lng AS VenueLng , b.Lat AS VenueLat , b.Address AS VenueAddress, e.CourseContent AS CourseContentDetail, Score=(SELECT AVG(Score) FROM dbo.CoachComment WHERE CourseId=a.Id ), MyScore=(SELECT ISNULL(Score,0) FROM dbo.CoachComment WHERE CommentatorId=@CurrentUserId AND CourseId=a.Id ) FROM dbo.CoachCourse a LEFT JOIN dbo.Venue b ON a.VenueId = b.Id LEFT JOIN dbo.SysDic c ON c.Code = a.CourseGoalCode AND c.Code!='' LEFT JOIN dbo.UserAccount d ON a.CoachId = d.Id LEFT JOIN dbo.CoachBigCourseInfo e ON e.Id = a.BigCourseId LEFT JOIN dbo.Coach f ON a.CoachId=f.Id WHERE a.Id = @Id "; var cmd = CommandHelper.CreateText <CoachCourse>(FetchType.Fetch, sql); cmd.Params.Add("@Id", req.Filter.CourseId); cmd.Params.Add("@CurrentUserId", req.Filter.CurrentUserId); var result = DbContext.GetInstance().Execute(cmd); CoachCourse coachCourse = result.FirstEntity <CoachCourse>(); if (coachCourse != null) { //获取个人信息列表 GetPersonInfoList(coachCourse); //CourseName 计算赋值 SetCourseName(coachCourse); //获取我的余额(界面最外层用) GetMyBalance(coachCourse, req.Filter.CurrentUserId); //获取教练或大课的单价 GetUnitPrice(coachCourse); //计算课程状态 CoachHelper.Instance.CountCourseState(coachCourse); //返回附件 coachCourse.TryGetFiles(); CoachHelper.Instance.SetCourseAvgScore(coachCourse); } return(result); }
public Response Execute(User currentUser, string request) { var req = JsonConvert.DeserializeObject <Request <GetCoachRelatedFilter> >(request); string sql = @" SELECT a.*, b.Name AS VenueName, c.Name AS CourseGoalName, CoachName = dbo.fn_GetUserName(d.Id), BigCourseName = e.Name, f.Name AS TypeName, b.Address AS VenueAddress, e.CourseContent AS CourseContentDetail FROM dbo.CoachCourse a LEFT JOIN dbo.Venue b ON a.VenueId = b.Id LEFT JOIN dbo.SysDic c ON c.Code = a.CourseGoalCode AND c.Code!='' LEFT JOIN dbo.UserAccount d ON a.CoachId = d.Id LEFT JOIN dbo.CoachBigCourseInfo e ON e.Id = a.BigCourseId LEFT JOIN dbo.BaseData f ON a.Type=f.Id WHERE a.Id = @Id "; var cmd = CommandHelper.CreateText <CoachCourse>(FetchType.Fetch, sql); cmd.Params.Add("@Id", req.Filter.CourseId); var result = DbContext.GetInstance().Execute(cmd); CoachCourse coachCourse = result.FirstEntity <CoachCourse>(); if (coachCourse != null) { //个人信息列表 GetPersonInfoList(coachCourse); //CourseName 计算赋值 if (coachCourse.Type == CoachDic.BigCourse) { coachCourse.CourseName = coachCourse.BigCourseName; } else if (coachCourse.Type == CoachDic.PrivateCourse) { coachCourse.CourseName = coachCourse.CoachName; } //计算上下课打卡按钮状态 CountStartEndCard(coachCourse); //获取附件 coachCourse.TryGetFiles(); } return(result); }
/// <summary> /// 获取一个空闲的教练 /// </summary> /// <returns></returns> public string GetRandomFreeCoach(CoachCourse obj) { string coachId = ""; //先从此教学点 常驻教练中抽取, 这样距离更近 coachId = GetFreeCoachByVenue(obj); if (string.IsNullOrEmpty(coachId)) { //如果此教学点, 没有常驻教练, 就从教练池中抽取 coachId = GetFreeCoachInPool(obj); } return(coachId); }
public Response DeleteCoursePersonInfo(CoachCourse obj) { var sql = @" DELETE FROM dbo.CoachCoursePersonInfo WHERE CourseId=@CourseId "; var cmdVal = CommandHelper.CreateText <ClubUser>(FetchType.Scalar, sql); cmdVal.Params.Add("@CourseId", obj.Id); var result = DbContext.GetInstance().Execute(cmdVal); return(result); }
/// <summary> /// 根据约课时间段返回待定上课日期(单天) /// </summary> /// <param name="obj"></param> /// <returns></returns> private static string GetCourseSmsDate(CoachCourse obj) { System.Text.StringBuilder dateStr = new System.Text.StringBuilder(); DateTime?dt = obj.BeginTime; if (dt != null) { dateStr.Append(dt.Value.ToString("yyyy年MM月dd日 ")); dateStr.Append(GetDayOfWeek(dt.Value.DayOfWeek)); dateStr.Append(dt.Value.ToString(" HH:mm")); } return(dateStr.ToString()); }
/* * private static string EnCode = "C50067"; * private static string EnPass = "******"; * private static string UrlFormat = "http://www3.mob800.com/interface/Send.aspx?enCode={0}&enPass={1}&userName=sys&mob={2}&msg={3}"; * private static string Prefix = "【悦动力】"; * * public static string SendSms(string mobiles, string msg) * { * string strRet = null; * try * { * string url = string.Format(UrlFormat, EnCode, EnPass, mobiles, HttpUtility.UrlEncode(Prefix + msg, Encoding.GetEncoding("gb2312"))); * if (url == null || url.Trim().ToString() == "") * { * return strRet; * } * string targeturl = url.Trim().ToString(); * HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targeturl); * hr.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"; * hr.Method = "GET"; * hr.Timeout = 60 * 1000; * hr.Headers.Add("content", "text/html; charset=gb2312"); * WebResponse hs = hr.GetResponse(); * Stream sr = hs.GetResponseStream(); * StreamReader ser = new StreamReader(sr, Encoding.Default); * strRet = ser.ReadToEnd(); * } * catch (Exception ex) * { * strRet = ex.Message; * } * return strRet; * * } * */ /// <summary> /// 课程序预约、修改预约时间,取消预约 SMS短信发送 /// </summary> /// <param name="obj">课程预约对象</param> /// <returns></returns> public static SmsSingleSenderResult SendCourseSms(User current, CoachCourse obj, CoursePersonType personType, CourseSmsType smsType) { string telNO = GetTelNo(current, obj, personType); //移动电话号码 string param1 = GetCourseOrderPerson(current, obj, personType); //约课人 string param2 = GetCourseSmsType(smsType); //约课动作 增加,修改,取消 string param3 = GetCourseName(obj); //课程类型,大课名称或私教课(教练) string param4 = GetCourseSmsDate(obj); //上课时间 格式:yyyy年MM月dd日 周 HH:mm SmsSingleSenderResult result; string[] param = new string[] { param1, param2, param3, param4 }; result = SingleSend(telNO, courseSmsTemplateId, param); return(result); }
public Response AddOne(CoachCourse obj) { var cmd = CommandHelper.CreateProcedure <CoacherApply>(text: "sp_ReserveCourseAddSubOne"); cmd.Params.Add(CommandHelper.CreateParam("@StudentUserId", obj.ReservedPersonId)); cmd.Params.Add(CommandHelper.CreateParam("@CoachId", obj.CourseNameId)); cmd.Params.Add(CommandHelper.CreateParam("@BigCourseId", obj.CourseNameId)); cmd.Params.Add(CommandHelper.CreateParam("@CourseTypeId ", obj.Type)); cmd.Params.Add(CommandHelper.CreateParam("@CityId", "75")); cmd.Params.Add(CommandHelper.CreateParam("@Type", "Add")); cmd.CreateParamMsg(); var result = DbContext.GetInstance().Execute(cmd); return(result); }
/// <summary> /// 删除之前的学员列表并返还次数 /// </summary> /// <param name="coachCourse"></param> public void DeleteOldStudentList(CoachCourse coachCourse) { List <CoachCoursePersonInfo> list = CoachHelper.Instance.GetCoachCoursePersonInfoList(coachCourse.Id); foreach (var item in list) { //返还此学员的集训课余额 一次 CoachHelper.Instance.AddBootcampBalanceOne(item.YdlUserId, coachCourse.CoachBootcampId); //然后再删除 List <EntityBase> entites = new List <EntityBase>(); entites.Add(item); item.RowState = RowState.Deleted; var result = DbContext.GetInstance().Execute(CommandHelper.CreateSave(entites)); SystemHelper.CheckResponseIfError(result); } }
/// <summary> /// 提前一个小时提醒教练和学员去上课 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void Timer_Elapsed(object sender, ElapsedEventArgs e) { //获取合法的记录, 即距离当前时间一个小时后要上课的记录 var sql = @" SELECT * FROM ( SELECT Id, CoachId, ReservedPersonId, differenceMinute= DATEDIFF(MINUTE, @currentTime, BeginTime) FROM dbo.CoachCourse WHERE BeginTime>@currentTime AND State !='Finished' ) a WHERE a.differenceMinute=60 "; var cmd = CommandHelper.CreateText <CoachCourse>(FetchType.Fetch, sql); cmd.Params.Add("@currentTime", DateTime.Now); var result = DbContext.GetInstance().Execute(cmd); foreach (var item in result.Entities) { CoachCourse obj = item as CoachCourse; try { //发给教练 string message = string.Format("注意: 一个小时后你有课要上, 点击查看"); Dictionary <string, object> extrasToCoach = new Dictionary <string, object>(); extrasToCoach.Add("Type", SystemMessageType.CoachReservedCourseDetail); extrasToCoach.Add("BusinessId", obj.Id); extrasToCoach.Add("Message", message); JPushHelper.SendCourseSystemMessage(extrasToCoach, obj.CoachId); //发给学员 Dictionary <string, object> extrasToStudent = new Dictionary <string, object>(); extrasToStudent.Add("Type", SystemMessageType.StudentReservedCourseDetail); extrasToStudent.Add("BusinessId", obj.Id); extrasToStudent.Add("Message", message); JPushHelper.SendCourseSystemMessage(extrasToStudent, obj.ReservedPersonId); } catch (Exception) { } } }
/// <summary> /// 设置课程的评分(平均分) /// </summary> /// <param name="coachCourse"></param> public void SetCourseAvgScore(CoachCourse coachCourse) { var sql = @" SELECT ISNULL(AVG(Score),0) AS Score FROM dbo.CoachComment WHERE CourseId=@CourseId "; var cmd = CommandHelper.CreateText <CoachCourse>(FetchType.Fetch, sql); cmd.Params.Add("@CourseId", coachCourse.Id); var result = DbContext.GetInstance().Execute(cmd); var obj = result.FirstEntity <CoachCourse>(); coachCourse.Score = Helper.GetRoundOffByChina(obj.Score, 2); }
/// <summary> /// 如果不存在就添加此课程 /// </summary> public CoachCourse CreateActualCoachCourse(CoachCourse obj) { var bootcamp = CoachHelper.Instance.GetCoachBootcampById(obj.CoachBootcampId); obj.VenueId = bootcamp.VenueId; obj.Type = CoachDic.BootcampCourse; obj.State = CoachDic.CourseNotStart; obj.RowState = RowState.Added; obj.CityId = CoachDic.DefaultCityId; obj.TrySetNewEntity(); List <EntityBase> entites = new List <EntityBase>(); entites.Add(obj); var result = DbContext.GetInstance().Execute(CommandHelper.CreateSave(entites)); SystemHelper.CheckResponseIfError(result); return(obj); }
public Response SaveCoursePersonInfoList(CoachCourse obj) { Response rsp = new Response(); List <EntityBase> entites = new List <EntityBase>(); foreach (var item in obj.CoursePersonInfoList) { item.CourseId = obj.Id; item.RowState = RowState.Added; item.TrySetNewEntity(); entites.Add(item); } if (entites.Count > 0) { rsp = DbContext.GetInstance().Execute(CommandHelper.CreateSave(entites)); } return(rsp); }
/// <summary> /// 计算课程的状态 /// </summary> /// <param name="coachCourse"></param> public void CountCourseState(CoachCourse coachCourse) { if (coachCourse.State == CoachDic.CourseFinished) { if (coachCourse.MyScore == 0) { coachCourse.CourseState = "NotScore";//未评分 } else if (coachCourse.MyScore > 0) { coachCourse.CourseState = "HasScore";//已评分 } } else if (coachCourse.State == CoachDic.CourseNotStart || coachCourse.State == CoachDic.CourseProcessing) { coachCourse.CourseState = "NotStart";//已预约 } }
/// <summary> /// 计算上下课打卡按钮状态 /// </summary> public void CountStartEndCard(CoachCourse coachCourse) { if (coachCourse.State == CoachDic.CourseNotStart) { coachCourse.IsStartCard = false; coachCourse.IsEndCard = false; } else if (coachCourse.State == CoachDic.CourseProcessing) { coachCourse.IsStartCard = true; coachCourse.IsEndCard = false; } else if (coachCourse.State == CoachDic.CourseFinished) { coachCourse.IsStartCard = true; coachCourse.IsEndCard = true; } }
public void GetPersonInfoList(CoachCourse coachCourse) { //个人信息列表 var list = CoachHelper.Instance.GetCoachCoursePersonInfoList(coachCourse.Id); foreach (CoachCoursePersonInfo item in list) { item.CourseContent = coachCourse.CourseContentDetails; //获取教练对学员的评价信息 item.CoachCommentStudentInfo = CoachHelper.Instance.GetStudentCommentDetail(item.Id); if (!string.IsNullOrEmpty(item.YdlUserId)) { SetPersonInfo(item, coachCourse); } coachCourse.CoursePersonInfoList.Add(item); } }
/// <summary> /// 删除此课程 /// </summary> /// <param name="obj"></param> public Response DeleteCoachCourse(CoachCourse obj) { string sql = @" DELETE FROM dbo.CoachCourse WHERE CoachBootcampId=@CoachBootcampId AND BeginTime=@BeginTime AND EndTime=@EndTime " ; var cmd = CommandHelper.CreateText <CoachCourse>(FetchType.Execute, sql); cmd.Params.Add("@CoachBootcampId", obj.CoachBootcampId); cmd.Params.Add("@BeginTime", obj.BeginTime); cmd.Params.Add("@EndTime", obj.EndTime); var result = DbContext.GetInstance().Execute(cmd); return(result); }
public void SetCourseName(CoachCourse coachCourse) { if (coachCourse.Type == CoachDic.BigCourse) { coachCourse.CourseName = coachCourse.BigCourseName; } else if (coachCourse.Type == CoachDic.PrivateCourse) { coachCourse.CourseName = coachCourse.CoachName; } else if (coachCourse.Type == CoachDic.BootcampCourse) { var bootcamp = CoachHelper.Instance.GetCoachBootcampById(coachCourse.CoachBootcampId); if (bootcamp != null) { coachCourse.CourseName = bootcamp.Name; } } }
/// <summary> /// 从空闲的教练池中随机抽取一个空闲教练上大课 /// </summary> /// <returns></returns> public string GetFreeCoachInPool(CoachCourse obj) { var sql = @" SELECT a.Id FROM dbo.Coach a WHERE 1=1 AND a.Id NOT IN( --获取没空的教练列表 --具体逻辑: 根据学员期望上课的时间段(比如9点到10点)来获取和已有排课有冲突的记录, 从而得到(9点到10点)没有空的教练列表 SELECT CoachId FROM dbo.CoachCourse WHERE @BeginTime < EndTime AND BeginTime < @EndTime AND State!=@State UNION ALL SELECT CoachId FROM dbo.CoachLeave WHERE @BeginTime < EndTime AND BeginTime < @EndTime AND State='010002' ) "; var cmd = CommandHelper.CreateText <Coach>(FetchType.Fetch, sql); cmd.Params.Add("@BeginTime", obj.BeginTime); cmd.Params.Add("@EndTime", obj.EndTime); cmd.Params.Add("@State", CoachDic.CourseFinished); var result = DbContext.GetInstance().Execute(cmd); if (result.Entities.Count > 0) { var list = result.Entities.ToList <EntityBase, Coach>(); //空闲教练列表 Random random = new Random(); int randomNumber = random.Next(list.Count); //随机抽取一个 return(list[randomNumber].Id); } return(""); }
private Response SaveCoachIncome(CoachCourse coachCourse) { //获取教练的收入 var coach = CoachHelper.Instance.GetCoach(coachCourse.CoachId); decimal coachOriginalIncome = 0; decimal coachRealIncome = 0; if (coachCourse.Type == CoachDic.PrivateCourse) { var coachUnitPrice = CoachHelper.Instance.GetCoachUnitPrice(CoachDic.DefaultCityId, coach.Grade); coachOriginalIncome = coachUnitPrice * 1; coachRealIncome = coachUnitPrice * 1 * (coach.CommissionPercentage / 100); } else if (coachCourse.Type == CoachDic.BigCourse) { var bigUnitPrice = CoachHelper.Instance.GetBigCourseInfo(coachCourse.BigCourseId); if (bigUnitPrice != null) { var studentNumber = CoachHelper.Instance.GetCoachCoursePersonInfoList(coachCourse.Id).Count; coachOriginalIncome = bigUnitPrice.Price * studentNumber; coachRealIncome = bigUnitPrice.Price * studentNumber * (coach.CommissionPercentage / 100); } } //构造实体保持教练收入 CoachIncome obj = new CoachIncome(); obj.CoachId = coachCourse.CoachId; obj.CourseId = coachCourse.Id; obj.CourseType = coachCourse.Type; obj.OriginalMoney = coachOriginalIncome; obj.CoachCommissionPercentage = coach.CommissionPercentage; obj.CoachRealIncome = coachRealIncome; obj.RowState = RowState.Added; List <EntityBase> entites = new List <EntityBase>(); entites.Add(obj); obj.TrySetNewEntity(); var result = DbContext.GetInstance().Execute(CommandHelper.CreateSave(entites)); return(result); }
/// <summary> /// 判断课程时间范围是否重合 /// </summary> /// <param name="obj"></param> /// <returns></returns> public bool IsRepeatPeriodInPrivateCoach(CoachCourse obj) { //此算法来源于 SO 的牛b算法, 当时本人写了几百行代码都没解决, SO 大神一句就搞定了, 膜拜 //http://stackoverflow.com/questions/13513932/algorithm-to-detect-overlapping-periods var sql = @" SELECT COUNT(*) FROM dbo.CoachCourse WHERE @BeginTime < EndTime AND BeginTime < @EndTime AND CoachId=@CoachId AND State!=@State "; if (obj.RowState == RowState.Modified) { sql += " AND Id!=@Id "; //如果是修改操作, 把自己(修改记录)剔除掉判断 . 如果是添加操作, 所有记录参与判断 } var cmdVal = CommandHelper.CreateText <ClubUser>(FetchType.Scalar, sql); cmdVal.Params.Add("@BeginTime", obj.BeginTime); cmdVal.Params.Add("@EndTime", obj.EndTime); cmdVal.Params.Add("@CoachId", obj.CoachId); cmdVal.Params.Add("@State", CoachDic.CourseFinished); if (obj.RowState == RowState.Modified) { cmdVal.Params.Add("@Id", obj.Id); } var result = DbContext.GetInstance().Execute(cmdVal); if ((int)result.Tag == 1) { return(true); } else { return(false); } }
/// <summary> /// 获取此教练课程信息, 如果不存在就创建此课程 /// </summary> /// <param name="obj"></param> public CoachCourse GetCoachCourse(CoachCourse obj) { string sql = @" SELECT * FROM dbo.CoachCourse WHERE CoachBootcampId=@CoachBootcampId AND BeginTime=@BeginTime AND EndTime=@EndTime AND CoachId=@CoachId " ; var cmd = CommandHelper.CreateText <CoachCourse>(FetchType.Fetch, sql); cmd.Params.Add("@CoachBootcampId", obj.CoachBootcampId); cmd.Params.Add("@BeginTime", obj.BeginTime); cmd.Params.Add("@EndTime", obj.EndTime); cmd.Params.Add("@CoachId", obj.CoachId); var result = DbContext.GetInstance().Execute(cmd); var dbCourse = result.FirstEntity <CoachCourse>(); return(dbCourse); }
/// <summary> /// 如果此用户是ydl用户 就设置相关余额等信息 /// </summary> public void SetPersonInfo(CoachCoursePersonInfo item, CoachCourse coachCourse) { //获取基本信息 var user = UserHelper.GetUserById(item.YdlUserId); if (user != null) { item.HeadUrl = user.HeadUrl; item.Sex = user.Sex; //item.StudentName = UserHelper.GetUserName(user); } //获取余额信息 GetBalance(coachCourse, item); //如果私教有训练计划的话就赋私教的训练计划内容 if (coachCourse.Type == CoachDic.PrivateCourse) { var plan = CoachHelper.Instance.GetTrainingPlan(coachCourse.CoachId, item.YdlUserId); if (plan != null && !string.IsNullOrEmpty(plan.TrainingPlanContent)) { item.CourseContent = plan.TrainingPlanContent; } } }