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
0ed24383
Commit
0ed24383
authored
Dec 01, 2020
by
吴春
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交代码
parent
fa037662
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
1088 additions
and
56 deletions
+1088
-56
Config.cs
Edu.Common/Config.cs
+9
-0
StoreTypeEnum.cs
Edu.Common/Enum/Public/StoreTypeEnum.cs
+6
-1
BaseTemplateTypeEnum.cs
Edu.Common/Enum/System/BaseTemplateTypeEnum.cs
+21
-0
MsgSendStatusEnum.cs
Edu.Common/Enum/System/MsgSendStatusEnum.cs
+28
-0
RB_Msg_BaseTemplate.cs
Edu.Model/Entity/System/RB_Msg_BaseTemplate.cs
+62
-0
RB_Msg_Log.cs
Edu.Model/Entity/System/RB_Msg_Log.cs
+15
-2
RB_File_Store.cs
Edu.Model/Public/RB_File_Store.cs
+5
-1
RB_Msg_BaseTemplate_ViewModel.cs
Edu.Model/ViewModel/System/RB_Msg_BaseTemplate_ViewModel.cs
+23
-0
RB_Msg_Log_ViewModel.cs
Edu.Model/ViewModel/System/RB_Msg_Log_ViewModel.cs
+3
-0
Edu.Module.System.csproj
Edu.Module.System/Edu.Module.System.csproj
+7
-0
MsgLogModule.cs
Edu.Module.System/MsgLogModule.cs
+200
-3
RB_Msg_BaseRepository.cs
Edu.Repository/System/RB_Msg_BaseRepository.cs
+6
-6
RB_Msg_BaseTemplateRepository.cs
Edu.Repository/System/RB_Msg_BaseTemplateRepository.cs
+76
-0
RB_Msg_LogRepository.cs
Edu.Repository/System/RB_Msg_LogRepository.cs
+3
-3
Edu.ThirdCore.csproj
Edu.ThirdCore/Edu.ThirdCore.csproj
+26
-0
MessageCore.cs
Edu.ThirdCore/Message/MessageCore.cs
+257
-0
QueueHelper.cs
Edu.ThirdCore/Message/QueueHelper.cs
+40
-0
SMSService.cs
Edu.ThirdCore/Message/SMSService.cs
+85
-0
aliyun-net-sdk-core.dll
Edu.ThirdCore/lib/aliyun-net-sdk-core.dll
+0
-0
aliyun-net-sdk-dysmsapi.dll
Edu.ThirdCore/lib/aliyun-net-sdk-dysmsapi.dll
+0
-0
MsgController.cs
Edu.WebApi/Controllers/Public/MsgController.cs
+165
-3
PublicController.cs
Edu.WebApi/Controllers/Public/PublicController.cs
+10
-1
Startup.cs
Edu.WebApi/Startup.cs
+6
-2
appsettings.json
Edu.WebApi/appsettings.json
+35
-34
No files found.
Edu.Common/Config.cs
View file @
0ed24383
...
...
@@ -273,5 +273,14 @@ namespace Edu.Common
return
_isOnline
;
}
}
public
static
int
IsSendMsg
{
get
{
int
.
TryParse
(
ReadConfigKey
(
"IsSendMsg"
),
out
int
_isSendMsg
);
return
_isSendMsg
;
}
}
}
}
\ No newline at end of file
Edu.Common/Enum/Public/StoreTypeEnum.cs
View file @
0ed24383
...
...
@@ -16,6 +16,11 @@ namespace Edu.Common.Enum.Public
/// 阿里云
/// </summary>
[
EnumField
(
"阿里云"
)]
Alicloud
=
2
Alicloud
=
2
,
/// <summary>
/// 系统
/// </summary>
[
EnumField
(
"系统"
)]
System
=
3
}
}
Edu.Common/Enum/System/BaseTemplateTypeEnum.cs
0 → 100644
View file @
0ed24383
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
Edu.Common.Plugin
;
namespace
Edu.Common.Enum.System
{
public
enum
BaseTemplateTypeEnum
{
/// <summary>
/// 订单下单成功通知
/// </summary>
[
EnumField
(
"订单下单成功通知"
)]
OrderSuccess
=
1
,
/// <summary>
/// 订单下单失败通知
/// </summary>
[
EnumField
(
"订单下单失败通知"
)]
OrderFail
=
2
}
}
Edu.Common/Enum/System/MsgSendStatusEnum.cs
0 → 100644
View file @
0ed24383
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
Edu.Common.Plugin
;
namespace
Edu.Common.Enum.System
{
public
enum
MsgSendStatusEnum
{
//发送状态1:等待回执,2:发送失败,3:发送成功。
/// <summary>
/// 等待回执
/// </summary>
[
EnumField
(
"等待回执"
)]
InReceipt
=
1
,
/// <summary>
/// 发送失败
/// </summary>
[
EnumField
(
"发送失败"
)]
Fail
=
2
,
/// <summary>
/// 发送成功
/// </summary>
[
EnumField
(
"发送成功"
)]
Success
=
3
,
}
}
Edu.Model/Entity/System/RB_Msg_BaseTemplate.cs
0 → 100644
View file @
0ed24383
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
Edu.Common.Enum.Public
;
using
Edu.Common.Enum.System
;
using
VT.FW.DB
;
namespace
Edu.Model.Entity.System
{
/// <summary>
/// 短信发送记录实体表
/// </summary>
[
Serializable
]
[
DB
(
ConnectionName
=
"DefaultConnection"
)]
public
class
RB_Msg_BaseTemplate
{
public
int
ID
{
get
;
set
;
}
/// <summary>
/// 集团编号
/// </summary>
public
int
Group_Id
{
get
;
set
;
}
/// <summary>
/// 模板状态,0-正常,1-禁用
/// </summary>
public
int
TemplateStaus
{
get
;
set
;
}
public
BaseTemplateTypeEnum
BaseTemplateType
{
get
;
set
;
}
/// <summary>
/// 存储位置,1-腾讯云,2-阿里,3-其他
/// </summary>
public
StoreTypeEnum
StoreType
{
get
;
set
;
}
/// <summary>
/// 签名
/// </summary>
public
string
Sign
{
get
;
set
;
}
/// <summary>
/// 消息配置信息
/// </summary>
public
string
TemplateId
{
get
;
set
;
}
/// <summary>
/// 创建人
/// </summary>
public
int
CreateBy
{
get
;
set
;
}
/// <summary>
/// 创建时间
/// </summary>
public
DateTime
CreateDate
{
get
;
set
;
}
}
}
Edu.Model/Entity/System/RB_Msg_Log.cs
View file @
0ed24383
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
Edu.Common.Enum.System
;
using
VT.FW.DB
;
namespace
Edu.Model.Entity.System
...
...
@@ -36,10 +37,10 @@ namespace Edu.Model.Entity.System
public
DateTime
CreateDate
{
get
;
set
;
}
/// <summary>
/// 发送状态1
-失败,2-成功
/// 发送状态1
:等待回执,2:发送失败,3:发送成功。
/// </summary>
public
int
SendStatus
{
get
;
set
;
}
public
MsgSendStatusEnum
?
SendStatus
{
get
;
set
;
}
/// <summary>
...
...
@@ -67,5 +68,17 @@ namespace Edu.Model.Entity.System
/// 接收人电话
/// </summary>
public
string
ReceiverPhone
{
get
;
set
;
}
/// <summary>
/// 存储位置,1-腾讯云,2-阿里,3-其他
/// </summary>
public
Common
.
Enum
.
Public
.
StoreTypeEnum
StoreType
{
get
;
set
;
}
/// <summary>
/// 消息配置信息
/// </summary>
public
string
MsgConfigure
{
get
;
set
;
}
}
}
Edu.Model/Public/RB_File_Store.cs
View file @
0ed24383
...
...
@@ -56,6 +56,10 @@ namespace Edu.Model.Public
/// </summary>
public
string
CustomDomain
{
get
;
set
;
}
/// <summary>
/// 上传域名
/// </summary>
public
string
UploadDomain
{
get
;
set
;
}
/// <summary>
/// 自定义域名
...
...
@@ -65,7 +69,7 @@ namespace Edu.Model.Public
/// 自定义域名
/// </summary>
public
string
SecretId
{
get
;
set
;
}
}
}
Edu.Model/ViewModel/System/RB_Msg_BaseTemplate_ViewModel.cs
0 → 100644
View file @
0ed24383
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
Edu.Model.Entity.System
;
namespace
Edu.Model.ViewModel.System
{
public
class
RB_Msg_BaseTemplate_ViewModel
:
RB_Msg_BaseTemplate
{
/// <summary>
/// 创建时间字符串
/// </summary>
public
string
CreateDateStr
{
get
{
return
Common
.
ConvertHelper
.
FormatTime
(
this
.
CreateDate
);
}
}
public
string
BaseTemplateTypeStr
{
get
;
set
;
}
}
}
Edu.Model/ViewModel/System/RB_Msg_Log_ViewModel.cs
View file @
0ed24383
...
...
@@ -28,5 +28,8 @@ namespace Edu.Model.ViewModel.System
/// </summary>
public
string
EndDate
{
get
;
set
;
}
public
RB_Msg_Base_ViewModel
MsgBase
{
get
;
set
;
}
}
}
Edu.Module.System/Edu.Module.System.csproj
View file @
0ed24383
...
...
@@ -9,6 +9,13 @@
<ProjectReference Include="..\Edu.Common\Edu.Common.csproj" />
<ProjectReference Include="..\Edu.Model\Edu.Model.csproj" />
<ProjectReference Include="..\Edu.Repository\Edu.Repository.csproj" />
<ProjectReference Include="..\Edu.ThirdCore\Edu.ThirdCore.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="aliyun-net-sdk-dysmsapi">
<HintPath>..\Edu.ThirdCore\lib\aliyun-net-sdk-dysmsapi.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
Edu.Module.System/MsgLogModule.cs
View file @
0ed24383
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
Edu.Common.Enum
;
using
Edu.Model.Entity.System
;
using
Edu.Model.ViewModel.System
;
using
Edu.Repository.System
;
using
VT.FW.DB
;
using
Aliyun.Net.SDK.Core
;
namespace
Edu.Module.System
{
...
...
@@ -21,6 +23,11 @@ namespace Edu.Module.System
/// </summary>
private
readonly
RB_Msg_BaseRepository
msgBaseRepository
=
new
RB_Msg_BaseRepository
();
/// <summary>
/// 短信模板配置仓储层对象
/// </summary>
private
readonly
RB_Msg_BaseTemplateRepository
msgBaseTemplateRepository
=
new
RB_Msg_BaseTemplateRepository
();
#
region
短信记录
...
...
@@ -42,7 +49,7 @@ namespace Edu.Module.System
/// <summary>
/// 获取
班级
列表
/// 获取
短信配置
列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
...
...
@@ -52,7 +59,7 @@ namespace Edu.Module.System
}
/// <summary>
/// 获取
班级分页
列表
/// 获取
短信配置
列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
...
...
@@ -76,7 +83,8 @@ namespace Edu.Module.System
{
{
nameof
(
RB_Msg_Base
.
CreateDate
),
model
.
CreateDate
},
{
nameof
(
RB_Msg_Base
.
CreateBy
),
model
.
CreateBy
},
{
nameof
(
RB_Msg_Base
.
MsgConfigure
),
model
.
MsgConfigure
}
{
nameof
(
RB_Msg_Base
.
StoreType
),
model
.
StoreType
},
{
nameof
(
RB_Msg_Base
.
MsgConfigure
),
model
.
MsgConfigure
}
};
return
msgBaseRepository
.
Update
(
fileds
,
new
WhereHelper
(
nameof
(
RB_Msg_Base
.
ID
),
model
.
ID
));
}
...
...
@@ -111,5 +119,194 @@ namespace Edu.Module.System
return
msgBaseRepository
.
Update
(
fileds
,
new
WhereHelper
(
nameof
(
RB_Msg_Base
.
ID
),
ID
));
}
#
endregion
#
region
短信模板配置
/// <summary>
/// 获取短信模板配置列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public
List
<
RB_Msg_BaseTemplate_ViewModel
>
GetMsgBaseTemplateListModule
(
RB_Msg_BaseTemplate_ViewModel
query
)
{
return
msgBaseTemplateRepository
.
GetListRepository
(
query
);
}
/// <summary>
/// 获取短信模板配置分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public
List
<
RB_Msg_BaseTemplate_ViewModel
>
GetMsgBaseTemplatePageListModule
(
int
pageIndex
,
int
pageSize
,
out
long
rowsCount
,
RB_Msg_BaseTemplate_ViewModel
query
)
{
return
msgBaseTemplateRepository
.
GetPageListRepository
(
pageIndex
,
pageSize
,
out
rowsCount
,
query
);
}
/// <summary>
/// 新增修改 短信模板配置
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public
bool
SetMsgBaseTemplateModule
(
RB_Msg_BaseTemplate_ViewModel
model
)
{
if
(
model
.
ID
>
0
)
{
Dictionary
<
string
,
object
>
fileds
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Msg_BaseTemplate_ViewModel
.
CreateDate
),
model
.
CreateDate
},
{
nameof
(
RB_Msg_BaseTemplate_ViewModel
.
CreateBy
),
model
.
CreateBy
},
{
nameof
(
RB_Msg_BaseTemplate_ViewModel
.
TemplateStaus
),
model
.
TemplateStaus
},
{
nameof
(
RB_Msg_BaseTemplate_ViewModel
.
TemplateId
),
model
.
TemplateId
},
{
nameof
(
RB_Msg_BaseTemplate_ViewModel
.
StoreType
),
model
.
StoreType
},
{
nameof
(
RB_Msg_BaseTemplate_ViewModel
.
Sign
),
model
.
Sign
},
{
nameof
(
RB_Msg_BaseTemplate_ViewModel
.
BaseTemplateType
),
model
.
BaseTemplateType
}
};
return
msgBaseTemplateRepository
.
Update
(
fileds
,
new
WhereHelper
(
nameof
(
RB_Msg_BaseTemplate_ViewModel
.
ID
),
model
.
ID
));
}
else
{
var
newId
=
msgBaseTemplateRepository
.
Insert
(
model
);
return
newId
>
0
;
}
}
/// <summary>
/// 根据短信模板配置编号获取短信配置详细信息
/// </summary>
/// <param name="ClassId"></param>
/// <returns></returns>
public
RB_Msg_BaseTemplate_ViewModel
GetMsgBaseTemplateModule
(
object
ClassId
)
{
return
msgBaseTemplateRepository
.
GetEntity
<
RB_Msg_BaseTemplate_ViewModel
>(
ClassId
);
}
/// <summary>
/// 删除短信模板配置
/// </summary>
/// <param name="ClassId"></param>
/// <returns></returns>
public
bool
RemoveMsgBaseTemplateModule
(
object
ID
)
{
Dictionary
<
string
,
object
>
fileds
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Msg_BaseTemplate_ViewModel
.
TemplateStaus
),(
int
)
DateStateEnum
.
Delete
},
};
return
msgBaseTemplateRepository
.
Update
(
fileds
,
new
WhereHelper
(
nameof
(
RB_Msg_BaseTemplate_ViewModel
.
ID
),
ID
));
}
#
endregion
#
region
发送短信统一方法
public
void
SendMsg
(
object
PhoneMessage
,
Common
.
Enum
.
System
.
BaseTemplateTypeEnum
BaseTemplateType
,
RB_Msg_Log
msgLogModel
)
{
//查询当前集团的短信基础配置
var
msgBaseList
=
msgBaseRepository
.
GetListRepository
(
new
RB_Msg_Base_Function_ViewModel
{
Group_Id
=
msgLogModel
.
Group_Id
});
//查询当前下面是否有模板
var
allMsgBaseTemplateList
=
msgBaseTemplateRepository
.
GetListRepository
(
new
RB_Msg_BaseTemplate_ViewModel
{
BaseTemplateType
=
BaseTemplateType
,
Group_Id
=
msgLogModel
.
Group_Id
}).
Where
(
x
=>
x
.
TemplateStaus
==
0
);
if
(
msgBaseList
!=
null
&&
msgBaseList
.
Any
()
&&
allMsgBaseTemplateList
!=
null
&&
allMsgBaseTemplateList
.
Any
())
{
RB_Msg_Base_Function_ViewModel
model
=
new
RB_Msg_Base_Function_ViewModel
();
// msgBaseList.OrderBy(x => x.ID).FirstOrDefault();
if
(
allMsgBaseTemplateList
.
Where
(
x
=>
x
.
BaseTemplateType
==
BaseTemplateType
).
GroupBy
(
x
=>
x
.
StoreType
).
Count
()
>
1
)
{
model
=
msgBaseList
.
OrderBy
(
x
=>
x
.
ID
).
FirstOrDefault
();
}
else
{
model
=
msgBaseList
.
Where
(
x
=>
x
.
StoreType
==
allMsgBaseTemplateList
.
FirstOrDefault
().
StoreType
).
FirstOrDefault
();
}
if
(
model
!=
null
&&
model
.
ID
>
0
)
{
if
(!
string
.
IsNullOrWhiteSpace
(
model
.
MsgConfigure
))
{
msgLogModel
.
StoreType
=
model
.
StoreType
;
msgLogModel
.
MsgConfigure
=
model
.
MsgConfigure
;
int
id
=
msgLogRepository
.
Insert
(
msgLogModel
);
model
.
MsgBase
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
RB_Msg_Base_ViewModel
>(
model
.
MsgConfigure
);
var
msgBaseTemplateList
=
allMsgBaseTemplateList
.
Where
(
x
=>
x
.
BaseTemplateType
==
BaseTemplateType
);
if
(!
string
.
IsNullOrWhiteSpace
(
model
.
MsgBase
.
AccessKeyId
)
&&
!
string
.
IsNullOrWhiteSpace
(
model
.
MsgBase
.
AccessSecret
)
&&
!
string
.
IsNullOrWhiteSpace
(
model
.
MsgBase
.
Domain
)
&&
!
string
.
IsNullOrWhiteSpace
(
model
.
MsgBase
.
RegionId
))
{
if
(
msgBaseTemplateList
!=
null
&&
msgBaseTemplateList
.
Any
(
x
=>
x
.
TemplateStaus
==
0
))
{
var
msgBaseTemplateModel
=
msgBaseTemplateList
.
Where
(
x
=>
x
.
TemplateStaus
==
0
).
FirstOrDefault
();
if
(
Common
.
Config
.
IsSendMsg
==
1
)
{
ThirdCore
.
Message
.
SMSService
.
SendMsg
(
msgLogModel
.
ReceiverPhone
,
PhoneMessage
,
msgBaseTemplateModel
.
TemplateId
,
msgBaseTemplateModel
.
Sign
,
model
.
MsgBase
.
Domain
,
model
.
MsgBase
.
AccessKeyId
,
model
.
MsgBase
.
AccessSecret
,
model
.
MsgBase
.
RegionId
,
id
.
ToString
());
}
}
}
}
}
}
// ThirdCore.Message.SMSService.SendMsg("13551132417", PhoneMessage, "SMS_201722097", "印象之旅", "dysmsapi.aliyuncs.com", "LTAIwE7l9dImZSa3", "j47Ajn0d0WzUCIX8Biyj3P2r8QDltI", "cn-hangzhou");
}
/// <summary>
/// 更新消息发送状态
/// </summary>
public
void
UpdateMsgSendStatus
()
{
var
list
=
msgLogRepository
.
GetListRepository
(
new
RB_Msg_Log
{
SendStatus
=
Common
.
Enum
.
System
.
MsgSendStatusEnum
.
InReceipt
});
foreach
(
var
item
in
list
.
GroupBy
(
x
=>
new
{
x
.
ReceiverPhone
,
x
.
StoreType
,
x
.
MsgConfigure
,
CreateDate
=
x
.
CreateDate
.
ToString
(
"yyyyMMdd"
)
}))
{
if
(
item
.
Key
.
StoreType
==
Common
.
Enum
.
Public
.
StoreTypeEnum
.
Alicloud
)
{
try
{
RB_Msg_Base_ViewModel
msgBase
=
new
RB_Msg_Base_ViewModel
();
if
(!
string
.
IsNullOrWhiteSpace
(
item
.
Key
.
MsgConfigure
))
{
msgBase
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
RB_Msg_Base_ViewModel
>(
item
.
Key
.
MsgConfigure
);
}
Aliyun
.
Acs
.
Dysmsapi
.
Model
.
V20170525
.
QuerySendDetailsResponse
querySendDetailsResponse
=
Edu
.
ThirdCore
.
Message
.
MessageCore
.
QuerySendDetails
(
item
.
Key
.
ReceiverPhone
,
DateTime
.
Now
.
ToString
(
"yyyyMMdd"
),
""
,
msgBase
.
Domain
,
msgBase
.
AccessKeyId
,
msgBase
.
AccessSecret
,
msgBase
.
RegionId
);
if
(
querySendDetailsResponse
.
Code
==
"OK"
)
{
if
(
querySendDetailsResponse
.
SmsSendDetailDTOs
!=
null
&&
querySendDetailsResponse
.
SmsSendDetailDTOs
.
Any
())
{
foreach
(
var
modelSmsSendDetailDTO
in
querySendDetailsResponse
.
SmsSendDetailDTOs
)
{
int
sendStatus
=
1
;
if
(
modelSmsSendDetailDTO
!=
null
&&
!
string
.
IsNullOrWhiteSpace
(
modelSmsSendDetailDTO
.
OutId
))
{
sendStatus
=
(
int
)(
modelSmsSendDetailDTO
.
SendStatus
??
1
);
}
if
(
sendStatus
>
1
)
{
Dictionary
<
string
,
object
>
fileds
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Msg_Log
.
SendStatus
),
sendStatus
}
};
msgLogRepository
.
Update
(
fileds
,
new
WhereHelper
(
nameof
(
RB_Msg_Log
.
ID
),
Convert
.
ToInt32
(
modelSmsSendDetailDTO
.
OutId
)));
}
}
}
}
}
catch
(
Exception
ex
)
{
}
}
}
}
#
endregion
}
}
Edu.Repository/System/RB_Msg_BaseRepository.cs
View file @
0ed24383
...
...
@@ -7,7 +7,7 @@ using Edu.Model.ViewModel.System;
namespace
Edu.Repository.System
{
public
class
RB_Msg_BaseRepository
:
BaseRepository
<
RB_Msg_Base
>
public
class
RB_Msg_BaseRepository
:
BaseRepository
<
RB_Msg_Base
>
{
/// <summary>
/// 表名称
...
...
@@ -22,7 +22,7 @@ namespace Edu.Repository.System
public
List
<
RB_Msg_Base_Function_ViewModel
>
GetListRepository
(
RB_Msg_Base_Function_ViewModel
query
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
Append
(
$" SELECT * FROM
{
TableName
}
"
);
builder
.
Append
(
$" SELECT * FROM
{
TableName
}
where Status=0
"
);
if
(
query
!=
null
)
{
if
(
query
.
Group_Id
>
0
)
...
...
@@ -31,9 +31,9 @@ namespace Edu.Repository.System
}
if
(
query
.
StoreType
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Msg_Base
.
StoreType
)}
=
{
query
.
StoreType
}
"
);
builder
.
Append
(
$" AND
{
nameof
(
RB_Msg_Base
.
StoreType
)}
=
{
(
int
)
query
.
StoreType
}
"
);
}
}
return
Get
<
RB_Msg_Base_Function_ViewModel
>(
builder
.
ToString
()).
ToList
();
...
...
@@ -48,7 +48,7 @@ namespace Edu.Repository.System
public
List
<
RB_Msg_Base_Function_ViewModel
>
GetPageListRepository
(
int
pageIndex
,
int
pageSize
,
out
long
rowsCount
,
RB_Msg_Base_Function_ViewModel
query
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
Append
(
$" SELECT * FROM
{
TableName
}
where
1=1
"
);
builder
.
Append
(
$" SELECT * FROM
{
TableName
}
where
Status=0
"
);
if
(
query
!=
null
)
{
if
(
query
.
Group_Id
>
0
)
...
...
@@ -57,7 +57,7 @@ namespace Edu.Repository.System
}
if
(
query
.
StoreType
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Msg_Base
.
StoreType
)}
=
{
query
.
StoreType
}
"
);
builder
.
Append
(
$" AND
{
nameof
(
RB_Msg_Base
.
StoreType
)}
=
{
(
int
)
query
.
StoreType
}
"
);
}
}
...
...
Edu.Repository/System/RB_Msg_BaseTemplateRepository.cs
0 → 100644
View file @
0ed24383
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
Edu.Model.Entity.System
;
using
Edu.Model.ViewModel.System
;
namespace
Edu.Repository.System
{
/// <summary>
/// 短信模板仓储层
/// </summary>
public
class
RB_Msg_BaseTemplateRepository
:
BaseRepository
<
RB_Msg_BaseTemplate
>
{
/// <summary>
/// 表名称
/// </summary>
public
string
TableName
{
get
{
return
nameof
(
RB_Msg_BaseTemplate
);
}
}
/// <summary>
/// 获取短信模板配置信息
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public
List
<
RB_Msg_BaseTemplate_ViewModel
>
GetListRepository
(
RB_Msg_BaseTemplate_ViewModel
query
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
Append
(
$" SELECT * FROM
{
TableName
}
where 1=1 "
);
if
(
query
!=
null
)
{
if
(
query
.
Group_Id
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Msg_BaseTemplate
.
Group_Id
)}
=
{
query
.
Group_Id
}
"
);
}
if
(
query
.
StoreType
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Msg_BaseTemplate
.
StoreType
)}
=
{(
int
)
query
.
StoreType
}
"
);
}
if
(
query
.
BaseTemplateType
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Msg_BaseTemplate
.
BaseTemplateType
)}
=
{(
int
)
query
.
BaseTemplateType
}
"
);
}
}
return
Get
<
RB_Msg_BaseTemplate_ViewModel
>(
builder
.
ToString
()).
ToList
();
}
/// <summary>
/// 获取短信模板配置信息
/// </summary>
/// <param name="query">查询条件</param>
/// <returns></returns>
public
List
<
RB_Msg_BaseTemplate_ViewModel
>
GetPageListRepository
(
int
pageIndex
,
int
pageSize
,
out
long
rowsCount
,
RB_Msg_BaseTemplate_ViewModel
query
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
Append
(
$" SELECT * FROM
{
TableName
}
where 1=1 "
);
if
(
query
!=
null
)
{
if
(
query
.
Group_Id
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Msg_BaseTemplate
.
Group_Id
)}
=
{
query
.
Group_Id
}
"
);
}
if
(
query
.
StoreType
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Msg_BaseTemplate
.
StoreType
)}
=
{(
int
)
query
.
StoreType
}
"
);
}
if
(
query
.
BaseTemplateType
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Msg_BaseTemplate
.
BaseTemplateType
)}
=
{(
int
)
query
.
BaseTemplateType
}
"
);
}
}
return
GetPage
<
RB_Msg_BaseTemplate_ViewModel
>(
pageIndex
,
pageSize
,
out
rowsCount
,
builder
.
ToString
()).
ToList
();
}
}
}
Edu.Repository/System/RB_Msg_LogRepository.cs
View file @
0ed24383
...
...
@@ -21,7 +21,7 @@ namespace Edu.Repository.System
public
List
<
RB_Msg_Log
>
GetListRepository
(
RB_Msg_Log
query
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
Append
(
$" SELECT * FROM
{
TableName
}
"
);
builder
.
Append
(
$" SELECT * FROM
{
TableName
}
where 1=1
"
);
if
(
query
!=
null
)
{
if
(
query
.
Group_Id
>
0
)
...
...
@@ -32,7 +32,7 @@ namespace Edu.Repository.System
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Msg_Log
.
School_Id
)}
=
{
query
.
School_Id
}
"
);
}
if
(
query
.
SendStatus
>
0
)
if
(
query
.
SendStatus
.
HasValue
&&
query
.
SendStatus
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Msg_Log
.
SendStatus
)}
=
{(
int
)
query
.
SendStatus
}
"
);
}
...
...
@@ -62,7 +62,7 @@ namespace Edu.Repository.System
builder
.
Append
(
$" AND
{
nameof
(
RB_Msg_Log
.
School_Id
)}
=
{
query
.
School_Id
}
"
);
}
if
(
query
.
SendStatus
>
0
)
if
(
query
.
SendStatus
.
HasValue
&&
query
.
SendStatus
>
0
)
{
builder
.
Append
(
$" AND
{
nameof
(
RB_Msg_Log
.
SendStatus
)}
=
{(
int
)
query
.
SendStatus
}
"
);
}
...
...
Edu.ThirdCore/Edu.ThirdCore.csproj
0 → 100644
View file @
0ed24383
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Folder Include="Oss\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Aliyun.Net.SDK.Core" Version="1.0.3" />
<PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.10.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
</ItemGroup>
<ItemGroup>
<Reference Include="aliyun-net-sdk-core">
<HintPath>lib\aliyun-net-sdk-core.dll</HintPath>
</Reference>
<Reference Include="aliyun-net-sdk-dysmsapi">
<HintPath>lib\aliyun-net-sdk-dysmsapi.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
Edu.ThirdCore/Message/MessageCore.cs
0 → 100644
View file @
0ed24383
using
Newtonsoft.Json
;
using
Newtonsoft.Json.Linq
;
using
System
;
using
System.Threading
;
using
Aliyun.Acs.Core
;
using
Aliyun.Acs.Core.Exceptions
;
using
Aliyun.Acs.Core.Profile
;
using
Aliyun.Acs.Dysmsapi.Model.V20170525
;
namespace
Edu.ThirdCore.Message
{
/// <summary>
/// 消息发送中心
/// </summary>
public
class
MessageCore
{
private
static
bool
IsFinish
=
true
;
public
static
void
Init
()
{
while
(
QueueHelper
.
Queue
.
Count
==
0
||
!
IsFinish
)
{
Thread
.
Sleep
(
1000
);
};
IsFinish
=
false
;
string
content
=
QueueHelper
.
Queue
.
Dequeue
()
as
string
;
Run
(
content
);
Init
();
}
public
static
void
Run
(
string
content
)
{
try
{
JObject
obj
=
JObject
.
Parse
(
content
);
switch
(
obj
[
"cmd"
].
ToString
().
ToLower
())
{
case
"sms"
:
SendSMS
(
obj
);
break
;
default
:
break
;
}
}
catch
(
Exception
ex
)
{
Console
.
WriteLine
(
ex
.
Message
);
}
IsFinish
=
true
;
}
private
static
void
SendSMS
(
JObject
obj
)
{
SendSmsRequest
request
=
new
SendSmsRequest
();
try
{
String
product
=
"Dysmsapi"
;
//短信API产品名称(短信产品名固定,无需修改)
String
domain
=
obj
[
"Domain"
].
ToString
();
//短信API产品域名(接口地址固定,无需修改)
String
accessKeyId
=
obj
[
"AccessKeyId"
].
ToString
();
String
accessKeySecret
=
obj
[
"AccessKeySecret"
].
ToString
();
IClientProfile
profile
=
DefaultProfile
.
GetProfile
(
obj
[
"RegionId"
].
ToString
(),
accessKeyId
,
accessKeySecret
);
DefaultProfile
.
AddEndpoint
(
obj
[
"RegionId"
].
ToString
(),
obj
[
"RegionId"
].
ToString
(),
product
,
domain
);
IAcsClient
acsClient
=
new
DefaultAcsClient
(
profile
);
//必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
request
.
PhoneNumbers
=
obj
[
"phoneNumber"
].
ToString
();
request
.
SignName
=
obj
[
"SignName"
].
ToString
();
//aliSms["signName"].ToString();
//必填:短信模板-可在短信控制台中找到
request
.
TemplateCode
=
obj
[
"templateCode"
].
ToString
();
//可选:模板中的变量替换JSON串,如模板内容为"您的验证码为${code}"时,此处的值为
request
.
TemplateParam
=
obj
[
"templateParam"
].
ToString
();
//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
request
.
OutId
=
obj
[
"OutId"
].
ToString
();
//请求失败这里会抛ClientException异常
SendSmsResponse
sendSmsResponse
=
acsClient
.
GetAcsResponse
(
request
);
if
(!
sendSmsResponse
.
Code
.
Equals
(
"OK"
))
{
var
data
=
new
{
phoneNumber
=
obj
[
"phoneNumber"
].
ToString
(),
templateParam
=
obj
[
"templateParam"
].
ToString
(),
code
=
sendSmsResponse
.
Code
,
message
=
sendSmsResponse
.
Message
};
//return data;
}
var
datatst
=
new
{
phoneNumber
=
obj
[
"phoneNumber"
].
ToString
(),
templateParam
=
obj
[
"templateParam"
].
ToString
(),
code
=
sendSmsResponse
.
Code
,
message
=
sendSmsResponse
.
Message
};
//return datatst;
// Mall.Common.Plugin.LogHelper.WriteInfo(JsonConvert.SerializeObject(datatst));
}
catch
(
Aliyun
.
Acs
.
Core
.
Exceptions
.
ServerException
ex
)
{
var
data
=
new
{
phoneNumber
=
obj
[
"phoneNumber"
].
ToString
(),
templateParam
=
obj
[
"templateParam"
].
ToString
(),
code
=
"NO"
,
message
=
ex
.
ToString
()
};
// return data;
//LogHelper.Write(ex, "SendSMS1");
}
catch
(
ClientException
ex
)
{
var
data
=
new
{
phoneNumber
=
obj
[
"phoneNumber"
].
ToString
(),
templateParam
=
obj
[
"templateParam"
].
ToString
(),
code
=
"NO"
,
message
=
ex
.
ToString
()
};
// return data;
// LogHelper.Write(ex, "SendSMS2");
}
}
/// <summary>
/// java调用
/// </summary>
/// <param name="obj"></param>
public
static
string
SendSMSToJava
(
string
phoneNumber
,
string
templateCode
,
string
templateParam
,
string
SignName
,
string
Domain
,
string
AccessKeyId
,
string
AccessKeySecret
,
string
RegionId
)
{
SendSmsRequest
request
=
new
SendSmsRequest
();
try
{
//JObject aliSms = Config.AliSms;
//String product = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改)
//String domain = "dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改)
//String accessKeyId = aliSms["accessKeyId"].ToString();
//String accessKeySecret = aliSms["accessKeySecret"].ToString();
//IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);
//DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
String
product
=
"Dysmsapi"
;
//短信API产品名称(短信产品名固定,无需修改)
String
domain
=
Domain
;
//短信API产品域名(接口地址固定,无需修改)
String
accessKeyId
=
AccessKeyId
;
String
accessKeySecret
=
AccessKeySecret
;
IClientProfile
profile
=
DefaultProfile
.
GetProfile
(
RegionId
,
accessKeyId
,
accessKeySecret
);
DefaultProfile
.
AddEndpoint
(
RegionId
,
RegionId
,
product
,
domain
);
IAcsClient
acsClient
=
new
DefaultAcsClient
(
profile
);
//必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
request
.
PhoneNumbers
=
phoneNumber
;
request
.
SignName
=
SignName
;
// aliSms["signName"].ToString();
//必填:短信模板-可在短信控制台中找到
request
.
TemplateCode
=
templateCode
;
//可选:模板中的变量替换JSON串,如模板内容为"您的验证码为${code}"时,此处的值为
request
.
TemplateParam
=
templateParam
;
//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
request
.
OutId
=
""
;
//请求失败这里会抛ClientException异常
SendSmsResponse
sendSmsResponse
=
acsClient
.
GetAcsResponse
(
request
);
if
(!
sendSmsResponse
.
Code
.
Equals
(
"OK"
))
{
var
data
=
new
{
phoneNumber
,
templateParam
,
code
=
sendSmsResponse
.
Code
,
message
=
sendSmsResponse
.
Message
};
return
""
;
}
else
{
return
sendSmsResponse
.
BizId
;
}
}
catch
(
Aliyun
.
Acs
.
Core
.
Exceptions
.
ServerException
ex
)
{
//LogHelper.Write(ex, "SendSMSToJava1");
}
catch
(
ClientException
ex
)
{
//LogHelper.Write(ex, "SendSMSToJava2");
}
return
""
;
}
/// <summary>
/// 获取短信发送状态
/// </summary>
/// <param name="phoneNumber"></param>
/// <param name="SendDate"></param>
/// <param name="BizId"></param>
/// <returns></returns>
public
static
string
SendSMSStatus
(
string
phoneNumber
,
string
SendDate
,
string
BizId
,
string
Domain
,
string
AccessKeyId
,
string
AccessKeySecret
,
string
RegionId
)
{
// JObject aliSms = Config.AliSms;
String
product
=
"Dysmsapi"
;
//短信API产品名称(短信产品名固定,无需修改)
String
domain
=
Domain
;
// "dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改)
String
accessKeyId
=
AccessKeyId
;
// aliSms["accessKeyId"].ToString();
String
accessKeySecret
=
AccessKeySecret
;
//aliSms["accessKeySecret"].ToString();
IClientProfile
profile
=
DefaultProfile
.
GetProfile
(
RegionId
,
accessKeyId
,
accessKeySecret
);
DefaultProfile
.
AddEndpoint
(
RegionId
,
RegionId
,
product
,
domain
);
IAcsClient
acsClient
=
new
DefaultAcsClient
(
profile
);
//拼接参数 返回url
string
url
=
$@"https://
{
domain
}
/?AccessKeyId=
{
accessKeyId
}
&Action=QuerySendDetails&CurrentPage=1&Format=JSON&PageSize=12&PhoneNumber=
{
phoneNumber
}
&RegionId=cn-hangzhou&SecureTransport=true&SendDate=
{
SendDate
}
&BizId=
{
BizId
}
&SignatureMethod=HMAC-SHA1&SignatureNonce=46edc0b6cc74e437aa0ba1703c71a99b&SignatureVersion=1.0&SourceIp=171.88.98.6&Timestamp=2019-09-25T02%3A12%3A35Z&Version=2017-05-25&Signature=Uvqz3E13092wPxNYUt3ytDojV50%3D"
;
return
url
;
}
/// <summary>
/// 获取短信发送状态
/// </summary>
/// <param name="phoneNumber"></param>
/// <param name="SendDate"></param>
/// <param name="BizId"></param>
/// <returns></returns>
public
static
QuerySendDetailsResponse
QuerySendDetails
(
string
phoneNumber
,
string
SendDate
,
string
BizId
,
string
Domain
,
string
AccessKeyId
,
string
AccessKeySecret
,
string
RegionId
)
{
String
product
=
"Dysmsapi"
;
//短信API产品名称(短信产品名固定,无需修改)
// 初始化acsClient,暂不支持region化
IClientProfile
profile
=
DefaultProfile
.
GetProfile
(
RegionId
,
AccessKeyId
,
AccessKeySecret
);
DefaultProfile
.
AddEndpoint
(
RegionId
,
RegionId
,
product
,
Domain
);
IAcsClient
acsClient
=
new
DefaultAcsClient
(
profile
);
// 组装请求对象
QuerySendDetailsRequest
request
=
new
QuerySendDetailsRequest
{
PhoneNumber
=
phoneNumber
,
BizId
=
BizId
,
SendDate
=
SendDate
,
PageSize
=
10
,
CurrentPage
=
1
};
QuerySendDetailsResponse
querySendDetailsResponse
=
null
;
try
{
// 请求失败这里会抛ClientException异常
querySendDetailsResponse
=
acsClient
.
GetAcsResponse
(
request
);
}
catch
(
ServerException
e
)
{
querySendDetailsResponse
=
new
QuerySendDetailsResponse
();
// LogHelper.LogException<ServerException>(e.ErrorMessage);
}
catch
(
ClientException
e
)
{
querySendDetailsResponse
=
new
QuerySendDetailsResponse
();
// LogHelper.LogException<ClientException>(e.ErrorMessage);
}
return
querySendDetailsResponse
;
}
/// <summary>
/// 获取短信状态
/// </summary>
/// <param name="phoneNumber"></param>
/// <param name="SendDate"></param>
/// <param name="BizId"></param>
/// <returns></returns>
public
static
string
SendSMSStatus2
(
string
phoneNumber
,
string
SendDate
,
string
BizId
,
string
Domain
,
string
AccessKeyId
,
string
AccessKeySecret
,
string
RegionId
)
{
//JObject aliSms = Config.AliSms;
String
product
=
"Dysmsapi"
;
//短信API产品名称(短信产品名固定,无需修改)
String
domain
=
Domain
;
//"dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改)
String
accessKeyId
=
AccessKeyId
;
//aliSms["accessKeyId"].ToString();
String
accessKeySecret
=
AccessKeySecret
;
//aliSms["accessKeySecret"].ToString();
IClientProfile
profile
=
DefaultProfile
.
GetProfile
(
RegionId
,
accessKeyId
,
accessKeySecret
);
DefaultProfile
.
AddEndpoint
(
RegionId
,
RegionId
,
product
,
domain
);
IAcsClient
acsClient
=
new
DefaultAcsClient
(
profile
);
QuerySendDetailsRequest
request
=
new
QuerySendDetailsRequest
();
request
.
CurrentPage
=
1
;
request
.
PageSize
=
12
;
request
.
PhoneNumber
=
phoneNumber
;
request
.
SendDate
=
SendDate
;
request
.
BizId
=
BizId
;
//请求失败这里会抛ClientException异常
var
robj
=
acsClient
.
DoAction
(
request
);
if
(
robj
.
Status
==
200
)
{
System
.
IO
.
Stream
stream
=
new
System
.
IO
.
MemoryStream
(
robj
.
Content
);
var
reader
=
new
System
.
IO
.
StreamReader
(
stream
,
System
.
Text
.
Encoding
.
UTF8
);
string
rrrr
=
reader
.
ReadToEnd
();
return
rrrr
;
}
return
""
;
}
}
}
Edu.ThirdCore/Message/QueueHelper.cs
0 → 100644
View file @
0ed24383
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Threading
;
namespace
Edu.ThirdCore.Message
{
/// <summary>
/// 消息队列
/// </summary>
public
class
QueueHelper
{
/// <summary>
/// 任务队列
/// </summary>
public
static
Queue
<
string
>
Queue
=
new
Queue
<
string
>();
/// <summary>
/// 线程锁
/// </summary>
private
static
object
locker
=
new
object
();
/// <summary>
/// 添加消息到队列
/// </summary>
/// <param name="task"></param>
public
static
void
EnqueueTask
(
string
task
)
{
lock
(
locker
)
{
//同样的任务,不同时加入
IList
<
string
>
tasks
=
Queue
.
ToList
();
if
(
tasks
.
Count
(
p
=>
p
==
task
)
==
0
)
{
Queue
.
Enqueue
(
task
);
Monitor
.
PulseAll
(
locker
);
}
}
}
}
}
Edu.ThirdCore/Message/SMSService.cs
0 → 100644
View file @
0ed24383
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
Newtonsoft.Json
;
using
Newtonsoft.Json.Linq
;
namespace
Edu.ThirdCore.Message
{
/// <summary>
/// 短信消息
/// </summary>
public
class
SMSService
{
/// <summary>
/// 发送证码
/// </summary>
/// <param name="phoneNumber">电话号码</param>
/// <param name="code">验证码</param>
public
static
void
SendCode
(
string
phoneNumber
,
string
code
,
string
templateCode
,
string
SignName
,
string
Domain
,
string
AccessKeyId
,
string
AccessKeySecret
,
string
RegionId
,
string
OutId
)
{
JObject
obj
=
new
JObject
();
obj
[
"cmd"
]
=
"sms"
;
obj
[
"phoneNumber"
]
=
phoneNumber
;
obj
[
"templateCode"
]
=
templateCode
;
obj
[
"SignName"
]
=
SignName
;
obj
[
"Domain"
]
=
Domain
;
obj
[
"AccessKeyId"
]
=
AccessKeyId
;
obj
[
"AccessKeySecret"
]
=
AccessKeySecret
;
obj
[
"RegionId"
]
=
RegionId
;
var
TemplateParam
=
new
{
code
=
code
};
obj
[
"OutId"
]
=
OutId
;
obj
[
"templateParam"
]
=
JsonConvert
.
SerializeObject
(
TemplateParam
);
QueueHelper
.
EnqueueTask
(
JsonConvert
.
SerializeObject
(
obj
));
}
/// <summary>
/// 发送短信通知
/// </summary>
/// <param name="phoneNumber"></param>
/// <param name="content"></param>
/// <param name="templateCode"></param>
public
static
void
SendMsg
(
string
phoneNumber
,
string
content
,
string
templateCode
,
string
SignName
,
string
Domain
,
string
AccessKeyId
,
string
AccessKeySecret
,
string
RegionId
,
string
OutId
)
{
JObject
obj
=
new
JObject
();
obj
[
"cmd"
]
=
"sms"
;
obj
[
"phoneNumber"
]
=
phoneNumber
;
obj
[
"templateCode"
]
=
templateCode
;
obj
[
"SignName"
]
=
SignName
;
obj
[
"Domain"
]
=
Domain
;
obj
[
"AccessKeyId"
]
=
AccessKeyId
;
obj
[
"RegionId"
]
=
RegionId
;
obj
[
"AccessKeySecret"
]
=
AccessKeySecret
;
var
TemplateParam
=
new
{
content
};
obj
[
"OutId"
]
=
OutId
;
obj
[
"templateParam"
]
=
JsonConvert
.
SerializeObject
(
TemplateParam
);
//LogHelper.WriteInfo("发送短信信息");
QueueHelper
.
EnqueueTask
(
JsonConvert
.
SerializeObject
(
obj
));
}
/// <summary>
/// 发送短信通知
/// </summary>
/// <param name="phoneNumber"></param>
/// <param name="templateParam">通知参数</param>
/// <param name="templateCode"></param>
public
static
void
SendMsg
(
string
phoneNumber
,
object
templateParam
,
string
templateCode
,
string
SignName
,
string
Domain
,
string
AccessKeyId
,
string
AccessKeySecret
,
string
RegionId
,
string
OutId
)
{
JObject
obj
=
new
JObject
();
obj
[
"cmd"
]
=
"sms"
;
obj
[
"phoneNumber"
]
=
phoneNumber
;
obj
[
"templateCode"
]
=
templateCode
;
var
TemplateParam
=
templateParam
;
obj
[
"SignName"
]
=
SignName
;
obj
[
"Domain"
]
=
Domain
;
obj
[
"RegionId"
]
=
RegionId
;
obj
[
"AccessKeyId"
]
=
AccessKeyId
;
obj
[
"AccessKeySecret"
]
=
AccessKeySecret
;
obj
[
"OutId"
]
=
OutId
;
obj
[
"templateParam"
]
=
JsonConvert
.
SerializeObject
(
TemplateParam
);
QueueHelper
.
EnqueueTask
(
JsonConvert
.
SerializeObject
(
obj
));
}
}
}
Edu.ThirdCore/lib/aliyun-net-sdk-core.dll
0 → 100644
View file @
0ed24383
File added
Edu.ThirdCore/lib/aliyun-net-sdk-dysmsapi.dll
0 → 100644
View file @
0ed24383
File added
Edu.WebApi/Controllers/Public/MsgController.cs
View file @
0ed24383
...
...
@@ -28,7 +28,7 @@ namespace Edu.WebApi.Controllers.Public
/// </summary>
private
readonly
MsgLogModule
msgLogModule
=
new
MsgLogModule
();
#
region
短信记录信息
/// <summary>
/// 获取短信记录分页列表
/// </summary>
...
...
@@ -47,6 +47,18 @@ namespace Edu.WebApi.Controllers.Public
}
/// <summary>
/// 获取触发事件枚举
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
GetMsgSendStatusEnumList
()
{
var
list
=
EnumHelper
.
EnumToList
(
typeof
(
Common
.
Enum
.
System
.
MsgSendStatusEnum
));
return
ApiResult
.
Success
(
""
,
list
);
}
#
endregion
#
region
短信配置
...
...
@@ -71,6 +83,7 @@ namespace Edu.WebApi.Controllers.Public
}
pageModel
.
Count
=
rowsCount
;
pageModel
.
PageData
=
list
;
return
ApiResult
.
Success
(
data
:
pageModel
);
}
...
...
@@ -106,13 +119,14 @@ namespace Edu.WebApi.Controllers.Public
var
model
=
new
RB_Msg_Base
();
model
.
CreateDate
=
DateTime
.
Now
;
model
.
CreateBy
=
UserInfo
.
Id
;
model
.
Group_Id
=
this
.
UserInfo
.
Group_Id
;
model
.
Group_Id
=
base
.
UserInfo
.
Group_Id
;
model
.
ID
=
extModel
.
ID
;
model
.
StoreType
=
extModel
.
StoreType
;
if
(
extModel
.
MsgBase
!=
null
)
{
model
.
MsgConfigure
=
Common
.
Plugin
.
JsonHelper
.
Serialize
(
extModel
.
MsgBase
);
}
bool
flag
=
msgLogModule
.
SetMsgBaseModule
(
extM
odel
);
bool
flag
=
msgLogModule
.
SetMsgBaseModule
(
m
odel
);
return
flag
?
ApiResult
.
Success
()
:
ApiResult
.
Failed
();
}
...
...
@@ -145,5 +159,153 @@ namespace Edu.WebApi.Controllers.Public
}
#
endregion
#
region
短信模板配置
/// <summary>
/// 获取触发事件枚举
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
GetBaseTemplateTypeEnumList
()
{
var
list
=
EnumHelper
.
EnumToList
(
typeof
(
Common
.
Enum
.
System
.
BaseTemplateTypeEnum
));
return
ApiResult
.
Success
(
""
,
list
);
}
/// <summary>
/// 获取短信模板配置页列表
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
GetMsgBaseTemplatePageList
()
{
var
pageModel
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
ResultPageModel
>(
RequestParm
.
Msg
.
ToString
());
var
query
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
RB_Msg_BaseTemplate_ViewModel
>(
RequestParm
.
Msg
.
ToString
());
query
.
Group_Id
=
base
.
UserInfo
.
Group_Id
;
var
list
=
msgLogModule
.
GetMsgBaseTemplatePageListModule
(
pageModel
.
PageIndex
,
pageModel
.
PageSize
,
out
long
rowsCount
,
query
);
foreach
(
var
item
in
list
)
{
item
.
BaseTemplateTypeStr
=
EnumHelper
.
ToName
(
item
.
BaseTemplateType
);
}
pageModel
.
Count
=
rowsCount
;
pageModel
.
PageData
=
list
;
return
ApiResult
.
Success
(
data
:
pageModel
);
}
/// <summary>
/// 获取短信模板配置列表
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
GetMsgBaseTemplateList
()
{
var
query
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
RB_Msg_BaseTemplate_ViewModel
>(
RequestParm
.
Msg
.
ToString
());
query
.
Group_Id
=
base
.
UserInfo
.
Group_Id
;
var
list
=
msgLogModule
.
GetMsgBaseTemplateModule
(
query
);
return
ApiResult
.
Success
(
data
:
list
);
}
/// <summary>
/// 添加修改短信模板配置
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
SetMsgBaseTemplate
()
{
var
extModel
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
RB_Msg_BaseTemplate_ViewModel
>(
RequestParm
.
Msg
.
ToString
());
extModel
.
CreateDate
=
DateTime
.
Now
;
extModel
.
CreateBy
=
UserInfo
.
Id
;
extModel
.
Group_Id
=
base
.
UserInfo
.
Group_Id
;
bool
flag
=
msgLogModule
.
SetMsgBaseTemplateModule
(
extModel
);
return
flag
?
ApiResult
.
Success
()
:
ApiResult
.
Failed
();
}
/// <summary>
/// 获取短信模板配置实体
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
GetMsgBaseTemplate
()
{
var
ID
=
base
.
ParmJObj
.
GetInt
(
"ID"
,
0
);
var
extModel
=
msgLogModule
.
GetMsgBaseTemplateModule
(
ID
);
return
ApiResult
.
Success
(
data
:
extModel
);
}
/// <summary>
/// 删除短信模板配置
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
RemoveMsgBaseTemplate
()
{
var
ClassId
=
base
.
ParmJObj
.
GetInt
(
"ID"
,
0
);
var
flag
=
msgLogModule
.
RemoveMsgBaseTemplateModule
(
ClassId
);
return
flag
?
ApiResult
.
Success
()
:
ApiResult
.
Failed
();
}
#
endregion
#
region
发短信测试
[
HttpPost
]
public
ApiResult
TestSendMsg
()
{
object
PhoneMessage
=
new
{
OrderNo
=
"1111111111111"
,
Name
=
"李三"
,
Mobile
=
"13551132418"
,
TripDate
=
"2020-11-30"
,
//item.TripSTime.Value.ToString("yyyy-MM-dd HH:mm") + " " + ((item.UseDay ?? 0) == Convert.ToDecimal(0.5) ? "半" : Convert.ToInt32(item.UseDay ?? 0).ToString()) + "日",
Address
=
"阳光新业2号楼"
,
Number
=
"李四"
};
//新增短信记录信息
var
msgLogModel
=
new
RB_Msg_Log
{
Group_Id
=
100000
,
School_Id
=
1
,
Student_Id
=
2
,
CreateDate
=
DateTime
.
Now
,
SendStatus
=
Common
.
Enum
.
System
.
MsgSendStatusEnum
.
InReceipt
,
CreateBy
=
0
,
CreateByName
=
"系统自动发送"
,
SendContent
=
"测试内容"
,
ReceiverName
=
"张学生"
,
ReceiverPhone
=
"13551132417"
};
msgLogModule
.
SendMsg
(
PhoneMessage
,
Common
.
Enum
.
System
.
BaseTemplateTypeEnum
.
OrderSuccess
,
msgLogModel
);
// ThirdCore.Message.SMSService.SendMsg("13551132417", PhoneMessage, "SMS_201722097", "印象之旅", "dysmsapi.aliyuncs.com", "LTAIwE7l9dImZSa3", "j47Ajn0d0WzUCIX8Biyj3P2r8QDltI", "cn-hangzhou");
return
ApiResult
.
Success
(
""
);
}
[
HttpPost
]
public
ApiResult
TestUpdateSendMsg
()
{
msgLogModule
.
UpdateMsgSendStatus
();
return
ApiResult
.
Success
(
""
);
}
#
endregion
}
}
Edu.WebApi/Controllers/Public/PublicController.cs
View file @
0ed24383
...
...
@@ -369,8 +369,17 @@ namespace Edu.WebApi.Controllers.Public
[
HttpPost
]
public
ApiResult
GetStoreTypeEnumList
()
{
int
type
=
base
.
ParmJObj
.
GetInt
(
"ID"
,
0
);
var
list
=
EnumHelper
.
EnumToList
(
typeof
(
Common
.
Enum
.
Public
.
StoreTypeEnum
));
return
ApiResult
.
Success
(
""
,
list
);
if
(
type
==
1
)
{
return
ApiResult
.
Success
(
""
,
list
.
Where
(
x
=>
x
.
Id
!=
3
));
}
else
{
return
ApiResult
.
Success
(
""
,
list
);
}
}
/// <summary>
...
...
Edu.WebApi/Startup.cs
View file @
0ed24383
using
System.Collections.Generic
;
using
System.Text.Encodings.Web
;
using
System.Text.Unicode
;
using
System.Threading.Tasks
;
using
Edu.ThirdCore.Message
;
using
Microsoft.AspNetCore.Builder
;
using
Microsoft.AspNetCore.Hosting
;
using
Microsoft.AspNetCore.Http
;
...
...
@@ -50,7 +52,7 @@ namespace Edu.WebApi
};
services
.
AddCors
(
options
=>
options
.
AddPolicy
(
"AllowCors"
,
policy
=>
policy
.
AllowAnyHeader
().
AllowAnyMethod
().
AllowCredentials
().
WithOrigins
(
corsArray
.
ToArray
())));
}
// 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
)
...
...
@@ -67,7 +69,9 @@ namespace Edu.WebApi
app
.
UseCors
(
"AllowCors"
);
app
.
UseAuthorization
();
//启动信息发送
// Task.Run(() => MessageCore.Init());
Task
.
Run
(()
=>
MessageCore
.
Init
());
app
.
UseEndpoints
(
endpoints
=>
{
endpoints
.
MapControllers
();
...
...
Edu.WebApi/appsettings.json
View file @
0ed24383
{
"ConnectionStrings"
:
{
"DefaultConnection"
:
"server=192.168.1.214;user id=reborn;password=Reborn@2018;database=reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; "
,
"DefaultConnectionPName"
:
"MySql.Data.MySqlClient"
},
"Logging"
:
{
"LogLevel"
:
{
"Default"
:
"Information"
,
"Microsoft"
:
"Warning"
,
"Microsoft.Hosting.Lifetime"
:
"Information"
}
},
"JwtSecretKey"
:
"@VIITTOREBORN*2018"
,
"JwtExpirTime"
:
2592000
,
"AllowedHosts"
:
"*"
,
"OpenValidation"
:
"False"
,
"UploadSiteUrl"
:
"http://192.168.1.214:8120"
,
"ViewFileSiteUrl"
:
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com"
,
"Mongo"
:
"mongodb://47.96.25.130:27017"
,
"MongoDBName"
:
"Edu"
,
"RabbitMqConfig"
:
{
"HostName"
:
"47.96.25.130"
,
"VirtualHost"
:
"/"
,
"Port"
:
5672
,
"UserName"
:
"guest"
,
"Password"
:
"viitto2019"
},
"RedisSetting"
:
{
"RedisServer"
:
"47.96.23.199"
,
"RedisPort"
:
"6379"
,
"RedisPwd"
:
"Viitto2018"
},
"VirtualDirectory"
:
"WebFile"
,
//Ƿϻ
"IsOnline"
:
false
"ConnectionStrings"
:
{
"DefaultConnection"
:
"server=192.168.1.214;user id=reborn;password=Reborn@2018;database=reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; "
,
"DefaultConnectionPName"
:
"MySql.Data.MySqlClient"
},
"Logging"
:
{
"LogLevel"
:
{
"Default"
:
"Information"
,
"Microsoft"
:
"Warning"
,
"Microsoft.Hosting.Lifetime"
:
"Information"
}
},
"JwtSecretKey"
:
"@VIITTOREBORN*2018"
,
"JwtExpirTime"
:
2592000
,
"IsSendMsg"
:
1
,
"AllowedHosts"
:
"*"
,
"OpenValidation"
:
"False"
,
"UploadSiteUrl"
:
"http://192.168.1.214:8120"
,
"ViewFileSiteUrl"
:
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com"
,
"Mongo"
:
"mongodb://47.96.25.130:27017"
,
"MongoDBName"
:
"Edu"
,
"RabbitMqConfig"
:
{
"HostName"
:
"47.96.25.130"
,
"VirtualHost"
:
"/"
,
"Port"
:
5672
,
"UserName"
:
"guest"
,
"Password"
:
"viitto2019"
},
"RedisSetting"
:
{
"RedisServer"
:
"47.96.23.199"
,
"RedisPort"
:
"6379"
,
"RedisPwd"
:
"Viitto2018"
},
"VirtualDirectory"
:
"WebFile"
,
//Ƿϻ
"IsOnline"
:
false
}
\ No newline at end of file
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