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
{
public class MsgLogModule
{
///
/// 短信记录仓储层对象
///
private readonly RB_Msg_LogRepository msgLogRepository = new RB_Msg_LogRepository();
///
/// 短信配置仓储层对象
///
private readonly RB_Msg_BaseRepository msgBaseRepository = new RB_Msg_BaseRepository();
///
/// 短信模板配置仓储层对象
///
private readonly RB_Msg_BaseTemplateRepository msgBaseTemplateRepository = new RB_Msg_BaseTemplateRepository();
///
/// 系统消息记录仓储层对象
///
private readonly RB_System_LogRepository systemLogRepository = new RB_System_LogRepository();
#region 短信记录
///
/// 获取发送短信记录信息
///
/// 查询条件
///
public List GetPageListRepository(int pageIndex, int pageSize, out long rowsCount, Model.ViewModel.System.RB_Msg_Log_ViewModel query)
{
return msgLogRepository.GetPageListRepository(pageIndex, pageSize, out rowsCount, query);
}
#endregion
#region 短信配置
///
/// 获取短信配置列表
///
///
///
public List GetMsgBaseListModule(RB_Msg_Base_Function_ViewModel query)
{
return msgBaseRepository.GetListRepository(query);
}
///
/// 获取短信配置列表
///
///
///
///
///
///
public List GetMsgBasePageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Msg_Base_Function_ViewModel query)
{
return msgBaseRepository.GetPageListRepository(pageIndex, pageSize, out rowsCount, query);
}
///
/// 新增修改 短信配置
///
///
///
public bool SetMsgBaseModule(RB_Msg_Base model)
{
if (model.ID > 0)
{
Dictionary fileds = new Dictionary()
{
{ nameof(RB_Msg_Base.CreateDate),model.CreateDate},
{ nameof(RB_Msg_Base.CreateBy),model.CreateBy},
{ 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));
}
else
{
var newId = msgBaseRepository.Insert(model);
return newId > 0;
}
}
///
/// 根据短信配置编号获取短信配置详细信息
///
///
///
public RB_Msg_Base_Function_ViewModel GetMsgBaseModule(object ClassId)
{
return msgBaseRepository.GetEntity(ClassId);
}
///
/// 删除短信配置
///
///
///
public bool RemoveMsgBaseModule(object ID)
{
Dictionary fileds = new Dictionary()
{
{ nameof(RB_Msg_Base.Status),(int)DateStateEnum.Delete},
};
return msgBaseRepository.Update(fileds, new WhereHelper(nameof(RB_Msg_Base.ID), ID));
}
#endregion
#region 短信模板配置
///
/// 获取短信模板配置列表
///
///
///
public List GetMsgBaseTemplateListModule(RB_Msg_BaseTemplate_ViewModel query)
{
return msgBaseTemplateRepository.GetListRepository(query);
}
///
/// 获取短信模板配置分页列表
///
///
///
///
///
///
public List GetMsgBaseTemplatePageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Msg_BaseTemplate_ViewModel query)
{
return msgBaseTemplateRepository.GetPageListRepository(pageIndex, pageSize, out rowsCount, query);
}
///
/// 新增修改 短信模板配置
///
///
///
public bool SetMsgBaseTemplateModule(RB_Msg_BaseTemplate_ViewModel model)
{
if (model.ID > 0)
{
Dictionary fileds = new Dictionary()
{
{ 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;
}
}
///
/// 根据短信模板配置编号获取短信配置详细信息
///
///
///
public RB_Msg_BaseTemplate_ViewModel GetMsgBaseTemplateModule(object ClassId)
{
return msgBaseTemplateRepository.GetEntity(ClassId);
}
///
/// 删除短信模板配置
///
///
///
public bool RemoveMsgBaseTemplateModule(object ID)
{
Dictionary fileds = new Dictionary()
{
{ 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(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");
}
///
/// 更新消息发送状态
///
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(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 fileds = new Dictionary()
{
{ nameof(RB_Msg_Log.SendStatus),sendStatus}
};
msgLogRepository.Update(fileds, new WhereHelper(nameof(RB_Msg_Log.ID), Convert.ToInt32(modelSmsSendDetailDTO.OutId)));
}
}
}
}
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "UpdateMsgSendStatus");
}
}
}
}
public bool SendCode(string code, Common.Enum.System.BaseTemplateTypeEnum BaseTemplateType, RB_Msg_Log msgLogModel)
{
bool flag = false;
//查询当前集团的短信基础配置
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(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.SendCode(msgLogModel.ReceiverPhone, code, msgBaseTemplateModel.TemplateId, msgBaseTemplateModel.Sign, model.MsgBase.Domain, model.MsgBase.AccessKeyId, model.MsgBase.AccessSecret, model.MsgBase.RegionId, id.ToString());
flag = true;
}
}
}
}
}
}
return flag;
}
#endregion
#region 系统消息
///
/// 获取发送系统消息记录信息
///
/// 查询条件
///
public List GetSystemLogListRepository(RB_System_Log_ViewModel query)
{
return systemLogRepository.GetListRepository(query);
}
///
/// 获取发送系统消息记录信息
///
/// 查询条件
///
public List GetSystemLogPageListRepository(int pageIndex, int pageSize, out long rowsCount, RB_System_Log_ViewModel query)
{
return systemLogRepository.GetPageListRepository(pageIndex, pageSize, out rowsCount, query);
}
#endregion
}
}