Commit c915b251 authored by liudong1993's avatar liudong1993

1

parent a7b4cdc3
......@@ -342,6 +342,39 @@ namespace Edu.Education.Helper
await scheduler.ScheduleJob(job, trigger);
}
/// <summary>
/// 定时执行预约成功生成
/// </summary>
/// <returns></returns>
public async Task EduCreateScrollAppointmentTimer()
{
string cronExpression = "0 0 * * * ?";//每小时执行的一次 整点整分
NameValueCollection props = new NameValueCollection
{
{ "quartz.serializer.type", "binary" }
};
StdSchedulerFactory factory = new StdSchedulerFactory(props);
IScheduler scheduler = await factory.GetScheduler();
await scheduler.Start();
IJobDetail job = JobBuilder.Create<CreateScrollAppointment>()
.WithIdentity("job11", "group11")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger11", "group11")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInHours(1)
.RepeatForever())
.Build();
//ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
// .WithIdentity("trigger11", "group11")
// .WithCronSchedule(cronExpression)
// .Build();
await scheduler.ScheduleJob(job, trigger);
}
}
......@@ -683,6 +716,31 @@ namespace Edu.Education.Helper
}
}
/// <summary>
/// 滚动开班预约课程生成
/// </summary>
public class CreateScrollAppointment : IJob
{
/// <summary>
/// 这里是作业调度每次定时执行方法
/// </summary>
/// <param name="context"></param>
public Task Execute(IJobExecutionContext context)
{
try
{
LogHelper.Write("滚动开班预约课程生成");
ScrollClassCommonModule scrollClassModule = new ScrollClassCommonModule();
scrollClassModule.CreateScrollAppointment(100000);
}
catch (Exception ex)
{
LogHelper.Write(ex, "CreateScrollAppointment");
}
return null;
}
}
public class UpdageHistoryOrderCommissionHelper
{
/// <summary>
......
......@@ -142,5 +142,9 @@ namespace Edu.Model.CacheModel
/// </summary>
public string StuBirth { get; set; }
/// <summary>
/// 学习方式:1 班课学习, 2 约课学习
/// </summary>
public int ClassScrollType { get; set; }
}
}
\ No newline at end of file
......@@ -86,5 +86,10 @@ namespace Edu.Model.Entity.Scroll
/// 当日完课时间 (用于统计预约次数)
/// </summary>
public DateTime CourseEndTime { get; set; }
/// <summary>
/// 上课教室ID
/// </summary>
public int RoomId { get; set; }
}
}
\ No newline at end of file
......@@ -435,5 +435,10 @@ namespace Edu.Model.Entity.Sell
/// 返佣类型(1比例返佣,2-固定金额返佣)
/// </summary>
public int CommissionReType { get; set; }
/// <summary>
/// 滚动开班所属校区
/// </summary>
public int ScrollSchoolId { get; set; }
}
}
......@@ -170,5 +170,24 @@ namespace Edu.Model.ViewModel.Course
/// </summary>
public string CourseSubjectName { get; set; }
#region 滚动开班使用
/// <summary>
/// 课程订单数量
/// </summary>
public int OrderNum { get; set; }
/// <summary>
/// 课程报名人数
/// </summary>
public int GuestNum { get; set; }
/// <summary>
/// 排序 1订单数量升序 2订单数量降序 3报名人数升序 4报名人数降序
/// </summary>
public int Q_OrderBy { get; set; }
#endregion
}
}
\ No newline at end of file
......@@ -257,5 +257,10 @@ namespace Edu.Model.ViewModel.Grade
/// 上课结束时间
/// </summary>
public string EndTime { get; set; }
/// <summary>
/// 学生ID
/// </summary>
public int StuId { get; set; }
}
}
......@@ -66,5 +66,10 @@ namespace Edu.Model.ViewModel.Grade
/// 上课分钟数
/// </summary>
public int TimeMinute { get; set; }
/// <summary>
/// 0-正常,1-缺勤,2-未签到
/// </summary>
public int IsCheck { get; set; }
}
}
\ No newline at end of file
......@@ -40,11 +40,26 @@ namespace Edu.Model.ViewModel.Scroll
/// </summary>
public string StuName { get; set; }
/// <summary>
/// 学生OpenId
/// </summary>
public string StuOpenId { get; set; }
/// <summary>
/// 课程名称
/// </summary>
public string CourseName { get; set; }
/// <summary>
/// 教室名称
/// </summary>
public string RoomName { get; set; }
/// <summary>
/// 教室所属校区
/// </summary>
public string RoomSchoolName { get; set; }
/// <summary>
/// 最小人数
/// </summary>
......@@ -60,6 +75,11 @@ namespace Edu.Model.ViewModel.Scroll
/// </summary>
public int CourseTimeId { get; set; }
/// <summary>
/// 企业微信用户ID
/// </summary>
public string WorkUserId { get; set; }
/// <summary>
/// 上课时段
/// </summary>
......
......@@ -314,5 +314,10 @@ namespace Edu.Model.ViewModel.Sell
/// 订单条数
/// </summary>
public int OrderCount { get; set; }
/// <summary>
/// 开班类型 1正常班 2滚动班
/// </summary>
public int ClassScrollType { get; set; }
}
}
\ No newline at end of file
......@@ -113,5 +113,10 @@ namespace Edu.Model.ViewModel.User
/// 已上课章节
/// </summary>
public int CourseChapterNo { get; set; }
/// <summary>
/// 开班类型 1正常班 2滚动班
/// </summary>
public int ClassScrollType { get; set; }
}
}
......@@ -89,6 +89,11 @@ namespace Edu.Model.ViewModel.User
/// </summary>
public string ClassName { get; set; }
/// <summary>
/// 开班类型 1正常班 2滚动班
/// </summary>
public int ClassScrollType { get; set; }
/// <summary>
/// 班级id
/// </summary>
......
......@@ -4817,6 +4817,46 @@ namespace Edu.Module.Course
return planList;
}
/// <summary>
/// 获取约课老师计划列表
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public List<RB_Class_Plan_ViewModel> GetStundentPlanModuleForYK(RB_Class_ViewModel model)
{
var timeList = new List<RB_Class_Time_ViewModel>();
var planList = class_PlanRepository.GetClassPlanStatisticalForYK(new RB_Class_Plan_ViewModel() { School_Id = model.School_Id, PlanType = 2, CourseId = model.CouseId, StuId = model.ManagerId, Group_Id = model.Group_Id, StartTime = model.StartTime, EndTime = model.EndTime });
if (planList != null && planList.Any())
{
string Ids = string.Join(",", planList.Select(qitem => qitem.ClassPlanId));
if (!string.IsNullOrEmpty(Ids))
{
timeList = class_TimeRepository.GetClassTimeList_V2(new RB_Class_Time_ViewModel() { QClassPlanIds = Ids });
}
string timeIds = string.Join(",", timeList.Select(x => x.ClassTimeId));
var checkList = classCheckRepository.GetClassCheckList_V2(new RB_Class_Check_ViewModel
{
ClassTimeIds = timeIds,
StuId = model.ManagerId,
Group_Id = model.Group_Id
});
foreach (var item in planList.OrderBy(x => x.ClassDate))
{
item.PlanTimeList = new List<RB_Class_Time_ViewModel>();
item.PlanTimeList = timeList.Where(x => x.ClassId == item.ClassId && (x.ClassPlanId == item.ClassPlanId || item.ClassDate == Convert.ToDateTime(Common.ConvertHelper.FormatDate(x.NewPlanDateTime)))).ToList();
foreach (var itemTime in item.PlanTimeList)
{
//0-正常,1-缺勤,2-未签到
itemTime.IsCheck = checkList?.Where(y => y.StuId == item.StuId && y.ClassTimeId == itemTime.ClassTimeId).FirstOrDefault()?.CheckStatus ?? -1;
}
}
}
return planList;
}
/// <summary>
/// 获取老师计划列表
/// </summary>
......
......@@ -1059,7 +1059,18 @@ namespace Edu.Module.Course
demodel.Class_Price = courseModel.SellPrice;
if (demodel.EnterID <= 0 && demodel.CreateBy > 0)
{
demodel.EnterID = demodel.CreateBy;
if (userInfo.AccountType == AccountTypeEnum.Teacher)
{
demodel.HelpEnterId = demodel.CreateBy;
}
else
{
demodel.EnterID = demodel.CreateBy;
}
}
if (demodel.OrderIdentify == 2 && StuList.Where(x => x.IsRenewGuest == 1).Any())
{
demodel.JoinType = OrderJoinTypeEnum.RenewOrder;
}
int OrderId = orderRepository.Insert(demodel);
demodel.OrderId = OrderId;
......
......@@ -441,6 +441,7 @@ namespace Edu.Module.Course
//获取正在上课的课程
var learnModel = student_OrderGuestRepository.GetStudentLearningCourse(userInfo.AccountId, userInfo.Group_Id);
if (learnModel == null) { rmsg = "未查询有正在学习的课程,无法约课"; return ""; }
if (learnModel.ClassScrollType != 2) { rmsg = "不是预约学员,无法查看"; return ""; }
//获取课程信息
var courseModel = courseRepository.GetEntity(learnModel.CourseId);
if (courseModel.CourseTimeId <= 0) { rmsg = "课程未关联上课时段"; return ""; }
......@@ -479,6 +480,15 @@ namespace Edu.Module.Course
NextAppointMinutes = chapterModel?.StudyMinutes ?? 0;
}
#region 获取订阅模板
// 预约成功 + 取消
List<string> TempleteList = new List<string>()
{
"oAkcEBjei5seEiDBJVZyjJj2MsHHfYPikNkn-kdVEK0",
"_iqA9KHffrLRNg_yRQqk7uLQNzJsQIGF7ykXLsFXhlw"
};
#endregion
return new
{
AccountId = userInfo.Id,
......@@ -493,7 +503,8 @@ namespace Edu.Module.Course
AdvanceDay,
ScrollETime,
AppointDay,
learnModel.CourseId
learnModel.CourseId,
TempleteList
};
}
......@@ -511,6 +522,7 @@ namespace Edu.Module.Course
//获取正在上课的课程
var learnModel = student_OrderGuestRepository.GetStudentLearningCourse(userInfo.AccountId, userInfo.Group_Id);
if (learnModel == null) { rmsg = "未查询有正在学习的课程,无法约课";return ""; }
if (learnModel.ClassScrollType != 2) { rmsg = "不是预约学员,无法查看"; return ""; }
//获取课程信息
var courseModel = courseRepository.GetEntity(learnModel.CourseId);
if (courseModel.CourseTimeId <= 0) { rmsg = "课程未关联上课时段"; return ""; }
......@@ -524,6 +536,16 @@ namespace Edu.Module.Course
//获取课程的章节数量
int MaxChapterNum = courseRepository.GetMaxChapterNum(learnModel.CourseId, userInfo.Group_Id);
if (learnModel.CourseChapterNo >= MaxChapterNum) { rmsg = "课程已上完,无法继续约课"; return ""; }
//查询已预约了几次课程
var myAppointModel = scroll_AppointmentRepository.GetMyAppointmentNum(userInfo.AccountId, userInfo.Group_Id);
string AppointDate = "";//最后预约的时间 再次预约只能预约之后的日期
int AppointNum = 0;//已预约次数
if (myAppointModel != null)
{
AppointDate = myAppointModel.Date.ToString("yyyy-MM-dd");
AppointNum = myAppointModel.ScrollMinNum;
}
#endregion
#region 组装数据
......@@ -598,8 +620,24 @@ namespace Edu.Module.Course
z.PeopleNum = x.Count();
z.SortIdentify = x.Key.ShiftSort;
z.Description = string.Join(",", x.Select(q => q.StuName));
if (z.State == 3) {
if (learnModel.CourseId != z.CourseId) {
//课程不一致 无法预约
z.State = 2;
}
if (z.CourseChapterNo != learnModel.CourseChapterNo + 1 + AppointNum) {
//章节不一致 无法预约
z.State = 2;
}
if (z.MaxPeopleNum <= z.PeopleNum) {
//人数已报满 无法预约
z.State = 2;
}
}
});
});
item.CourseTimeList = item.CourseTimeList.Where(x => x.State != 2).ToList();//排除不可预约的
RList.Add(new
{
item.AccountId,
......@@ -653,7 +691,8 @@ namespace Edu.Module.Course
#region 学生的课程
//获取正在上课的课程
var learnModel = student_OrderGuestRepository.GetStudentLearningCourse(userInfo.AccountId, userInfo.Group_Id);
if (learnModel == null) { return "未查询有正在学习的课程,无法约课";}
if (learnModel == null) { return "未查询有正在学习的课程,无法约课"; }
if (learnModel.ClassScrollType != 2) { return "不是预约学员,无法查看"; }
if (demodel.CourseId != learnModel.CourseId) { return "正在学习的课程不正确"; }
if (learnModel.CourseChapterNo + AppointNum + 1 != demodel.ChapterNo) { return "预约第几次课有误,请刷新后再试"; }
//获取课程信息
......@@ -776,7 +815,8 @@ namespace Edu.Module.Course
if (item.PeopleNum + 1 > item.MaxPeopleNum) { return "该时段已预约满,请预约其他时段"; }
}
demodel.CourseEndTime = Convert.ToDateTime(Date + " " + timeList.Max(x => x.EndTime));
demodel.CourseEndTime = Convert.ToDateTime(Date + " " + timeList.Max(x => x.EndTime));//上完课的时间
demodel.RoomId = planModel.RoomId;//上课教室
//验证都OK了 插入预约数据
bool flag = scroll_AppointmentRepository.Insert(demodel) > 0;
......
......@@ -103,10 +103,14 @@ WHERE 1=1
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,IFNULL(B.CateName,'') AS CateName,IFNULL(C.SubjectName,'') AS CourseSubjectName
FROM RB_Course AS A LEFT JOIN rb_course_category AS B ON A.CateId=B.CateId
LEFT JOIN rb_course_subject AS C ON A.CourseSubject=C.Id
builder.AppendFormat($@"
SELECT A.*,IFNULL(B.CateName,'') AS CateName,IFNULL(C.SubjectName,'') AS CourseSubjectName, t.OrderNum, t.GuestNum
FROM RB_Course AS A
LEFT JOIN rb_course_category AS B ON A.CateId=B.CateId
LEFT JOIN rb_course_subject AS C ON A.CourseSubject=C.Id
LEFT JOIN (
SELECT o.CourseId,COUNT(0) AS OrderNum, SUM(o.GuestNum) AS GuestNum FROM rb_order o WHERE o.Group_Id ={query.Group_Id} AND o.OrderState <>3 GROUP BY o.CourseId
) t on t.CourseId = A.CourseId
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Course_ViewModel.Group_Id), query.Group_Id);
......@@ -158,6 +162,24 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Course_ViewModel.CourseSubject), (int)query.CourseSubject);
}
if (query.Q_OrderBy > 0) {
if (query.Q_OrderBy == 1)
{
builder.AppendFormat(" AND t.OrderNum asc ");
}
else if (query.Q_OrderBy == 2)
{
builder.AppendFormat(" AND t.OrderNum desc ");
}
else if (query.Q_OrderBy == 3)
{
builder.AppendFormat(" AND t.GuestNum asc ");
}
else if (query.Q_OrderBy == 4)
{
builder.AppendFormat(" AND t.GuestNum desc ");
}
}
}
return GetPage<RB_Course_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
}
......
......@@ -262,6 +262,71 @@ GROUP BY A.ClassId
return Get<RB_Class_Check_ViewModel>(builder.ToString()).ToList();
}
/// <summary>
/// 获取班级签到列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Class_Check_ViewModel> GetClassCheckList_V2(RB_Class_Check_ViewModel query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat($@" SELECT A.*,sog.Student_Id as StuId FROM RB_Class_Check AS A
inner join rb_student_orderguest sog on A.OrderGuestId = sog.GuestId
WHERE 1=1 ");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.Group_Id), query.Group_Id);
}
if (query.School_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.School_Id), query.School_Id);
}
if (query.ClassId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.ClassId), query.ClassId);
}
if (query.ClassCheckId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.ClassCheckId), query.ClassCheckId);
}
if (query.OrderGuestId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.OrderGuestId), query.OrderGuestId);
}
if (query.StuId > 0)
{
builder.AppendFormat(" AND sog.Student_Id ={0} ", query.StuId);
}
if (!string.IsNullOrEmpty(query.Q_ClassIds))
{
builder.AppendFormat(" AND A.{0} in({1}) ", nameof(RB_Class_Check_ViewModel.ClassId), query.Q_ClassIds);
}
if (!string.IsNullOrEmpty(query.Q_ClassTimeIds))
{
builder.AppendFormat(" AND A.{0} in({1}) ", nameof(RB_Class_Check_ViewModel.ClassTimeId), query.Q_ClassTimeIds);
}
if (!string.IsNullOrWhiteSpace(query.StartDate))
{
builder.AppendFormat(" AND DATE_FORMAT(A.{0},'%Y-%m-%d')>=DATE_FORMAT('{1}','%Y-%m-%d') ", nameof(RB_Class_Check_ViewModel.ClassDate), query.StartDate);
}
if (!string.IsNullOrWhiteSpace(query.EndDate))
{
builder.AppendFormat(" AND DATE_FORMAT(A.{0},'%Y-%m-%d')<=DATE_FORMAT('{1}','%Y-%m-%d') ", nameof(RB_Class_Check_ViewModel.ClassDate), query.EndDate);
}
if (query.ClassTimeId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.ClassTimeId), query.ClassTimeId);
}
if (!string.IsNullOrWhiteSpace(query.ClassTimeIds))
{
builder.AppendFormat(" AND A.{0} in ({1}) ", nameof(RB_Class_Check_ViewModel.ClassTimeId), query.ClassTimeIds);
}
}
return Get<RB_Class_Check_ViewModel>(builder.ToString()).ToList();
}
/// <summary>
/// 获取学生的上课时间
/// </summary>
......
......@@ -605,6 +605,75 @@ GROUP BY A.ClassPlanId,A.ClassId ,A.ClassDate,A.ClassRoomId,A.CompleteProgress
return Get<RB_Class_Plan_ViewModel>(builder.ToString()).ToList();
}
/// <summary>
/// 老师上课计划统计
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Class_Plan_ViewModel> GetClassPlanStatisticalForYK(RB_Class_Plan_ViewModel query)
{
StringBuilder where = new StringBuilder();
if (query != null)
{
if (query.Group_Id > 0)
{
where.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.Group_Id), query.Group_Id);
}
if (!string.IsNullOrEmpty(query.StartTime))
{
where.AppendFormat(" AND DATE_FORMAT(A.{0},'%y-%m-%d')>=DATE_FORMAT('{1}','%y-%m-%d') ", nameof(RB_Class_Plan_ViewModel.ClassDate), query.StartTime);
}
if (!string.IsNullOrEmpty(query.EndTime))
{
where.AppendFormat(" AND DATE_FORMAT(A.{0},'%y-%m-%d')<=DATE_FORMAT('{1}','%y-%m-%d') ", nameof(RB_Class_Plan_ViewModel.ClassDate), query.EndTime);
}
if (query.TeacherId > 0)
{
where.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.TeacherId), query.TeacherId);
}
if (query.ClassRoomId > 0)
{
where.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.ClassRoomId), query.ClassRoomId);
}
if (query.School_Id > -1)
{
where.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.School_Id), query.School_Id);
}
if (query.ClassId > 0)
{
where.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.ClassId), query.ClassId);
}
if (query.CourseId > 0)
{
where.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.CourseId), query.CourseId);
}
if (query.PlanType > 0)
{
where.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.PlanType), query.PlanType);
}
}
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.ClassPlanId,A.StuId,A.CourseId,A.ClassDate,A.ClassRoomId,A.CourseName,A.TeacherName,A.UserIcon,A.RoomName
,MIN(A.StartTime) AS StartTime,MAX(A.EndTime) AS EndTime,
(SELECT COUNT(*) from rb_class_plan p inner join rb_scroll_appointment s on p.ClassPlanId = s.ClassPlanId where p.`Status`=0 and p.PlanType =2 and s.StuId ={2} and DATE_FORMAT(p.ClassDate,'%Y-%m-%d') <=DATE_FORMAT(a.ClassDate,'%Y-%m-%d') and p.CourseId=a.CourseId) as Ranks
FROM
(
SELECT A.ClassPlanId,sa.StuId, A.CourseId,A.ClassDate,A.ClassRoomId,C.CourseName,IFNULL(D.TeacherName,'') AS TeacherName
,IFNULL(D.TeacherHead,'') AS UserIcon,E.RoomName,F.StartTime,F.EndTime
FROM rb_class_plan AS A
INNER JOIN rb_scroll_appointment sa on A.ClassPlanId = sa.ClassPlanId and sa.StuId ={2}
LEFT JOIN rb_course AS C ON A.CourseId=C.CourseId
LEFT JOIN rb_teacher AS D ON A.TeacherId=D.TId
LEFT JOIN rb_class_room AS E ON A.ClassRoomId=E.RoomId
LEFT JOIN rb_class_time F on A.ClassPlanId = F.ClassPlanId
WHERE 1=1 AND A.`Status`=0 {0}
) AS A
GROUP BY A.ClassPlanId,A.StuId,A.CourseId ,A.ClassDate,A.ClassRoomId
", where.ToString(), Common.ConvertHelper.FormatDate(DateTime.Now), query.StuId);
return Get<RB_Class_Plan_ViewModel>(builder.ToString()).ToList();
}
/// <summary>
/// 查询指定计划的上课课时
/// </summary>
......
......@@ -105,14 +105,73 @@ ORDER BY r.Id asc ";
}
string sql = $@"
SELECT r.*,c.AccountId as TeacherId,t.TeacherName,t.TeacherHead,s.StuName,cou.CourseName,cou.ScrollMinNum,cou.ScrollMaxNum,cou.CourseTimeId From RB_Scroll_Appointment r
SELECT r.*,c.AccountId as TeacherId,t.TeacherName,t.TeacherHead,s.StuName,cou.CourseName,cou.ScrollMinNum,cou.ScrollMaxNum,cou.CourseTimeId,cr.RoomName,sc.SName as RoomSchoolName From RB_Scroll_Appointment r
inner join rb_account c on r.AccountId = c.Id
inner join rb_teacher t on c.AccountId = t.TId
inner join rb_student s on r.StuId = s.StuId
inner join rb_course cou on r.CourseId = cou.CourseId
inner join rb_class_room cr on r.RoomId = cr.RoomId
left join rb_school sc on sc.SId = cr.School_Id
WHERE {where}
ORDER BY r.Id desc ";
return GetPage<RB_Scroll_Appointment_ViewModel>(pageIndex, pageSize, out count, sql, parameters).ToList();
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Scroll_Appointment_ViewModel> GetAppointList(RB_Scroll_Appointment_ViewModel demodel)
{
DynamicParameters parameters = new DynamicParameters();
string where = $@" 1=1 and r.{nameof(RB_Scroll_Appointment_ViewModel.Status)} =0 and r.{nameof(RB_Scroll_Appointment_ViewModel.State)} <>5";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Scroll_Appointment_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.State > 0)
{
where += $@" and r.{nameof(RB_Scroll_Appointment_ViewModel.State)} ={(int)demodel.State}";
}
if (demodel.AccountId > 0)
{
where += $@" and r.{nameof(RB_Scroll_Appointment_ViewModel.AccountId)} ={demodel.AccountId}";
}
if (demodel.TeacherId > 0)
{
where += $@" and c.AccountId ={demodel.TeacherId}";
}
if (demodel.StuId > 0)
{
where += $@" and r.{nameof(RB_Scroll_Appointment_ViewModel.StuId)} ={demodel.StuId}";
}
if (demodel.CourseId > 0)
{
where += $@" and r.{nameof(RB_Scroll_Appointment_ViewModel.CourseId)} ={demodel.CourseId}";
}
if (!string.IsNullOrEmpty(demodel.StartTime))
{
where += $@" and r.{nameof(RB_Scroll_Appointment_ViewModel.Date)} >='{demodel.StartTime}'";
}
if (!string.IsNullOrEmpty(demodel.EntTime))
{
where += $@" and r.{nameof(RB_Scroll_Appointment_ViewModel.Date)} <='{demodel.EntTime} 23:59:59'";
}
string sql = $@"
SELECT r.*,c.AccountId as TeacherId,c.WorkUserId,t.TeacherName,t.TeacherHead,s.StuName,sc.OpenId as StuOpenId,cou.CourseName,cou.ScrollMinNum,cou.ScrollMaxNum,cou.CourseTimeId,cr.RoomName,sc.SName as RoomSchoolName
From RB_Scroll_Appointment r
inner join rb_account c on r.AccountId = c.Id
inner join rb_teacher t on c.AccountId = t.TId
inner join rb_student s on r.StuId = s.StuId
inner join rb_account sc on sc.AccountId = s.StuId and sc.AccountType =4
inner join rb_course cou on r.CourseId = cou.CourseId
inner join rb_class_room cr on r.RoomId = cr.RoomId
left join rb_school sc on sc.SId = cr.School_Id
WHERE {where}
ORDER BY r.Id desc ";
return Get<RB_Scroll_Appointment_ViewModel>(sql, parameters).ToList();
}
}
}
......@@ -285,7 +285,7 @@ ORDER BY {orderBy}
SELECT o.*,c.ClassName,c.ClassNo,c.School_Id as ClassSchoolId,t.TeacherName,t.TeacherIcon,IFNULL(course.CourseName,'') AS CourseName
,C.OpenTime,course.CourseSubject,IFNULL(csubject.SubjectName,'') AS CourseSubjectName,IFNULL(school.SName,'') AS SchoolName
,IFNULL(c.ClassStatus,0) AS ClassStatus,IFNULL(course.CoverImg,'') AS CourseImg,IFNULL(course.B2BBackground,'') AS B2BBackground
,IFNULL(course.B2BIcon,'') AS B2BIcon,cu.CustomerName,cu.ContactNumber as CustomerTel
,IFNULL(course.B2BIcon,'') AS B2BIcon,cu.CustomerName,cu.ContactNumber as CustomerTel,c.ClassScrollType
FROM RB_Order o LEFT JOIN rb_class c on o.ClassId = c.ClassId
LEFT JOIN rb_teacher t on c.Teacher_Id = t.TId
LEFT JOIN rb_course AS course ON (o.CourseId=course.CourseId AND o.CourseId>0 AND o.OrderType=1)
......
......@@ -347,7 +347,11 @@ where b.`Status`=0 and b.ClassStatus in(1,2) and a.status=0 and a.Account_Id={
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat($@"
SELECT s.*,sog.GuestId,o.OrderState,cou.CourseName,cou.CourseId,cou.B2BIcon,cou.B2BBackground,c.ClassName,c.ClassId,c.ClassStatus,sch.SName,sch.SId,t.TeacherName,o.EnterID,og.TotalHours,og.CompleteHours, if((og.ValidClassHours-og.CompleteHours)<0,0,(og.ValidClassHours-og.CompleteHours)) as SurplusHours
SELECT s.*,sog.GuestId,o.OrderState,cou.CourseName,cou.CourseId,cou.B2BIcon,cou.B2BBackground,c.ClassName,c.ClassId,c.ClassScrollType
case when og.TotalHours <= og.CompleteHours then 3 else
case when og.CompleteHours = 0 then 1 else
case when og.TotalHours > og.CompleteHours then 2 else 0 end end end as ClassStatus,
sch.SName,sch.SId,t.TeacherName,o.EnterID,og.TotalHours,og.CompleteHours, if((og.ValidClassHours-og.CompleteHours)<0,0,(og.ValidClassHours-og.CompleteHours)) as SurplusHours
FROM rb_student as s LEFT JOIN rb_student_orderguest as sog on s.StuId=sog.Student_Id
LEFT JOIN rb_order_guest as og on og.Id=sog.GuestId
LEFT JOIN rb_order as o on og.OrderId=o.OrderId
......
......@@ -74,7 +74,7 @@ WHERE 1=1 AND C.OrderState<>3
builder.AppendFormat(@"
SELECT A.*,IFNULL(B.ClassName,'') AS ClassName,IFNULL(B.ClassNo,'') AS ClassNo,IFNULL(C.JoinType,0) AS StuJoinType,IFNULL(D.GuestState,0) AS StuGuestState
,C.OrderState,IFNULL(D.TotalHours,0) AS TotalHours,IFNULL(D.CompleteHours,0) AS CompleteHours,IFNULL(B.ClassStatus,0) AS ClassStatus,IFNULL(D.RenewState,0) AS RenewState
,IFNULL(D.GuestName,'') AS GuestName,IFNULL(E.CourseName,'') AS CourseName,IFNULL(C.OrderType,0) AS OrderType,IFNULL(C.SourceId,0) AS SourceId
,IFNULL(D.GuestName,'') AS GuestName,IFNULL(E.CourseName,'') AS CourseName,IFNULL(C.OrderType,0) AS OrderType,IFNULL(C.SourceId,0) AS SourceId,B.ClassScrollType
FROM RB_Student_OrderGuest AS A INNER JOIN rb_order AS C ON A.OrderId=C.OrderId
INNER JOIN rb_order_guest AS D ON A.GuestId=D.Id
LEFT JOIN rb_course AS E ON c.CourseId=E.CourseId
......@@ -214,12 +214,16 @@ where og.Status =0 and ec.Group_Id ={group_Id} and ec.Status <>4 and o.OrderStat
/// <returns></returns>
public RB_Student_OrderGuest_ViewModel GetLearningCourseInfo(int accountId, int group_Id, int Type)
{
string sql = $@"SELECT og.*,o.CourseId,c.ClassStatus,c.ClassName FROM rb_student_orderguest og
string sql = $@"SELECT og.*,o.CourseId,
case when g.TotalHours <= g.CompleteHours then 3 else
case when g.CompleteHours =0 then 1 else
case when g.TotalHours > g.CompleteHours then 2 else 0 end end end as ClassStatus,c.ClassName,c.ClassScrollType
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
WHERE og.Status =0 and g.`Status` =0 and o.Group_Id ={group_Id} and o.OrderState <>3 and o.OrderType =1 and og.Student_Id ={accountId} and {(Type==1? "c.ClassStatus =2" : "c.ClassStatus <>2")}
ORDER BY {(Type == 1 ? "c.OpenTime asc" : "c.OpenTime desc")} LIMIT 1";
WHERE og.Status =0 and g.`Status` =0 and o.Group_Id ={group_Id} and o.OrderState <>3 and o.OrderType =1 and og.Student_Id ={accountId} and {(Type==1? "g.TotalHours > g.CompleteHours" : "g.TotalHours <= g.CompleteHours")}
ORDER BY {(Type == 1 ? "og.Id asc" : "og.Id desc")} LIMIT 1";
return Get<RB_Student_OrderGuest_ViewModel>(sql).FirstOrDefault();
}
......@@ -231,10 +235,12 @@ ORDER BY {(Type == 1 ? "c.OpenTime asc" : "c.OpenTime desc")} LIMIT 1";
/// <returns></returns>
public RB_Student_OrderGuest_ViewModel GetStudentLearningCourse(int accountId, int group_Id)
{
string sql = $@"SELECT og.*,o.CourseId,g.CourseChapterNo FROM rb_student_orderguest og
string sql = $@"SELECT og.*,o.CourseId,g.CourseChapterNo,c.ClassScrollType
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
WHERE og.Status =0 and g.`Status` =0 and o.Group_Id ={group_Id} and o.OrderState <>3 and o.OrderType =1 and g.GuestState =1 and og.Student_Id ={accountId}
INNER JOIN rb_class c on o.ClassId = c.ClassId
WHERE og.Status =0 and g.`Status` =0 and o.Group_Id ={group_Id} and o.OrderState <>3 and o.OrderType =1 and g.TotalHours > g.CompleteHours and og.Student_Id ={accountId}
ORDER BY og.Id asc LIMIT 1";
return Get<RB_Student_OrderGuest_ViewModel>(sql).FirstOrDefault();
}
......
......@@ -126,7 +126,8 @@ namespace Edu.WebApi.Controllers.Applet
B2BBackground = courseModel?.B2BBackground ?? "",
LearningInfo.ClassStatus,
ClassStatusName = LearningInfo.ClassStatus.ToName(),
LearningInfo.ClassName
LearningInfo.ClassName,
LearningInfo.ClassScrollType
};
}
else
......@@ -313,6 +314,9 @@ namespace Edu.WebApi.Controllers.Applet
x.CourseName,
x.ChapterNo,
x.CourseTimeList,
x.RoomId,
x.RoomName,
x.RoomSchoolName,
x.State,
StateName = x.State.ToName(),
CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm")
......
......@@ -338,6 +338,7 @@ namespace Edu.WebApi.Controllers.Applet
studentModel.ClassName,//班级
studentModel.CourseId,
studentModel.CourseName,//课程
studentModel.ClassScrollType,
ClassNext,
LearningGardenList,
Words
......@@ -640,9 +641,20 @@ namespace Edu.WebApi.Controllers.Applet
Group_Id = base.AppletUserInfo.Group_Id,
School_Id = -1,
ClassId = base.ParmJObj.GetInt("ClassId"),
CouseId = base.ParmJObj.GetInt("CourseId"),
ClassScrollType = base.ParmJObj.GetInt("ClassScrollType")
};
var list = classModule.GetStundentPlanModule(query);
List<RB_Class_Plan_ViewModel> list = new List<RB_Class_Plan_ViewModel>();
if (query.ClassScrollType == 2)
{
query.ManagerId = base.AppletUserInfo.AccountId;//暂存学生StuId
//约课
list = classModule.GetStundentPlanModuleForYK(query);
}
else
{
list = classModule.GetStundentPlanModule(query);
}
List<Model.ViewModel.Course.ChapterTree_ViewModel> chapterTreeList = new List<Model.ViewModel.Course.ChapterTree_ViewModel>();
if (list != null && list.Any())
......@@ -670,32 +682,62 @@ namespace Edu.WebApi.Controllers.Applet
itemGroup.PlanTimeList.ForEach(x => x.NewPlanDateTime = itemGroup.ClassDate.ToString("yyyy-MM-dd") + " " + x.EndTime);
// DayTime = DayTime + "~" + itemGroup.PlanTimeList.Max(x => Convert.ToDateTime(x.NewPlanDateTime)).ToString("HH:ss");
}
planListResult.Add(new
if (query.ClassScrollType == 2)
{
itemGroup.Chapter,
DateYear = startTime.AddDays(i).ToString("yyyy"),
DateMonth = startTime.AddDays(i).ToString("MM"),
DateDay = startTime.AddDays(i).ToString("dd"),
WeekStr = StringHelper.GetJapanWeekChar(startTime.AddDays(i)),
ClassDateStr = startTime.AddDays(i).ToString("yyyy-MM-dd"),
ClassName = plan.Where(x => x.ClassId == itemGroup.ClassId).FirstOrDefault()?.ClassName ?? "",
itemGroup.ClassId,
itemGroup.CourseId,
PlanTimeList = itemGroup.PlanTimeList.Select(x => new
planListResult.Add(new
{
x.StartTime,
x.EndTime,
x.ClassPlanId,
x.ClassTimeId,
x.TimeHour,
TeacherName = itemGroup.TeacherName ?? "",
UserIcon = itemGroup.UserIcon ?? "",
x.GuestList.Where(x => x.StudentId == base.AppletUserInfo.AccountId).FirstOrDefault()?.IsCheck,
OrderGuestId = x.GuestList.Where(x => x.StudentId == base.AppletUserInfo.AccountId).FirstOrDefault()?.Id,
IsLeave = Convert.ToDateTime(x.NewPlanDateTime) > DateTime.Now ? 1 : 0
})
});
itemGroup.Chapter,
DateYear = startTime.AddDays(i).ToString("yyyy"),
DateMonth = startTime.AddDays(i).ToString("MM"),
DateDay = startTime.AddDays(i).ToString("dd"),
WeekStr = StringHelper.GetJapanWeekChar(startTime.AddDays(i)),
ClassDateStr = startTime.AddDays(i).ToString("yyyy-MM-dd"),
ClassName = plan.Where(x => x.ClassId == itemGroup.ClassId).FirstOrDefault()?.ClassName ?? "",
itemGroup.ClassId,
itemGroup.CourseId,
PlanTimeList = itemGroup.PlanTimeList.Select(x => new
{
x.StartTime,
x.EndTime,
x.ClassPlanId,
x.ClassTimeId,
x.TimeHour,
TeacherName = itemGroup.TeacherName ?? "",
UserIcon = itemGroup.UserIcon ?? "",
x.IsCheck,
OrderGuestId = 0,
IsLeave = Convert.ToDateTime(x.NewPlanDateTime) > DateTime.Now ? 1 : 0
})
});
}
else
{
planListResult.Add(new
{
itemGroup.Chapter,
DateYear = startTime.AddDays(i).ToString("yyyy"),
DateMonth = startTime.AddDays(i).ToString("MM"),
DateDay = startTime.AddDays(i).ToString("dd"),
WeekStr = StringHelper.GetJapanWeekChar(startTime.AddDays(i)),
ClassDateStr = startTime.AddDays(i).ToString("yyyy-MM-dd"),
ClassName = plan.Where(x => x.ClassId == itemGroup.ClassId).FirstOrDefault()?.ClassName ?? "",
itemGroup.ClassId,
itemGroup.CourseId,
PlanTimeList = itemGroup.PlanTimeList.Select(x => new
{
x.StartTime,
x.EndTime,
x.ClassPlanId,
x.ClassTimeId,
x.TimeHour,
TeacherName = itemGroup.TeacherName ?? "",
UserIcon = itemGroup.UserIcon ?? "",
x.GuestList.Where(x => x.StudentId == base.AppletUserInfo.AccountId).FirstOrDefault()?.IsCheck,
OrderGuestId = x.GuestList.Where(x => x.StudentId == base.AppletUserInfo.AccountId).FirstOrDefault()?.Id,
IsLeave = Convert.ToDateTime(x.NewPlanDateTime) > DateTime.Now ? 1 : 0
})
});
}
}
}
return ApiResult.Success(data: planListResult);
......@@ -1306,6 +1348,7 @@ namespace Edu.WebApi.Controllers.Applet
item.CourseName,
item.OrderState,
OrderStateName=item.OrderState.ToName(),
item.ClassScrollType
});
}
pageModel.Count = rowsCount;
......
......@@ -190,7 +190,8 @@ namespace Edu.WebApi.Controllers.APP
TeacherName = studentModel.TeacherName,
CourseName = studentModel.CourseName,
StuSex = studentModel.StuSex,
StuBirth = studentModel.StuBirth.HasValue ? studentModel.StuBirth.Value.ToString("yyyy-MM-dd") : "",
StuBirth = studentModel.StuBirth.HasValue ? studentModel.StuBirth.Value.ToString("yyyy-MM-dd") : "",
ClassScrollType = studentModel.ClassScrollType,
Token = token,
GroupLogo = model.GroupLogo,
UserIcon = model.UserIcon,
......@@ -378,6 +379,7 @@ namespace Edu.WebApi.Controllers.APP
CourseName = studentModel.CourseName,
StuSex = studentModel.StuSex,
StuBirth = studentModel.StuBirth.HasValue ? studentModel.StuBirth.Value.ToString("yyyy-MM-dd") : "",
ClassScrollType = studentModel.ClassScrollType,
Token = token,
GroupLogo = model.GroupLogo,
UserIcon = model.UserIcon,
......
......@@ -316,7 +316,8 @@ namespace Edu.WebApi.Controllers.Course
IsQPrice = base.ParmJObj.GetInt("IsQPrice"),
IsQTeacher = base.ParmJObj.GetInt("IsQTeacher"),
Saleplat = base.ParmJObj.GetStringValue("Saleplat"),
CourseSubject=base.ParmJObj.GetInt("CourseSubject"),
CourseSubject = base.ParmJObj.GetInt("CourseSubject"),
Q_OrderBy = base.ParmJObj.GetInt("Q_OrderBy")
};
query.Group_Id = base.UserInfo.Group_Id;
var list = courseModule.GetCoursePageListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
......
......@@ -267,6 +267,7 @@ namespace Edu.WebApi.Controllers.Course
x.CustomerId,
x.CustomerName,
x.CustomerTel,
x.ClassScrollType,
SplitDetailsList = x?.SplitDetailsList?.Select(qitem => new
{
qitem.S_ClassId,
......@@ -376,6 +377,7 @@ namespace Edu.WebApi.Controllers.Course
x.CustomerId,
x.CustomerName,
x.CustomerTel,
x.ClassScrollType,
SaleRemarkList = x.SaleRemarkList.Select(z => new
{
z.Id,
......@@ -547,7 +549,8 @@ namespace Edu.WebApi.Controllers.Course
StuIds = base.ParmJObj.GetStringValue("StuIds"),
OrderIdentify = base.ParmJObj.GetInt("OrderIdentify"),
CourseConsultantId = base.ParmJObj.GetInt("CourseConsultantId"),
EnterID = base.ParmJObj.GetInt("EnterID")
EnterID = base.ParmJObj.GetInt("EnterID"),
ScrollSchoolId = base.ParmJObj.GetInt("ScrollSchoolId")
};
var IsInsertClass = base.ParmJObj.GetInt("IsChaBan");
if (IsInsertClass == 1)
......@@ -1440,6 +1443,7 @@ namespace Edu.WebApi.Controllers.Course
x.CustomerId,
x.CustomerName,
x.CustomerTel,
x.ClassScrollType,
SplitDetailsList = x?.SplitDetailsList?.Select(qitem => new
{
qitem.S_ClassId,
......@@ -1632,6 +1636,7 @@ namespace Edu.WebApi.Controllers.Course
x.CustomerId,
x.CustomerName,
x.CustomerTel,
x.ClassScrollType,
SplitDetailsList = x?.SplitDetailsList?.Select(qitem => new
{
qitem.S_ClassId,
......@@ -1739,6 +1744,7 @@ namespace Edu.WebApi.Controllers.Course
new ExcelColumn(value:"教务备注"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"校长备注"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"经理备注"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"类型"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
}
};
slist.Add(header);
......@@ -1803,6 +1809,7 @@ namespace Edu.WebApi.Controllers.Course
new ExcelColumn(value: item?.TeacherRemarkList.FirstOrDefault()?.Content??""){ },
new ExcelColumn(value: item?.RectorRemarkList.FirstOrDefault()?.Content??""){ },
new ExcelColumn(value: item?.DirectorRemarkList.FirstOrDefault()?.Content??""){ },
new ExcelColumn(value: item.ClassScrollType == 2 ?"约课":"跟班"){ },
}
};
slist.Add(firstRow);
......@@ -1837,6 +1844,7 @@ namespace Edu.WebApi.Controllers.Course
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
}
};
slist.Add(firstRowT);
......
......@@ -402,6 +402,7 @@ namespace Edu.WebApi.Controllers.Customer
item.CompleteHours,
item.GuestName,
item.CourseName,
item.ClassScrollType
});
}
pageModel.Count = rowsCount;
......
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