Commit 53d027f7 authored by 黄奎's avatar 黄奎

页面修改

parent c0aeaded
......@@ -33,7 +33,7 @@ namespace Edu.Education
//new QuarzHelper().EduB2BOrderCancelTimer().GetAwaiter().GetResult();//教育同业订单超时取消 (2022-01-25 暂屏蔽)
//new QuarzHelper().EduB2BOrderCommissionTimer().GetAwaiter().GetResult();//教育同业订单返佣 (2022-01-25 暂屏蔽)
new QuarzHelper().EduCreateScrollClassTimer().GetAwaiter().GetResult();//滚动开班
new QuarzHelper().EduCreateScrollAppointmentTimer().GetAwaiter().GetResult();//预约课程
new QuarzHelper().EduCreateScrollChapterTimer().GetAwaiter().GetResult();//预约章节自动生成 2022-02-14
new QuarzHelper().CheckPerparingTimer().GetAwaiter().GetResult();
}
......
......@@ -42,13 +42,6 @@ namespace Edu.Education.Helper
IJobDetail job = JobBuilder.Create<CreateTeachingPerf>()
.WithIdentity("job1", "group1")
.Build();
//ITrigger trigger = TriggerBuilder.Create()
// .WithIdentity("trigger1", "group1")
// .StartNow()
// .WithSimpleSchedule(x => x
// .WithIntervalInHours(2)
// .RepeatForever())
// .Build();
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.WithCronSchedule(cronExpression)
......@@ -75,13 +68,6 @@ namespace Edu.Education.Helper
IJobDetail job = JobBuilder.Create<CreateOKRPeriod>()
.WithIdentity("job2", "group2")
.Build();
//ITrigger trigger = TriggerBuilder.Create()
// .WithIdentity("trigger2", "group2")
// .StartNow()
// .WithSimpleSchedule(x => x
// .WithIntervalInHours(2)
// .RepeatForever())
// .Build();
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
.WithIdentity("trigger2", "group2")
.WithCronSchedule(cronExpression)
......@@ -136,13 +122,6 @@ namespace Edu.Education.Helper
IJobDetail job = JobBuilder.Create<CreateRevenueReport>()
.WithIdentity("job4", "group4")
.Build();
//ITrigger trigger = TriggerBuilder.Create()
// .WithIdentity("trigger4", "group4")
// .StartNow()
// .WithSimpleSchedule(x => x
// .WithIntervalInHours(1)
// .RepeatForever())
// .Build();
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
.WithIdentity("trigger4", "group4")
.WithCronSchedule(CronExpression2)
......@@ -196,13 +175,7 @@ namespace Edu.Education.Helper
IJobDetail job = JobBuilder.Create<CreateWeXinMedium>()
.WithIdentity("job6", "group6")
.Build();
//ITrigger trigger = TriggerBuilder.Create()
// .WithIdentity("trigger6", "group6")
// .StartNow()
// .WithSimpleSchedule(x => x
// .WithIntervalInHours(1)
// .RepeatForever())
// .Build();
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
.WithIdentity("trigger6", "group6")
.WithCronSchedule(CronExpression2)
......@@ -262,13 +235,7 @@ namespace Edu.Education.Helper
IJobDetail job = JobBuilder.Create<EduB2BOrderCancel>()
.WithIdentity("job8", "group8")
.Build();
//ITrigger trigger = TriggerBuilder.Create()
// .WithIdentity("trigger7", "group7")
// .StartNow()
// .WithSimpleSchedule(x => x
// .WithIntervalInHours(1)
// .RepeatForever())
// .Build();
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
.WithIdentity("trigger8", "group8")
.WithCronSchedule(CronExpression2)
......
......@@ -13,6 +13,12 @@ namespace Edu.Model.ViewModel.Grade
[Serializable]
public class RB_Class_ViewModel : RB_Class
{
/// <summary>
/// 查询指定日期上课计划
/// </summary>
public string QClassDate { get; set; }
/// <summary>
/// 创建人
/// </summary>
......
......@@ -92,19 +92,6 @@ namespace Edu.Module.Course
}
#region 生成班级号
string ClassNo = "GDKB"; int ClassLetterNum = 0;
////查询最大的字母
//int CNum = classRepository.GetMaxClassNoPrefix(time + "-01");
//if (CNum == 0)
//{
// ClassNo += OpenTime + "A";
// ClassLetterNum = 1;
//}
//else
//{
// string ClassNoLetterStr = Edu.Common.Config.ClassNoLetterStr;
// ClassNo += OpenTime + GetClassNo(ClassNoLetterStr, CNum);
// ClassLetterNum = CNum + 1;
//}
#endregion
RB_Class cmodel = new RB_Class()
{
......@@ -159,37 +146,12 @@ namespace Edu.Module.Course
}
}
/// <summary>
/// 获取班号
/// </summary>
/// <param name="classNoLetterStr"></param>
/// <param name="cNum"></param>
/// <returns></returns>
//private string GetClassNo(string classNoLetterStr, int cNum)
//{
// string classNo = "";
// int i = (cNum + 1) / 52;
// if (i > 0)
// {
// for (var l = 0; l < i; l++)
// {
// classNo += "z";
// }
// }
// int y = (cNum + 1) % 52;
// if (y > 0)
// {
// classNo += classNoLetterStr.Substring(y - 1, 1);
// }
// return classNo;
//}
#endregion
#region 预约课程
/// <summary>
/// 预约课程
/// 预约课程生成上课计划
/// </summary>
public bool CreateScrollAppointment(int groupId = 100000)
{
......@@ -204,15 +166,11 @@ namespace Edu.Module.Course
//看提前几天 这个日期之前的(包含此日期) 都算
string SelectDate = DateTime.Now.AddDays(DateTime.Now.Hour == 0 ? AdvanceDay - 1 : AdvanceDay).ToString("yyyy-MM-dd");
var AppointList = scroll_AppointmentRepository.GetAppointList(new RB_Scroll_Appointment_ViewModel() { Group_Id = groupId, State = Common.Enum.Course.CourseAppointStateEnum.WaitSure, EntTime = SelectDate });
if (AppointList.Any())
{
#region 获取token 推送订阅消息
string Appid = Config.JiaXiaoHeAppId;
var Secret = Config.JiaXiaoHeAppSecret;
string tokenKey = "DATA_JiaXiaoHeToken_" + Appid;
string token = Cache.WeChat.WeChatReidsCache2.GetToken(tokenKey);
if (string.IsNullOrEmpty(token))
......@@ -224,12 +182,12 @@ namespace Edu.Module.Course
{
return false;
}
#endregion
List<int> CancelStuId = new List<int>();
var tempAppointList = AppointList.GroupBy(x => new { x.Date, x.AccountId, x.WorkUserId, x.TeacherId, x.TeacherName, x.CourseId, x.CourseName, x.CourseGradeId, x.CourseGradeNo, x.ShiftSort, x.CourseTimeId, x.RoomId, x.RoomName, x.RoomSchoolId, x.RoomSchoolName, x.ScrollMinNum }).OrderBy(x => x.Key.Date).ThenBy(x => x.Key.ShiftSort).ToList();
//以老师为单位 遍历
AppointList.GroupBy(x => new { x.Date, x.AccountId, x.WorkUserId, x.TeacherId, x.TeacherName, x.CourseId, x.CourseName, x.CourseGradeId, x.CourseGradeNo, x.ShiftSort, x.CourseTimeId, x.RoomId, x.RoomName, x.RoomSchoolId, x.RoomSchoolName, x.ScrollMinNum }).OrderBy(x => x.Key.Date).ThenBy(x => x.Key.ShiftSort).ToList().ForEach(item =>
foreach (var item in tempAppointList)
{
var CourseTimeList = JsonHelper.DeserializeObject<List<CourseTimeModel>>(item.FirstOrDefault().CourseTime);
string CourseTime = CourseTimeList.Min(x => x.StartTime) + "~" + CourseTimeList.Max(x => x.EndTime);
......@@ -240,19 +198,18 @@ namespace Edu.Module.Course
//人数未达标 取消课程
foreach (var qitem in item.Where(x => !CancelStuId.Contains(x.StuId)))
{
//if (qitem.AppointType != 3)
//{
// CancelStuId.Add(qitem.StuId);
//}
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
Dictionary<string, object> keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Scroll_Appointment_ViewModel.State), Common.Enum.Course.CourseAppointStateEnum.Cancel},
{ nameof(RB_Scroll_Appointment_ViewModel.Remark), qitem.Remark +";人数"+item.Where(x => !CancelStuId.Contains(x.StuId)).Count()+",成本人数"+item.Key.ScrollMinNum+",未满足定时器取消"+DateTime.Now},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
List<WhereHelper> wheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName = nameof(RB_Scroll_Appointment_ViewModel.Id),
FiledValue = qitem.Id,
OperatorEnum =OperatorEnum.Equal
FiledValue = qitem.Id,
OperatorEnum =OperatorEnum.Equal
}
};
bool flag = scroll_AppointmentRepository.Update(keyValues, wheres);
......@@ -264,29 +221,35 @@ namespace Edu.Module.Course
if (qitem.AppointType == 2)
{
//更新补课
Dictionary<string, object> keyValues1 = new Dictionary<string, object>() {
Dictionary<string, object> keyValues1 = new Dictionary<string, object>()
{
{ nameof(RB_Scroll_SkipCourse_ViewModel.State),1}
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
List<WhereHelper> wheres1 = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName = nameof(RB_Scroll_SkipCourse_ViewModel.StuId),
FiledValue = qitem.StuId,
OperatorEnum =OperatorEnum.Equal
FiledValue = qitem.StuId,
OperatorEnum =OperatorEnum.Equal
},
new WhereHelper(){
new WhereHelper()
{
FiledName = nameof(RB_Scroll_SkipCourse_ViewModel.GuestId),
FiledValue = qitem.GuestId,
OperatorEnum =OperatorEnum.Equal
FiledValue = qitem.GuestId,
OperatorEnum =OperatorEnum.Equal
},
new WhereHelper(){
new WhereHelper()
{
FiledName = nameof(RB_Scroll_SkipCourse_ViewModel.ChapterNo),
FiledValue = qitem.ChapterNo,
OperatorEnum =OperatorEnum.Equal
FiledValue = qitem.ChapterNo,
OperatorEnum =OperatorEnum.Equal
},
new WhereHelper(){
new WhereHelper()
{
FiledName = nameof(RB_Scroll_SkipCourse_ViewModel.State),
FiledValue = 2,
OperatorEnum =OperatorEnum.Equal
FiledValue = 2,
OperatorEnum =OperatorEnum.Equal
}
};
scroll_SkipCourseRepository.Update(keyValues1, wheres1);
......@@ -314,15 +277,18 @@ namespace Edu.Module.Course
}
if (IsCancel)
{
Dictionary<string, object> keyValues1 = new Dictionary<string, object>() {
Dictionary<string, object> keyValues1 = new Dictionary<string, object>()
{
{ nameof(RB_Scroll_Appointment_ViewModel.State), Common.Enum.Course.CourseAppointStateEnum.Cancel},
{ nameof(RB_Scroll_Appointment_ViewModel.Remark), qcitem.Remark +";未满足定时器连带("+qitem.Id+")之后预约的取消"+DateTime.Now},
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
List<WhereHelper> wheres1 = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName = nameof(RB_Scroll_Appointment_ViewModel.Id),
FiledValue = qcitem.Id,
OperatorEnum =OperatorEnum.Equal
FiledValue = qcitem.Id,
OperatorEnum =OperatorEnum.Equal
}
};
bool flag1 = scroll_AppointmentRepository.Update(keyValues1, wheres1);
......@@ -333,29 +299,35 @@ namespace Edu.Module.Course
if (qcitem.AppointType == 2)
{
//更新补课
Dictionary<string, object> keyValues12 = new Dictionary<string, object>() {
Dictionary<string, object> keyValues12 = new Dictionary<string, object>()
{
{ nameof(RB_Scroll_SkipCourse_ViewModel.State),1}
};
List<WhereHelper> wheres12 = new List<WhereHelper>() {
new WhereHelper(){
List<WhereHelper> wheres12 = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName = nameof(RB_Scroll_SkipCourse_ViewModel.StuId),
FiledValue = qcitem.StuId,
OperatorEnum =OperatorEnum.Equal
FiledValue = qcitem.StuId,
OperatorEnum =OperatorEnum.Equal
},
new WhereHelper(){
new WhereHelper()
{
FiledName = nameof(RB_Scroll_SkipCourse_ViewModel.GuestId),
FiledValue = qcitem.GuestId,
OperatorEnum =OperatorEnum.Equal
FiledValue = qcitem.GuestId,
OperatorEnum =OperatorEnum.Equal
},
new WhereHelper(){
new WhereHelper()
{
FiledName = nameof(RB_Scroll_SkipCourse_ViewModel.ChapterNo),
FiledValue = qcitem.ChapterNo,
OperatorEnum =OperatorEnum.Equal
FiledValue = qcitem.ChapterNo,
OperatorEnum =OperatorEnum.Equal
},
new WhereHelper(){
new WhereHelper()
{
FiledName = nameof(RB_Scroll_SkipCourse_ViewModel.State),
FiledValue = 2,
OperatorEnum =OperatorEnum.Equal
FiledValue = 2,
OperatorEnum =OperatorEnum.Equal
}
};
scroll_SkipCourseRepository.Update(keyValues12, wheres12);
......@@ -379,10 +351,18 @@ namespace Edu.Module.Course
else
{
#region 写入class_plan 计划表
int planId = 0;
var planList = class_PlanRepository.GetClassPlanListRepository(new RB_Class_Plan_ViewModel()
{
Group_Id = groupId,
School_Id = item.Key.RoomSchoolId,
TeacherId = item.Key.TeacherId,
ClassRoomId = item.Key.RoomId,
PlanType = 2,
QClassDateStr = Common.ConvertHelper.FormatDate(item.Key.Date)
});
//先查询计划是否已存在
int planId = class_PlanRepository.Insert(new RB_Class_Plan()
var planModel = new RB_Class_Plan()
{
ClassPlanId = 0,
ClassId = 0,
......@@ -398,53 +378,75 @@ namespace Edu.Module.Course
RepeatPlanIds = "",
PlanType = 2,
CourseId = item.Key.CourseId
});
if (planId > 0)
};
string sTime = CourseTimeList.FirstOrDefault().StartTime;
string eTime = CourseTimeList.FirstOrDefault().EndTime;
var oldModel = planList?.FirstOrDefault(qitem => qitem.Group_Id == groupId
&& qitem.School_Id == item.Key.RoomSchoolId
&& qitem.TeacherId == item.Key.TeacherId
&& qitem.ClassRoomId == item.Key.RoomId
&& Common.ConvertHelper.FormatDate(qitem.ClassDate) == Common.ConvertHelper.FormatDate(item.Key.Date)
&& qitem.PlanType == 2
&& qitem.StartTime == sTime
&& qitem.EndTime == eTime
&& qitem.CourseId == item.Key.CourseId);
//先查询计划是否已存在
if (oldModel != null && oldModel.ClassPlanId > 0)
{
//写入时间
foreach (var citem in CourseTimeList)
planId = oldModel.ClassPlanId;
}
else
{
planId = class_PlanRepository.Insert(planModel);
if (planId > 0)
{
class_TimeRepository.Insert(new RB_Class_Time()
//写入时间
foreach (var citem in CourseTimeList)
{
ClassTimeId = 0,
ClassId = 0,
ClassPlanId = planId,
StartTime = citem.StartTime,
EndTime = citem.EndTime,
Group_Id = groupId,
School_Id = item.Key.RoomSchoolId,//暂时 应该要赋值 订单上的预约校区
ClassStatus = 0,
SuiPai = "",
VideoUrl = "",
TimeHour = citem.ClassHours
});
class_TimeRepository.Insert(new RB_Class_Time()
{
ClassTimeId = 0,
ClassId = 0,
ClassPlanId = planId,
StartTime = citem.StartTime,
EndTime = citem.EndTime,
Group_Id = groupId,
School_Id = item.Key.RoomSchoolId,//暂时 应该要赋值 订单上的预约校区
ClassStatus = 0,
SuiPai = "",
VideoUrl = "",
TimeHour = citem.ClassHours
});
}
}
}
//人数达标 写入计划课程
foreach (var qitem in item.Where(x => !CancelStuId.Contains(x.StuId)))
//人数达标 写入计划课程
foreach (var qitem in item.Where(x => !CancelStuId.Contains(x.StuId)))
{
Dictionary<string, object> keyValues = new Dictionary<string, object>()
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Scroll_Appointment_ViewModel.State), Common.Enum.Course.CourseAppointStateEnum.WaitCourse},
{ nameof(RB_Scroll_Appointment_ViewModel.ClassPlanId), planId}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_Scroll_Appointment_ViewModel.Id),
FiledValue = qitem.Id,
OperatorEnum =OperatorEnum.Equal
}
};
bool flag = scroll_AppointmentRepository.Update(keyValues, wheres);
if (flag)
{ nameof(RB_Scroll_Appointment_ViewModel.State), Common.Enum.Course.CourseAppointStateEnum.WaitCourse},
{ nameof(RB_Scroll_Appointment_ViewModel.ClassPlanId), planId}
};
List<WhereHelper> wheres = new List<WhereHelper>()
{
new WhereHelper()
{
//给学生推送 预约课程的订阅消息
SendAppointmentSusscessMsg(token, qitem.StuOpenId, qitem, StartTime);
FiledName = nameof(RB_Scroll_Appointment_ViewModel.Id),
FiledValue = qitem.Id,
OperatorEnum =OperatorEnum.Equal
}
};
bool flag = scroll_AppointmentRepository.Update(keyValues, wheres);
if (flag)
{
//给学生推送 预约课程的订阅消息
SendAppointmentSusscessMsg(token, qitem.StuOpenId, qitem, StartTime);
}
}
#endregion
//给老师推送课程 信息
if (!string.IsNullOrEmpty(item.Key.WorkUserId))
{
......@@ -453,8 +455,7 @@ namespace Edu.Module.Course
PushWorkChatHelper.PushToWorkChat(content, item.Key.WorkUserId, "课程预约成功通知");
}
}
});
}
}
}
return true;
......@@ -679,7 +680,7 @@ namespace Edu.Module.Course
var clist = JsonHelper.DeserializeObject<List<CourseTimeModel>>(item.CourseTime);
//更新 order_guest 表 上课章节 请假也暂时先算完成课时(请假应该是有补课的)
var gmodel = order_GuestRepository.GetEntity(item.GuestId);
if (gmodel != null )
if (gmodel != null)
{
//ld 2022-03-08 修改为学员上课最大课时
Dictionary<string, object> keyValues1 = new Dictionary<string, object>();
......@@ -720,7 +721,7 @@ namespace Edu.Module.Course
OperatorEnum =OperatorEnum.Equal
}
};
if (keyValues1 != null&& keyValues1.Count>0)
if (keyValues1 != null && keyValues1.Count > 0)
{
order_GuestRepository.Update(keyValues1, wheres1);
}
......
......@@ -27,9 +27,12 @@ namespace Edu.Repository.Grade
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,IFNULL(B.RoomName,'') AS RoomName,IFNULL(T.TeacherName,'') AS TeacherName,IFNULL(T.TeacherHead,'') AS UserIcon,IFNULL(C.ClassName,'') AS ClassName
,Time.StartTime,time.EndTime,time.ClassTimeId,time.TimeHour
,TIMESTAMPDIFF(MINUTE, CONCAT('2020-12-16',' ',time.StartTime), CONCAT('2020-12-16',' ',time.EndTime)) AS ClassMinutes
FROM RB_Class_Plan AS A LEFT JOIN rb_class_room AS B ON A.ClassRoomId=B.RoomId
LEFT JOIN rb_teacher AS T ON A.TeacherId=T.TId
LEFT JOIN rb_class AS C ON A.ClassId=C.ClassId
LEFT JOIN rb_class_time AS time ON A.ClassPlanId=Time.ClassPlanId
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.Status), (int)DateStateEnum.Normal);
......@@ -79,6 +82,10 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.PlanType), query.PlanType);
}
if (!string.IsNullOrEmpty(query.QClassDateStr))
{
builder.AppendFormat(" AND DATE_FORMAT(A.{0},'%y/%m/%d')= DATE_FORMAT('{1}','%y/%m/%d') ", nameof(RB_Class_Plan_ViewModel.ClassDate), query.QClassDateStr);
}
}
return Get<RB_Class_Plan_ViewModel>(builder.ToString()).ToList();
}
......
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