81 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			81 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 
								 | 
							
								using APT.BaseData.Domain.Enums;
							 | 
						|||
| 
								 | 
							
								using APT.BaseData.Domain.Entities.FM;
							 | 
						|||
| 
								 | 
							
								using APT.Infrastructure.Core;
							 | 
						|||
| 
								 | 
							
								using APT.Utility;
							 | 
						|||
| 
								 | 
							
								using APT.PF.WebApi;
							 | 
						|||
| 
								 | 
							
								using IdentityModel.Client;
							 | 
						|||
| 
								 | 
							
								using Microsoft.AspNetCore.Cors;
							 | 
						|||
| 
								 | 
							
								using Microsoft.AspNetCore.Mvc;
							 | 
						|||
| 
								 | 
							
								using Microsoft.IdentityModel.Tokens;
							 | 
						|||
| 
								 | 
							
								using System;
							 | 
						|||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						|||
| 
								 | 
							
								using System.IdentityModel.Tokens.Jwt;
							 | 
						|||
| 
								 | 
							
								using System.Security.Claims;
							 | 
						|||
| 
								 | 
							
								using System.Text;
							 | 
						|||
| 
								 | 
							
								using System.Threading.Tasks;
							 | 
						|||
| 
								 | 
							
								using TokenRequest = APT.Utility.TokenRequest;
							 | 
						|||
| 
								 | 
							
								using APT.Utility;
							 | 
						|||
| 
								 | 
							
								using APT.BaseData.Domain.Entities;
							 | 
						|||
| 
								 | 
							
								using System.Linq;
							 | 
						|||
| 
								 | 
							
								using IdentityModel;
							 | 
						|||
| 
								 | 
							
								using Microsoft.EntityFrameworkCore.Query;
							 | 
						|||
| 
								 | 
							
								using APT.BaseData.Domain.ApiModel.Platform;
							 | 
						|||
| 
								 | 
							
								using APT.BaseData.Domain.ApiModel;
							 | 
						|||
| 
								 | 
							
								using APT.Infrastructure.Api.Redis;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace APT.PF.WebApi.Controllers.Api.FM
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    [Route("api/PF/HardCheck")]
							 | 
						|||
| 
								 | 
							
								    public partial class DataChannelController : AuthorizeApiController<T_PF_DATA_CHANNEL>
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        private int ErrCountLimit = 30;
							 | 
						|||
| 
								 | 
							
								        private int RAM = 32;
							 | 
						|||
| 
								 | 
							
								        [HttpGet, Route("Info")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<bool> Info(string checkResult)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return SafeExecute<bool>(() =>
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                //var redisManager = APT.Infrastructure.Api.ServiceLocator.Instance.GetService<RedisManager>();
							 | 
						|||
| 
								 | 
							
								                int count = 0;
							 | 
						|||
| 
								 | 
							
								                if (checkResult.ToLower() != "true")
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    if (CsRedisManager.KeyExists(RedisCacheKey.HardWareCheckErrCount))
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        count = CsRedisManager.StringGet<int>(RedisCacheKey.HardWareCheckErrCount);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                    count++;
							 | 
						|||
| 
								 | 
							
								                    CsRedisManager.StringSet(RedisCacheKey.HardWareCheckErrCount, count);
							 | 
						|||
| 
								 | 
							
								                    if (count > ErrCountLimit)
							 | 
						|||
| 
								 | 
							
								                    {
							 | 
						|||
| 
								 | 
							
								                        CsRedisManager.StringSet(RedisCacheKey.HardWareCheckErrCount, checkResult);
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                else
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    CsRedisManager.StringSet(RedisCacheKey.HardWareCheckErrCount, count);
							 | 
						|||
| 
								 | 
							
								                    CsRedisManager.StringSet(RedisCacheKey.HardWareCheck, checkResult);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                return true;
							 | 
						|||
| 
								 | 
							
								            });
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        [HttpPost, Route("UpdateInfo")]
							 | 
						|||
| 
								 | 
							
								        public JsonActionResult<bool> UpdateInfo([FromBody] ComputerInfo info)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            return SafeExecute<bool>(() =>
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                //var redisManager = APT.Infrastructure.Api.ServiceLocator.Instance.GetService<RedisManager>();
							 | 
						|||
| 
								 | 
							
								                if (decimal.Parse(info.CPU) > 0)
							 | 
						|||
| 
								 | 
							
								                {
							 | 
						|||
| 
								 | 
							
								                    CsRedisManager.StringSet(RedisCacheKey.HardWareCpuInfo, info.CPU);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                CsRedisManager.StringSet(RedisCacheKey.HardWareRamInfo, info.RAM);
							 | 
						|||
| 
								 | 
							
								                return true;
							 | 
						|||
| 
								 | 
							
								            });
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |