Commit be5366e2 authored by 黄奎's avatar 黄奎

Merge branch 'master' of http://gitlab.oytour.com/Kui2/education

parents 2a936c40 7401e5c7
......@@ -6,8 +6,10 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNet.SignalR.Core" Version="2.4.3" />
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.8" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.8" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
......
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Common.SignalR
{
public class ClassRoomClient
{
public int RoomId { get; set; }
public int RoomName { get; set; }
}
}
using Microsoft.AspNet.SignalR.Hubs;
using Microsoft.AspNetCore.SignalR;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Edu.Common.SignalR
{
/// <summary>
/// websocket消息处理中心
/// </summary>
public class MessageCenterHub : Hub
{
public static IHubContext<MessageCenterHub> GlobalContext { get; private set; }
public static List<RoomConnectionModel> roomConnectionModels = new List<RoomConnectionModel>();
public MessageCenterHub(IHubContext<MessageCenterHub> ctx)
{
GlobalContext = ctx;
}
/// <summary>
/// 注册教室信息
/// </summary>
/// <param name="message"></param>
public void SendRoomAuth(string message)
{
int roomid = int.Parse(message);
Groups.AddToGroupAsync(Context.ConnectionId, $"room_{roomid}");
if (!roomConnectionModels.Where(x => x.RoomId == roomid).Any())
{
roomConnectionModels.Add(new RoomConnectionModel() {
RoomId = roomid,
UnLockUserName = "lock",
ConnectionId = Context.ConnectionId
});
}
SendNoticeRoomStatus();
Clients.Client(Context.ConnectionId).SendAsync("Registed", 1);
}
/// <summary>
/// 教室终端被解锁
/// </summary>
/// <param name="userName"></param>
public void SendUnLockMsg(string userName)
{
if (!string.IsNullOrEmpty(userName))
{
roomConnectionModels.ForEach(x =>
{
if (x.ConnectionId == Context.ConnectionId)
{
x.UnLockUserName = userName;
}
});
SendNoticeRoomStatus();
}
}
/// <summary>
/// 注册监听者信息
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
public async Task RigestLiver(string message)
{
await Groups.AddToGroupAsync(Context.ConnectionId, "LIVER");
await Clients.Group("LIVER").SendAsync("LIVER_HELLO", "LIVER_HELLO");
}
/// <summary>
/// 发送更新指令
/// </summary>
/// <param name="room"></param>
/// <returns></returns>
public async Task SendChangePlanAsync(int room)
{
await Clients.Group($"room_{room}").SendAsync("ChangePlan", " ");
}
/// <summary>
/// 发送拉流录屏命令
/// </summary>
/// <param name="msg"></param>
public async void BeginSaveLiveVideo(string msg)
{
await Clients.Group("LIVER").SendAsync("PULL_CLASSROOM_LIVE", msg);
}
public async void DownSaveLiveVideo(string msg)
{
await Clients.Group("LIVER").SendAsync("CLOSE_PULL_CLASSROOM_LIVE", msg);
}
/// <summary>
/// 监听客户端掉线
/// </summary>
/// <param name="exception"></param>
/// <returns></returns>
public override async Task OnDisconnectedAsync(Exception exception)
{
roomConnectionModels.RemoveAll(x => {
return x.ConnectionId == Context.ConnectionId;
});
SendNoticeRoomStatus();
await base.OnDisconnectedAsync(exception);
}
/// <summary>
/// 注册ERP链接
/// </summary>
/// <param name="msg"></param>
public async void RegistErp(string msg)
{
await Groups.AddToGroupAsync(Context.ConnectionId, "ERP");
await Clients.Group("ERP").SendAsync("RoomStatusChange", JsonConvert.SerializeObject(roomConnectionModels));
}
public async void SendNoticeRoomStatus()
{
await Clients.Group("ERP").SendAsync("RoomStatusChange", JsonConvert.SerializeObject(roomConnectionModels));
}
}
[Serializable]
public class RoomConnectionModel {
public int RoomId { get; set; }
public string UnLockUserName { get; set; }
public string ConnectionId { get; set; }
}
}
......@@ -127,5 +127,9 @@ namespace Edu.Model.ViewModel.Grade
/// </summary>
public int Progress { get; set; }
/// <summary>
/// 课程等级
/// </summary>
public int CourseRate { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.System
{
public class ClassRoomClient
{
public int RoomId { get; set; }
public int RoomName { get; set; }
}
}
......@@ -35,6 +35,8 @@ using Edu.Repository.Exam;
using Edu.Model.ViewModel.Exam;
using Edu.Model.ViewModel.Scroll;
using Edu.Repository.Scroll;
using Edu.Common.SignalR;
using Microsoft.AspNetCore.SignalR;
namespace Edu.Module.Course
{
......@@ -861,7 +863,7 @@ namespace Edu.Module.Course
{
if (flag)
{
flag = SetClassPlanModule(item, user.Id);
flag = SetClassPlanModule(item, user.Id).Result;
}
}
......@@ -1678,13 +1680,14 @@ namespace Edu.Module.Course
/// <param name="extModel"></param>
/// <param name="createBy">操作人</param>
/// <returns></returns>
public virtual bool SetClassPlanModule(RB_Class_Plan_ViewModel extModel, int createBy)
public virtual async Task<bool> SetClassPlanModule(RB_Class_Plan_ViewModel extModel, int createBy)
{
bool flag;
string logContent = "";
var oldPlanModel = new RB_Class_Plan();
if (extModel.ClassPlanId > 0)
{
var oldPlanModel = class_PlanRepository.GetEntity(extModel.ClassPlanId);
oldPlanModel = class_PlanRepository.GetEntity(extModel.ClassPlanId);
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Class_Plan_ViewModel.ClassRoomId),extModel.ClassRoomId },
......@@ -1831,6 +1834,18 @@ namespace Edu.Module.Course
CreateBy = createBy
});
}
if (flag)
{
if (extModel.ClassDate.ToString("yyyyMMdd") == DateTime.Now.ToString("yyyyMMdd"))
{
if (MessageCenterHub.GlobalContext != null)
{
await MessageCenterHub.GlobalContext.Clients.All.SendAsync("ChangePlan", "55555555 ");
}
}
}
return flag;
}
......@@ -1918,6 +1933,25 @@ namespace Edu.Module.Course
return list;
}
/// <summary>
/// 获取班级学员列表
/// </summary>
/// <param name="classId">班级编号</param>
/// <returns></returns>
public List<RB_Order_Guest_ViewModel> GetClassStudentListModuleV2(int ClassTimeId,int type)
{
var orderStudentList = new List<RB_Order_Guest_ViewModel>();
if (type == 0 || type == 1)
{
orderStudentList = order_GuestRepository.GetUnCheckStudentRepository(ClassTimeId);
}
else
{
orderStudentList = order_GuestRepository.GetUnCheckAppointmentStudentRepository(ClassTimeId);
}
return orderStudentList;
}
/// <summary>
/// 根据班级id获取订单学员信息
......@@ -1929,6 +1963,11 @@ namespace Edu.Module.Course
return order_GuestRepository.GetOrderGuestListRepository(model);
}
public int GetStudentOrderGuestIdByClassTimeIDModule(int stuId, int timeId)
{
return class_TimeRepository.GetStudentOrderGuestIdByClassTimeID(stuId,timeId);
}
/// <summary>
/// 根据上课id获取订单学员信息
/// </summary>
......@@ -2045,7 +2084,7 @@ namespace Edu.Module.Course
/// <param name="DropOutRemark"></param>
/// <returns></returns>
[TransactionCallHandler]
public virtual bool AddClassCheckModule(List<RB_Class_Check_ViewModel> list)
public virtual async Task<bool> AddClassCheckModule(List<RB_Class_Check_ViewModel> list)
{
//基础课时分钟数
var BasicMinutes = 0;
......@@ -2502,6 +2541,8 @@ namespace Edu.Module.Course
}
}
}
//通知教室端签到更新
await MessageCenterHub.GlobalContext.Clients.All.SendAsync("UpdateCheckin", "666");
return flag;
}
......@@ -3512,9 +3553,9 @@ namespace Edu.Module.Course
return class_TimeRepository.GetClassTimeByRoomId(RoomId, Group_Id);
}
public List<RB_Class_Time_Extend> GetClassTimeByRoomIdV2(int RoomId, int Group_Id)
public List<RB_Class_Time_Extend> GetClassTimeByRoomIdV2(int RoomId, int Group_Id, int tid)
{
return class_TimeRepository.GetClassTimeByRoomIdV2(RoomId, Group_Id);
return class_TimeRepository.GetClassTimeByRoomIdV2(RoomId, Group_Id,tid);
}
/// <summary>
......
using Edu.Common;
using Edu.Common.Enum;
using Edu.Common.Plugin;
using Edu.Common.SignalR;
using Edu.Model.CacheModel;
using Edu.Model.Entity.Grade;
using Edu.Model.ViewModel.Course;
......@@ -14,12 +15,14 @@ using Edu.Repository.Reserve;
using Edu.Repository.Scroll;
using Edu.Repository.Sell;
using Edu.Repository.User;
using Microsoft.AspNetCore.SignalR;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using VT.FW.DB;
......@@ -2794,7 +2797,7 @@ namespace Edu.Module.Course
/// <param name="date"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string CancelSureAppointment(string AppointIds, int teacherId, string date, string shiftSort, UserInfo userInfo)
public async Task<string> CancelSureAppointmentAsync(string AppointIds, int teacherId, string date, string shiftSort, UserInfo userInfo)
{
bool flag = false;
List<int> appointList = JsonHelper.DeserializeObject<List<int>>("[" + AppointIds + "]");
......@@ -2929,6 +2932,8 @@ namespace Edu.Module.Course
}
}
}
await MessageCenterHub.GlobalContext.Clients.All.SendAsync("ChangePlan", "55555555 ");
}
return "";
}
......@@ -2942,7 +2947,7 @@ namespace Edu.Module.Course
/// <param name="roomId"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string SetScrollRoom(int teacherId, string date, string shiftSort, int roomId, UserInfo userInfo)
public async Task<string> SetScrollRoomAsync(int teacherId, string date, string shiftSort, int roomId, UserInfo userInfo)
{
var appointList = scroll_AppointmentRepository.GetList(new RB_Scroll_Appointment_ViewModel() { Group_Id = userInfo.Group_Id, StartTime = date, EntTime = date, TeacherId = teacherId, ShiftSort = shiftSort });
if (appointList.Any()) {
......@@ -2998,6 +3003,7 @@ namespace Edu.Module.Course
class_CheckRepository.Update(keyValues, wheres);
}
}
await MessageCenterHub.GlobalContext.Clients.All.SendAsync("ChangePlan", "55555555 ");
}
}
return "";
......
......@@ -223,16 +223,28 @@ where a.`Status`=0 and b.ClassStatus<>2 and c.ClassStatus in(1,2) and c.`Status
return Get<RB_Class_Time_Extend>(builder.ToString()).ToList();
}
public List<RB_Class_Time_Extend> GetClassTimeByRoomIdV2(int RoomId, int Group_Id)
public List<RB_Class_Time_Extend> GetClassTimeByRoomIdV2(int RoomId, int Group_Id, int Tid)
{
string sql = "select a.ClassPlanId,c.TeacherName,c.TeacherHead,d.RoomName,b.StartTime,b.EndTime,a.PlanType,(case a.PlanType when 1 then (select CourseName from rb_course where CourseId=e.CouseId) when 2 then (select func_course_rate(CourseGradeId) from rb_scroll_appointment where ClassPlanId=a.ClassPlanId group by ClassPlanId) END) as CourseName,(case a.PlanType when 1 then (select (Count(0)+1) from rb_class_plan where `status`=0 and ClassId=a.ClassId and TO_Days(ClassDate)<TO_Days(a.ClassDate)) when 2 then (select CourseGradeNo from rb_scroll_appointment where ClassPlanId=a.ClassPlanId group by ClassPlanId) end) as Progress from rb_class_plan a left join rb_class_time b on a.ClassPlanId=b.ClassPlanId left join rb_teacher c on a.TeacherId=c.TId left join rb_class_room d on a.ClassRoomId = d.RoomId left join rb_class e on a.ClassId=e.ClassId where TO_Days(a.ClassDate)=TO_Days(now()) and c.TId is not null and a.`status`=0 and b.EndTime>=DATE_FORMAT(now(),'%H:%i') and a.Group_Id=@gid and a.ClassRoomId=@roomId;";
string sql = "select * from (select a.ClassId,b.ClassStatus,a.ClassPlanId,c.TeacherName,b.ClassTimeId,c.TeacherHead,a.TeacherId,d.RoomName,b.StartTime,b.EndTime,a.PlanType,(case a.PlanType when 1 then (select CourseName from rb_course where CourseId=e.CouseId) when 2 then (select func_course_rate(CourseGradeId) from rb_scroll_appointment where ClassPlanId=a.ClassPlanId group by ClassPlanId) END) as CourseName,(case a.PlanType when 1 then (select (Count(0)+1) from rb_class_plan where `status`=0 and ClassId=a.ClassId and TO_Days(ClassDate)<TO_Days(a.ClassDate)) when 2 then (select CourseGradeNo from rb_scroll_appointment where ClassPlanId=a.ClassPlanId group by ClassPlanId) end) as Progress,(case a.PlanType when 1 then (select CourseRate from rb_course where CourseId=e.CouseId) when 2 then (select CourseGradeId from rb_scroll_appointment where ClassPlanId=a.ClassPlanId group by ClassPlanId) END) as CourseRate from rb_class_plan a left join rb_class_time b on a.ClassPlanId=b.ClassPlanId left join rb_teacher c on a.TeacherId=c.TId left join rb_class_room d on a.ClassRoomId = d.RoomId left join rb_class e on a.ClassId=e.ClassId where TO_Days(a.ClassDate)=TO_Days(now()) and c.TId=@tid and a.`status`=0 and b.EndTime>=DATE_FORMAT(now(),'%H:%i') and a.Group_Id=@gid and a.ClassRoomId=@roomId union all select 0 as ClassId,0 as ClassStatus,ReserveClassId as ClassPlanId,b.TeacherName,ReserveClassId as ClassTimeId,b.TeacherHead,a.TeacherId,c.RoomName,a.ClassTime as StartTime,a.EndTime,3 as PlanType,a.ClassContent as CourseName,1 as Progress,1 as CourseRate from rb_reserve_class a left join rb_teacher b on a.TeacherId=b.TId left join rb_class_room c on a.ClassRoomId=c.RoomId where TO_Days(a.ClassDate)=TO_Days(now()) and b.TId=@tid and a.EndTime>=DATE_FORMAT(now(),'%H:%i') and a.`Status`=0 and a.Group_Id=@gid and a.ClassRoomId=@roomId) as aa order by aa.StartTime";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("gid", Group_Id);
parameters.Add("roomId", RoomId);
parameters.Add("tid", Tid);
return Get<RB_Class_Time_Extend>(sql, parameters).ToList();
}
public int GetStudentOrderGuestIdByClassTimeID(int stuId,int timeId)
{
var sql = "select IFNULL(MAX(GuestId),0) as GuestId from rb_student_orderguest a where Student_Id=@stuId and a.GuestId in(select IF(b.PlanType=2,c.GuestId,e.Id) as GuestId from rb_class_time a left join rb_class_plan b on a.ClassPlanId=b.ClassPlanId left join rb_scroll_appointment c on b.ClassPlanId=c.ClassPlanId and b.PlanType=2 left join rb_class d on a.ClassId=d.ClassId and b.PlanType!=2 left join rb_order_guest e on e.ClassId=d.ClassId where ClassTimeId=@timeId)";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("stuId", stuId);
parameters.Add("timeId", timeId);
return Convert.ToInt32(ExecuteScalar(sql, parameters));
}
/// <summary>
/// 获取班级上课时间
......
......@@ -63,6 +63,35 @@ namespace Edu.Repository.Sell
return list;
}
/// <summary>
/// 获取未签到学员
/// </summary>
/// <param name="classTimeId"></param>
/// <returns></returns>
public List<RB_Order_Guest_ViewModel> GetUnCheckStudentRepository(int classTimeId)
{
string sql = "select c.ClassTimeId,b.GuestName,b.Id,b.Sex from rb_class_plan a left join rb_order_guest b on a.ClassId=b.ClassId left join rb_class_time c on a.ClassPlanId=c.ClassPlanId left join rb_class_check d on c.ClassTimeId=d.ClassTimeId and b.Id=d.OrderGuestId where c.ClassTimeId=@classTimeId and d.ClassCheckId is null and b.GuestState in(1,3,4,6,8,9)";
var parameters = new DynamicParameters();
parameters.Add("classTimeId", classTimeId);
return Get<RB_Order_Guest_ViewModel>(sql, parameters).ToList();
}
/// <summary>
/// 获取未签到学员
/// </summary>
/// <param name="classTimeId"></param>
/// <returns></returns>
public List<RB_Order_Guest_ViewModel> GetUnCheckAppointmentStudentRepository(int classTimeId)
{
string sql = "select a.ClassTimeId,e.GuestName,e.Id,e.Sex from rb_class_time a left join rb_scroll_appointment b on a.ClassPlanId=b.ClassPlanId left join rb_student_orderguest c on b.StuId=c.Student_Id left join rb_class_check d on c.GuestId=d.OrderGuestId and a.ClassTimeId = d.ClassTimeId left join rb_order_guest e on c.GuestId=e.Id where a.ClassTimeId=@classTimeId and d.ClassCheckId is null group by b.StuId";
var parameters = new DynamicParameters();
parameters.Add("classTimeId", classTimeId);
return Get<RB_Order_Guest_ViewModel>(sql, parameters).ToList();
}
/// <summary>
/// 获取列表
......
......@@ -918,7 +918,7 @@ namespace Edu.WebApi.Controllers.Course
}
}
}
var flag = classModule.SetClassPlanModule(extModel, base.UserInfo.Id);
var flag = classModule.SetClassPlanModule(extModel, base.UserInfo.Id).Result;
if (flag)
{
classModule.UpdateClassEndDateModule(extModel.ClassId);
......@@ -1194,15 +1194,46 @@ namespace Edu.WebApi.Controllers.Course
CheckStatus = obj.GetInt("CheckStatus"),
ClassDate = obj.GetDateTime("ClassDate"),
ClassRoomId = obj.GetInt("ClassRoomId"),
OrderGuestId = obj.GetInt("OrderGuestId"),
OrderGuestId = obj.GetInt("OrderGuestId",0),
School_Id = obj.GetInt("School_Id"),
StudyNum = obj.GetInt("StudyNum"),
TeacherId = obj.GetInt("TeacherId"),
ClassId = obj.GetInt("classId"),
ClassTimeId = obj.GetInt("ClassTimeId"),
StuId = obj.GetInt("StuId")
});
}
}
//判断当天是否有已签到数据
var checkLogList = classModule.GetClassCheckList(new RB_Class_Check_ViewModel
{
Group_Id = base.UserInfo.Group_Id,
ClassId = list.FirstOrDefault().ClassId,
StartDate = list.FirstOrDefault().ClassDate.ToString("yyyy-MM-dd HH:mm:ss"),
EndDate = list.FirstOrDefault().ClassDate.ToString("yyyy-MM-dd HH:mm:ss"),
ClassTimeId = list.FirstOrDefault().ClassTimeId,
});
#region 验证是否存在学员编号
if (list.Count == 1) {
if (list[0].OrderGuestId == 0)
{
var guestId = classModule.GetStudentOrderGuestIdByClassTimeIDModule(list[0].StuId, list[0].ClassTimeId);
if (guestId == 0)
{
return ApiResult.ParamIsNull(message: "当前课程不是你的上课内容,请联系前台");
}
else
{
list[0].OrderGuestId = guestId;
}
}
if (checkLogList.Where(x => x.OrderGuestId == list[0].OrderGuestId && x.CheckStatus == list[0].CheckStatus).Any())
{
return ApiResult.Success(message: "check_repeat");
}
}
#endregion
if (list == null || !list.Any())
{
return ApiResult.ParamIsNull(message: "请选择签到学员!");
......@@ -1236,15 +1267,7 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.Failed("今日无课程,无须签到");
}
//判断当天是否有已签到数据
var checkLogList = classModule.GetClassCheckList(new RB_Class_Check_ViewModel
{
Group_Id = base.UserInfo.Group_Id,
ClassId = list.FirstOrDefault().ClassId,
StartDate = list.FirstOrDefault().ClassDate.ToString("yyyy-MM-dd HH:mm:ss"),
EndDate = list.FirstOrDefault().ClassDate.ToString("yyyy-MM-dd HH:mm:ss"),
ClassTimeId = list.FirstOrDefault().ClassTimeId,
});
foreach (var item in list)
{
......@@ -1280,12 +1303,12 @@ namespace Edu.WebApi.Controllers.Course
item.Status = 0;
}
}
bool result = classModule.AddClassCheckModule(list);
bool result = classModule.AddClassCheckModule(list).Result;
if (result)
{
classModule.SetClassProcessModule(list.FirstOrDefault().ClassId);
}
return result ? ApiResult.Success() : ApiResult.Failed("签到失败");
return result ? ApiResult.Success(message:"check_success") : ApiResult.Failed("签到失败");
}
/// <summary>
......@@ -1374,7 +1397,7 @@ namespace Edu.WebApi.Controllers.Course
item.Status = 0;
}
}
bool result = classModule.AddClassCheckModule(list);
bool result = classModule.AddClassCheckModule(list).Result;
if (result)
{
classModule.SetClassProcessModule(exModel.ClassId);
......@@ -2334,11 +2357,12 @@ namespace Edu.WebApi.Controllers.Course
public ApiResult GetClassTimeListV2()
{
var ClassRoomId = base.ParmJObj.GetInt("ClassRoomId", 0);
if (ClassRoomId == 0)
var tid = base.ParmJObj.GetInt("Tid", 0);
if (ClassRoomId == 0 || tid == 0)
{
return ApiResult.Failed("请传入教室ID");
return ApiResult.Failed("参数信息错误,请重新传递");
}
var list = classModule.GetClassTimeByRoomIdV2(ClassRoomId, 100000);
var list = classModule.GetClassTimeByRoomIdV2(ClassRoomId, 100000, tid);
if (list == null || !list.Any())
{
return ApiResult.Failed("暂无排课安排");
......@@ -2356,7 +2380,11 @@ namespace Edu.WebApi.Controllers.Course
x.EndTime,
x.PlanType,
x.CourseName,
x.Progress
x.Progress,
x.CourseRate,
x.ClassTimeId,
x.ClassStatus,
x.ClassId
});
return ApiResult.Success(data: result);
......@@ -2582,6 +2610,34 @@ namespace Edu.WebApi.Controllers.Course
var data = classModule.GetClassStudentListModule(classId, schoolId, Group_Id, ClassTimeId);
return ApiResult.Success(data: data);
}
/// <summary>
/// 获取学员列表以及签到状态
/// </summary>
/// <returns></returns>
[HttpPost]
[Microsoft.AspNetCore.Authorization.AllowAnonymous]
public ApiResult GetStudentCheckByClassIdV2()
{
var ClassTimeId = base.ParmJObj.GetInt("ClassTimeId", 0);
var PlanType = base.ParmJObj.GetInt("PlanType", 1);
if (ClassTimeId == 0)
{
return ApiResult.ParamIsNull();
}
var data = classModule.GetClassStudentListModuleV2(ClassTimeId, PlanType) ?? new List<RB_Order_Guest_ViewModel>();
if (data.Any())
{
var result = data.Select(x => new {
x.Id,
x.GuestName,
x.Sex,
x.ClassTimeId
});
return ApiResult.Success(data: result);
}
return ApiResult.Success(data: data);
}
#endregion
#region 老师上课统计
......
......@@ -171,16 +171,6 @@ namespace Edu.WebApi.Controllers.Course
list.ForEach(x => x.RoomPicList = !string.IsNullOrWhiteSpace(x.RoomPic) ? Common.Plugin.JsonHelper.DeserializeObject<List<string>>(x.RoomPic) : new List<string>());
var classTimeList = classModule.GetClassTimeList(new RB_Class_Time_ViewModel
{
Group_Id = base.UserInfo.Group_Id,
School_Id = -1,
});
classTimeList.ForEach(x => x.NewPlanDateTime = System.DateTime.Now.ToString("yyyy-MM-dd ") + x.StartTime);
classTimeList.ForEach(x => x.NewEndPlanDateTime = System.DateTime.Now.ToString("yyyy-MM-dd ") + x.EndTime);
classTimeList.ForEach(x => x.SuiPaiList = !string.IsNullOrWhiteSpace(x.SuiPai) ? Common.Plugin.JsonHelper.DeserializeObject<List<string>>(x.SuiPai) : new List<string>());
List<object> resultList = new List<object>();
foreach (var item in list.GroupBy(x => x.School_Id))
......@@ -192,21 +182,7 @@ namespace Edu.WebApi.Controllers.Course
{
decimal TotalMinutes = 0;
int UseState = 0;
var timeList = classTimeList.Where(x => x.ClassRoomId == roomItem.RoomId).ToList();
if (roomItem.TotalHour > 0)
{
foreach (var itemTime in timeList)
{
TotalMinutes += Convert.ToDecimal(Convert.ToDateTime(itemTime.EndTime).Subtract(Convert.ToDateTime(itemTime.StartTime)).TotalMinutes);
if (UseState == 0)
{
if (Convert.ToDateTime(itemTime.NewPlanDateTime) <= System.DateTime.Now && Convert.ToDateTime(itemTime.NewEndPlanDateTime) >= System.DateTime.Now)
{
UseState = 1;
}
}
}
}
roomList.Add(new
{
......@@ -215,8 +191,9 @@ namespace Edu.WebApi.Controllers.Course
UserRate = ((roomItem.TotalHour > 0) ? ((TotalMinutes / roomItem.TotalHour) * 100) : 0).ToString("f2"),//使用率
roomItem.RoomPic,
roomItem.RoomPicList,
UseState,
TimeList = (timeList != null && timeList.Any()) ? timeList.OrderBy(x => Convert.ToDateTime(x.NewPlanDateTime)).ToList() : new List<RB_Class_Time_ViewModel>(),
roomItem.StartTime,
roomItem.EndTime,
UseState
});
}
resultList.Add(new
......
......@@ -898,7 +898,7 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.ParamIsNull();
}
string msg = scrollClassModule.CancelSureAppointment(AppointIds, TeacherId, Date, ShiftSort, userInfo);
string msg = scrollClassModule.CancelSureAppointmentAsync(AppointIds, TeacherId, Date, ShiftSort, userInfo).Result;
if (msg == "")
{
return ApiResult.Success();
......@@ -956,7 +956,7 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.ParamIsNull();
}
string msg = scrollClassModule.SetScrollRoom(TeacherId, Date, ShiftSort, RoomId, userInfo);
string msg = scrollClassModule.SetScrollRoomAsync(TeacherId, Date, ShiftSort, RoomId, userInfo).Result;
if (msg == "")
{
return ApiResult.Success();
......
......@@ -1492,13 +1492,18 @@ namespace Edu.WebApi.Controllers.QYWeChat
[AllowAnonymous]
public ApiResult SetUserCodeCallBack()
{
var parm = JObject.FromObject(RequestParm.Msg);
var referer = Request.Headers["Origin"].ToString().Replace("http://", "");
if (!string.IsNullOrEmpty(parm.GetStringValue("platment")))
{
referer = parm.GetStringValue("platment") == "class_room_manager" ? "edu.oytour.com" : string.Empty;
}
if (!string.IsNullOrEmpty(referer))
{
var group = groupModule.GetGroupEntityModule(referer);
if (group.GId != 0)
{
var parm = JObject.FromObject(RequestParm.Msg);
var appcode = parm.GetStringValue("appcode");
var code = parm.GetStringValue("code");
......
......@@ -3,6 +3,7 @@ using System.IO;
using System.Text.Encodings.Web;
using System.Text.Unicode;
using System.Threading.Tasks;
using Edu.Common.SignalR;
using Edu.ThirdCore.Message;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
......@@ -40,6 +41,7 @@ namespace Edu.WebApi
options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
options.JsonSerializerOptions.PropertyNamingPolicy = null;
});
services.AddSignalR();
List<string> corsArray = new List<string>()
{
"http://192.168.20.214:8400",
......@@ -86,7 +88,7 @@ namespace Edu.WebApi
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime appLifetime, IOptions<SenparcSetting> senparcSetting, IOptions<SenparcWeixinSetting> senparcWeixinSetting)
{
if (env.IsDevelopment())
......@@ -102,11 +104,14 @@ namespace Edu.WebApi
app.UseCors("AllowCors");
app.UseAuthorization();
//启动信息发送
// Task.Run(() => MessageCore.Init());
Task.Run(() => MessageCore.Init());
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<MessageCenterHub>("/messagecenter");
endpoints.MapControllers();
});
......
{
"ConnectionStrings": {
"DefaultConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=test_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=test_edu3;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnectionPName": "MySql.Data.MySqlClient",
"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",
......

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29519.181
# Visual Studio Version 17
VisualStudioVersion = 17.1.32210.238
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Aop", "Edu.Aop\Edu.Aop.csproj", "{4AB3D35D-FC1D-4CB4-BB7B-0695E239C65B}"
EndProject
......@@ -72,7 +72,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Module.Exam", "Edu.Modu
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Module.Customer", "Edu.Module.Customer\Edu.Module.Customer.csproj", "{11365608-C76C-4CF7-9DBE-78A61A934448}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Edu.Module.Goods", "Edu.Module.Goods\Edu.Module.Goods.csproj", "{A0300F98-1996-47B8-BA22-0D4F10D4A28D}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Module.Goods", "Edu.Module.Goods\Edu.Module.Goods.csproj", "{A0300F98-1996-47B8-BA22-0D4F10D4A28D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
......
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