初始化
This commit is contained in:
160
BooliveMQTT_Auth/Controllers/ValuesController.cs
Normal file
160
BooliveMQTT_Auth/Controllers/ValuesController.cs
Normal file
@@ -0,0 +1,160 @@
|
||||
using System.Data;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using System.Security.Claims;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using IotManager.Common;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using NLog;
|
||||
using NPOI.HSSF.UserModel;
|
||||
using NPOI.SS.UserModel;
|
||||
using NPOI.XSSF.UserModel;
|
||||
using IotManager.private_key;
|
||||
using ViewModels;
|
||||
using ViewModels.Data;
|
||||
using CommonEntity;
|
||||
using MySQLAccess.PGModels;
|
||||
|
||||
namespace IotManager.Controllers
|
||||
{
|
||||
[Route("api/[controller]/[action]")]
|
||||
[ApiController]
|
||||
public class ValuesController : ControllerBase
|
||||
{
|
||||
|
||||
private readonly Logger _logger = LogManager.GetCurrentClassLogger();
|
||||
public IConfiguration? configuration { get; set; }
|
||||
public ValuesController(IConfiguration _configuration)
|
||||
{
|
||||
configuration = _configuration;
|
||||
}
|
||||
public string GetId(string device_name,string uuid)
|
||||
{
|
||||
string data = string.Format("boolive_{0}_{1}", device_name, uuid);
|
||||
// 密钥,用于生成MAC
|
||||
string key = "secretKey#&!";
|
||||
// 计算MAC
|
||||
byte[] mac = Base64.ComputeHMACSHA256Short(data, key);
|
||||
string str = Convert.ToBase64String(mac);
|
||||
return str;
|
||||
}
|
||||
|
||||
[HttpGet()]
|
||||
public ReturnInfo GetAllInfo([FromBody] QueryData data)
|
||||
{
|
||||
|
||||
ReturnInfo r = new ReturnInfo();
|
||||
try
|
||||
{
|
||||
using var context = new PostgresContext();
|
||||
var q = from dev in context.Deviceinfos
|
||||
join emqx in context.EmqxLogininfos
|
||||
on dev.Uuid equals emqx.DeviceUuid
|
||||
into devinfo
|
||||
from info in devinfo.DefaultIfEmpty()
|
||||
select new { dev.ClientId, dev.ProductId, dev.DeviceName, dev.SecretKey, info.UserName, info.PassWord };
|
||||
|
||||
var p = q.ToList();
|
||||
r.isok = true;
|
||||
r.response = p;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
r.isok = false;
|
||||
r.message = ex.Message;
|
||||
}
|
||||
return r;
|
||||
|
||||
}
|
||||
|
||||
[HttpPost()]
|
||||
public ReturnInfo AddOrUpdateDeviceInfo([FromBody] BooliveDevice LLL)
|
||||
{
|
||||
ReturnInfo returnInfo = new ReturnInfo();
|
||||
|
||||
try
|
||||
{
|
||||
using var D = new PostgresContext();
|
||||
if (LLL.Id != 0)
|
||||
{
|
||||
var Q = D.Deviceinfos.SingleOrDefault(A => A.ClientId == LLL.Id);
|
||||
Q.DeviceName = LLL.DeviceName;
|
||||
Q.SecretKey = LLL.DeviceSecret;
|
||||
var DT = DateTime.Now;
|
||||
Q.UpdateTime = DT;
|
||||
Q.UpdateTimeUnix = Tools.ToUnixTimestampBySeconds(DT);
|
||||
}
|
||||
else
|
||||
{
|
||||
D.Database.BeginTransaction();
|
||||
var DT = DateTime.Now;
|
||||
var LT = Tools.ToUnixTimestampBySeconds(DT);
|
||||
var LLL1 = new Deviceinfo();
|
||||
|
||||
var uuid = System.Guid.NewGuid().ToString("N");
|
||||
LLL1.Uuid = uuid;
|
||||
LLL1.CreateTime = DT;
|
||||
LLL1.UpdateTime = DT;
|
||||
|
||||
LLL1.CreateTimeUnix = LT;
|
||||
LLL1.UpdateTimeUnix = LT;
|
||||
|
||||
D.Deviceinfos.Add(LLL1);
|
||||
|
||||
EmqxLogininfo l = new EmqxLogininfo();
|
||||
l.DeviceUuid = uuid;
|
||||
l.UserName = LLL.DeviceName;
|
||||
l.PassWord = GetId(l.UserName,uuid);
|
||||
l.UpdateTime = DT;
|
||||
l.UpdateTimeUnix = LT;
|
||||
l.CreateTime = DT;
|
||||
l.CreateTimeUnix = LT;
|
||||
|
||||
D.EmqxLogininfos.Add(l);
|
||||
|
||||
|
||||
D.SaveChanges();
|
||||
D.Database.CommitTransaction();
|
||||
}
|
||||
returnInfo.isok = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
returnInfo.isok = false;
|
||||
returnInfo.message = ex.Message;
|
||||
}
|
||||
return returnInfo;
|
||||
}
|
||||
|
||||
|
||||
[HttpDelete()]
|
||||
public ReturnInfo DeleteDeviceInfo([FromBody] BooliveDevice LLL)
|
||||
{
|
||||
ReturnInfo r = new ReturnInfo();
|
||||
try
|
||||
{
|
||||
using var Q = new PostgresContext();
|
||||
|
||||
Q.Database.BeginTransaction();
|
||||
var a = Q.Deviceinfos.SingleOrDefault(A => A.ClientId == LLL.Id);
|
||||
Q.Deviceinfos.Remove(a);
|
||||
|
||||
var b = Q.EmqxLogininfos.SingleOrDefault(A => A.DeviceUuid.Equals(a.Uuid));
|
||||
Q.EmqxLogininfos.Remove(b);
|
||||
|
||||
Q.SaveChanges();
|
||||
|
||||
Q.Database.CommitTransaction();
|
||||
r.isok = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
r.isok = false;
|
||||
r.message = ex.Message;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user