Commit 5243a577 authored by liudong1993's avatar liudong1993

1

parent c2b8a9d2
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Common.Plugin;
namespace Edu.Common.Enum.Course
{
public enum LearningGardenTypeEnum
{
/// <summary>
/// 日语园地
/// </summary>
[EnumField("日语园地")]
Japanese = 1,
/// <summary>
/// 韩语园地
/// </summary>
[EnumField("韩语园地")]
Korean = 2
}
}
......@@ -98,5 +98,10 @@ namespace Edu.Model.Entity.LearningGarden
/// 学校编号
/// </summary>
public int School_Id { get; set; }
/// <summary>
/// 园地类型 1日语 2韩语 枚举列表
/// </summary>
public Common.Enum.Course.LearningGardenTypeEnum GardenType { get; set; }
}
}
......@@ -264,5 +264,25 @@ namespace Edu.Model.ViewModel.User
/// 创建人编号
/// </summary>
public List<int> CreateIds { get; set; }
/// <summary>
/// 课程图标
/// </summary>
public string B2BIcon { get; set; }
/// <summary>
/// 课程背景颜色
/// </summary>
public string B2BBackground { get; set; }
/// <summary>
/// 累计课时
/// </summary>
public decimal TotalHours { get; set; }
/// <summary>
/// 已完成课时
/// </summary>
public decimal CompleteHours { get; set; }
}
}
\ No newline at end of file
......@@ -605,7 +605,7 @@ namespace Edu.Module.Course
SetGoodsSpecificationValue(model);
#endregion
return flag;
}
}
/// <summary>
/// 添加上课计划
......@@ -4788,6 +4788,46 @@ namespace Edu.Module.Course
return planList;
}
/// <summary>
/// 获取最近7天课程回顾
/// </summary>
/// <param name="classId"></param>
/// <param name="day"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public object GetStudyCourseReview(int classId, int day, int group_Id)
{
List<object> RList = new List<object>();
//先获取最近7天上课计划
var planList = class_PlanRepository.GetStudyCourseReview(classId, day, group_Id);
if (planList.Any()) {
//获取上课时间
string planIds = string.Join(",", planList.Select(x => x.ClassPlanId));
var timeList = class_TimeRepository.GetClassTimeListRepository(new RB_Class_Time_ViewModel() { Group_Id = group_Id, QClassPlanIds = planIds });
foreach (var item in planList) {
var tlist = timeList.Where(x => x.ClassPlanId == item.ClassPlanId).ToList();
int Num = 1;
RList.Add(new
{
item.ClassPlanId,
item.ClassDate,
List = tlist.OrderBy(x => x.StartTime).Select(x => new
{
x.ClassTimeId,
Num = Num++,
x.StartTime,
x.EndTime,
x.SuiPai,
x.VideoUrl,
x.InClassTime,
x.ClassOverTime
})
});
}
}
return RList;
}
#endregion
#region 上课反馈记录
......
......@@ -767,7 +767,11 @@ namespace Edu.Module.User
public RB_Student_OrderGuest_ViewModel GetLearningCourseInfo(int accountId, int group_Id)
{
//获取正在学习的课程
return student_OrderGuestRepository.GetLearningCourseInfo(accountId, group_Id);
var model = student_OrderGuestRepository.GetLearningCourseInfo(accountId, group_Id, 1);
if (model == null) {
model = student_OrderGuestRepository.GetLearningCourseInfo(accountId, group_Id, 2);
}
return model;
}
#endregion
......
......@@ -1163,5 +1163,33 @@ group by TeacherId";
return Get<RB_Class_Plan_ViewModel>(sql,null).ToList();
}
/// <summary>
/// 获取最近7天上课计划
/// </summary>
/// <param name="classId"></param>
/// <param name="day"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Class_Plan_ViewModel> GetStudyCourseReview(int classId, int day, int group_Id)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT a.*
FROM rb_class_plan as a
WHERE a.`Status`=0 ");
if (group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.Group_Id), group_Id);
}
if (classId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.ClassId), classId);
}
builder.AppendFormat(@$" And a.ClassDate <='{DateTime.Now.ToString("yyyy-MM-dd")} 23:59:59'");
builder.AppendFormat(@" ORDER BY ClassDate DESC limit " + day);
return Get<RB_Class_Plan_ViewModel>(builder.ToString()).ToList();
}
}
}
......@@ -41,12 +41,15 @@ WHERE 1=1
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_LearningGarden_ViewModel.Group_Id), query.Group_Id);
}
if (query.GardenType > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_LearningGarden_ViewModel.GardenType), (int)query.GardenType);
}
if (!string.IsNullOrEmpty(query.Title))
{
builder.AppendFormat(" AND A.{0} LIKE @Title ", nameof(RB_LearningGarden_ViewModel.Title));
parameters.Add("Title", "%" + query.Title.Trim() + "%");
}
}
builder.AppendFormat(" ORDER BY A.{0} DESC ", nameof(RB_LearningGarden_ViewModel.Id));
return GetPage<RB_LearningGarden_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
......
......@@ -814,7 +814,7 @@ FROM RB_Order_Guest AS A
) AS gc on gc.OrderGuestId=a.Id
where A.Id ={guestId}
";
return Get<RB_Order_Guest_ViewModel>(sql).FirstOrDefault();
return Get<RB_Order_Guest_Extend>(sql).FirstOrDefault();
}
}
......
......@@ -336,7 +336,7 @@ where b.`Status`=0 and b.ClassStatus in(1,2) and a.status=0 and a.Account_Id={
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat($@"
SELECT s.*,sog.GuestId,o.OrderState,cou.CourseName,cou.CourseId,c.ClassName,c.ClassId,c.ClassStatus,sch.SName,sch.SId,t.TeacherName,o.EnterID, if((og.ValidClassHours-og.CompleteHours)<0,0,(og.ValidClassHours-og.CompleteHours)) as SurplusHours
SELECT s.*,sog.GuestId,o.OrderState,cou.CourseName,cou.CourseId,cou.B2BIcon,cou.B2BBackground,c.ClassName,c.ClassId,c.ClassStatus,sch.SName,sch.SId,t.TeacherName,o.EnterID,og.TotalHours,og.CompleteHours, if((og.ValidClassHours-og.CompleteHours)<0,0,(og.ValidClassHours-og.CompleteHours)) as SurplusHours
FROM rb_student as s LEFT JOIN rb_student_orderguest as sog on s.StuId=sog.Student_Id
LEFT JOIN rb_order_guest as og on og.Id=sog.GuestId
LEFT JOIN rb_order as o on og.OrderId=o.OrderId
......@@ -344,7 +344,7 @@ FROM rb_student as s LEFT JOIN rb_student_orderguest as sog on s.StuId=sog.Stude
LEFT JOIN rb_class as c on c.ClassId=o.ClassId
LEFT JOIN rb_school as sch on sch.SId=c.School_Id
LEFT JOIN rb_teacher as t on t.TId=c.Teacher_Id
WHERE o.OrderState=1 and og.`Status`=0 and sog.`Status`=0 and og.GuestState=1 and cou.`Status`=0 and c.`Status`=0 and s.`Status`=0 and s.StuId={Student_Id} and s.Group_Id={Group_Id}");
WHERE o.OrderState=1 and og.`Status`=0 and sog.`Status`=0 and og.GuestState <>2 and cou.`Status`=0 and c.`Status`=0 and s.`Status`=0 and s.StuId={Student_Id} and s.Group_Id={Group_Id}");
return Get<RB_Student_ViewModel>(builder.ToString(), parameters).ToList();
}
......
......@@ -196,7 +196,7 @@ where og.Status =0 and o.Group_Id ={group_Id} and o.OrderState <>3 and o.OrderTy
inner join rb_order o on og.OrderId = o.OrderId
where og.Status =0 and o.Group_Id ={group_Id} and o.OrderState <>3 and o.OrderType =2 and og.Student_Id ={accountId}) as StudyAbroadNum,";
sql += $@"(select count(0) from RB_Student_OrderGuest og
inner join rb_education_contract ec on ec.GuestId = o.GuestId
inner join rb_education_contract ec on ec.GuestId = og.GuestId
inner join rb_order o on og.OrderId = o.OrderId
where og.Status =0 and ec.Group_Id ={group_Id} and ec.Status <>4 and o.OrderState <>3 and o.OrderType =1 and og.Student_Id ={accountId}) as ContractNum";
......@@ -209,14 +209,14 @@ where og.Status =0 and ec.Group_Id ={group_Id} and ec.Status <>4 and o.OrderStat
/// <param name="accountId"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public RB_Student_OrderGuest_ViewModel GetLearningCourseInfo(int accountId, int group_Id)
public RB_Student_OrderGuest_ViewModel GetLearningCourseInfo(int accountId, int group_Id, int Type)
{
string sql = $@"SELECT og.*,o.CourseId FROM rb_student_orderguest og
string sql = $@"SELECT og.*,o.CourseId,c.ClassStatus,c.ClassName FROM rb_student_orderguest og
INNER JOIN rb_order_guest g on og.GuestId = g.Id
INNER JOIN rb_order o on og.OrderId = o.OrderId
INNER JOIN rb_class c on o.ClassId = c.ClassId
WHERE og.Status =0 and g.`Status` =0 and o.Group_Id ={group_Id} and o.OrderState <>3 and o.OrderType =1 and og.Student_Id ={accountId}
ORDER BY c.OpenTime ASC LIMIT 1";
WHERE og.Status =0 and g.`Status` =0 and o.Group_Id ={group_Id} and o.OrderState <>3 and o.OrderType =1 and og.Student_Id ={accountId} and {(Type==1? "c.ClassStatus =2" : "c.ClassStatus <>2")}
ORDER BY {(Type == 1 ? "c.OpenTime asc" : "c.OpenTime desc")} LIMIT 1";
return Get<RB_Student_OrderGuest_ViewModel>(sql).FirstOrDefault();
}
}
......
......@@ -98,11 +98,18 @@ namespace Edu.WebApi.Controllers.Applet
CourseInfo = new
{
State = 1,
TotalHours = guestModel?.TotalHours??0,
CompleteHours = guestModel?.CompleteHours??0,
AbsenceNum = guestModel?.AbsenceNum??0,
LeaveNum = guestModel?.LeaveNum??0,
TotalHours = guestModel?.TotalHours ?? 0,
CompleteHours = guestModel?.CompleteHours ?? 0,
AbsenceNum = guestModel?.AbsenceNum ?? 0,
LeaveNum = guestModel?.LeaveNum ?? 0,
CourseId = courseModel?.CourseId ?? 0,
CourseName = courseModel?.CourseName ?? "",
CourseRate = courseModel?.CourseRate.ToName() ?? "",
B2BIcon = courseModel?.B2BIcon ?? "",
B2BBackground = courseModel?.B2BBackground ?? "",
LearningInfo.ClassStatus,
ClassStatusName = LearningInfo.ClassStatus.ToName(),
LearningInfo.ClassName
};
}
else {
......@@ -125,7 +132,8 @@ namespace Edu.WebApi.Controllers.Applet
orderModel.OrderNum,
orderModel.StudyAbroadNum,
orderModel.ContractNum,
AssistList = assistList
AssistList = RAssistList,
CourseInfo
});
}
......
......@@ -141,12 +141,11 @@ namespace Edu.WebApi.Controllers.APP
requestFrom = Common.Enum.ApiRequestFromEnum.AppletStudent,
uid = model.Id.ToString()
};
string token = WebApiTokenHelper.CreateToken(Common.GlobalKey.JWT_User_Key, eduUserInfo);
//上传配置
var uploadConfig = publicModule.GetFileStoreList(new Model.Public.RB_File_Store() { Group_Id = model.Group_Id, IsDefault = 1 })?.FirstOrDefault();
string token = WebApiTokenHelper.CreateToken(Common.GlobalKey.JWT_User_Key, eduUserInfo);
#region 获取甲鹤小程序端token
//查询用户信息
var umodel = studentModule.GetMemberUserEntityModule(new RB_Member_User_Extend() { TenantId = Convert.ToInt32(Config.JHTenantId), MallBaseId = Convert.ToInt32(Config.JHMallBaseId), Source = 1, OpenId = Config.JHMallUserOpenId });
......@@ -290,11 +289,39 @@ namespace Edu.WebApi.Controllers.APP
requestFrom = Common.Enum.ApiRequestFromEnum.AppletStudent,
uid = model.Id.ToString()
};
string token = WebApiTokenHelper.CreateToken(Common.GlobalKey.JWT_User_Key, eduUserInfo);
//上传配置
var uploadConfig = publicModule.GetFileStoreList(new Model.Public.RB_File_Store() { Group_Id = model.Group_Id, IsDefault = 1 })?.FirstOrDefault();
#region 获取甲鹤小程序端token
//查询用户信息
var umodel = studentModule.GetMemberUserEntityModule(new RB_Member_User_Extend() { TenantId = Convert.ToInt32(Config.JHTenantId), MallBaseId = Convert.ToInt32(Config.JHMallBaseId), Source = 1, OpenId = Config.JHMallUserOpenId });
//if (umodel == null)
//{
// return ApiResult.Failed(message: "用户不存在", new { Error = -1 });
//}
IUserInfoToken mallUserInfo = new ErpTokenUserInfo { uid = umodel.Id.ToString(), requestFrom = Common.Enum.ApiRequestFromEnum.MallMiniProgram };
#region JWT
IDateTimeProvider provider = new UtcDateTimeProvider();
var now = provider.GetNow().AddMinutes(-1);
var unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); // or use JwtValidator.UnixEpoch
var secondsSinceEpoch = Math.Round((now - unixEpoch).TotalSeconds);
var payload = new Dictionary<string, object>
{
{"iat",secondsSinceEpoch },
{"exp",secondsSinceEpoch + Config.JwtExpirTime},
{"mall_userInfo",mallUserInfo }
};
IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
IJsonSerializer serializer = new JsonNetSerializer();
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
string secret = Config.JwtSecretKey;
string mallUserToken = encoder.Encode(payload, secret);
#endregion
#endregion
string token = WebApiTokenHelper.CreateToken(Common.GlobalKey.JWT_User_Key, eduUserInfo);
AppletStudentInfo obj = new AppletStudentInfo
{
Id = model.Id,
......@@ -306,10 +333,14 @@ namespace Edu.WebApi.Controllers.APP
AccountName = model.AccountName,
SchoolName = studentModel.SName,
TeacherName = studentModel.TeacherName,
CourseName = studentModel.CourseName,
StuSex = studentModel.StuSex,
StuBirth = studentModel.StuBirth.HasValue ? studentModel.StuBirth.Value.ToString("yyyy-MM-dd") : "",
Token = token,
GroupLogo = model.GroupLogo,
UserIcon = model.UserIcon,
EnterPhone = Cache.User.UserReidsCache.GetUserLoginInfo(studentModel.EnterID).UserMobile,
MallToken = mallUserToken,
ApiRequestFromEnum = Common.Enum.ApiRequestFromEnum.AppletStudent,
JHMallBaseId = Config.JHMallBaseId,
JHTenantId = Config.JHTenantId,
......
......@@ -227,6 +227,7 @@ namespace Edu.WebApi.Controllers.LearningGarden
extModel.TypeId = "news";
extModel.Group_Id = base.UserInfo.Group_Id;
extModel.Status = DateStateEnum.Normal;
extModel.GardenType = Common.Enum.Course.LearningGardenTypeEnum.Japanese;//默认日语
learningGardenList.Add(extModel);
}
}
......
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