Commit c23a3c6b authored by 黄奎's avatar 黄奎

新增班级类型

parent e80a6c6f
using System; using Edu.Common.Plugin;
using System.Collections.Generic;
using System.Text;
using Edu.Common.Plugin;
namespace Edu.Common.Enum.Course namespace Edu.Common.Enum.Course
{ {
public enum CourseClassTypeEnum public enum CourseClassTypeEnum
{ {
/// <summary> /// <summary>
/// 一对一外教 /// 一对一外教
/// </summary> /// </summary>
......
...@@ -18,4 +18,28 @@ namespace Edu.Common.Enum.Course ...@@ -18,4 +18,28 @@ namespace Edu.Common.Enum.Course
[EnumField("多人")] [EnumField("多人")]
OneToMany = 2 OneToMany = 2
} }
/// <summary>
/// 班级分类
/// </summary>
public enum ClassCategoryEnum
{
/// <summary>
/// 常规
/// </summary>
[EnumField("常规")]
Normal = 1,
/// <summary>
/// 宣讲
/// </summary>
[EnumField("宣讲")]
Lecture = 2,
/// <summary>
/// 日语角
/// </summary>
[EnumField("日语角")]
JapaneseCorner = 3,
}
} }
...@@ -234,5 +234,10 @@ namespace Edu.Model.Entity.Grade ...@@ -234,5 +234,10 @@ namespace Edu.Model.Entity.Grade
/// 滚动开班月份 /// 滚动开班月份
/// </summary> /// </summary>
public string ScrollMonth { get; set; } public string ScrollMonth { get; set; }
/// <summary>
/// 班级分类
/// </summary>
public ClassCategoryEnum ClassCategory { get; set; }
} }
} }
...@@ -406,7 +406,7 @@ namespace Edu.Module.Course ...@@ -406,7 +406,7 @@ namespace Edu.Module.Course
/// <param name="rowsCount">总条数</param> /// <param name="rowsCount">总条数</param>
/// <param name="query">查询条件</param> /// <param name="query">查询条件</param>
/// <returns></returns> /// <returns></returns>
public List<RB_Class_Log_ViewModel> GetClassLogPageListRepository(int pageIndex, int pageSize, out long rowsCount, RB_Class_Log_ViewModel query) public List<RB_Class_Log_ViewModel> GetClassLogPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Class_Log_ViewModel query)
{ {
return classLogRepository.GetClassLogPageListRepository(pageIndex, pageSize, out rowsCount, query); return classLogRepository.GetClassLogPageListRepository(pageIndex, pageSize, out rowsCount, query);
} }
...@@ -457,6 +457,7 @@ namespace Edu.Module.Course ...@@ -457,6 +457,7 @@ namespace Edu.Module.Course
{ nameof(RB_Class_ViewModel.CourseClassType),model.CourseClassType}, { nameof(RB_Class_ViewModel.CourseClassType),model.CourseClassType},
{ nameof(RB_Class_ViewModel.StudentNumType),model.StudentNumType}, { nameof(RB_Class_ViewModel.StudentNumType),model.StudentNumType},
{ nameof(RB_Class_ViewModel.ClassHourMinute),model.ClassHourMinute}, { nameof(RB_Class_ViewModel.ClassHourMinute),model.ClassHourMinute},
{ nameof(RB_Class_ViewModel.ClassCategory),model.ClassCategory},
}; };
if (oldModel.OpenTime != model.OpenTime || oldModel.ClassType != model.ClassType || string.IsNullOrEmpty(oldModel.ClassNo)) if (oldModel.OpenTime != model.OpenTime || oldModel.ClassType != model.ClassType || string.IsNullOrEmpty(oldModel.ClassNo))
{ {
......
...@@ -383,7 +383,8 @@ WHERE 1=1 ...@@ -383,7 +383,8 @@ WHERE 1=1
"); ");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.Status), 0); builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_ViewModel.Status), 0);
builder.AppendFormat(" AND A.{0} in(1,2) ", nameof(RB_Class_ViewModel.ClassStatus)); builder.AppendFormat(" AND A.{0} in(1,2) ", nameof(RB_Class_ViewModel.ClassStatus));
builder.AppendFormat(" AND B.Saleplat<>'' AND B.SaleState=1 AND B.Status=0 "); //显示的课程
builder.AppendFormat(" AND B.SaleState=1 AND B.Status=0 ");
if (query != null) if (query != null)
{ {
if (query.Group_Id > 0) if (query.Group_Id > 0)
......
using Edu.Common.Enum.System; using Edu.Common.Enum.System;
using Edu.Common.Plugin; using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.Entity.Grade; using Edu.Model.Entity.Grade;
using Edu.Model.ViewModel.Course; using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Grade; using Edu.Model.ViewModel.Grade;
using Edu.Model.ViewModel.Scroll; using Edu.Model.ViewModel.Scroll;
using Edu.Model.ViewModel.Sell; using Edu.Model.ViewModel.Sell;
using Edu.Model.ViewModel.User; using Edu.Model.ViewModel.User;
using Microsoft.Extensions.Logging;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
...@@ -966,7 +968,7 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString ...@@ -966,7 +968,7 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString
List<RB_Employee_Extend> empList = new List<RB_Employee_Extend>(); List<RB_Employee_Extend> empList = new List<RB_Employee_Extend>();
if (list != null && list.Count > 0) if (list != null && list.Count > 0)
{ {
string orderGuestIds = string.Join(",", list.Select(qitem => qitem.OrderGuestId).Distinct()); string orderGuestIds = string.Join(",", list.Where(qitem=>qitem.OrderGuestId>0).Select(qitem => qitem.OrderGuestId).Distinct());
if (!string.IsNullOrEmpty(orderGuestIds)) if (!string.IsNullOrEmpty(orderGuestIds))
{ {
guestList = GetOrderGuestListRepository(orderGuestIds); guestList = GetOrderGuestListRepository(orderGuestIds);
...@@ -999,7 +1001,7 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString ...@@ -999,7 +1001,7 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString
classList = GetClassListRepository(classIds); classList = GetClassListRepository(classIds);
} }
} }
string classLogStr = "";
foreach (var item in list) foreach (var item in list)
{ {
var guestModel = guestList?.FirstOrDefault(qitem => qitem.Id == item.OrderGuestId) ?? new RB_Order_Guest_Extend(); var guestModel = guestList?.FirstOrDefault(qitem => qitem.Id == item.OrderGuestId) ?? new RB_Order_Guest_Extend();
...@@ -1025,6 +1027,10 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString ...@@ -1025,6 +1027,10 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString
} }
else else
{ {
if (!string.IsNullOrEmpty(guestModel?.GuestName ?? ""))
{
classLogStr += string.Format(",新增{0}签到", guestModel?.GuestName ?? "");
}
item.AttendanceMethod = Common.Enum.User.AttendanceMethodEnum.Offline; item.AttendanceMethod = Common.Enum.User.AttendanceMethodEnum.Offline;
item.CheckRemark = "班课签到"; item.CheckRemark = "班课签到";
item.IsCalcTeacFee = 1; item.IsCalcTeacFee = 1;
...@@ -1042,62 +1048,35 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString ...@@ -1042,62 +1048,35 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString
} }
if (flag) if (flag)
{ {
//更新学员完成课时
var completeHours = guestOldFinishHours + currentDeductionHours; var completeHours = guestOldFinishHours + currentDeductionHours;
Dictionary<string, object> orderFileds = new Dictionary<string, object>()
{
{nameof(RB_Order_Guest_ViewModel.CompleteHours),completeHours }
};
var orderModel = orderList?.FirstOrDefault(qitem => qitem.OrderId == guestModel.OrderId);
string LogContent = "";
var shenyuHours = guestModel.TotalHours - completeHours; var shenyuHours = guestModel.TotalHours - completeHours;
var classModel = classList?.FirstOrDefault(qitem => qitem.ClassId == guestModel.ClassId); string LogContent = "";
var sellerInfo = empList?.FirstOrDefault(qitem => qitem.EmployeeId == orderModel.EnterID); var orderModel = orderList?.FirstOrDefault(qitem => qitem.OrderId == guestModel.OrderId);
if (orderModel != null && orderModel.OrderId > 0 && guestModel != null && guestModel.Id > 0)
if (shenyuHours > 0 && shenyuHours <= 12)
{ {
var shengyuMoney = orderModel.PreferPrice - orderModel.Income + orderModel.Refund - orderModel.PlatformTax - orderModel.DiscountMoney - orderModel.LessPrice; //更新学员完成课时
Dictionary<string, object> orderFileds = new Dictionary<string, object>()
{
#region 即将结课提醒 (销售端) {nameof(RB_Order_Guest_ViewModel.CompleteHours),completeHours }
};
var classModel = classList?.FirstOrDefault(qitem => qitem.ClassId == guestModel.ClassId);
var sellerInfo = empList?.FirstOrDefault(qitem => qitem.EmployeeId == orderModel.EnterID);
if (sellerInfo != null && !string.IsNullOrEmpty(sellerInfo?.WorkUserId ?? "")) if (shenyuHours > 0 && shenyuHours <= 12)
{ {
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称 var shengyuMoney = orderModel.PreferPrice - orderModel.Income + orderModel.Refund - orderModel.PlatformTax - orderModel.DiscountMoney - orderModel.LessPrice;
var path = $"/sale/myOrder?OrderId={guestModel.OrderId}";
path = HttpUtility.UrlEncode(path);
string markdownContent = $"`结课预警` 学员即将结课通知\n>**概要信息** \n>学员名称:{guestModel.GuestName}({guestModel.Mobile})\n>剩余课时:<font color='warning'>{shenyuHours}</font>\n>是否续班:<font color='{(orderModel.RenewOrderId > 0 ? "info" : "warning")}'>{(orderModel.RenewOrderId > 0 ? "已续班(" + orderModel.RenewOrderId + ")" : "未续班")}</font>\n>关联单号:{guestModel.OrderId}\n>\n>班级名称:<font>{classModel.ClassName}</font>\n>请点击:[查看详情]({Common.Config.ErpUrl}/autologin?loginId={orderModel.EnterID}&target={path})";
Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel()
{
CategoryId = PushMessageCategoryEnum.SalePeople,
Content = markdownContent,
CoverImg = "",
CreateByName = "系统",
JumpUrl = "",
WorkMsgType = "markdown",
SendTime = DateTime.Now,
SendType = 0,
Title = "学员即将结课通知",
Platform = 5,
ReceiveId = sellerInfo?.WorkUserId
};
pushList.Add(modelWork);
}
#endregion
#region 即将结课提醒 (管理端) #region 即将结课提醒 (销售端)
var queryNotifyManager = GetWorkUserIdByDictRepository("Push_EndClass");
if (queryNotifyManager != null && queryNotifyManager.Count > 0) if (sellerInfo != null && !string.IsNullOrEmpty(sellerInfo?.WorkUserId ?? ""))
{
queryNotifyManager.ForEach(x =>
{ {
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称 // 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
var path = $"/sale/orderStatistics?OrderId={guestModel.OrderId}"; var path = $"/sale/myOrder?OrderId={guestModel.OrderId}";
path = HttpUtility.UrlEncode(path); path = HttpUtility.UrlEncode(path);
string markdownContent = $"`结课预警` 学员即将结课通知\n>**概要信息** \n>学员名称:{guestModel.GuestName}({guestModel.Mobile})\n>剩余课时:<font color='warning'>{shenyuHours}</font>\n>是否续班:<font color='{(orderModel.RenewOrderId > 0 ? "info" : "warning")}'>{(orderModel.RenewOrderId > 0 ? "已续班(" + orderModel.RenewOrderId + ")" : "未续班")}</font>\n>关联单号:{guestModel.OrderId} ({sellerInfo?.EmName ?? ""})\n>\n>班级名称:<font>{classModel.ClassName}</font>\n>请点击:[查看详情]({Common.Config.ErpUrl}/autologin?loginId={x.Id}&target={path})"; string markdownContent = $"`结课预警` 学员即将结课通知\n>**概要信息** \n>学员名称:{guestModel.GuestName}({guestModel.Mobile})\n>剩余课时:<font color='warning'>{shenyuHours}</font>\n>是否续班:<font color='{(orderModel.RenewOrderId > 0 ? "info" : "warning")}'>{(orderModel.RenewOrderId > 0 ? "已续班(" + orderModel.RenewOrderId + ")" : "未续班")}</font>\n>关联单号:{guestModel.OrderId}\n>\n>班级名称:<font>{classModel.ClassName}</font>\n>请点击:[查看详情]({Common.Config.ErpUrl}/autologin?loginId={orderModel.EnterID}&target={path})";
Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel() Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel()
{ {
CategoryId = PushMessageCategoryEnum.SalePeople, CategoryId = PushMessageCategoryEnum.SalePeople,
...@@ -1110,52 +1089,52 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString ...@@ -1110,52 +1089,52 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString
SendType = 0, SendType = 0,
Title = "学员即将结课通知", Title = "学员即将结课通知",
Platform = 5, Platform = 5,
ReceiveId = x.WorkUserId ReceiveId = sellerInfo?.WorkUserId
}; };
pushList.Add(modelWork); pushList.Add(modelWork);
}); }
} #endregion
#endregion
} #region 即将结课提醒 (管理端)
else if (shenyuHours <= 0) var queryNotifyManager = GetWorkUserIdByDictRepository("Push_EndClass");
{ if (queryNotifyManager != null && queryNotifyManager.Count > 0)
var shengyuMoney = orderModel.PreferPrice - orderModel.Income + orderModel.Refund - orderModel.PlatformTax - orderModel.DiscountMoney - orderModel.LessPrice;
#region 即将结课提醒 (销售端)
if (sellerInfo != null && !string.IsNullOrEmpty(sellerInfo?.WorkUserId ?? ""))
{
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
var path = $"/sale/myOrder?OrderId={guestModel.OrderId}";
path = HttpUtility.UrlEncode(path);
string markdownContent = $"`结课通知` 学员已结课通知\n>**概要信息** \n>学员名称:{guestModel.GuestName}({guestModel.Mobile})\n>剩余课时:<font color='warning'>{shenyuHours}</font>\n>是否续班:<font color='{(orderModel.RenewOrderId > 0 ? "info" : "warning")}'>{(orderModel.RenewOrderId > 0 ? "已续班(" + orderModel.RenewOrderId + ")" : "未续班")}</font>\n>关联单号:{guestModel.OrderId}\n>\n>班级名称:<font>{classModel.ClassName}</font>\n>请点击:[查看详情]({Common.Config.ErpUrl}/autologin?loginId={orderModel.EnterID}&target={path})";
Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel()
{ {
CategoryId = PushMessageCategoryEnum.SalePeople, queryNotifyManager.ForEach(x =>
Content = markdownContent, {
CoverImg = "", // 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
CreateByName = "系统", var path = $"/sale/orderStatistics?OrderId={guestModel.OrderId}";
JumpUrl = "", path = HttpUtility.UrlEncode(path);
WorkMsgType = "markdown",
SendTime = DateTime.Now,
SendType = 0,
Title = "学员已结课通知",
Platform = 5,
ReceiveId = sellerInfo?.WorkUserId ?? ""
};
pushList.Add(modelWork);
string markdownContent = $"`结课预警` 学员即将结课通知\n>**概要信息** \n>学员名称:{guestModel.GuestName}({guestModel.Mobile})\n>剩余课时:<font color='warning'>{shenyuHours}</font>\n>是否续班:<font color='{(orderModel.RenewOrderId > 0 ? "info" : "warning")}'>{(orderModel.RenewOrderId > 0 ? "已续班(" + orderModel.RenewOrderId + ")" : "未续班")}</font>\n>关联单号:{guestModel.OrderId} ({sellerInfo?.EmName ?? ""})\n>\n>班级名称:<font>{classModel.ClassName}</font>\n>请点击:[查看详情]({Common.Config.ErpUrl}/autologin?loginId={x.Id}&target={path})";
Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel()
{
CategoryId = PushMessageCategoryEnum.SalePeople,
Content = markdownContent,
CoverImg = "",
CreateByName = "系统",
JumpUrl = "",
WorkMsgType = "markdown",
SendTime = DateTime.Now,
SendType = 0,
Title = "学员即将结课通知",
Platform = 5,
ReceiveId = x.WorkUserId
};
pushList.Add(modelWork);
});
}
#endregion
} }
#endregion else if (shenyuHours <= 0)
#region 即将结课提醒 (销售端)
var queryNotifyManager = GetWorkUserIdByDictRepository("Push_EndClass");
if (queryNotifyManager != null && queryNotifyManager.Count > 0)
{ {
queryNotifyManager.ForEach(x => var shengyuMoney = orderModel.PreferPrice - orderModel.Income + orderModel.Refund - orderModel.PlatformTax - orderModel.DiscountMoney - orderModel.LessPrice;
#region 即将结课提醒 (销售端)
if (sellerInfo != null && !string.IsNullOrEmpty(sellerInfo?.WorkUserId ?? ""))
{ {
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称 // 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
var path = $"/sale/orderStatistics?OrderId={guestModel.OrderId}"; var path = $"/sale/myOrder?OrderId={guestModel.OrderId}";
path = HttpUtility.UrlEncode(path); path = HttpUtility.UrlEncode(path);
string markdownContent = $"`结课通知` 学员已结课通知\n>**概要信息** \n>学员名称:{guestModel.GuestName}({guestModel.Mobile})\n>剩余课时:<font color='warning'>{shenyuHours}</font>\n>是否续班:<font color='{(orderModel.RenewOrderId > 0 ? "info" : "warning")}'>{(orderModel.RenewOrderId > 0 ? "已续班(" + orderModel.RenewOrderId + ")" : "未续班")}</font>\n>关联单号:{guestModel.OrderId} ({sellerInfo?.EmName ?? ""})\n>\n>班级名称:<font>{classModel.ClassName}</font>\n>请点击:[查看详情]({Common.Config.ErpUrl}/autologin?loginId={x.Id}&target={path})"; string markdownContent = $"`结课通知` 学员已结课通知\n>**概要信息** \n>学员名称:{guestModel.GuestName}({guestModel.Mobile})\n>剩余课时:<font color='warning'>{shenyuHours}</font>\n>是否续班:<font color='{(orderModel.RenewOrderId > 0 ? "info" : "warning")}'>{(orderModel.RenewOrderId > 0 ? "已续班(" + orderModel.RenewOrderId + ")" : "未续班")}</font>\n>关联单号:{guestModel.OrderId}\n>\n>班级名称:<font>{classModel.ClassName}</font>\n>请点击:[查看详情]({Common.Config.ErpUrl}/autologin?loginId={orderModel.EnterID}&target={path})";
Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel() Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel()
{ {
CategoryId = PushMessageCategoryEnum.SalePeople, CategoryId = PushMessageCategoryEnum.SalePeople,
...@@ -1168,68 +1147,95 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString ...@@ -1168,68 +1147,95 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString
SendType = 0, SendType = 0,
Title = "学员已结课通知", Title = "学员已结课通知",
Platform = 5, Platform = 5,
ReceiveId = x.WorkUserId ReceiveId = sellerInfo?.WorkUserId ?? ""
}; };
pushList.Add(modelWork); pushList.Add(modelWork);
});
}
#endregion
}
}
#endregion
if (item.CheckStatus == 1) #region 即将结课提醒 (销售端)
{ var queryNotifyManager = GetWorkUserIdByDictRepository("Push_EndClass");
#region 通知缺勤信息 if (queryNotifyManager != null && queryNotifyManager.Count > 0)
{
queryNotifyManager.ForEach(x =>
{
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
var path = $"/sale/orderStatistics?OrderId={guestModel.OrderId}";
path = HttpUtility.UrlEncode(path);
string markdownContent = $"`结课通知` 学员已结课通知\n>**概要信息** \n>学员名称:{guestModel.GuestName}({guestModel.Mobile})\n>剩余课时:<font color='warning'>{shenyuHours}</font>\n>是否续班:<font color='{(orderModel.RenewOrderId > 0 ? "info" : "warning")}'>{(orderModel.RenewOrderId > 0 ? "已续班(" + orderModel.RenewOrderId + ")" : "未续班")}</font>\n>关联单号:{guestModel.OrderId} ({sellerInfo?.EmName ?? ""})\n>\n>班级名称:<font>{classModel.ClassName}</font>\n>请点击:[查看详情]({Common.Config.ErpUrl}/autologin?loginId={x.Id}&target={path})";
Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel()
{
CategoryId = PushMessageCategoryEnum.SalePeople,
Content = markdownContent,
CoverImg = "",
CreateByName = "系统",
JumpUrl = "",
WorkMsgType = "markdown",
SendTime = DateTime.Now,
SendType = 0,
Title = "学员已结课通知",
Platform = 5,
ReceiveId = x.WorkUserId
};
pushList.Add(modelWork);
});
}
#endregion
}
var queryNotifyManager = GetWorkUserIdByDictRepository("Push_Absence"); if (item.CheckStatus == 1)
if (queryNotifyManager != null && queryNotifyManager.Count > 0)
{ {
queryNotifyManager.ForEach(x => #region 通知缺勤信息
var queryNotifyManager = GetWorkUserIdByDictRepository("Push_Absence");
if (queryNotifyManager != null && queryNotifyManager.Count > 0)
{ {
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称 queryNotifyManager.ForEach(x =>
var path = $"/stuMan/studentManage?OrderId={guestModel.OrderId}";
path = HttpUtility.UrlEncode(path);
string markdownContent = $"`缺勤通知` 学员缺勤信息告知\n>**概要信息** \n>学员名称:{guestModel.GuestName}({guestModel.Mobile})\n>缺勤时间:<font color='warning'>{Common.ConvertHelper.FormatDate(item.ClassDate)}</font>\n>关联单号:{guestModel.OrderId}\n>班级名称:<font>{classModel?.ClassName ?? ""}</font>\n>请点击:[查看详情]({Common.Config.ErpUrl}/autologin?loginId={x.Id}&target={path})";
Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel()
{ {
CategoryId = PushMessageCategoryEnum.SalePeople, // 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
Content = markdownContent, var path = $"/stuMan/studentManage?OrderId={guestModel.OrderId}";
CoverImg = "", path = HttpUtility.UrlEncode(path);
CreateByName = "系统", string markdownContent = $"`缺勤通知` 学员缺勤信息告知\n>**概要信息** \n>学员名称:{guestModel.GuestName}({guestModel.Mobile})\n>缺勤时间:<font color='warning'>{Common.ConvertHelper.FormatDate(item.ClassDate)}</font>\n>关联单号:{guestModel.OrderId}\n>班级名称:<font>{classModel?.ClassName ?? ""}</font>\n>请点击:[查看详情]({Common.Config.ErpUrl}/autologin?loginId={x.Id}&target={path})";
JumpUrl = "", Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel()
WorkMsgType = "markdown", {
SendTime = DateTime.Now, CategoryId = PushMessageCategoryEnum.SalePeople,
SendType = 0, Content = markdownContent,
Title = "学员缺勤通知", CoverImg = "",
Platform = 5, CreateByName = "系统",
ReceiveId = x.WorkUserId JumpUrl = "",
}; WorkMsgType = "markdown",
pushList.Add(modelWork); SendTime = DateTime.Now,
SendType = 0,
Title = "学员缺勤通知",
Platform = 5,
ReceiveId = x.WorkUserId
};
pushList.Add(modelWork);
}); });
} }
#endregion #endregion
} }
DynamicParameters guestParamters = new DynamicParameters(); DynamicParameters guestParamters = new DynamicParameters();
string guestSql = "UPDATE RB_Order_Guest SET "; string guestSql = "UPDATE RB_Order_Guest SET ";
int guestIndex = 0; int guestIndex = 0;
foreach (var gItem in orderFileds) foreach (var gItem in orderFileds)
{
if (guestIndex > 0)
{ {
guestSql += ","; if (guestIndex > 0)
{
guestSql += ",";
}
guestSql += string.Format("{0}=@{0} ", gItem.Key);
guestParamters.Add(string.Format("@{0}", gItem.Key), gItem.Value);
guestIndex++;
} }
guestSql += string.Format("{0}=@{0} ", gItem.Key); guestSql += string.Format(" WHERE 1=1 AND Id=@Id ");
guestParamters.Add(string.Format("@{0}", gItem.Key), gItem.Value); guestParamters.Add("@Id", item.OrderGuestId);
guestIndex++;
}
guestSql += string.Format(" WHERE 1=1 AND Id=@Id ");
guestParamters.Add("@Id", item.OrderGuestId);
flag = base.Execute(guestSql, guestParamters) > 0;
flag = base.Execute(guestSql, guestParamters) > 0;
}
if (flag && !string.IsNullOrEmpty(LogContent)) if (flag && !string.IsNullOrEmpty(LogContent))
{ {
AddUserChangeLogRepository(new Model.Entity.Log.RB_User_ChangeLog() AddUserChangeLogRepository(new Model.Entity.Log.RB_User_ChangeLog()
...@@ -1335,6 +1341,20 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString ...@@ -1335,6 +1341,20 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString
new Common.Message.MessageHelper().SendMessage(pushList); new Common.Message.MessageHelper().SendMessage(pushList);
} }
if (flag && !string.IsNullOrEmpty(classLogStr))
{
AddClassLogRepository(new Model.Entity.Log.RB_Class_Log()
{
LogType = Common.Enum.Course.ClassLogTypeEnum.Class,
LogContent = classLogStr,
ClassId = list.FirstOrDefault().ClassId,
CreateBy = list.FirstOrDefault().CreateBy,
CreateTime= DateTime.Now,
Group_Id = list.FirstOrDefault().Group_Id,
School_Id = list.FirstOrDefault().School_Id,
});
}
return flag; return flag;
} }
...@@ -1530,6 +1550,18 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString ...@@ -1530,6 +1550,18 @@ WHERE 1=1 AND A.Status=0 {1} ", builderMakeUp.ToString(), builderWhere.ToString
return flag; return flag;
} }
/// <summary>
/// 添加班级日志
/// </summary>
/// <param name="model"></param>
private void AddClassLogRepository(Model.Entity.Log.RB_Class_Log model)
{
string sql = " INSERT INTO RB_Class_Log(LogType,LogContent,ClassId,CreateBy,CreateTime,Group_Id,School_Id) ";
sql += " VALUES(@LogType,@LogContent,@ClassId,@CreateBy,@CreateTime,@Group_Id,@School_Id) ";
base.Execute(sql, model);
}
/// <summary> /// <summary>
/// 新增日志 /// 新增日志
/// </summary> /// </summary>
......
using Edu.Common.Enum; using Edu.Common.Enum;
using Edu.Model.Entity.Course;
using Edu.Model.Entity.Grade; using Edu.Model.Entity.Grade;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Grade; using Edu.Model.ViewModel.Grade;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
......
...@@ -22,6 +22,7 @@ using Microsoft.AspNetCore.Cors; ...@@ -22,6 +22,7 @@ using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using Spire.Pdf.Exporting.XPS.Schema;
namespace Edu.WebApi.Controllers.Course namespace Edu.WebApi.Controllers.Course
{ {
...@@ -102,6 +103,8 @@ namespace Edu.WebApi.Controllers.Course ...@@ -102,6 +103,8 @@ namespace Edu.WebApi.Controllers.Course
item.TotalPlanNum, item.TotalPlanNum,
item.CourseSubject, item.CourseSubject,
item.CourseSubjectName, item.CourseSubjectName,
item.ClassCategory,
ClassCategoryName = item.ClassCategory.ToName(),
}); });
} }
pageModel.Count = rowsCount; pageModel.Count = rowsCount;
...@@ -244,6 +247,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -244,6 +247,7 @@ namespace Edu.WebApi.Controllers.Course
CourseClassType = (CourseClassTypeEnum)base.ParmJObj.GetInt("CourseClassType"), CourseClassType = (CourseClassTypeEnum)base.ParmJObj.GetInt("CourseClassType"),
StudentNumType = (StudentNumTypeEnum)base.ParmJObj.GetInt("StudentNumType"), StudentNumType = (StudentNumTypeEnum)base.ParmJObj.GetInt("StudentNumType"),
ClassHourMinute = base.ParmJObj.GetInt("ClassHourMinute"), ClassHourMinute = base.ParmJObj.GetInt("ClassHourMinute"),
ClassCategory=(ClassCategoryEnum)base.ParmJObj.GetInt("ClassCategory"),
}; };
extModel.ClassDateList = Common.Plugin.JsonHelper.DeserializeObject<List<string>>(base.ParmJObj.GetStringValue("ClassDateList")); extModel.ClassDateList = Common.Plugin.JsonHelper.DeserializeObject<List<string>>(base.ParmJObj.GetStringValue("ClassDateList"));
...@@ -672,6 +676,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -672,6 +676,7 @@ namespace Edu.WebApi.Controllers.Course
ClassDateList = extModel?.ClassDateList ?? new List<string>(), ClassDateList = extModel?.ClassDateList ?? new List<string>(),
TotalPlanNum = extModel?.TotalPlanNum ?? 0, TotalPlanNum = extModel?.TotalPlanNum ?? 0,
UsePlanNum = extModel?.UsePlanNum ?? 0, UsePlanNum = extModel?.UsePlanNum ?? 0,
ClassCategory= extModel?.ClassCategory??0,
}; };
return ApiResult.Success(data: obj); return ApiResult.Success(data: obj);
} }
...@@ -1296,6 +1301,70 @@ namespace Edu.WebApi.Controllers.Course ...@@ -1296,6 +1301,70 @@ namespace Edu.WebApi.Controllers.Course
return result ? ApiResult.Success(message: "check_success") : ApiResult.Failed("签到失败"); return result ? ApiResult.Success(message: "check_success") : ApiResult.Failed("签到失败");
} }
/// <summary>
/// 讲座和日语角签到
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult AddClassCheckOtherType()
{
int ClassId = base.ParmJObj.GetInt("ClassId");
int ClassPlanId = base.ParmJObj.GetInt("ClassPlanId");
int ClassTimeId = base.ParmJObj.GetInt("ClassTimeId");
if (ClassId <= 0 || ClassPlanId <= 0 || ClassTimeId <= 0)
{
return ApiResult.ParamIsNull(message: "参数不能为空!");
}
var userInfo = base.UserInfo;
var planModel = classModule.GetClassPlanListModule(new RB_Class_Plan_ViewModel() { ClassPlanId = ClassPlanId }).FirstOrDefault();
//判断当天是否有已签到数据
var checkLogList = classModule.GetClassCheckList(new RB_Class_Check_ViewModel
{
Group_Id = userInfo.Group_Id,
ClassId = ClassId,
ClassTimeId = ClassTimeId,
StartDate = planModel.ClassDate.ToString("yyyy-MM-dd HH:mm:ss"),
EndDate = planModel.ClassDate.ToString("yyyy-MM-dd HH:mm:ss"),
});
var classTime = classModule.GetClassTimeListModule(new RB_Class_Time_ViewModel() { ClassId = ClassId, ClassPlanId = ClassPlanId, ClassTimeId = ClassTimeId })?.FirstOrDefault();
List<RB_Class_Check_ViewModel> list = new List<RB_Class_Check_ViewModel>();
list.Add(new RB_Class_Check_ViewModel()
{
CheckStatus = 0,
ClassDate = planModel.ClassDate,
ClassRoomId = planModel.ClassRoomId,
OrderGuestId = 0,
School_Id = 0,
StudyNum = (classTime?.TimeMinute ?? 0),
TeacherId = planModel.TeacherId,
ClassId = ClassId,
ClassTimeId = ClassTimeId,
StuId = 0
});
foreach (var item in list)
{
var signModel = checkLogList?.Where(qitem => qitem.ClassDate.ToString("yyyy-MM-dd") == item.ClassDate.ToString("yyyy-MM-dd") && qitem.ClassId == item.ClassId
&& qitem.ClassTimeId == item.ClassTimeId)?.FirstOrDefault();
if (signModel != null && signModel.ClassCheckId > 0)
{
item.ClassCheckId = signModel.ClassCheckId;
item.Group_Id = signModel.Group_Id;
item.CreateTime = signModel.CreateTime;
item.CreateBy = userInfo.Id;
item.Status = 0;
}
else
{
item.Group_Id = userInfo.Group_Id;
item.CreateTime = System.DateTime.Now;
item.CreateBy = userInfo.Id;
item.Status = 0;
}
}
bool result = classModule.AddClassCheckModule(list).Result;
return result ? ApiResult.Success() : ApiResult.Failed("签到失败");
}
///// <summary> ///// <summary>
///// 视频转码回调 ///// 视频转码回调
///// </summary> ///// </summary>
...@@ -1502,7 +1571,7 @@ namespace Edu.WebApi.Controllers.Course ...@@ -1502,7 +1571,7 @@ namespace Edu.WebApi.Controllers.Course
ClassId = base.ParmJObj.GetInt("ClassId"), ClassId = base.ParmJObj.GetInt("ClassId"),
}; };
query.Group_Id = base.UserInfo.Group_Id; query.Group_Id = base.UserInfo.Group_Id;
var list = classModule.GetClassLogPageListRepository(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query); var list = classModule.GetClassLogPageListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
foreach (var item in list) foreach (var item in list)
{ {
if (item.CreateBy > 0) if (item.CreateBy > 0)
...@@ -1555,6 +1624,25 @@ namespace Edu.WebApi.Controllers.Course ...@@ -1555,6 +1624,25 @@ namespace Edu.WebApi.Controllers.Course
} }
return ApiResult.Success(data: list.OrderBy(qitem => qitem.Id)); return ApiResult.Success(data: list.OrderBy(qitem => qitem.Id));
} }
/// <summary>
/// 获取班级分类枚举列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetClassCategoryList()
{
var list = Common.Plugin.EnumHelper.EnumToList(typeof(ClassCategoryEnum));
if (list != null)
{
list.Insert(0, new EnumItem()
{
Id = 0,
Name = "不限"
});
}
return ApiResult.Success(data: list.OrderBy(qitem => qitem.Id));
}
#endregion #endregion
#region 老师教案 #region 老师教案
......
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