Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
Education
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄奎
Education
Commits
1257b2e8
Commit
1257b2e8
authored
Aug 27, 2021
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
页面修改
parent
c04d9a6b
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
54 additions
and
42 deletions
+54
-42
RB_Examination_StudentDetails.cs
Edu.Model/Entity/Exam/RB_Examination_StudentDetails.cs
+5
-0
RB_Examination_Details_ViewModel.cs
Edu.Model/ViewModel/Exam/RB_Examination_Details_ViewModel.cs
+3
-3
ClassModule.cs
Edu.Module.Course/ClassModule.cs
+9
-9
EducationContractModule.cs
Edu.Module.Course/EducationContractModule.cs
+7
-7
PaperModule.cs
Edu.Module.Exam/PaperModule.cs
+15
-13
AnalysisQuestionTypeModule.cs
Edu.Module.Question/AnalysisQuestionTypeModule.cs
+13
-9
AppletIndexController.cs
Edu.WebApi/Controllers/Applet/AppletIndexController.cs
+1
-0
TimerJobj.cs
Edu.WebApi/Timers/TimerJobj.cs
+1
-1
No files found.
Edu.Model/Entity/Exam/RB_Examination_StudentDetails.cs
View file @
1257b2e8
...
...
@@ -69,5 +69,10 @@ namespace Edu.Model.Entity.Exam
/// 学生选项内容
/// </summary>
public
string
StudentContent
{
get
;
set
;
}
/// <summary>
/// 问题分组编号(关联rb_examination_group表中的GId)
/// </summary>
public
int
StuPaperGroupId
{
get
;
set
;
}
}
}
Edu.Model/ViewModel/Exam/RB_Examination_Details_ViewModel.cs
View file @
1257b2e8
...
...
@@ -37,14 +37,14 @@ namespace Edu.Model.ViewModel.Exam
public
string
StundetAnswer
{
get
;
set
;
}
/// <summary>
/// 学生答案详情id
/// 学生答案详情id
(关联RB_Examination_StudentDetails表中的Id)
/// </summary>
public
int
StundetDetailsId
{
get
;
set
;
}
/// <summary>
///
学生得分
///
题目类型分组编号(关联rb_examination_group表中的GId)
/// </summary>
public
decimal
StundetScore
{
get
;
set
;
}
public
int
StuPaperGroupId
{
get
;
set
;
}
/// <summary>
/// 知识点
...
...
Edu.Module.Course/ClassModule.cs
View file @
1257b2e8
...
...
@@ -2025,7 +2025,7 @@ namespace Edu.Module.Course
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
var
path
=
$"/sale/myOrder?OrderId=
{
guestModel
.
OrderId
}
"
;
path
=
HttpUtility
.
UrlEncode
(
path
);
string
markdownContent
=
$"`停课通知` 学员欠费停课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>当前状态:<font color='warning'>停课</font>\n>关联单号:
{
guestModel
.
OrderId
}
\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
.
ToString
(
"0.00"
)
}
</font>\n>停课理由:费用不足,系统自动触发停课限制\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
orderModel
.
EnterID
}
&target=
{
path
}
)"
;
string
markdownContent
=
$"`停课通知` 学员欠费停课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>当前状态:<font color='warning'>停课</font>\n>关联单号:
{
guestModel
.
OrderId
}
\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
:
0.00
}
</font>\n>停课理由:费用不足,系统自动触发停课限制\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
orderModel
.
EnterID
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
...
...
@@ -2054,7 +2054,7 @@ namespace Edu.Module.Course
var
path
=
$"/sale/orderStatistics?OrderId=
{
guestModel
.
OrderId
}
"
;
path
=
HttpUtility
.
UrlEncode
(
path
);
string
markdownContent
=
$"`停课通知` 学员欠费停课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>当前状态:<font color='warning'>停课</font>\n>关联单号:
{
guestModel
.
OrderId
}
(
{
sellerInfo
.
AccountName
}
)\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
.
ToString
(
"0.00"
)
}
</font>\n>停课理由:费用不足,系统自动触发停课限制\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
path
}
)"
;
string
markdownContent
=
$"`停课通知` 学员欠费停课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>当前状态:<font color='warning'>停课</font>\n>关联单号:
{
guestModel
.
OrderId
}
(
{
sellerInfo
.
AccountName
}
)\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
:
0.00
}
</font>\n>停课理由:费用不足,系统自动触发停课限制\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
...
...
@@ -2087,7 +2087,7 @@ namespace Edu.Module.Course
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
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>关联单号:
{
guestModel
.
OrderId
}
\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
.
ToString
(
"0.00"
)
}
</font>\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
orderModel
.
EnterID
}
&target=
{
path
}
)"
;
string
markdownContent
=
$"`欠费预警` 学员即将欠费通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>剩余课时:<font color='warning'>
{
shenyuHours
}
</font>\n>关联单号:
{
guestModel
.
OrderId
}
\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
:
0.00
}
</font>\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
orderModel
.
EnterID
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
...
...
@@ -2115,7 +2115,7 @@ namespace Edu.Module.Course
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>关联单号:
{
guestModel
.
OrderId
}
(
{
sellerInfo
.
AccountName
}
)\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
.
ToString
(
"0.00"
)
}
</font>\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
path
}
)"
;
string
markdownContent
=
$"`欠费预警` 学员即将欠费通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>剩余课时:<font color='warning'>
{
shenyuHours
}
</font>\n>关联单号:
{
guestModel
.
OrderId
}
(
{
sellerInfo
.
AccountName
}
)\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
:
0.00
}
</font>\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
...
...
@@ -2418,7 +2418,7 @@ namespace Edu.Module.Course
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
var
path
=
$"/sale/myOrder?OrderId=
{
guestModel
.
OrderId
}
"
;
path
=
HttpUtility
.
UrlEncode
(
path
);
string
markdownContent
=
$"`停课通知` 学员欠费停课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>当前状态:<font color='warning'>停课</font>\n>关联单号:
{
guestModel
.
OrderId
}
\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
.
ToString
(
"0.00"
)
}
</font>\n>停课理由:连续缺课超过
{
Config
.
AbsentHours
}
课时,系统自动停课\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
orderModel
.
EnterID
}
&target=
{
path
}
)"
;
string
markdownContent
=
$"`停课通知` 学员欠费停课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>当前状态:<font color='warning'>停课</font>\n>关联单号:
{
guestModel
.
OrderId
}
\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
:
0.00
}
</font>\n>停课理由:连续缺课超过
{
Config
.
AbsentHours
}
课时,系统自动停课\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
orderModel
.
EnterID
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
...
...
@@ -2447,7 +2447,7 @@ namespace Edu.Module.Course
var
path
=
$"/sale/orderStatistics?OrderId=
{
guestModel
.
OrderId
}
"
;
path
=
HttpUtility
.
UrlEncode
(
path
);
string
markdownContent
=
$"`停课通知` 学员欠费停课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>当前状态:<font color='warning'>停课</font>\n>关联单号:
{
guestModel
.
OrderId
}
(
{
sellerInfo
.
AccountName
}
)\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
.
ToString
(
"0.00"
)
}
</font>\n>停课理由:连续缺课超过
{
Config
.
AbsentHours
}
课时,系统自动停课\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
path
}
)"
;
string
markdownContent
=
$"`停课通知` 学员欠费停课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>当前状态:<font color='warning'>停课</font>\n>关联单号:
{
guestModel
.
OrderId
}
(
{
sellerInfo
.
AccountName
}
)\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
:
0.00
}
</font>\n>停课理由:连续缺课超过
{
Config
.
AbsentHours
}
课时,系统自动停课\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
...
...
@@ -2915,7 +2915,7 @@ namespace Edu.Module.Course
{
notifyObjs
.
ForEach
(
x
=>
{
var
content
=
$"<font color='info'>修改备课通知</font> 有老师对备课内容进行了修改调整\n>**概要信息** \n>备课老师:<font color='comment'>
{
user
.
AccountName
}
</font>\n>备课标题:<font color='comment'>
{
item
.
LessonPlan
}
(第
{
item
.
CourseNum
}
课)</font>\n>目标班级:<font color='comment'>
{
classInfo
.
ClassName
}
</font> \n>上课日期:<font color='warning'>
{
item
.
ClassDate
.
Value
.
ToString
(
"yyyy年MM月dd日"
)
}
</font>\n>请点击:[查看备课内容](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
recipientPath
}
)"
;
string
content
=
$"<font color='info'>修改备课通知</font> 有老师对备课内容进行了修改调整\n>**概要信息** \n>备课老师:<font color='comment'>
{
user
.
AccountName
}
</font>\n>备课标题:<font color='comment'>
{
item
.
LessonPlan
}
(第
{
item
.
CourseNum
}
课)</font>\n>目标班级:<font color='comment'>
{
classInfo
.
ClassName
}
</font> \n>上课日期:<font color='warning'>
{
item
.
ClassDate
.
Value
:
yyyy
年
MM
月
dd
日
}
</font>\n>请点击:[查看备课内容](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
recipientPath
}
)"
;
PushWorkChatHelper
.
PushToWorkChat
(
content
,
x
.
WorkUserId
,
"修改备课通知"
);
});
}
...
...
@@ -2935,7 +2935,7 @@ namespace Edu.Module.Course
{
notifyObjs
.
ForEach
(
x
=>
{
var
content
=
$"<font color='info'>备课通知</font> 有老师完成了备课工作\n>**概要信息** \n>备课老师:<font color='comment'>
{
user
.
AccountName
}
</font>\n>备课标题:<font color='comment'>
{
item
.
LessonPlan
}
(第
{
item
.
CourseNum
}
课)</font>\n>目标班级:<font color='comment'>
{
classInfo
.
ClassName
}
</font> \n>上课日期:<font color='warning'>
{
item
.
ClassDate
.
Value
.
ToString
(
"yyyy年MM月dd日"
)
}
</font>\n>请点击:[查看备课内容](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
recipientPath
}
)"
;
var
content
=
$"<font color='info'>备课通知</font> 有老师完成了备课工作\n>**概要信息** \n>备课老师:<font color='comment'>
{
user
.
AccountName
}
</font>\n>备课标题:<font color='comment'>
{
item
.
LessonPlan
}
(第
{
item
.
CourseNum
}
课)</font>\n>目标班级:<font color='comment'>
{
classInfo
.
ClassName
}
</font> \n>上课日期:<font color='warning'>
{
item
.
ClassDate
.
Value
:
yyyy
年
MM
月
dd
日
}
</font>\n>请点击:[查看备课内容](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
recipientPath
}
)"
;
PushWorkChatHelper
.
PushToWorkChat
(
content
,
x
.
WorkUserId
,
"新增备课通知"
);
});
}
...
...
@@ -3046,7 +3046,7 @@ namespace Edu.Module.Course
{
notifyObjs
.
ForEach
(
x
=>
{
var
content
=
$"<font color='info'>课后反馈通知</font> 有老师完成了课后反馈工作\n>**概要信息** \n>反馈老师:<font color='comment'>
{
user
.
AccountName
}
</font>\n>备课标题:<font color='comment'>
{
item
.
LessonPlan
}
(第
{
item
.
CourseNum
}
课)</font>\n>目标班级:<font color='comment'>
{
classInfo
.
ClassName
}
</font> \n>上课日期:<font color='warning'>
{
item
.
ClassDate
.
Value
.
ToString
(
"yyyy年MM月dd日"
)
}
</font>\n>请点击:[查看反馈内容](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
recipientPath
}
)"
;
var
content
=
$"<font color='info'>课后反馈通知</font> 有老师完成了课后反馈工作\n>**概要信息** \n>反馈老师:<font color='comment'>
{
user
.
AccountName
}
</font>\n>备课标题:<font color='comment'>
{
item
.
LessonPlan
}
(第
{
item
.
CourseNum
}
课)</font>\n>目标班级:<font color='comment'>
{
classInfo
.
ClassName
}
</font> \n>上课日期:<font color='warning'>
{
item
.
ClassDate
.
Value
:
yyyy
年
MM
月
dd
日
}
</font>\n>请点击:[查看反馈内容](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
recipientPath
}
)"
;
PushWorkChatHelper
.
PushToWorkChat
(
content
,
x
.
WorkUserId
,
"课后反馈通知"
);
});
}
...
...
Edu.Module.Course/EducationContractModule.cs
View file @
1257b2e8
...
...
@@ -558,7 +558,7 @@ namespace Edu.Module.Course
notifyList
.
ForEach
(
x
=>
{
var
recipientPath
=
HttpUtility
.
UrlEncode
(
$"/sale/contractAudit?no=
{
model
.
ContractNo
}
"
);
var
content
=
$"合同通知 你收到了一份需要审批的合同\n>**概要信息** \n>申 领 人:<font color='comment'>
{
userInfo
.
AccountName
}
</font>\n>合同编号:<font color='comment'>
{
model
.
ContractNo
}
</font>\n>合同类型:<font color='warning'>
{
EnumHelper
.
ToName
(
model
.
CType
)}
合同</font> \n>订单编号:<font color='comment'>
{
model
.
OrderId
}
</font>\n>合同金额:<font color='info'>
{
model
.
Money
.
ToString
(
"C"
)
}
</font>\n>请点击:[查看合同详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
recipientPath
}
)"
;
var
content
=
$"合同通知 你收到了一份需要审批的合同\n>**概要信息** \n>申 领 人:<font color='comment'>
{
userInfo
.
AccountName
}
</font>\n>合同编号:<font color='comment'>
{
model
.
ContractNo
}
</font>\n>合同类型:<font color='warning'>
{
EnumHelper
.
ToName
(
model
.
CType
)}
合同</font> \n>订单编号:<font color='comment'>
{
model
.
OrderId
}
</font>\n>合同金额:<font color='info'>
{
model
.
Money
:
C
}
</font>\n>请点击:[查看合同详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
recipientPath
}
)"
;
PushWorkChatHelper
.
PushToWorkChat
(
content
,
x
.
WorkUserId
,
"合同审批通知"
);
});
}
...
...
@@ -569,7 +569,7 @@ namespace Edu.Module.Course
if
(
notifyObj
!=
null
&&
!
string
.
IsNullOrEmpty
(
notifyObj
.
WorkUserId
))
{
var
recipientPath
=
HttpUtility
.
UrlEncode
(
$"/sale/contractManage?no=
{
model
.
ContractNo
}
"
);
var
content
=
$"
{((
state
==
2
||
state
==
6
)
?
"<font color='info'>合同审核通过</font>"
:
"`合同审核驳回`"
)}
你收到了一份合同审批结果通知\n>**概要信息** \n>审 批 人:<font color='comment'>
{
userInfo
.
AccountName
}
</font>\n>合同编号:<font color='comment'>
{
model
.
ContractNo
}
</font>\n>合同类型:<font color='warning'>
{
EnumHelper
.
ToName
(
model
.
CType
)}
合同</font> \n>订单编号:<font color='comment'>
{
model
.
OrderId
}
</font>\n>合同金额:<font color='info'>
{
model
.
Money
.
ToString
(
"C"
)
}
</font>\n>请点击:[查看合同](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
notifyObj
.
Id
}
&target=
{
recipientPath
}
)"
;
var
content
=
$"
{((
state
==
2
||
state
==
6
)
?
"<font color='info'>合同审核通过</font>"
:
"`合同审核驳回`"
)}
你收到了一份合同审批结果通知\n>**概要信息** \n>审 批 人:<font color='comment'>
{
userInfo
.
AccountName
}
</font>\n>合同编号:<font color='comment'>
{
model
.
ContractNo
}
</font>\n>合同类型:<font color='warning'>
{
EnumHelper
.
ToName
(
model
.
CType
)}
合同</font> \n>订单编号:<font color='comment'>
{
model
.
OrderId
}
</font>\n>合同金额:<font color='info'>
{
model
.
Money
:
C
}
</font>\n>请点击:[查看合同](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
notifyObj
.
Id
}
&target=
{
recipientPath
}
)"
;
PushWorkChatHelper
.
PushToWorkChat
(
content
,
notifyObj
.
WorkUserId
,
"合同审批通知"
);
}
}
...
...
@@ -579,7 +579,7 @@ namespace Edu.Module.Course
if
(
notifyObj
!=
null
&&
!
string
.
IsNullOrEmpty
(
notifyObj
.
WorkUserId
))
{
var
recipientPath
=
HttpUtility
.
UrlEncode
(
$"/sale/contractManage?no=
{
model
.
ContractNo
}
"
);
var
content
=
$"<font color='info'>合同已盖章</font> 你收到了一份合同加盖公章通知\n>**概要信息** \n>盖 章 人:<font color='comment'>
{
userInfo
.
AccountName
}
</font>\n>合同编号:<font color='comment'>
{
model
.
ContractNo
}
</font>\n>合同类型:<font color='warning'>
{
EnumHelper
.
ToName
(
model
.
CType
)}
合同</font> \n>订单编号:<font color='comment'>
{
model
.
OrderId
}
</font>\n>合同金额:<font color='info'>
{
model
.
Money
.
ToString
(
"C"
)
}
</font>\n>请点击:[查看合同](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
notifyObj
.
Id
}
&target=
{
recipientPath
}
)"
;
var
content
=
$"<font color='info'>合同已盖章</font> 你收到了一份合同加盖公章通知\n>**概要信息** \n>盖 章 人:<font color='comment'>
{
userInfo
.
AccountName
}
</font>\n>合同编号:<font color='comment'>
{
model
.
ContractNo
}
</font>\n>合同类型:<font color='warning'>
{
EnumHelper
.
ToName
(
model
.
CType
)}
合同</font> \n>订单编号:<font color='comment'>
{
model
.
OrderId
}
</font>\n>合同金额:<font color='info'>
{
model
.
Money
:
C
}
</font>\n>请点击:[查看合同](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
notifyObj
.
Id
}
&target=
{
recipientPath
}
)"
;
PushWorkChatHelper
.
PushToWorkChat
(
content
,
notifyObj
.
WorkUserId
,
"合同审批通知"
);
}
}
...
...
@@ -636,7 +636,7 @@ namespace Edu.Module.Course
notifyList
.
ForEach
(
x
=>
{
var
recipientPath
=
HttpUtility
.
UrlEncode
(
$"/sale/contractAudit?no=
{
model
.
ContractNo
}
"
);
var
content
=
$"合同通知 你收到了一份需要审批的合同\n>**概要信息** \n>申 领 人:<font color='comment'>
{
userInfo
.
AccountName
}
</font>\n>合同编号:<font color='comment'>
{
model
.
ContractNo
}
</font>\n>合同类型:<font color='warning'>
{
EnumHelper
.
ToName
(
model
.
CType
)}
合同</font> \n>订单编号:<font color='comment'>
{
model
.
OrderId
}
</font>\n>合同金额:<font color='info'>
{
model
.
Money
.
ToString
(
"C"
)
}
</font>\n>请点击:[查看合同详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
recipientPath
}
)"
;
var
content
=
$"合同通知 你收到了一份需要审批的合同\n>**概要信息** \n>申 领 人:<font color='comment'>
{
userInfo
.
AccountName
}
</font>\n>合同编号:<font color='comment'>
{
model
.
ContractNo
}
</font>\n>合同类型:<font color='warning'>
{
EnumHelper
.
ToName
(
model
.
CType
)}
合同</font> \n>订单编号:<font color='comment'>
{
model
.
OrderId
}
</font>\n>合同金额:<font color='info'>
{
model
.
Money
:
C
}
</font>\n>请点击:[查看合同详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
recipientPath
}
)"
;
PushWorkChatHelper
.
PushToWorkChat
(
content
,
x
.
WorkUserId
,
"合同审批通知"
);
});
}
...
...
@@ -647,7 +647,7 @@ namespace Edu.Module.Course
if
(
notifyObj
!=
null
&&
!
string
.
IsNullOrEmpty
(
notifyObj
.
WorkUserId
))
{
var
recipientPath
=
HttpUtility
.
UrlEncode
(
$"/sale/contractManage?no=
{
model
.
ContractNo
}
"
);
var
content
=
$"
{((
state
==
2
||
state
==
6
)
?
"<font color='info'>合同审核通过</font>"
:
"`合同审核驳回`"
)}
你收到了一份合同审批结果通知\n>**概要信息** \n>审 批 人:<font color='comment'>
{
userInfo
.
AccountName
}
</font>\n>合同编号:<font color='comment'>
{
model
.
ContractNo
}
</font>\n>合同类型:<font color='warning'>
{
EnumHelper
.
ToName
(
model
.
CType
)}
合同</font> \n>订单编号:<font color='comment'>
{
model
.
OrderId
}
</font>\n>合同金额:<font color='info'>
{
model
.
Money
.
ToString
(
"C"
)
}
</font>\n>请点击:[查看合同](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
notifyObj
.
Id
}
&target=
{
recipientPath
}
)"
;
var
content
=
$"
{((
state
==
2
||
state
==
6
)
?
"<font color='info'>合同审核通过</font>"
:
"`合同审核驳回`"
)}
你收到了一份合同审批结果通知\n>**概要信息** \n>审 批 人:<font color='comment'>
{
userInfo
.
AccountName
}
</font>\n>合同编号:<font color='comment'>
{
model
.
ContractNo
}
</font>\n>合同类型:<font color='warning'>
{
EnumHelper
.
ToName
(
model
.
CType
)}
合同</font> \n>订单编号:<font color='comment'>
{
model
.
OrderId
}
</font>\n>合同金额:<font color='info'>
{
model
.
Money
:
C
}
</font>\n>请点击:[查看合同](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
notifyObj
.
Id
}
&target=
{
recipientPath
}
)"
;
PushWorkChatHelper
.
PushToWorkChat
(
content
,
notifyObj
.
WorkUserId
,
"合同审批通知"
);
}
}
...
...
@@ -657,7 +657,7 @@ namespace Edu.Module.Course
if
(
notifyObj
!=
null
&&
!
string
.
IsNullOrEmpty
(
notifyObj
.
WorkUserId
))
{
var
recipientPath
=
HttpUtility
.
UrlEncode
(
$"/sale/contractManage?no=
{
model
.
ContractNo
}
"
);
var
content
=
$"<font color='info'>合同已盖章</font> 你收到了一份合同加盖公章通知\n>**概要信息** \n>盖 章 人:<font color='comment'>
{
userInfo
.
AccountName
}
</font>\n>合同编号:<font color='comment'>
{
model
.
ContractNo
}
</font>\n>合同类型:<font color='warning'>
{
EnumHelper
.
ToName
(
model
.
CType
)}
合同</font> \n>订单编号:<font color='comment'>
{
model
.
OrderId
}
</font>\n>合同金额:<font color='info'>
{
model
.
Money
.
ToString
(
"C"
)
}
</font>\n>请点击:[查看合同](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
notifyObj
.
Id
}
&target=
{
recipientPath
}
)"
;
var
content
=
$"<font color='info'>合同已盖章</font> 你收到了一份合同加盖公章通知\n>**概要信息** \n>盖 章 人:<font color='comment'>
{
userInfo
.
AccountName
}
</font>\n>合同编号:<font color='comment'>
{
model
.
ContractNo
}
</font>\n>合同类型:<font color='warning'>
{
EnumHelper
.
ToName
(
model
.
CType
)}
合同</font> \n>订单编号:<font color='comment'>
{
model
.
OrderId
}
</font>\n>合同金额:<font color='info'>
{
model
.
Money
:
C
}
</font>\n>请点击:[查看合同](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
notifyObj
.
Id
}
&target=
{
recipientPath
}
)"
;
PushWorkChatHelper
.
PushToWorkChat
(
content
,
notifyObj
.
WorkUserId
,
"合同审批通知"
);
}
}
...
...
@@ -685,7 +685,7 @@ namespace Edu.Module.Course
if
(
notifyObj
!=
null
&&
!
string
.
IsNullOrEmpty
(
notifyObj
.
WorkUserId
))
{
var
recipientPath
=
HttpUtility
.
UrlEncode
(
$"/sale/contractManage?no=
{
model
.
ContractNo
}
"
);
var
content
=
$"<font color='info'>合同签字确认</font> 你的一份合同用户已签字确认\n>**概要信息** \n>合同编号:<font color='comment'>
{
model
.
ContractNo
}
</font>\n>合同类型:<font color='warning'>
{
EnumHelper
.
ToName
(
model
.
CType
)}
合同</font> \n>订单编号:<font color='comment'>
{
model
.
OrderId
}
</font>\n>合同金额:<font color='info'>
{
model
.
Money
.
ToString
(
"C"
)
}
</font>\n>请点击:[查看合同](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
notifyObj
.
Id
}
&target=
{
recipientPath
}
)"
;
var
content
=
$"<font color='info'>合同签字确认</font> 你的一份合同用户已签字确认\n>**概要信息** \n>合同编号:<font color='comment'>
{
model
.
ContractNo
}
</font>\n>合同类型:<font color='warning'>
{
EnumHelper
.
ToName
(
model
.
CType
)}
合同</font> \n>订单编号:<font color='comment'>
{
model
.
OrderId
}
</font>\n>合同金额:<font color='info'>
{
model
.
Money
:
C
}
</font>\n>请点击:[查看合同](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
notifyObj
.
Id
}
&target=
{
recipientPath
}
)"
;
PushWorkChatHelper
.
PushToWorkChat
(
content
,
notifyObj
.
WorkUserId
,
"合同审批通知"
);
}
return
education_ContractRepository
.
Update
(
keyValues
,
new
WhereHelper
(
nameof
(
RB_Education_Contract_ViewModel
.
Id
),
contractId
));
...
...
Edu.Module.Exam/PaperModule.cs
View file @
1257b2e8
...
...
@@ -1248,24 +1248,25 @@ namespace Edu.Module.Exam
//学生答题详问题列表
if
(
studentDetailsList
!=
null
&&
studentDetailsList
.
Count
>
0
)
{
foreach
(
var
sItem
in
gItem
.
DetailsList
)
var
stuTempList
=
studentDetailsList
.
Where
(
qitem
=>
qitem
.
StuPaperGroupId
==
gItem
.
GId
);
foreach
(
var
sItem
in
stuTempList
)
{
var
tempModel
=
studentDetailsList
.
Where
(
qitem
=>
qitem
.
DetailsId
==
sItem
.
Id
)?.
FirstOrDefault
();
var
QuestionContentObj
=
analysisQuestion
.
ParsingQuestion
(
sItem
.
QuestionTypeKey
,
tempModel
.
StudentContent
);
var
questionModel
=
gItem
.
DetailsList
.
Where
(
qitem
=>
qitem
.
Id
==
sItem
.
Details
Id
)?.
FirstOrDefault
();
var
QuestionContentObj
=
analysisQuestion
.
ParsingQuestion
(
questionModel
.
QuestionTypeKey
,
sItem
.
StudentContent
,
isEdit
:
true
);
var
qObj
=
new
{
PaperDetailsId
=
sItem
.
Id
,
//试卷问题编号
StundetDetailsId
=
tempModel
.
Id
,
//考生答题编号
PaperDetailsId
=
sItem
.
Details
Id
,
//试卷问题编号
StundetDetailsId
=
sItem
.
Id
,
//考生答题编号
sItem
.
PaperId
,
sItem
.
Title
,
sItem
.
ShowTitle
,
questionModel
.
Title
,
questionModel
.
ShowTitle
,
QuestionContentObj
,
sItem
.
QuestionTypeId
,
sItem
.
QuestionTypeKey
,
sItem
.
DifficultyType
,
sItem
.
Score
,
Answer
=
tempModel
.
StundetAnswer
,
tempModel
.
StundetAnswer
,
questionModel
.
QuestionTypeId
,
questionModel
.
QuestionTypeKey
,
questionModel
.
DifficultyType
,
questionModel
.
Score
,
Answer
=
sItem
.
StundetAnswer
,
sItem
.
StundetAnswer
,
AnswerParse
=
""
,
StundetScore
=
0
,
};
...
...
@@ -1384,6 +1385,7 @@ namespace Edu.Module.Exam
StundetScore
=
0
,
IsMarking
=
0
,
StudentContent
=
item
.
QuestionContent
,
StuPaperGroupId
=
item
.
StuPaperGroupId
,
};
if
(
model
.
Id
>
0
)
{
...
...
Edu.Module.Question/AnalysisQuestionTypeModule.cs
View file @
1257b2e8
...
...
@@ -15,7 +15,7 @@ namespace Edu.Module.Question
/// 字母选项数组
/// </summary>
private
static
readonly
string
[]
LetterArray
=
new
string
[
26
]
{
"A"
,
"B"
,
"C"
,
"D"
,
"E"
,
"F"
,
"G"
,
"H"
,
"I"
,
"J"
,
"K"
,
"L"
,
"M"
,
"N"
,
"O"
,
"P"
,
"Q"
,
"R"
,
"S"
,
"T"
,
"U"
,
"V"
,
"W"
,
"X"
,
"Y"
,
"Z"
};
/// <summary>
/// 问题解析
/// </summary>
...
...
@@ -23,19 +23,20 @@ namespace Edu.Module.Question
/// <param name="data">选项内容</param>
/// <param name="isNoAnswer">是否去掉答案</param>
/// <param name="isOptionRandom">是否选项随机(1-随机选项)</param>
/// <param name="isEdit">是否选项随机(编辑状态)</param>
/// <returns></returns>
public
object
ParsingQuestion
(
string
key
,
string
data
,
bool
isNoAnswer
=
false
,
int
isOptionRandom
=
0
)
public
object
ParsingQuestion
(
string
key
,
string
data
,
bool
isNoAnswer
=
false
,
int
isOptionRandom
=
0
,
bool
isEdit
=
false
)
{
var
obj
=
new
object
();
switch
(
key
)
{
//单选题
case
"single"
:
obj
=
GetChooseOptionList
(
data
,
isOptionRandom
,
isNoAnswer
);
obj
=
GetChooseOptionList
(
data
,
isOptionRandom
,
isNoAnswer
,
isEdit
:
isEdit
);
break
;
//多选题
case
"multiple"
:
obj
=
GetChooseOptionList
(
data
,
isOptionRandom
,
isNoAnswer
);
obj
=
GetChooseOptionList
(
data
,
isOptionRandom
,
isNoAnswer
,
isEdit
:
isEdit
);
break
;
//填空题
case
"fill-in"
:
...
...
@@ -171,7 +172,7 @@ namespace Edu.Module.Question
break
;
//单选题(数字)
case
"single-number"
:
obj
=
GetChooseOptionList
(
data
,
isOptionRandom
,
isNoAnswer
,
isSingleNum
:
true
);
obj
=
GetChooseOptionList
(
data
,
isOptionRandom
,
isNoAnswer
,
isSingleNum
:
true
,
isEdit
:
isEdit
);
break
;
}
return
obj
;
...
...
@@ -184,15 +185,18 @@ namespace Edu.Module.Question
/// <param name="isOptionRandom"></param>
/// <param name="isNoAnswer"></param>
/// <returns></returns>
private
object
GetChooseOptionList
(
string
data
,
int
isOptionRandom
,
bool
isNoAnswer
,
bool
isSingleNum
=
false
)
private
object
GetChooseOptionList
(
string
data
,
int
isOptionRandom
,
bool
isNoAnswer
,
bool
isSingleNum
=
false
,
bool
isEdit
=
false
)
{
var
obj
=
new
object
();
var
singleList
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
List
<
optionItem
>>(
data
);
var
newList
=
new
List
<
optionItem
>();
singleList
.
ForEach
(
item
=>
if
(!
isEdit
)
{
item
.
ShowName
=
item
.
Name
;
});
singleList
.
ForEach
(
item
=>
{
item
.
ShowName
=
item
.
Name
;
});
}
//选项随机
if
(
isOptionRandom
==
1
)
{
...
...
Edu.WebApi/Controllers/Applet/AppletIndexController.cs
View file @
1257b2e8
...
...
@@ -608,6 +608,7 @@ namespace Edu.WebApi.Controllers.Applet
StundetDetailsId
=
sObj
.
GetInt
(
"StundetDetailsId"
),
LevelType
=
(
LevelTypeEnum
)
sObj
.
GetInt
(
"LevelType"
),
Answer
=
sObj
.
GetStringValue
(
"Answer"
),
StuPaperGroupId
=
jobj
.
GetInt
(
"GId"
),
};
paperDetailsList
.
Add
(
detailModel
);
}
...
...
Edu.WebApi/Timers/TimerJobj.cs
View file @
1257b2e8
...
...
@@ -100,7 +100,7 @@ namespace Edu.WebApi.Timers
finishGuest
=
new
System
.
Timers
.
Timer
()
{
Interval
=
(
1000
*
60
)
*
(
60
*
2
3
)
//23
小时执行一次
Interval
=
(
1000
*
60
)
*
(
60
*
2
)
//2
小时执行一次
};
finishGuest
.
Elapsed
+=
new
System
.
Timers
.
ElapsedEventHandler
(
DealGuestFinish
);
finishGuest
.
Enabled
=
true
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment