Commit 7d2b8c13 authored by 吴春's avatar 吴春

解决冲突

parents 080d7001 22542a4b
......@@ -72,6 +72,11 @@ namespace Edu.Model.ViewModel.User
/// </summary>
public decimal CompleteHours { get; set; }
/// <summary>
/// 学员签到课时
/// </summary>
public decimal CheckHours { get; set; }
/// <summary>
/// 班级状态
/// </summary>
......
......@@ -1519,226 +1519,6 @@ namespace Edu.Module.Course
};
}
/// <summary>
/// 后台预约
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public string SetAdminScrollAppointment(RB_Scroll_Appointment_ViewModel demodel, out int AppointId)
{
AppointId = 0;
#region 预约验证
//var wslist = scroll_AppointmentRepository.GetList(new RB_Scroll_Appointment_ViewModel() { Group_Id = demodel.Group_Id, StuId = demodel.StuId, State = Common.Enum.Course.CourseAppointStateEnum.WaitSure });
//if (wslist.Any())
//{
// return demodel.StuName + " 已存在待确认的约课记录,等待确认后方可预约下一次课";
//}
#endregion
#region 初步验证
//提前天数
int AdvanceDay = Convert.ToInt32(dictvalueRepository.GetList(new Model.ViewModel.User.RB_Dictvalue_Extend() { RB_Group_id = demodel.Group_Id, DictKey = "Scroll_AdvanceDay" }).FirstOrDefault()?.Content ?? "1");
if (demodel.Date < Convert.ToDateTime(DateTime.Now.AddDays(AdvanceDay).ToString("yyyy-MM-dd"))) { return "需要提前" + AdvanceDay + "天约课"; }
if (AdvanceDay == 1 && demodel.Date.ToString("yyyy-MM-dd") == DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"))
{
//可预约的时间 (提前1天时启用)
string ScrollETime = dictvalueRepository.GetList(new Model.ViewModel.User.RB_Dictvalue_Extend() { RB_Group_id = demodel.Group_Id, DictKey = "Scroll_Time" }).FirstOrDefault()?.Content ?? "";
if (DateTime.Now > Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + ScrollETime)) { return "需要在当日" + ScrollETime + "之前约课"; }
}
//我已预约的
var myAppointModel = scroll_AppointmentRepository.GetMyAppointmentNum(demodel.StuId, demodel.GuestId, demodel.Group_Id);
int AppointNum = 0;//已预约次数
if (myAppointModel != null)
{
if (demodel.Date < myAppointModel.Date) { return demodel.StuName + " 需预约" + myAppointModel.Date.ToString("yyyy-MM-dd") + "(包含)之后的日期"; }
AppointNum = myAppointModel.ScrollMinNum;
}
#endregion
#region 学生的课程
//获取正在上课的课程
var learnModel = student_OrderGuestRepository.GetStudentLearningCourse(demodel.StuId, demodel.Group_Id, demodel.GuestId);
if (learnModel == null) { return demodel.StuName + " 未查询有正在学习的课程,无法约课"; }
if (learnModel.ClassScrollType != 2) { return demodel.StuName + " 不是预约学员,无法查看"; }
//if (demodel.CourseId != learnModel.CourseId) { return demodel.StuName + " 正在学习的课程不正确"; }
//获取课程信息
var courseModel = courseRepository.GetEntity(learnModel.CourseId);
if (courseModel.CourseTimeId <= 0) { return "课程未关联上课时段"; }
//查询课程使用的上课时段
var ctModel = scroll_CourseTimeRepository.GetEntity<RB_Scroll_CourseTime_ViewModel>(courseModel.CourseTimeId);
if (!string.IsNullOrEmpty(ctModel.Content))
{
ctModel.TimeList = JsonHelper.DeserializeObject<List<CourseTimeModel>>(ctModel.Content);
}
else { return "上课时段未配置"; }
//获取课程的章节数量
int MaxChapterNum = courseRepository.GetMaxChapterNum(learnModel.CourseId, demodel.Group_Id);
if (learnModel.CourseChapterNo + AppointNum + 1 > MaxChapterNum) { return demodel.StuName + " 课程已上完,无法继续约课"; }
double NextAppointMinutes = 0;
if (MaxChapterNum > learnModel.CourseChapterNo + AppointNum)
{
//查询下一次课的耗时分钟数 前端需要根据这个分钟数
var chapterModel = course_ChapterRepository.GetChapterListRepository(new RB_Course_Chapter_ViewModel() { Group_Id = demodel.Group_Id, CourseId = learnModel.CourseId, ChapterNo = (learnModel.CourseChapterNo + AppointNum + 1).ToString() }).FirstOrDefault();
NextAppointMinutes = chapterModel?.StudyMinutes ?? 0;
demodel.CourseGradeId = chapterModel?.CourseRate ?? 0;
demodel.CourseGradeNo = chapterModel?.ChapterGradeNo ?? 0;
demodel.ChapterNo = Convert.ToInt32(chapterModel?.ChapterNo ?? "0");
}
#endregion
#region 组装排班
string Date = demodel.Date.ToString("yyyy-MM-dd");
demodel.AccountId = teacherRepository.GetTeacherByTId(demodel.TeacherId, demodel.Group_Id).FirstOrDefault().AccountId;
//验证当日老师的数据
var planList = scroll_PlanRepository.GetList(new RB_Scroll_Plan_ViewModel() { Group_Id = demodel.Group_Id, AccountId = demodel.AccountId, STime = Date, ETime = Date });
if (!planList.Any()) { return "老师当日未查询到可预约课,请刷新后再试"; }
//开始验证 此时段数据是否可以预约
var pcList = class_PlanRepository.GetClassPlanModelRepository(new RB_Class_Plan_ViewModel() { Group_Id = demodel.Group_Id, QClassDateStr = Date, TeacherId = demodel.TeacherId });
if (pcList.Any())
{
//查询计划的时间段
string planids = string.Join(",", pcList.Select(x => x.ClassPlanId));
var ctList = class_TimeRepository.GetClassTimeListRepository(new RB_Class_Time_ViewModel() { Group_Id = demodel.Group_Id, QClassPlanIds = planids });
foreach (var item in pcList)
{
item.PlanTimeList = ctList.Where(x => x.ClassPlanId == item.ClassPlanId).ToList();
}
}
var rcList = reserve_ClassRepository.GetReserveClassListRepository(new Model.ViewModel.Reserve.RB_Reserve_Class_Extend() { Group_Id = demodel.Group_Id, StartClassDate = Date, EndClassDate = Date, TeacherId = demodel.TeacherId });
//再查询当日已预约情况
var appointList = scroll_AppointmentRepository.GetList(new RB_Scroll_Appointment_ViewModel() { Group_Id = demodel.Group_Id, StartTime = Date, EntTime = Date });
if (appointList.Where(x => x.StuId == demodel.StuId).Any())
{
string SortStr = appointList.Where(x => x.StuId == demodel.StuId).Max(x => x.ShiftSort);
if (Convert.ToInt32(demodel.ShiftSort.Replace(",", "")) <= Convert.ToInt32(SortStr.Replace(",", "")))
{
return "只能预约之后的时段";
}
}
//开始遍历老师了
foreach (var item in planList)
{
//查询班次
var shiftModel = scroll_ShiftRepository.GetList(new RB_Scroll_Shift_ViewModel() { Group_Id = demodel.Group_Id, Id = item.ShiftId }).FirstOrDefault();
//上课时段
item.CourseTimeList = ctModel.TimeList.Where(x => Convert.ToDateTime("2020-01-01 " + x.StartTime) >= Convert.ToDateTime("2020-01-01 " + shiftModel.StartTime) && Convert.ToDateTime("2020-01-01 " + x.EndTime) <= Convert.ToDateTime("2020-01-01 " + shiftModel.EndTime)).RefMapperToList<CourseTimeExtend>();
//查询该时段内 是否已有正常排课
var pc2List = pcList.Where(x => x.TeacherId == item.TeacherId).ToList();
foreach (var qitem in pc2List)
{
foreach (var citem in qitem.PlanTimeList)
{
DateTime CSDate = Convert.ToDateTime("2022-01-01 " + citem.StartTime);
DateTime CEDate = Convert.ToDateTime("2022-01-01 " + citem.EndTime);
//开始验证重复数据
var HList = item.CourseTimeList.Where(x => (x.SDate <= CSDate && CSDate <= x.EDate) || (x.SDate <= CEDate && CEDate <= x.EDate)).ToList();
foreach (var hitem in HList)
{
hitem.State = 2;//已有排课 不可预约
}
}
}
//查询该时段内 是否已有正常试听
var rc2List = rcList.Where(x => x.TeacherId == item.TeacherId).ToList();
foreach (var qitem in rc2List)
{
DateTime CSDate = Convert.ToDateTime("2022-01-01 " + qitem.ClassTime);
DateTime CEDate = Convert.ToDateTime("2022-01-01 " + qitem.EndTime);
//开始验证重复数据
var HList = item.CourseTimeList.Where(x => (x.SDate <= CSDate && CSDate <= x.EDate) || (x.SDate <= CEDate && CEDate <= x.EDate)).ToList();
foreach (var hitem in HList)
{
hitem.State = 2;//已有排课 不可预约
}
}
//查询已预约情况
var aList = appointList.Where(x => x.TeacherId == item.TeacherId).ToList();
aList.GroupBy(x => new { x.CourseGradeId, x.CourseGradeNo, x.ShiftSort }).ToList().ForEach(x =>
{
var firstModel = x.FirstOrDefault();
List<int> SortList = JsonHelper.DeserializeObject<List<int>>("[" + x.Key.ShiftSort + "]");
item.CourseTimeList.Where(y => SortList.Contains(y.Sort)).ToList().ForEach(z =>
{
z.MinPeopleNum = firstModel.ScrollMinNum;
z.MaxPeopleNum = firstModel.ScrollMaxNum;
z.State = 3;//已预约了
if (x.Where(x => x.StuId == demodel.StuId).Any())
{
z.State = 2;//我预约的
}
z.CourseId = firstModel.CourseId;
z.CourseGradeId = x.Key.CourseGradeId;
z.CourseName = firstModel.CourseName;
z.CourseGradeNo = x.Key.CourseGradeNo;
z.PeopleNum = x.Count();
});
});
}
#endregion
#region 开始预约
var planModel = planList.FirstOrDefault();
var timeList = planModel.CourseTimeList.Where(x => ("," + demodel.ShiftSort + ",").Contains("," + x.Sort + ",")).ToList();
if (timeList.Sum(x => x.Minutes) != NextAppointMinutes) { return "预约时长不正确"; }
if (timeList.Where(x => x.State == 2).Any()) { return "此时段不可预约,请刷新后再试"; }
foreach (var item in timeList.Where(x => x.State == 3))
{
if (demodel.CourseGradeId != item.CourseGradeId) { return "预约课次等级不一致"; }
if (demodel.CourseGradeNo != item.CourseGradeNo) { return "预约课程章节不一致"; }
if (item.PeopleNum + 1 > item.MaxPeopleNum) { return "该时段已预约满,请预约其他时段"; }
demodel.CourseId = item.CourseId;
}
demodel.CourseEndTime = Convert.ToDateTime(Date + " " + timeList.Max(x => x.EndTime));//上完课的时间
demodel.CourseTime = JsonHelper.Serialize(timeList.Select(x => new { x.Sort, x.StartTime, x.EndTime, x.Minutes, x.ClassHours }));
demodel.RoomId = planModel.RoomId;//上课教室
demodel.GuestId = learnModel.GuestId;
demodel.OrderId = learnModel.OrderId;
demodel.CourseSTime = timeList.Min(x => x.StartTime);
demodel.CourseETime = timeList.Max(x => x.EndTime);
demodel.LearnCourseId = learnModel.CourseId;
demodel.AppointType = 1;
//验证都OK了 插入预约数据
AppointId = scroll_AppointmentRepository.Insert(demodel);
bool flag = AppointId > 0;
if (flag)
{
//后台多半是 陈兴梅自行约课, 暂时不推送消息
// string Scroll_Notice = dictvalueRepository.GetList(new RB_Dictvalue_Extend() { RB_Group_id = demodel.Group_Id, DictKey = "Scroll_Notice" }).FirstOrDefault()?.Content ?? "";
// if (!string.IsNullOrEmpty(Scroll_Notice))
// {
// //查询推送老师
// var empList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = demodel.Group_Id, QIds = Scroll_Notice });
// foreach (var empModel in empList)
// {
// //给老师推送课程 信息
// if (!string.IsNullOrEmpty(empModel.WorkUserId))
// {
// var recipientPath = HttpUtility.UrlEncode($"/stu/subscribe");//地址需要后台功能做了之后吧
// var content = $@"<font color='info'>后台预约通知</font>\n>**概要信息** \n>
//上课日期:<font color='warning'>{demodel.Date.ToString("yyyy-MM-dd")}</font>\n>
//上课时段:<font color='warning'>{demodel.CourseSTime+"~"+ demodel.CourseETime}</font>\n>
//上课老师:<font color='warning'>{accountRepository.GetEmployeeInfo(demodel.AccountId)?.EmployeeName??""}</font>\n>
//约课备注:<font color='comment'>后台管理给学生 {studentRepository.GetEntity(demodel.StuId)?.StuName??""}的约课</font>\n>
//请 点 击:[查看详情]({Config.ErpUrl}/autologin?loginId={empModel.Id}&target={recipientPath})";
// PushWorkChatHelper.PushToWorkChat(content, empModel.WorkUserId, "后台预约通知");
// }
// }
// }
}
return flag ? "" : "出错了,请联系管理员";
#endregion
}
/// <summary>
/// 后台确认预约
......@@ -2501,7 +2281,7 @@ namespace Edu.Module.Course
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public string SetAdminScrollAppointmentModuleV2(RB_Scroll_Appointment_ViewModel demodel, out int AppointId)
public string SetAdminScrollAppointmentModule(RB_Scroll_Appointment_ViewModel demodel, out int AppointId)
{
AppointId = 0;
......@@ -2514,13 +2294,14 @@ namespace Edu.Module.Course
}
if (learnModel.ClassScrollType != 2)
{
return demodel.StuName + " 不是预约学员,无法查看";
return demodel.StuName + " 不是约课学员,不能约课";
}
//获取课程信息
var courseModel = courseRepository.GetEntity(learnModel.CourseId);
if (courseModel.CourseTimeId <= 0)
{
return "课程未关联上课时段";
return string.Format("课程【{0}】未关联上课时段", (courseModel?.CourseName ?? ""));
}
//查询课程使用的上课时段
var ctModel = scroll_CourseTimeRepository.GetEntity<RB_Scroll_CourseTime_ViewModel>(courseModel.CourseTimeId);
......@@ -2573,9 +2354,13 @@ namespace Edu.Module.Course
//再查询当日已预约情况
var appointList = scroll_AppointmentRepository.GetList(new RB_Scroll_Appointment_ViewModel() { Group_Id = demodel.Group_Id, StartTime = Date, EntTime = Date });
if (demodel.Id <= 0 && appointList.Where(x => x.StuId == demodel.StuId && x.ShiftSort == demodel.ShiftSort).Any())
if (demodel.Id <= 0 )
{
return "已预约该时段,无法再次预约";
var tempAppoint = appointList.FirstOrDefault(x => x.StuId == demodel.StuId && x.ShiftSort == demodel.ShiftSort);
if (tempAppoint != null && tempAppoint.Id > 0)
{
return string.Format("【{0}】已预约 {1} 该时段,无法再次预约", tempAppoint.StuName, Common.ConvertHelper.FormatDate(tempAppoint.Date));
}
}
//开始遍历老师了
......@@ -2696,6 +2481,21 @@ namespace Edu.Module.Course
//验证都OK了 插入预约数据
if (demodel.Id <= 0)
{
var notFinishList = scroll_AppointmentRepository.GetStuScrollAppointmentNotFinishRepository(demodel.GuestId);
decimal notFinishHours = 0;
if (notFinishList != null && notFinishList.Count > 0)
{
notFinishHours = notFinishList.Count * 2;
}
notFinishHours += 2;//加上本次课时
//验证是否排满 签到+预约>总课时就不允许在排课
if (demodel.AppointType!=3)
{
if ((notFinishHours + learnModel.CheckHours) > learnModel.TotalHours)
{
return string.Format("【{0}】已预约满,不能再预约(总课时:{1} ,完成课时:{2},剩余未上课课时:{3})", demodel.StuName, learnModel.TotalHours, learnModel.CheckHours, (notFinishHours - 2));
}
}
var tempList = appointList?.Where(qitem => qitem.AccountId == demodel.AccountId && Common.ConvertHelper.FormatDate(qitem.Date) == Common.ConvertHelper.FormatDate(demodel.Date) && qitem.ShiftSort == demodel.ShiftSort)?.ToList();
if (tempList != null && tempList.Count > 0)
{
......@@ -3734,7 +3534,6 @@ namespace Edu.Module.Course
var cList = course_ChapterRepository.GetChapterListRepository(new RB_Course_Chapter_ViewModel() { Group_Id = demodel.Group_Id, CourseIds = string.Join(",", courseIdList.Distinct()), QOrderBy = 1 })?.ToList();
if (item.ClassScrollType == 2)
{
var achildList = AppointList.Where(x => x.GuestId == ogModel.GuestId).ToList();//当前课程的
foreach (var sItem in cList)
......@@ -3747,6 +3546,7 @@ namespace Edu.Module.Course
string ClassDate = "";
if (AppointModel != null)
{
State = 1;
ClassDate = AppointModel.Date.ToString("yyyy-MM-dd");
//正常约课
if (AppointModel.AppointType == 1)
......@@ -3758,6 +3558,10 @@ namespace Edu.Module.Course
{
State = 2;//补课
}
//else if (AppointModel.AppointType == 3)
//{
// State = 3;//重修
//}
AppointState = (int)AppointModel.State;
}
//if (SkipModel != null && SkipModel.State == 1)
......
......@@ -91,6 +91,23 @@ ORDER BY r.Id asc ";
return Get<RB_Scroll_Appointment_ViewModel>(sql, parameters).ToList();
}
/// <summary>
/// 查询学员 已预约,且为上课 次数,用于计算是否约满课程
/// </summary>
/// <param name="GuestId"></param>
/// <returns></returns>
public List<RB_Scroll_Appointment_ViewModel> GetStuScrollAppointmentNotFinishRepository(int GuestId)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT r.*
FROM RB_Scroll_Appointment r
WHERE 1=1 AND r.Status=0 AND Date>='{0}' AND r.State IN(1,2,6)
", Common.ConvertHelper.FormatDate(DateTime.Now));
builder.AppendFormat(" AND r.GuestId IN({0}) ", GuestId);
return Get<RB_Scroll_Appointment_ViewModel>(builder.ToString()).ToList();
}
/// <summary>
/// 获取我预约的次数
/// </summary>
......@@ -329,7 +346,6 @@ GROUP BY StuId) as t on t.Date=sat.Date and t.StuId=sat.StuId
/// <param name="groupId"></param>
public void UpdateAppointSkipCourse(int stuId, int guestId, int ChapterNum,int SChapterNo, int groupId)
{
string sql = $@"UPDATE rb_scroll_appointment a
SET a.ChapterNo = a.ChapterNo +{ChapterNum},a.CourseGradeId = (SELECT CourseRate FROM rb_course_chapter c WHERE c.Group_Id ={groupId} and c.CourseId =a.LearnCourseId and c.ChapterNo =a.ChapterNo)
,a.CourseGradeNo = (SELECT ChapterGradeNo FROM rb_course_chapter c WHERE c.Group_Id ={groupId} and c.CourseId =a.LearnCourseId and c.ChapterNo =a.ChapterNo)
......
......@@ -40,8 +40,15 @@ WHERE 1=1 AND B.OrderState=1 AND B.OrderType=1 AND E.ClassScrollType=2
|| query.QCourseRate == Common.Enum.Course.CourseRateEnum.N2
|| query.QCourseRate == Common.Enum.Course.CourseRateEnum.N1)
{
builder.AppendFormat(" AND EXISTS (SELECT 1 FROM rb_course_chapter WHERE 1=1 AND (CourseId=B.CourseId OR CourseId IN(SELECT CourseId FROM rb_order_course WHERE OrderId=A.OrderId)) AND CourseRate IN({0})) ", (int)query.QCourseRate);
List<int> courseIdList = new List<int>();
string chapterSql = string.Format(" SELECT DISTINCT CourseId FROM rb_course_chapter WHERE Status=0 AND CourseRate ={0} ", (int)query.QCourseRate);
List<RB_Course_Chapter> chapterList = base.Get<RB_Course_Chapter>(chapterSql).ToList();
if (chapterList != null && chapterList.Count > 0)
{
courseIdList.AddRange(chapterList.Select(qitem => qitem.CourseId).ToList());
}
builder.AppendFormat(@" AND (B.CourseId IN({0}) OR EXISTS (SELECT 1 FROM rb_order_course WHERE OrderId=A.OrderId AND CourseId IN({0}))) ", string.Join(",", courseIdList));
//builder.AppendFormat(" AND EXISTS (SELECT 1 FROM rb_course_chapter WHERE 1=1 AND (CourseId=B.CourseId OR CourseId IN(SELECT CourseId FROM rb_order_course WHERE OrderId=A.OrderId)) AND CourseRate IN({0})) ", (int)query.QCourseRate);
}
else
{
......@@ -81,14 +88,7 @@ WHERE 1=1 AND B.OrderState=1 AND B.OrderType=1 AND E.ClassScrollType=2
{
string guestIds = string.Join(",", list.Select(qitem => qitem.GuestId).Distinct());
string courseIds = string.Join(",", list.Select(qitem => qitem.CourseId).Distinct());
// string courseChapterSql = string.Format(@"
//SELECT CourseId,ChapterGradeNo
//FROM rb_course_chapter
//WHERE CourseId IN({0}) AND CourseRate IN({1}) ", courseIds, (int)query.QCourseRate);
// var chapterList= Get<RB_Course_Chapter>(courseChapterSql).ToList();
StringBuilder appointBuilder = new StringBuilder();
appointBuilder.AppendFormat(@"
SELECT A.Date,A.AccountId,A.State,A.GuestId,A.LearnCourseId,A.CourseGradeId,A.CourseGradeNo,IFNULL(C.ClassCheckId,0) AS ClassCheckId
......
using Edu.Common.Enum;
using Edu.Model.Entity.Course;
using Edu.Model.Entity.User;
using Edu.Model.ViewModel.Customer;
using Edu.Model.ViewModel.Sell;
......@@ -399,11 +400,12 @@ ORDER BY {(Type == 1 ? "og.Id asc" : "og.Id desc")} LIMIT 1";
public RB_Student_OrderGuest_ViewModel GetStudentLearningCourse(int accountId, int group_Id, int guestId = 0)
{
string sql = $@"
SELECT og.*,o.CourseId,g.CourseChapterNo,c.ClassScrollType,o.ScrollSchoolId
SELECT og.*,o.CourseId,g.CourseChapterNo,c.ClassScrollType,o.ScrollSchoolId,g.TotalHours,g.CompleteHours,IFNULL(cc.CheckHours,0) AS CheckHours
FROM rb_student_orderguest og
INNER JOIN rb_order_guest g on og.GuestId = g.Id
INNER JOIN rb_order o on og.OrderId = o.OrderId
INNER JOIN rb_class c on o.ClassId = c.ClassId
LEFT JOIN (SELECT OrderGuestId,SUM(CurrentDeductionHours) AS CheckHours FROM rb_class_check WHERE Status=0 GROUP BY OrderGuestId) AS cc ON og.GuestId=cc.OrderGuestId
WHERE og.Status =0 AND g.`Status` =0 AND o.OrderState <>3 AND o.OrderType =1
";
if (group_Id > 0)
......@@ -1003,6 +1005,13 @@ and og.TotalChapterNo > og.CourseChapterNo and (og.CourseChapterNo + 1 + IFNULL(
/// <returns></returns>
public List<RB_Student_OrderGuest_ViewModel> GetCanAppointmentStuListRepository_V2(string stuName, int NextChapterGradeNo, int CourseGradeId, int SchoolId, int group_Id)
{
List<int> courseIdList = new List<int>();
string chapterSql = string.Format(" SELECT DISTINCT CourseId FROM rb_course_chapter WHERE Status=0 AND CourseRate ={0} ", CourseGradeId);
List<RB_Course_Chapter> chapterList = base.Get<RB_Course_Chapter>(chapterSql).ToList();
if (chapterList != null && chapterList.Count > 0)
{
courseIdList.AddRange(chapterList.Select(qitem => qitem.CourseId).ToList());
}
DynamicParameters parameters = new DynamicParameters();
string sql = $@"
SELECT sog.Student_Id,sog.GuestId,sog.OrderId,cou.CourseName,s.StuName as GuestName,og.CourseChapterNo,sa.AppointNum,ss.MakeUpNum
......@@ -1036,7 +1045,8 @@ WHERE o.Group_Id ={group_Id} and sog.`Status` =0 and og.GuestState NOT IN(2) and
}
//sql += string.Format(@" AND EXISTS (SELECT 1 FROM rb_course_chapter WHERE Status=0 AND CourseId= o.CourseId AND ParentId =0 AND CourseRate ={0})", CourseGradeId);
sql += string.Format(@" AND EXISTS (SELECT 1 FROM rb_course_chapter WHERE Status=0 AND (CourseId= o.CourseId OR CourseId IN(SELECT CourseId FROM rb_order_course WHERE OrderId=sog.OrderId)) AND CourseRate ={0})", CourseGradeId);
//sql += string.Format(@" AND EXISTS (SELECT 1 FROM rb_course_chapter WHERE Status=0 AND (CourseId= o.CourseId OR CourseId IN(SELECT CourseId FROM rb_order_course WHERE OrderId=sog.OrderId)) AND CourseRate ={0})", CourseGradeId);
sql += string.Format(@" AND (o.CourseId IN({0}) OR EXISTS (SELECT 1 FROM rb_order_course WHERE OrderId=sog.OrderId AND CourseId IN({0}))) ", string.Join(",", courseIdList));
return Get<RB_Student_OrderGuest_ViewModel>(sql, parameters).ToList();
}
......
......@@ -347,64 +347,6 @@ namespace Edu.WebApi.Controllers.Course
}
}
/// <summary>
/// 后台预约课
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetAdminScrollAppointment()
{
var userInfo = base.UserInfo;
RB_Scroll_Appointment_ViewModel demodel = JsonHelper.DeserializeObject<RB_Scroll_Appointment_ViewModel>(base.RequestParm.Msg.ToString());
if (demodel.TeacherId <= 0)
{
return ApiResult.ParamIsNull("请传递老师编号ID");
}
if (string.IsNullOrEmpty(demodel.ShiftSort))
{
return ApiResult.ParamIsNull("请传递上课时段");
}
if (demodel.StuId <= 0)
{
return ApiResult.ParamIsNull("请传递学生ID");
}
if (demodel.GuestId <= 0)
{
return ApiResult.ParamIsNull("请传递学生ID");
}
#region 验证是否连续的时段
List<int> SortList = JsonHelper.DeserializeObject<List<int>>("[" + demodel.ShiftSort + "]");
int MinSort = SortList.Min(x => x);
string ShiftSort = "";
for (var i = 0; i < SortList.Count(); i++)
{
ShiftSort += (MinSort + i) + ",";
}
if (ShiftSort != demodel.ShiftSort + ",")
{
return ApiResult.ParamIsNull("需预约连续的时段");
}
#endregion
demodel.State = CourseAppointStateEnum.WaitSure;
demodel.Status = 0;
demodel.Group_Id = userInfo.Group_Id;
demodel.CreateBy = userInfo.Id;
demodel.CreateTime = DateTime.Now;
demodel.UpdateBy = userInfo.Id;
demodel.UpdateTime = DateTime.Now;
string msg = scrollClassModule.SetAdminScrollAppointment(demodel, out int AppointId);
if (msg == "")
{
return ApiResult.Success("", AppointId);
}
else
{
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 后台预约课(批量)
/// </summary>
......@@ -473,7 +415,7 @@ namespace Edu.WebApi.Controllers.Course
demodel.StuId = item.StuId;
demodel.GuestId = item.GuestId;
demodel.StuName = item.StuName;
string msg = "";// scrollClassModule.SetAdminScrollAppointment(demodel);
string msg = "";
if (msg != "")
{
return ApiResult.Failed(msg);
......@@ -757,79 +699,7 @@ namespace Edu.WebApi.Controllers.Course
}));
}
/// <summary>
/// 后台预约课(可随机约课)
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetAdminScrollAppointment_V2()
{
var userInfo = base.UserInfo;
RB_Scroll_Appointment_ViewModel demodel = new RB_Scroll_Appointment_ViewModel()
{
CourseGradeId = (CourseRateEnum)base.ParmJObj.GetInt("CourseGradeId"),
CourseGradeNo = base.ParmJObj.GetInt("CourseGradeNo"),
CourseId = base.ParmJObj.GetInt("CourseId"),
Date = base.ParmJObj.GetDateTime("Date"),
GuestId = base.ParmJObj.GetInt("GuestId"),
RoomId = base.ParmJObj.GetInt("RoomId"),
ShiftSort = base.ParmJObj.GetStringValue("ShiftSort"),
StuId = base.ParmJObj.GetInt("StuId"),
StuName = base.ParmJObj.GetStringValue("StuName"),
TeacherId = base.ParmJObj.GetInt("TeacherId"),
};
if (demodel.TeacherId <= 0)
{
return ApiResult.ParamIsNull("请传递老师编号ID");
}
if (string.IsNullOrEmpty(demodel.ShiftSort))
{
return ApiResult.ParamIsNull("请传递上课时段");
}
if (demodel.StuId <= 0)
{
return ApiResult.ParamIsNull("请传递学生ID");
}
if (demodel.GuestId <= 0)
{
return ApiResult.ParamIsNull("请传递学生ID");
}
if (demodel.CourseGradeId <= 0 && demodel.CourseGradeNo <= 0)
{
return ApiResult.ParamIsNull("请传递上课的等级");
}
#region 验证是否连续的时段
List<int> SortList = JsonHelper.DeserializeObject<List<int>>("[" + demodel.ShiftSort + "]");
int MinSort = SortList.Min(x => x);
string ShiftSort = "";
for (var i = 0; i < SortList.Count(); i++)
{
ShiftSort += (MinSort + i) + ",";
}
if (ShiftSort != demodel.ShiftSort + ",")
{
return ApiResult.ParamIsNull("需预约连续的时段");
}
#endregion
demodel.State = CourseAppointStateEnum.WaitSure;
demodel.Status = 0;
demodel.Group_Id = userInfo.Group_Id;
demodel.CreateBy = userInfo.Id;
demodel.CreateTime = DateTime.Now;
demodel.UpdateBy = userInfo.Id;
demodel.UpdateTime = DateTime.Now;
string msg = scrollClassModule.SetAdminScrollAppointmentModuleV2(demodel, out int AppointId);
if (msg == "")
{
return ApiResult.Success("", AppointId);
}
else
{
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 后台预约课[HK2022-07-06修改]
......@@ -897,24 +767,10 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.ParamIsNull("请传递学生ID");
}
#region 验证是否连续的时段
List<int> SortList = JsonHelper.DeserializeObject<List<int>>("[" + demodel.ShiftSort + "]");
int MinSort = SortList.Min(x => x);
string ShiftSort = "";
for (var i = 0; i < SortList.Count(); i++)
{
ShiftSort += (MinSort + i) + ",";
}
if (ShiftSort != demodel.ShiftSort + ",")
{
return ApiResult.ParamIsNull("需预约连续的时段");
}
#endregion
string msg = "";
foreach (var item in list)
{
msg += scrollClassModule.SetAdminScrollAppointmentModuleV2(item, out int AppointId);
msg += scrollClassModule.SetAdminScrollAppointmentModule(item, out int AppointId);
}
if (msg == "")
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment