Waste/Waste.Application/Test/TestAppService.cs

161 lines
5.7 KiB
C#
Raw Normal View History

2021-08-02 17:48:22 +08:00
using Furion;
using Furion.DynamicApiController;
using MessagePack;
using Microsoft.AspNetCore.Mvc;
using Nirvana.Common;
using System;
using System.Collections.Generic;
using System.Linq;
2021-08-02 17:48:22 +08:00
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
2022-05-20 16:33:17 +08:00
using Waste.Application.SubscribeInfo;
namespace Waste.Application
{
/// <summary>
/// 测试专用
/// </summary>
public class TestAppService : IDynamicApiController
{
2021-08-02 17:48:22 +08:00
private static string ApiUrl = App.Configuration["SZDevPlatSetting:ApiUrl"];
private static string UserId = App.Configuration["SZDevPlatSetting:UserId"];
private static string ApiSecret = App.Configuration["SZDevPlatSetting:ApiSecret"];
private static string ApiSecretHash = App.Configuration["SZDevPlatSetting:ApiSecretHash"];
private readonly IHttpClientFactory _clientFactory;
private readonly ILoggerService _loggerService;
2022-05-20 16:33:17 +08:00
private readonly ISubscribeService _subscribeService;
public TestAppService(ILoggerService loggerService, IHttpClientFactory clientFactory, ISubscribeService subscribeService)
{
_loggerService = loggerService;
2021-08-02 17:48:22 +08:00
_clientFactory = clientFactory;
2022-05-20 16:33:17 +08:00
_subscribeService = subscribeService;
}
/// <summary>
/// 接收测试
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
[HttpPost]
[NonUnify]
public string Subscribe(BusinessApiS2CDto data)
{
var msg = $"平台推送的消息内容:{data.ToJson()}";
_loggerService.AddLogger(msg, 1);
return "success";
}
2021-08-07 18:33:27 +08:00
[HttpGet]
public void ConnectServer()
{
}
2022-05-20 16:33:17 +08:00
/// <summary>
///
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task TestThirdSendAsync()
{
await _subscribeService.SeedThirdMessageAsync(new SendThirdMessageSubscriDto {
Url= "https://localhost:44335/api/test/recv",
WasteType= "\u0000\u0000\u0000\u0000纸壳",
Weight="20.9",
TrashCode="0",
Time= 1653033312,
Body="",
DeviceId= Guid.Parse("39fcdce8-9e54-b87f-fc8e-616a9072c224")
});
}
[HttpPost]
public void Recv(SendMessageToThirdS2CDto input)
{
var a = input;
}
2021-08-07 18:33:27 +08:00
2021-08-02 17:48:22 +08:00
[HttpGet]
public async Task TestSendAsync()
{
GarbagePltC2SDto garbageC2SDto = new GarbagePltC2SDto {
Weight=10.1,
secret = "6Vxkfkg3kxqkkzgT",
secrethash = "51fb893bccc1395e",
ScanningTime= 1627917492,
DStatus=0,
deviceid = "08d954b6-df45-4de1-8fde-f5109798b855",
Trash = "000F000002",
Type = 4
};
if(garbageC2SDto.Weight == ((int)garbageC2SDto.Weight).ToDouble())
{
garbageC2SDto.Weight = garbageC2SDto.Weight.ToDouble(0);
}
var url = $"{ApiUrl}/api/garbages";
string[] paramlist = new string[] {
garbageC2SDto.Weight.ToString(),garbageC2SDto.Trash,garbageC2SDto.Type.ToString(),garbageC2SDto.ScanningTime.ToString(),garbageC2SDto.DStatus.ToString()
};
int timestamp = 1627917492;
int nonce = 497458578;
string sign = GetUserApiSign(garbageC2SDto.secret, paramlist);
var c2s_dto = new SuZhouPostApiBaseDto<GarbageC2SDto>
{
Data = new GarbageC2SDto
{
DStatus = garbageC2SDto.DStatus,
ScanningTime = garbageC2SDto.ScanningTime,
Trash = garbageC2SDto.Trash,
Type = garbageC2SDto.Type,
Weight = garbageC2SDto.Weight
},
SecretHash = garbageC2SDto.secrethash,
Nonce = nonce,
Signature = sign,
TimeStamp = timestamp,
DeviceId = garbageC2SDto.deviceid
};
var request = new HttpRequestMessage(HttpMethod.Post, url);
var bytes = MessagePackSerializer.Serialize(c2s_dto);
request.Content = new ByteArrayContent(bytes);
request.Headers.Add("Accept", "application/x-msgpack");
request.Content.Headers.Add("Content-Type", "application/x-msgpack");
var client = _clientFactory.CreateClient();
var response = await client.SendAsync(request);
if (response.IsSuccessStatusCode)
{
//记录日志
_loggerService.AddLogger($"测量信息上报成功:参数:{c2s_dto.ToJson()}", 3);
}
else
{
var msg = await response.Content.ReadAsStringAsync();
//记录日志
_loggerService.AddLogger($"测量信息上报失败:参数:{c2s_dto.ToJson()}\r\n返回值:{msg}", 3);
}
}
private string GetUserApiSign(string secret, params string[] dataparams)
{
StringBuilder sb = new StringBuilder();
if (dataparams != null && dataparams.Length > 0)
{
foreach (var item in dataparams)
{
sb.Append(item);
}
}
if (!string.IsNullOrEmpty(secret))
{
sb.Append(secret);
}
else
{
sb.Append(ApiSecret);
}
string str = sb.ToString();
string sign = Md5.md5(str, 16).ToLower();
return sign;
}
}
}