Commit b9fe69b9 authored by liudong1993's avatar liudong1993

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

parents e2208bde a36b4184
......@@ -695,6 +695,18 @@ namespace Edu.Common
}
}
//JHMallUserOpenId
/// <summary>
/// 甲鹤教育固定用户OpenId
/// </summary>
public static string JHMallUserOpenId
{
get
{
return ReadConfigKey("JHMallUserOpenId");
}
}
/// <summary>
/// 甲鹤教育小程序id
......
......@@ -43,6 +43,11 @@ namespace Edu.Common.Enum
/// </summary>
[EnumField("Mall")]
Mall = 7,
/// <summary>
/// MallMiniProgram【生成Token使用】
/// </summary>
[EnumField("MallMiniProgram")]
MallMiniProgram = 8,
/// <summary>
......
......@@ -10,16 +10,34 @@ namespace Edu.Common.Enum.Exam
/// </summary>
public enum ExamTestStatusEnum
{
/// <summary>
/// 未开始
/// </summary>
[EnumField("未开始")]
NotStarted = 1,
/// <summary>
/// 已开始
/// </summary>
[EnumField("已开始")]
FinishStarted = 2,
/// <summary>
/// 已考试
/// </summary>
[EnumField("已考试")]
FinishTest = 1,
FinishTest = 3,
/// <summary>
/// 缺考
/// </summary>
[EnumField("缺考")]
MissedTest = 4,
/// <summary>
/// 未考试
/// 已阅卷
/// </summary>
[EnumField("未考试")]
NotFinishTest = 2,
[EnumField("已阅卷")]
FinishScoring = 5,
}
}
......@@ -103,5 +103,44 @@ namespace Edu.Model.CacheModel
/// 服务人员电话
/// </summary>
public string EnterPhone { get; set; }
/// <summary>
/// 电商-token
/// </summary>
public string MallToken { get; set; }
/// <summary>
/// 电商-JHTenantId
/// </summary>
public string JHTenantId { get; set; }
/// <summary>
/// 电商-JHMallBaseId
/// </summary>
public string JHMallBaseId { get; set; }
/// <summary>
/// 电商-甲鹤用户id
/// </summary>
public int JHMallUserId { get; set; }
/// <summary>
/// 电商-甲鹤用户OpenId
/// </summary>
public string JHMallUserOpenId { get; set; }
/// <summary>
/// 性别
/// </summary>
public int StuSex { get; set; }
/// <summary>
/// 生日
/// </summary>
public string StuBirth { get; set; }
}
}
\ No newline at end of file
......@@ -61,7 +61,7 @@ namespace Edu.Model.Entity.Exam
/// <summary>
/// 删除状态
/// </summary>
public int Status { get; set; }
public Common.Enum.DateStateEnum Status { get; set; }
/// <summary>
/// 组卷类型(1-智能组卷,2-手动组卷,3-智能导入)
......
......@@ -74,7 +74,7 @@ namespace Edu.Model.Entity.Exam
public int Status { get; set; }
/// <summary>
/// 考试状态,0-没考,1-已考
/// 考试状态(见枚举)
/// </summary>
public ExamTestStatusEnum ExamStatus { get; set; }
......@@ -87,5 +87,10 @@ namespace Edu.Model.Entity.Exam
/// 总得分
/// </summary>
public decimal TotalScore { get; set; }
/// <summary>
/// 学员评语
/// </summary>
public string StuComment { get; set; }
}
}
......@@ -58,7 +58,7 @@ namespace Edu.Model.Entity.Exam
/// <summary>
/// 题目得分
/// </summary>
public decimal StundetScore { get; set; }
public decimal StudentScore { get; set; }
/// <summary>
/// 是否阅卷0-否,1-是
......
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Mall
{
/// <summary>
/// 商户用户表实体
/// </summary>
[Serializable]
[DB(ConnectionName = "MallConnection")]
public class RB_Member_User
{
/// <summary>
/// Id
/// </summary>
public int Id
{
get;
set;
}
/// <summary>
/// 用户名称
/// </summary>
public string Name
{
get;
set;
}
/// <summary>
/// 别名
/// </summary>
public string AliasName
{
get;
set;
}
/// <summary>
/// 头像
/// </summary>
public string Photo
{
get;
set;
}
/// <summary>
/// 来源 1微信 2支付宝
/// </summary>
public int? Source
{
get;
set;
}
/// <summary>
/// 唯一识别码
/// </summary>
public string OpenId
{
get;
set;
}
/// <summary>
/// 手机号码
/// </summary>
public string Moblie
{
get;
set;
}
/// <summary>
/// 会员等级 0 普通 根据会员等级表
/// </summary>
public int? MemberGrade
{
get;
set;
}
/// <summary>
/// 订单数量
/// </summary>
public int? OrderNum
{
get;
set;
}
/// <summary>
/// 优惠卷数量
/// </summary>
public int? CouponsNum
{
get;
set;
}
/// <summary>
/// 卡卷数量
/// </summary>
public int? CardVolumeNum
{
get;
set;
}
/// <summary>
/// 余额
/// </summary>
public decimal? Balance
{
get;
set;
}
/// <summary>
/// 积分
/// </summary>
public int? Integral
{
get;
set;
}
/// <summary>
/// 总消费
/// </summary>
public decimal? TotalConsumption { get; set; }
/// <summary>
/// CreateDate
/// </summary>
public DateTime? CreateDate
{
get;
set;
}
/// <summary>
/// 上级 0表示总部
/// </summary>
public int? SuperiorId
{
get;
set;
}
/// <summary>
/// 黑名单 1是 0否
/// </summary>
public int? Blacklist
{
get;
set;
}
/// <summary>
/// 是否是分销商 1是 2否
/// </summary>
public int IsDistributor { get; set; }
/// <summary>
/// 联系方式
/// </summary>
public string ContactWay
{
get;
set;
}
/// <summary>
/// 备注
/// </summary>
public string Remark
{
get;
set;
}
/// <summary>
/// 商户号id
/// </summary>
public int TenantId
{
get;
set;
}
/// <summary>
/// 修改时间
/// </summary>
public DateTime? UpdateDate
{
get;
set;
}
/// <summary>
/// 小程序id
/// </summary>
public int MallBaseId { get; set; }
/// <summary>
/// 秘钥
/// </summary>
public string SecretKey { get; set; }
/// <summary>
/// 成为下线条件
/// </summary>
public int? DownlineCondition { get; set; }
/// <summary>
/// 是否已成为下线 1是 2否
/// </summary>
public int? IsBeDownline { get; set; }
/// <summary>
/// 等待成为上线id
/// </summary>
public int? WaitSuperiorId { get; set; }
/// <summary>
/// 成为下线时间
/// </summary>
public DateTime? BeDownlineDate { get; set; }
public int SmallShopId { get; set; }
/// <summary>
/// 公司毛利利润比例
/// </summary>
public decimal CompanyProfitRate { get; set; }
/// <summary>
/// 职位Id,(1-领队导游)
/// </summary>
public int PostId { get; set; }
/// <summary>
/// 类型
/// </summary>
public int? UserPageType { get; set; }
/// <summary>
/// 2020-10-28号新增 (微信小程序获取的手机号码)
/// </summary>
public string PhoneNum { get; set; }
/// <summary>
/// 是否结算用户,1-是 2020-11-10 Addd By:w
/// </summary>
public int IsSettlement { get; set; }
/// <summary>
/// 教育点数(针对购买直播产品)
/// </summary>
public int PointNum { get; set; }
/// <summary>
/// 教育学校id
/// </summary>
public int EduSchoolId { get; set; }
/// <summary>
/// 是否管理员 1是
/// </summary>
public int IsAdmin { get; set; }
}
}
using Edu.Common.Enum.Question;
using Edu.Common.Enum.Course;
using Edu.Common.Enum.Question;
using System;
using System.Collections.Generic;
using System.Text;
......@@ -36,7 +37,7 @@ namespace Edu.Model.ViewModel.Exam
public string QuestionDesc { get; set; }
/// <summary>
/// 选择类型(1-题库随机,2-题库难易程度)
/// 选择类型(1-题库随机,2-题库难易程度,3-题库按照分类选题)
/// </summary>
public int ChooseType { get; set; }
......@@ -49,6 +50,11 @@ namespace Edu.Model.ViewModel.Exam
/// 难易程度选题【ChooseType=2时使用】
/// </summary>
public List<DifficultyTypeItem> ChooseList { get; set; }
/// <summary>
/// 题目分类列表
/// </summary>
public List<CategoryItem> CategoryList { get; set; }
}
/// <summary>
......@@ -66,4 +72,26 @@ namespace Edu.Model.ViewModel.Exam
/// </summary>
public int ChooseNum { get; set; }
}
/// <summary>
/// 题型分类
/// </summary>
public class CategoryItem
{
/// <summary>
/// 题型分类
/// </summary>
public QuestionCategoryEnum Category { get; set; }
/// <summary>
/// 选择题目数
/// </summary>
public int ChooseNum { get; set; }
/// <summary>
/// 难易程度选题【ChooseType=2时使用】
/// </summary>
public List<DifficultyTypeItem> ChooseList { get; set; }
}
}
......@@ -36,6 +36,16 @@ namespace Edu.Model.ViewModel.Exam
/// </summary>
public string StundetAnswer { get; set; }
/// <summary>
/// 学员得分
/// </summary>
public decimal StudentScore { get; set; }
/// <summary>
/// 听力、阅读理解、完型填空、子项列表
/// </summary>
public List<SubAnswerItem> SubList { get; set; }
/// <summary>
/// 学生答案详情id(关联RB_Examination_StudentDetails表中的Id)
/// </summary>
......@@ -50,5 +60,10 @@ namespace Edu.Model.ViewModel.Exam
/// 知识点
/// </summary>
public List<RB_Question_Point_ViewModel> QuestionPointList { get; set; }
/// <summary>
/// 阅读理解、听力、完型,答案列表
/// </summary>
public List<object> QuestionAnswerList { get; set; }
}
}
using Edu.Model.Entity.Exam;
using Edu.Common.Enum.Exam;
using Edu.Model.Entity.Exam;
using System;
using System.Collections.Generic;
using System.Text;
......@@ -46,9 +47,9 @@ namespace Edu.Model.ViewModel.Exam
public int GuestId { get; set; }
/// <summary>
/// 考试状态,0-没考,1-已考(查询条件的时候,1-未开始,2-已开始,3-已缺考,4-已完成)
/// 考试状态(见枚举)
/// </summary>
public int ExamStatus { get; set; }
public ExamTestStatusEnum ExamStatus { get; set; }
/// <summary>
/// 考试状态
......@@ -70,5 +71,30 @@ namespace Edu.Model.ViewModel.Exam
return list;
}
}
/// <summary>
/// 学员考试表编号
/// </summary>
public int Exam_Student_Id { get; set; }
/// <summary>
/// 账号编号
/// </summary>
public string QAccountIds { get; set; }
/// <summary>
/// 查询考试状态【1-未开始,2-进行中,3-已结束】
/// </summary>
public int QTestStatus { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public string QStartTime { get; set; }
/// <summary>
/// 结束试卷
/// </summary>
public string QEndTime { get; set; }
}
}
......@@ -37,5 +37,14 @@ namespace Edu.Model.ViewModel.Exam
/// </summary>
public string StuIcon { get; set; }
/// <summary>
/// 考试开始时间
/// </summary>
public DateTime ExamStartTime { get; set; }
/// <summary>
/// 考试结束时间
/// </summary>
public DateTime EndTime { get; set; }
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Model.Entity.Mall;
using VT.FW.DB;
namespace Edu.Model.ViewModel.Mall
{
/// <summary>
/// 商户用户表扩展实体
/// </summary>
[Serializable]
[DB(ConnectionName = "MallConnection")]
public class RB_Member_User_Extend : RB_Member_User
{
/// <summary>
/// 是否查询电商利润 1是
/// </summary>
public int? IsSelectCommpany { get; set; }
/// <summary>
/// 是否用户头像为空 1是 2否
/// </summary>
public int? IsEmptyUserPhoto { get; set; }
/// <summary>
/// 会员等级名称
/// </summary>
public string MemberGradeName { get; set; }
/// <summary>
/// 导出枚举ids
/// </summary>
public List<int> ExcelEnumIds { get; set; }
/// <summary>
/// 用户ids
/// </summary>
public string UserIds { get; set; }
/// <summary>
/// 获取用户
/// </summary>
public int? MinUserId { get; set; }
/// <summary>
/// 粉象等级ID
/// </summary>
public int? FXGradeId { get; set; }
/// <summary>
/// 粉象等级ids
/// </summary>
public string FXGradeIds { get; set; }
/// <summary>
/// 用户名str
/// </summary>
public string UserNameStr { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public string StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string EndTime { get; set; }
/// <summary>
/// 下线数量
/// </summary>
public int? ReferralsNum { get; set; }
/// <summary>
/// 分销商名称
/// </summary>
public string DistributorName { get; set; }
/// <summary>
/// 分销商电话
/// </summary>
public string DistributorMobile { get; set; }
#region 数据统计-分销排行字段
/// <summary>
/// 累计佣金
/// </summary>
public decimal TotalCommission { get; set; }
/// <summary>
/// 已提现佣金
/// </summary>
public decimal Price { get; set; }
/// <summary>
/// 待结算
/// </summary>
public decimal WaitCommission { get; set; }
/// <summary>
/// 总佣金
/// </summary>
public decimal Commission { get; set; }
/// <summary>
/// 直接下级数据
/// </summary>
public int ChildrenNum { get; set; }
/// <summary>
/// 总下级数
/// </summary>
public int AllChildrenNum { get; set; }
/// <summary>
/// 订单数
/// </summary>
public int AllOrderNum { get; set; }
/// <summary>
/// 排序
/// </summary>
public string OrderBy { get; set; }
/// <summary>
/// 上级名称
/// </summary>
public string PName1 { get; set; }
/// <summary>
/// 再上级名称
/// </summary>
public string PName2 { get; set; }
/// <summary>
/// 再在上级名称
/// </summary>
public string PName3 { get; set; }
#endregion
/// <summary>
/// 小程序排序
/// </summary>
public int SortNum { get; set; }
/// <summary>
/// 是否已提现 1是 2否
/// </summary>
public int IsRemit { get; set; }
/// <summary>
/// 用户等级头像
/// </summary>
public string Icon { get; set; }
/// <summary>
/// 是否赞羊使用0-否,1-是
/// </summary>
public int IsZanYangUse { get; set; }
/// <summary>
/// 是否直接下级[1-是]
/// </summary>
public int IsDirect { get; set; }
/// <summary>
/// 店铺Id
/// </summary>
public int ShopId { get; set; }
/// <summary>
/// 店铺名称
/// </summary>
public string ShopName { get; set; }
/// <summary>
/// 真实订单数量
/// </summary>
public int RealOrderNum { get; set; }
/// <summary>
/// 实收金额
/// </summary>
public decimal Income { get; set; }
/// <summary>
/// 口令优惠券=5其他都等于0
/// </summary>
public int CounponPassword { get; set; }
/// <summary>
/// 口令
/// </summary>
public string KeyWord { get; set; }
/// <summary>
/// 2021-05-08 Add By:W 针对教育是否绑定学员信息
/// </summary>
public int StudentId { get; set; }
/// <summary>
/// 性别0-保密,1-男,2-女
/// </summary>
public int Gender { get; set; }
}
}
......@@ -52,6 +52,58 @@ namespace Edu.Model.ViewModel.Question
public string ShowName { get; set; }
}
/// <summary>
/// 完型填空
/// </summary>
public class colzeItem
{
/// <summary>
/// 题目分数
/// </summary>
public decimal SubScore { get; set; }
/// <summary>
/// 学生得分
/// </summary>
public decimal StudentScore { get; set; }
/// <summary>
/// 选项列表
/// </summary>
public List<optionItem> OptionList { get; set; }
}
/// <summary>
/// 完型填空、阅读理解、听力答案
/// </summary>
public class SubAnswerItem
{
/// <summary>
/// 小题编号
/// </summary>
public string SubQuestionId { get; set; }
/// <summary>
/// 小题问题类型
/// </summary>
public string SubQuestionKey { get; set; }
/// <summary>
/// 小题答案
/// </summary>
public string SubAnswer { get; set; }
/// <summary>
/// 小题分数
/// </summary>
public decimal SubScore { get; set; }
/// <summary>
/// 学生小题得分
/// </summary>
public decimal StudentScore { get; set; }
}
/// <summary>
/// 填空题、简答题
/// </summary>
......@@ -104,6 +156,16 @@ namespace Edu.Model.ViewModel.Question
/// </summary>
public string SubTitle { get; set; }
/// <summary>
/// 题目分数
/// </summary>
public decimal SubScore { get; set; }
/// <summary>
/// 学生得分
/// </summary>
public decimal StudentScore { get; set; }
/// <summary>
/// 题目答案内容
/// </summary>
......
......@@ -116,5 +116,11 @@ namespace Edu.Model.ViewModel.Question
/// 问题数量
/// </summary>
public int QuestionCount { get; set; }
/// <summary>
/// 阅读理解、听力、完型,答案列表
/// </summary>
public List<object> QuestionAnswerList { get; set; }
}
}
\ No newline at end of file
......@@ -1485,7 +1485,7 @@ namespace Edu.Module.Course
}
list.Add(new
{
IsEndDate = item.ClassDate <= today,
IsEndDate = item.ClassDate <= today&&item.ClassDate>=today.AddDays(-7),
item.ClassPlanId,
item.ClassId,
item.ClassDate,
......
......@@ -1597,7 +1597,21 @@ namespace Edu.Module.EduTask
if (!string.IsNullOrEmpty(x.WorkUserId))
{
var recipientPath = HttpUtility.UrlEncode($"/teacher/change-class-manager?tab=3&id={receiptModel.Id}");
var content = $"待审通知 你有一张业务单据等待审核\n>**概要信息** \n>单据信息:<font color='comment'>{EnumHelper.ToName(receiptModel.ReceiptType)}单据 ({receiptModel.Id})</font>\n>创 建 人:<font color='comment'>{UserReidsCache.GetUserLoginInfo(receiptModel.CreateBy).AccountName}</font>\n>创建时间:<font color='comment'>{receiptModel.CreateTime.ToString("MM-dd HH-mm")}</font>\n>请点击:[查看详情]({Config.ErpUrl}/autologin?loginId={x.Id}&target={recipientPath})";
string AccountName = "";
if (receiptModel.ReceiptType == Common.Enum.Finance.ReceiptTypeEnum.LeaveClass)
{
AccountName = studentLeaveRepository.GetStudentLeaveListRepository(new RB_Student_Leave_ViewModel()
{
Q_Student_Leave_Ids = receiptModel.RelationId.ToString(),
}).FirstOrDefault()?.Order_Guest_ViewModel?.GuestName ?? "";
}
else
{
AccountName = UserReidsCache.GetUserLoginInfo(receiptModel.CreateBy)?.AccountName;
}
var content = $"待审通知 你有一张业务单据等待审核\n>**概要信息** \n>单据信息:<font color='comment'>{EnumHelper.ToName(receiptModel.ReceiptType)}单据 ({receiptModel.Id})</font>\n>创 建 人:<font color='comment'>{AccountName}</font>\n>创建时间:<font color='comment'>{receiptModel.CreateTime.ToString("MM-dd HH-mm")}</font>\n>请点击:[查看详情]({Config.ErpUrl}/autologin?loginId={x.Id}&target={recipientPath})";
PushWorkChatHelper.PushToWorkChat(content, x.WorkUserId, "业务单据待审通知");
}
});
......
This diff is collapsed.
This diff is collapsed.
......@@ -165,6 +165,7 @@ namespace Edu.Module.Question
DifficultyTypeCount = qitem.QuestionCount,
ChooseNum = 0
});
var obj = new
{
item.QuestionTypeId,
......@@ -183,6 +184,79 @@ namespace Edu.Module.Question
return list;
}
/// <summary>
/// 根据题库编号获取题库题型分类列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<object> GetQuestionCategoryList_V2Module(RB_Question_ViewModel query)
{
List<object> list = new List<object>();
var dataList = questionRepository.GetQuestionStaticsListRepository(query);
if (dataList != null && dataList.Count > 0)
{
var questionTypeList = GetQuestionTypeListModule(new RB_Question_Type_ViewModel());
var groupList = dataList.GroupBy(qitem => new { qitem.QuestionTypeId, }).Select(qitem => new
{
qitem.Key.QuestionTypeId
});
foreach (var item in groupList)
{
var qType = questionTypeList?.Where(qitem => qitem.QId == item.QuestionTypeId)?.FirstOrDefault();
var diffTypeList = dataList.Where(qitem => qitem.QuestionTypeId == item.QuestionTypeId)
.GroupBy(qitem => new { qitem.QuestionTypeId,qitem.DifficultyType})
.Select(qitem => new
{
qitem.Key.DifficultyType,
DifficultyTypeName = qitem.Key.DifficultyType.ToName(),
DifficultyTypeCount = qitem.Sum(c=>c.QuestionCount),
ChooseNum = 0
});
var categoryList = dataList.Where(qitem => qitem.QuestionTypeId == item.QuestionTypeId).GroupBy(qitem => new { qitem.Category }).Select(qitem => new { qitem.Key.Category });
List<object> resultCategoryList = new List<object>();
foreach (var subItem in categoryList)
{
var tempCategoryList = dataList.Where(qitem => qitem.QuestionTypeId == item.QuestionTypeId && qitem.Category == subItem.Category)?.ToList();
if (tempCategoryList != null && tempCategoryList.Count > 0)
{
var cObj = new
{
subItem.Category,
CategoryName = subItem.Category.ToName(),
QuestionTypeNum = tempCategoryList.Sum(qitem=>qitem.QuestionCount),
ChooseNum = 0,
ChooseList= tempCategoryList?.Select(qitem => new
{
qitem.DifficultyType,
DifficultyTypeName = qitem.DifficultyType.ToName(),
DifficultyTypeCount = qitem.QuestionCount,
ChooseNum = 0
})
};
resultCategoryList.Add(cObj);
}
}
var obj = new
{
item.QuestionTypeId,
QuestionTypeKey = qType?.Key,
QuestionTypeName = qType?.Name,
QuestionScore = 0,
QuestionDesc = "",
ChooseType = 1,
ChooseNum = 0,
QuestionTypeNum = dataList.Where(qitem => qitem.QuestionTypeId == item.QuestionTypeId).Sum(qitem => qitem.QuestionCount),
CategoryList= resultCategoryList,
ChooseList = diffTypeList,
};
list.Add(obj);
}
}
return list;
}
/// <summary>
/// 新增修改题目
/// </summary>
......@@ -306,10 +380,27 @@ namespace Edu.Module.Question
extModel.QuestionTypeName = question_TypeRepository.GetEntity(extModel.QuestionTypeId)?.Name ?? "";
}
extModel.QuestionContentObj = ParsingQuestionModule(extModel.QuestionTypeKey, extModel.QuestionContent);
List<object> questionAnswerList = new List<object>();
if (!string.IsNullOrEmpty(extModel.Knowledge))
{
extModel.QuestionPointList = GetPointListModule(new RB_Question_Point_ViewModel() { QPointIds = extModel.Knowledge });
}
if (extModel.QuestionTypeKey == "reading-comprehensio"|| extModel.QuestionTypeKey == "listening" || extModel.QuestionTypeKey == "cloze")
{
analysisQuestion.CheckQuestion(extModel.QuestionTypeKey, extModel.QuestionContent, extModel.Answer, out string newAnswer,IsRequire:false);
if (!string.IsNullOrEmpty(newAnswer))
{
var qAnsList = Common.Plugin.JsonHelper.DeserializeObject<List<SubAnswerItem>>(newAnswer);
if (qAnsList != null && qAnsList.Count() > 0)
{
foreach (var tItem in qAnsList)
{
questionAnswerList.Add(tItem);
}
}
}
}
extModel.QuestionAnswerList = questionAnswerList;
if (extModel.QuestionTypeKey == "cloze" && !string.IsNullOrEmpty(extModel.Title) && isReplaceClozeTitle == 1)
{
string categoryRule1 = @"##[1234567890]##";
......
......@@ -2,7 +2,9 @@
using Edu.Common.Enum;
using Edu.Common.Enum.User;
using Edu.Model.CacheModel;
using Edu.Model.ViewModel.Mall;
using Edu.Model.ViewModel.User;
using Edu.Repository.Mall;
using Edu.Repository.System;
using Edu.Repository.User;
using System;
......@@ -34,6 +36,12 @@ namespace Edu.Module.User
/// <summary>
/// 小程序用户仓储层对象 add by:W 2021-09-15
/// </summary>
private readonly RB_Member_UserRepository member_UserRepository = new RB_Member_UserRepository();
/// <summary>
/// 获取学生列表
/// </summary>
......@@ -279,5 +287,18 @@ namespace Edu.Module.User
{
return studentRepository.GetStudentInfo(Student_Id, Group_Id);
}
#region 小程序用户
/// <summary>
/// 根据条件获取用户实体
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public RB_Member_User_Extend GetMemberUserEntityModule(RB_Member_User_Extend query)
{
return member_UserRepository.GetMemberUserEntityRepository(query);
}
#endregion
}
}
......@@ -32,6 +32,7 @@ SELECT A.*
FROM RB_Examination_Paper AS A
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.Status),(int)Common.Enum.DateStateEnum.Normal);
if (query != null)
{
if (query.Group_Id > 0)
......@@ -103,7 +104,7 @@ WHERE 1=1
builder.AppendFormat(tempSql);
}
}
builder.AppendFormat(" ORDER BY A.{0} ASC,A.{0} DESC ", nameof(RB_Examination_Paper_ViewModel.PaperType),nameof(RB_Examination_Paper_ViewModel.PaperId));
builder.AppendFormat(" ORDER BY A.{0} ASC,A.{0} DESC,A.CreateTime DESC ", nameof(RB_Examination_Paper_ViewModel.PaperType),nameof(RB_Examination_Paper_ViewModel.PaperId));
return GetPage<RB_Examination_Paper_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
}
......@@ -121,6 +122,7 @@ SELECT A.*
FROM RB_Examination_Paper AS A
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Examination_Paper_ViewModel.Status), (int)Common.Enum.DateStateEnum.Normal);
if (query != null)
{
if (query.Group_Id > 0)
......
using Edu.Common.Enum;
using Edu.Common.Enum.Exam;
using Edu.Model.Entity.Exam;
using Edu.Model.ViewModel.Exam;
using System;
......@@ -47,9 +48,38 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Examination_Publish_ViewModel.CreateBy), query.CreateBy);
}
if (!string.IsNullOrEmpty(query.QStartTime))
{
builder.AppendFormat(@" AND A.{0}>='{1}' ",nameof(RB_Examination_Publish_ViewModel.ExamStartTime),query.QStartTime);
}
if (!string.IsNullOrEmpty(query.QEndTime))
{
builder.AppendFormat(@" AND A.{0}<='{1} 23:59:59' ", nameof(RB_Examination_Publish_ViewModel.ExamEndTime), query.QEndTime);
}
if (query.QTestStatus > 0)
{
//未开始
if (query.QTestStatus == 1)
{
builder.AppendFormat(" AND A.{0}>'{1}' ", nameof(RB_Examination_Publish_ViewModel.ExamStartTime), Common.ConvertHelper.FormatTime(DateTime.Now));
}
//进行中
if (query.QTestStatus == 2)
{
builder.AppendFormat(" AND A.{0}<='{1}' AND '{1}'<=A.{2} ", nameof(RB_Examination_Publish_ViewModel.ExamStartTime)
,Common.ConvertHelper.FormatTime(DateTime.Now)
,nameof(RB_Examination_Publish_ViewModel.ExamEndTime)
);
}
//已结束
if (query.QTestStatus == 3)
{
builder.AppendFormat(" AND A.{0}<'{1}' ", nameof(RB_Examination_Publish_ViewModel.ExamEndTime), Common.ConvertHelper.FormatTime(DateTime.Now));
}
}
}
builder.AppendFormat(" ORDER BY A.{0} DESC ", nameof(RB_Examination_Publish_ViewModel.Id));
return GetPage<RB_Examination_Publish_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
return GetPage<RB_Examination_Publish_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
}
......@@ -91,8 +121,6 @@ WHERE 1=1
return Get<RB_Examination_Publish_ViewModel>(builder.ToString(), parameters).ToList();
}
/// <summary>
/// 获取学生发布试卷分页列表
/// </summary>
......@@ -106,9 +134,10 @@ WHERE 1=1
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,IFNULL(B.PaperName,'') AS PaperName,c.ExamStatus
FROM RB_Examination_Publish AS A LEFT JOIN rb_examination_paper AS B ON A.PaperId=B.PaperId
LEFT JOIN rb_examination_student as c on c.PublishId=a.Id
SELECT A.ExamStartTime,A.ExamEndTime,A.ExamineStatus,A.Id,A.PublishPic, C.PaperId,IFNULL(B.PaperName,'') AS PaperName,c.ExamStatus,C.Id AS Exam_Student_Id,C.GuestId
FROM rb_examination_student AS C INNER JOIN RB_Examination_Publish AS A ON C.PublishId=A.Id
INNER JOIN rb_examination_paper AS B ON C.PaperId=B.PaperId
LEFT JOIN rb_student_orderguest AS D ON C.GuestId=D.Id
WHERE 1=1 and a.ExamineStatus=2 and b.ExamineStatus=2
");
if (query != null)
......@@ -121,6 +150,10 @@ WHERE 1=1 and a.ExamineStatus=2 and b.ExamineStatus=2
{
builder.AppendFormat(" AND c.{0}={1} ", nameof(RB_Examination_Publish_ViewModel.GuestId), query.GuestId);
}
if (!string.IsNullOrEmpty(query.QAccountIds))
{
builder.AppendFormat(" AND D.Account_Id IN({0}) ", query.QAccountIds);
}
if (!string.IsNullOrEmpty(query.PaperName))
{
builder.AppendFormat(" AND B.{0} LIKE @PaperName ", nameof(RB_Examination_Publish_ViewModel.PaperName));
......@@ -128,27 +161,26 @@ WHERE 1=1 and a.ExamineStatus=2 and b.ExamineStatus=2
}
if (query.ExamStatus > 0)
{
if (query.ExamStatus == 1)
if (query.ExamStatus == ExamTestStatusEnum.NotStarted)
{
builder.AppendFormat(" AND a.{0} > '{1}' ", nameof(RB_Examination_Publish_ViewModel.ExamStartTime), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
else if (query.ExamStatus == 2)
else if (query.ExamStatus == ExamTestStatusEnum.FinishStarted)
{
builder.AppendFormat(" AND a.{0} < '{1}' and a.{2} > '{1}' ", nameof(RB_Examination_Publish_ViewModel.ExamStartTime), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), nameof(RB_Examination_Publish_ViewModel.ExamEndTime));
builder.AppendFormat(" AND a.{0} < '{1}' and a.{2} > '{1}' and c.{3}=1 ", nameof(RB_Examination_Publish_ViewModel.ExamStartTime), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), nameof(RB_Examination_Publish_ViewModel.ExamEndTime), nameof(RB_Examination_Publish_ViewModel.ExamStatus));
}
else if (query.ExamStatus == 3)
else if (query.ExamStatus == ExamTestStatusEnum.MissedTest)
{
builder.AppendFormat(" AND a.{0} > '{1}' and c.{2}=0 ", nameof(RB_Examination_Publish_ViewModel.ExamEndTime), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), nameof(RB_Examination_Publish_ViewModel.ExamStatus));
builder.AppendFormat(" AND a.{0} < '{1}' and c.{2} NOT IN(3,5) ", nameof(RB_Examination_Publish_ViewModel.ExamEndTime), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), nameof(RB_Examination_Publish_ViewModel.ExamStatus));
}
else if (query.ExamStatus == 4)
else if (query.ExamStatus == ExamTestStatusEnum.FinishTest)
{
builder.AppendFormat(" AND a.{0} > '{1}' and c.{2}=1 ", nameof(RB_Examination_Publish_ViewModel.ExamEndTime), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), nameof(RB_Examination_Publish_ViewModel.ExamStatus));
builder.AppendFormat(" AND c.{0} IN(3,5)", nameof(RB_Examination_Publish_ViewModel.ExamStatus));
}
}
}
builder.AppendFormat(" order by a.{0} desc ", nameof(RB_Examination_Publish_ViewModel.ExamStartTime));
return GetPage<RB_Examination_Publish_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
}
}
}
......@@ -24,11 +24,12 @@ namespace Edu.Repository.Exam
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,IFNULL(B.GuestName,'') AS GuestName,c.ClassName,b.Mobile,s.StuIcon
SELECT A.*,IFNULL(B.GuestName,'') AS GuestName,c.ClassName,b.Mobile,s.StuIcon,p.ExamStartTime ,p.ExamEndTime AS EndTime
FROM RB_Examination_Student AS A LEFT JOIN rb_order_guest AS B ON A.GuestId=B.Id
LEFT JOIN rb_class as c on c.ClassId=a.ClassId
LEFT JOIN rb_student_orderguest as sog on sog.GuestId=a.GuestId
LEFT JOIN rb_student as s on s.StuId = sog.Student_Id
LEFT JOIN rb_class as c on c.ClassId=a.ClassId
LEFT JOIN rb_student_orderguest as sog on sog.GuestId=a.GuestId
LEFT JOIN rb_student as s on s.StuId = sog.Student_Id
LEFT JOIN rb_examination_publish AS p ON A.PublishId=P.Id
WHERE 1=1
");
if (query != null)
......@@ -72,6 +73,14 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Examination_Student_ViewModel.PublishId), query.PublishId);
}
if (query.PaperId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Examination_Student_ViewModel.PaperId), query.PaperId);
}
if (query.GuestId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Examination_Student_ViewModel.GuestId), query.GuestId);
}
if (!string.IsNullOrEmpty(query.QPublishIds))
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Examination_Student_ViewModel.PublishId), query.QPublishIds);
......
......@@ -732,7 +732,7 @@ SELECT A.* FROM
SELECT A.*,B.ClassTimeId,CONCAT(DATE_FORMAT(A.ClassDate,'%Y-%m-%d'),' ',B.StartTime,':00') AS StartTime,CONCAT(DATE_FORMAT(A.ClassDate,'%Y-%m-%d'),' ',B.EndTime,':00') AS EndTime
FROM rb_class_plan AS A INNER JOIN rb_class_time AS B ON A.ClassPlanId=B.ClassPlanId
INNER JOIN rb_class AS C ON A.ClassId=C.ClassId
WHERE A.`Status`=0 AND A.ClassDate>='{0}' AND C.ClassStatus IN(1,2)
WHERE A.`Status`=0 AND C.Status=0 AND A.ClassDate>='{0}' AND C.ClassStatus IN(2)
) AS A
WHERE 1=1
", Common.ConvertHelper.FormatDate(DateTime.Now));
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Edu.Model.Entity.Mall;
using Edu.Model.ViewModel.Mall;
namespace Edu.Repository.Mall
{
public class RB_Member_UserRepository:BaseRepository<RB_Member_User>
{
/// <summary>
/// 根据查询条件获取用户实体类
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public RB_Member_User_Extend GetMemberUserEntityRepository(RB_Member_User_Extend query)
{
string where = " 1=1 ";
if (query.TenantId > 0)
{
where += $@" and {nameof(RB_Member_User.TenantId)}={query.TenantId}";
}
if (query.MallBaseId > 0)
{
where += $@" and {nameof(RB_Member_User.MallBaseId)}={query.MallBaseId}";
}
if (query.Id > 0)
{
where += $@" and {nameof(RB_Member_User.Id)}={query.Id}";
}
if (!string.IsNullOrEmpty(query.Name))
{
where += $@" and {nameof(RB_Member_User.Name)} like '%{query.Name}%'";
}
if (!string.IsNullOrEmpty(query.AliasName))
{
where += $@" and {nameof(RB_Member_User.AliasName)} like '%{query.AliasName}%'";
}
if (query.Source > 0)
{
where += $@" and {nameof(RB_Member_User.Source)} ={(int)query.Source}";
}
if (!string.IsNullOrEmpty(query.Moblie))
{
where += $@" and {nameof(RB_Member_User.Moblie)} like '%{query.Moblie}%'";
}
if (query.MemberGrade > 0)
{
where += $@" and {nameof(RB_Member_User.MemberGrade)}={query.MemberGrade}";
}
if (query.SuperiorId > 0)
{
where += $@" and {nameof(RB_Member_User.SuperiorId)}={query.SuperiorId}";
}
if (query.IsEmptyUserPhoto == 1)
{
where += $@" and IFNULL({nameof(RB_Member_User.Photo)},'')=''";
}
//HK06-01新增查询条件
if (query.OpenId != null && !string.IsNullOrWhiteSpace(query.OpenId))
{
where += $@" and {nameof(RB_Member_User.OpenId)} LIKE '{query.OpenId}%'";
}
string sql = $@"select * from RB_Member_User where {where} ";
return Get<RB_Member_User_Extend>(sql).FirstOrDefault();
}
}
}
......@@ -57,9 +57,9 @@ WHERE 1=1
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT QuestionTypeId,DifficultyType,Count(QuestionId) AS QuestionCount
SELECT QuestionTypeId,DifficultyType,Category,Count(QuestionId) AS QuestionCount
FROM RB_Question
WHERE 1=1
WHERE 1=1 AND `Status`=0
");
if (query == null)
{
......@@ -79,7 +79,7 @@ WHERE 1=1
{
builder.AppendFormat(" AND {0} IN({1}) ", nameof(RB_Question_ViewModel.QuestionTypeId), query.Q_QuestionTypeIds);
}
builder.AppendFormat(" GROUP BY QuestionTypeId,DifficultyType ");
builder.AppendFormat(" GROUP BY QuestionTypeId,DifficultyType,Category ");
return Get<RB_Question_ViewModel>(builder.ToString()).ToList();
}
}
......
......@@ -142,7 +142,15 @@ ORDER BY {orderBy}
public List<RB_Order_ViewModel> GetOrderPageRepository(int pageIndex, int pageSize, out long rowsCount, RB_Order_ViewModel demodel)
{
string where = $@" 1=1";
if (demodel.SourceId > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.OrderType)} ={(int)OrderTypeEnum.StudyabroadOrder} ";
}
else
{
where += $@" and o.{nameof(RB_Order_ViewModel.OrderType)} ={(int)OrderTypeEnum.CourseOrder} ";
}
if (demodel.Group_Id > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.Group_Id)} ={demodel.Group_Id}";
......@@ -161,6 +169,10 @@ ORDER BY {orderBy}
{
where += $@" and o.{nameof(RB_Order_ViewModel.ClassId)} ={demodel.ClassId}";
}
if (demodel.SourceId > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.SourceId)} ={demodel.SourceId}";
}
if (demodel.OrderState > 0)
{
where += $@" and o.{nameof(RB_Order_ViewModel.OrderState)} ={(int)demodel.OrderState}";
......
......@@ -159,7 +159,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,(og.TotalHours-og.CompleteHours) as SurplusHours
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
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
......
......@@ -7,6 +7,7 @@ using Edu.Common.API;
using Edu.Common.Enum.App;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.ViewModel.Mall;
using Edu.Model.ViewModel.User;
using Edu.Module.Public;
using Edu.Module.User;
......@@ -144,6 +145,36 @@ namespace Edu.WebApi.Controllers.APP
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 });
//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
AppletStudentInfo obj = new AppletStudentInfo
{
Id = model.Id,
......@@ -155,12 +186,19 @@ namespace Edu.WebApi.Controllers.APP
AccountName = model.AccountName,
SchoolName = studentModel.SName,
TeacherName = studentModel.TeacherName,
CourseName= studentModel.CourseName,
CourseName = studentModel.CourseName,
StuSex = studentModel.StuSex,
StuBirth = studentModel.StuBirth.HasValue ? studentModel.StuBirth.Value.ToString("yyyy-MM-dd") : "",
EnterPhone = Cache.User.UserReidsCache.GetUserLoginInfo(studentModel.EnterID).UserMobile,
Token = token,
GroupLogo = model.GroupLogo,
UserIcon = model.UserIcon,
ApiRequestFromEnum = Common.Enum.ApiRequestFromEnum.AppletStudent,
MallToken = mallUserToken,
JHMallBaseId = Config.JHMallBaseId,
JHTenantId = Config.JHTenantId,
JHMallUserId = umodel?.Id ?? 0,
JHMallUserOpenId = Config.JHMallUserOpenId,
UploadConfig = new
{
uploadConfig?.Bucket,
......@@ -178,8 +216,6 @@ namespace Edu.WebApi.Controllers.APP
}
/// <summary>
/// 根据手机号码一键登录
/// </summary>
......@@ -189,7 +225,6 @@ namespace Edu.WebApi.Controllers.APP
[AllowAnonymous]
public ApiResult LoginByAccount()
{
JObject jobj = JObject.Parse(RequestParm.Msg.ToString());
string account = jobj.GetStringValue("Account");
string UnionId = jobj.GetStringValue("UnionId");
......@@ -269,7 +304,7 @@ namespace Edu.WebApi.Controllers.APP
Token = token,
GroupLogo = model.GroupLogo,
UserIcon = model.UserIcon,
EnterPhone= Cache.User.UserReidsCache.GetUserLoginInfo(studentModel.EnterID).UserMobile,
EnterPhone = Cache.User.UserReidsCache.GetUserLoginInfo(studentModel.EnterID).UserMobile,
ApiRequestFromEnum = Common.Enum.ApiRequestFromEnum.AppletStudent,
UploadConfig = new
{
......@@ -287,8 +322,6 @@ namespace Edu.WebApi.Controllers.APP
}
}
#region 小程序获取手机号码
/// <summary>
/// 获取手机号码
......
......@@ -236,6 +236,7 @@ namespace Edu.WebApi.Controllers.Course
StudentNumType = (StudentNumTypeEnum)base.ParmJObj.GetInt("StudentNumType"),
ClassHourMinute = base.ParmJObj.GetInt("ClassHourMinute"),
};
extModel.ClassDateList = Common.Plugin.JsonHelper.DeserializeObject<List<string>>(base.ParmJObj.GetStringValue("ClassDateList"));
try
{
......@@ -401,11 +402,19 @@ namespace Edu.WebApi.Controllers.Course
{
extModel.ClassId = 0;
}
if (string.IsNullOrEmpty(base.ParmJObj.GetStringValue("EndOrderTime")))
{
extModel.EndOrderTime = extModel.OpenTime;
}
flag = classModule.SetClassModule(extModel);
}
}
else
{
if (string.IsNullOrEmpty(base.ParmJObj.GetStringValue("EndOrderTime")))
{
extModel.EndOrderTime = extModel.OpenTime;
}
flag = classModule.SetClassModule(extModel);
}
return flag ? ApiResult.Success(data: extModel) : ApiResult.Failed();
......@@ -2231,7 +2240,7 @@ namespace Edu.WebApi.Controllers.Course
{
var path = $"/course/prepareclassDetails?ClassId={query.ClassId}&ClassPlanId={query.ClassPlanId}";
path=HttpUtility.UrlEncode(path);
string markdownContent = $"`教师备课` 主管评论备课内容通知\n>**概要信息** \n>上课日期:<font color='info'>{query.ClassDate.Value.ToString("yyyy-MM-dd")}</font>\n>评价人:<font color='warning'>{model.CreateByName}</font>\n>评价日期:<font color='comment'>{DateTime.Now.ToString("MM-dd HH:mm")}</font>\n>\n>分数:<font color='comment'>{(query.Score == -1 ? "未评分" : query.Score + "分")}</font>\n>请点击:[查看详情]({Config.ErpUrl}/autologin?loginId={query.TeacherId}&target={path}#target=out)";
string markdownContent = $"`教师备课` 主管评论备课内容通知\n>**概要信息** \n>上课日期:<font color='info'>{query.ClassDate.Value:yyyy-MM-dd}</font>\n>评价人:<font color='warning'>{model.CreateByName}</font>\n>评价日期:<font color='comment'>{DateTime.Now:MM-dd HH:mm}</font>\n>\n>分数:<font color='comment'>{(query.Score == -1 ? "未评分" : query.Score + "分")}</font>\n>请点击:[查看详情]({Config.ErpUrl}/autologin?loginId={query.TeacherId}&target={path}#target=out)";
Common.Message.PushMessageModel modelWork = new Common.Message.PushMessageModel()
{
CategoryId = PushMessageCategoryEnum.LessonComment,
......
......@@ -257,7 +257,7 @@ namespace Edu.WebApi.Controllers.Course
BankId = base.ParmJObj.GetInt("BankId"),
QBankIds = base.ParmJObj.GetStringValue("QBankIds"),
};
var data = questionModule.GetQuestionCategoryListModule(query);
var data = questionModule.GetQuestionCategoryList_V2Module(query);
return ApiResult.Success(data: data);
}
......
......@@ -2,10 +2,12 @@
using Edu.Common;
using Edu.Common.API;
using Edu.Common.Enum.Course;
using Edu.Common.Enum.Exam;
using Edu.Common.Enum.Question;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.Exam;
using Edu.Model.ViewModel.Flow;
using Edu.Model.ViewModel.Question;
using Edu.Module.Exam;
using Edu.Module.Question;
using Edu.Module.System;
......@@ -508,15 +510,28 @@ namespace Edu.WebApi.Controllers.Exam
IsHalfScore = base.ParmJObj.GetInt("IsHalfScore"),
PublishPic=base.ParmJObj.GetStringValue("PublishPic"),
};
if (model.ExamStartTime > model.ExamEndTime)
{
return ApiResult.ParamIsNull("考试开始时间不能大于结束时间!");
}
var studentStr = base.ParmJObj.GetStringValue("StudentList");
if (!string.IsNullOrEmpty(studentStr))
{
model.StudentList = Common.Plugin.JsonHelper.DeserializeObject<List<RB_Examination_Student_ViewModel>>(studentStr);
}
if (model.StudentList == null || (model.StudentList != null && model.StudentList.Count == 0))
{
return ApiResult.ParamIsNull("请选择考试学员!");
}
if (string.IsNullOrEmpty(base.ParmJObj.GetStringValue("ExamStartTime")))
{
return ApiResult.ParamIsNull("请选择考试开始时间!");
}
if (string.IsNullOrEmpty(base.ParmJObj.GetStringValue("ExamEndTime")))
{
return ApiResult.ParamIsNull("请选择考试结束时间!");
}
if (model.ExamStartTime > model.ExamEndTime)
{
return ApiResult.ParamIsNull("考试开始时间不能大于结束时间!");
}
model.CreateBy = base.UserInfo.Id;
model.CreateTime = DateTime.Now;
model.Group_Id = base.UserInfo.Group_Id;
......@@ -551,6 +566,9 @@ namespace Edu.WebApi.Controllers.Exam
PaperId = base.ParmJObj.GetInt("PaperId"),
PaperName = base.ParmJObj.GetStringValue("PaperName"),
IsQueryAll=base.ParmJObj.GetInt("IsQueryAll"),
QTestStatus=base.ParmJObj.GetInt("QTestStatus"),
QStartTime=base.ParmJObj.GetStringValue("QStartTime"),
QEndTime=base.ParmJObj.GetStringValue("QEndTime"),
};
if (query.IsQueryAll != 1)
{
......@@ -561,6 +579,24 @@ namespace Edu.WebApi.Controllers.Exam
var list = paperModule.GetExaminationPublishPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
foreach (var item in list)
{
string TestStatusStr = "未开始";
var startTime = Convert.ToDateTime(item.ExamStartTime);
var endTime = Convert.ToDateTime(item.ExamEndTime);
//未开始
if (startTime > DateTime.Now)
{
TestStatusStr = "未开始";
}
//进行中
else if (startTime <= DateTime.Now && DateTime.Now <= endTime)
{
TestStatusStr = "进行中";
}
//已结束
else if (endTime < DateTime.Now)
{
TestStatusStr = "已结束";
}
var obj = new
{
item.Id,
......@@ -569,12 +605,14 @@ namespace Edu.WebApi.Controllers.Exam
CreateByName = UserReidsCache.GetUserLoginInfo(item.CreateBy)?.AccountName ?? "",
StartTime = Common.ConvertHelper.FormatTime(item.ExamStartTime),
EndTime = Common.ConvertHelper.FormatTime(item.ExamEndTime),
IsEdit = item.ExamStartTime > DateTime.Now ? 1 : 0,
item.ExamTimes,
item.StudentCount,
ReviewerName = item.Reviewer > 0 ? (UserReidsCache.GetUserLoginInfo(item.Reviewer)?.AccountName ?? "") : "",
item.Reviewer,
item.ExamineStatus,
ExamineStatusStr =paperModule.GetExamineStatusStr(item.ExamineStatus)
TestStatusStr,
ExamineStatusStr = paperModule.GetExamineStatusStr(item.ExamineStatus)
};
result.Add(obj);
}
......@@ -800,6 +838,24 @@ namespace Edu.WebApi.Controllers.Exam
var list = paperModule.GetExaminationStudentPageRepository(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
foreach (var item in list)
{
if (item.ExamStartTime > System.DateTime.Now)
{
item.ExamStatus = ExamTestStatusEnum.NotStarted;
}
else if (item.ExamStartTime < System.DateTime.Now && item.EndTime > System.DateTime.Now)
{
if (item.ExamStatus != ExamTestStatusEnum.FinishTest && item.ExamStatus != ExamTestStatusEnum.FinishScoring)
{
item.ExamStatus = ExamTestStatusEnum.FinishStarted;
}
}
else if (item.EndTime < System.DateTime.Now)
{
if (item.ExamStatus != ExamTestStatusEnum.FinishTest && item.ExamStatus != ExamTestStatusEnum.FinishScoring)
{
item.ExamStatus = ExamTestStatusEnum.MissedTest;
}
}
var obj = new
{
item.Id,
......@@ -814,6 +870,10 @@ namespace Edu.WebApi.Controllers.Exam
item.CourseId,
item.PublishId,
CreateByName = UserReidsCache.GetUserLoginInfo(item.CreateBy)?.AccountName ?? "",
item.ExamStatus,
ExamStatusName = item.ExamStatus.ToName(),
ExamStartTime = Common.ConvertHelper.FormatTime(item.ExamStartTime),
EndTime = Common.ConvertHelper.FormatTime(item.EndTime),
};
result.Add(obj);
}
......@@ -822,5 +882,62 @@ namespace Edu.WebApi.Controllers.Exam
return ApiResult.Success(data: pageModel);
}
#endregion
/// <summary>
/// 老师阅卷提交分数
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetTeacherScoring()
{
var PublishId = base.ParmJObj.GetInt("PublishId");
var GuestId = base.ParmJObj.GetInt("GuestId", 0);
var PaperId = base.ParmJObj.GetInt("PaperId");
//学生评语
string StuComment = base.ParmJObj.GetStringValue("StuComment");
List<RB_Examination_Details_ViewModel> paperDetailsList = new List<RB_Examination_Details_ViewModel>();
string groups = base.ParmJObj.GetStringValue("GroupList");
if (!string.IsNullOrEmpty(groups))
{
JArray jarray = JArray.Parse(groups);
if (jarray != null && jarray.Count > 0)
{
foreach (var jItem in jarray)
{
JObject jobj = JObject.Parse(jItem.ToString());
string details = jobj.GetStringValue("DetailsList");
if (!string.IsNullOrEmpty(details))
{
JArray subArray = JArray.Parse(details);
foreach (var sItem in subArray)
{
JObject sObj = JObject.Parse(sItem.ToString());
var qKey = sObj.GetStringValue("QuestionTypeKey");
string answer= sObj.GetStringValue("AnswerList");
List<SubAnswerItem> subList = new List<SubAnswerItem>();
if (qKey == "reading-comprehensio" || qKey == "listening" || qKey == "cloze")
{
if (!string.IsNullOrEmpty(answer))
{
subList = Common.Plugin.JsonHelper.DeserializeObject<List<SubAnswerItem>>(answer);
}
}
var detailModel = new RB_Examination_Details_ViewModel()
{
Id = sObj.GetInt("PaperDetailsId"),
StundetDetailsId = sObj.GetInt("StundetDetailsId"),
StudentScore = sObj.GetDecimal("StudentScore"),
SubList= subList,
};
paperDetailsList.Add(detailModel);
}
}
}
}
}
var result = paperModule.SetTeacherScoringModule(PublishId, GuestId, PaperId, StuComment, paperDetailsList);
return result ? ApiResult.Success("阅卷成功!") : ApiResult.Failed("阅卷失败!");
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Edu.Common.API;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
......@@ -10,7 +9,6 @@ using Edu.Model.ViewModel.Grade;
using Edu.Module.System;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
......@@ -44,7 +42,6 @@ namespace Edu.WebApi.Controllers.Public
public ApiResult SetHoliday()
{
UserInfo userInfo = base.UserInfo;
var startDate = base.ParmJObj.GetStringValue("StartTime");
var endDate = base.ParmJObj.GetStringValue("EndTime");
......@@ -72,9 +69,6 @@ namespace Edu.WebApi.Controllers.Public
{
return ApiResult.Failed("节假日时间范围重合");
}
if (dmodel.HolidayId == 0)
{
dmodel.CreateDate = System.DateTime.Now;
......@@ -203,31 +197,65 @@ namespace Edu.WebApi.Controllers.Public
}
else
{
return ApiResult.Failed("请求失败,数据不存在!");
}
}
/// <summary>
/// 批量新增节假日
/// </summary>
/// <returns></returns>
[Microsoft.AspNetCore.Authorization.AllowAnonymous]
public ApiResult InsertHoliday()
{
string apiResult = Common.Plugin.HttpHelper.HttpGet("http://timor.tech/api/holiday/year/2021/");
JObject parmsJob = JObject.Parse(apiResult);
string resultCode = parmsJob.GetStringValue("code");
string holidayList = parmsJob.GetStringValue("holiday");
// JObject parmsHoliday = JObject.Parse(holidayList);
try
{
JObject jsonObject = JObject.Parse(holidayList);
foreach (var item in jsonObject.Children())
{
var test1 = item.Children();// JsonConvert.DeserializeObject<test>();
foreach (var item1 in test1)
{
var test = item1.ToObject<test>();
RB_System_Holiday dmodel = new RB_System_Holiday
{
StartTime = Convert.ToDateTime(test.date),
EndTime = Convert.ToDateTime(test.date)
};
if (test.holiday)//节假日
{
dmodel.DayType = 1;
}
else
{
dmodel.DayType = 2;
}
dmodel.CreateDate = System.DateTime.Now;
dmodel.Status = 0;
dmodel.Group_Id = 100000;
dmodel.School_Id = 0;
bool flag = holidayModule.SetHoliday(dmodel);
}
}
return ApiResult.Success("");
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "InsertHoliday");
return ApiResult.Failed("转换失败");
}
}
#endregion
}
public class test
{
public bool holiday { get; set; }
public string date { get; set; }
}
}
......@@ -177,20 +177,6 @@ namespace Edu.WebApi.Controllers.User
groupId = model.Group_Id
};
#region JWT
// string mallToken = WebApiTokenHelper.CreateToken(Common.GlobalKey.JWT_Mall_User_Key, mallJHUserInfo);
#endregion
#endregion
#region 获取甲鹤教育Token
#region JWT
JWT.IDateTimeProvider provider2 = new JWT.UtcDateTimeProvider();
var now2 = provider2.GetNow().AddMinutes(-1);
......@@ -210,9 +196,8 @@ namespace Edu.WebApi.Controllers.User
string malltokenJH = encoder2.Encode(payload2, secret2);
#endregion
#endregion
#endregion
var treeList = menuModule.GetPostMenuTreeModule(new Model.ViewModel.System.RB_Menu_ViewModel()
{
MenuType = accountType
......
......@@ -42,6 +42,7 @@
"EduDateBase": "uat_reborn_edu",
"JHTenantId": "15",
"JHMallBaseId": "5",
"JHMallUserOpenId": "oshxs5I-6uR1J91Rs3QVyi2rJIm4",
"Notice_BaseKey": "Notice_BaseKey",
"EducationContractSchool": "EducationContractSchool",
"EducationContractAdmin": "EducationContractAdmin",
......
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