125 lines
4.3 KiB
C#
125 lines
4.3 KiB
C#
using Jaina;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.Filters;
|
|
using Serenity.Data;
|
|
using SqlSugar;
|
|
using System;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using HT.Cloud.Code;
|
|
using HT.Cloud.Service.Event;
|
|
using HT.Cloud.Service.SystemSecurity;
|
|
|
|
namespace HT.Cloud.Web
|
|
{
|
|
[HandlerLogin]
|
|
public abstract class BaseController : Controller
|
|
{
|
|
public LogService _logService { get; set; }
|
|
|
|
/// <summary>
|
|
/// 演示模式过滤
|
|
/// </summary>
|
|
/// <param name="context"></param>
|
|
/// <param name="next"></param>
|
|
/// <returns></returns>
|
|
public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
|
|
{
|
|
Stopwatch sw = new Stopwatch();
|
|
sw.Start();
|
|
|
|
string action = context.RouteData.Values["Action"].ParseToString();
|
|
OperatorModel user = OperatorProvider.Provider.GetCurrent();
|
|
|
|
if (GlobalContext.SystemConfig.Demo)
|
|
{
|
|
if (context.HttpContext.Request.Method.ToUpper() == "POST")
|
|
{
|
|
string[] allowAction = new string[] { "LoginJson", "ExportUserJson", "CodePreviewJson" };
|
|
if (!allowAction.Select(p => p.ToUpper()).Contains(action.ToUpper()))
|
|
{
|
|
string Message = "演示模式,不允许操作";
|
|
context.Result = new JsonResult(new AlwaysResult
|
|
{
|
|
state = ResultType.error.ToString(),
|
|
message = Message
|
|
});
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
var resultContext = await next();
|
|
sw.Stop();
|
|
}
|
|
|
|
public override void OnActionExecuted(ActionExecutedContext context)
|
|
{
|
|
base.OnActionExecuted(context);
|
|
}
|
|
|
|
[HttpGet]
|
|
[HandlerAuthorize]
|
|
public virtual ActionResult Index()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
[HttpGet]
|
|
[HandlerAuthorize]
|
|
public virtual ActionResult Form()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
[HttpGet]
|
|
[HandlerAuthorize]
|
|
public virtual ActionResult Details()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
protected virtual async Task<ActionResult> Success(string message, string className = "", object keyValue = null, DbLogType? logType = null)
|
|
{
|
|
className = string.IsNullOrEmpty(className) ? ReflectionHelper.GetModuleName(isReplace: false, prefix: "Controller") : className;
|
|
var log = await _logService.CreateLog(message, className, keyValue != null && keyValue.ToString() != "0" ? keyValue.ToString() : "", logType);
|
|
await GlobalContext.GetService<IEventPublisher>().PublishAsync(new BaseEventSource("Log:create", log, _logService.currentuser));
|
|
return Content(new AlwaysResult { state = ResultType.success.ToString(), message = message }.ToJson());
|
|
}
|
|
|
|
protected virtual ActionResult Success(string message)
|
|
{
|
|
return Content(new AlwaysResult { state = ResultType.success.ToString(), message = message }.ToJson());
|
|
}
|
|
|
|
protected virtual ActionResult Success<T>(string message, T data)
|
|
{
|
|
return Content(new AlwaysResult<T> { state = ResultType.success.ToString(), message = message, data = data }.ToJson());
|
|
}
|
|
|
|
protected virtual ActionResult Success<T>(int total, T data)
|
|
{
|
|
return Content(new AlwaysResult<T> { state = 0, message = "", count = total, data = data }.ToJson());
|
|
}
|
|
|
|
protected virtual ActionResult DTreeResult(object data)
|
|
{
|
|
return Content(new DTreeResult { status = new StatusInfo { code = 200, message = "操作成功" }, data = data }.ToJson());
|
|
}
|
|
|
|
protected virtual async Task<ActionResult> Error(string message, string className, object keyValue = null, DbLogType? logType = null)
|
|
{
|
|
className = string.IsNullOrEmpty(className) ? ReflectionHelper.GetModuleName(isReplace: false, prefix: "Controller") : className;
|
|
var log = await _logService.CreateLog(message, className, keyValue != null && keyValue.ToString() != "0" ? keyValue.ToString() : "", logType, true);
|
|
await GlobalContext.GetService<ISqlSugarClient>().Ado.RollbackTranAsync();
|
|
await GlobalContext.GetService<ISqlSugarClient>().AsTenant().RollbackTranAsync();
|
|
await GlobalContext.GetService<IEventPublisher>().PublishAsync(new BaseEventSource("Log:create", log, _logService.currentuser));
|
|
return Content(new AlwaysResult { state = ResultType.error.ToString(), message = LogHelper.ExMsgFormat(message) }.ToJson());
|
|
}
|
|
|
|
protected virtual ActionResult Error(string message)
|
|
{
|
|
return Content(new AlwaysResult { state = ResultType.error.ToString(), message = LogHelper.ExMsgFormat(message) }.ToJson());
|
|
}
|
|
}
|
|
} |