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
}
}
This diff is collapsed.
...@@ -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>
/// 获取学员咨询分页列表 /// 获取学员咨询分页列表
......
...@@ -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