DOVER-GLOBAL\11047086 vor 1 Jahr
Ursprung
Commit
cf889ce27c
22 geänderte Dateien mit 1359 neuen und 12 gelöschten Zeilen
  1. 2 2
      IMES-Middleware-Platform/src/hosts/IMES-Middleware-Platform.Host/Configs/appconfig.json
  2. 3 3
      IMES-Middleware-Platform/src/hosts/IMES-Middleware-Platform.Host/Configs/dbconfig.json
  3. 1 1
      IMES-Middleware-Platform/src/hosts/IMES-Middleware-Platform.Host/Program.cs
  4. 80 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Core/Handlers/HttpHelper.cs
  5. 1 1
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Core/Service/IAssociationService.cs
  6. 59 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/Authorization/Dto/FueilingSdkAuthPageDto.cs
  7. 67 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/Authorization/FueilingSdkAuth.cs
  8. 16 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/Authorization/IFueilingSdkAuthRepository.cs
  9. 45 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/Authorization/IFueilingSdkAuthService.cs
  10. 66 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/Authorization/Input/FueilingSdkAuthInput.cs
  11. 60 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/Authorization/Output/FueilingSdkAuthOutPut.cs
  12. 89 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/FuelDispenserDto.cs
  13. 163 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/SupplierDto.cs
  14. 76 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/FuelDispenserEntity.cs
  15. 13 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IFuelDispenserRepository.cs
  16. 1 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/IMES_Middleware_Platform.Api.csproj
  17. 330 1
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/IMES_Middleware_Platform.Api.xml
  18. 17 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/Authorization/FueilingSdkAuthRepository.cs
  19. 20 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/FuelDispenserRepository.cs
  20. 134 4
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Services/Association/AssociationService.cs
  21. 98 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Services/Authorization/FueilingSdkAuthService.cs
  22. 18 0
      IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Services/Module/ModuleService.cs

+ 2 - 2
IMES-Middleware-Platform/src/hosts/IMES-Middleware-Platform.Host/Configs/appconfig.json

@@ -2,7 +2,7 @@
   //应用程序类型Controllers ControllersWithViews MVC
   "appType": "Controllers",
   //Api地址
-  "urls": [ "http://*:8008" ],
+  "urls": [ "http://*:8000" ],
   //跨域地址
   "corUrls": [],
   //程序集名称
@@ -37,7 +37,7 @@
     //路由前缀,如配置微服务文档地址:doc/module/swagger
     "routePrefix": "middle/swagger",
     //地址
-    "url": "http://localhost:8008",
+    "url": "http://localhost:8000",
     //项目列表
     "projects": [
       {

+ 3 - 3
IMES-Middleware-Platform/src/hosts/IMES-Middleware-Platform.Host/Configs/dbconfig.json

@@ -21,7 +21,7 @@
   //SqlServer "Data Source=.;User Id=sa;Password=pwd;Initial Catalog=master;TrustServerCertificate=true;Pooling=true;Min Pool Size=1"
   //PostgreSQL "Host=localhost;Port=5432;Username=postgres;Password=; Database=postgres;Pooling=true;Minimum Pool Size=1"
   //Oracle "user id=SYS;password=pwd; data source=//127.0.0.1:1521/XE;Pooling=true;Min Pool Size=1"
-  "createDbConnectionString": "Server=localhost; Port=3306; Database=mysql; Uid=root; Pwd=pwd; Charset=utf8mb4;",
+  "createDbConnectionString": "Server=ipos.biz; Port=3307; Database=appdb; Uid=root; Pwd=Wayne@123; Charset=utf8mb4;",
   //建库脚本,复杂建库脚本可放到createdbsql.txt中
   //MySql "CREATE DATABASE `appdb` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci'"
   //SqlServer "CREATE DATABASE [appdb]"
@@ -29,7 +29,7 @@
   "createDbSql": "CREATE DATABASE `appdb` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci'",
 
   //同步结构
-  "syncStructure": false,
+  "syncStructure": true,
   //同步数据
   "syncData": false,
   //同步更新数据
@@ -64,7 +64,7 @@
   //PostgreSQL "Host=localhost;Port=5432;Username=postgres;Password=; Database=appdb;Pooling=true;Minimum Pool Size=1"
   //Sqlite "Data Source=|DataDirectory|\\appdb.db; Pooling=true;Min Pool Size=1"
   //"Oracle" "user id=SYS;password=pwd; data source=//127.0.0.1:1521/XE;Pooling=true;Min Pool Size=1",
-  "connectionString": "Server=localhost; Port=3306; Database=appdb; Uid=root; Pwd=pwd; Charset=utf8mb4;",
+  "connectionString": "Server=ipos.biz; Port=3307; Database=appdb; Uid=root; Pwd=Wayne@123; Charset=utf8mb4;",
 
   //指定程序集
   //FreeSql.MySql.MySqlProvider`1,FreeSql.Provider.MySqlConnector

+ 1 - 1
IMES-Middleware-Platform/src/hosts/IMES-Middleware-Platform.Host/Program.cs

@@ -18,7 +18,7 @@ new HostApp(new HostAppOptions()
     ConfigurePreServices = context =>
     {
         var dbConfig = ConfigHelper.Get<DbConfig>("dbconfig", context.Environment.EnvironmentName);
-        dbConfig.SyncStructure = false;
+        dbConfig.SyncStructure = true;
         if (dbConfig.Key.NotNull())
         {
             DbKeys.AppDb = dbConfig.Key;

+ 80 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Core/Handlers/HttpHelper.cs

@@ -0,0 +1,80 @@
+using IdentityModel;
+using StackExchange.Profiling.Internal;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Text;
+using System.Threading.Tasks;
+using UAParser;
+
+namespace IMES_Middleware_Platform.Api.Core.Handlers
+{
+    public class HttpHelper
+    {
+
+        private readonly HttpClient _httpClient;
+
+        public HttpHelper()
+        {
+            _httpClient = new HttpClient();
+        }
+
+        public async Task<string> GetAsync(string url)
+        {
+            try
+            {
+                HttpResponseMessage response = await _httpClient.GetAsync(url);
+                response.EnsureSuccessStatusCode();
+                string responseBody = await response.Content.ReadAsStringAsync();
+                return responseBody;
+            }
+            catch (HttpRequestException e)
+            {
+                return null;
+            }
+        }
+        public async Task<string> GetDispensersDataAsync(string baseUrl, string accessToken, string cookie, string expand1, string expand2, string search = "", int size = 20, int page = 0)
+        {
+            using (HttpClient httpClient = new HttpClient())
+            {
+                httpClient.BaseAddress = new Uri(baseUrl);
+                httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken}");
+                // _httpClient.DefaultRequestHeaders.Add("Cookie", cookie);
+
+                string endpoint = $"?expand=station.company&expand={expand1}&expand={expand2}&size={size}&page={page}&search={search}";
+
+                HttpResponseMessage response = await httpClient.GetAsync(endpoint);
+                response.EnsureSuccessStatusCode();
+                if (response.IsSuccessStatusCode)
+                {
+                    return await response.Content.ReadAsStringAsync();
+                }
+                else
+                {
+                    Console.WriteLine($"Error: {response.StatusCode} - {response.ReasonPhrase}");
+                    return null;
+                }
+            }
+
+        }
+
+
+        public async Task<string> PostAsync(string url, HttpContent content)
+        {
+            try
+            {
+                HttpResponseMessage response = await _httpClient.PostAsync(url, content);
+                response.EnsureSuccessStatusCode();
+                string responseBody = await response.Content.ReadAsStringAsync();
+                return responseBody;
+            }
+            catch (HttpRequestException e)
+            {
+                return null;
+            }
+        }
+
+    }
+}

+ 1 - 1
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Core/Service/IAssociationService.cs

@@ -25,6 +25,6 @@ namespace Core.Service_Middleware_Platform.Api.Core
         /// </summary>
         /// <param name="user"></param>
         /// <returns></returns>
-        Task<UserResponseDto>GetToken(UserLogin user);
+        Task<UserResponseDto> GetTokenAsync(UserLogin user);
     }
 }

+ 59 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/Authorization/Dto/FueilingSdkAuthPageDto.cs

@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IMES_Middleware_Platform.Api.Domain.Authorization.Dto
+{
+    /// <summary>
+    /// 查询条件
+    /// </summary>
+    public class FueilingSdkAuthPageDto
+    {
+        public int Guid { get; set; }
+
+        /// <summary>
+        /// 油站名称
+        /// </summary>
+        public string OilStation { get; set; }
+
+        /// <summary>
+        /// 项目名称
+        /// </summary>
+        public string Project { get; set; }
+
+        /// <summary>
+        /// 设备
+        /// </summary>
+        public string SN { get; set; }
+
+        /// <summary>
+        /// 授权码
+        /// </summary>
+        public string Key { get; set; }
+
+        /// <summary>
+        /// 授权开始时间
+        /// </summary>
+        public DateTime? BeginTime { get; set; }
+
+        /// <summary>
+        /// 授权结束时间
+        /// </summary>
+        public DateTime? EndTime { get; set; }
+
+        public FueilingSdkAuth ToEntity() {
+            return new FueilingSdkAuth() {
+               State=1,
+               SN= SN,
+               OilStation= OilStation,
+               CreatedTime=DateTime.Now,
+               ProjectName= Project,
+               Key= Key,
+               ExpiedTime= DateTime.Now.AddYears(10),
+               Id= Guid
+            };
+        }
+    }
+}

+ 67 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/Authorization/FueilingSdkAuth.cs

@@ -0,0 +1,67 @@
+using FreeSql.DataAnnotations;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+using ZhonTai.Admin.Core.Entities;
+
+namespace IMES_Middleware_Platform.Api.Domain.Authorization
+{
+
+    /// <summary>
+    /// 油站SDK授权
+    /// </summary>
+    [Table(Name = "FueilingSdkAuth")]
+    public class FueilingSdkAuth : EntityUpdate
+    {
+        /// <summary>
+        /// 加油站
+        /// </summary>
+        [Column(StringLength = 50)]
+        public string OilStation { get; set; }
+
+
+        /// <summary>
+        /// 项目名称
+        /// </summary>
+        [Column(StringLength = 50)]
+        public string ProjectName { get; set; }
+
+
+        /// <summary>
+        /// 设备SN号
+        /// </summary>
+        [Column(StringLength = 64)]
+        public string SN { get; set; }
+
+
+
+        /// <summary>
+        /// 密钥Key
+        /// </summary>
+        [Column(StringLength = 64)]
+        public string Key { get; set; }
+
+
+        /// <summary>
+        /// 过期时间
+        /// </summary>
+        [Column(StringLength = 64)]
+        public DateTime? ExpiedTime { get; set; }
+
+        /// <summary>
+        /// 状态
+        /// </summary>
+        [Column(StringLength = 4)]
+        public int State { get; set; }
+
+
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+    }
+}

+ 16 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/Authorization/IFueilingSdkAuthRepository.cs

@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Repositories;
+
+namespace IMES_Middleware_Platform.Api.Domain.Authorization
+{
+    /// <summary>
+    /// app SDK 授权记录
+    /// </summary>
+    public interface IFueilingSdkAuthRepository:IRepositoryBase<FueilingSdkAuth>
+    {
+    }
+}

+ 45 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/Authorization/IFueilingSdkAuthService.cs

@@ -0,0 +1,45 @@
+using IMES_Middleware_Platform.Api.Domain.Authorization.Dto;
+using IMES_Middleware_Platform.Api.Domain.Authorization.Input;
+using IMES_Middleware_Platform.Api.Domain.Authorization.Output;
+using Microsoft.Extensions.FileProviders;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Dto;
+
+namespace IMES_Middleware_Platform.Api.Domain.Authorization
+{
+    public  interface IFueilingSdkAuthService
+    {
+        /// <summary>
+        /// 授权列表查询
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        Task<PageOutput<FueilingSdkAuthOutPut>> GetPageAsync(PageInput<FueilingSdkAuthPageDto> input);
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="fileInfo"></param>
+        /// <returns></returns>
+        Task<bool> Import(IFileInfo fileInfo);
+
+        /// <summary>
+        /// 修改
+        /// </summary>
+        /// <param name="authPageDto"></param>
+        /// <returns></returns>
+        Task<bool> Update(FueilingSdkAuthInput authPageDto);
+
+        /// <summary>
+        /// 添加
+        /// </summary>
+        /// <param name="authPageDto"></param>
+        /// <returns></returns>
+        Task<bool> Add(FueilingSdkAuthInput authPageDto);
+        Task<bool> ValidateAuthorization(string permission);
+    }
+}

+ 66 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/Authorization/Input/FueilingSdkAuthInput.cs

@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IMES_Middleware_Platform.Api.Domain.Authorization.Input
+{
+    public class FueilingSdkAuthInput
+    {
+        public long Guid { get; set; }
+
+        /// <summary>
+        /// 油站名称
+        /// </summary>
+        public string OilStation { get; set; }
+
+        /// <summary>
+        /// 项目名称
+        /// </summary>
+        public string Project { get; set; }
+
+        /// <summary>
+        /// 设备
+        /// </summary>
+        public string SN { get; set; }
+
+        /// <summary>
+        /// 授权码
+        /// </summary>
+        public string Key { get; set; }
+
+        /// <summary>
+        /// 0未授权,1授权
+        /// </summary>
+        public int State { get; set; }
+
+        /// <summary>
+        /// 授权开始时间
+        /// </summary>
+        public DateTime ExpiedTime { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string  Remark { get; set; }
+
+
+
+        public FueilingSdkAuth ToEntity()
+        {
+            return new FueilingSdkAuth()
+            {
+                State = State,
+                SN = SN,
+                OilStation = OilStation,
+                CreatedTime = DateTime.Now,
+                ProjectName = Project,
+                Key = Key,
+                ExpiedTime = ExpiedTime,
+                Id = Guid,
+                Remark = Remark,
+            };
+        }
+    }
+}

+ 60 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/Authorization/Output/FueilingSdkAuthOutPut.cs

@@ -0,0 +1,60 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IMES_Middleware_Platform.Api.Domain.Authorization.Output
+{
+    public class FueilingSdkAuthOutPut
+    {
+
+        public long Guid { get; set; }
+        /// <summary>
+        /// 加油站
+        /// </summary>
+
+        public string OilStation { get; set; }
+
+
+        /// <summary>
+        /// 项目名称
+        /// </summary>
+        public string ProjectName { get; set; }
+
+
+        /// <summary>
+        /// 设备SN号
+        /// </summary>
+
+        public string SN { get; set; }
+
+
+
+        /// <summary>
+        /// 密钥Key
+        /// </summary>
+
+        public string Key { get; set; }
+
+
+        /// <summary>
+        /// 过期时间
+        /// </summary>
+
+        public DateTime? ExpiedTime { get; set; }
+
+        /// <summary>
+        /// 状态
+        /// </summary>
+
+        public string State { get; set; }
+
+
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+    }
+}

+ 89 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/FuelDispenserDto.cs

@@ -0,0 +1,89 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
+{
+    public class FuelDispenserDto
+    {
+        /// <summary>
+        /// 加油机名称
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 石油公司
+        /// </summary>
+        public string OilCompany { get; set; }
+
+        /// <summary>
+        /// 加油站
+        /// </summary>
+        public string GasStation { get; set; }
+
+        /// <summary>
+        /// 序列号
+        /// </summary>
+        public string SerialNumber { get; set; }
+
+        /// <summary>
+        /// 加油机机型
+        /// </summary>
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 加油机枪数量
+        /// </summary>
+        public int GunCount { get; set; }
+
+        /// <summary>
+        /// 加油机厂商
+        /// </summary>
+        public string Manufacturer { get; set; }
+
+        /// <summary>
+        /// 出厂时间
+        /// </summary>
+        public DateTime? ManufactureDate { get; set; }
+
+        /// <summary>
+        /// 启动时间
+        /// </summary>
+        public DateTime? StartupDate { get; set; }
+
+        /// <summary>
+        /// 安装时间
+        /// </summary>
+        public DateTime? InstallationDate { get; set; }
+
+        /// <summary>
+        /// 设备状态
+        /// </summary>
+        public string DeviceStatus { get; set; }
+
+        /// <summary>
+        /// 在线状态
+        /// </summary>
+        public string OnlineStatus { get; set; }
+        public FuelDispenserEntity ToFuelDispenser(FuelDispenserDto gasPump)
+        {
+            return new FuelDispenserEntity()
+            {
+                Name = gasPump.Name,
+                OilCompany = gasPump.OilCompany,
+                GasStation = gasPump.GasStation,
+                SerialNumber = gasPump.SerialNumber,
+                Model = gasPump.Model,
+                GunCount = gasPump.GunCount,
+                Manufacturer = gasPump.Manufacturer,
+                ManufactureDate = gasPump.ManufactureDate,
+                StartupDate = gasPump.StartupDate,
+                InstallationDate = gasPump.InstallationDate,
+                DeviceStatus = gasPump.DeviceStatus,
+                OnlineStatus = gasPump.OnlineStatus,
+            };
+        }
+    }
+}

+ 163 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/Dto/SupplierDto.cs

@@ -0,0 +1,163 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto
+{
+    public class SupplierDto
+    {
+    }
+    public class Supplier
+    {
+        public string GroupType { get; set; }
+        public object Address { get; set; }
+        public string Code { get; set; }
+        public int StandardId { get; set; }
+        public string Description { get; set; }//加油机厂商
+        public int PhotoId { get; set; }
+        public string RegisterNo { get; set; }
+        public long? CreatedDate { get; set; }
+        public List<string> DeviceTypes { get; set; }
+        public int CreatedBy { get; set; }
+        public object Phone { get; set; }
+        public object Contact { get; set; }
+        public string Name { get; set; }
+        public long? ModifiedDate { get; set; }
+        public string Alias { get; set; }
+        public int ModifiedBy { get; set; }
+        public int Id { get; set; }
+    }
+
+    public class Company
+    {
+        public string GroupType { get; set; }
+        public object Address { get; set; }
+        public object Code { get; set; }
+        public int StandardId { get; set; }
+        public object Description { get; set; }
+        public int PhotoId { get; set; }
+        public object RegisterNo { get; set; }
+        public long? CreatedDate { get; set; }
+        public List<object> DeviceTypes { get; set; }
+        public int CreatedBy { get; set; }
+        public object Phone { get; set; }
+        public object Contact { get; set; }
+        public string Name { get; set; }//石油公司
+        public long? ModifiedDate { get; set; }
+        public object Alias { get; set; }
+        public int ModifiedBy { get; set; }
+        public int Id { get; set; }
+    }
+
+    public class Station
+    {
+        public string StationCode { get; set; }
+        public bool Alarming { get; set; }
+        public string DistrictCode { get; set; }
+        public string City { get; set; }
+        public string CityCode { get; set; }
+        public object Description { get; set; }
+        public object RetailCertificate { get; set; }
+        public string Type { get; set; }
+        public string RegisterNo { get; set; }
+        public string Province { get; set; }
+        public string Contact { get; set; }
+        public int ModifiedBy { get; set; }
+        public Company Company { get; set; }
+        public int Id { get; set; }
+        public double Lat { get; set; }
+        public string Address { get; set; }
+        public double Lng { get; set; }
+        public bool Test { get; set; }
+        public bool Business { get; set; }
+        public string ProvinceCode { get; set; }
+        public long? AlarmTime { get; set; }
+        public int PhotoId { get; set; }
+        public List<object> Tags { get; set; }
+        public int DispensersTotal { get; set; }
+        public long? CreatedDate { get; set; }
+        public string Phone { get; set; }
+        public int CreatedBy { get; set; }
+        public string District { get; set; }
+        public string Name { get; set; }//加油站
+        public long? ModifiedDate { get; set; }
+        public int NoticesTotal { get; set; }
+        public int NozzleControlsTotal { get; set; }
+    }
+
+    public class Content
+    {
+        public object LastInspectTime { get; set; }
+        public string MeasureRang { get; set; }
+        public bool Alarming { get; set; }
+        public int DeviceAlarmLevel { get; set; }
+        public string OnlineStatus { get; set; }//在线状态 online:在线  offline : 离线
+        public long? ProductTime { get; set; }//出厂时间
+
+        public string Type { get; set; }//加油机机型
+        public string AccuracyLevel { get; set; }
+        public string Uuid { get; set; }
+        public string DeviceStatus { get; set; }//设备状态  enable:启用   register:备案  disable:维修  factory:出厂注册
+        public long? LockTime { get; set; }
+        public List<string> ChangeInfo { get; set; }
+        public object Contact { get; set; }
+        public Supplier Supplier { get; set; }
+        public Station Station { get; set; }
+        public bool Lock { get; set; }
+        public int ModifiedBy { get; set; }
+        public long? StartTime { get; set; }//启用时间
+
+        public int AlarmLevel { get; set; }
+        public int Id { get; set; }
+        public string ModelSpec { get; set; }
+        public string SerialNum { get; set; }//序列号
+        public bool Test { get; set; }
+        public List<object> SealNo { get; set; }
+        public List<object> Alarms { get; set; }
+        public long? AlarmTime { get; set; }
+        public int PhotoId { get; set; }
+        public long? FixTime { get; set; }
+        public List<int> PhotoIds { get; set; }
+        public long? SoldTime { get; set; }
+        public List<string> AlarmDetail { get; set; }
+        public object VerificationCode { get; set; }
+        public long? CreatedDate { get; set; }
+        public object Phone { get; set; }
+        public int CreatedBy { get; set; }
+        public bool Repairing { get; set; }
+        public string Name { get; set; } //名称
+        public long? ModifiedDate { get; set; }
+        public string Setup { get; set; }
+        public int NoticesTotal { get; set; }
+        public int NozzleControlsTotal { get; set; }//加油枪数量
+    }
+
+    public class Pageable
+    {
+        public object Sort { get; set; }
+        public int PageSize { get; set; }
+        public int PageNumber { get; set; }
+        public int Offset { get; set; }
+    }
+
+    public class Summary
+    {
+        public int NozzleControlCount { get; set; }
+        public int DispenserCount { get; set; }
+    }
+
+    public class Root
+    {
+        public List<Content> Content { get; set; }
+        public Pageable Pageable { get; set; }
+        public Summary Summary { get; set; }
+        public int TotalElements { get; set; }
+        public int TotalPages { get; set; }
+        public object Sort { get; set; }
+        public int NumberOfElements { get; set; }
+        public int Size { get; set; }
+        public int Number { get; set; }
+    }
+}

+ 76 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/FuelDispenserEntity.cs

@@ -0,0 +1,76 @@
+using FreeSql.DataAnnotations;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+using ZhonTai.Admin.Core.Entities;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    [Table(Name = "FuelDispenser")]
+    public class FuelDispenserEntity : EntityUpdate
+    {
+        /// <summary>
+        /// 加油机名称
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 石油公司
+        /// </summary>
+        public string OilCompany { get; set; }
+
+        /// <summary>
+        /// 加油站
+        /// </summary>
+        public string GasStation { get; set; }
+
+        /// <summary>
+        /// 序列号
+        /// </summary>
+        public string SerialNumber { get; set; }
+
+        /// <summary>
+        /// 加油机机型
+        /// </summary>
+        public string Model { get; set; }
+
+        /// <summary>
+        /// 加油机枪数量
+        /// </summary>
+        public int GunCount { get; set; }
+
+        /// <summary>
+        /// 加油机厂商
+        /// </summary>
+        public string Manufacturer { get; set; }
+
+        /// <summary>
+        /// 出厂时间
+        /// </summary>
+        public DateTime? ManufactureDate { get; set; }
+
+        /// <summary>
+        /// 启动时间
+        /// </summary>
+        public DateTime? StartupDate { get; set; }
+
+        /// <summary>
+        /// 安装时间
+        /// </summary>
+        public DateTime? InstallationDate { get; set; }
+
+        /// <summary>
+        /// 设备状态
+        /// </summary>
+        public string DeviceStatus { get; set; }
+
+        /// <summary>
+        /// 在线状态
+        /// </summary>
+        public string OnlineStatus { get; set; }
+
+    }
+}

+ 13 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Domain/FuelDispenser/IFuelDispenserRepository.cs

@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Repositories;
+
+namespace IMES_Middleware_Platform.Api.Domain.FuelDispenser
+{
+    public interface IFuelDispenserRepository : IRepositoryBase<FuelDispenserEntity>
+    {
+    }
+}

+ 1 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/IMES_Middleware_Platform.Api.csproj

@@ -9,6 +9,7 @@
 	</PropertyGroup>
 
 	<ItemGroup>
+		<PackageReference Include="DFS.Infrastructure" Version="1.0.1" />
 		<PackageReference Include="ZhonTai.Admin" Version="$(PackageZhonTaiVersion)">
 			<CopyToOutputDirectory>*\*\*.xml</CopyToOutputDirectory>
 		</PackageReference>

+ 330 - 1
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/IMES_Middleware_Platform.Api.xml

@@ -49,6 +49,304 @@
             模块自定义任务处理器
             </summary>
         </member>
+        <member name="T:IMES_Middleware_Platform.Api.Domain.Authorization.Dto.FueilingSdkAuthPageDto">
+            <summary>
+            查询条件
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Dto.FueilingSdkAuthPageDto.OilStation">
+            <summary>
+            油站名称
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Dto.FueilingSdkAuthPageDto.Project">
+            <summary>
+            项目名称
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Dto.FueilingSdkAuthPageDto.SN">
+            <summary>
+            设备
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Dto.FueilingSdkAuthPageDto.Key">
+            <summary>
+            授权码
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Dto.FueilingSdkAuthPageDto.BeginTime">
+            <summary>
+            授权开始时间
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Dto.FueilingSdkAuthPageDto.EndTime">
+            <summary>
+            授权结束时间
+            </summary>
+        </member>
+        <member name="T:IMES_Middleware_Platform.Api.Domain.Authorization.FueilingSdkAuth">
+            <summary>
+            油站SDK授权
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.FueilingSdkAuth.OilStation">
+            <summary>
+            加油站
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.FueilingSdkAuth.ProjectName">
+            <summary>
+            项目名称
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.FueilingSdkAuth.SN">
+            <summary>
+            设备SN号
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.FueilingSdkAuth.Key">
+            <summary>
+            密钥Key
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.FueilingSdkAuth.ExpiedTime">
+            <summary>
+            过期时间
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.FueilingSdkAuth.State">
+            <summary>
+            状态
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.FueilingSdkAuth.Remark">
+            <summary>
+            备注
+            </summary>
+        </member>
+        <member name="T:IMES_Middleware_Platform.Api.Domain.Authorization.IFueilingSdkAuthRepository">
+            <summary>
+            app SDK 授权记录
+            </summary>
+        </member>
+        <member name="M:IMES_Middleware_Platform.Api.Domain.Authorization.IFueilingSdkAuthService.GetPageAsync(ZhonTai.Admin.Core.Dto.PageInput{IMES_Middleware_Platform.Api.Domain.Authorization.Dto.FueilingSdkAuthPageDto})">
+            <summary>
+            授权列表查询
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:IMES_Middleware_Platform.Api.Domain.Authorization.IFueilingSdkAuthService.Import(Microsoft.Extensions.FileProviders.IFileInfo)">
+            <summary>
+            
+            </summary>
+            <param name="fileInfo"></param>
+            <returns></returns>
+        </member>
+        <member name="M:IMES_Middleware_Platform.Api.Domain.Authorization.IFueilingSdkAuthService.Update(IMES_Middleware_Platform.Api.Domain.Authorization.Input.FueilingSdkAuthInput)">
+            <summary>
+            修改
+            </summary>
+            <param name="authPageDto"></param>
+            <returns></returns>
+        </member>
+        <member name="M:IMES_Middleware_Platform.Api.Domain.Authorization.IFueilingSdkAuthService.Add(IMES_Middleware_Platform.Api.Domain.Authorization.Input.FueilingSdkAuthInput)">
+            <summary>
+            添加
+            </summary>
+            <param name="authPageDto"></param>
+            <returns></returns>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Input.FueilingSdkAuthInput.OilStation">
+            <summary>
+            油站名称
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Input.FueilingSdkAuthInput.Project">
+            <summary>
+            项目名称
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Input.FueilingSdkAuthInput.SN">
+            <summary>
+            设备
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Input.FueilingSdkAuthInput.Key">
+            <summary>
+            授权码
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Input.FueilingSdkAuthInput.State">
+            <summary>
+            0未授权,1授权
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Input.FueilingSdkAuthInput.ExpiedTime">
+            <summary>
+            授权开始时间
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Input.FueilingSdkAuthInput.Remark">
+            <summary>
+            备注
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Output.FueilingSdkAuthOutPut.OilStation">
+            <summary>
+            加油站
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Output.FueilingSdkAuthOutPut.ProjectName">
+            <summary>
+            项目名称
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Output.FueilingSdkAuthOutPut.SN">
+            <summary>
+            设备SN号
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Output.FueilingSdkAuthOutPut.Key">
+            <summary>
+            密钥Key
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Output.FueilingSdkAuthOutPut.ExpiedTime">
+            <summary>
+            过期时间
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Output.FueilingSdkAuthOutPut.State">
+            <summary>
+            状态
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.Authorization.Output.FueilingSdkAuthOutPut.Remark">
+            <summary>
+            备注
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.Name">
+            <summary>
+            加油机名称
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.OilCompany">
+            <summary>
+            石油公司
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.GasStation">
+            <summary>
+            加油站
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.SerialNumber">
+            <summary>
+            序列号
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.Model">
+            <summary>
+            加油机机型
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.GunCount">
+            <summary>
+            加油机枪数量
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.Manufacturer">
+            <summary>
+            加油机厂商
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.ManufactureDate">
+            <summary>
+            出厂时间
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.StartupDate">
+            <summary>
+            启动时间
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.InstallationDate">
+            <summary>
+            安装时间
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.DeviceStatus">
+            <summary>
+            设备状态
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto.FuelDispenserDto.OnlineStatus">
+            <summary>
+            在线状态
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.Name">
+            <summary>
+            加油机名称
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.OilCompany">
+            <summary>
+            石油公司
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.GasStation">
+            <summary>
+            加油站
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.SerialNumber">
+            <summary>
+            序列号
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.Model">
+            <summary>
+            加油机机型
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.GunCount">
+            <summary>
+            加油机枪数量
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.Manufacturer">
+            <summary>
+            加油机厂商
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.ManufactureDate">
+            <summary>
+            出厂时间
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.StartupDate">
+            <summary>
+            启动时间
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.InstallationDate">
+            <summary>
+            安装时间
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.DeviceStatus">
+            <summary>
+            设备状态
+            </summary>
+        </member>
+        <member name="P:IMES_Middleware_Platform.Api.Domain.FuelDispenser.FuelDispenserEntity.OnlineStatus">
+            <summary>
+            在线状态
+            </summary>
+        </member>
         <member name="T:IMES_Middleware_Platform.Api.Domain.Module.Dto.ModuleGetPageDto">
             <summary>
             模块分页
@@ -94,11 +392,23 @@
             名称
             </summary>
         </member>
+        <member name="T:IMES_Middleware_Platform.Api.Repositories.Component.FueilingSdkAuthRepository">
+            <summary>
+            部件仓储
+            </summary>
+        </member>
         <member name="T:IMES_Middleware_Platform.Api.Repositories.ModuleRepository">
             <summary>
             模块仓储
             </summary>
         </member>
+        <member name="M:IMES_Middleware_Platform.Api.Services.Association.AssociationService.GetDispensersAsync(System.String,System.String,System.String)">
+            <summary>
+            加油机统计
+            </summary>
+            <param name="user"></param>
+            <returns></returns>
+        </member>
         <member name="T:IMES_Middleware_Platform.Api.Services.Association.BaseQueryDto">
             <summary>
             协会基础父类
@@ -155,6 +465,25 @@
             </summary>
             <returns></returns>
         </member>
+        <member name="T:IMES_Middleware_Platform.Api.Services.Authorization.FueilingSdkAuthService">
+            <summary>
+            油机 SDK授权服务 
+            </summary>
+        </member>
+        <member name="M:IMES_Middleware_Platform.Api.Services.Authorization.FueilingSdkAuthService.Add(IMES_Middleware_Platform.Api.Domain.Authorization.Input.FueilingSdkAuthInput)">
+            <summary>
+            新增授权SDK
+            </summary>
+            <param name="authPageDto"></param>
+            <returns></returns>
+        </member>
+        <member name="M:IMES_Middleware_Platform.Api.Services.Authorization.FueilingSdkAuthService.Update(System.Collections.Generic.List{IMES_Middleware_Platform.Api.Domain.Authorization.Input.FueilingSdkAuthInput})">
+            <summary>
+            更新授权SDK
+            </summary>
+            <param name="authPageDto"></param>
+            <returns></returns>
+        </member>
         <member name="T:IMES_Middleware_Platform.Api.Services.Module.IModuleService">
             <summary>
             模块接口
@@ -272,7 +601,7 @@
             <param name="search"></param>
             <returns></returns>
         </member>
-        <member name="M:Core.Service_Middleware_Platform.Api.Core.IAssociationService.GetToken(IMES_Middleware_Platform.Api.Services.Association.UserLogin)">
+        <member name="M:Core.Service_Middleware_Platform.Api.Core.IAssociationService.GetTokenAsync(IMES_Middleware_Platform.Api.Services.Association.UserLogin)">
             <summary>
             获取用户Token信息
             </summary>

+ 17 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/Authorization/FueilingSdkAuthRepository.cs

@@ -0,0 +1,17 @@
+using IMES_Middleware_Platform.Api.Core.Repositories;
+using IMES_Middleware_Platform.Api.Domain.Authorization;
+using ZhonTai.Admin.Core.Db.Transaction;
+
+
+namespace IMES_Middleware_Platform.Api.Repositories.Component
+{
+	/// <summary>
+	/// 部件仓储
+	/// </summary>
+	public class FueilingSdkAuthRepository : AppRepositoryBase<FueilingSdkAuth>, IFueilingSdkAuthRepository
+    {
+		public FueilingSdkAuthRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
+		{
+		}
+	}
+}

+ 20 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Repositories/FuelDispenser/FuelDispenserRepository.cs

@@ -0,0 +1,20 @@
+using IMES_Middleware_Platform.Api.Core.Repositories;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai.Admin.Core.Db.Transaction;
+
+namespace IMES_Middleware_Platform.Api.Repositories.FuelDispenser
+{
+    public class FuelDispenserRepository : AppRepositoryBase<FuelDispenserEntity>, IFuelDispenserRepository
+    {
+        public FuelDispenserRepository(UnitOfWorkManagerCloud uowm) : base(uowm)
+        {
+
+        }
+    }
+}

+ 134 - 4
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Services/Association/AssociationService.cs

@@ -1,37 +1,167 @@
 using Core.Service_Middleware_Platform.Api.Core;
+using DotNetCore.CAP.Internal;
+using IdentityModel;
 using IMES_Middleware_Platform.Api.Core.Consts;
+using IMES_Middleware_Platform.Api.Core.Handlers;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser;
+using IMES_Middleware_Platform.Api.Domain.FuelDispenser.Dto;
+using IMES_Middleware_Platform.Api.Services.Module;
+using Microsoft.AspNetCore.Mvc;
 using Microsoft.Extensions.Configuration;
 using System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Reactive;
 using System.Text;
+using System.Text.Json;
 using System.Threading.Tasks;
 using ZhonTai.Admin.Core.Configs;
+using ZhonTai.Admin.Core.Db;
+using ZhonTai.Admin.Core.Logs;
+using ZhonTai.Admin.Services;
 using ZhonTai.Common.Helpers;
+using ZhonTai.DynamicApi;
+using ZhonTai.DynamicApi.Attributes;
 
 namespace IMES_Middleware_Platform.Api.Services.Association
 {
-    public class AssociationService : IAssociationService
+    [Order(1010)]
+    [DynamicApi(Area = ApiConsts.AreaName)]
+    public class AssociationService : BaseService, IAssociationService, IDynamicApi
     {
         private readonly IConfiguration _configuration;
-        public AssociationService(IConfiguration configuration)
+        public readonly IFuelDispenserRepository _fuelDispenserRepository;
+        static string token = string.Empty;
+        public AssociationService(IConfiguration configuration, IFuelDispenserRepository fuelDispenserRepository)
         {
             _configuration = configuration;
+            _fuelDispenserRepository = fuelDispenserRepository;
         }
 
         public Task<LocalApiDto> GetAllStation(string areaType, string search)
         {
+
             throw new NotImplementedException();
         }
+        /// <summary>
+        /// 加油机统计
+        /// </summary>
+        /// <param name="user"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task GetDispensersAsync(string expand1, string expand2, string search)
+        {
+
+            HttpHelper helper = new HttpHelper();
 
-        public Task<UserResponseDto> GetToken(UserLogin user)
+            string postUrl = "https://cma-fds.org.cn/api/v1/dispensers";
+            var size = 20;
+            var page = 0;
+            //string result = await helper.GetDispensersDataAsync(postUrl, token, "", expand1, expand2, search, size, page);// "supplier", "station"
+            //Root myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<Root>(result);
+            //int totalRequests = myObject != null ? (int)Math.Ceiling((double)myObject.TotalElements / size) : 0;
+            await GetAllDataAsync(postUrl, token, expand1, expand2, search, size);
+            //if (myObject != null)
+            //{
+            //    await AddFuelDispenserAsync(myObject);
+            //}
+            //return myObject;
+        }
+        [HttpPost]
+        public async Task<UserResponseDto> GetTokenAsync(UserLogin user)
         {
+            HttpHelper helper = new HttpHelper();
             var middleAppConfig = ConfigHelper.Get<MiddleAppConfig>("appconfig");
             if (middleAppConfig.IsDevLogin)
             {
                 user = user.TestLogin();
+
+            }
+            var json = JsonSerializer.Serialize(new
+            {
+                email = user.Email,
+                mobile = user.Mobile,
+                name = user.Name,
+                password = user.Password
+            });
+            string postUrl = "https://cma-fds.org.cn/api/v1/users/login";
+            HttpContent postContent = new StringContent(json, Encoding.UTF8, "application/json");
+            string postResponse = await helper.PostAsync(postUrl, postContent);
+            UserResponseDto myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<UserResponseDto>(postResponse);
+            token = myObject.Token;
+            return myObject;
+        }
+        public async Task GetAllDataAsync(string postUrl, string token, string expand1, string expand2, string search, int pageSize)
+        {
+            int currentPage = 0;
+            HttpHelper helper = new HttpHelper();
+            while (true)
+            {
+                string result = await helper.GetDispensersDataAsync(postUrl, token, "", expand1, expand2, search, pageSize, currentPage);
+
+                Root myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<Root>(result);
+
+                if (myObject == null || myObject.Content == null || myObject.Content.Count == 0)
+                {
+                    break;
+                }
+                await AddFuelDispenserAsync(myObject);
+
+                // 增加当前页数
+                currentPage++;
+            }
+
+        }
+        public async Task RepeatOperation(int numberOfTimes)
+        {
+            for (int i = 0; i < numberOfTimes; i++)
+            {
+                // 在这里执行你想要重复的操作
+                Console.WriteLine($"Executing operation {i + 1} of {numberOfTimes}");
+                // 例如,你可以调用其他方法、发送请求、处理数据等等
+            }
+        }
+        public async Task AddFuelDispenserAsync(Root myObject)
+        {
+            for (var i = 0; i < myObject.Content.Count(); i++)
+            {
+
+                DateTime? ProductTime = myObject.Content[i].ProductTime.HasValue
+                    ? DateTimeOffset.FromUnixTimeMilliseconds(myObject.Content[i].ProductTime.Value).UtcDateTime
+                    : (DateTime?)null;
+                DateTime? StartTime = myObject.Content[i].StartTime.HasValue
+                ? DateTimeOffset.FromUnixTimeMilliseconds(myObject.Content[i].StartTime.Value).UtcDateTime
+                : (DateTime?)null;
+                FuelDispenserDto fuelDispenserDto = new FuelDispenserDto
+                {
+                    Name = myObject.Content[i].Name,
+                    OilCompany = myObject?.Content[i]?.Station?.Company?.Name,
+                    GasStation = myObject.Content[i].Station?.Name,
+                    SerialNumber = myObject.Content[i].SerialNum,
+                    Model = myObject.Content[i].Type,
+                    GunCount = myObject.Content[i].NozzleControlsTotal, // 例如,假设有4个枪
+                    Manufacturer = myObject.Content[i].Supplier?.Description,
+                    ManufactureDate = ProductTime, // 使用实际的出厂时间
+                    StartupDate = StartTime, // 使用实际的启动时间
+                    InstallationDate = null, // 使用实际的安装时间
+                    DeviceStatus = myObject.Content[i].DeviceStatus,
+                    OnlineStatus = myObject.Content[i].OnlineStatus// 假设在线状态为1,可以根据实际情况设置
+                };
+                var fuelDispenser = _fuelDispenserRepository.Where(x => x.SerialNumber == fuelDispenserDto.SerialNumber).First();
+                if (fuelDispenser != null)
+                {
+                    await _fuelDispenserRepository.InsertAsync(fuelDispenserDto.ToFuelDispenser(fuelDispenserDto));
+                }
+                else
+                {
+                    fuelDispenser.DeviceStatus = fuelDispenserDto.DeviceStatus;
+                    fuelDispenser.OnlineStatus = fuelDispenserDto.OnlineStatus;
+                    await _fuelDispenserRepository.UpdateAsync(fuelDispenser);
+                }
             }
-            throw new ArgumentNullException();
         }
     }
 }

+ 98 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Services/Authorization/FueilingSdkAuthService.cs

@@ -0,0 +1,98 @@
+using IMES_Middleware_Platform.Api.Core.Consts;
+using IMES_Middleware_Platform.Api.Domain.Authorization;
+using IMES_Middleware_Platform.Api.Domain.Authorization.Dto;
+using IMES_Middleware_Platform.Api.Domain.Authorization.Input;
+using IMES_Middleware_Platform.Api.Domain.Authorization.Output;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Components.Forms;
+using Microsoft.AspNetCore.DataProtection.KeyManagement;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.FileProviders;
+using Minio.DataModel;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Cryptography;
+using System.Text;
+using System.Threading.Tasks;
+using ZhonTai;
+using ZhonTai.Admin.Core.Attributes;
+using ZhonTai.Admin.Core.Dto;
+using ZhonTai.Admin.Services;
+using ZhonTai.DynamicApi;
+using ZhonTai.DynamicApi.Attributes;
+
+namespace IMES_Middleware_Platform.Api.Services.Authorization
+{
+    /// <summary>
+    /// 油机 SDK授权服务 
+    /// </summary>
+    [Order(1000)]
+    [DynamicApi(Area = ApiConsts.AreaName)]
+    public class FueilingSdkAuthService : BaseService, IFueilingSdkAuthService, IDynamicApi
+    {
+        private readonly IFueilingSdkAuthRepository _repository;
+        public FueilingSdkAuthService(IFueilingSdkAuthRepository repository)
+        {
+            _repository = repository;
+        }
+
+        /// <summary>
+        /// 新增授权SDK
+        /// </summary>
+        /// <param name="authPageDto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<bool> Add(FueilingSdkAuthInput authPageDto)
+        {
+            var model = await _repository.InsertAsync(authPageDto.ToEntity());
+            return true;
+        }
+
+        public Task<PageOutput<FueilingSdkAuthOutPut>> GetPageAsync(PageInput<FueilingSdkAuthPageDto> input)
+        {
+            throw new NotImplementedException();
+        }
+
+        public Task<bool> Import(IFileInfo fileInfo)
+        {
+            throw new NotImplementedException();
+        }
+
+        /// <summary>
+        /// 更新授权SDK
+        /// </summary>
+        /// <param name="authPageDto"></param>
+        /// <returns></returns>
+        [HttpPut]
+        public async Task<bool> Update(List<FueilingSdkAuthInput> authPageDto)
+        {
+            return true;
+        }
+
+        public Task<bool> Update(FueilingSdkAuthInput authPageDto)
+        {
+            throw new NotImplementedException();
+        }
+
+        [HttpPost]
+        [AllowAnonymous]
+        public async Task<bool> ValidateAuthorization(string permission)
+        {
+            string key = "1434d03d777d4e93bb1e3b3a446049c6";
+            var decryptedKey = StringSecurityExtension.AesEncryptToBase64(permission, key);
+            string[] SnOrAuthcode = decryptedKey.Split('+');
+            var Sn = SnOrAuthcode[0];
+            var Authcode = SnOrAuthcode[1];
+            DateTime dateTime = new DateTime();
+            var model =  _repository.Where(a => a.SN == Sn && a.Key == Authcode && a.ExpiedTime >= dateTime).First();
+            if (model == null)
+            {
+                return false;
+            }
+
+            return true;
+        }
+
+    }
+}

+ 18 - 0
IMES-Middleware-Platform/src/platform/IMES-Middleware-Platform.Api/Services/Module/ModuleService.cs

@@ -1,9 +1,14 @@
 using IMES_Middleware_Platform.Api.Core.Consts;
+using IMES_Middleware_Platform.Api.Core.Handlers;
 using IMES_Middleware_Platform.Api.Domain.Module;
 using IMES_Middleware_Platform.Api.Domain.Module.Dto;
 using IMES_Middleware_Platform.Api.Services.Module.Input;
 using IMES_Middleware_Platform.Api.Services.Module.Output;
 using Microsoft.AspNetCore.Mvc;
+using System.Net.Http;
+using System.Net;
+using System.Text;
+using System;
 using System.Threading.Tasks;
 using ZhonTai;
 using ZhonTai.Admin.Core.Dto;
@@ -33,6 +38,19 @@ namespace IMES_Middleware_Platform.Api.Services.Module
         /// <returns></returns>
         public async Task<ModuleGetOutput> GetAsync(long id)
         {
+
+            HttpHelper helper = new HttpHelper();
+
+            // 发送GET请求
+            //string getUrl = "https://cma-fds.org.cn/api/v1/users/login";
+            //string getResponse = await helper.GetAsync(getUrl);
+
+            // 发送POST请求
+            string postUrl = "https://cma-fds.org.cn/api/v1/users/login";
+            HttpContent postContent = new StringContent("{\"email\":\"15626196105\",\"mobile\":\"15626196105\",\"name\":\"15626196105\",\"password\":\"Qq15626196105\"}", Encoding.UTF8, "application/json");
+            string postResponse = await helper.PostAsync(postUrl, postContent);
+           // MyClass myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<MyClass>(jsonString);
+
             var result = await _moduleRepository.GetAsync<ModuleGetOutput>(id);
             return result;
         }