|
- using HealthMonitor.Core.Aop;
- using HealthMonitor.Core.Cache;
- using HealthMonitor.Core.Dal;
- using HealthMonitor.Core.Operator;
- using HealthMonitor.Core.Query;
- using HealthMonitor.Core.Query.Extensions;
- using HealthMonitor.Util.Common.Operator;
- using HealthMonitor.Util.Entities.Base;
- using HealthMonitor.Util.Models;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.EntityFrameworkCore;
- using Newtonsoft.Json;
- using System.ComponentModel.DataAnnotations;
-
- namespace HealthMonitor.WebApi.Controllers.Base
- {
- [Produces("application/json")]
- [Route("api/GpsCard/[controller]/[action]")]
- [ApiController]
- public abstract class GpsCardControllerBase<T> : DefaultControllerBase<T> where T : GpsCardEntityBase
- {
-
- protected readonly IGpsCardDataAccessor _dataAccessor;
- protected readonly IGpsCardOperatorManager _operatorManager;
- protected readonly IDurableEntityManager _durableManager;
- protected readonly ILogger _logger;
-
- protected GpsCardControllerBase(
- IGpsCardDataAccessor dataAccessor,
- IGpsCardOperatorManager operatorManager,
- IDurableEntityManager durableManager,
- ILogger logger)
- {
- _dataAccessor=dataAccessor;
- _operatorManager = operatorManager;
- _durableManager = durableManager;
- _logger = logger;
- }
-
-
-
-
-
-
-
- [HttpGet]
-
- public async virtual Task<T> GetById([Required] string id, [FromHeader] string requestId)
- {
- AssertModelStateIsValid();
-
-
- return await _dataAccessor.GetByIDAsync<T>(id);
- }
-
-
-
-
-
-
-
- [HttpPost]
-
- public async virtual Task<T?> GetFirst([FromBody] GeneralParam conditions, [FromHeader] string requestId)
- {
- AssertModelStateIsValid();
-
- var parser = new QueryExpressionParser<T>();
- var expression = parser.ParserConditions(conditions.Filters!);
- var list = await _dataAccessor.GetMany(expression).OrderConditions(conditions.OrderBys!).Take(1).ToListAsync();
-
- return list.Count > 0 ? list[0] : null;
- }
-
-
-
-
-
-
-
- [HttpPost]
-
- public async virtual Task<IEnumerable<T>> GetList([FromBody] GeneralParam conditions, [FromHeader] string requestId)
- {
- AssertModelStateIsValid();
-
- var parser = new QueryExpressionParser<T>();
- var expression = parser.ParserConditions(conditions.Filters!);
- var list = await _dataAccessor.GetMany(expression).OrderConditions(conditions.OrderBys!).Take(100).ToListAsync();
- return list;
- }
-
-
-
-
-
-
- [HttpPost]
-
- public virtual void Add([FromBody] T model, [FromHeader] string requestId)
- {
- AssertModelStateIsValid(model);
-
- var item = new OperateCacheItem
- {
- Type = DelayOperateTypeEnum.Insert,
- CreateTime = DateTime.Now,
- EntityType = typeof(T),
- JsonData = JsonConvert.SerializeObject(model)
- };
- _operatorManager.Append(model.GetUniqueKey(), item);
- }
-
-
-
-
-
-
- [HttpPut]
-
- public virtual void Update([FromBody] T model, [FromHeader] string requestId)
- {
- AssertModelStateIsValid(model);
-
- var item = new OperateCacheItem
- {
- Type = DelayOperateTypeEnum.Update,
- CreateTime = DateTime.Now,
- EntityType = typeof(T),
- JsonData = JsonConvert.SerializeObject(model)
- };
- _operatorManager.Append(model.GetRequiredUniqueKey(), item);
- }
-
-
-
-
-
-
- [HttpDelete]
-
- public virtual void Delete([FromBody] T model, [FromHeader] string requestId)
- {
-
-
-
- var item = new OperateCacheItem
- {
- Type = DelayOperateTypeEnum.Delete,
- CreateTime = DateTime.Now,
- EntityType = typeof(T),
- JsonData = JsonConvert.SerializeObject(model),
- };
- _operatorManager.Append(model.GetRequiredUniqueKey(), item);
- }
- }
- }
|