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
e3f7ae99
Commit
e3f7ae99
authored
Aug 17, 2021
by
吴春
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/Kui2/education
parents
33868749
8e1c50c7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
1340 additions
and
138 deletions
+1340
-138
CacheKey.cs
Edu.Cache/CacheKey.cs
+5
-0
UserReidsCache.cs
Edu.Cache/User/UserReidsCache.cs
+1
-3
WeChatReidsCache.cs
Edu.Cache/WeChat/WeChatReidsCache.cs
+111
-0
Config.cs
Edu.Common/Config.cs
+11
-0
WorkChatConfig.cs
Edu.Model/CacheModel/WorkChatConfig.cs
+86
-0
RB_Examination_Publish.cs
Edu.Model/Entity/Exam/RB_Examination_Publish.cs
+143
-0
RB_Order.cs
Edu.Model/Entity/Sell/RB_Order.cs
+30
-3
RB_Group.cs
Edu.Model/Entity/User/RB_Group.cs
+5
-0
ExamFolderTreeModel.cs
Edu.Model/ViewModel/Exam/ExamFolderTreeModel.cs
+32
-0
RB_Examination_Paper_ViewModel.cs
Edu.Model/ViewModel/Exam/RB_Examination_Paper_ViewModel.cs
+10
-0
RB_Examination_Publish_ViewModel.cs
Edu.Model/ViewModel/Exam/RB_Examination_Publish_ViewModel.cs
+15
-0
RB_Question_ViewModel.cs
Edu.Model/ViewModel/Question/RB_Question_ViewModel.cs
+5
-0
CourseOfferModule.cs
Edu.Module.Course/CourseOfferModule.cs
+6
-5
EducationContractModule.cs
Edu.Module.Course/EducationContractModule.cs
+7
-9
OrderModule.cs
Edu.Module.Course/OrderModule.cs
+47
-10
StudentBillModule.cs
Edu.Module.Course/StudentBillModule.cs
+0
-14
OrderChangeModule.cs
Edu.Module.EduTask/OrderChangeModule.cs
+6
-0
PaperModule.cs
Edu.Module.Exam/PaperModule.cs
+212
-4
QYWeChatModule.cs
Edu.Module.QYWeChat/QYWeChatModule.cs
+24
-7
GroupModule.cs
Edu.Module.User/GroupModule.cs
+10
-0
RB_Examination_PaperRepository.cs
Edu.Repository/Exam/RB_Examination_PaperRepository.cs
+62
-0
RB_Examination_PublishRepository.cs
Edu.Repository/Exam/RB_Examination_PublishRepository.cs
+41
-0
RB_GroupRepository.cs
Edu.Repository/User/RB_GroupRepository.cs
+4
-0
Edu.ThirdCore.csproj
Edu.ThirdCore/Edu.ThirdCore.csproj
+1
-0
QYWeiXinConfig.cs
Edu.ThirdCore/QYWinXin/QYWeiXinConfig.cs
+13
-0
QYWeiXinHelper.cs
Edu.ThirdCore/QYWinXin/QYWeiXinHelper.cs
+73
-0
ClassController.cs
Edu.WebApi/Controllers/Course/ClassController.cs
+1
-0
OrderController.cs
Edu.WebApi/Controllers/Course/OrderController.cs
+10
-4
QuestionController.cs
Edu.WebApi/Controllers/Course/QuestionController.cs
+52
-46
StuController.cs
Edu.WebApi/Controllers/Course/StuController.cs
+7
-5
ExamController.cs
Edu.WebApi/Controllers/Exam/ExamController.cs
+157
-26
QYWeChatController.cs
Edu.WebApi/Controllers/QYWeChat/QYWeChatController.cs
+136
-0
Startup.cs
Edu.WebApi/Startup.cs
+16
-2
appsettings.json
Edu.WebApi/appsettings.json
+1
-0
No files found.
Edu.Cache/CacheKey.cs
View file @
e3f7ae99
...
@@ -58,5 +58,10 @@ namespace Edu.Cache
...
@@ -58,5 +58,10 @@ namespace Edu.Cache
/// </summary>
/// </summary>
public
static
string
QYWeChat_EmpToken_Key
=
"EWeChat_Token_Key_"
;
public
static
string
QYWeChat_EmpToken_Key
=
"EWeChat_Token_Key_"
;
/// <summary>
/// 企业微信配置文件
/// </summary>
public
static
string
QYWECHAT_GLOBAL_CONFIG_KEY
=
"QYWECHAT_GLOBAL_CONFIG"
;
}
}
}
}
Edu.Cache/User/UserReidsCache.cs
View file @
e3f7ae99
...
@@ -84,9 +84,7 @@ namespace Edu.Cache.User
...
@@ -84,9 +84,7 @@ namespace Edu.Cache.User
/// 获取缓存
/// 获取缓存
/// </summary>
/// </summary>
/// <param name="cacheKey"></param>
/// <param name="cacheKey"></param>
/// <param name="Data"></param>
public
static
object
Get
(
string
cacheKey
)
/// <param name="JwtExpirTime"></param>
public
static
object
Get
(
string
cacheKey
,
object
Data
,
int
JwtExpirTime
)
{
{
try
try
{
{
...
...
Edu.Cache/WeChat/WeChatReidsCache.cs
View file @
e3f7ae99
using
Edu.CacheManager.Base
;
using
Edu.CacheManager.Base
;
using
Edu.Model.CacheModel
;
using
Edu.Repository.WeChat
;
using
System
;
using
System
;
using
System.Linq
;
namespace
Edu.Cache.WeChat
namespace
Edu.Cache.WeChat
{
{
...
@@ -15,6 +18,13 @@ namespace Edu.Cache.WeChat
...
@@ -15,6 +18,13 @@ namespace Edu.Cache.WeChat
static
readonly
RedisHelper
redis
=
new
RedisHelper
(
REDIS_DB3
);
static
readonly
RedisHelper
redis
=
new
RedisHelper
(
REDIS_DB3
);
/// <summary>
/// 账号仓储层对象
/// </summary>
static
readonly
RB_WeChat_ConfigRepository
configRepository
=
new
RB_WeChat_ConfigRepository
();
/// <summary>
/// <summary>
/// 设置缓存
/// 设置缓存
/// </summary>
/// </summary>
...
@@ -75,6 +85,107 @@ namespace Edu.Cache.WeChat
...
@@ -75,6 +85,107 @@ namespace Edu.Cache.WeChat
}
}
}
}
#
region
企业微信全局配置
/// <summary>
/// 设置配置缓存
/// </summary>
/// <param name="model"></param>
public
static
void
SetConfig
(
WorkChatConfig
model
,
int
JwtExpirTime
)
{
try
{
TimeSpan
ts
=
GetExpirTime
(
JwtExpirTime
);
redis
.
StringSet
<
WorkChatConfig
>(
CacheKey
.
QYWECHAT_GLOBAL_CONFIG_KEY
+
"_"
+
model
.
Group_Id
,
model
,
ts
);
}
catch
(
Exception
ex
)
{
Common
.
Plugin
.
LogHelper
.
Write
(
ex
,
"WorkChatConfig缓存设置失败"
);
}
}
/// <summary>
/// 更新全局配置
/// </summary>
/// <param name="id"></param>
public
static
void
UpdateConfig
(
int
id
)
{
var
model
=
configRepository
.
GetEntity
(
id
);
if
(
model
!=
null
)
{
var
chatConfig
=
new
WorkChatConfig
{
Id
=
model
.
Id
,
Group_Id
=
model
.
Group_Id
,
Name
=
model
.
Name
,
WX_CorpId
=
model
.
WX_CorpId
,
Social_Code
=
model
.
Social_Code
,
Employee_Secret
=
model
.
Employee_Secret
,
Contact_Secret
=
model
.
Contact_Secret
,
TelEvent_CallBack
=
model
.
TelEvent_CallBack
,
Token
=
model
.
Token
,
Encoding_Aes_Key
=
model
.
Encoding_Aes_Key
,
EmpEvent_CallBack
=
model
.
EmpEvent_CallBack
,
CreateBy
=
model
.
CreateBy
,
CreateTime
=
model
.
CreateTime
,
UpdateBy
=
model
.
UpdateBy
,
UpdateTime
=
model
.
UpdateTime
};
SetConfig
(
chatConfig
,
Common
.
Config
.
JwtExpirTime
);
}
}
/// <summary>
/// 获取配置换成
/// </summary>
/// <returns></returns>
public
static
WorkChatConfig
GetWorkChatConfig
(
int
groupId
)
{
WorkChatConfig
chatConfig
=
null
;
string
cacheKey
=
CacheKey
.
QYWECHAT_GLOBAL_CONFIG_KEY
+
"_"
+
groupId
;
try
{
chatConfig
=
redis
.
StringGet
<
WorkChatConfig
>(
cacheKey
);
}
catch
(
Exception
ex
)
{
Common
.
Plugin
.
LogHelper
.
Write
(
ex
,
"GeWorkChatConfig"
);
}
if
(
chatConfig
==
null
)
{
var
model
=
configRepository
.
GetList
(
new
Model
.
ViewModel
.
WeChat
.
RB_WeChat_Config_ViewModel
()
{
Group_Id
=
groupId
}).
FirstOrDefault
();
if
(
model
!=
null
)
{
chatConfig
=
new
WorkChatConfig
{
Id
=
model
.
Id
,
Group_Id
=
model
.
Group_Id
,
Name
=
model
.
Name
,
WX_CorpId
=
model
.
WX_CorpId
,
Social_Code
=
model
.
Social_Code
,
Employee_Secret
=
model
.
Employee_Secret
,
Contact_Secret
=
model
.
Contact_Secret
,
TelEvent_CallBack
=
model
.
TelEvent_CallBack
,
Token
=
model
.
Token
,
Encoding_Aes_Key
=
model
.
Encoding_Aes_Key
,
EmpEvent_CallBack
=
model
.
EmpEvent_CallBack
,
CreateBy
=
model
.
CreateBy
,
CreateTime
=
model
.
CreateTime
,
UpdateBy
=
model
.
UpdateBy
,
UpdateTime
=
model
.
UpdateTime
};
SetConfig
(
chatConfig
,
Common
.
Config
.
JwtExpirTime
);
}
}
return
chatConfig
;
}
#
endregion
}
}
/// <summary>
/// <summary>
...
...
Edu.Common/Config.cs
View file @
e3f7ae99
...
@@ -159,6 +159,17 @@ namespace Edu.Common
...
@@ -159,6 +159,17 @@ namespace Edu.Common
}
}
}
}
/// <summary>
/// 企业应用APP地址
/// </summary>
public
static
string
WorkAPPDomain
{
get
{
return
ReadConfigKey
(
"WorkAPPDomain"
);
}
}
/// <summary>
/// <summary>
/// 获取Oss文件全路径
/// 获取Oss文件全路径
/// </summary>
/// </summary>
...
...
Edu.Model/CacheModel/WorkChatConfig.cs
0 → 100644
View file @
e3f7ae99
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
Edu.Model.CacheModel
{
/// <summary>
/// 企业微信配置
/// </summary>
public
class
WorkChatConfig
{
/// <summary>
/// Id
/// </summary>
public
int
Id
{
get
;
set
;
}
/// <summary>
/// 企业名称
/// </summary>
public
string
Name
{
get
;
set
;
}
/// <summary>
/// 企业微信ID
/// </summary>
public
string
WX_CorpId
{
get
;
set
;
}
/// <summary>
/// 企业代码(企业统一社会信用代码)
/// </summary>
public
string
Social_Code
{
get
;
set
;
}
/// <summary>
/// 企业通讯录secret
/// </summary>
public
string
Employee_Secret
{
get
;
set
;
}
/// <summary>
/// 企业外部联系人secret
/// </summary>
public
string
Contact_Secret
{
get
;
set
;
}
/// <summary>
/// 事件回调地址(通讯录)
/// </summary>
public
string
TelEvent_CallBack
{
get
;
set
;
}
/// <summary>
/// 回调token
/// </summary>
public
string
Token
{
get
;
set
;
}
/// <summary>
/// 回调消息加密串
/// </summary>
public
string
Encoding_Aes_Key
{
get
;
set
;
}
/// <summary>
/// 事件回调地址(外部人员)
/// </summary>
public
string
EmpEvent_CallBack
{
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
;
}
}
}
Edu.Model/Entity/Exam/RB_Examination_Publish.cs
0 → 100644
View file @
e3f7ae99
using
System
;
using
VT.FW.DB
;
namespace
Edu.Model.Entity.Exam
{
/// <summary>
/// 试卷发布实体类
/// </summary>
[
Serializable
]
[
DB
(
ConnectionName
=
"DefaultConnection"
)]
public
class
RB_Examination_Publish
{
/// <summary>
/// 发布考试主键编号
/// </summary>
public
int
Id
{
get
;
set
;
}
/// <summary>
/// 试卷编号
/// </summary>
public
int
PaperId
{
get
;
set
;
}
/// <summary>
/// 发放类型(1-按班级发放,2-指定学生发放)
/// </summary>
public
int
PublishType
{
get
;
set
;
}
/// <summary>
/// 考试开始时间
/// </summary>
public
DateTime
ExamStartTime
{
get
;
set
;
}
/// <summary>
/// 考试结束时间
/// </summary>
public
DateTime
ExamEndTime
{
get
;
set
;
}
/// <summary>
/// 考试限时
/// </summary>
public
int
ExamTimes
{
get
;
set
;
}
/// <summary>
/// 限时提交(多少分钟内不允许提交)
/// </summary>
public
int
SubmitTimes
{
get
;
set
;
}
/// <summary>
/// 限时进入(多少分钟后不允许参加考试)
/// </summary>
public
int
EnterTimes
{
get
;
set
;
}
/// <summary>
/// 创建人
/// </summary>
public
int
CreateBy
{
get
;
set
;
}
/// <summary>
/// 创建时间
/// </summary>
public
DateTime
CreateTime
{
get
;
set
;
}
/// <summary>
/// 集团编号
/// </summary>
public
int
Group_Id
{
get
;
set
;
}
/// <summary>
/// 学校编号
/// </summary>
public
int
School_Id
{
get
;
set
;
}
/// <summary>
/// 删除状态
/// </summary>
public
int
Status
{
get
;
set
;
}
/// <summary>
/// 题目乱序(1-是)
/// </summary>
public
int
IsQuestionRandom
{
get
;
set
;
}
/// <summary>
/// 选项乱序(1-是)
/// </summary>
public
int
IsOptionRandom
{
get
;
set
;
}
/// <summary>
/// 学生离开作答页面(1-是)
/// </summary>
public
int
IsLeaveAnswer
{
get
;
set
;
}
/// <summary>
/// 离开次数
/// </summary>
public
int
LeaveTimes
{
get
;
set
;
}
/// <summary>
/// 是否禁用多终端(1-是)
/// </summary>
public
int
IsDisableMultiTerminal
{
get
;
set
;
}
/// <summary>
/// 是否只允许(App、PC)考试(1-是)
/// </summary>
public
int
IsExamType
{
get
;
set
;
}
/// <summary>
/// 考试终端类型(1-App,2-PC)
/// </summary>
public
int
ExamTypeValue
{
get
;
set
;
}
/// <summary>
/// 考试须知
/// </summary>
public
string
ExamNotice
{
get
;
set
;
}
/// <summary>
/// 及格分数
/// </summary>
public
decimal
PassScore
{
get
;
set
;
}
/// <summary>
/// 考试到达截止时间后自动提交(1-是)
/// </summary>
public
int
IsAutoSubmit
{
get
;
set
;
}
/// <summary>
/// 填空类型的题目设为主观题(1-是)
/// </summary>
public
int
FillInIsSubject
{
get
;
set
;
}
/// <summary>
/// 填空题答案不区分大小写(1-是)
/// </summary>
public
int
FillInIsIgnore
{
get
;
set
;
}
/// <summary>
/// 多选题未选全给一半分(1-是)
/// </summary>
public
int
IsHalfScore
{
get
;
set
;
}
}
}
Edu.Model/Entity/Sell/RB_Order.cs
View file @
e3f7ae99
using
Edu.Common.Enum
;
using
Edu.Common.Enum.Course
;
using
Edu.Common.Enum.Course
;
using
Edu.Common.Enum.Sale
;
using
Edu.Common.Enum.Sale
;
using
System
;
using
System
;
using
VT.FW.DB
;
using
VT.FW.DB
;
...
@@ -32,63 +31,83 @@ namespace Edu.Model.Entity.Sell
...
@@ -32,63 +31,83 @@ namespace Edu.Model.Entity.Sell
/// 单价
/// 单价
/// </summary>
/// </summary>
public
decimal
Class_Price
{
get
;
set
;
}
public
decimal
Class_Price
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 成交单价
/// 成交单价
/// </summary>
/// </summary>
public
decimal
Unit_Price
{
get
;
set
;
}
public
decimal
Unit_Price
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 客人数量
/// 客人数量
/// </summary>
/// </summary>
public
int
GuestNum
{
get
;
set
;
}
public
int
GuestNum
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 应收总额
/// 应收总额
/// </summary>
/// </summary>
public
decimal
PreferPrice
{
get
;
set
;
}
public
decimal
PreferPrice
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 实收金额
/// 实收金额
/// </summary>
/// </summary>
public
decimal
Income
{
get
;
set
;
}
public
decimal
Income
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 退款金额
/// 退款金额
/// </summary>
/// </summary>
public
decimal
Refund
{
get
;
set
;
}
public
decimal
Refund
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 优惠金额
/// 优惠金额
/// </summary>
/// </summary>
public
decimal
DiscountMoney
{
get
;
set
;
}
public
decimal
DiscountMoney
{
get
;
set
;
}
/// <summary>
/// 每人优惠金额
/// </summary>
public
decimal
PerDiscountMoney
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 平台税金
/// 平台税金
/// </summary>
/// </summary>
public
decimal
PlatformTax
{
get
;
set
;
}
public
decimal
PlatformTax
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 订单状态 枚举
/// 订单状态 枚举
/// </summary>
/// </summary>
public
OrderStateEnum
OrderState
{
get
;
set
;
}
public
OrderStateEnum
OrderState
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 订单来源 枚举
/// 订单来源 枚举
/// </summary>
/// </summary>
public
OrderSourceEnum
OrderSource
{
get
;
set
;
}
public
OrderSourceEnum
OrderSource
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 业务人员
/// 业务人员
/// </summary>
/// </summary>
public
int
EnterID
{
get
;
set
;
}
public
int
EnterID
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 订单来自于 枚举
/// 订单来自于 枚举
/// </summary>
/// </summary>
public
OrderFormEnum
OrderForm
{
get
;
set
;
}
public
OrderFormEnum
OrderForm
{
get
;
set
;
}
private
decimal
commission
=
-
1
;
private
decimal
commission
=
-
1
;
/// <summary>
/// <summary>
/// 提成金额
/// 提成金额
/// </summary>
/// </summary>
public
decimal
CommissionMoney
{
get
=>
commission
;
set
=>
commission
=
value
;
}
public
decimal
CommissionMoney
{
get
=>
commission
;
set
=>
commission
=
value
;
}
/// <summary>
/// <summary>
/// 额外奖励金额
/// 额外奖励金额
/// </summary>
/// </summary>
public
decimal
ExtraRewardMoney
{
get
;
set
;
}
public
decimal
ExtraRewardMoney
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 额外扣除金额
/// 额外扣除金额
/// </summary>
/// </summary>
public
decimal
ExtraDeductMoney
{
get
;
set
;
}
public
decimal
ExtraDeductMoney
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 提成是否已发放 1是 0否
/// 提成是否已发放 1是 0否
/// </summary>
/// </summary>
...
@@ -97,14 +116,17 @@ namespace Edu.Model.Entity.Sell
...
@@ -97,14 +116,17 @@ namespace Edu.Model.Entity.Sell
/// 销售备注
/// 销售备注
/// </summary>
/// </summary>
public
string
SaleRemark
{
get
;
set
;
}
public
string
SaleRemark
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 教务备注
/// 教务备注
/// </summary>
/// </summary>
public
string
TeacherRemark
{
get
;
set
;
}
public
string
TeacherRemark
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 校长备注
/// 校长备注
/// </summary>
/// </summary>
public
string
RectorRemark
{
get
;
set
;
}
public
string
RectorRemark
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 经理备注
/// 经理备注
/// </summary>
/// </summary>
...
@@ -186,10 +208,15 @@ namespace Edu.Model.Entity.Sell
...
@@ -186,10 +208,15 @@ namespace Edu.Model.Entity.Sell
public
int
IsLessPrice
{
get
;
set
;
}
public
int
IsLessPrice
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 少价金额
/// 少价金额
(每人少价金额)
/// </summary>
/// </summary>
public
decimal
LessPrice
{
get
;
set
;
}
public
decimal
LessPrice
{
get
;
set
;
}
/// <summary>
/// 每人少价金额
/// </summary>
public
decimal
PerLessMoney
{
get
;
set
;
}
/// <summary>
/// <summary>
/// (教育订单使用)订单性质(1-直通车,2-代收代付,3-返佣)
/// (教育订单使用)订单性质(1-直通车,2-代收代付,3-返佣)
/// </summary>
/// </summary>
...
...
Edu.Model/Entity/User/RB_Group.cs
View file @
e3f7ae99
...
@@ -100,5 +100,10 @@ namespace Edu.Model.Entity.User
...
@@ -100,5 +100,10 @@ namespace Edu.Model.Entity.User
/// 官网地址
/// 官网地址
/// </summary>
/// </summary>
public
string
WebSiteDomain
{
get
;
set
;
}
public
string
WebSiteDomain
{
get
;
set
;
}
/// <summary>
/// 企业微信应用域名
/// </summary>
public
string
WorkAppDomain
{
get
;
set
;
}
}
}
}
}
\ No newline at end of file
Edu.Model/ViewModel/Exam/ExamFolderTreeModel.cs
0 → 100644
View file @
e3f7ae99
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
Edu.Model.ViewModel.Exam
{
/// <summary>
/// 试卷文件树形结构
/// </summary>
public
class
ExamFolderTreeModel
{
/// <summary>
/// 试卷编号
/// </summary>
public
int
PaperId
{
get
;
set
;
}
/// <summary>
/// 试卷名称
/// </summary>
public
string
PaperName
{
get
;
set
;
}
/// <summary>
/// 父节点编号
/// </summary>
public
int
ParentId
{
get
;
set
;
}
/// <summary>
/// 下级文件夹列表
/// </summary>
public
List
<
ExamFolderTreeModel
>
ChildList
{
get
;
set
;
}
}
}
Edu.Model/ViewModel/Exam/RB_Examination_Paper_ViewModel.cs
View file @
e3f7ae99
...
@@ -21,5 +21,15 @@ namespace Edu.Model.ViewModel.Exam
...
@@ -21,5 +21,15 @@ namespace Edu.Model.ViewModel.Exam
/// 问题数量
/// 问题数量
/// </summary>
/// </summary>
public
int
QuestionCount
{
get
;
set
;
}
public
int
QuestionCount
{
get
;
set
;
}
/// <summary>
/// 试卷编号
/// </summary>
public
string
QPaperIds
{
get
;
set
;
}
/// <summary>
/// 是否查询文件夹
/// </summary>
public
int
IsQueryFolder
{
get
;
set
;
}
}
}
}
}
Edu.Model/ViewModel/Exam/RB_Examination_Publish_ViewModel.cs
0 → 100644
View file @
e3f7ae99
using
Edu.Model.Entity.Exam
;
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
Edu.Model.ViewModel.Exam
{
/// <summary>
/// 试卷发布视图实体类
/// </summary>
public
class
RB_Examination_Publish_ViewModel
:
RB_Examination_Publish
{
}
}
Edu.Model/ViewModel/Question/RB_Question_ViewModel.cs
View file @
e3f7ae99
...
@@ -101,5 +101,10 @@ namespace Edu.Model.ViewModel.Question
...
@@ -101,5 +101,10 @@ namespace Edu.Model.ViewModel.Question
return
Common
.
Plugin
.
EnumHelper
.
ToName
(
this
.
LevelType
);
return
Common
.
Plugin
.
EnumHelper
.
ToName
(
this
.
LevelType
);
}
}
}
}
/// <summary>
/// 是否返回所有字段
/// </summary>
public
int
IsShowAllQuestion
{
get
;
set
;
}
}
}
}
}
\ No newline at end of file
Edu.Module.Course/CourseOfferModule.cs
View file @
e3f7ae99
...
@@ -359,11 +359,11 @@ namespace Edu.Module.Course
...
@@ -359,11 +359,11 @@ namespace Edu.Module.Course
{
{
try
try
{
{
decimal
uPrice
=
item
.
OriginalPrice
/
item
.
JoinNum
;
var
orderModel
=
new
RB_Order
()
var
orderModel
=
new
RB_Order
()
{
{
ClassId
=
item
.
ClassId
,
ClassId
=
item
.
ClassId
,
Class_Price
=
u
Price
,
Class_Price
=
item
.
Original
Price
,
CommissionMoney
=
-
1
,
CommissionMoney
=
-
1
,
CreateBy
=
offerModel
.
CreateBy
,
CreateBy
=
offerModel
.
CreateBy
,
CreateTime
=
DateTime
.
Now
,
CreateTime
=
DateTime
.
Now
,
...
@@ -371,7 +371,8 @@ namespace Edu.Module.Course
...
@@ -371,7 +371,8 @@ namespace Edu.Module.Course
School_Id
=
emModel
?.
School_Id
??
0
,
School_Id
=
emModel
?.
School_Id
??
0
,
Group_Id
=
emModel
?.
Group_Id
??
0
,
Group_Id
=
emModel
?.
Group_Id
??
0
,
DirectorRemark
=
""
,
DirectorRemark
=
""
,
DiscountMoney
=
item
.
DiscountPrice
,
DiscountMoney
=(
item
.
OriginalPrice
-
item
.
DiscountPrice
)*
item
.
JoinNum
,
PerDiscountMoney
=
item
.
OriginalPrice
-
item
.
DiscountPrice
,
EnterID
=
offerModel
.
CreateBy
,
EnterID
=
offerModel
.
CreateBy
,
ExtraDeductMoney
=
0
,
ExtraDeductMoney
=
0
,
ExtraRewardMoney
=
0
,
ExtraRewardMoney
=
0
,
...
@@ -383,7 +384,7 @@ namespace Edu.Module.Course
...
@@ -383,7 +384,7 @@ namespace Edu.Module.Course
OrderSource
=
Common
.
Enum
.
Course
.
OrderSourceEnum
.
Employee
,
OrderSource
=
Common
.
Enum
.
Course
.
OrderSourceEnum
.
Employee
,
OrderState
=
Common
.
Enum
.
Course
.
OrderStateEnum
.
Normal
,
OrderState
=
Common
.
Enum
.
Course
.
OrderStateEnum
.
Normal
,
PlatformTax
=
0
,
PlatformTax
=
0
,
PreferPrice
=
item
.
OriginalPrice
,
PreferPrice
=
item
.
OriginalPrice
*
item
.
JoinNum
,
RectorRemark
=
""
,
RectorRemark
=
""
,
Refund
=
0
,
Refund
=
0
,
JoinType
=
OrderJoinTypeEnum
.
Normal
,
JoinType
=
OrderJoinTypeEnum
.
Normal
,
...
@@ -393,7 +394,7 @@ namespace Edu.Module.Course
...
@@ -393,7 +394,7 @@ namespace Edu.Module.Course
SaleRemark
=
item
.
Remark
,
SaleRemark
=
item
.
Remark
,
TeacherRemark
=
""
,
TeacherRemark
=
""
,
TradeWay
=
Common
.
Enum
.
Course
.
TradeWayEnum
.
OnLine
,
TradeWay
=
Common
.
Enum
.
Course
.
TradeWayEnum
.
OnLine
,
Unit_Price
=
u
Price
,
Unit_Price
=
item
.
Original
Price
,
UpdateBy
=
offerModel
.
CreateBy
,
UpdateBy
=
offerModel
.
CreateBy
,
UpdateTime
=
DateTime
.
Now
,
UpdateTime
=
DateTime
.
Now
,
OfferId
=
offerId
,
OfferId
=
offerId
,
...
...
Edu.Module.Course/EducationContractModule.cs
View file @
e3f7ae99
...
@@ -104,9 +104,8 @@ namespace Edu.Module.Course
...
@@ -104,9 +104,8 @@ namespace Edu.Module.Course
public
object
GetStudentInfoModule
(
int
OrderId
,
int
GuestId
)
public
object
GetStudentInfoModule
(
int
OrderId
,
int
GuestId
)
{
{
var
obj
=
new
object
();
var
obj
=
new
object
();
var
glist
=
order_GuestRepository
.
GetOrderGuestListRepository
(
new
RB_Order_Guest_ViewModel
()
{
OrderId
=
OrderId
});
var
orderModel
=
orderRepository
.
GetEntity
(
OrderId
);
var
orderModel
=
orderRepository
.
GetEntity
(
OrderId
);
var
guestModel
=
glist
.
Where
(
qitem
=>
qitem
.
Id
==
GuestId
)?.
FirstOrDefault
(
);
var
guestModel
=
order_GuestRepository
.
GetEntity
<
RB_Order_Guest_ViewModel
>(
GuestId
);
var
classModel
=
new
RB_Class_ViewModel
();
var
classModel
=
new
RB_Class_ViewModel
();
var
courseModel
=
new
RB_Course_ViewModel
();
var
courseModel
=
new
RB_Course_ViewModel
();
decimal
PreferPrice
=
0
;
//总金额
decimal
PreferPrice
=
0
;
//总金额
...
@@ -122,12 +121,11 @@ namespace Edu.Module.Course
...
@@ -122,12 +121,11 @@ namespace Edu.Module.Course
}
}
var
qids
=
(
classModel
?.
ManagerId
??
0
).
ToString
()
+
","
+
(
orderModel
?.
EnterID
??
0
).
ToString
();
var
qids
=
(
classModel
?.
ManagerId
??
0
).
ToString
()
+
","
+
(
orderModel
?.
EnterID
??
0
).
ToString
();
var
empList
=
accountRepository
.
GetEmployeeListRepository
(
new
Employee_ViewModel
()
{
QIds
=
qids
});
var
empList
=
accountRepository
.
GetEmployeeListRepository
(
new
Employee_ViewModel
()
{
QIds
=
qids
});
if
(
glist
!=
null
&&
glist
.
Count
>
0
)
{
PreferPrice
=
orderModel
.
PreferPrice
/
orderModel
.
GuestNum
;
PreferPrice
=
orderModel
.
PreferPrice
/
glist
.
Count
();
DiscountMoney
=
orderModel
.
PerDiscountMoney
;
DiscountMoney
=
orderModel
.
DiscountMoney
/
glist
.
Count
();
Money
=
(
orderModel
.
PreferPrice
-
orderModel
.
DiscountMoney
)
/
orderModel
.
GuestNum
;
//平均每人费用
Money
=
(
orderModel
.
PreferPrice
-
orderModel
.
DiscountMoney
)
/
glist
.
Count
();
//平均每人费用
}
string
dxMoney
=
StringHelper
.
MoneyToUpper
(
Money
.
ToString
());
string
dxMoney
=
StringHelper
.
MoneyToUpper
(
Money
.
ToString
());
obj
=
new
obj
=
new
{
{
...
@@ -143,7 +141,7 @@ namespace Edu.Module.Course
...
@@ -143,7 +141,7 @@ namespace Edu.Module.Course
StartLevel
=
guestModel
?.
Basics
??
""
,
StartLevel
=
guestModel
?.
Basics
??
""
,
CourseConsultant
=
empList
?.
Where
(
qitem
=>
qitem
.
Id
==
(
orderModel
?.
EnterID
??
0
))?.
FirstOrDefault
()?.
EmployeeName
??
""
,
CourseConsultant
=
empList
?.
Where
(
qitem
=>
qitem
.
Id
==
(
orderModel
?.
EnterID
??
0
))?.
FirstOrDefault
()?.
EmployeeName
??
""
,
Payee
=
empList
?.
Where
(
qitem
=>
qitem
.
Id
==
(
orderModel
?.
EnterID
??
0
))?.
FirstOrDefault
()?.
EmployeeName
??
""
,
Payee
=
empList
?.
Where
(
qitem
=>
qitem
.
Id
==
(
orderModel
?.
EnterID
??
0
))?.
FirstOrDefault
()?.
EmployeeName
??
""
,
FirstClassHours
=
courseModel
?.
ClassHours
??
0
,
FirstClassHours
=
(
courseModel
?.
ClassHours
??
0
)-(
orderModel
?.
StartClassHours
??
0
)
,
FirstCourseFee
=
PreferPrice
,
FirstCourseFee
=
PreferPrice
,
FirstBookFee
=
0
,
FirstBookFee
=
0
,
FirstClassFee
=
0
,
FirstClassFee
=
0
,
...
...
Edu.Module.Course/OrderModule.cs
View file @
e3f7ae99
...
@@ -408,16 +408,35 @@ namespace Edu.Module.Course
...
@@ -408,16 +408,35 @@ namespace Edu.Module.Course
}
}
//课程信息
//课程信息
var
courseModel
=
courseRepository
.
GetEntity
(
demodel
.
CourseId
);
var
courseModel
=
courseRepository
.
GetEntity
(
demodel
.
CourseId
);
decimal
coursePrice
=
courseModel
.
SellPrice
;
//课程最低单价
#
region
计算订单优惠信息
#
region
计算订单优惠信息
//获取课程优惠
//获取课程优惠
var
coursePreferentialList
=
course_PreferentialRepository
.
GetCoursePreferentialListRepostory
(
new
RB_Course_Preferential_Extend
()
var
coursePreferentialList
=
course_PreferentialRepository
.
GetCoursePreferentialListRepostory
(
new
RB_Course_Preferential_Extend
()
{
{
CourseId
=
demodel
.
CourseId
CourseId
=
demodel
.
CourseId
});
});
//课程优惠信息
//计算续费订单优惠
if
(
demodel
.
JoinType
==
OrderJoinTypeEnum
.
RenewOrder
&&
demodel
.
OrderId
==
0
)
{
var
renewOrderDiscount
=
coursePreferentialList
?.
Where
(
qitem
=>
qitem
.
PriceDiscountType
==
CoursePriceDiscountEnum
.
Renewal
)?.
FirstOrDefault
();
if
(
renewOrderDiscount
!=
null
)
{
if
((
renewOrderDiscount
?.
PriceType
??
0
)
==
0
)
{
demodel
.
DiscountMoney
=
coursePrice
-
coursePrice
*
(
100
-
(
renewOrderDiscount
?.
PriceMoney
??
0
))
/
100
;
demodel
.
SaleRemark
=
"续费报名优惠"
+
renewOrderDiscount
.
PriceMoney
+
"%"
;
}
else
{
demodel
.
DiscountMoney
=
(
coursePrice
-
(
renewOrderDiscount
?.
PriceMoney
??
0
))
*
demodel
.
GuestNum
;
demodel
.
SaleRemark
=
"续费报名优惠"
+
renewOrderDiscount
.
PriceMoney
+
"元"
;
}
demodel
.
PerDiscountMoney
=
demodel
.
DiscountMoney
/
demodel
.
GuestNum
;
}
}
decimal
disMoney
=
0
;
//课程最大优惠金额
decimal
disMoney
=
0
;
//课程最大优惠金额
decimal
coursePrice
=
courseModel
.
SellPrice
;
//课程最低单价
decimal
lessMoney
=
0
;
//课程最大少价金额
var
coursePreferentialModel
=
new
RB_Course_Preferential_Extend
();
var
coursePreferentialModel
=
new
RB_Course_Preferential_Extend
();
if
(
coursePreferentialList
!=
null
&&
coursePreferentialList
.
Count
>
0
)
if
(
coursePreferentialList
!=
null
&&
coursePreferentialList
.
Count
>
0
)
{
{
...
@@ -433,30 +452,33 @@ namespace Edu.Module.Course
...
@@ -433,30 +452,33 @@ namespace Edu.Module.Course
if
(
saleCommissionType
==
0
)
if
(
saleCommissionType
==
0
)
{
{
var
tempMoney
=
(
courseModel
?.
SellPrice
??
0
)
*
(
coursePreferentialModel
?.
SaleCommissionMoney
??
0
);
var
tempMoney
=
(
courseModel
?.
SellPrice
??
0
)
*
(
coursePreferentialModel
?.
SaleCommissionMoney
??
0
);
di
sMoney
=
tempMoney
/
Convert
.
ToDecimal
(
100
);
les
sMoney
=
tempMoney
/
Convert
.
ToDecimal
(
100
);
}
}
else
else
{
{
di
sMoney
=
coursePreferentialModel
?.
SaleCommissionMoney
??
0
;
les
sMoney
=
coursePreferentialModel
?.
SaleCommissionMoney
??
0
;
}
}
var
b2bCommissionType
=
coursePreferentialModel
?.
B2BCommissionType
??
0
;
var
b2bCommissionType
=
coursePreferentialModel
?.
B2BCommissionType
??
0
;
if
(
b2bCommissionType
==
0
)
if
(
b2bCommissionType
==
0
)
{
{
var
tempMoney
=
(
courseModel
?.
SellPrice
??
0
)
*
(
coursePreferentialModel
?.
B2BCommissionMoney
??
0
);
var
tempMoney
=
(
courseModel
?.
SellPrice
??
0
)
*
(
coursePreferentialModel
?.
B2BCommissionMoney
??
0
);
di
sMoney
+=
tempMoney
/
Convert
.
ToDecimal
(
100
);
les
sMoney
+=
tempMoney
/
Convert
.
ToDecimal
(
100
);
}
}
else
else
{
{
di
sMoney
=
coursePreferentialModel
?.
B2BCommissionMoney
??
0
;
les
sMoney
=
coursePreferentialModel
?.
B2BCommissionMoney
??
0
;
}
}
var
priceCommissionType
=
coursePreferentialModel
?.
PriceType
??
0
;
var
priceCommissionType
=
coursePreferentialModel
?.
PriceType
??
0
;
if
(
priceCommissionType
==
0
)
if
(
priceCommissionType
==
0
)
{
{
disMoney
=
(
100
-
(
coursePreferentialModel
?.
PriceMoney
??
0
))
/
100
;
coursePrice
=
coursePrice
*
(
100
-
(
coursePreferentialModel
?.
PriceMoney
??
0
))
/
100
;
coursePrice
=
coursePrice
*
(
100
-
(
coursePreferentialModel
?.
PriceMoney
??
0
))
/
100
;
}
}
else
else
{
{
disMoney
=
coursePreferentialModel
?.
PriceMoney
??
0
;
coursePrice
-=
(
coursePreferentialModel
?.
PriceMoney
??
0
);
coursePrice
-=
(
coursePreferentialModel
?.
PriceMoney
??
0
);
}
}
#
region
记录提成信息
#
region
记录提成信息
...
@@ -478,7 +500,7 @@ namespace Edu.Module.Course
...
@@ -478,7 +500,7 @@ namespace Edu.Module.Course
{
{
if
(
coursePreferentialList
!=
null
&&
coursePreferentialList
.
Count
>
0
)
if
(
coursePreferentialList
!=
null
&&
coursePreferentialList
.
Count
>
0
)
{
{
if
(
demodel
.
LessPrice
>
di
sMoney
)
if
(
demodel
.
LessPrice
>
les
sMoney
)
{
{
message
=
string
.
Format
(
"优惠金额不能大于{0}"
,
disMoney
.
ToString
(
"0.00"
));
message
=
string
.
Format
(
"优惠金额不能大于{0}"
,
disMoney
.
ToString
(
"0.00"
));
return
flag
;
return
flag
;
...
@@ -510,6 +532,7 @@ namespace Edu.Module.Course
...
@@ -510,6 +532,7 @@ namespace Edu.Module.Course
if
(
demodel
.
IsLessPrice
==
0
)
if
(
demodel
.
IsLessPrice
==
0
)
{
{
demodel
.
LessPrice
=
0
;
demodel
.
LessPrice
=
0
;
demodel
.
PerLessMoney
=
0
;
}
}
var
orderModel
=
new
RB_Order
();
var
orderModel
=
new
RB_Order
();
if
(
demodel
.
OrderId
>
0
)
if
(
demodel
.
OrderId
>
0
)
...
@@ -626,6 +649,8 @@ namespace Edu.Module.Course
...
@@ -626,6 +649,8 @@ namespace Edu.Module.Course
{
{
{
nameof
(
RB_Order_ViewModel
.
GuestNum
),
demodel
.
GuestNum
},
{
nameof
(
RB_Order_ViewModel
.
GuestNum
),
demodel
.
GuestNum
},
{
nameof
(
RB_Order_ViewModel
.
Unit_Price
),
demodel
.
Unit_Price
},
{
nameof
(
RB_Order_ViewModel
.
Unit_Price
),
demodel
.
Unit_Price
},
{
nameof
(
RB_Order_ViewModel
.
DiscountMoney
),
demodel
.
DiscountMoney
},
{
nameof
(
RB_Order_ViewModel
.
PerDiscountMoney
),
demodel
.
PerDiscountMoney
},
{
nameof
(
RB_Order_ViewModel
.
PreferPrice
),
demodel
.
PreferPrice
},
{
nameof
(
RB_Order_ViewModel
.
PreferPrice
),
demodel
.
PreferPrice
},
{
nameof
(
RB_Order_ViewModel
.
OrderSource
),
demodel
.
OrderSource
},
{
nameof
(
RB_Order_ViewModel
.
OrderSource
),
demodel
.
OrderSource
},
{
nameof
(
RB_Order_ViewModel
.
SaleRemark
),
demodel
.
SaleRemark
},
{
nameof
(
RB_Order_ViewModel
.
SaleRemark
),
demodel
.
SaleRemark
},
...
@@ -634,6 +659,7 @@ namespace Edu.Module.Course
...
@@ -634,6 +659,7 @@ namespace Edu.Module.Course
{
nameof
(
RB_Order_ViewModel
.
EduOccupation
),
demodel
.
EduOccupation
},
{
nameof
(
RB_Order_ViewModel
.
EduOccupation
),
demodel
.
EduOccupation
},
{
nameof
(
RB_Order_ViewModel
.
IsLessPrice
),
demodel
.
IsLessPrice
},
{
nameof
(
RB_Order_ViewModel
.
IsLessPrice
),
demodel
.
IsLessPrice
},
{
nameof
(
RB_Order_ViewModel
.
LessPrice
),
demodel
.
LessPrice
},
{
nameof
(
RB_Order_ViewModel
.
LessPrice
),
demodel
.
LessPrice
},
{
nameof
(
RB_Order_ViewModel
.
PerLessMoney
),
demodel
.
PerLessMoney
},
{
nameof
(
RB_Order_ViewModel
.
StartClassHours
),
demodel
.
StartClassHours
},
{
nameof
(
RB_Order_ViewModel
.
StartClassHours
),
demodel
.
StartClassHours
},
{
nameof
(
RB_Order_ViewModel
.
CourseId
),
demodel
.
CourseId
},
{
nameof
(
RB_Order_ViewModel
.
CourseId
),
demodel
.
CourseId
},
{
nameof
(
RB_Order_ViewModel
.
EffectStatus
),
demodel
.
EffectStatus
},
{
nameof
(
RB_Order_ViewModel
.
EffectStatus
),
demodel
.
EffectStatus
},
...
@@ -641,7 +667,6 @@ namespace Edu.Module.Course
...
@@ -641,7 +667,6 @@ namespace Edu.Module.Course
{
nameof
(
RB_Order_ViewModel
.
UpOrderId
),
demodel
.
UpOrderId
},
{
nameof
(
RB_Order_ViewModel
.
UpOrderId
),
demodel
.
UpOrderId
},
};
};
flag
=
orderRepository
.
Update
(
keyValues
,
new
WhereHelper
(
nameof
(
RB_Order_ViewModel
.
OrderId
),
demodel
.
OrderId
));
flag
=
orderRepository
.
Update
(
keyValues
,
new
WhereHelper
(
nameof
(
RB_Order_ViewModel
.
OrderId
),
demodel
.
OrderId
));
//记录日志信息
//记录日志信息
LogContent
=
$"修改日语培训订单【
{
demodel
.
OrderId
}
】"
;
LogContent
=
$"修改日语培训订单【
{
demodel
.
OrderId
}
】"
;
if
(
orderModel
.
GuestNum
!=
demodel
.
GuestNum
)
if
(
orderModel
.
GuestNum
!=
demodel
.
GuestNum
)
...
@@ -652,6 +677,14 @@ namespace Edu.Module.Course
...
@@ -652,6 +677,14 @@ namespace Edu.Module.Course
{
{
LogContent
+=
$",成交单价由【
{
orderModel
.
Unit_Price
}
】修改为【
{
demodel
.
Unit_Price
}
】"
;
LogContent
+=
$",成交单价由【
{
orderModel
.
Unit_Price
}
】修改为【
{
demodel
.
Unit_Price
}
】"
;
}
}
if
(
orderModel
.
DiscountMoney
!=
demodel
.
DiscountMoney
)
{
LogContent
+=
$",优惠金额由【
{(
orderModel
.
DiscountMoney
)}
】修改为【
{(
demodel
.
DiscountMoney
)}
】"
;
}
if
(
orderModel
.
PerDiscountMoney
!=
demodel
.
PerDiscountMoney
)
{
LogContent
+=
$",每人优惠金额由【
{(
orderModel
.
PerDiscountMoney
)}
】修改为【
{(
demodel
.
PerDiscountMoney
)}
】"
;
}
if
(
orderModel
.
PreferPrice
!=
demodel
.
PreferPrice
)
if
(
orderModel
.
PreferPrice
!=
demodel
.
PreferPrice
)
{
{
LogContent
+=
$",应收金额由【
{
orderModel
.
PreferPrice
}
】修改为【
{
demodel
.
PreferPrice
}
】"
;
LogContent
+=
$",应收金额由【
{
orderModel
.
PreferPrice
}
】修改为【
{
demodel
.
PreferPrice
}
】"
;
...
@@ -679,7 +712,11 @@ namespace Edu.Module.Course
...
@@ -679,7 +712,11 @@ namespace Edu.Module.Course
}
}
if
(
orderModel
.
LessPrice
!=
demodel
.
LessPrice
)
if
(
orderModel
.
LessPrice
!=
demodel
.
LessPrice
)
{
{
LogContent
+=
$",少价金额由【
{(
orderModel
.
LessPrice
)}
】修改为【
{(
demodel
.
LessPrice
)}
】"
;
LogContent
+=
$",少价金额由【
{(
orderModel
.
LessPrice
)}
】修改为【
{(
demodel
.
LessPrice
)}
】"
;
}
if
(
orderModel
.
PerLessMoney
!=
demodel
.
PerLessMoney
)
{
LogContent
+=
$",每人少价金额由【
{(
orderModel
.
PerLessMoney
)}
】修改为【
{(
demodel
.
PerLessMoney
)}
】"
;
}
}
//记录订单备注
//记录订单备注
if
(
orderModel
.
SaleRemark
!=
demodel
.
SaleRemark
)
if
(
orderModel
.
SaleRemark
!=
demodel
.
SaleRemark
)
...
...
Edu.Module.Course/StudentBillModule.cs
View file @
e3f7ae99
...
@@ -277,22 +277,8 @@ namespace Edu.Module.Course
...
@@ -277,22 +277,8 @@ namespace Edu.Module.Course
}
}
foreach
(
var
item
in
classList
)
foreach
(
var
item
in
classList
)
{
{
var
priceModel
=
coursePriceList
?.
Where
(
qitem
=>
qitem
.
CourseId
==
item
.
CouseId
&&
qitem
.
PriceDiscountType
==
CoursePriceDiscountEnum
.
Renewal
)?.
FirstOrDefault
();
decimal
SellPrice
=
item
.
SellPrice
;
decimal
SellPrice
=
item
.
SellPrice
;
decimal
OriginalPrice
=
item
.
SellPrice
;
decimal
OriginalPrice
=
item
.
SellPrice
;
if
(
priceModel
!=
null
)
{
if
(
priceModel
.
PriceType
==
0
)
{
SellPrice
=
Math
.
Round
(
SellPrice
*
(
100
-
priceModel
.
PriceMoney
)
/
100
,
2
);
OriginalPrice
=
Math
.
Round
(
SellPrice
*
(
100
-
priceModel
.
PriceMoney
)
/
100
,
2
);
}
else
{
SellPrice
=
Math
.
Round
(
SellPrice
-
priceModel
.
PriceMoney
,
2
);
OriginalPrice
=
Math
.
Round
(
SellPrice
-
priceModel
.
PriceMoney
,
2
);
}
}
var
obj
=
new
var
obj
=
new
{
{
item
.
ClassId
,
item
.
ClassId
,
...
...
Edu.Module.EduTask/OrderChangeModule.cs
View file @
e3f7ae99
...
@@ -255,6 +255,9 @@ namespace Edu.Module.EduTask
...
@@ -255,6 +255,9 @@ namespace Edu.Module.EduTask
SourceId
=
0
,
SourceId
=
0
,
IsLessPrice
=
0
,
IsLessPrice
=
0
,
LessPrice
=
0
,
LessPrice
=
0
,
PerLessMoney
=
0
,
DiscountMoney
=
0
,
PerDiscountMoney
=
0
,
OrderNature
=
oldOrderModel
.
OrderNature
,
OrderNature
=
oldOrderModel
.
OrderNature
,
OldPreferPrice
=
newPreferPrice
,
//应收,
OldPreferPrice
=
newPreferPrice
,
//应收,
CourseId
=
orderChangeModel
.
NewCourseId
,
CourseId
=
orderChangeModel
.
NewCourseId
,
...
@@ -702,6 +705,9 @@ namespace Edu.Module.EduTask
...
@@ -702,6 +705,9 @@ namespace Edu.Module.EduTask
SourceId
=
0
,
SourceId
=
0
,
IsLessPrice
=
0
,
IsLessPrice
=
0
,
LessPrice
=
0
,
LessPrice
=
0
,
PerLessMoney
=
0
,
DiscountMoney
=
0
,
PerDiscountMoney
=
0
,
OrderNature
=
oldOrderModel
.
OrderNature
,
OrderNature
=
oldOrderModel
.
OrderNature
,
OldPreferPrice
=
newPreferPrice
,
//应收,
OldPreferPrice
=
newPreferPrice
,
//应收,
CourseId
=
orderChangeModel
.
NewCourseId
,
CourseId
=
orderChangeModel
.
NewCourseId
,
...
...
Edu.Module.Exam/PaperModule.cs
View file @
e3f7ae99
This diff is collapsed.
Click to expand it.
Edu.Module.QYWeChat/QYWeChatModule.cs
View file @
e3f7ae99
...
@@ -10,6 +10,8 @@ using Edu.Model.CacheModel;
...
@@ -10,6 +10,8 @@ using Edu.Model.CacheModel;
using
Edu.Model.ViewModel.WeChat
;
using
Edu.Model.ViewModel.WeChat
;
using
Edu.Repository.WeChat
;
using
Edu.Repository.WeChat
;
using
Edu.ThirdCore.QYWinXin
;
using
Edu.ThirdCore.QYWinXin
;
using
Newtonsoft.Json.Linq
;
using
Senparc.Weixin.Work.AdvancedAPIs.OAuth2
;
using
VT.FW.DB
;
using
VT.FW.DB
;
namespace
Edu.Module.QYWeChat
namespace
Edu.Module.QYWeChat
...
@@ -32,11 +34,11 @@ namespace Edu.Module.QYWeChat
...
@@ -32,11 +34,11 @@ namespace Edu.Module.QYWeChat
/// </summary>
/// </summary>
/// <param name="model"></param>
/// <param name="model"></param>
/// <returns></returns>
/// <returns></returns>
public
RB_WeChat_Config_ViewModel
GetWeChatConfigModel
(
RB_WeChat_Config_ViewModel
model
)
public
WorkChatConfig
GetWeChatConfigModel
(
RB_WeChat_Config_ViewModel
model
)
{
{
var
dmodel
=
weChat_ConfigRepository
.
GetList
(
model
).
FirstOrDefault
();
//
var dmodel = weChat_ConfigRepository.GetList(model).FirstOrDefault();
if
(
dmodel
==
null
)
{
dmodel
=
new
RB_WeChat_Config_ViewModel
();
}
//
if (dmodel == null) { dmodel = new RB_WeChat_Config_ViewModel(); }
return
dmodel
;
return
WeChatReidsCache
.
GetWorkChatConfig
(
model
.
Group_Id
)
;
}
}
/// <summary>
/// <summary>
...
@@ -79,15 +81,30 @@ namespace Edu.Module.QYWeChat
...
@@ -79,15 +81,30 @@ namespace Edu.Module.QYWeChat
OperatorEnum
=
OperatorEnum
.
Equal
OperatorEnum
=
OperatorEnum
.
Equal
}
}
};
};
bool
flag
=
weChat_ConfigRepository
.
Update
(
keyValues
,
wheres
);
bool
flag
=
false
;
if
(
weChat_ConfigRepository
.
Update
(
keyValues
,
wheres
))
{
flag
=
true
;
//更新缓存
WeChatReidsCache
.
UpdateConfig
(
demdoel
.
Id
);
}
return
flag
?
""
:
"出错了,请联系管理员"
;
return
flag
?
""
:
"出错了,请联系管理员"
;
}
}
else
{
else
{
bool
flag
=
weChat_ConfigRepository
.
Insert
(
demdoel
)
>
0
;
var
id
=
weChat_ConfigRepository
.
Insert
(
demdoel
);
bool
flag
=
false
;
if
(
id
>
0
)
{
flag
=
true
;
//更新缓存
WeChatReidsCache
.
UpdateConfig
(
id
);
}
return
flag
?
""
:
"出错了,请联系管理员"
;
return
flag
?
""
:
"出错了,请联系管理员"
;
}
}
}
}
#
endregion
#
endregion
}
}
}
}
Edu.Module.User/GroupModule.cs
View file @
e3f7ae99
...
@@ -66,6 +66,16 @@ namespace Edu.Module.User
...
@@ -66,6 +66,16 @@ namespace Edu.Module.User
return
GetGroupListModule
(
new
RB_Group_ViewModel
()
{
GId
=
GId
})?.
FirstOrDefault
()
??
new
RB_Group_ViewModel
();
return
GetGroupListModule
(
new
RB_Group_ViewModel
()
{
GId
=
GId
})?.
FirstOrDefault
()
??
new
RB_Group_ViewModel
();
}
}
/// <summary>
/// 获取集团实体类
/// </summary>
/// <param name="GId"></param>
/// <returns></returns>
public
RB_Group_ViewModel
GetGroupEntityModule
(
string
workDomainUrl
)
{
return
GetGroupListModule
(
new
RB_Group_ViewModel
()
{
WorkAppDomain
=
workDomainUrl
})?.
FirstOrDefault
()
??
new
RB_Group_ViewModel
();
}
/// <summary>
/// <summary>
/// 新增修改集团
/// 新增修改集团
/// </summary>
/// </summary>
...
...
Edu.Repository/Exam/RB_Examination_PaperRepository.cs
View file @
e3f7ae99
...
@@ -43,11 +43,73 @@ WHERE 1=1
...
@@ -43,11 +43,73 @@ WHERE 1=1
builder
.
AppendFormat
(
" AND A.{0} LIKE @PaperName "
,
nameof
(
RB_Examination_Paper_ViewModel
.
PaperName
));
builder
.
AppendFormat
(
" AND A.{0} LIKE @PaperName "
,
nameof
(
RB_Examination_Paper_ViewModel
.
PaperName
));
parameters
.
Add
(
"PaperName"
,
"%"
+
query
.
PaperName
.
Trim
()
+
"%"
);
parameters
.
Add
(
"PaperName"
,
"%"
+
query
.
PaperName
.
Trim
()
+
"%"
);
}
}
if
(
query
.
ParentId
>
0
)
{
builder
.
AppendFormat
(
@" AND A.{0}={1} "
,
nameof
(
RB_Examination_Paper_ViewModel
.
ParentId
),
query
.
ParentId
);
}
if
(
query
.
PaperId
>
0
)
{
builder
.
AppendFormat
(
@" AND A.{0}={1} "
,
nameof
(
RB_Examination_Paper_ViewModel
.
PaperId
),
query
.
PaperId
);
}
if
(!
string
.
IsNullOrEmpty
(
query
.
QPaperIds
))
{
builder
.
AppendFormat
(
@" AND A.{0} IN({1}) "
,
nameof
(
RB_Examination_Paper_ViewModel
.
PaperId
),
query
.
QPaperIds
);
}
}
}
builder
.
AppendFormat
(
" ORDER BY A.{0} DESC "
,
nameof
(
RB_Examination_Paper_ViewModel
.
PaperId
));
builder
.
AppendFormat
(
" ORDER BY A.{0} DESC "
,
nameof
(
RB_Examination_Paper_ViewModel
.
PaperId
));
return
GetPage
<
RB_Examination_Paper_ViewModel
>(
pageIndex
,
pageSize
,
out
rowsCount
,
builder
.
ToString
(),
parameters
).
ToList
();
return
GetPage
<
RB_Examination_Paper_ViewModel
>(
pageIndex
,
pageSize
,
out
rowsCount
,
builder
.
ToString
(),
parameters
).
ToList
();
}
}
/// <summary>
/// 获取试卷列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public
List
<
RB_Examination_Paper_ViewModel
>
GetExaminationPaperListRepository
(
RB_Examination_Paper_ViewModel
query
)
{
var
parameters
=
new
DynamicParameters
();
StringBuilder
builder
=
new
StringBuilder
();
builder
.
AppendFormat
(
@"
SELECT A.*
FROM RB_Examination_Paper AS A
WHERE 1=1
"
);
builder
.
AppendFormat
(
@" AND A.{0}={1} "
,
nameof
(
RB_Examination_Paper_ViewModel
.
ParentId
),
0
);
if
(
query
!=
null
)
{
if
(
query
.
Group_Id
>
0
)
{
builder
.
AppendFormat
(
@" AND A.{0}={1} "
,
nameof
(
RB_Examination_Paper_ViewModel
.
Group_Id
),
query
.
Group_Id
);
}
if
(!
string
.
IsNullOrEmpty
(
query
.
PaperName
))
{
builder
.
AppendFormat
(
" AND A.{0} LIKE @PaperName "
,
nameof
(
RB_Examination_Paper_ViewModel
.
PaperName
));
parameters
.
Add
(
"PaperName"
,
"%"
+
query
.
PaperName
.
Trim
()
+
"%"
);
}
if
(
query
.
ParentId
>
0
)
{
builder
.
AppendFormat
(
@" AND A.{0}={1} "
,
nameof
(
RB_Examination_Paper_ViewModel
.
ParentId
),
query
.
ParentId
);
}
if
(
query
.
PaperId
>
0
)
{
builder
.
AppendFormat
(
@" AND A.{0}={1} "
,
nameof
(
RB_Examination_Paper_ViewModel
.
PaperId
),
query
.
PaperId
);
}
if
(!
string
.
IsNullOrEmpty
(
query
.
QPaperIds
))
{
builder
.
AppendFormat
(
@" AND A.{0} IN({1}) "
,
nameof
(
RB_Examination_Paper_ViewModel
.
PaperId
),
query
.
QPaperIds
);
}
//查询文件夹
if
(
query
.
IsQueryFolder
==
1
)
{
builder
.
AppendFormat
(
@" AND A.{0}=1 "
,
nameof
(
RB_Examination_Paper_ViewModel
.
PaperType
));
}
}
builder
.
AppendFormat
(
" ORDER BY A.{0} DESC "
,
nameof
(
RB_Examination_Paper_ViewModel
.
PaperId
));
return
Get
<
RB_Examination_Paper_ViewModel
>(
builder
.
ToString
(),
parameters
).
ToList
();
}
/// <summary>
/// <summary>
/// 获取试卷所有下级列表
/// 获取试卷所有下级列表
/// </summary>
/// </summary>
...
...
Edu.Repository/Exam/RB_Examination_PublishRepository.cs
0 → 100644
View file @
e3f7ae99
using
Edu.Model.Entity.Exam
;
using
Edu.Model.ViewModel.Exam
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
namespace
Edu.Repository.Exam
{
/// <summary>
/// 试卷发布仓储层
/// </summary>
public
class
RB_Examination_PublishRepository
:
BaseRepository
<
RB_Examination_Publish
>
{
/// <summary>
/// 获取发布试卷分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public
List
<
RB_Examination_Publish_ViewModel
>
GetExaminationPublishPageRepository
(
int
pageIndex
,
int
pageSize
,
out
long
rowsCount
,
RB_Examination_Publish_ViewModel
query
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
AppendFormat
(
@"
SELECT A.*
FROM RB_Examination_Publish AS A
WHERE 1=1
"
);
if
(
query
!=
null
)
{
if
(
query
.
Group_Id
>
0
)
{
builder
.
AppendFormat
(
" AND A.{0}={1} "
,
nameof
(
RB_Examination_Publish_ViewModel
.
Group_Id
),
query
.
Group_Id
);
}
}
return
GetPage
<
RB_Examination_Publish_ViewModel
>(
pageIndex
,
pageSize
,
out
rowsCount
,
builder
.
ToString
()).
ToList
();
}
}
}
Edu.Repository/User/RB_GroupRepository.cs
View file @
e3f7ae99
...
@@ -58,6 +58,10 @@ WHERE 1=1
...
@@ -58,6 +58,10 @@ WHERE 1=1
{
{
builder
.
AppendFormat
(
" AND {0}={1} "
,
nameof
(
RB_Group_ViewModel
.
GId
),
query
.
GId
);
builder
.
AppendFormat
(
" AND {0}={1} "
,
nameof
(
RB_Group_ViewModel
.
GId
),
query
.
GId
);
}
}
if
(!
string
.
IsNullOrEmpty
(
query
.
WorkAppDomain
))
{
builder
.
AppendFormat
(
" AND {0}='{1}' "
,
nameof
(
RB_Group_ViewModel
.
WorkAppDomain
),
query
.
WorkAppDomain
);
}
if
(!
string
.
IsNullOrEmpty
(
query
.
WebSiteDomain
))
if
(!
string
.
IsNullOrEmpty
(
query
.
WebSiteDomain
))
{
{
builder
.
AppendFormat
(
" AND {0}='{1}' "
,
nameof
(
RB_Group_ViewModel
.
WebSiteDomain
),
query
.
WebSiteDomain
);
builder
.
AppendFormat
(
" AND {0}='{1}' "
,
nameof
(
RB_Group_ViewModel
.
WebSiteDomain
),
query
.
WebSiteDomain
);
...
...
Edu.ThirdCore/Edu.ThirdCore.csproj
View file @
e3f7ae99
...
@@ -19,6 +19,7 @@
...
@@ -19,6 +19,7 @@
</ItemGroup>
</ItemGroup>
<ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Edu.Cache\Edu.Cache.csproj" />
<ProjectReference Include="..\Edu.Common\Edu.Common.csproj" />
<ProjectReference Include="..\Edu.Common\Edu.Common.csproj" />
</ItemGroup>
</ItemGroup>
...
...
Edu.ThirdCore/QYWinXin/QYWeiXinConfig.cs
0 → 100644
View file @
e3f7ae99
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
Edu.ThirdCore.QYWinXin
{
/// <summary>
///
/// </summary>
public
class
QYWeiXinConfig
{
}
}
Edu.ThirdCore/QYWinXin/QYWeiXinHelper.cs
View file @
e3f7ae99
using
System
;
using
System
;
using
System.Collections.Generic
;
using
System.Collections.Generic
;
using
System.Text
;
using
System.Text
;
using
System.Web
;
using
Edu.Cache.User
;
using
Edu.Cache.WeChat
;
using
Edu.Common.Plugin
;
using
Newtonsoft.Json
;
using
Newtonsoft.Json
;
using
Newtonsoft.Json.Linq
;
using
Newtonsoft.Json.Linq
;
using
Senparc.Weixin.Work
;
using
Senparc.Weixin.Work
;
using
Senparc.Weixin.Work.AdvancedAPIs
;
using
Senparc.Weixin.Work.AdvancedAPIs
;
using
Senparc.Weixin.Work.AdvancedAPIs.OAuth2
;
using
Senparc.Weixin.Work.Containers
;
using
Senparc.Weixin.Work.Containers
;
namespace
Edu.ThirdCore.QYWinXin
namespace
Edu.ThirdCore.QYWinXin
...
@@ -14,6 +19,74 @@ namespace Edu.ThirdCore.QYWinXin
...
@@ -14,6 +19,74 @@ namespace Edu.ThirdCore.QYWinXin
/// </summary>
/// </summary>
public
class
QYWeiXinHelper
public
class
QYWeiXinHelper
{
{
#
region
全局静态
private
static
string
WORK_KEY
=
string
.
Empty
;
#
endregion
#
region
令牌
public
static
string
GetToken
(
int
groupId
,
bool
newToken
=
false
)
{
var
config
=
WeChatReidsCache
.
GetWorkChatConfig
(
groupId
);
if
(
config
!=
null
)
{
var
token
=
AccessTokenContainer
.
GetTokenAsync
(
config
.
WX_CorpId
,
config
.
Employee_Secret
,
newToken
);
return
token
.
Result
;
}
else
{
return
string
.
Empty
;
}
}
#
endregion
/// <summary>
/// 解析用户信息
/// </summary>
/// <param name="groupId"></param>
/// <param name="code"></param>
/// <returns></returns>
public
(
bool
status
,
GetUserInfoResult
result
)
GetLoginWorkUserInfo
(
int
groupId
,
string
code
)
{
var
token
=
GetToken
(
groupId
);
if
(!
string
.
IsNullOrEmpty
(
token
))
{
var
result
=
Senparc
.
Weixin
.
Work
.
AdvancedAPIs
.
OAuth2Api
.
GetUserId
(
token
,
code
);
return
(
true
,
result
);
}
else
{
return
(
false
,
null
);
}
}
/// <summary>
/// 组装跳转地址
/// </summary>
/// <param name="groupId">集团编号</param>
/// <param name="mark">唯一标识</param>
/// <returns></returns>
public
string
GetUserAuthorizationCodePath
(
int
groupId
,
string
mark
)
{
var
config
=
WeChatReidsCache
.
GetWorkChatConfig
(
groupId
);
var
token
=
GetToken
(
groupId
);
if
(!
string
.
IsNullOrEmpty
(
token
))
{
string
redirect_uri
=
$"http://mobileapis.kookaku.com/api/QYWeChat/UserCodeCallBack"
;
string
state
=
mark
;
JObject
cacheContent
=
new
JObject
();
cacheContent
.
Add
(
"group_id"
,
groupId
);
UserReidsCache
.
Set
(
mark
,
cacheContent
,
60
);
return
Senparc
.
Weixin
.
Work
.
AdvancedAPIs
.
OAuth2Api
.
GetCode
(
config
.
WX_CorpId
,
redirect_uri
,
state
,
"1000004"
);
}
else
{
return
string
.
Empty
;
}
}
/// <summary>
/// <summary>
/// 获取token
/// 获取token
/// </summary>
/// </summary>
...
...
Edu.WebApi/Controllers/Course/ClassController.cs
View file @
e3f7ae99
...
@@ -182,6 +182,7 @@ namespace Edu.WebApi.Controllers.Course
...
@@ -182,6 +182,7 @@ namespace Edu.WebApi.Controllers.Course
item
.
ClassName
,
item
.
ClassName
,
item
.
CouseId
,
item
.
CouseId
,
item
.
CourseName
,
item
.
CourseName
,
item
.
ClassNo
,
item
.
Teacher_Id
,
item
.
Teacher_Id
,
OpenTime
=
Common
.
ConvertHelper
.
FormatDate
(
item
.
OpenTime
),
OpenTime
=
Common
.
ConvertHelper
.
FormatDate
(
item
.
OpenTime
),
PlanList
=
planList
PlanList
=
planList
...
...
Edu.WebApi/Controllers/Course/OrderController.cs
View file @
e3f7ae99
...
@@ -66,7 +66,7 @@ namespace Edu.WebApi.Controllers.Course
...
@@ -66,7 +66,7 @@ namespace Edu.WebApi.Controllers.Course
{
{
int
IsInsertClass
=
0
;
//不能插班报入
int
IsInsertClass
=
0
;
//不能插班报入
int
SurplusNum
=
x
.
ClassPersion
-
x
.
OrderStudentCount
;
int
SurplusNum
=
x
.
ClassPersion
-
x
.
OrderStudentCount
;
if
(
x
.
ClassStatus
==
ClassStatusEnum
.
StudyIng
&&
SurplusNum
>
0
)
if
(
x
.
ClassStatus
!=
ClassStatusEnum
.
EndClass
&&
SurplusNum
>
0
)
{
{
IsInsertClass
=
1
;
//可以插班报入
IsInsertClass
=
1
;
//可以插班报入
}
}
...
@@ -480,18 +480,21 @@ namespace Edu.WebApi.Controllers.Course
...
@@ -480,18 +480,21 @@ namespace Edu.WebApi.Controllers.Course
HelpEnterId
=
base
.
ParmJObj
.
GetInt
(
"HelpEnterId"
),
HelpEnterId
=
base
.
ParmJObj
.
GetInt
(
"HelpEnterId"
),
GeneralOccupation
=
base
.
ParmJObj
.
GetStringValue
(
"GeneralOccupation"
),
GeneralOccupation
=
base
.
ParmJObj
.
GetStringValue
(
"GeneralOccupation"
),
EduOccupation
=
base
.
ParmJObj
.
GetStringValue
(
"EduOccupation"
),
EduOccupation
=
base
.
ParmJObj
.
GetStringValue
(
"EduOccupation"
),
IsLessPrice
=
base
.
ParmJObj
.
GetInt
(
"IsLessPrice"
),
LessPrice
=
base
.
ParmJObj
.
GetDecimal
(
"LessPrice"
),
OrderNature
=
(
OrderNatureEnum
)
base
.
ParmJObj
.
GetInt
(
"OrderNature"
),
OrderNature
=
(
OrderNatureEnum
)
base
.
ParmJObj
.
GetInt
(
"OrderNature"
),
OldPreferPrice
=
base
.
ParmJObj
.
GetDecimal
(
"OldPreferPrice"
),
OldPreferPrice
=
base
.
ParmJObj
.
GetDecimal
(
"OldPreferPrice"
),
CourseId
=
base
.
ParmJObj
.
GetInt
(
"CourseId"
),
CourseId
=
base
.
ParmJObj
.
GetInt
(
"CourseId"
),
StartClassHours
=
base
.
ParmJObj
.
GetInt
(
"StartClassHours"
),
StartClassHours
=
base
.
ParmJObj
.
GetInt
(
"StartClassHours"
),
EffectTime
=
base
.
ParmJObj
.
GetDateTime
(
"EffectTime"
),
EffectTime
=
base
.
ParmJObj
.
GetDateTime
(
"EffectTime"
),
UpOrderId
=
base
.
ParmJObj
.
GetInt
(
"UpOrderId"
),
UpOrderId
=
base
.
ParmJObj
.
GetInt
(
"UpOrderId"
),
VisitorReserveId
=
base
.
ParmJObj
.
GetInt
(
"VisitorReserveId"
),
VisitorReserveId
=
base
.
ParmJObj
.
GetInt
(
"VisitorReserveId"
),
JoinType
=
OrderJoinTypeEnum
.
Normal
,
JoinType
=
OrderJoinTypeEnum
.
Normal
,
TargetJoinType
=
OrderJoinTypeEnum
.
Normal
,
TargetJoinType
=
OrderJoinTypeEnum
.
Normal
,
DiscountMoney
=
base
.
ParmJObj
.
GetDecimal
(
"DiscountMoney"
),
PerDiscountMoney
=
base
.
ParmJObj
.
GetDecimal
(
"PerDiscountMoney"
),
IsLessPrice
=
base
.
ParmJObj
.
GetInt
(
"IsLessPrice"
),
LessPrice
=
base
.
ParmJObj
.
GetDecimal
(
"LessPrice"
),
PerLessMoney
=
base
.
ParmJObj
.
GetDecimal
(
"PerLessMoney"
),
};
};
var
IsInsertClass
=
base
.
ParmJObj
.
GetInt
(
"IsChaBan"
);
var
IsInsertClass
=
base
.
ParmJObj
.
GetInt
(
"IsChaBan"
);
if
(
IsInsertClass
==
1
)
if
(
IsInsertClass
==
1
)
...
@@ -624,6 +627,9 @@ namespace Edu.WebApi.Controllers.Course
...
@@ -624,6 +627,9 @@ namespace Edu.WebApi.Controllers.Course
model
.
EduOccupation
,
model
.
EduOccupation
,
model
.
IsLessPrice
,
model
.
IsLessPrice
,
model
.
LessPrice
,
model
.
LessPrice
,
model
.
PerLessMoney
,
model
.
DiscountMoney
,
model
.
PerDiscountMoney
,
model
.
OrderNature
,
model
.
OrderNature
,
OrderNatureName
=
model
.
OrderNature
.
ToName
(),
OrderNatureName
=
model
.
OrderNature
.
ToName
(),
model
.
OldPreferPrice
,
model
.
OldPreferPrice
,
...
...
Edu.WebApi/Controllers/Course/QuestionController.cs
View file @
e3f7ae99
This diff is collapsed.
Click to expand it.
Edu.WebApi/Controllers/Course/StuController.cs
View file @
e3f7ae99
...
@@ -31,6 +31,9 @@ namespace Edu.WebApi.Controllers.Course
...
@@ -31,6 +31,9 @@ namespace Edu.WebApi.Controllers.Course
/// </summary>
/// </summary>
private
readonly
StudentBillModule
studentBillModule
=
AOP
.
AOPHelper
.
CreateAOPObject
<
StudentBillModule
>();
private
readonly
StudentBillModule
studentBillModule
=
AOP
.
AOPHelper
.
CreateAOPObject
<
StudentBillModule
>();
/// <summary>
/// 订单处理类对象
/// </summary>
private
readonly
OrderModule
orderModule
=
AOP
.
AOPHelper
.
CreateAOPObject
<
OrderModule
>();
private
readonly
OrderModule
orderModule
=
AOP
.
AOPHelper
.
CreateAOPObject
<
OrderModule
>();
/// <summary>
/// <summary>
...
@@ -63,11 +66,6 @@ namespace Edu.WebApi.Controllers.Course
...
@@ -63,11 +66,6 @@ namespace Edu.WebApi.Controllers.Course
var
SpecialNode
=
base
.
ParmJObj
.
GetInt
(
"SpecialNode"
);
var
SpecialNode
=
base
.
ParmJObj
.
GetInt
(
"SpecialNode"
);
//抄送人
//抄送人
string
RecipientIds
=
base
.
ParmJObj
.
GetStringValue
(
"RecipientIds"
);
string
RecipientIds
=
base
.
ParmJObj
.
GetStringValue
(
"RecipientIds"
);
// var flag = studentBillModule.SetBackBillAduitModule(BackId, AuditStatus, Description, base.UserInfo, out string message, SpecialNode: SpecialNode, BackMoney: BackMoney, RecipientIds: RecipientIds);
//return flag ? ApiResult.Success(message: message) : ApiResult.Failed(message: message);
return
ApiResult
.
Failed
();
return
ApiResult
.
Failed
();
}
}
...
@@ -140,6 +138,9 @@ namespace Edu.WebApi.Controllers.Course
...
@@ -140,6 +138,9 @@ namespace Edu.WebApi.Controllers.Course
SourceId
=
0
,
SourceId
=
0
,
IsLessPrice
=
0
,
IsLessPrice
=
0
,
LessPrice
=
0
,
LessPrice
=
0
,
PerLessMoney
=
0
,
DiscountMoney
=
0
,
PerDiscountMoney
=
0
,
OrderNature
=
oldOrderModel
.
OrderNature
,
OrderNature
=
oldOrderModel
.
OrderNature
,
OldPreferPrice
=
base
.
ParmJObj
.
GetDecimal
(
"PreferPrice"
),
//应收,
OldPreferPrice
=
base
.
ParmJObj
.
GetDecimal
(
"PreferPrice"
),
//应收,
CourseId
=
0
,
CourseId
=
0
,
...
@@ -164,6 +165,7 @@ namespace Edu.WebApi.Controllers.Course
...
@@ -164,6 +165,7 @@ namespace Edu.WebApi.Controllers.Course
orderModel
.
UpdateBy
=
base
.
UserInfo
.
Id
;
orderModel
.
UpdateBy
=
base
.
UserInfo
.
Id
;
orderModel
.
UpdateTime
=
DateTime
.
Now
;
orderModel
.
UpdateTime
=
DateTime
.
Now
;
orderModel
.
OldGuestId
=
guestId
;
orderModel
.
OldGuestId
=
guestId
;
bool
flag
=
orderModule
.
SetClassOrderModule
(
orderModel
,
base
.
UserInfo
,
base
.
CheckUserActionAuth
(
"Edit_Order"
),
out
string
message
);
bool
flag
=
orderModule
.
SetClassOrderModule
(
orderModel
,
base
.
UserInfo
,
base
.
CheckUserActionAuth
(
"Edit_Order"
),
out
string
message
);
if
(
flag
)
if
(
flag
)
{
{
...
...
Edu.WebApi/Controllers/Exam/ExamController.cs
View file @
e3f7ae99
This diff is collapsed.
Click to expand it.
Edu.WebApi/Controllers/QYWeChat/QYWeChatController.cs
View file @
e3f7ae99
...
@@ -3,12 +3,16 @@ using System.Collections.Generic;
...
@@ -3,12 +3,16 @@ using System.Collections.Generic;
using
System.Linq
;
using
System.Linq
;
using
System.Threading.Tasks
;
using
System.Threading.Tasks
;
using
Edu.Cache.User
;
using
Edu.Cache.User
;
using
Edu.Common
;
using
Edu.Common.API
;
using
Edu.Common.API
;
using
Edu.Common.Enum.Finance
;
using
Edu.Common.Enum.Finance
;
using
Edu.Common.Plugin
;
using
Edu.Common.Plugin
;
using
Edu.Model.ViewModel.WeChat
;
using
Edu.Model.ViewModel.WeChat
;
using
Edu.Module.QYWeChat
;
using
Edu.Module.QYWeChat
;
using
Edu.Module.User
;
using
Edu.ThirdCore.QYWinXin
;
using
Edu.WebApi.Filter
;
using
Edu.WebApi.Filter
;
using
Microsoft.AspNetCore.Authorization
;
using
Microsoft.AspNetCore.Cors
;
using
Microsoft.AspNetCore.Cors
;
using
Microsoft.AspNetCore.Mvc
;
using
Microsoft.AspNetCore.Mvc
;
using
Newtonsoft.Json.Linq
;
using
Newtonsoft.Json.Linq
;
...
@@ -29,6 +33,8 @@ namespace Edu.WebApi.Controllers.Finance
...
@@ -29,6 +33,8 @@ namespace Edu.WebApi.Controllers.Finance
/// </summary>
/// </summary>
private
readonly
QYWeChatModule
weChatModule
=
new
QYWeChatModule
();
private
readonly
QYWeChatModule
weChatModule
=
new
QYWeChatModule
();
private
readonly
GroupModule
groupModule
=
new
GroupModule
();
#
region
微信配置
#
region
微信配置
/// <summary>
/// <summary>
/// 获取活动配置
/// 获取活动配置
...
@@ -83,5 +89,135 @@ namespace Edu.WebApi.Controllers.Finance
...
@@ -83,5 +89,135 @@ namespace Edu.WebApi.Controllers.Finance
}
}
#
endregion
#
endregion
#
region
企业微信客户端
API
/// <summary>
/// 获取企业微信TOKEN
/// </summary>
/// <returns></returns>
[
HttpPost
]
[
AllowAnonymous
]
public
ApiResult
GetWorkToken
()
{
var
referer
=
Request
.
Headers
[
"Origin"
].
ToString
().
Replace
(
"http://"
,
""
);
if
(!
string
.
IsNullOrEmpty
(
referer
))
{
var
group
=
groupModule
.
GetGroupEntityModule
(
referer
);
if
(
group
.
GId
!=
0
)
{
var
query
=
QYWeiXinHelper
.
GetToken
(
group
.
GId
);
if
(!
string
.
IsNullOrEmpty
(
query
))
{
return
ApiResult
.
Success
(
data
:
query
);
}
else
{
return
ApiResult
.
Failed
(
message
:
"解析用户信息失败"
);
}
}
else
{
return
ApiResult
.
Failed
(
message
:
"未知的集团信息"
);
}
}
else
{
return
ApiResult
.
Failed
(
message
:
"未找到域名来源"
);
}
}
/// <summary>
/// 发起登录请求
/// </summary>
/// <returns></returns>
[
HttpPost
]
[
AllowAnonymous
]
public
ApiResult
SetUserAutoLogin
()
{
var
referer
=
Request
.
Headers
[
"Origin"
].
ToString
().
Replace
(
"http://"
,
""
);
if
(!
string
.
IsNullOrEmpty
(
referer
))
{
var
group
=
groupModule
.
GetGroupEntityModule
(
referer
);
if
(
group
.
GId
!=
0
)
{
var
query
=
JObject
.
Parse
(
RequestParm
.
Msg
.
ToString
());
var
mark
=
query
.
GetStringValue
(
"mark"
);
var
path
=
new
QYWeiXinHelper
().
GetUserAuthorizationCodePath
(
group
.
GId
,
mark
);
if
(!
string
.
IsNullOrEmpty
(
path
))
{
HttpHelper
.
HttpGet
(
path
);
return
ApiResult
.
Success
(
data
:
path
);
}
else
{
return
ApiResult
.
Failed
(
message
:
"获取登录信息失败"
);
}
}
else
{
return
ApiResult
.
Failed
(
message
:
"未知的集团信息"
);
}
}
else
{
return
ApiResult
.
Failed
(
message
:
"未找到域名来源"
);
}
}
/// <summary>
/// 获取登录信息
/// </summary>
/// <returns></returns>
[
HttpPost
]
[
AllowAnonymous
]
public
ApiResult
GetLoginUserInfo
()
{
var
mark
=
JObject
.
FromObject
(
RequestParm
.
Msg
).
GetStringValue
(
"mark"
);
mark
+=
"_Finish"
;
if
(
UserReidsCache
.
Exists
(
mark
))
{
var
cacheObj
=
UserReidsCache
.
Get
(
mark
);
var
cacheContent
=
JObject
.
FromObject
(
cacheObj
);
return
ApiResult
.
Success
(
data
:
cacheContent
[
"user"
].
ToString
());
}
else
{
return
ApiResult
.
Success
(
data
:
""
);
}
}
/// <summary>
/// 获取用户Code
/// </summary>
/// <returns></returns>
[
HttpGet
]
[
AllowAnonymous
]
public
IActionResult
UserCodeCallBack
()
{
var
mark
=
Request
.
Query
[
"state"
].
ToString
();
var
code
=
Request
.
Query
[
"code"
].
ToString
();
var
cacheObj
=
UserReidsCache
.
Get
(
mark
);
if
(
cacheObj
!=
null
&&
!
string
.
IsNullOrEmpty
(
code
))
{
var
cacheContent
=
JObject
.
FromObject
(
cacheObj
);
var
userInfo
=
new
QYWeiXinHelper
().
GetLoginWorkUserInfo
(
cacheContent
.
GetInt
(
"group_id"
),
code
);
if
(
userInfo
.
status
)
{
cacheContent
.
Add
(
"user"
,
JObject
.
FromObject
(
userInfo
.
result
));
UserReidsCache
.
Set
(
mark
+
"_Finish"
,
cacheContent
,
60
);
}
}
var
redirect_url
=
$"
{
Config
.
WorkAPPDomain
}
/login?mark=
{
mark
}
"
;
return
Redirect
(
redirect_url
);
}
#
endregion
}
}
}
}
Edu.WebApi/Startup.cs
View file @
e3f7ae99
...
@@ -12,6 +12,8 @@ using Microsoft.Extensions.DependencyInjection;
...
@@ -12,6 +12,8 @@ using Microsoft.Extensions.DependencyInjection;
using
Microsoft.Extensions.Hosting
;
using
Microsoft.Extensions.Hosting
;
using
Microsoft.Extensions.Options
;
using
Microsoft.Extensions.Options
;
using
Senparc.CO2NET
;
using
Senparc.CO2NET
;
using
Senparc.CO2NET.RegisterServices
;
using
Senparc.Weixin
;
using
Senparc.Weixin.Entities
;
using
Senparc.Weixin.Entities
;
using
Senparc.Weixin.RegisterServices
;
using
Senparc.Weixin.RegisterServices
;
using
Senparc.Weixin.Work
;
using
Senparc.Weixin.Work
;
...
@@ -42,6 +44,7 @@ namespace Edu.WebApi
...
@@ -42,6 +44,7 @@ namespace Edu.WebApi
List
<
string
>
corsArray
=
new
List
<
string
>()
List
<
string
>
corsArray
=
new
List
<
string
>()
{
{
"http://192.168.20.214:8400"
,
"http://192.168.20.214:8400"
,
"http://localhost"
,
"http://localhost:8400"
,
"http://localhost:8400"
,
"http://localhost:8081"
,
"http://localhost:8081"
,
"http://localhost:8080"
,
"http://localhost:8080"
,
...
@@ -68,15 +71,23 @@ namespace Edu.WebApi
...
@@ -68,15 +71,23 @@ namespace Edu.WebApi
"https://edu.kookaku.com"
,
"https://edu.kookaku.com"
,
"https://eduapi.oytour.com"
,
"https://eduapi.oytour.com"
,
"http://eduapi.oytour.com"
,
"http://eduapi.oytour.com"
,
"http://mobile.kookaku.com"
};
};
services
.
AddCors
(
options
=>
options
.
AddPolicy
(
"AllowCors"
,
policy
=>
policy
.
AllowAnyHeader
().
AllowAnyMethod
().
AllowCredentials
().
WithOrigins
(
corsArray
.
ToArray
())));
services
.
AddCors
(
options
=>
options
.
AddPolicy
(
"AllowCors"
,
policy
=>
policy
.
AllowAnyHeader
().
AllowAnyMethod
().
AllowCredentials
().
WithOrigins
(
corsArray
.
ToArray
())));
services
.
Configure
<
IISServerOptions
>(
options
=>
options
.
AllowSynchronousIO
=
true
);
services
.
AddSingleton
<
IHttpContextAccessor
,
HttpContextAccessor
>();
services
.
AddMemoryCache
();
//使用本地缓存必须添加
services
.
AddSenparcGlobalServices
(
Configuration
)
//Senparc.CO2NET 全局注册
.
AddSenparcWeixinServices
(
Configuration
);
services
.
AddSenparcWeixinServices
(
Configuration
);
//注册全局微信服务
}
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public
void
Configure
(
IApplicationBuilder
app
,
IWebHostEnvironment
env
,
IHostApplicationLifetime
appLifetime
)
public
void
Configure
(
IApplicationBuilder
app
,
IWebHostEnvironment
env
,
IHostApplicationLifetime
appLifetime
,
IOptions
<
SenparcSetting
>
senparcSetting
,
IOptions
<
SenparcWeixinSetting
>
senparcWeixinSetting
)
{
{
if
(
env
.
IsDevelopment
())
if
(
env
.
IsDevelopment
())
{
{
...
@@ -120,6 +131,9 @@ namespace Edu.WebApi
...
@@ -120,6 +131,9 @@ namespace Edu.WebApi
Path
.
Combine
(
Directory
.
GetCurrentDirectory
(),
"upfile"
)),
Path
.
Combine
(
Directory
.
GetCurrentDirectory
(),
"upfile"
)),
RequestPath
=
"/upfile"
RequestPath
=
"/upfile"
});
});
IRegisterService
register
=
RegisterService
.
Start
(
senparcSetting
.
Value
).
UseSenparcGlobal
();
register
.
UseSenparcWeixin
(
senparcWeixinSetting
.
Value
,
senparcSetting
.
Value
);
}
}
}
}
}
}
\ No newline at end of file
Edu.WebApi/appsettings.json
View file @
e3f7ae99
...
@@ -29,6 +29,7 @@
...
@@ -29,6 +29,7 @@
"UploadSiteUrl"
:
"http://192.168.1.36:8120"
,
"UploadSiteUrl"
:
"http://192.168.1.36:8120"
,
"ViewFileSiteUrl"
:
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com"
,
"ViewFileSiteUrl"
:
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com"
,
"ErpViewFileSiteUrl"
:
"http://imgfile.oytour.com"
,
"ErpViewFileSiteUrl"
:
"http://imgfile.oytour.com"
,
"WorkAPPDomain"
:
"http://mobile.kookaku.com"
,
"Mongo"
:
"mongodb://47.96.25.130:27017"
,
"Mongo"
:
"mongodb://47.96.25.130:27017"
,
"MongoDBName"
:
"Edu"
,
"MongoDBName"
:
"Edu"
,
"WkHtmlToPdfPath"
:
"D:/wkhtmltopdf/bin/"
,
"WkHtmlToPdfPath"
:
"D:/wkhtmltopdf/bin/"
,
...
...
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