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
a3a5b121
Commit
a3a5b121
authored
Feb 22, 2022
by
liudong1993
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1 跳课
parent
0e48510b
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
332 additions
and
3 deletions
+332
-3
RB_Scroll_SkipCourse.cs
Edu.Model/Entity/Scroll/RB_Scroll_SkipCourse.cs
+71
-0
RB_Scroll_Appointment_ViewModel.cs
...Model/ViewModel/Scroll/RB_Scroll_Appointment_ViewModel.cs
+5
-0
RB_Scroll_SkipCourse_ViewModel.cs
Edu.Model/ViewModel/Scroll/RB_Scroll_SkipCourse_ViewModel.cs
+24
-0
RB_Order_Guest_Extend.cs
Edu.Model/ViewModel/Sell/RB_Order_Guest_Extend.cs
+5
-0
ScrollClassModule.cs
Edu.Module.Course/ScrollClassModule.cs
+93
-1
StudentBillModule.cs
Edu.Module.Course/StudentBillModule.cs
+10
-1
RB_Scroll_AppointmentRepository.cs
Edu.Repository/Scroll/RB_Scroll_AppointmentRepository.cs
+20
-0
RB_Scroll_SkipCourseRepository.cs
Edu.Repository/Scroll/RB_Scroll_SkipCourseRepository.cs
+52
-0
ScrollController.cs
Edu.WebApi/Controllers/Course/ScrollController.cs
+49
-0
StuController.cs
Edu.WebApi/Controllers/Course/StuController.cs
+3
-1
No files found.
Edu.Model/Entity/Scroll/RB_Scroll_SkipCourse.cs
0 → 100644
View file @
a3a5b121
using
Edu.Common.Enum
;
using
Edu.Common.Enum.Course
;
using
System
;
using
VT.FW.DB
;
namespace
Edu.Model.Entity.Scroll
{
/// <summary>
/// 滚动开班跳课类
/// </summary>
[
Serializable
]
[
DB
(
ConnectionName
=
"DefaultConnection"
)]
public
class
RB_Scroll_SkipCourse
{
/// <summary>
/// Id
/// </summary>
public
int
Id
{
get
;
set
;
}
/// <summary>
/// 学生ID
/// </summary>
public
int
StuId
{
get
;
set
;
}
/// <summary>
/// 订单OrderGuestId
/// </summary>
public
int
GuestId
{
get
;
set
;
}
/// <summary>
/// 课程ID
/// </summary>
public
int
CourseId
{
get
;
set
;
}
/// <summary>
/// 第几章节
/// </summary>
public
int
ChapterNo
{
get
;
set
;
}
/// <summary>
/// 删除
/// </summary>
public
int
Status
{
get
;
set
;
}
/// <summary>
/// 集团编号
/// </summary>
public
int
Group_Id
{
get
;
set
;
}
/// <summary>
/// 创建人
/// </summary>
public
int
CreateBy
{
get
;
set
;
}
/// <summary>
/// 创建时间
/// </summary>
public
DateTime
CreateTime
{
get
;
set
;
}
/// <summary>
/// 修改人
/// </summary>
public
int
UpdateBy
{
get
;
set
;
}
/// <summary>
/// 更新时间
/// </summary>
public
DateTime
UpdateTime
{
get
;
set
;
}
}
}
\ No newline at end of file
Edu.Model/ViewModel/Scroll/RB_Scroll_Appointment_ViewModel.cs
View file @
a3a5b121
...
@@ -30,6 +30,11 @@ namespace Edu.Model.ViewModel.Scroll
...
@@ -30,6 +30,11 @@ namespace Edu.Model.ViewModel.Scroll
/// </summary>
/// </summary>
public
string
StuIds
{
get
;
set
;
}
public
string
StuIds
{
get
;
set
;
}
/// <summary>
/// 订单GuestIDs
/// </summary>
public
string
GuestIds
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 老师ID
/// 老师ID
/// </summary>
/// </summary>
...
...
Edu.Model/ViewModel/Scroll/RB_Scroll_SkipCourse_ViewModel.cs
0 → 100644
View file @
a3a5b121
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
Edu.Model.Entity.Scroll
;
namespace
Edu.Model.ViewModel.Scroll
{
/// <summary>
/// 滚动开班跳课扩展类
/// </summary>
public
class
RB_Scroll_SkipCourse_ViewModel
:
RB_Scroll_SkipCourse
{
/// <summary>
/// 章节Ids
/// </summary>
public
string
ChapterNos
{
get
;
set
;
}
/// <summary>
/// 开始的章节
/// </summary>
public
int
SChapterNo
{
get
;
set
;
}
}
}
\ No newline at end of file
Edu.Model/ViewModel/Sell/RB_Order_Guest_Extend.cs
View file @
a3a5b121
...
@@ -225,5 +225,10 @@ namespace Edu.Model.ViewModel.Sell
...
@@ -225,5 +225,10 @@ namespace Edu.Model.ViewModel.Sell
/// 学员负责人
/// 学员负责人
/// </summary>
/// </summary>
public
string
StuCreateByName
{
get
;
set
;
}
public
string
StuCreateByName
{
get
;
set
;
}
/// <summary>
/// 预约数量
/// </summary>
public
int
AppointNum
{
get
;
set
;
}
}
}
}
}
Edu.Module.Course/ScrollClassModule.cs
View file @
a3a5b121
...
@@ -98,6 +98,10 @@ namespace Edu.Module.Course
...
@@ -98,6 +98,10 @@ namespace Edu.Module.Course
/// 字典
/// 字典
/// </summary>
/// </summary>
private
readonly
Rb_dictvalueRepository
dictvalueRepository
=
new
Rb_dictvalueRepository
();
private
readonly
Rb_dictvalueRepository
dictvalueRepository
=
new
Rb_dictvalueRepository
();
/// <summary>
/// 跳课记录
/// </summary>
private
readonly
RB_Scroll_SkipCourseRepository
scroll_SkipCourseRepository
=
new
RB_Scroll_SkipCourseRepository
();
#
region
班次
#
region
班次
...
@@ -531,7 +535,7 @@ namespace Edu.Module.Course
...
@@ -531,7 +535,7 @@ namespace Edu.Module.Course
courseModel
.
CourseName
,
courseModel
.
CourseName
,
TempleteList
TempleteList
};
};
}
}
/// <summary>
/// <summary>
/// 获取可预约老师的列表
/// 获取可预约老师的列表
...
@@ -2202,5 +2206,93 @@ namespace Edu.Module.Course
...
@@ -2202,5 +2206,93 @@ namespace Edu.Module.Course
}
}
#
endregion
#
endregion
#
region
学员跳课
/// <summary>
/// 学员跳课
/// </summary>
/// <param name="demodel"></param>
/// <param name="chapterNoList"></param>
/// <returns></returns>
public
string
SetGuestStartChapter
(
RB_Scroll_SkipCourse_ViewModel
demodel
,
List
<
int
>
chapterNoList
)
{
var
ogModel
=
order_GuestRepository
.
GetEntity
(
demodel
.
GuestId
);
var
courseModel
=
courseRepository
.
GetEntity
(
demodel
.
CourseId
);
if
(
courseModel
.
IsScrollClass
!=
1
)
{
return
"改学员不是约课学生,无法跳课"
;
}
//验证是否OK
if
(
chapterNoList
.
Contains
(
1
))
{
//从第一次课开始跳 都成立
var
sList
=
scroll_SkipCourseRepository
.
GetList
(
new
RB_Scroll_SkipCourse_ViewModel
()
{
Group_Id
=
demodel
.
Group_Id
,
StuId
=
demodel
.
StuId
,
GuestId
=
demodel
.
GuestId
});
if
(
sList
.
Any
())
{
return
"已有跳课数据,无法从第一次课开始跳"
;
}
}
else
{
#
region
验证是否有预约待确认的
var
sureList
=
scroll_AppointmentRepository
.
GetAppointList
(
new
RB_Scroll_Appointment_ViewModel
()
{
Group_Id
=
demodel
.
Group_Id
,
StuId
=
demodel
.
StuId
,
State
=
Common
.
Enum
.
Course
.
CourseAppointStateEnum
.
WaitSure
});
if
(
sureList
.
Any
())
{
return
"改学生有待确认的预约,无法设置跳课"
;
}
#
endregion
int
MinChapterNo
=
chapterNoList
.
Min
(
x
=>
x
);
//我已预约的
var
myAppointModel
=
scroll_AppointmentRepository
.
GetMyAppointmentNum
(
demodel
.
StuId
,
demodel
.
Group_Id
);
int
AppointNum
=
myAppointModel
?.
ScrollMinNum
??
0
;
//已预约的次数
if
(
demodel
.
SChapterNo
>
0
)
{
if
(
demodel
.
SChapterNo
!=
MinChapterNo
)
{
return
"开始课程有误"
;
}
}
else
{
if
(
ogModel
.
CourseChapterNo
+
1
+
AppointNum
!=
MinChapterNo
)
{
return
"开始章节有误,请刷新后再试("
+
(
ogModel
.
CourseChapterNo
+
1
+
AppointNum
)
+
")"
;
}
}
if
(
ogModel
.
CourseChapterNo
+
chapterNoList
.
Count
()
+
AppointNum
>
ogModel
.
TotalChapterNo
)
{
return
"总章节为"
+
ogModel
.
TotalChapterNo
+
",当前跳课超过了最大章节"
;
}
}
//更新订单学生表
Dictionary
<
string
,
object
>
keyValues
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Order_Guest_ViewModel
.
CourseChapterNo
),
ogModel
.
CourseChapterNo
+
chapterNoList
.
Count
()},
{
nameof
(
RB_Order_Guest_ViewModel
.
CompleteHours
),
ogModel
.
CompleteHours
+
chapterNoList
.
Count
()
*
2
}
};
List
<
WhereHelper
>
wheres
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(){
FiledName
=
nameof
(
RB_Order_Guest_ViewModel
.
Id
),
FiledValue
=
demodel
.
GuestId
,
OperatorEnum
=
OperatorEnum
.
Equal
}
};
bool
flag
=
order_GuestRepository
.
Update
(
keyValues
,
wheres
);
if
(
flag
)
{
//增加补课记录
foreach
(
var
ChapterNo
in
chapterNoList
)
{
demodel
.
ChapterNo
=
ChapterNo
;
scroll_SkipCourseRepository
.
Insert
(
demodel
);
}
if
(
chapterNoList
.
Contains
(
1
)
||
demodel
.
SChapterNo
>
0
)
{
//更新约课记录的章节 (依次增加)
scroll_AppointmentRepository
.
UpdateAppointSkipCourse
(
demodel
.
StuId
,
demodel
.
GuestId
,
ChapterNum
:
chapterNoList
.
Count
(),
demodel
.
SChapterNo
,
demodel
.
Group_Id
);
}
return
""
;
}
return
"出错了,请联系管理员"
;
}
#
endregion
}
}
}
}
Edu.Module.Course/StudentBillModule.cs
View file @
a3a5b121
...
@@ -23,6 +23,7 @@ using Edu.Repository.Finance;
...
@@ -23,6 +23,7 @@ using Edu.Repository.Finance;
using
Edu.Repository.Flow
;
using
Edu.Repository.Flow
;
using
Edu.Repository.Grade
;
using
Edu.Repository.Grade
;
using
Edu.Repository.Log
;
using
Edu.Repository.Log
;
using
Edu.Repository.Scroll
;
using
Edu.Repository.Sell
;
using
Edu.Repository.Sell
;
using
Edu.Repository.User
;
using
Edu.Repository.User
;
using
Newtonsoft.Json.Linq
;
using
Newtonsoft.Json.Linq
;
...
@@ -126,6 +127,10 @@ namespace Edu.Module.Course
...
@@ -126,6 +127,10 @@ namespace Edu.Module.Course
/// 学生仓储层对象
/// 学生仓储层对象
/// </summary>
/// </summary>
private
readonly
RB_StudentRepository
studentRepository
=
new
RB_StudentRepository
();
private
readonly
RB_StudentRepository
studentRepository
=
new
RB_StudentRepository
();
/// <summary>
/// 约课记录
/// </summary>
private
readonly
RB_Scroll_AppointmentRepository
scroll_AppointmentRepository
=
new
RB_Scroll_AppointmentRepository
();
/// <summary>
/// <summary>
...
@@ -498,7 +503,9 @@ namespace Edu.Module.Course
...
@@ -498,7 +503,9 @@ namespace Edu.Module.Course
});
});
}
}
string
GuestIds
=
string
.
Join
(
","
,
orderstudentList
.
Select
(
x
=>
x
.
Id
));
var
appointList
=
scroll_AppointmentRepository
.
GetAppointList
(
new
Model
.
ViewModel
.
Scroll
.
RB_Scroll_Appointment_ViewModel
()
{
Group_Id
=
demodel
.
Group_Id
,
GuestIds
=
GuestIds
,
State
=
CourseAppointStateEnum
.
WaitCourse
});
foreach
(
var
item
in
orderstudentList
)
foreach
(
var
item
in
orderstudentList
)
{
{
var
tempAssistList
=
assistList
?.
Where
(
qitem
=>
qitem
.
StuId
==
item
.
StuId
)?.
ToList
();
var
tempAssistList
=
assistList
?.
Where
(
qitem
=>
qitem
.
StuId
==
item
.
StuId
)?.
ToList
();
...
@@ -536,6 +543,8 @@ namespace Edu.Module.Course
...
@@ -536,6 +543,8 @@ namespace Edu.Module.Course
{
{
item
.
StuSourceIdName
=
transStudentList
?.
FirstOrDefault
(
qitem
=>
qitem
.
StuId
==
item
.
StuSourceId
)?.
StuName
??
""
;
item
.
StuSourceIdName
=
transStudentList
?.
FirstOrDefault
(
qitem
=>
qitem
.
StuId
==
item
.
StuSourceId
)?.
StuName
??
""
;
}
}
item
.
AppointNum
=
appointList
.
Where
(
x
=>
x
.
GuestId
==
item
.
Id
)?.
Count
()
??
0
;
}
}
}
}
return
orderstudentList
;
return
orderstudentList
;
...
...
Edu.Repository/Scroll/RB_Scroll_AppointmentRepository.cs
View file @
a3a5b121
...
@@ -174,6 +174,10 @@ ORDER BY r.Id desc ";
...
@@ -174,6 +174,10 @@ ORDER BY r.Id desc ";
{
{
where
+=
$@" and r.
{
nameof
(
RB_Scroll_Appointment_ViewModel
.
StuId
)}
in(
{
demodel
.
StuIds
}
)"
;
where
+=
$@" and r.
{
nameof
(
RB_Scroll_Appointment_ViewModel
.
StuId
)}
in(
{
demodel
.
StuIds
}
)"
;
}
}
if
(!
string
.
IsNullOrEmpty
(
demodel
.
GuestIds
))
{
where
+=
$@" and r.
{
nameof
(
RB_Scroll_Appointment_ViewModel
.
GuestId
)}
in(
{
demodel
.
GuestIds
}
)"
;
}
if
(
demodel
.
CourseId
>
0
)
if
(
demodel
.
CourseId
>
0
)
{
{
where
+=
$@" and r.
{
nameof
(
RB_Scroll_Appointment_ViewModel
.
CourseId
)}
=
{
demodel
.
CourseId
}
"
;
where
+=
$@" and r.
{
nameof
(
RB_Scroll_Appointment_ViewModel
.
CourseId
)}
=
{
demodel
.
CourseId
}
"
;
...
@@ -232,5 +236,21 @@ WHERE {where}
...
@@ -232,5 +236,21 @@ WHERE {where}
ORDER BY r.Id desc "
;
ORDER BY r.Id desc "
;
return
Get
<
RB_Scroll_Appointment_ViewModel
>(
sql
,
parameters
).
ToList
();
return
Get
<
RB_Scroll_Appointment_ViewModel
>(
sql
,
parameters
).
ToList
();
}
}
/// <summary>
/// 更新预约章节
/// </summary>
/// <param name="stuId"></param>
/// <param name="guestId"></param>
/// <param name="ChapterNum"></param>
/// <param name="groupId"></param>
public
void
UpdateAppointSkipCourse
(
int
stuId
,
int
guestId
,
int
ChapterNum
,
int
SChapterNo
,
int
groupId
)
{
string
sql
=
$@"UPDATE rb_scroll_appointment SET ChapterNo = ChapterNo +
{
ChapterNum
}
WHERE Group_Id =
{
groupId
}
and StuId =
{
stuId
}
and GuestId =
{
guestId
}
"
;
if
(
SChapterNo
>
0
)
{
sql
+=
$@" and ChapterNo >=
{
SChapterNo
}
"
;
}
Execute
(
sql
);
}
}
}
}
}
Edu.Repository/Scroll/RB_Scroll_SkipCourseRepository.cs
0 → 100644
View file @
a3a5b121
using
Edu.Common.Enum
;
using
Edu.Model.Entity.Scroll
;
using
Edu.Model.ViewModel.Scroll
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
VT.FW.DB.Dapper
;
namespace
Edu.Repository.Scroll
{
/// <summary>
/// 滚动开班跳课仓储层
/// </summary>
public
class
RB_Scroll_SkipCourseRepository
:
BaseRepository
<
RB_Scroll_SkipCourse
>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public
List
<
RB_Scroll_SkipCourse_ViewModel
>
GetList
(
RB_Scroll_SkipCourse_ViewModel
demodel
)
{
DynamicParameters
parameters
=
new
DynamicParameters
();
string
where
=
$@" 1=1 and r.
{
nameof
(
RB_Scroll_SkipCourse_ViewModel
.
Status
)}
=0"
;
if
(
demodel
.
Group_Id
>
0
)
{
where
+=
$@" and r.
{
nameof
(
RB_Scroll_SkipCourse_ViewModel
.
Group_Id
)}
=
{
demodel
.
Group_Id
}
"
;
}
if
(
demodel
.
StuId
>
0
)
{
where
+=
$@" and r.
{
nameof
(
RB_Scroll_SkipCourse_ViewModel
.
StuId
)}
=
{
demodel
.
StuId
}
"
;
}
if
(
demodel
.
GuestId
>
0
)
{
where
+=
$@" and r.
{
nameof
(
RB_Scroll_SkipCourse_ViewModel
.
GuestId
)}
=
{
demodel
.
GuestId
}
"
;
}
if
(
demodel
.
CourseId
>
0
)
{
where
+=
$@" and r.
{
nameof
(
RB_Scroll_SkipCourse_ViewModel
.
CourseId
)}
=
{
demodel
.
CourseId
}
"
;
}
string
sql
=
$@"
SELECT * From RB_Scroll_SkipCourse r
WHERE
{
where
}
ORDER BY r.Id asc "
;
return
Get
<
RB_Scroll_SkipCourse_ViewModel
>(
sql
,
parameters
).
ToList
();
}
}
}
Edu.WebApi/Controllers/Course/ScrollController.cs
View file @
a3a5b121
...
@@ -568,5 +568,54 @@ namespace Edu.WebApi.Controllers.Course
...
@@ -568,5 +568,54 @@ namespace Edu.WebApi.Controllers.Course
}
}
#
endregion
#
endregion
#
region
学员管理
/// <summary>
/// 设置学员 跳课
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
SetGuestStartChapter
()
{
var
userInfo
=
base
.
UserInfo
;
RB_Scroll_SkipCourse_ViewModel
demodel
=
JsonHelper
.
DeserializeObject
<
RB_Scroll_SkipCourse_ViewModel
>(
base
.
RequestParm
.
Msg
.
ToString
());
if
(
demodel
.
StuId
<=
0
||
demodel
.
GuestId
<=
0
)
{
return
ApiResult
.
ParamIsNull
(
"请传递学生"
);
}
if
(
demodel
.
CourseId
<=
0
)
{
return
ApiResult
.
ParamIsNull
(
"请传递课程ID"
);
}
if
(
string
.
IsNullOrEmpty
(
demodel
.
ChapterNos
))
{
return
ApiResult
.
ParamIsNull
(
"请选择跳过的章节"
);
}
List
<
int
>
ChapterNoList
=
JsonHelper
.
DeserializeObject
<
List
<
int
>>(
"["
+
demodel
.
ChapterNos
+
"]"
);
int
MinSort
=
ChapterNoList
.
Min
(
x
=>
x
);
string
ShiftSort
=
""
;
for
(
var
i
=
0
;
i
<
ChapterNoList
.
Count
();
i
++)
{
ShiftSort
+=
(
MinSort
+
i
)
+
","
;
}
if
(
ShiftSort
!=
demodel
.
ChapterNos
+
","
)
{
return
ApiResult
.
ParamIsNull
(
"需连续的章节"
);
}
demodel
.
Status
=
0
;
demodel
.
Group_Id
=
userInfo
.
Group_Id
;
demodel
.
CreateBy
=
userInfo
.
Id
;
demodel
.
CreateTime
=
DateTime
.
Now
;
demodel
.
UpdateBy
=
userInfo
.
Id
;
demodel
.
UpdateTime
=
DateTime
.
Now
;
string
msg
=
scrollClassModule
.
SetGuestStartChapter
(
demodel
,
ChapterNoList
);
if
(
msg
==
""
)
{
return
ApiResult
.
Success
();
}
else
{
return
ApiResult
.
Failed
(
msg
);
}
}
#
endregion
}
}
}
}
Edu.WebApi/Controllers/Course/StuController.cs
View file @
a3a5b121
...
@@ -410,7 +410,9 @@ namespace Edu.WebApi.Controllers.Course
...
@@ -410,7 +410,9 @@ namespace Edu.WebApi.Controllers.Course
CreateTypeName
=
item
.
CreateType
.
ToName
(),
CreateTypeName
=
item
.
CreateType
.
ToName
(),
item
.
StuSourceId
,
item
.
StuSourceId
,
item
.
StuSourceIdName
,
item
.
StuSourceIdName
,
item
.
EnterpriseName
item
.
EnterpriseName
,
item
.
CourseChapterNo
,
item
.
AppointNum
});
});
}
}
pageModel
.
Count
=
rowsCount
;
pageModel
.
Count
=
rowsCount
;
...
...
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