ntminer 5 years ago
parent
commit
5df6005da2

+ 11 - 0
src/NTMiner.Controllers/IClientDataBinaryController`1.cs

@@ -0,0 +1,11 @@
+using NTMiner.Core.MinerServer;
+
+namespace NTMiner.Controllers {
+    // 为了解除对HttpResponseMessage所在的程序集的引用所以整了个类型参数T1
+    public interface IClientDataBinaryController<T1> {
+        /// <summary>
+        /// 需签名
+        /// </summary>
+        T1 QueryClients(QueryClientsRequest query);
+    }
+}

+ 1 - 0
src/NTMiner.Controllers/NTMiner.Controllers.csproj

@@ -35,6 +35,7 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="ICaptchaController`1.cs" />
+    <Compile Include="IClientDataBinaryController`1.cs" />
     <Compile Include="ICoinSnapshotController.cs" />
     <Compile Include="IMinerClientController.cs" />
     <Compile Include="IUserAppSettingController.cs" />

+ 41 - 0
src/WebApiServer/Controllers/ClientDataBinaryController.cs

@@ -0,0 +1,41 @@
+using NTMiner.Core.MinerServer;
+using System;
+using System.Collections.Generic;
+using System.Net;
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Web.Http;
+
+namespace NTMiner.Controllers {
+    public class ClientDataBinaryController : ApiControllerBase, IClientDataBinaryController<HttpResponseMessage> {
+        [Role.User]
+        [HttpPost]
+        public HttpResponseMessage QueryClients(QueryClientsRequest request) {
+            QueryClientsResponse response;
+            if (request == null) {
+                response = ResponseBase.InvalidInput<QueryClientsResponse>("参数错误");
+            }
+            else {
+                try {
+                    var data = WebApiRoot.ClientDataSet.QueryClients(
+                        User,
+                        request,
+                        out int total,
+                        out List<CoinSnapshotData> latestSnapshots,
+                        out int totalOnlineCount,
+                        out int totalMiningCount) ?? new List<ClientData>();
+                    response = QueryClientsResponse.Ok(data, total, latestSnapshots, totalMiningCount, totalOnlineCount);
+                }
+                catch (Exception e) {
+                    Logger.ErrorDebugLine(e);
+                    response = ResponseBase.ServerError<QueryClientsResponse>(e.Message);
+                }
+            }
+            var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK) {
+                Content = new ByteArrayContent(VirtualRoot.BinarySerializer.Serialize(response))
+            };
+            httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpg");
+            return httpResponseMessage;
+        }
+    }
+}

+ 3 - 3
src/WebApiServer/Controllers/ClientDataController.cs

@@ -10,14 +10,14 @@ namespace NTMiner.Controllers {
         #region QueryClients
         [Role.User]
         [HttpPost]
-        public QueryClientsResponse QueryClients([FromBody]QueryClientsRequest query) {
-            if (query == null) {
+        public QueryClientsResponse QueryClients([FromBody]QueryClientsRequest request) {
+            if (request == null) {
                 return ResponseBase.InvalidInput<QueryClientsResponse>("参数错误");
             }
             try {
                 var data = WebApiRoot.ClientDataSet.QueryClients(
                     User, 
-                    query, 
+                    request, 
                     out int total, 
                     out List<CoinSnapshotData> latestSnapshots, 
                     out int totalOnlineCount, 

+ 1 - 0
src/WebApiServer/WebApiServer.csproj

@@ -94,6 +94,7 @@
     <Compile Include="..\MinerClientSelfHost\HttpServer.cs">
       <Link>HttpServer.cs</Link>
     </Compile>
+    <Compile Include="Controllers\ClientDataBinaryController.cs" />
     <Compile Include="Role\AdminAttribute.cs" />
     <Compile Include="Role\UserAttribute.cs" />
     <Compile Include="Controllers\ApiControllerBase.cs" />