Commit ac946d9e authored by liudong1993's avatar liudong1993

1 预约

parent 343743aa
...@@ -123,6 +123,8 @@ namespace Edu.Cache.User ...@@ -123,6 +123,8 @@ namespace Edu.Cache.User
GroupName = model.GroupName, GroupName = model.GroupName,
SchoolName = model.SchoolName, SchoolName = model.SchoolName,
Token = token, Token = token,
AccountId = model.AccountId,
AccountType = model.AccountType,
ApiRequestFromEnum = apiRequestFromEnum ApiRequestFromEnum = apiRequestFromEnum
}; };
UserInfoSet(Cache.CacheKey.AppletStudent_Login_Key + Id.ToString(), userInfo, Common.Config.JwtExpirTime); UserInfoSet(Cache.CacheKey.AppletStudent_Login_Key + Id.ToString(), userInfo, Common.Config.JwtExpirTime);
......
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Common.Plugin;
namespace Edu.Common.Enum.Course
{
/// <summary>
/// 课程预约状态枚举
/// </summary>
public enum CourseAppointStateEnum
{
/// <summary>
/// 待确认
/// </summary>
[EnumField("待确认")]
WaitSure = 1,
/// <summary>
/// 待上课
/// </summary>
[EnumField("待上课")]
WaitCourse = 2,
/// <summary>
/// 已上课
/// </summary>
[EnumField("已上课")]
Coursed = 3,
/// <summary>
/// 缺席
/// </summary>
[EnumField("缺席")]
Absent = 4,
/// <summary>
/// 取消
/// </summary>
[EnumField("取消")]
Cancel = 5,
}
}
...@@ -309,6 +309,39 @@ namespace Edu.Education.Helper ...@@ -309,6 +309,39 @@ namespace Edu.Education.Helper
await scheduler.ScheduleJob(job, trigger); await scheduler.ScheduleJob(job, trigger);
} }
/// <summary>
/// 定时执行滚动开班生成
/// </summary>
/// <returns></returns>
public async Task EduCreateScrollClassTimer()
{
string cronExpression = "0 10 0 1 * ?"; //每月1号凌晨10分
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<CreateScrollClass>()
.WithIdentity("job10", "group10")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger10", "group10")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInHours(1)
.RepeatForever())
.Build();
//ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
// .WithIdentity("trigger10", "group10")
// .WithCronSchedule(cronExpression)
// .Build();
await scheduler.ScheduleJob(job, trigger);
}
} }
...@@ -625,6 +658,30 @@ namespace Edu.Education.Helper ...@@ -625,6 +658,30 @@ namespace Edu.Education.Helper
} }
} }
/// <summary>
/// 滚动开班数据生成
/// </summary>
public class CreateScrollClass : IJob
{
/// <summary>
/// 这里是作业调度每次定时执行方法
/// </summary>
/// <param name="context"></param>
public Task Execute(IJobExecutionContext context)
{
try
{
LogHelper.Write("滚动开班数据生成");
ScrollClassCommonModule scrollClassModule = new ScrollClassCommonModule();
scrollClassModule.CreateScrollClass("", 100000);
}
catch (Exception ex)
{
LogHelper.Write(ex, "CreateScrollClass");
}
return null;
}
}
public class UpdageHistoryOrderCommissionHelper public class UpdageHistoryOrderCommissionHelper
{ {
......
{ {
"ConnectionStrings": { "ConnectionStrings": {
"DefaultConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ", "DefaultConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnectionPName": "MySql.Data.MySqlClient", "DefaultConnectionPName": "MySql.Data.MySqlClient",
"FinanceConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ", "FinanceConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"FinanceConnectionPName": "MySql.Data.MySqlClient", "FinanceConnectionPName": "MySql.Data.MySqlClient",
"DataStatisticsConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_datastatistics;CharSet=utf8mb4; Convert Zero Datetime=true; ", "DataStatisticsConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_datastatistics;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DataStatisticsConnectionPName": "MySql.Data.MySqlClient", "DataStatisticsConnectionPName": "MySql.Data.MySqlClient",
"LogConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_sys;CharSet=utf8mb4; Convert Zero Datetime=true; ", "LogConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_sys;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"LogConnectionPName": "MySql.Data.MySqlClient", "LogConnectionPName": "MySql.Data.MySqlClient",
"MallConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=test_reborn_mall;CharSet=utf8mb4; Convert Zero Datetime=true; ", "MallConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_mall;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"MallConnectionPName": "MySql.Data.MySqlClient" "MallConnectionPName": "MySql.Data.MySqlClient"
//"DefaultConnection": "server=rm-bp1tj77h6kp0d02fb.mysql.rds.aliyuncs.com;user id=reborn;password=Reborn@2018;database=uat_reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ", //"DefaultConnection": "server=rm-bp1tj77h6kp0d02fb.mysql.rds.aliyuncs.com;user id=reborn;password=Reborn@2018;database=uat_reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ",
//"DefaultConnectionPName": "MySql.Data.MySqlClient", //"DefaultConnectionPName": "MySql.Data.MySqlClient",
......
...@@ -331,5 +331,25 @@ namespace Edu.Model.Entity.Course ...@@ -331,5 +331,25 @@ namespace Edu.Model.Entity.Course
/// 合同补充协议 /// 合同补充协议
/// </summary> /// </summary>
public string ContractInfo { get; set; } public string ContractInfo { get; set; }
/// <summary>
/// 是否会滚动开班 1是
/// </summary>
public int IsScrollClass { get; set; }
/// <summary>
/// 最小上课人数
/// </summary>
public int ScrollMinNum { get; set; }
/// <summary>
/// 最大上课人数
/// </summary>
public int ScrollMaxNum { get; set; }
/// <summary>
/// 适配上课时段ID (滚动开班)
/// </summary>
public int CourseTimeId { get; set; }
} }
} }
\ No newline at end of file
...@@ -222,5 +222,17 @@ namespace Edu.Model.Entity.Grade ...@@ -222,5 +222,17 @@ namespace Edu.Model.Entity.Grade
/// </summary> /// </summary>
public int ClassLetterNum { get; set; } public int ClassLetterNum { get; set; }
} private int scrollType = 1;//默认正常班
/// <summary>
/// 开班类型 1正常班 2滚动班
/// </summary>
public int ClassScrollType { get => scrollType; set => scrollType = value; }
/// <summary>
/// 滚动开班月份
/// </summary>
public string ScrollMonth { get; set; }
}
} }
...@@ -71,5 +71,15 @@ namespace Edu.Model.Entity.Grade ...@@ -71,5 +71,15 @@ namespace Edu.Model.Entity.Grade
/// 上课计划重复的计划编号 /// 上课计划重复的计划编号
/// </summary> /// </summary>
public string RepeatPlanIds { get; set; } public string RepeatPlanIds { get; set; }
/// <summary>
/// 计划类型 1正常班 2滚动开班
/// </summary>
public int PlanType { get; set; }
/// <summary>
/// 课程ID
/// </summary>
public int CourseId { get; set; }
} }
} }
\ No newline at end of file
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.Scroll
{
/// <summary>
/// 滚动开班预约类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Scroll_Appointment
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 预约日期
/// </summary>
public DateTime Date { get; set; }
/// <summary>
/// 老师ID(Account表ID)
/// </summary>
public int AccountId { get; set; }
/// <summary>
/// 学生ID
/// </summary>
public int StuId { get; set; }
/// <summary>
/// 课程ID
/// </summary>
public int CourseId { get; set; }
/// <summary>
/// 第几章节
/// </summary>
public int ChapterNo { get; set; }
/// <summary>
/// 使用的时段 依次排序(只能连续预约)
/// </summary>
public string ShiftSort { get; set; }
/// <summary>
/// 状态 1待确认 2待上课 3已上课 4缺席 5取消
/// </summary>
public CourseAppointStateEnum State { get; set; }
/// <summary>
/// 删除
/// </summary>
public int Status { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public int UpdateBy { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
/// <summary>
/// 当日完课时间 (用于统计预约次数)
/// </summary>
public DateTime CourseEndTime { get; set; }
}
}
\ No newline at end of file
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.Scroll
{
/// <summary>
/// 滚动开班上课时段类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Scroll_CourseTime
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 上课时段标题
/// </summary>
public string Name { get; set; }
/// <summary>
/// 时段列表 json格式
/// </summary>
public string Content { get; set; }
/// <summary>
/// 删除状态(0-正常,1-禁用)
/// </summary>
public int Status { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public int UpdateBy { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
}
}
\ No newline at end of file
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.Scroll
{
/// <summary>
/// 滚动开班计划类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Scroll_Plan
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 排班日期
/// </summary>
public DateTime Date { get; set; }
/// <summary>
/// 老师ID (Account表Id)
/// </summary>
public int AccountId { get; set; }
/// <summary>
/// 班次ID (0休息 -1未排班)
/// </summary>
public int ShiftId { get; set; }
/// <summary>
/// 使用教室ID
/// </summary>
public int RoomId { get; set; }
/// <summary>
/// 删除状态(0-正常,1-禁用)
/// </summary>
public int Status { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public int UpdateBy { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
}
}
\ No newline at end of file
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.Scroll
{
/// <summary>
/// 滚动开班班次类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Scroll_Shift
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 班次名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public string StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string EndTime { get; set; }
/// <summary>
/// 颜色
/// </summary>
public string Color { get; set; }
/// <summary>
/// 删除状态(0-正常,1-禁用)
/// </summary>
public int Status { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public int UpdateBy { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
}
}
\ No newline at end of file
...@@ -231,5 +231,10 @@ namespace Edu.Model.Entity.Sell ...@@ -231,5 +231,10 @@ namespace Edu.Model.Entity.Sell
/// 续费状态 1正常 2续费 /// 续费状态 1正常 2续费
/// </summary> /// </summary>
public int RenewState { get; set; } public int RenewState { get; set; }
/// <summary>
/// 已上课的章节
/// </summary>
public int CourseChapterNo { get; set; }
} }
} }
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Model.Entity.Scroll;
namespace Edu.Model.ViewModel.Scroll
{
/// <summary>
/// 滚动开班预约扩展类
/// </summary>
public class RB_Scroll_Appointment_ViewModel : RB_Scroll_Appointment
{
/// <summary>
/// 开始时间
/// </summary>
public string StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string EntTime { get; set; }
/// <summary>
/// 老师ID
/// </summary>
public int TeacherId { get; set; }
/// <summary>
/// 老师名称
/// </summary>
public string TeacherName { get; set; }
/// <summary>
/// 老师头像
/// </summary>
public string TeacherHead { get; set; }
/// <summary>
/// 学生名称
/// </summary>
public string StuName { get; set; }
/// <summary>
/// 课程名称
/// </summary>
public string CourseName { get; set; }
/// <summary>
/// 最小人数
/// </summary>
public int ScrollMinNum { get; set; }
/// <summary>
/// 最大人数
/// </summary>
public int ScrollMaxNum { get; set; }
/// <summary>
/// 上课时段ID
/// </summary>
public int CourseTimeId { get; set; }
/// <summary>
/// 上课时段
/// </summary>
public List<CourseTimeModel> CourseTimeList { get; set; }
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Model.Entity.Scroll;
namespace Edu.Model.ViewModel.Scroll
{
/// <summary>
/// 滚动开班上课时段扩展类
/// </summary>
public class RB_Scroll_CourseTime_ViewModel : RB_Scroll_CourseTime
{
/// <summary>
/// 时段
/// </summary>
public List<CourseTimeModel> TimeList { get; set; }
/// <summary>
/// ids
/// </summary>
public string CourseTimeIds { get; set; }
}
/// <summary>
/// 时段
/// </summary>
public class CourseTimeModel {
/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public string StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string EndTime { get; set; }
/// <summary>
/// 上课分钟数
/// </summary>
public int Minutes { get; set; }
/// <summary>
/// 消费课时
/// </summary>
public int ClassHours { get; set; }
}
/// <summary>
/// 时段扩展
/// </summary>
public class CourseTimeExtend : CourseTimeModel
{
/// <summary>
/// 预约状态 1未预约 2不可预约 3他人预约 4我的预约
/// </summary>
public int State { get; set; }
/// <summary>
/// 预约的课程
/// </summary>
public int CourseId { get; set; }
/// <summary>
/// 课程名称
/// </summary>
public string CourseName { get; set; }
/// <summary>
/// 课程章节
/// </summary>
public int CourseChapterNo { get; set; }
/// <summary>
/// 预约人数
/// </summary>
public int PeopleNum { get; set; }
/// <summary>
/// 最少人数
/// </summary>
public int MinPeopleNum { get; set; }
/// <summary>
/// 最大人数
/// </summary>
public int MaxPeopleNum { get; set; }
/// <summary>
/// 标识 (用于判断哪些时段是一起上的)
/// </summary>
public string SortIdentify { get; set; }
/// <summary>
/// 描述
/// </summary>
public string Description { get; set; }
public DateTime SDate { get => Convert.ToDateTime("2022-01-01 " + this.StartTime); }
public DateTime EDate { get => Convert.ToDateTime("2022-01-01 " + this.EndTime); }
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Model.Entity.Scroll;
namespace Edu.Model.ViewModel.Scroll
{
/// <summary>
/// 滚动开班排班扩展类
/// </summary>
public class RB_Scroll_Plan_ViewModel : RB_Scroll_Plan
{
/// <summary>
/// 开始时间
/// </summary>
public string STime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string ETime { get; set; }
/// <summary>
/// 老师编号
/// </summary>
public int TeacherId { get; set; }
/// <summary>
/// 老师头像
/// </summary>
public string TeacherHead { get; set; }
/// <summary>
/// 老师名称
/// </summary>
public string TeacherName { get; set; }
/// <summary>
/// 老师介绍
/// </summary>
public string TeacherIntro { get; set; }
/// <summary>
/// 教室
/// </summary>
public string RoomName { get; set; }
/// <summary>
/// 校区
/// </summary>
public string SchoolName { get; set; }
/// <summary>
/// 上课时段
/// </summary>
public List<CourseTimeExtend> CourseTimeList { get; set; }
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Model.Entity.Scroll;
namespace Edu.Model.ViewModel.Scroll
{
/// <summary>
/// 滚动开班班次扩展类
/// </summary>
public class RB_Scroll_Shift_ViewModel : RB_Scroll_Shift
{
}
}
\ No newline at end of file
...@@ -108,5 +108,10 @@ namespace Edu.Model.ViewModel.User ...@@ -108,5 +108,10 @@ namespace Edu.Model.ViewModel.User
/// 留学就业编号 /// 留学就业编号
/// </summary> /// </summary>
public int SourceId { get; set; } public int SourceId { get; set; }
/// <summary>
/// 已上课章节
/// </summary>
public int CourseChapterNo { get; set; }
} }
} }
...@@ -485,7 +485,7 @@ namespace Edu.Module.Course ...@@ -485,7 +485,7 @@ namespace Edu.Module.Course
else else
{ {
string ClassNoLetterStr = Edu.Common.Config.ClassNoLetterStr; string ClassNoLetterStr = Edu.Common.Config.ClassNoLetterStr;
model.ClassNo += model.OpenTime.ToString("yyyyMMdd") + ClassNoLetterStr.Substring(CNum, 1); model.ClassNo += model.OpenTime.ToString("yyyyMMdd") + GetClassNo(ClassNoLetterStr, CNum);
model.ClassLetterNum = CNum + 1; model.ClassLetterNum = CNum + 1;
} }
#endregion #endregion
...@@ -610,7 +610,30 @@ namespace Edu.Module.Course ...@@ -610,7 +610,30 @@ namespace Edu.Module.Course
SetGoodsSpecificationValue(model); SetGoodsSpecificationValue(model);
#endregion #endregion
return flag; return flag;
} }
/// <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;
}
/// <summary> /// <summary>
/// 添加上课计划 /// 添加上课计划
......
...@@ -272,7 +272,7 @@ namespace Edu.Module.Course ...@@ -272,7 +272,7 @@ namespace Edu.Module.Course
/// 新增修改课程 /// 新增修改课程
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public virtual bool SetCourseModule(RB_Course_ViewModel model) public virtual bool SetCourseModule(RB_Course_ViewModel model, out int courseId)
{ {
bool flag; bool flag;
if (model.IsRenew == 0) if (model.IsRenew == 0)
...@@ -305,6 +305,10 @@ namespace Edu.Module.Course ...@@ -305,6 +305,10 @@ namespace Edu.Module.Course
{nameof(RB_Course_ViewModel.B2BBackground),model.B2BBackground }, {nameof(RB_Course_ViewModel.B2BBackground),model.B2BBackground },
{nameof(RB_Course_ViewModel.CourseEmphasis),model.CourseEmphasis }, {nameof(RB_Course_ViewModel.CourseEmphasis),model.CourseEmphasis },
{nameof(RB_Course_ViewModel.ContractInfo),model.ContractInfo }, {nameof(RB_Course_ViewModel.ContractInfo),model.ContractInfo },
{nameof(RB_Course_ViewModel.IsScrollClass),model.IsScrollClass },
{nameof(RB_Course_ViewModel.ScrollMinNum),model.ScrollMinNum },
{nameof(RB_Course_ViewModel.ScrollMaxNum),model.ScrollMaxNum },
{nameof(RB_Course_ViewModel.CourseTimeId),model.CourseTimeId },
}; };
flag = courseRepository.Update(fileds, new WhereHelper(nameof(RB_Course_ViewModel.CourseId), model.CourseId)); flag = courseRepository.Update(fileds, new WhereHelper(nameof(RB_Course_ViewModel.CourseId), model.CourseId));
} }
...@@ -314,6 +318,7 @@ namespace Edu.Module.Course ...@@ -314,6 +318,7 @@ namespace Edu.Module.Course
model.CourseId = newId; model.CourseId = newId;
flag = newId > 0; flag = newId > 0;
} }
courseId = model.CourseId;
if (model.SalePlatList != null && model.SalePlatList.Any(x => x == 4))//上架小程序端,则要同步到小程序 if (model.SalePlatList != null && model.SalePlatList.Any(x => x == 4))//上架小程序端,则要同步到小程序
{ {
int GoodsId = SetMallGoods(model);//新增字段保存返回电商商品ID int GoodsId = SetMallGoods(model);//新增字段保存返回电商商品ID
......
using Edu.Common.Enum;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.Entity.Grade;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Grade;
using Edu.Model.ViewModel.Scroll;
using Edu.Repository.Course;
using Edu.Repository.Grade;
using Edu.Repository.Reserve;
using Edu.Repository.Scroll;
using Edu.Repository.User;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB;
namespace Edu.Module.Course
{
/// <summary>
/// 滚动开班处理类
/// </summary>
public class ScrollClassCommonModule
{
/// <summary>
/// 班级仓储层对象
/// </summary>
private readonly RB_ClassRepository classRepository = new RB_ClassRepository();
/// <summary>
/// 课程仓储层对象
/// </summary>
private readonly RB_CourseRepository courseRepository = new RB_CourseRepository();
#region 滚动开班
/// <summary>
/// 创建当月开班数据
/// </summary>
public void CreateScrollClass(string courseId,int groupId = 100000)
{
string time = DateTime.Now.ToString("yyyy-MM");
DateTime EndOrderTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM") + "-01 23:59:59").AddMonths(1).AddDays(-1);
string OpenTime = DateTime.Now.ToString("yyyyMM") + "01";
int month = DateTime.Now.Month;
var clist = courseRepository.GetCourseListRepository(new RB_Course_ViewModel() { Group_Id = groupId, IsScrollClass = 1, QCourseIds = courseId });
//每个课程当月都会生成一个开班数据
foreach (var item in clist) {
//验证当月是否已创建班级数据
if (classRepository.GetClassListRepository(new RB_Class_ViewModel() { Group_Id = groupId, CouseId = item.CourseId, ClassScrollType = 2 }).Any()) {
continue;
}
#region 生成班级号
string ClassNo = "GD";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()
{
ClassId = 0,
ClassName = month + "月" + item.CourseName + "班",
CouseId = item.CourseId,
Teacher_Id = 0,
Assist_Id = 0,
Group_Id = groupId,
School_Id = 0,
CreateBy = 0,
UpdateBy = 0,
Status = 0,
ClassPersion = 0,
OpenTime = Convert.ToDateTime(time + "-01"),
EndOrderTime = EndOrderTime,
OriginalPrice = 0,
SellPrice = 0,
IsStepPrice = 0,
ClassRoomId = 0,
IsOpenCommission = 0,
CommissionType = 0,
CommissionValue = 0,
ClassHours = (int)item.ClassHours,
ClassStyle = 0,
ClassStatus = Common.Enum.Course.ClassStatusEnum.NonOpenClass,
InnerRemark = "",
OutRemark = "",
CompleteProgress = 0,
ClassType = 0,
DefaultTimeJson = "",
DateJson = "",
EndClassDate = EndOrderTime,
IsDeduction = 0,
IsSubscribe = 0,
Point = 0,
CourseClassType = 0,
StudentNumType = 0,
ClassHourMinute = 0,
ClassNo = ClassNo,
ClassLetterNum = ClassLetterNum,
ClassScrollType = 2,
ScrollMonth = time
};
classRepository.Insert(cmodel);
}
if (string.IsNullOrEmpty(courseId))
{
//清除上个月 没有订单的班级
classRepository.SetLastMonthNotOrderClassDel(groupId);
}
}
/// <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
}
}
using Edu.Common.Enum;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.Entity.Grade;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Grade;
using Edu.Model.ViewModel.Scroll;
using Edu.Repository.Course;
using Edu.Repository.Grade;
using Edu.Repository.Reserve;
using Edu.Repository.Scroll;
using Edu.Repository.User;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB;
namespace Edu.Module.Course
{
/// <summary>
/// 滚动开班处理类
/// </summary>
public class ScrollClassModule
{
/// <summary>
/// 班级仓储层对象
/// </summary>
private readonly RB_ClassRepository classRepository = new RB_ClassRepository();
/// <summary>
/// 账户仓储层
/// </summary>
private readonly RB_AccountRepository accountRepository = new RB_AccountRepository();
/// <summary>
/// 课程仓储层对象
/// </summary>
private readonly RB_CourseRepository courseRepository = new RB_CourseRepository();
/// <summary>
/// 课程章节
/// </summary>
private readonly RB_Course_ChapterRepository course_ChapterRepository = new RB_Course_ChapterRepository();
/// <summary>
/// 班次
/// </summary>
private readonly RB_Scroll_ShiftRepository scroll_ShiftRepository = new RB_Scroll_ShiftRepository();
/// <summary>
/// 排班
/// </summary>
private readonly RB_Scroll_PlanRepository scroll_PlanRepository = new RB_Scroll_PlanRepository();
/// <summary>
/// 预约
/// </summary>
private readonly RB_Scroll_AppointmentRepository scroll_AppointmentRepository = new RB_Scroll_AppointmentRepository();
/// <summary>
/// 上课时段
/// </summary>
private readonly RB_Scroll_CourseTimeRepository scroll_CourseTimeRepository = new RB_Scroll_CourseTimeRepository();
/// <summary>
/// 教室仓储层对象
/// </summary>
private readonly RB_Class_RoomRepository class_RoomRepository = new RB_Class_RoomRepository();
/// <summary>
/// 订单关联
/// </summary>
private readonly RB_Student_OrderGuestRepository student_OrderGuestRepository = new RB_Student_OrderGuestRepository();
/// <summary>
/// 正常上课计划
/// </summary>
private readonly RB_Class_PlanRepository class_PlanRepository = new RB_Class_PlanRepository();
/// <summary>
/// 上课时段
/// </summary>
private readonly RB_Class_TimeRepository class_TimeRepository = new RB_Class_TimeRepository();
/// <summary>
/// 试听课
/// </summary>
private readonly RB_Reserve_ClassRepository reserve_ClassRepository = new RB_Reserve_ClassRepository();
/// <summary>
/// 字典
/// </summary>
private readonly Rb_dictvalueRepository dictvalueRepository = new Rb_dictvalueRepository();
#region 班次
/// <summary>
/// 获取班次列表
/// </summary>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Scroll_Shift_ViewModel> GetScrollShiftList(int group_Id)
{
return scroll_ShiftRepository.GetList(new RB_Scroll_Shift_ViewModel() { Group_Id = group_Id });
}
/// <summary>
/// 新增修改
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public string SetScrollShift(RB_Scroll_Shift_ViewModel dmodel) {
if (dmodel.Id > 0)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Scroll_Shift_ViewModel.Name), dmodel.Name},
{ nameof(RB_Scroll_Shift_ViewModel.StartTime), dmodel.StartTime},
{ nameof(RB_Scroll_Shift_ViewModel.EndTime), dmodel.EndTime},
{ nameof(RB_Scroll_Shift_ViewModel.Color), dmodel.Color},
{ nameof(RB_Scroll_Shift_ViewModel.UpdateBy), dmodel.UpdateBy},
{ nameof(RB_Scroll_Shift_ViewModel.UpdateTime), dmodel.UpdateTime},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_Scroll_Shift_ViewModel.Id),
FiledValue = dmodel.Id,
OperatorEnum =OperatorEnum.Equal
}
};
bool flag = scroll_ShiftRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
else {
bool flag = scroll_ShiftRepository.Insert(dmodel) > 0;
return flag ? "" : "出错了,请联系管理员";
}
}
/// <summary>
/// 删除班次
/// </summary>
/// <param name="ShiftId"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string DelScrollShift(int ShiftId, UserInfo userInfo) {
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Scroll_Shift_ViewModel.Status), 1},
{ nameof(RB_Scroll_Shift_ViewModel.UpdateBy), userInfo.Id},
{ nameof(RB_Scroll_Shift_ViewModel.UpdateTime), DateTime.Now},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_Scroll_Shift_ViewModel.Id),
FiledValue = ShiftId,
OperatorEnum =OperatorEnum.Equal
}
};
bool flag = scroll_ShiftRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
#endregion
#region 排班
/// <summary>
/// 获取排班计划
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public object GetScrollPlanMonthList(RB_Scroll_Plan_ViewModel demodel)
{
List<object> RList = new List<object>();
List<object> RList2 = new List<object>();
//查询所有的老师
var teacherList = accountRepository.GetAccountListExtRepository(new Model.ViewModel.User.RB_Account_ViewModel() { Group_Id = demodel.Group_Id, AccountType = Common.Enum.User.AccountTypeEnum.Teacher, IsSelectLevelNor = 1 });
var list = scroll_PlanRepository.GetList(demodel);
if (list.Any() || teacherList.Any()) {
//查询班次
var shiftList = scroll_ShiftRepository.GetList(new RB_Scroll_Shift_ViewModel() { Group_Id = demodel.Group_Id });
//查询教室
string roomIds = string.Join(",", list.Select(x => x.RoomId).Distinct());
var roomList = class_RoomRepository.GetClassRoomList(new RB_Class_Room_ViewModel() { Group_Id = demodel.Group_Id, QRoomIds = roomIds });
#region 遍历日期
List<DateTime> DateList = new List<DateTime>();
DateTime StartDate = Convert.ToDateTime(demodel.STime);
DateTime EndDate = Convert.ToDateTime(demodel.ETime);
while (true) {
DateList.Add(StartDate);
if (StartDate == EndDate) {
break;
}
StartDate = StartDate.AddDays(1);
}
#endregion
#region 老师
foreach (var item in teacherList) {
List<object> RDateList = new List<object>();
foreach (var qitem in DateList) {
var planModel = list.Where(x => x.AccountId == item.Id && x.Date == qitem).FirstOrDefault();
if (planModel != null)
{
var roomModel = roomList.Where(x => x.RoomId == planModel.RoomId).FirstOrDefault();
var shiftModel = shiftList.Where(x => x.Id == planModel.ShiftId).FirstOrDefault();
RDateList.Add(new
{
Date = qitem.ToString("yyyy-MM-dd"),
qitem.Day,
PlanId = planModel.Id,
planModel.RoomId,
planModel.ShiftId,
RoomName = roomModel?.RoomName ?? "",
RoomSchool = roomModel?.SchoolName ?? "",
ShiftName = shiftModel?.Name ?? "",
Color = shiftModel?.Color ?? "",
});
}
else {
//未设定
RDateList.Add(new
{
Date = qitem.ToString("yyyy-MM-dd"),
qitem.Day,
PlanId = 0,
RoomId = 0,
ShiftId = -1,
RoomName = "",
RoomSchool = "",
ShiftName = "",
Color = ""
});
}
}
RList.Add(new
{
TeacherId = item.Id,
TeacherName = item.AccountName,
RDateList
});
}
#endregion
#region 班次
foreach (var item in shiftList) {
List<object> RDateList = new List<object>();
foreach (var qitem in DateList)
{
int Num = list.Where(x => x.ShiftId == item.Id && x.Date == qitem).Count();
RDateList.Add(new
{
Date = qitem.ToString("yyyy-MM-dd"),
qitem.Day,
Number = Num
});
}
RList2.Add(new
{
ShiftId = item.Id,
ShiftName = item.Name,
RDateList
});
}
//增加休息
List<object> RDateList1 = new List<object>();
foreach (var qitem in DateList)
{
int Num = list.Where(x => x.ShiftId == 0 && x.Date == qitem).Count();
RDateList1.Add(new
{
Date = qitem.ToString("yyyy-MM-dd"),
qitem.Day,
Number = Num
});
}
RList2.Add(new
{
ShiftId = 0,
ShiftName = "休息",
RDateList1
});
#endregion
}
return new {
TeacherList = RList,
ShiftList = RList2
};
}
/// <summary>
/// 新增修改排班
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public string SetScrollPlanInfo(RB_Scroll_Plan_ViewModel demodel)
{
if (demodel.Id > 0)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Scroll_Plan_ViewModel.Date), demodel.Date},
{ nameof(RB_Scroll_Plan_ViewModel.AccountId), demodel.AccountId},
{ nameof(RB_Scroll_Plan_ViewModel.ShiftId), demodel.ShiftId},
{ nameof(RB_Scroll_Plan_ViewModel.RoomId), demodel.RoomId},
{ nameof(RB_Scroll_Plan_ViewModel.UpdateBy), demodel.UpdateBy},
{ nameof(RB_Scroll_Plan_ViewModel.UpdateTime), demodel.UpdateTime},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_Scroll_Plan_ViewModel.Id),
FiledValue = demodel.Id,
OperatorEnum =OperatorEnum.Equal
}
};
bool flag = scroll_PlanRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
else {
bool flag = scroll_PlanRepository.Insert(demodel) > 0;
return flag ? "" : "出错了,请联系管理员";
}
}
#endregion
#region 上课时段
/// <summary>
/// 获取上课时段列表
/// </summary>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Scroll_CourseTime_ViewModel> GetScrollCourseTimeList(int group_Id)
{
var list = scroll_CourseTimeRepository.GetList(new RB_Scroll_CourseTime_ViewModel() { Group_Id = group_Id });
foreach (var item in list) {
item.TimeList = new List<CourseTimeModel>();
if (!string.IsNullOrEmpty(item.Content))
{
item.TimeList = JsonHelper.DeserializeObject<List<CourseTimeModel>>(item.Content);
}
}
return list;
}
/// <summary>
/// 新增修改
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public string SetScrollCourseTime(RB_Scroll_CourseTime_ViewModel dmodel)
{
if (dmodel.Id > 0)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Scroll_CourseTime_ViewModel.Name), dmodel.Name},
{ nameof(RB_Scroll_CourseTime_ViewModel.Content), dmodel.Content},
{ nameof(RB_Scroll_CourseTime_ViewModel.UpdateBy), dmodel.UpdateBy},
{ nameof(RB_Scroll_CourseTime_ViewModel.UpdateTime), dmodel.UpdateTime},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_Scroll_CourseTime_ViewModel.Id),
FiledValue = dmodel.Id,
OperatorEnum =OperatorEnum.Equal
}
};
bool flag = scroll_CourseTimeRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
else
{
bool flag = scroll_CourseTimeRepository.Insert(dmodel) > 0;
return flag ? "" : "出错了,请联系管理员";
}
}
/// <summary>
/// 删除上课时段
/// </summary>
/// <param name="CourseTimeId"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string DelScrollCourseTime(int CourseTimeId, UserInfo userInfo)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Scroll_CourseTime_ViewModel.Status), 1},
{ nameof(RB_Scroll_CourseTime_ViewModel.UpdateBy), userInfo.Id},
{ nameof(RB_Scroll_CourseTime_ViewModel.UpdateTime), DateTime.Now},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_Scroll_CourseTime_ViewModel.Id),
FiledValue = CourseTimeId,
OperatorEnum =OperatorEnum.Equal
}
};
bool flag = scroll_CourseTimeRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
#endregion
#region 预约课程
/// <summary>
/// 获取预约分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Scroll_Appointment_ViewModel> GetAppointPageList(int pageIndex, int pageSize, out long count, RB_Scroll_Appointment_ViewModel demodel)
{
var list = scroll_AppointmentRepository.GetAppointPageList(pageIndex, pageSize, out count, demodel);
if (list.Any()) {
//获取上课时段
string CourseTimeIds = string.Join(",", list.Select(x => x.CourseTimeId).Distinct());
var ctlist = scroll_CourseTimeRepository.GetList(new RB_Scroll_CourseTime_ViewModel() { Group_Id = demodel.Group_Id, CourseTimeIds = CourseTimeIds });
foreach (var item in ctlist)
{
item.TimeList = new List<CourseTimeModel>();
if (!string.IsNullOrEmpty(item.Content))
{
item.TimeList = JsonHelper.DeserializeObject<List<CourseTimeModel>>(item.Content);
}
}
foreach (var item in list)
{
var ctModel = ctlist.Where(x => x.Id == item.CourseTimeId).FirstOrDefault();
item.CourseTimeList = ctModel.TimeList.Where(x => ("," + item.ShiftSort + ",").Contains("," + x.Sort + ",")).ToList();
}
}
return list;
}
#endregion
#region 小程序
/// <summary>
/// 获取预约基本信息
/// </summary>
/// <param name="userInfo"></param>
/// <param name="rmsg"></param>
/// <returns></returns>
public object GetScrollAppointmentBaseInfo(AppletStudentInfo userInfo, out string rmsg) {
rmsg = "";
#region 学生的课程
//获取正在上课的课程
var learnModel = student_OrderGuestRepository.GetStudentLearningCourse(userInfo.AccountId, userInfo.Group_Id);
if (learnModel == null) { rmsg = "未查询有正在学习的课程,无法约课"; return ""; }
//获取课程信息
var courseModel = courseRepository.GetEntity(learnModel.CourseId);
if (courseModel.CourseTimeId <= 0) { rmsg = "课程未关联上课时段"; 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 { rmsg = "上课时段未配置"; return ""; }
//获取课程的章节数量
int MaxChapterNum = courseRepository.GetMaxChapterNum(learnModel.CourseId, userInfo.Group_Id);
if (learnModel.CourseChapterNo >= MaxChapterNum) { rmsg = "课程已上完,无法继续约课"; return ""; }
#endregion
//查询已预约了几次课程
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;
}
//获取提前天数 + 可预约时间 (这个应该走中心 或者 首页接口反) 具体看预约的入口在哪里 根据这个时间 准确抓取首次加载的日期
int AdvanceDay = Convert.ToInt32(dictvalueRepository.GetList(new Model.ViewModel.User.RB_Dictvalue_Extend() { RB_Group_id = userInfo.Group_Id, DictKey = "Scroll_AdvanceDay" }).FirstOrDefault()?.Content ?? "1");
string ScrollETime = dictvalueRepository.GetList(new Model.ViewModel.User.RB_Dictvalue_Extend() { RB_Group_id = userInfo.Group_Id, DictKey = "Scroll_Time" }).FirstOrDefault()?.Content ?? "";
//预约范围
int AppointDay = Convert.ToInt32(dictvalueRepository.GetList(new Model.ViewModel.User.RB_Dictvalue_Extend() { RB_Group_id = userInfo.Group_Id, DictKey = "Scroll_AppointDay" }).FirstOrDefault()?.Content ?? "7");
double NextAppointMinutes = 0;
if (MaxChapterNum > learnModel.CourseChapterNo + AppointNum) {
//查询下一次课的耗时分钟数 前端需要根据这个分钟数
var chapterModel = course_ChapterRepository.GetChapterListRepository(new RB_Course_Chapter_ViewModel() { Group_Id = userInfo.Group_Id, CourseId = learnModel.CourseId, ChapterNo = (learnModel.CourseChapterNo + AppointNum + 1).ToString() }).FirstOrDefault();
NextAppointMinutes = chapterModel?.StudyMinutes ?? 0;
}
return new
{
AccountId = userInfo.Id,
StuId = userInfo.AccountId,
NextSKChapterNo = learnModel.CourseChapterNo + 1,
AppointDate,
AppointNum,
NextAppointChapterNo = learnModel.CourseChapterNo + 1 + AppointNum,
IsNextAppoint = MaxChapterNum > learnModel.CourseChapterNo + AppointNum,
NextAppointMinutes,
MaxChapterNum,
AdvanceDay,
ScrollETime,
AppointDay,
learnModel.CourseId
};
}
/// <summary>
/// 获取可预约老师的列表
/// </summary>
/// <param name="userInfo"></param>
/// <param name="Date"></param>
/// <param name="rmsg"></param>
/// <returns></returns>
public object GetScrollAppointmentTeacherList(AppletStudentInfo userInfo, string Date, int SchoolId, out string rmsg)
{
rmsg = "";
#region 学生的课程
//获取正在上课的课程
var learnModel = student_OrderGuestRepository.GetStudentLearningCourse(userInfo.AccountId, userInfo.Group_Id);
if (learnModel == null) { rmsg = "未查询有正在学习的课程,无法约课";return ""; }
//获取课程信息
var courseModel = courseRepository.GetEntity(learnModel.CourseId);
if (courseModel.CourseTimeId <= 0) { rmsg = "课程未关联上课时段"; 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 { rmsg = "上课时段未配置"; return ""; }
//获取课程的章节数量
int MaxChapterNum = courseRepository.GetMaxChapterNum(learnModel.CourseId, userInfo.Group_Id);
if (learnModel.CourseChapterNo >= MaxChapterNum) { rmsg = "课程已上完,无法继续约课"; return ""; }
#endregion
#region 组装数据
//查询班次
var shiftList = scroll_ShiftRepository.GetList(new RB_Scroll_Shift_ViewModel() { Group_Id = userInfo.Group_Id });
//查询当天可上课的老师
var planList = scroll_PlanRepository.GetTeacherPlanForDay(Date, SchoolId, userInfo.Group_Id);
//再查询这些老师 正常排课 + 试听课安排 需要排除这些课程
var pcList = class_PlanRepository.GetClassPlanModelRepository(new RB_Class_Plan_ViewModel() { Group_Id = userInfo.Group_Id, QClassDateStr = Date });
if (pcList.Any()) {
//查询计划的时间段
string planids = string.Join(",", pcList.Select(x => x.ClassPlanId));
var ctList = class_TimeRepository.GetClassTimeListRepository(new RB_Class_Time_ViewModel() { Group_Id = userInfo.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 = userInfo.Group_Id, StartClassDate = Date, EndClassDate = Date });
//再查询当日已预约情况
var appointList = scroll_AppointmentRepository.GetList(new RB_Scroll_Appointment_ViewModel() { Group_Id = userInfo.Group_Id, StartTime = Date, EntTime = Date });
List<object> RList = new List<object>();
//开始遍历老师了
foreach (var item in planList) {
//查询班次
var shiftModel = shiftList.Where(x => x.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.CourseId, x.ChapterNo, 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 == userInfo.AccountId).Any()) {
z.State = 4;//我预约的
}
z.CourseId = x.Key.CourseId;
z.CourseName = firstModel.CourseName;
z.CourseChapterNo = x.Key.ChapterNo;
z.PeopleNum = x.Count();
z.SortIdentify = x.Key.ShiftSort;
z.Description = string.Join(",", x.Select(q => q.StuName));
});
});
RList.Add(new
{
item.AccountId,
item.TeacherId,
item.TeacherHead,
item.TeacherName,
item.TeacherIntro,
item.RoomId,
item.RoomName,
item.SchoolName,
item.CourseTimeList,
shiftModel.StartTime,
shiftModel.EndTime
});
}
#endregion
return RList;
}
/// <summary>
/// 预约
/// </summary>
/// <param name="demodel"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string SetScrollAppointment(RB_Scroll_Appointment_ViewModel demodel, AppletStudentInfo userInfo)
{
#region 初步验证
int AppointDay = Convert.ToInt32(dictvalueRepository.GetList(new Model.ViewModel.User.RB_Dictvalue_Extend() { RB_Group_id = userInfo.Group_Id, DictKey = "Scroll_AppointDay" }).FirstOrDefault()?.Content ?? "7");
//只能约最近7天的 (包含今日)
if (demodel.Date > DateTime.Now.AddDays(AppointDay - 1)) { return "只能预约最近" + AppointDay + "天课程"; }
//提前天数
int AdvanceDay = Convert.ToInt32(dictvalueRepository.GetList(new Model.ViewModel.User.RB_Dictvalue_Extend() { RB_Group_id = userInfo.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)
{
//可预约的时间 (提前1天时启用)
string ScrollETime = dictvalueRepository.GetList(new Model.ViewModel.User.RB_Dictvalue_Extend() { RB_Group_id = userInfo.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(userInfo.AccountId, userInfo.Group_Id);
int AppointNum = 0;//已预约次数
if (myAppointModel != null) {
if (demodel.Date <= myAppointModel.Date) { return "需预约" + myAppointModel.Date.ToString("yyyy-MM-dd") + "之后的日期"; }
AppointNum = myAppointModel.ScrollMinNum;
}
#endregion
#region 学生的课程
//获取正在上课的课程
var learnModel = student_OrderGuestRepository.GetStudentLearningCourse(userInfo.AccountId, userInfo.Group_Id);
if (learnModel == null) { return "未查询有正在学习的课程,无法约课";}
if (demodel.CourseId != learnModel.CourseId) { return "正在学习的课程不正确"; }
if (learnModel.CourseChapterNo + AppointNum + 1 != demodel.ChapterNo) { return "预约第几次课有误,请刷新后再试"; }
//获取课程信息
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, userInfo.Group_Id);
if (learnModel.CourseChapterNo + AppointNum + 1 > MaxChapterNum) { return "课程已上完,无法继续约课"; }
#endregion
#region 组装排班
string Date = demodel.Date.ToString("yyyy-MM-dd");
//验证当日老师的数据
var planList = scroll_PlanRepository.GetList(new RB_Scroll_Plan_ViewModel() { Group_Id = userInfo.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 = userInfo.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 = userInfo.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 = userInfo.Group_Id, StartClassDate = Date, EndClassDate = Date, TeacherId = demodel.TeacherId });
//再查询当日已预约情况
var appointList = scroll_AppointmentRepository.GetList(new RB_Scroll_Appointment_ViewModel() { Group_Id = userInfo.Group_Id, StartTime = Date, EntTime = Date });
if (appointList.Where(x => x.StuId == userInfo.AccountId).Any()) { return "当日已有预约,无法继续预约"; }
//开始遍历老师了
foreach (var item in planList)
{
//查询班次
var shiftModel = scroll_ShiftRepository.GetList(new RB_Scroll_Shift_ViewModel() { Group_Id = userInfo.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.CourseId, x.ChapterNo, 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 == userInfo.AccountId).Any())
{
z.State = 4;//我预约的
}
z.CourseId = x.Key.CourseId;
z.CourseName = firstModel.CourseName;
z.CourseChapterNo = x.Key.ChapterNo;
z.PeopleNum = x.Count();
});
});
}
#endregion
#region 开始预约
double NextAppointMinutes = 0;
if (MaxChapterNum > learnModel.CourseChapterNo + AppointNum)
{
//查询下一次课的耗时分钟数 前端需要根据这个分钟数
var chapterModel = course_ChapterRepository.GetChapterListRepository(new RB_Course_Chapter_ViewModel() { Group_Id = userInfo.Group_Id, CourseId = learnModel.CourseId, ChapterNo = (learnModel.CourseChapterNo + AppointNum + 1).ToString() }).FirstOrDefault();
NextAppointMinutes = chapterModel?.StudyMinutes ?? 0;
}
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.CourseId != item.CourseId) { return "预约课程不一致"; }
if (demodel.ChapterNo != item.CourseChapterNo) { return "预约课程章节不一致"; }
if (item.PeopleNum + 1 > item.MaxPeopleNum) { return "该时段已预约满,请预约其他时段"; }
}
demodel.CourseEndTime = Convert.ToDateTime(Date + " " + timeList.Max(x => x.EndTime));
//验证都OK了 插入预约数据
bool flag = scroll_AppointmentRepository.Insert(demodel) > 0;
return flag ? "" : "出错了,请联系管理员";
#endregion
}
/// <summary>
/// 取消预约
/// </summary>
/// <param name="appointId"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string CancelAppointment(int appointId, AppletStudentInfo userInfo)
{
var appontModel = scroll_AppointmentRepository.GetEntity(appointId);
if (appontModel == null || appontModel.StuId != userInfo.AccountId) { return "预约不存在"; }
if (appontModel.State != Common.Enum.Course.CourseAppointStateEnum.WaitSure) { return "状态不正确,无法取消"; }
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Scroll_Appointment_ViewModel.State), Common.Enum.Course.CourseAppointStateEnum.Cancel},
{ nameof(RB_Scroll_Appointment_ViewModel.UpdateTime), DateTime.Now},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_Scroll_Appointment_ViewModel.Id),
FiledValue = appointId,
OperatorEnum =OperatorEnum.Equal
}
};
bool flag = scroll_AppointmentRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
#endregion
}
}
...@@ -4,6 +4,7 @@ using System.Collections.Generic; ...@@ -4,6 +4,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using VT.FW.DB.Dapper; using VT.FW.DB.Dapper;
using System;
namespace Edu.Repository.Course namespace Edu.Repository.Course
{ {
...@@ -82,6 +83,10 @@ WHERE 1=1 ...@@ -82,6 +83,10 @@ WHERE 1=1
{ {
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Course_ViewModel.CourseSubject), query.CourseSubject); builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Course_ViewModel.CourseSubject), query.CourseSubject);
} }
if (query.IsScrollClass > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Course_ViewModel.IsScrollClass), query.IsScrollClass);
}
} }
return Get<RB_Course_ViewModel>(builder.ToString(), parameters).ToList(); return Get<RB_Course_ViewModel>(builder.ToString(), parameters).ToList();
} }
...@@ -168,5 +173,18 @@ WHERE 1=1 ...@@ -168,5 +173,18 @@ WHERE 1=1
sql.AppendFormat(" AND a.{0}<>{1} ", nameof(RB_Course_ViewModel.CourseId), courseId); sql.AppendFormat(" AND a.{0}<>{1} ", nameof(RB_Course_ViewModel.CourseId), courseId);
return Get<RB_Course_ViewModel>(sql.ToString()).ToList(); return Get<RB_Course_ViewModel>(sql.ToString()).ToList();
} }
/// <summary>
/// 获取课程的章节数量
/// </summary>
/// <param name="courseId"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public int GetMaxChapterNum(int courseId, int group_Id)
{
string sql = $@"select Count(0) from rb_course_chapter b where b.Group_Id ={group_Id} and b.ParentId=0 and b.`Status`=0 and b.CourseId ={courseId}";
var obj = ExecuteScalar(sql);
return obj != null ? Convert.ToInt32(obj) : 0;
}
} }
} }
...@@ -73,6 +73,14 @@ WHERE 1=1 ...@@ -73,6 +73,14 @@ WHERE 1=1
{ {
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.Teacher_Id), query.Teacher_Id); builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.Teacher_Id), query.Teacher_Id);
} }
if (query.ClassScrollType > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.ClassScrollType), query.ClassScrollType);
if (query.ClassScrollType == 2) {
//滚动开班 默认查询当月的
builder.AppendFormat(" AND A.{0}='{1}' ", nameof(RB_Class_ViewModel.ScrollMonth), DateTime.Now.ToString("yyyy-MM"));
}
}
} }
return Get<RB_Class_ViewModel>(builder.ToString()).ToList(); return Get<RB_Class_ViewModel>(builder.ToString()).ToList();
} }
...@@ -153,6 +161,15 @@ WHERE 1=1 ...@@ -153,6 +161,15 @@ WHERE 1=1
builder.AppendFormat(" AND D.{0} LIKE @TeacherName ", nameof(RB_Class_ViewModel.TeacherName)); builder.AppendFormat(" AND D.{0} LIKE @TeacherName ", nameof(RB_Class_ViewModel.TeacherName));
parameters.Add("TeacherName", "%" + query.TeacherName.Trim() + "%"); parameters.Add("TeacherName", "%" + query.TeacherName.Trim() + "%");
} }
if (query.ClassScrollType > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.ClassScrollType), query.ClassScrollType);
if (query.ClassScrollType == 2)
{
//滚动开班 默认查询当月的
builder.AppendFormat(" AND A.{0}='{1}' ", nameof(RB_Class_ViewModel.ScrollMonth), DateTime.Now.ToString("yyyy-MM"));
}
}
} }
return Get<RB_Class_ViewModel>(builder.ToString(), parameters).ToList(); return Get<RB_Class_ViewModel>(builder.ToString(), parameters).ToList();
} }
...@@ -195,6 +212,15 @@ WHERE 1=1 ...@@ -195,6 +212,15 @@ WHERE 1=1
{ {
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.ClassStatus), (int)query.ClassStatus); builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.ClassStatus), (int)query.ClassStatus);
} }
if (query.ClassScrollType > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.ClassScrollType), query.ClassScrollType);
if (query.ClassScrollType == 2)
{
//滚动开班 默认查询当月的
builder.AppendFormat(" AND A.{0}='{1}' ", nameof(RB_Class_ViewModel.ScrollMonth), DateTime.Now.ToString("yyyy-MM"));
}
}
} }
return Get<RB_Class_ViewModel>(builder.ToString()).ToList(); return Get<RB_Class_ViewModel>(builder.ToString()).ToList();
} }
...@@ -296,6 +322,15 @@ WHERE 1=1 ...@@ -296,6 +322,15 @@ WHERE 1=1
{ {
builder.AppendFormat(" AND B.{0}={1} ", nameof(RB_Class_ViewModel.CourseSubject), query.CourseSubject); builder.AppendFormat(" AND B.{0}={1} ", nameof(RB_Class_ViewModel.CourseSubject), query.CourseSubject);
} }
if (query.ClassScrollType > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.ClassScrollType), query.ClassScrollType);
if (query.ClassScrollType == 2)
{
//滚动开班 默认查询当月的
builder.AppendFormat(" AND A.{0}='{1}' ", nameof(RB_Class_ViewModel.ScrollMonth), DateTime.Now.ToString("yyyy-MM"));
}
}
} }
return GetPage<RB_Class_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList(); return GetPage<RB_Class_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
} }
...@@ -444,6 +479,16 @@ WHERE 1=1 ...@@ -444,6 +479,16 @@ WHERE 1=1
builder.AppendFormat(" AND ({0}) ", str); builder.AppendFormat(" AND ({0}) ", str);
} }
} }
if (query.ClassScrollType > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.ClassScrollType), query.ClassScrollType);
if (query.ClassScrollType == 2)
{
//滚动开班 默认查询当月的
builder.AppendFormat(" AND A.{0}='{1}' ", nameof(RB_Class_ViewModel.ScrollMonth), DateTime.Now.ToString("yyyy-MM"));
}
}
} }
builder.AppendFormat(" order by A.{0} asc", nameof(RB_Class_ViewModel.OpenTime)); builder.AppendFormat(" order by A.{0} asc", nameof(RB_Class_ViewModel.OpenTime));
return GetPage<RB_Class_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList(); return GetPage<RB_Class_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
...@@ -504,7 +549,25 @@ GROUP BY Teacher_Id ...@@ -504,7 +549,25 @@ GROUP BY Teacher_Id
return Get<TeacherClassStatic_ViewModel>(builder.ToString()).ToList(); return Get<TeacherClassStatic_ViewModel>(builder.ToString()).ToList();
} }
/// <summary>
/// 获取上个月 没有订单的滚动班级
/// </summary>
/// <param name="groupId"></param>
/// <returns></returns>
public bool SetLastMonthNotOrderClassDel(int groupId)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
update rb_class AS A set A.Status =1
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.Status), (int)DateStateEnum.Normal);
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.Group_Id), groupId);
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.ClassScrollType), 2);
builder.AppendFormat(" AND A.{0}='{1}' ", nameof(RB_Class_ViewModel.ScrollMonth), DateTime.Now.AddMonths(-1).ToString("yyyy-MM"));//上个月
return Execute(builder.ToString()) > 0;
}
/// <summary> /// <summary>
/// 根据学生id获取教师账户 /// 根据学生id获取教师账户
......
...@@ -236,6 +236,10 @@ WHERE a.`Status`=0 "); ...@@ -236,6 +236,10 @@ WHERE a.`Status`=0 ");
{ {
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.ClassId), query.ClassId); builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.ClassId), query.ClassId);
} }
if (query.TeacherId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.TeacherId), query.TeacherId);
}
if (!string.IsNullOrEmpty(query.QClassDateStr)) if (!string.IsNullOrEmpty(query.QClassDateStr))
{ {
builder.AppendFormat(@" AND DATE_FORMAT(a.ClassDate,'%Y-%m-%d')=DATE_FORMAT('{0}','%Y-%m-%d') ", query.QClassDateStr); builder.AppendFormat(@" AND DATE_FORMAT(a.ClassDate,'%Y-%m-%d')=DATE_FORMAT('{0}','%Y-%m-%d') ", query.QClassDateStr);
......
using Edu.Common.Enum;
using Edu.Model.Entity.Scroll;
using Edu.Model.ViewModel.Scroll;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Scroll
{
/// <summary>
/// 滚动开班预约仓储层
/// </summary>
public class RB_Scroll_AppointmentRepository : BaseRepository<RB_Scroll_Appointment>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Scroll_Appointment_ViewModel> GetList(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 (!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,s.StuName,cou.CourseName,cou.ScrollMinNum,cou.ScrollMaxNum From RB_Scroll_Appointment r
inner join rb_account c on r.AccountId = c.Id
inner join rb_student s on r.StuId = s.StuId
inner join rb_course cou on r.CourseId = cou.CourseId
WHERE {where}
ORDER BY r.Id asc ";
return Get<RB_Scroll_Appointment_ViewModel>(sql, parameters).ToList();
}
/// <summary>
/// 获取我预约的次数
/// </summary>
/// <param name="stuId"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public RB_Scroll_Appointment_ViewModel GetMyAppointmentNum(int stuId, int group_Id)
{
string sql = $@"SELECT MAX(Date) AS Date, COUNT(0) as ScrollMinNum FROM rb_scroll_appointment WHERE `Status` =0 and State <>5 and CourseEndTime >='{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}' and Group_Id ={group_Id} and StuId ={stuId} HAVING COUNT(0) >0";
return Get<RB_Scroll_Appointment_ViewModel>(sql).FirstOrDefault();
}
/// <summary>
/// 获取分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Scroll_Appointment_ViewModel> GetAppointPageList(int pageIndex, int pageSize, out long count, 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,t.TeacherName,t.TeacherHead,s.StuName,cou.CourseName,cou.ScrollMinNum,cou.ScrollMaxNum,cou.CourseTimeId 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
WHERE {where}
ORDER BY r.Id desc ";
return GetPage<RB_Scroll_Appointment_ViewModel>(pageIndex, pageSize, out count, sql, parameters).ToList();
}
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.Scroll;
using Edu.Model.ViewModel.Scroll;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Scroll
{
/// <summary>
/// 滚动开班上课时段仓储层
/// </summary>
public class RB_Scroll_CourseTimeRepository : BaseRepository<RB_Scroll_CourseTime>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Scroll_CourseTime_ViewModel> GetList(RB_Scroll_CourseTime_ViewModel demodel)
{
DynamicParameters parameters = new DynamicParameters();
string where = $@" 1=1 and r.{nameof(RB_Scroll_CourseTime_ViewModel.Status)} =0";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Scroll_CourseTime_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (!string.IsNullOrEmpty(demodel.CourseTimeIds))
{
where += $@" and r.{nameof(RB_Scroll_CourseTime_ViewModel.Id)} in({demodel.CourseTimeIds})";
}
if (!string.IsNullOrEmpty(demodel.Name))
{
where += $@" and r.{nameof(RB_Scroll_CourseTime_ViewModel.Name)} like @Name";
parameters.Add("Name", "%" + demodel.Name + "%");
}
string sql = $@"
SELECT * From RB_Scroll_CourseTime r
WHERE {where}
ORDER BY r.Id asc ";
return Get<RB_Scroll_CourseTime_ViewModel>(sql, parameters).ToList();
}
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.Scroll;
using Edu.Model.ViewModel.Scroll;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Scroll
{
/// <summary>
/// 滚动开班班次仓储层
/// </summary>
public class RB_Scroll_PlanRepository : BaseRepository<RB_Scroll_Plan>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Scroll_Plan_ViewModel> GetList(RB_Scroll_Plan_ViewModel demodel)
{
DynamicParameters parameters = new DynamicParameters();
string where = $@" 1=1 and r.{nameof(RB_Scroll_Plan_ViewModel.Status)} =0";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Scroll_Plan_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.AccountId > 0)
{
where += $@" and r.{nameof(RB_Scroll_Plan_ViewModel.AccountId)} ={demodel.AccountId}";
}
if (!string.IsNullOrEmpty(demodel.STime))
{
where += $@" and r.{nameof(RB_Scroll_Plan_ViewModel.Date)} >='{demodel.STime}'";
}
if (!string.IsNullOrEmpty(demodel.ETime))
{
where += $@" and r.{nameof(RB_Scroll_Plan_ViewModel.Date)} <='{demodel.ETime} 23:59:59'";
}
string sql = $@"
SELECT * From RB_Scroll_Plan r
WHERE {where}
ORDER BY r.Id asc ";
return Get<RB_Scroll_Plan_ViewModel>(sql, parameters).ToList();
}
/// <summary>
/// 获取日期范围老师排课列表
/// </summary>
/// <param name="date"></param>
/// <param name="schoolId"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Scroll_Plan_ViewModel> GetTeacherPlanForDay(string date, int schoolId, int group_Id)
{
string sql = $@"SELECT p.*,a.AccountId as TeacherId,t.TeacherName,t.TeacherHead,t.TeacherIntro,r.RoomName,s.SName as SchoolName FROM rb_scroll_plan p
inner join rb_account a on p.AccountId = a.Id
inner join rb_teacher t on a.AccountId = t.TId
inner join rb_class_room r on p.RoomId = r.RoomId
inner join rb_school s on r.School_Id = s.SId
WHERE p.`Status` =0 and p.Group_Id ={group_Id} and p.Date ='{date}' and p.ShiftId >0";
if (schoolId >= 0) {
sql += $@" and r.School_Id ={schoolId}";
}
return Get<RB_Scroll_Plan_ViewModel>(sql).ToList();
}
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.Scroll;
using Edu.Model.ViewModel.Scroll;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Scroll
{
/// <summary>
/// 滚动开班班次仓储层
/// </summary>
public class RB_Scroll_ShiftRepository : BaseRepository<RB_Scroll_Shift>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Scroll_Shift_ViewModel> GetList(RB_Scroll_Shift_ViewModel demodel)
{
DynamicParameters parameters = new DynamicParameters();
string where = $@" 1=1 and r.{nameof(RB_Scroll_Shift_ViewModel.Status)} =0";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_Scroll_Shift_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.Id > 0)
{
where += $@" and r.{nameof(RB_Scroll_Shift_ViewModel.Id)} ={demodel.Id}";
}
if (!string.IsNullOrEmpty(demodel.Name))
{
where += $@" and r.{nameof(RB_Scroll_Shift_ViewModel.Name)} like @Name";
parameters.Add("Name", "%" + demodel.Name + "%");
}
string sql = $@"
SELECT * From RB_Scroll_Shift r
WHERE {where}
ORDER BY r.Id asc ";
return Get<RB_Scroll_Shift_ViewModel>(sql, parameters).ToList();
}
}
}
...@@ -223,6 +223,22 @@ ORDER BY {(Type == 1 ? "c.OpenTime asc" : "c.OpenTime desc")} LIMIT 1"; ...@@ -223,6 +223,22 @@ ORDER BY {(Type == 1 ? "c.OpenTime asc" : "c.OpenTime desc")} LIMIT 1";
return Get<RB_Student_OrderGuest_ViewModel>(sql).FirstOrDefault(); return Get<RB_Student_OrderGuest_ViewModel>(sql).FirstOrDefault();
} }
/// <summary>
/// 获取正在学习的课程 -最新 兼容滚动开班
/// </summary>
/// <param name="accountId"></param>
/// <param name="group_Id"></param>
/// <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
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}
ORDER BY og.Id asc LIMIT 1";
return Get<RB_Student_OrderGuest_ViewModel>(sql).FirstOrDefault();
}
/// <summary> /// <summary>
/// 获取学生订单关联 /// 获取学生订单关联
/// </summary> /// </summary>
...@@ -551,7 +567,7 @@ LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId"; ...@@ -551,7 +567,7 @@ LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId";
} }
sql += $" order by s.StuId desc)t"; sql += $" order by s.StuId desc)t";
return Get<RB_Student_ViewModel>(sql, parameters).FirstOrDefault(); return Get<RB_Student_ViewModel>(sql, parameters).FirstOrDefault();
} }
/// <summary> /// <summary>
/// 获取学员咨询分页列表 /// 获取学员咨询分页列表
......
...@@ -11,6 +11,7 @@ using Edu.Common.Plugin; ...@@ -11,6 +11,7 @@ using Edu.Common.Plugin;
using Edu.Model.ViewModel.Exam; using Edu.Model.ViewModel.Exam;
using Edu.Model.ViewModel.Grade; using Edu.Model.ViewModel.Grade;
using Edu.Model.ViewModel.LearningGarden; using Edu.Model.ViewModel.LearningGarden;
using Edu.Model.ViewModel.Scroll;
using Edu.Model.ViewModel.User; using Edu.Model.ViewModel.User;
using Edu.Module.Course; using Edu.Module.Course;
using Edu.Module.EduTask; using Edu.Module.EduTask;
...@@ -46,6 +47,14 @@ namespace Edu.WebApi.Controllers.Applet ...@@ -46,6 +47,14 @@ namespace Edu.WebApi.Controllers.Applet
/// 课程处理类对象 /// 课程处理类对象
/// </summary> /// </summary>
private readonly CourseModule courseModule = AOP.AOPHelper.CreateAOPObject<CourseModule>(); private readonly CourseModule courseModule = AOP.AOPHelper.CreateAOPObject<CourseModule>();
/// <summary>
/// 滚动开班
/// </summary>
private readonly ScrollClassModule scrollClassModule = new ScrollClassModule();
/// <summary>
/// 讲师处理类对象
/// </summary>
private readonly TeacherModule teacherModule = AOP.AOPHelper.CreateAOPObject<TeacherModule>();
#region 获取个人中心数据 #region 获取个人中心数据
...@@ -59,13 +68,8 @@ namespace Edu.WebApi.Controllers.Applet ...@@ -59,13 +68,8 @@ namespace Edu.WebApi.Controllers.Applet
{ {
var userInfo = base.AppletUserInfo; var userInfo = base.AppletUserInfo;
var accountModel = accountModule.GetAccountListModule(new RB_Account_ViewModel() { Group_Id = userInfo.Group_Id, Id = userInfo.Id, AccountType = Common.Enum.User.AccountTypeEnum.Student }).FirstOrDefault();
if (accountModel == null)
{
return ApiResult.Failed("账号不存在");
}
//获取学生信息 //获取学生信息
var stuModel = studentModule.GetStudentListModule(new RB_Student_ViewModel() { Group_Id = userInfo.Group_Id, StuId = accountModel.AccountId }).FirstOrDefault(); var stuModel = studentModule.GetStudentListModule(new RB_Student_ViewModel() { Group_Id = userInfo.Group_Id, StuId = userInfo.AccountId }).FirstOrDefault();
if (stuModel == null) if (stuModel == null)
{ {
return ApiResult.Failed("账号不存在"); return ApiResult.Failed("账号不存在");
...@@ -85,7 +89,7 @@ namespace Edu.WebApi.Controllers.Applet ...@@ -85,7 +89,7 @@ namespace Edu.WebApi.Controllers.Applet
Mobile = EnterModel.UserMobile Mobile = EnterModel.UserMobile
}); });
} }
var assistList = studentModule.GetStuAssistListModule(accountModel.AccountId); var assistList = studentModule.GetStuAssistListModule(userInfo.AccountId);
foreach (var item in assistList) foreach (var item in assistList)
{ {
var empModel = accountModule.GetEmployeeInfo(item.AssistId); var empModel = accountModule.GetEmployeeInfo(item.AssistId);
...@@ -100,7 +104,7 @@ namespace Edu.WebApi.Controllers.Applet ...@@ -100,7 +104,7 @@ namespace Edu.WebApi.Controllers.Applet
} }
//获取课程信息(正在学习中的) //获取课程信息(正在学习中的)
object CourseInfo = new object(); object CourseInfo = new object();
var LearningInfo = studentModule.GetLearningCourseInfo(accountModel.AccountId, userInfo.Group_Id); var LearningInfo = studentModule.GetLearningCourseInfo(userInfo.AccountId, userInfo.Group_Id);
if (LearningInfo != null) if (LearningInfo != null)
{ {
//获取课程 //获取课程
...@@ -134,12 +138,12 @@ namespace Edu.WebApi.Controllers.Applet ...@@ -134,12 +138,12 @@ namespace Edu.WebApi.Controllers.Applet
} }
//获取订单合同 //获取订单合同
var orderModel = studentModule.GetStuendOrderNum(accountModel.AccountId, userInfo.Group_Id); var orderModel = studentModule.GetStuendOrderNum(userInfo.AccountId, userInfo.Group_Id);
return ApiResult.Success("", new return ApiResult.Success("", new
{ {
AccountId = userInfo.Id, AccountId = userInfo.Id,
StuId = accountModel.AccountId, StuId = userInfo.AccountId,
stuModel.StuName, stuModel.StuName,
stuModel.StuIcon, stuModel.StuIcon,
stuModel.StuSex, stuModel.StuSex,
...@@ -152,5 +156,191 @@ namespace Edu.WebApi.Controllers.Applet ...@@ -152,5 +156,191 @@ namespace Edu.WebApi.Controllers.Applet
} }
#endregion #endregion
#region 学员预约
/// <summary>
/// 获取学员预约的基本信息
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetScrollAppointmentBaseInfo() {
var userInfo = base.AppletUserInfo;
var Robj = scrollClassModule.GetScrollAppointmentBaseInfo(userInfo, out string Rmsg);
if (Rmsg == "")
{
return ApiResult.Success("", Robj);
}
else
{
return ApiResult.Failed(Rmsg);
}
}
/// <summary>
/// 获取学员可预约老师列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetScrollAppointmentTeacherList() {
var userInfo = base.AppletUserInfo;
string Date = ParmJObj.GetStringValue("Date");
int SchoolId = ParmJObj.GetInt("SchoolId", -1);
if (string.IsNullOrEmpty(Date)) {
return ApiResult.ParamIsNull("请传递日期");
}
Date = Convert.ToDateTime(Date).ToString("yyyy-MM-dd");
var Robj = scrollClassModule.GetScrollAppointmentTeacherList(userInfo, Date, SchoolId, out string Rmsg);
if (Rmsg == "")
{
return ApiResult.Success("", Robj);
}
else {
return ApiResult.Failed(Rmsg);
}
}
/// <summary>
/// 学员预约
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetScrollAppointment() {
var userInfo = base.AppletUserInfo;
RB_Scroll_Appointment_ViewModel demodel = JsonHelper.DeserializeObject<RB_Scroll_Appointment_ViewModel>(base.RequestParm.Msg.ToString());
if (demodel.AccountId <= 0) {
return ApiResult.ParamIsNull("请传递老师账号ID");
}
if (demodel.TeacherId <= 0) {
return ApiResult.ParamIsNull("请传递老师编号ID");
}
if (demodel.Date <= DateTime.Now) {
return ApiResult.ParamIsNull("预约日期有误");
}
if (string.IsNullOrEmpty(demodel.ShiftSort)) {
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.StuId = userInfo.AccountId;
demodel.State = Common.Enum.Course.CourseAppointStateEnum.WaitSure;
demodel.Status = 0;
demodel.Group_Id = userInfo.Group_Id;
demodel.CreateBy = 0;
demodel.CreateTime = DateTime.Now;
demodel.UpdateBy = 0;
demodel.UpdateTime = DateTime.Now;
string msg = scrollClassModule.SetScrollAppointment(demodel, userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 获取枚举列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetCourseAppointStateEnumList()
{
var list = EnumHelper.EnumToList(typeof(Common.Enum.Course.CourseAppointStateEnum));
return ApiResult.Success("", list.Select(x => new
{
x.Name,
x.Id
}));
}
/// <summary>
/// 获取讲师列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetTeacherList()
{
var query = new RB_Teacher_ViewModel()
{
IsQLeave = base.ParmJObj.GetInt("IsQLeave")
};
query.Group_Id = base.AppletUserInfo.Group_Id;
query.School_Id = -1;
var list = teacherModule.GetTeacherListModule(query);
return ApiResult.Success(data: list);
}
/// <summary>
/// 获取我的预约分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetMyAppointPageList() {
var userInfo = base.AppletUserInfo;
ResultPageModel pmodel = JsonHelper.DeserializeObject<ResultPageModel>(base.RequestParm.Msg.ToString());
RB_Scroll_Appointment_ViewModel demodel = JsonHelper.DeserializeObject<RB_Scroll_Appointment_ViewModel>(base.RequestParm.Msg.ToString());
demodel.Group_Id = userInfo.Group_Id;
demodel.StuId = userInfo.AccountId;
var list = scrollClassModule.GetAppointPageList(pmodel.PageIndex, pmodel.PageSize, out long count, demodel);
pmodel.Count = count;
pmodel.PageData = list.Select(x => new
{
x.Id,
Date = x.Date.ToString("yyyy-MM-dd"),
x.AccountId,
x.TeacherId,
x.TeacherName,
x.TeacherHead,
x.StuId,
x.StuName,
x.CourseId,
x.CourseName,
x.ChapterNo,
x.CourseTimeList,
x.State,
StateName = x.State.ToName(),
CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm")
});
return ApiResult.Success("", pmodel);
}
/// <summary>
/// 取消预约
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult CancelAppointment() {
var userInfo = base.AppletUserInfo;
int AppointId = ParmJObj.GetInt("AppointId");
if (AppointId <= 0) {
return ApiResult.ParamIsNull("请传递预约Id");
}
string msg = scrollClassModule.CancelAppointment(AppointId, userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
#endregion
} }
} }
...@@ -55,7 +55,8 @@ namespace Edu.WebApi.Controllers.Course ...@@ -55,7 +55,8 @@ namespace Edu.WebApi.Controllers.Course
TeacherName = base.ParmJObj.GetStringValue("TeacherName"), TeacherName = base.ParmJObj.GetStringValue("TeacherName"),
CourseName = base.ParmJObj.GetStringValue("CourseName"), CourseName = base.ParmJObj.GetStringValue("CourseName"),
ClassNo = base.ParmJObj.GetStringValue("ClassNo"), ClassNo = base.ParmJObj.GetStringValue("ClassNo"),
CourseSubject=base.ParmJObj.GetInt("CourseSubject"), CourseSubject = base.ParmJObj.GetInt("CourseSubject"),
ClassScrollType = base.ParmJObj.GetInt("ClassScrollType", 1)
}; };
query.Group_Id = base.UserInfo.Group_Id; query.Group_Id = base.UserInfo.Group_Id;
List<object> result = new List<object>(); List<object> result = new List<object>();
......
...@@ -38,6 +38,12 @@ namespace Edu.WebApi.Controllers.Course ...@@ -38,6 +38,12 @@ namespace Edu.WebApi.Controllers.Course
/// </summary> /// </summary>
private readonly TrialLessonModule trialLessonModule = AOP.AOPHelper.CreateAOPObject<TrialLessonModule>(); private readonly TrialLessonModule trialLessonModule = AOP.AOPHelper.CreateAOPObject<TrialLessonModule>();
/// <summary>
/// 滚动开班
/// </summary>
private readonly ScrollClassCommonModule scrollClassCommon = new ScrollClassCommonModule();
#region 科目管理 #region 科目管理
/// <summary> /// <summary>
/// 获取课程科目分页列表 /// 获取课程科目分页列表
...@@ -408,6 +414,10 @@ namespace Edu.WebApi.Controllers.Course ...@@ -408,6 +414,10 @@ namespace Edu.WebApi.Controllers.Course
B2BBackground = base.ParmJObj.GetStringValue("B2BBackground"), B2BBackground = base.ParmJObj.GetStringValue("B2BBackground"),
CourseEmphasis = base.ParmJObj.GetStringValue("CourseEmphasis"), CourseEmphasis = base.ParmJObj.GetStringValue("CourseEmphasis"),
ContractInfo=base.ParmJObj.GetStringValue("ContractInfo"), ContractInfo=base.ParmJObj.GetStringValue("ContractInfo"),
IsScrollClass = base.ParmJObj.GetInt("IsScrollClass"),
ScrollMinNum = base.ParmJObj.GetInt("ScrollMinNum"),
ScrollMaxNum = base.ParmJObj.GetInt("ScrollMaxNum"),
CourseTimeId = base.ParmJObj.GetInt("CourseTimeId"),
}; };
try try
{ {
...@@ -438,7 +448,20 @@ namespace Edu.WebApi.Controllers.Course ...@@ -438,7 +448,20 @@ namespace Edu.WebApi.Controllers.Course
extModel.SellPrice = oldModel.SellPrice; extModel.SellPrice = oldModel.SellPrice;
extModel.OriginalPrice = oldModel.OriginalPrice; extModel.OriginalPrice = oldModel.OriginalPrice;
} }
bool flag = courseModule.SetCourseModule(extModel); bool flag = courseModule.SetCourseModule(extModel, out int courseId);
if (flag) {
if (extModel.IsScrollClass == 1) {
try
{
//创建当月虚拟班级
scrollClassCommon.CreateScrollClass(courseId.ToString(), this.UserInfo.Group_Id);
}
catch (Exception ex)
{
LogHelper.Write(ex, "CreateScrollClass失败");
}
}
}
return flag ? ApiResult.Success() : ApiResult.Failed(); return flag ? ApiResult.Success() : ApiResult.Failed();
} }
......
...@@ -52,7 +52,8 @@ namespace Edu.WebApi.Controllers.Course ...@@ -52,7 +52,8 @@ namespace Edu.WebApi.Controllers.Course
Q_CanApply = base.ParmJObj.GetInt("Q_CanApply"), Q_CanApply = base.ParmJObj.GetInt("Q_CanApply"),
JoinStartTime = base.ParmJObj.GetStringValue("JoinStartTime"), JoinStartTime = base.ParmJObj.GetStringValue("JoinStartTime"),
JoinEndTime = base.ParmJObj.GetStringValue("JoinEndTime"), JoinEndTime = base.ParmJObj.GetStringValue("JoinEndTime"),
CourseSubject=base.ParmJObj.GetInt("CourseSubject"), CourseSubject = base.ParmJObj.GetInt("CourseSubject"),
ClassScrollType = base.ParmJObj.GetInt("ClassScrollType", 1)
}; };
dmodel.School_Id = -1; dmodel.School_Id = -1;
var schoolId = base.ParmJObj.GetStringValue("School_Id"); var schoolId = base.ParmJObj.GetStringValue("School_Id");
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Edu.Cache.User;
using Edu.Common.API;
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Grade;
using Edu.Model.ViewModel.Scroll;
using Edu.Model.ViewModel.Sell;
using Edu.Module.Course;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
namespace Edu.WebApi.Controllers.Course
{
[Route("api/[controller]/[action]")]
[ApiExceptionFilter]
[ApiController]
[EnableCors("AllowCors")]
public class ScrollController : BaseController
{
/// <summary>
/// 滚动开班处理类对象
/// </summary>
private readonly ScrollClassModule scrollClassModule = new ScrollClassModule();
#region 班次
/// <summary>
/// 获取班次列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetScrollShiftList() {
var userInfo = base.UserInfo;
var list = scrollClassModule.GetScrollShiftList(userInfo.Group_Id);
return ApiResult.Success("", list.Select(x => new
{
x.Id,
x.Name,
x.StartTime,
x.EndTime,
x.Color,
x.UpdateBy,
UpdateByName = UserReidsCache.GetUserLoginInfo(x.UpdateBy)?.AccountName ?? "",
UpdateTime = x.UpdateTime.ToString("yyyy-MM-dd HH:mm")
}));
}
/// <summary>
/// 新增修改班次
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetScrollShiftInfo() {
var userInfo = base.UserInfo;
RB_Scroll_Shift_ViewModel demodel = JsonHelper.DeserializeObject<RB_Scroll_Shift_ViewModel>(base.RequestParm.Msg.ToString());
if (string.IsNullOrEmpty(demodel.Name)) {
return ApiResult.ParamIsNull("请传递班次名称");
}
if (string.IsNullOrEmpty(demodel.StartTime)) {
return ApiResult.ParamIsNull("请传递开始时间");
}
if (string.IsNullOrEmpty(demodel.EndTime)) {
return ApiResult.ParamIsNull("请传递结束时间");
}
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.SetScrollShift(demodel);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 删除班次
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult DelScrollShiftInfo() {
var userInfo = base.UserInfo;
int ShiftId = ParmJObj.GetInt("ShiftId", 0);
if (ShiftId <= 0) {
return ApiResult.ParamIsNull();
}
string msg = scrollClassModule.DelScrollShift(ShiftId, userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
#endregion
#region 排班
/// <summary>
/// 获取月份排班计划
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetScrollPlanMonthList() {
var userIno = base.UserInfo;
RB_Scroll_Plan_ViewModel demodel = JsonHelper.DeserializeObject<RB_Scroll_Plan_ViewModel>(base.RequestParm.Msg.ToString());
demodel.Group_Id = userIno.Group_Id;
if (string.IsNullOrEmpty(demodel.STime) || string.IsNullOrEmpty(demodel.ETime)) {
return ApiResult.ParamIsNull("请传递开始结束时间");
}
var list = scrollClassModule.GetScrollPlanMonthList(demodel);
return ApiResult.Success("", list);
}
/// <summary>
/// 新增修改排班
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetScrollPlanInfo() {
var userInfo = base.UserInfo;
RB_Scroll_Plan_ViewModel demodel = JsonHelper.DeserializeObject<RB_Scroll_Plan_ViewModel>(base.RequestParm.Msg.ToString());
if (demodel.AccountId <= 0) {
return ApiResult.ParamIsNull("请传递老师ID");
}
if (demodel.ShiftId < 0) {
return ApiResult.ParamIsNull("请选择班次");//0表示休息吧
}
if (demodel.ShiftId > 0 && demodel.RoomId <= 0) {
return ApiResult.ParamIsNull("请传递教室ID");
}
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.SetScrollPlanInfo(demodel);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
#endregion
#region 上课时段
/// <summary>
/// 获取上课时段列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetScrollCourseTimeList()
{
var userInfo = base.UserInfo;
var list = scrollClassModule.GetScrollCourseTimeList(userInfo.Group_Id);
return ApiResult.Success("", list.Select(x => new
{
x.Id,
x.Name,
x.TimeList,
x.UpdateBy,
UpdateByName = UserReidsCache.GetUserLoginInfo(x.UpdateBy)?.AccountName ?? "",
UpdateTime = x.UpdateTime.ToString("yyyy-MM-dd HH:mm")
}));
}
/// <summary>
/// 新增修改
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetScrollCourseTimeInfo()
{
var userInfo = base.UserInfo;
RB_Scroll_CourseTime_ViewModel demodel = JsonHelper.DeserializeObject<RB_Scroll_CourseTime_ViewModel>(base.RequestParm.Msg.ToString());
if (string.IsNullOrEmpty(demodel.Name))
{
return ApiResult.ParamIsNull("请传递时段名称");
}
if (demodel.TimeList == null || !demodel.TimeList.Any())
{
return ApiResult.ParamIsNull("请传递时段");
}
foreach (var item in demodel.TimeList) {
item.Minutes = (int)(Convert.ToDateTime("2020-01-01 " + item.EndTime) - Convert.ToDateTime("2020-01-01 " + item.StartTime)).TotalMinutes;
}
demodel.Content = JsonHelper.Serialize(demodel.TimeList);
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.SetScrollCourseTime(demodel);
if (msg == "")
{
return ApiResult.Success();
}
else
{
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 删除
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult DelScrollCourseTimeInfo()
{
var userInfo = base.UserInfo;
int CourseTimeId = ParmJObj.GetInt("CourseTimeId", 0);
if (CourseTimeId <= 0)
{
return ApiResult.ParamIsNull();
}
string msg = scrollClassModule.DelScrollCourseTime(CourseTimeId, userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else
{
return ApiResult.Failed(msg);
}
}
#endregion
}
}
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