消息推送

This commit is contained in:
Hinse 2022-05-19 15:01:08 +08:00
parent cec7b64efe
commit 9f32101ead
8 changed files with 200 additions and 33 deletions

View File

@ -265,7 +265,11 @@ namespace Nirvana.Common
int month = now.Month - birthdate.Month; int month = now.Month - birthdate.Month;
return month <= 0 ? age*12 : age*12+month; return month <= 0 ? age*12 : age*12+month;
} }
/// <summary>
/// 获取时间戳
/// </summary>
/// <param name="time"></param>
/// <returns></returns>
public static int GetTimeStamp(this DateTime time) public static int GetTimeStamp(this DateTime time)
{ {
int t = Convert.ToInt32((time.ToUniversalTime().Ticks - 621355968000000000) / 10000000); int t = Convert.ToInt32((time.ToUniversalTime().Ticks - 621355968000000000) / 10000000);

View File

@ -1,9 +1,11 @@
using Mapster; using Mapster;
using Nirvana.Common;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Waste.Application.SubscribeInfo;
using Waste.Domain; using Waste.Domain;
namespace Waste.Application namespace Waste.Application
@ -18,6 +20,9 @@ namespace Waste.Application
.Map(dest=>dest.time,src=>src.CreateTime.ToString("yyyy-MM-dd")) .Map(dest=>dest.time,src=>src.CreateTime.ToString("yyyy-MM-dd"))
.Map(dest=>dest.type,src=>src.WasteType) .Map(dest=>dest.type,src=>src.WasteType)
; ;
config.ForType<SendThirdMessageSubscribeS2SDto, SendThirdMessageSubscriDto>()
.Map(dest => dest.Time, src => src.Time.GetTimeStamp())
;
} }
} }
} }

View File

@ -1,18 +1,15 @@
using Furion.DynamicApiController; using Furion.DynamicApiController;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Nirvana.Common; using Nirvana.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Waste.Application.SubscribeInfo;
namespace Waste.Application.ResultInfos namespace Waste.Application.ResultInfos
{ {
/// <summary> /// <summary>
/// 投放记录 /// 投放记录
/// </summary> /// </summary>
public class ResultAppService:IDynamicApiController public class ResultAppService : IDynamicApiController
{ {
private readonly IResultService _resultService; private readonly IResultService _resultService;
public ResultAppService(IResultService resultService) public ResultAppService(IResultService resultService)
@ -38,5 +35,21 @@ namespace Waste.Application.ResultInfos
{ {
return await _resultService.InsertResultAsync(myPackage); return await _resultService.InsertResultAsync(myPackage);
} }
/// <summary>
/// wifi模块测量结果增加
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public async Task InsertResultByWifiAsync(WifiPackage data)
{
await _resultService.InsertResultByWifiAsync(data);
}
public async Task<string> RecvResult(SendMessageToThirdS2CDto data)
{
var getdata = data;
return await Task.FromResult("success");
}
} }
} }

View File

@ -1,8 +1,10 @@
using Furion; using DotNetCore.CAP;
using Furion;
using Furion.DependencyInjection; using Furion.DependencyInjection;
using Furion.DistributedIDGenerator; using Furion.DistributedIDGenerator;
using Furion.RemoteRequest.Extensions; using Furion.RemoteRequest.Extensions;
using Furion.TaskScheduler; using Furion.TaskScheduler;
using Mapster;
using Nirvana.Common; using Nirvana.Common;
using SqlSugar; using SqlSugar;
using System; using System;
@ -10,6 +12,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Waste.Application.SubscribeInfo;
using Waste.Domain; using Waste.Domain;
namespace Waste.Application namespace Waste.Application
@ -22,16 +25,14 @@ namespace Waste.Application
private readonly ISqlSugarRepository<W_Result> repository; private readonly ISqlSugarRepository<W_Result> repository;
private readonly SqlSugarClient dbClient; private readonly SqlSugarClient dbClient;
private readonly ILoggerService _loggerService; private readonly ILoggerService _loggerService;
private readonly ISuZhouService _suZhouService; private readonly ICapPublisher _capBus;
private readonly IBusinessApiService _businessApiService;
public ResultService(ISqlSugarRepository<W_Result> sqlSugarRepository, ILoggerService loggerService, ISuZhouService suZhouService, IBusinessApiService businessApiService) public ResultService(ISqlSugarRepository<W_Result> sqlSugarRepository, ILoggerService loggerService, ICapPublisher capPublisher)
{ {
repository = sqlSugarRepository; repository = sqlSugarRepository;
dbClient = repository.Context; dbClient = repository.Context;
_loggerService = loggerService; _loggerService = loggerService;
_suZhouService = suZhouService; _capBus = capPublisher;
_businessApiService = businessApiService;
} }
/// <summary> /// <summary>
/// 获取投放记录 /// 获取投放记录
@ -169,15 +170,16 @@ namespace Waste.Application
{ {
isfrist = true; isfrist = true;
} }
decimal currentweight= data.Weight.IsEmpty() ? 0 : data.Weight.ToDecimal();
//记录数据 //记录数据
await dbClient.Ado.UseStoredProcedure().ExecuteCommandAsync("Proc_InsertResult", new await dbClient.Ado.UseStoredProcedure().ExecuteCommandAsync("Proc_InsertResult", new
{ {
deviceid = device.Id, deviceid = device.Id,
businessid = device.Businessid, businessid = device.Businessid,
resultid = resultid, resultid = resultid,
imei = devicedata !=null?devicedata.IMSI:"", imei = devicedata != null ? devicedata.IMSI : "",
iccid = devicedata != null?devicedata.ICCID:"", iccid = devicedata != null ? devicedata.ICCID : "",
imsi = devicedata != null?devicedata.IMSI:"", imsi = devicedata != null ? devicedata.IMSI : "",
time = time, time = time,
latitude = "", latitude = "",
longitude = "", longitude = "",
@ -185,12 +187,22 @@ namespace Waste.Application
city = "", city = "",
area = data.trashcode, area = data.trashcode,
wastetype = data.WasteType, wastetype = data.WasteType,
weigth = data.Weight, weigth = currentweight,
isheart = data.IsHeart, isheart = data.IsHeart,
tare = device.Tare, tare = device.Tare,
isfrist = isfrist isfrist = isfrist
}); });
if (!data.IsHeart)
{
await SendMessageToThird(new SendThirdMessageSubscribeS2SDto
{
DeviceId = device.Id,
Time = time,
TrashCode = data.trashcode,
WasteType = data.WasteType,
Weight = currentweight
});
}
} }
/// <summary> /// <summary>
@ -254,6 +266,37 @@ namespace Waste.Application
tare = device.Tare, tare = device.Tare,
isfrist = isfrist isfrist = isfrist
}); });
if (!myPackage.IsHeart)
{
await SendMessageToThird(new SendThirdMessageSubscribeS2SDto
{
DeviceId = device.Id,
Time = time,
TrashCode = myPackage.trashcode,
WasteType = myPackage.WasteType,
Weight = Weight
});
}
}
/// <summary>
/// 给第三方推送消息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
private async Task SendMessageToThird(SendThirdMessageSubscribeS2SDto input)
{
var configdata = await dbClient.Queryable<W_DeviceConfig>().Where(x => x.DeviceId == input.DeviceId).Select(x => new W_DeviceConfig
{
Body = x.Body,
Url = x.Url
}).FirstAsync();
if (configdata != null && !configdata.Url.IsEmpty())
{
var senddata = input.Adapt<SendThirdMessageSubscriDto>();
senddata.Body = configdata.Body.ToStr();
senddata.Url = configdata.Url.ToStr();
await _capBus.PublishAsync("third.service.sendmessage", senddata);
}
} }
/// <summary> /// <summary>
/// 增加测量记录 /// 增加测量记录
@ -315,6 +358,7 @@ namespace Waste.Application
// var areaHex = Convert.ToHexString(areaBytes); // var areaHex = Convert.ToHexString(areaBytes);
} }
decimal weight = myPackage.Weight.IsEmpty() ? 0 : myPackage.Weight.ToDecimal();
//记录数据 //记录数据
await dbClient.Ado.UseStoredProcedure().ExecuteCommandAsync("Proc_InsertResult", new await dbClient.Ado.UseStoredProcedure().ExecuteCommandAsync("Proc_InsertResult", new
{ {
@ -331,7 +375,7 @@ namespace Waste.Application
city = myPackage.City, city = myPackage.City,
area = myPackage.Area, area = myPackage.Area,
wastetype = myPackage.WasteType, wastetype = myPackage.WasteType,
weigth = myPackage.Weight, weigth = weight,
isheart = myPackage.IsHeart, isheart = myPackage.IsHeart,
tare = device.Tare, tare = device.Tare,
isfrist = isfrist isfrist = isfrist
@ -358,6 +402,17 @@ namespace Waste.Application
// }); // });
// } // }
//} //}
if (!myPackage.IsHeart)
{
await SendMessageToThird(new SendThirdMessageSubscribeS2SDto
{
DeviceId = device.Id,
Time = time,
TrashCode = myPackage.Area,
WasteType = myPackage.WasteType,
Weight = weight
});
}
return new ResultInfo(ResultState.SUCCESS, "success"); return new ResultInfo(ResultState.SUCCESS, "success");
} }

View File

@ -85,7 +85,45 @@ namespace Waste.Application.SubscribeInfo
/// <summary> /// <summary>
/// 发送第三方消息 /// 发送第三方消息
/// </summary> /// </summary>
public class SendThirdMessageSubscriDto public class SendThirdMessageSubscribeS2SDto
{
/// <summary>
/// 设备ID
/// </summary>
public Guid DeviceId { get; set; }
/// <summary>
/// 垃圾类别
/// </summary>
public string WasteType { get; set; }
/// <summary>
/// 重量,单位KG
/// </summary>
public decimal Weight { get; set; }
/// <summary>
/// 垃圾桶编号
/// </summary>s
public string TrashCode { get; set; }
/// <summary>
/// 上报时间
/// </summary>
public DateTime Time { get; set; }
}
/// <summary>
/// 发送第三方消息
/// </summary>
public class SendThirdMessageSubscriDto: SendMessageToThirdS2CDto
{
/// <summary>
/// 推送地址
/// </summary>
public string Url { get; set; }
}
/// <summary>
/// 推送给第三方的信息
/// </summary>
public class SendMessageToThirdS2CDto
{ {
/// <summary> /// <summary>
/// 垃圾类别 /// 垃圾类别
@ -104,12 +142,13 @@ namespace Waste.Application.SubscribeInfo
/// </summary> /// </summary>
public long Time { get; set; } public long Time { get; set; }
/// <summary> /// <summary>
/// 推送地址
/// </summary>
public string Url { get; set; }
/// <summary>
/// 额外信息 /// 额外信息
/// </summary> /// </summary>
public string Body { get; set; } public string Body { get; set; }
/// <summary>
/// 设备ID
/// </summary>
public Guid DeviceId { get; set; }
} }
} }

View File

@ -3,6 +3,7 @@ using Furion.DependencyInjection;
using Furion.DistributedIDGenerator; using Furion.DistributedIDGenerator;
using Furion.Logging.Extensions; using Furion.Logging.Extensions;
using Furion.RemoteRequest.Extensions; using Furion.RemoteRequest.Extensions;
using Mapster;
using Newtonsoft.Json; using Newtonsoft.Json;
using Nirvana.Common; using Nirvana.Common;
using SqlSugar; using SqlSugar;
@ -263,8 +264,9 @@ namespace Waste.Application.SubscribeInfo
public async Task SeedThirdMessageAsync(SendThirdMessageSubscriDto data) public async Task SeedThirdMessageAsync(SendThirdMessageSubscriDto data)
{ {
string errmsg = string.Empty; string errmsg = string.Empty;
var senddata = data.Adapt<SendMessageToThirdS2CDto>();
var response = await data.Url var response = await data.Url
.SetBody(data, "application/json", Encoding.UTF8) .SetBody(senddata, "application/json", Encoding.UTF8)
.OnException((res, errors) => .OnException((res, errors) =>
{ {
errmsg = errors; errmsg = errors;
@ -278,7 +280,7 @@ namespace Waste.Application.SubscribeInfo
{ {
_loggerService.AddLogger($"第三方设备消息发送失败,内容:{data.ToJson()},返回:{returnstr}", 1); _loggerService.AddLogger($"第三方设备消息发送失败,内容:{data.ToJson()},返回:{returnstr}", 1);
} }
if(returnstr.ToLower() != "success") if (returnstr.ToLower() != "success")
{ {
_loggerService.AddLogger($"第三方设备消息发送失败,内容:{data.ToJson()},返回:{returnstr}", 1); _loggerService.AddLogger($"第三方设备消息发送失败,内容:{data.ToJson()},返回:{returnstr}", 1);
} }

View File

@ -1901,6 +1901,13 @@
<param name="myPackage"></param> <param name="myPackage"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Waste.Application.ResultInfos.ResultAppService.InsertResultByWifiAsync(Waste.Application.WifiPackage)">
<summary>
wifi模块测量结果增加
</summary>
<param name="data"></param>
<returns></returns>
</member>
<member name="T:Waste.Application.ResultService"> <member name="T:Waste.Application.ResultService">
<summary> <summary>
投放记录管理 投放记录管理
@ -1927,6 +1934,13 @@
<param name="myPackage"></param> <param name="myPackage"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Waste.Application.ResultService.SendMessageToThird(Waste.Application.SubscribeInfo.SendThirdMessageSubscribeS2SDto)">
<summary>
给第三方推送消息
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:Waste.Application.ResultService.InsertResultAsync(Waste.Application.MyPackage)"> <member name="M:Waste.Application.ResultService.InsertResultAsync(Waste.Application.MyPackage)">
<summary> <summary>
增加测量记录 增加测量记录
@ -2079,37 +2093,72 @@
版本号 版本号
</summary> </summary>
</member> </member>
<member name="T:Waste.Application.SubscribeInfo.SendThirdMessageSubscriDto"> <member name="T:Waste.Application.SubscribeInfo.SendThirdMessageSubscribeS2SDto">
<summary> <summary>
发送第三方消息 发送第三方消息
</summary> </summary>
</member> </member>
<member name="P:Waste.Application.SubscribeInfo.SendThirdMessageSubscriDto.WasteType"> <member name="P:Waste.Application.SubscribeInfo.SendThirdMessageSubscribeS2SDto.DeviceId">
<summary>
设备ID
</summary>
</member>
<member name="P:Waste.Application.SubscribeInfo.SendThirdMessageSubscribeS2SDto.WasteType">
<summary> <summary>
垃圾类别 垃圾类别
</summary> </summary>
</member> </member>
<member name="P:Waste.Application.SubscribeInfo.SendThirdMessageSubscriDto.Weight"> <member name="P:Waste.Application.SubscribeInfo.SendThirdMessageSubscribeS2SDto.Weight">
<summary> <summary>
重量,单位KG 重量,单位KG
</summary> </summary>
</member> </member>
<member name="P:Waste.Application.SubscribeInfo.SendThirdMessageSubscriDto.TrashCode"> <member name="P:Waste.Application.SubscribeInfo.SendThirdMessageSubscribeS2SDto.TrashCode">
<summary> <summary>
垃圾桶编号 垃圾桶编号
</summary> </summary>s
</member> </member>
<member name="P:Waste.Application.SubscribeInfo.SendThirdMessageSubscriDto.Time"> <member name="P:Waste.Application.SubscribeInfo.SendThirdMessageSubscribeS2SDto.Time">
<summary> <summary>
上报时间 上报时间
</summary> </summary>
</member> </member>
<member name="T:Waste.Application.SubscribeInfo.SendThirdMessageSubscriDto">
<summary>
发送第三方消息
</summary>
</member>
<member name="P:Waste.Application.SubscribeInfo.SendThirdMessageSubscriDto.Url"> <member name="P:Waste.Application.SubscribeInfo.SendThirdMessageSubscriDto.Url">
<summary> <summary>
推送地址 推送地址
</summary> </summary>
</member> </member>
<member name="P:Waste.Application.SubscribeInfo.SendThirdMessageSubscriDto.Body"> <member name="T:Waste.Application.SubscribeInfo.SendMessageToThirdS2CDto">
<summary>
推送给第三方的信息
</summary>
</member>
<member name="P:Waste.Application.SubscribeInfo.SendMessageToThirdS2CDto.WasteType">
<summary>
垃圾类别
</summary>
</member>
<member name="P:Waste.Application.SubscribeInfo.SendMessageToThirdS2CDto.Weight">
<summary>
重量,单位KG
</summary>
</member>
<member name="P:Waste.Application.SubscribeInfo.SendMessageToThirdS2CDto.TrashCode">
<summary>
垃圾桶编号
</summary>
</member>
<member name="P:Waste.Application.SubscribeInfo.SendMessageToThirdS2CDto.Time">
<summary>
上报时间
</summary>
</member>
<member name="P:Waste.Application.SubscribeInfo.SendMessageToThirdS2CDto.Body">
<summary> <summary>
额外信息 额外信息
</summary> </summary>

File diff suppressed because one or more lines are too long