Initial_commit_SecMPS_v2

This commit is contained in:
2026-05-15 23:22:48 +08:00
commit 23ea4fe05f
13830 changed files with 298675 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹FormCollectionObjectController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/FormCollectionObject")]
[PermissionTable(Name = "FormCollectionObject")]
public partial class FormCollectionObjectController : ApiBaseController<IFormCollectionObjectService>
{
public FormCollectionObjectController(IFormCollectionObjectService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹FormDesignOptionsController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/FormDesignOptions")]
[PermissionTable(Name = "FormDesignOptions")]
public partial class FormDesignOptionsController : ApiBaseController<IFormDesignOptionsService>
{
public FormDesignOptionsController(IFormDesignOptionsService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("FormCollectionObject",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class FormCollectionObjectController
{
private readonly IFormCollectionObjectService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public FormCollectionObjectController(
IFormCollectionObjectService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,82 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("FormDesignOptions",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
using VolPro.Sys.IRepositories;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using VolPro.Sys.Services;
using VolPro.Core.DbSqlSugar;
using SqlSugar;
namespace VolPro.Sys.Controllers
{
public partial class FormDesignOptionsController
{
private readonly IFormDesignOptionsService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IFormCollectionObjectRepository _formCollectionRepository;
private readonly IFormDesignOptionsRepository _formDesignOptionsRepository;
[ActivatorUtilitiesConstructor]
public FormDesignOptionsController(
IFormDesignOptionsService service,
IHttpContextAccessor httpContextAccessor,
IFormCollectionObjectRepository formCollectionRepository,
IFormDesignOptionsRepository formDesignOptionsRepository
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
_formCollectionRepository = formCollectionRepository;
_formDesignOptionsRepository = formDesignOptionsRepository;
}
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[Route("getFormOptions"), HttpGet]
public async Task<IActionResult> GetFormOptions(Guid id)
{
var options = await _formDesignOptionsRepository.FindAsIQueryable(x => x.FormId == id)
.Select(s => new { s.Title, s.FormOptions })
.FirstOrDefaultAsync();
return Json(new { data = options });
}
/// <summary>
///
/// </summary>
/// <param name="saveModel"></param>
/// <returns></returns>
[Route("submit"), HttpPost]
public IActionResult Submit([FromBody] SaveModel saveModel)
{
var result = FormCollectionObjectService.Instance.Add(saveModel);
return Json(result);
}
/// <summary>
///获取有数据的设计器
/// </summary>
/// <returns></returns>
[Route("getList"), HttpGet]
public IActionResult GetList()
{
// var query = _formCollectionRepository.FindAsIQueryable(x => true);
var data = _formDesignOptionsRepository.FindAsIQueryable(x =>SqlFunc.Subqueryable<FormCollectionObject>().Where(c => c.FormId == x.FormId).Any())
.Select(s => new { s.FormId, s.Title, s.FormOptions })
.ToList();
return Json(data);
}
}
}

View File

@@ -0,0 +1,51 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_ActionLog",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
using VolPro.Core.UserManager;
using System.Linq;
namespace VolPro.Sys.Controllers
{
public partial class Sys_ActionLogController
{
private readonly ISys_ActionLogService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_ActionLogController(
ISys_ActionLogService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
[Route("getTableInfo"), HttpPost]
public IActionResult GetTableInfo(string table)
{
var data = TableColumnContext.Data.Where(x => x.TableName == table).Select(s => new { field = s.ColumnName, title = s.ColumnCnName }).ToList();
var detail = TableColumnContext.TableInfo.Where(x => x.TableTrueName == table).Where(x => !string.IsNullOrEmpty(x.DetailName)).Select(s => new { s.DetailName, s.DetailCnName }).FirstOrDefault();
if (detail != null)
{
var arr = detail.DetailName.Split(",");
if (arr.Length > 0)
{
var detailColumn = TableColumnContext.Data.Where(x => x.TableName == arr[0]).Select(s => new { field = s.ColumnName, title = s.ColumnCnName, hidden = s.IsDisplay != 1 }).ToList();
return JsonNormal(new { data, detail = new { table = arr[0], columns = detailColumn } });
};
}
return JsonNormal(data);
}
}
}

View File

@@ -0,0 +1,53 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_CodeRule",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
using VolPro.Core.UserManager;
using System.Linq;
namespace VolPro.Sys.Controllers
{
public partial class Sys_CodeRuleController
{
private readonly ISys_CodeRuleService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_CodeRuleController(
ISys_CodeRuleService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
[HttpPost, Route("getTableInfo")]
public IActionResult GetTableInfo([FromBody] string[] tables)
{
var data = TableColumnContext.Data.Where(x => tables.Contains(x.TableName))
.Select(x => x.TableName).Distinct().ToList();
return Json(data);
}
[HttpPost, HttpGet, Route("getFields")]
public IActionResult GetFields(string table)
{
var data = TableColumnContext.Data.Where(x => x.TableName == table)
//限制只有字符串字段才能设置编号、日期字段设置排序
.Where(x => new string[] { "string", "date", "datetime" }.Contains(x.ColumnType?.ToLower()))
.Select(x => new { key = x.ColumnName, value = x.ColumnCnName, ColumnType = x.ColumnType.ToLower() })
.ToList();
return Json(data);
}
}
}

View File

@@ -0,0 +1,71 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_Dashboard",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
using VolPro.Core.Filters;
using VolPro.Core.Enums;
namespace VolPro.Sys.Controllers
{
public partial class Sys_DashboardController
{
private readonly ISys_DashboardService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_DashboardController(
ISys_DashboardService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
/// <summary>
/// 编译、预览、查看获取全部配置
/// </summary>
/// <param name="id"></param>
/// <param name="view"></param>
/// <returns></returns>
[HttpGet, HttpPost, Route("getLayoutData")]
public async Task<IActionResult> GetLayoutData(Guid id, bool view)
{
return Json(await Service.GetLayoutData(id, view));
}
/// <summary>
/// 获取每项自定义sql数据
/// </summary>
/// <param name="id"></param>
/// <param name="view"></param>
/// <returns></returns>
[HttpPost, Route("getItemData")]
public async Task<IActionResult> GetItemData([FromBody] List<SearchParameters> filters, Guid id, string itemId, DateTime? date1, DateTime? date2, string filterType)
{
return JsonNormal(await Service.GetItemData(filters, id, itemId, date1, date2, filterType));
}
/// <summary>
/// 编译执行sql
/// </summary>
/// <param name="id"></param>
/// <param name="view"></param>
/// <returns></returns>
[HttpPost, Route("execSql")]
[ApiActionPermission(ActionPermissionOptions.Add | ActionPermissionOptions.Update)]
public async Task<IActionResult> ExecSql([FromBody] Dictionary<string, string> dic)
{
return JsonNormal(await Service.ExecSql(dic));
}
}
}

View File

@@ -0,0 +1,70 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_DbService",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
using VolPro.Core.Filters;
namespace VolPro.Sys.Controllers
{
public partial class Sys_DbServiceController
{
private readonly ISys_DbServiceService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_DbServiceController(
ISys_DbServiceService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
// [ApiActionPermission(ActionRolePermission.SuperAdmin )]
[HttpPost, Route("GetPageData")]
public override ActionResult GetPageData([FromBody] PageDataOptions loadData)
{
return base.GetPageData(loadData);
}
// [ApiActionPermission(ActionRolePermission.SuperAdmin )]
[HttpPost, Route("Update")]
[ApiExplorerSettings(IgnoreApi = true)]
public override ActionResult Update([FromBody] SaveModel saveModel)
{
return base.Update(saveModel);
}
// [ApiActionPermission(ActionRolePermission.SuperAdmin )]
[HttpPost, Route("Add")]
[ApiExplorerSettings(IgnoreApi = true)]
public override ActionResult Add([FromBody] SaveModel saveModel)
{
return base.Add(saveModel);
}
[ApiActionPermission(ActionRolePermission.SuperAdmin| ActionRolePermission.Admin)]
[ApiExplorerSettings(IgnoreApi = true)]
[HttpPost, Route("Export")]
public override ActionResult Export([FromBody] PageDataOptions loadData)
{
return base.Export(loadData);
}
[HttpPost, Route("createDb")]
[ApiExplorerSettings(IgnoreApi = true)]
[ApiActionPermission(ActionRolePermission.SuperAdmin )]
public ActionResult CreateDb(Guid id)
{
return Json(Service.CreateDb(id));
}
}
}

View File

@@ -0,0 +1,135 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_Department",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
using VolPro.Core.Filters;
using VolPro.Core.Enums;
using VolPro.Core.Extensions;
using VolPro.Sys.IRepositories;
using Microsoft.EntityFrameworkCore;
using System.Linq;
using VolPro.Core.ManageUser;
using VolPro.Core.UserManager;
using SqlSugar;
namespace VolPro.Sys.Controllers
{
public partial class Sys_DepartmentController
{
private readonly ISys_DepartmentService _service;//访问业务代码
private readonly ISys_DepartmentRepository _repository;
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_DepartmentController(
ISys_DepartmentService service,
ISys_DepartmentRepository repository,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_repository = repository;
_httpContextAccessor = httpContextAccessor;
}
/// <summary>
/// treetable 获取子节点数据(2021.05.02)
/// </summary>
/// <param name="loadData"></param>
/// <returns></returns>
[ApiActionPermission(ActionPermissionOptions.Search)]
[HttpPost, Route("GetPageData")]
public override ActionResult GetPageData([FromBody] PageDataOptions loadData)
{
//if (loadData.Value.GetInt() == 1)
//{
// return GetTreeTableRootData(loadData).Result;
//}
return base.GetPageData(loadData);
}
/// <summary>
/// treetable 获取子节点数据
/// </summary>
/// <returns></returns>
[HttpPost, Route("getTreeTableRootData")]
[ApiActionPermission(ActionPermissionOptions.Search)]
public async Task<ActionResult> GetTreeTableRootData([FromBody] PageDataOptions options)
{
//页面加载根节点数据条件x => x.ParentId == 0,自己根据需要设置
var query = _repository.FindAsIQueryable(x => true);
if (UserContext.Current.IsSuperAdmin)
{
query = query.Where(x => x.ParentId == null);
}
else
{
var deptIds = UserContext.Current.DeptIds;
var list = DepartmentContext.GetAllDept().Where(c => deptIds.Contains(c.id)).ToList();
deptIds = list.Where(c => !list.Any(x => x.id == c.parentId)).Select(x => x.id).ToList();
query = query.Where(x => deptIds.Contains(x.DepartmentId));
}
// var queryChild = _repository.FindAsIQueryable(x => true);
var rows = await query.TakeOrderByPage(options.Page, options.Rows)
.OrderBy(x => x.DepartmentName).Select(s => new
{
s.DepartmentId,
s.ParentId,
s.DepartmentName,
s.DepartmentCode,
s.Enable,
s.DepartmentType,
s.Remark,
s.CreateDate,
s.Creator,
s.Modifier,
s.ModifyDate,
hasChildren = SqlFunc.Subqueryable<Sys_Department>().Where(x => x.ParentId == s.DepartmentId).Any()
//queryChild.Any(x => x.ParentId == s.DepartmentId)
}).ToListAsync();
return JsonNormal(new { total = await query.CountAsync(), rows });
}
/// <summary>
///treetable 获取子节点数据
/// </summary>
/// <returns></returns>
[HttpPost, Route("getTreeTableChildrenData")]
[ApiActionPermission(ActionPermissionOptions.Search)]
public async Task<ActionResult> GetTreeTableChildrenData(Guid departmentId)
{
//点击节点时,加载子节点数据
// var query = _repository.FindAsIQueryable(x => true);
var rows = await _repository.FindAsIQueryable(x => x.ParentId == departmentId)
.Select(s => new
{
s.DepartmentId,
s.ParentId,
s.DepartmentName,
s.DepartmentCode,
s.Enable,
s.DepartmentType,
s.Remark,
s.CreateDate,
s.Creator,
s.Modifier,
s.ModifyDate,
hasChildren = SqlFunc.Subqueryable<Sys_Department>().Where(x => x.ParentId == s.DepartmentId).Any()
// hasChildren = query.Any(x => x.ParentId == s.DepartmentId)
}).ToListAsync();
return JsonNormal(new { rows });
}
}
}

View File

@@ -0,0 +1,63 @@
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Threading.Tasks;
using VolPro.Core.Controllers.Basic;
using VolPro.Core.Extensions;
using VolPro.Core.Filters;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_DictionaryController
{
[HttpPost, Route("GetVueDictionary")]
[ApiActionPermission()]
public IActionResult GetVueDictionary([FromBody] string[] dicNos)
{
return JsonNormal(Service.GetVueDictionary(dicNos));
}
/// <summary>
/// table加载数据后刷新当前table数据的字典项(适用字典数据量比较大的情况)
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
[HttpPost, Route("getTableDictionary")]
public IActionResult GetTableDictionary([FromBody] Dictionary<string, object[]> keyData)
{
return Json(Service.GetTableDictionary(keyData));
}
/// <summary>
/// 远程搜索
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
[HttpPost, Route("getSearchDictionary")]
public IActionResult GetSearchDictionary(string dicNo, string value)
{
return Json(Service.GetSearchDictionary(dicNo, value));
}
/// <summary>
/// 表单设置为远程查询重置或第一次添加表单时获取字典的key、value
/// </summary>
/// <param name="dicNo"></param>
/// <param name="key"></param>
/// <returns></returns>
[HttpPost, Route("getRemoteDefaultKeyValue")]
public async Task<IActionResult> GetRemoteDefaultKeyValue(string dicNo, string key)
{
return Json(await Service.GetRemoteDefaultKeyValue(dicNo, key));
}
/// <summary>
/// 代码生成器获取所有字典项(超级管理权限)
/// </summary>
/// <returns></returns>
[HttpPost, Route("GetBuilderDictionary")]
// [ApiActionPermission(ActionRolePermission.SuperAdmin)]
public async Task<IActionResult> GetBuilderDictionary()
{
return Json(await Service.GetBuilderDictionary());
}
}
}

View File

@@ -0,0 +1,72 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_DictionaryList",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
using VolPro.Core.Filters;
namespace VolPro.Sys.Controllers
{
public partial class Sys_DictionaryListController
{
private readonly ISys_DictionaryListService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_DictionaryListController(
ISys_DictionaryListService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
/// <summary>
/// 导出明细
/// (重写权限)将子表的权限指向主表权限
/// </summary>
/// <param name="loadData"></param>
/// <returns></returns>
[ApiActionPermission("Sys_Dictionary", Core.Enums.ActionPermissionOptions.Export)]
[ApiExplorerSettings(IgnoreApi = false)]
[HttpPost, Route("Export")]
public override ActionResult Export([FromBody] PageDataOptions loadData)
{
return base.Export(loadData);
}
/// <summary>
/// 导入表数据Excel
/// (重写权限)将子表的权限指向主表权限
/// </summary>
/// <param name="fileInput"></param>
/// <returns></returns>
[HttpPost, Route("Import")]
[ApiActionPermission("Sys_Dictionary", Core.Enums.ActionPermissionOptions.Import)]
[ApiExplorerSettings(IgnoreApi = false)]
public override ActionResult Import(List<IFormFile> fileInput)
{
return base.Import(fileInput);
}
/// <summary>
/// 下载导入Excel模板
/// (重写权限)将子表的权限指向主表权限
/// </summary>
/// <returns></returns>
[HttpGet, Route("DownLoadTemplate")]
[ApiActionPermission("Sys_Dictionary", Core.Enums.ActionPermissionOptions.Import)]
[ApiExplorerSettings(IgnoreApi = false)]
public override ActionResult DownLoadTemplate()
{
return base.DownLoadTemplate();
}
}
}

View File

@@ -0,0 +1,44 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_FormWorkFlowApply",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using VolPro.Core.Filters;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_FormWorkFlowApplyController
{
private readonly ISys_FormWorkFlowApplyService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_FormWorkFlowApplyController(
ISys_FormWorkFlowApplyService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
[ApiActionPermission]
public override ActionResult GetPageData([FromBody] PageDataOptions loadData)
{
return base.GetPageData(loadData);
}
[ApiActionPermission]
public override ActionResult Audit([FromBody] object[] id, int? auditStatus, string auditReason)
{
return base.Audit(id, auditStatus, auditReason);
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_FormWorkFlowApplyData",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_FormWorkFlowApplyDataController
{
private readonly ISys_FormWorkFlowApplyDataService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_FormWorkFlowApplyDataController(
ISys_FormWorkFlowApplyDataService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_FormWorkFlowApplyStep",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_FormWorkFlowApplyStepController
{
private readonly ISys_FormWorkFlowApplyStepService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_FormWorkFlowApplyStepController(
ISys_FormWorkFlowApplyStepService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_FormWorkFlowAuditLog",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_FormWorkFlowAuditLogController
{
private readonly ISys_FormWorkFlowAuditLogService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_FormWorkFlowAuditLogController(
ISys_FormWorkFlowAuditLogService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,135 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_FormWorkFlow",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using VolPro.Core;
using VolPro.Core.BaseProvider;
using VolPro.Core.Extensions;
using VolPro.Core.Filters;
using VolPro.Core.ManageUser;
using VolPro.Core.Tenancy;
using VolPro.Core.WorkFlow;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IRepositories;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_FormWorkFlowController
{
private readonly ISys_FormWorkFlowService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly ISys_FormWorkFlowRepository _formWorkFlowRepository;
[ActivatorUtilitiesConstructor]
public Sys_FormWorkFlowController(
ISys_FormWorkFlowService service,
ISys_FormWorkFlowRepository formWorkFlowRepository,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_formWorkFlowRepository = formWorkFlowRepository;
_httpContextAccessor = httpContextAccessor;
}
/// <summary>
/// 获取工作流程表数据源
/// </summary>
/// <returns></returns>
[HttpGet, Route("getFlowList")]
public async Task<IActionResult> GetFlowList()
{
var list = await _formWorkFlowRepository.FindAsIQueryable(x => x.Enable == 1 && x.LineConfig != "" && x.FormOptions != "")
.WhereIF(WorkFlowContainer.CheckTenancy(), c => c.DbServiceId == UserContext.CurrentServiceId)
.Select(s => new
{
s.FormWorkFlow_Id,
s.Name,
s.Code,
s.FormType
}).ToListAsync();
return Json(list);
}
[ApiActionPermission]
public override IActionResult Upload(IEnumerable<IFormFile> fileInput)
{
return base.Upload(fileInput);
}
[HttpGet, Route("getData")]
public async Task<IActionResult> GetData(Guid id)
{
var data = await _formWorkFlowRepository.FindAsIQueryable(x => x.FormWorkFlow_Id == id)
.FirstAsync();
return Json(data);
}
[HttpPost, Route("submitWorkflow")]
public async Task<IActionResult> SubmitWorkflow([FromBody] Sys_FormWorkFlowApplyData flowApplyData, Guid id)
{
flowApplyData.WorkFlowApplyData_Id = Guid.NewGuid();
var list = await _formWorkFlowRepository.FindAsIQueryable(x => x.FormWorkFlow_Id == id)
.Includes(x => x.Sys_FormWorkFlowStep).ToListAsync();
var user = UserContext.Current.UserInfo;
Guid FormWorkFlowApply_Id = Guid.NewGuid();
var firstNode = list[0].Sys_FormWorkFlowStep.Where(x => x.StepAttrType != StepType.start.ToString()).OrderBy(x => x.OrderId).FirstOrDefault();
var data = list.Select(s => new Sys_FormWorkFlowApply()
{
FormWorkFlowApply_Id = FormWorkFlowApply_Id,
FormWorkFlow_Id = id,
TitleTemplate = string.IsNullOrEmpty(s.TitleTemplate) ? s.Name : s.TitleTemplate,
Name = s.Name,
Code = s.Code,
FormType = s.FormType,
AuditStatus = (int)AuditStatus.,
Config = s.Config,
CreateDate = DateTime.Now,
Creator = user.UserTrueName,
CreateID = user.User_Id,
CurrentStepId = firstNode.StepId,
StepName = firstNode.StepName,
Sys_FormWorkFlowApplyStep = s.Sys_FormWorkFlowStep.Select(x => new Sys_FormWorkFlowApplyStep()
{
WorkFlowApplyStep_Id = Guid.NewGuid(),
FormWorkFlowApply_Id = FormWorkFlowApply_Id,
FormWorkFlow_Id = id,
StepId = x.StepId,
StepName = x.StepName,
StepValue = x.StepValue,
StepAttrType = x.StepAttrType,
OrderId = x.OrderId,
CreateDate = DateTime.Now,
CreateID = user.User_Id,
Creator = user.UserTrueName,
}).ToList(),
Sys_FormWorkFlowApplyData = new List<Sys_FormWorkFlowApplyData>() { flowApplyData }
}).FirstOrDefault();
await _formWorkFlowRepository.SqlSugarClient.InsertNav<Sys_FormWorkFlowApply>(data)
.Include(x => x.Sys_FormWorkFlowApplyStep)
.Include(x=>x.Sys_FormWorkFlowApplyData).ExecuteCommandAsync();
//_formWorkFlowRepository.SqlSugarClient.Insertable(data).AddQueue();
//_formWorkFlowRepository.SqlSugarClient.Insertable(data.Sys_FormWorkFlowApplyStep).AddQueue();
//await _formWorkFlowRepository.SqlSugarClient
// .Insertable(data.Sys_FormWorkFlowApplyData)
// .ExecuteCommandAsync();
return Json(new { status = true, message = "提交成功".Translator() });
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_FormWorkFlowStep",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_FormWorkFlowStepController
{
private readonly ISys_FormWorkFlowStepService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_FormWorkFlowStepController(
ISys_FormWorkFlowStepService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,62 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_Group",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
using VolPro.Core.Filters;
namespace VolPro.Sys.Controllers
{
public partial class Sys_GroupController
{
private readonly ISys_GroupService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_GroupController(
ISys_GroupService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
// [ApiActionPermission(ActionRolePermission.SuperAdmin )]
[HttpPost, Route("GetPageData")]
public override ActionResult GetPageData([FromBody] PageDataOptions loadData)
{
return base.GetPageData(loadData);
}
// [ApiActionPermission(ActionRolePermission.SuperAdmin )]
[HttpPost, Route("Update")]
[ApiExplorerSettings(IgnoreApi = true)]
public override ActionResult Update([FromBody] SaveModel saveModel)
{
return base.Update(saveModel);
}
// [ApiActionPermission(ActionRolePermission.SuperAdmin )]
[HttpPost, Route("Add")]
[ApiExplorerSettings(IgnoreApi = true)]
public override ActionResult Add([FromBody] SaveModel saveModel)
{
return base.Add(saveModel);
}
// [ApiActionPermission(ActionRolePermission.SuperAdmin )]
[ApiExplorerSettings(IgnoreApi = true)]
[HttpPost, Route("Export")]
public override ActionResult Export([FromBody] PageDataOptions loadData)
{
return base.Export(loadData);
}
}
}

View File

@@ -0,0 +1,39 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_Language",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_LanguageController
{
private readonly ISys_LanguageService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_LanguageController(
ISys_LanguageService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
[Route("createLanguagePack"), HttpGet]
public IActionResult CreateLanguagePack()
{
return Json(Service.CreateLanguagePack());
}
}
}

View File

@@ -0,0 +1,88 @@
using Microsoft.AspNetCore.Mvc;
using System.Linq;
using System.Threading.Tasks;
using VolPro.Core.Enums;
using VolPro.Core.Filters;
using VolPro.Core.ManageUser;
using VolPro.Core.UserManager;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
using VolPro.Sys.Repositories;
namespace VolPro.Sys.Controllers
{
public partial class Sys_MenuController
{
/// <summary>
///
/// </summary>
/// <returns></returns>
[HttpGet, HttpPost, Route("getTreeMenu")]
//2019.10.24屏蔽用户查询自己权限菜单
// [ApiActionPermission("Sys_Menu", ActionPermissionOptions.Search)]
public async Task<IActionResult> GetTreeMenu()
{
var service = UserContext.Current.UserDbService.Select(s => new { id = s.DbServiceId, name = s.DbServiceName })
.ToList();
var menu = await _service.GetCurrentMenuActionList();
//var deptIds = UserContext.Current.GetAllChildrenDeptIds();
//var deptList = DepartmentContext.GetAllDept()
// //只显示当前租户下的组织
// .Where(x=>x.dbServiceId==UserContext.CurrentServiceId)
// .Where(x => deptIds.Contains(x.id))
// .Select(s => new
// {
// id = s.key,
// name = s.value,
// s.parentId
// }).ToList();
return Json(new
{
menu = menu,
service = service,
// deptList,
fields = RoleContext.GetCurrentRoleAllAuthFields()
});
}
[HttpPost, Route("getMenu")]
[ApiActionPermission("Sys_Menu", ActionPermissionOptions.Search)]
public async Task<IActionResult> GetMenu()
{
return Json(await _service.GetMenu());
}
[HttpPost, Route("getTreeItem")]
[ApiActionPermission("Sys_Menu", "1", ActionPermissionOptions.Search)]
public async Task<IActionResult> GetTreeItem(int menuId)
{
return Json(await _service.GetTreeItem(menuId));
}
//[ActionPermission("Sys_Menu", "1", ActionPermissionOptions.Add)]
//只有角色ID为1的才能进行保存操作
[HttpPost, Route("save"), ApiActionPermission(ActionRolePermission.SuperAdmin)]
public async Task<ActionResult> Save([FromBody] Sys_Menu menu)
{
return Json(await _service.Save(menu));
}
/// <summary>
/// 限制只能超级管理员才删除菜单
/// </summary>
/// <param name="keys"></param>
/// <returns></returns>
[ApiActionPermission(ActionRolePermission.SuperAdmin)]
[HttpPost, Route("delMenu")]
public async Task<ActionResult> DelMenu(int menuId)
{
return Json(await Service.DelMenu(menuId));
}
}
}

View File

@@ -0,0 +1,184 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_Notification",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
using VolPro.Sys.IRepositories;
using Microsoft.AspNetCore.SignalR;
using VolPro.WebApi.Controllers.Hubs;
using VolPro.Core;
using VolPro.Core.SignalR;
using VolPro.Core.ManageUser;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using VolPro.Core.Enums;
using static Dapper.SqlMapper;
using System.Linq.Expressions;
using VolPro.Core.Extensions;
using VolPro.Core.DbSqlSugar;
namespace VolPro.Sys.Controllers
{
public partial class Sys_NotificationController
{
private readonly ISys_NotificationService _service;//访问业务代码
private readonly ISys_NotificationRepository _repository;//访问业务代码
private readonly ISys_NotificationLogRepository _logRepository;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IMessageService _messageService;
[ActivatorUtilitiesConstructor]
public Sys_NotificationController(
ISys_NotificationService service,
ISys_NotificationRepository repository,
ISys_NotificationLogRepository logRepository,
IHttpContextAccessor httpContextAccessor,
IMessageService messageService
)
: base(service)
{
_messageService = messageService;
_service = service;
_repository = repository;
_logRepository = logRepository;
_httpContextAccessor = httpContextAccessor;
}
[HttpPost, Route("send")]
public IActionResult Send([FromBody] Sys_Notification notification)
{
if (notification.PublishStatus.Value == 0)
{
notification.PublishStatus = 1;
_repository.Update(notification, x => new { x.PublishStatus }, true);
}
if (notification.NotificationType==null)
{
notification.NotificationType = NotificationType..ToString();
}
var data = new MessageChannelData()
{
UserName = null,
Code = notification.NotificationCode,
MessageNotification = new MessageNotification()
{
NotificationType = (NotificationType)Enum.Parse(typeof(NotificationType), notification.NotificationType),
NotificationId = notification.NotificationId,
Title = notification.NotificationTitle,
Creator = UserContext.Current.UserTrueName,
BusinessFunction = notification.BusinessFunction,
LinkType = notification.LinkType,
Content = notification.NotificationContent,
LinkUrl = notification.LinkUrl,
Level = notification.NotificationLevel,
Remark = notification.Remark,
TableKey = notification.TableKey,
TableName = notification.TableName,
}
};
if (notification.TargetObjectValue != null)
{
if (notification.TargetObjectType == ((int)NotificationTarget.).ToString())
{
data.UserIds = notification.TargetObjectValue.Split(',').Select(s => s.GetInt()).ToList();
}
else if (notification.TargetObjectType == ((int)NotificationTarget.).ToString())
{
var roleIds = notification.TargetObjectValue.Split(',').Select(s => s.GetInt()).ToList();
data.UserIds = _repository.DbContext.Set<Sys_UserRole>().Where(x => roleIds.Contains(x.RoleId) && x.Enable == 1)
.Select(s => s.UserId).Distinct().Take(500).ToList();
}
else if (notification.TargetObjectType == ((int)NotificationTarget.).ToString())
{
var deptIds = notification.TargetObjectValue.Split(',').Select(s => s.GetGuid()).ToList();
data.UserIds = _repository.DbContext.Set<Sys_UserDepartment>().Where(x => deptIds.Contains(x.DepartmentId) && x.Enable == 1)
.Select(s => s.UserId).Distinct().Take(500).ToList();
}
else if (notification.TargetObjectType == ((int)NotificationTarget.).ToString())
{
var postIds = notification.TargetObjectValue.Split(',').Select(s => s.GetGuid()).ToList();
data.UserIds = _repository.DbContext.Set<Sys_UserPost>().Where(x => postIds.Contains(x.PostId) && x.Enable == 1)
.Select(s => s.UserId).Distinct().Take(500).ToList();
}
}
_messageService.SendMessage(data);
return Content("发送成功");
}
/// <summary>
/// 获取全部消息
/// </summary>
/// <returns></returns>
[HttpPost, Route("getList")]
public async Task<IActionResult> GetList()
{
return Json(await GetData(x => true, true));
}
/// <summary>
/// 获取未读消息
/// </summary>
/// <returns></returns>
[HttpPost, Route("getUnreadList")]
public async Task<IActionResult> GetUnreadList()
{
return Json(await GetData(x => x.IsRead == 0));
}
/// <summary>
/// 获取全部审批消息
/// </summary>
/// <returns></returns>
[HttpPost, Route("getAuditList")]
public async Task<IActionResult> GetAuditList()
{
return Json(await GetData(x => x.NotificationType == NotificationType..ToString(), true));
}
private async Task<object> GetData(Expression<Func<Sys_NotificationLog, bool>> predicate, bool total = false)
{
//NotificationType.审批
var query = _logRepository.FindAsIQueryable(x => x.ReceiveUserId == UserContext.Current.UserId);
var data = new
{
total = total ? await query.Where(x => x.IsRead == 0).CountAsync() : 0,
auditTotal = total ? await query.Where(x => x.NotificationType == NotificationType..ToString()).CountAsync() : 0,
list = await _logRepository.FindAsIQueryable(x => x.ReceiveUserId == UserContext.Current.UserId).Where(predicate)
.OrderByDescending(x => x.CreateDate).Take(50).Select(s => new
{
id = s.NotificationLogId,
s.IsRead,
s.TableName,
s.TableKey,
s.NotificationTitle,
s.NotificationType,
s.NotificationContent,
s.NotificationLevel,
s.LinkType,
s.LinkUrl,
s.Creator,
s.CreateDate
}).ToListAsync(),
};
return data;
}
[HttpGet, Route("read")]
public async Task<IActionResult> Read(Guid id)
{
var log = new Sys_NotificationLog() {
NotificationLogId= id,
IsRead=1,
ReadDate= DateTime.Now,
};
var result = await DbManger.SysDbContext.Updateable(log).UpdateColumns(it => new { it.IsRead, it.ReadDate }).ExecuteCommandAsync();
return Content("ok");
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_NotificationLog",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_NotificationLogController
{
private readonly ISys_NotificationLogService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_NotificationLogController(
ISys_NotificationLogService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_NotificationTemplate",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_NotificationTemplateController
{
private readonly ISys_NotificationTemplateService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_NotificationTemplateController(
ISys_NotificationTemplateService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_Post",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_PostController
{
private readonly ISys_PostService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_PostController(
ISys_PostService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,102 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_PrintOptions",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
using VolPro.Core.Print;
using VolPro.Sys.IRepositories;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using VolPro.Core.DbSqlSugar;
using VolPro.Core.Configuration;
using VolPro.Core.ManageUser;
using VolPro.Core.Tenancy;
namespace VolPro.Sys.Controllers
{
public partial class Sys_PrintOptionsController
{
private readonly ISys_PrintOptionsService _service;//访问业务代码
private readonly ISys_PrintOptionsRepository _repository;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_PrintOptionsController(
ISys_PrintOptionsService service,
IHttpContextAccessor httpContextAccessor,
ISys_PrintOptionsRepository repository
)
: base(service)
{
_service = service;
_repository = repository;
_httpContextAccessor = httpContextAccessor;
}
/// <summary>
/// 获取数据源
/// </summary>
/// <returns></returns>
[HttpGet, Route("getSelect")]
public IActionResult GetSelect()
{
var data = PrintContainer.GetSelect();
return Json(data);
}
[HttpGet, Route("getPrintFields")]
public IActionResult GetPrintFields(string table)
{
var data = PrintContainer.GetOptions(table);
return Json(data);
}
/// <summary>
/// 获取打印模板
/// </summary>
/// <param name="table"></param>
/// <returns></returns>
[HttpGet, Route("getPrintTemplateName")]
public async Task<IActionResult> GetPrintTemplateName(string table)
{
var data = await _repository.FindAsIQueryable(x => x.TableName == table)
.WhereIF(AppSetting.UseDynamicShareDB, x => x.DbServiceId == UserContext.CurrentServiceId)
.FilterTenancy()
.OrderByDescending(x => x.CreateDate)
.Select(x => new
{
id = x.PrintOptionsId,
name = x.CustomName
}).ToListAsync();
return Json(data);
}
[HttpGet, Route("getPrintDetail")]
public async Task<IActionResult> GetPrintDetail(Guid id)
{
var data = await _repository.FindAsIQueryable(x => x.PrintOptionsId == id)
.FirstOrDefaultAsync();
return Json(data);
}
/// <summary>
/// 获取打印数据
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpPost, Route("getPrintData")]
public async Task<IActionResult> GetPrintData([FromBody] PrintQuery query)
{
var data = await PrintContainer.GetPrintDataAsync(query);
return JsonNormal(data);
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_QuartzLog",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_QuartzLogController
{
private readonly ISys_QuartzLogService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_QuartzLogController(
ISys_QuartzLogService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,98 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_QuartzOptions",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
using VolPro.Core.Filters;
using VolPro.Core.Enums;
using VolPro.Core.Extensions;
namespace VolPro.Sys.Controllers
{
public partial class Sys_QuartzOptionsController
{
private readonly ISys_QuartzOptionsService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_QuartzOptionsController(
ISys_QuartzOptionsService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
/// <summary>
/// api加上属性 [ApiTask]
/// </summary>
/// <returns></returns>
[ApiTask]
[HttpGet, HttpPost, Route("test")]
public IActionResult Test([FromBody] Dictionary<string,string> dic,string val)
{
Console.WriteLine(dic?.Serialize());
return Content(DateTime.Now.ToString("yyyy-MM-dd HH:mm:sss"));
}
/// <summary>
/// api加上属性 [ApiTask]
/// </summary>
/// <returns></returns>
[ApiTask]
[HttpGet, HttpPost, Route("taskTest")]
public IActionResult TaskTest()
{
return Content(DateTime.Now.ToString("yyyy-MM-dd HH:mm:sss"));
}
/// <summary>
/// 手动执行一次
/// </summary>
/// <param name="taskOptions"></param>
/// <returns></returns>
[Route("run"), HttpPost]
[ActionPermission(ActionPermissionOptions.Update)]
public async Task<object> Run([FromBody] Sys_QuartzOptions taskOptions)
{
return await Service.Run(taskOptions);
}
/// <summary>
/// 开启任务
/// </summary>
/// <param name="schedulerFactory"></param>
/// <param name="taskOptions"></param>
/// <returns></returns>
[Route("start"), HttpPost]
[ActionPermission(ActionPermissionOptions.Update)]
public async Task<object> Start([FromBody] Sys_QuartzOptions taskOptions)
{
return await Service.Start(taskOptions);
}
/// <summary>
/// 暂停任务
/// </summary>
/// <param name="schedulerFactory"></param>
/// <param name="taskOptions"></param>
/// <returns></returns>
[Route("pause"), HttpPost]
[ActionPermission(ActionPermissionOptions.Update)]
public async Task<object> Pause([FromBody] Sys_QuartzOptions taskOptions)
{
return await Service.Pause(taskOptions);
}
}
}

View File

@@ -0,0 +1,74 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_Region",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
using VolPro.Sys.IRepositories;
using System.Linq;
using Microsoft.EntityFrameworkCore;
namespace VolPro.Sys.Controllers
{
public partial class Sys_RegionController
{
private readonly ISys_RegionService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly ISys_RegionRepository _regionRepository;
[ActivatorUtilitiesConstructor]
public Sys_RegionController(
ISys_RegionService service,
IHttpContextAccessor httpContextAccessor,
ISys_RegionRepository regionRepository
)
: base(service)
{
_service = service;
_regionRepository = regionRepository;
_httpContextAccessor = httpContextAccessor;
}
/// <summary>
/// 获取省、市下面的所有数据
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet, Route("getList")]
public async Task<IActionResult> GetList(int code)
{
return Json(await _regionRepository.FindAsIQueryable(x => x.parentId == code)
.Select(s => new
{
key = s.code,
value = s.name
}).ToListAsync());
}
/// <summary>
/// 获取地图省、市数据
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet, Route("getMapList")]
public async Task<IActionResult> GetMapList()
{
return Json(await _regionRepository.FindAsIQueryable(x => x.level == 1 || x.level == 2)
.Select(s => new
{
id = s.code,
s.level,
s.parentId,
s.name,
s.Lat,
s.Lng
}).ToListAsync());
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_ReportOptions",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_ReportOptionsController
{
private readonly ISys_ReportOptionsService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_ReportOptionsController(
ISys_ReportOptionsService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,315 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using SqlSugar;
using StackExchange.Redis;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using VolPro.Core;
using VolPro.Core.Configuration;
using VolPro.Core.Controllers.Basic;
using VolPro.Core.DbSqlSugar;
using VolPro.Core.Enums;
using VolPro.Core.Extensions;
using VolPro.Core.Filters;
using VolPro.Core.ManageUser;
using VolPro.Core.UserManager;
using VolPro.Core.Utilities;
using VolPro.Entity.AttributeManager;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IRepositories;
using VolPro.Sys.IServices;
using VolPro.Sys.Repositories;
using VolPro.Sys.Services;
namespace VolPro.Sys.Controllers
{
[Route("api/role")]
public partial class Sys_RoleController
{
private readonly ISys_RoleService _service;//访问业务代码
private readonly ISys_RoleRepository _repository;
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_RoleController(
ISys_RoleService service,
ISys_RoleRepository repository,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_repository = repository;
_httpContextAccessor = httpContextAccessor;
}
[HttpPost, Route("getCurrentTreePermission")]
[ApiActionPermission(ActionPermissionOptions.Search)]
public async Task<IActionResult> GetCurrentTreePermission()
{
return Json(await Service.GetCurrentTreePermission());
}
[HttpPost, Route("getUserTreePermission")]
[ApiActionPermission(ActionPermissionOptions.Search)]
public async Task<IActionResult> GetUserTreePermission(int roleId)
{
return Json(await Service.GetUserTreePermission(new int[] { roleId }));
}
[HttpPost, Route("savePermission")]
[ApiActionPermission(ActionPermissionOptions.Update)]
public async Task<IActionResult> SavePermission([FromBody] List<UserPermissions> userPermissions, int roleId)
{
return Json(await Service.SavePermission(userPermissions, roleId));
}
/// <summary>
/// 获取当前角色下的所有角色
/// </summary>
/// <returns></returns>
[HttpPost, Route("getUserChildRoles")]
[ApiActionPermission(ActionPermissionOptions.Search)]
public IActionResult GetUserChildRoles()
{
var roleIds = UserContext.Current.RoleIds;
var data = RoleContext.GetAllChildren(UserContext.Current.RoleIds);
if (UserContext.Current.IsSuperAdmin)
{
return Json(WebResponseContent.Instance.OK(null, data));
}
//不是超级管理,将自己的角色查出来,在树形菜单上作为根节点
var self = Sys_RoleRepository.Instance.FindAsIQueryable(x => roleIds.Contains(x.Role_Id))
.Select(s => new RoleNodes()
{
Id = s.Role_Id,
ParentId = 0,//将自己的角色作为root节点
RoleName = s.RoleName
}).ToList();
data.AddRange(self);
return Json(WebResponseContent.Instance.OK(null, data));
}
/// <summary>
/// treetable 获取子节点数据(2021.05.02)
/// </summary>
/// <param name="loadData"></param>
/// <returns></returns>
[ApiActionPermission(ActionPermissionOptions.Search)]
[HttpPost, Route("GetPageData")]
public override ActionResult GetPageData([FromBody] PageDataOptions loadData)
{
//获取根节点数据(对应Sys_Role1.js中searchBefore方法)
//if (loadData.Value.GetInt() == 1)
//{
// return GetTreeTableRootData(loadData).Result;
//}
return base.GetPageData(loadData);
}
/// <summary>
/// treetable 获取子节点数据(2021.05.02)
/// </summary>
/// <returns></returns>
[HttpPost, Route("getTreeTableRootData")]
[ApiActionPermission(ActionPermissionOptions.Search)]
public async Task<ActionResult> GetTreeTableRootData([FromBody] PageDataOptions options)
{
//页面加载根节点数据条件x => x.ParentId == 0,自己根据需要设置
//页面加载根节点数据条件x => x.ParentId == 0,自己根据需要设置
var dbServiceId = UserContext.CurrentServiceId;
var query = _repository.FindAsIQueryable(x => true);
if (UserContext.Current.IsSuperAdmin)
{
query = query.Where(x => x.ParentId == 0 || x.Role_Id == 1);
}
else
{
var roleIds = UserContext.Current.RoleIds;
var roleList = RoleContext.GetRoles(x => roleIds.Contains(x.Id)).ToList();
roleIds = roleList.Where(x => !roleList.Any(c => x.ParentId == c.Id)).Select(c => c.Id).ToArray();
query = query.Where(x => roleIds.Contains(x.Role_Id));
//显示租户下的数据
//if (AppSetting.UseDynamicShareDB)
//{
// query = query.Where(x => x.DbServiceId == dbServiceId);
//}
}
int count = 0;
var rows = await query.Select(s => new
{
s.Role_Id,
s.ParentId,
s.RoleName,
s.DeptName,
s.Dept_Id,
s.Enable,
s.DbServiceId,
s.CreateDate,
s.Creator,
s.Modifier,
s.ModifyDate,
s.OrderNo,
s.DatAuth,
hasChildren = SqlFunc.Subqueryable<Sys_Role>().Where(x => x.ParentId == s.Role_Id).Any()
})
.ToPageListAsync(options.Page, options.Rows, count);
return JsonNormal(new { total = count, rows });
}
/// <summary>
///treetable 获取子节点数据(2021.05.02)
/// </summary>
/// <returns></returns>
[HttpPost, Route("getTreeTableChildrenData")]
[ApiActionPermission(ActionPermissionOptions.Search)]
public async Task<ActionResult> GetTreeTableChildrenData(int roleId)
{
if (!UserContext.Current.IsSuperAdmin && !UserContext.Current.RoleIds.Contains(roleId) && !RoleContext.GetAllChildrenIds(UserContext.Current.RoleIds).Any(x => x == roleId))
{
return JsonNormal(new { rows = new object[] { } });
}
//点击节点时,加载子节点数据
var roleRepository = Sys_RoleRepository.Instance.FindAsIQueryable(x => true);
var query = roleRepository.Where(x => x.ParentId == roleId);
//if (AppSetting.UseDynamicShareDB)
//{
// query = query.Where(x => x.DbServiceId == UserContext.CurrentServiceId);
//}
var rows = await query
.Select(s => new
{
s.Role_Id,
s.ParentId,
s.RoleName,
s.DeptName,
s.Dept_Id,
s.Enable,
s.DbServiceId,
s.CreateDate,
s.Creator,
s.Modifier,
s.ModifyDate,
s.OrderNo,
s.DatAuth,
hasChildren = SqlFunc.Subqueryable<Sys_Role>().Where(x => x.ParentId == s.Role_Id).Any()
}).ToListAsync();
return JsonNormal(new { rows });
}
[HttpGet, Route("getAuthFields")]
[ApiActionPermission(ActionPermissionOptions.Search)]
public async Task<ActionResult> GetAuthFields(int menuId, int roleId)
{
string table = Sys_MenuService.Instance.GetCurrentMenuList().Where(x => x.Menu_Id == menuId)
.Select(s => s.TableName).FirstOrDefault();
var fields = await _repository.DbContext.Set<Sys_TableColumn>()
.Where(x => x.TableName == table && x.IsDisplay == 1)
.Select(s => new { field = s.ColumnName, name = s.ColumnCnName })
.ToListAsync();
if (!UserContext.Current.IsSuperAdmin)
{
//获取用户当前拥有的字典
var roleIds = UserContext.Current.RoleIds;
var userFields = ((await _repository.DbContext.Set<Sys_RoleFields>()
.Where(x => roleIds.Contains(x.RoleId) && x.TableName == table)
.Select(s => s.AuthFields).FirstOrDefaultAsync()))?.Split(",") ?? new string[] { };
if (userFields.Count() > 0)
{
fields = fields.Where(x => userFields.Contains(x.field)).ToList();
}
}
var roleFields = ((await _repository.DbContext.Set<Sys_RoleFields>()
.Where(x => x.RoleId == roleId && x.TableName == table)
.Select(s => s.AuthFields).FirstOrDefaultAsync()) ?? "")
.Split(",");
return JsonNormal(new
{
fields,
roleFields
});
}
[HttpPost, Route("saveAuthFields")]
[ApiActionPermission(ActionPermissionOptions.Update)]
public async Task<ActionResult> SaveAuthFields([FromBody] string[] fields, int menuId, int roleId)
{
string table = Sys_MenuService.Instance.GetCurrentMenuList().Where(x => x.Menu_Id == menuId)
.Select(s => s.TableName).FirstOrDefault();
if (string.IsNullOrEmpty(table) || table == "." || table == "/")
{
return Json("保存成功".Translator());
}
string authFields = fields == null ? "" : string.Join(",", fields);
var roleFields = await _repository.DbContext.Set<Sys_RoleFields>()
.Where(x => x.RoleId == roleId && x.TableName == table)
.FirstOrDefaultAsync();
if (roleFields == null)
{
roleFields = new Sys_RoleFields()
{
RoleId = roleId,
TableName = table,
Enable = 1,
AuthFields = authFields
};
_repository.DbContext.Add(roleFields.SetCreateDefaultVal());
}
else
{
roleFields.AuthFields = authFields;
_repository.Update<Sys_RoleFields>(roleFields.SetModifyDefaultVal(), x => new { x.AuthFields });
}
_repository.SaveChanges();
RoleContext.UpdateRoleFields(roleFields);
return Json("保存成功".Translator());
}
/// <summary>
/// 获取自定义数据权限字段
/// </summary>
/// <param name="menuId"></param>
/// <param name="roleId"></param>
/// <returns></returns>
[HttpPost, Route("getFields")]
public async Task<IActionResult> GetFields(int menuId, int roleId)
{
string table = Sys_MenuService.Instance.GetCurrentMenuList().Where(x => x.Menu_Id == menuId)
.Select(s => s.TableName).FirstOrDefault();
var data = await _repository.DbContext.Set<Sys_TableColumn>().Where(x => x.TableName == table)
.OrderByDescending(x => x.OrderNo)
.Select(s => new { field = s.ColumnName, title = s.ColumnCnName, key = s.DropNo, type = s.EditType ?? s.ColumnType })
.ToListAsync();
var authField = typeof(UserInfo).GetProperties()
.Where(s => s.GetTypeCustomValue<UserAuthFieldAttribute>(x => x.Name) != null)
.Select(s => new
{
field = s.Name,
name = s.GetTypeCustomValue<UserAuthFieldAttribute>(x => x.Name)
}).ToList();
return Json(new { data, authField });
}
}
}

View File

@@ -0,0 +1,309 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
using VolPro.Core.CacheManager;
using VolPro.Core.Configuration;
using VolPro.Core.Controllers.Basic;
using VolPro.Core.DBManager;
using VolPro.Core.DbSqlSugar;
using VolPro.Core.EFDbContext;
using VolPro.Core.Enums;
using VolPro.Core.Extensions;
using VolPro.Core.Filters;
using VolPro.Core.Infrastructure;
using VolPro.Core.ManageUser;
using VolPro.Core.ObjectActionValidator;
using VolPro.Core.Services;
using VolPro.Core.SignalR;
using VolPro.Core.Utilities;
using VolPro.Entity.AttributeManager;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IRepositories;
using VolPro.Sys.IServices;
using VolPro.Sys.Repositories;
using VolPro.WebApi.Controllers.Hubs;
namespace VolPro.Sys.Controllers
{
[Route("api/User")]
public partial class Sys_UserController
{
private ISys_UserRepository _userRepository;
private ICacheService _cache;
[ActivatorUtilitiesConstructor]
public Sys_UserController(
ISys_UserService userService,
ISys_UserRepository userRepository,
ICacheService cahce
)
: base(userService)
{
_userRepository = userRepository;
_cache = cahce;
}
[Route("GetUserNumber"), HttpPost]
[AllowAnonymous]
public int GetUserNumber()
{
return Service.GetUserNumber();
}
[Route("GetUserList"), HttpPost]
[AllowAnonymous]
public List<Sys_User> GetUserList()
{
return Service.GetUserList();
}
[HttpPost, HttpGet, Route("login"), AllowAnonymous]
[ObjectModelValidatorFilter(ValidatorModel.Login)]
public async Task<IActionResult> Login([FromBody] LoginInfo loginInfo)
{
return Json(await Service.Login(loginInfo));
}
private readonly ConcurrentDictionary<int, object> _lockCurrent = new ConcurrentDictionary<int, object>();
[HttpPost, Route("replaceToken")]
public IActionResult ReplaceToken()
{
WebResponseContent responseContent = new WebResponseContent();
string error = "";
string key = $"rp:Token:{UserContext.Current.UserId}";
UserInfo userInfo = null;
try
{
//如果5秒内替换过token,直接使用最新的token(防止一个页面多个并发请求同时替换token导致token错位)
if (_cache.Exists(key))
{
return Json(responseContent.OK(null, _cache.Get(key)));
}
var _obj = _lockCurrent.GetOrAdd(UserContext.Current.UserId, new object() { });
lock (_obj)
{
if (_cache.Exists(key))
{
return Json(responseContent.OK(null, _cache.Get(key)));
}
string requestToken = HttpContext.Request.Headers[AppSetting.TokenHeaderName];
requestToken = requestToken?.Replace("Bearer ", "");
if (JwtHelper.IsExp(requestToken)) return Json(responseContent.Error("Token已过期!"));
int userId = UserContext.Current.UserId;
userInfo = _userRepository.FindAsIQueryable(x => x.User_Id == userId).Select(
s => new UserInfo()
{
User_Id = userId,
UserName = s.UserName,
UserTrueName = s.UserTrueName,
Role_Id = s.Role_Id ?? 0,
// RoleName = s.RoleName
}).FirstOrDefault();
if (userInfo == null) return Json(responseContent.Error("未查到用户信息!"));
int expir = UserContext.MenuType == 1 ? 43200 : AppSetting.ExpMinutes;
string token = JwtHelper.IssueJwt(userInfo, expir);
//移除当前缓存
_cache.Remove(userId.GetUserIdKey());
//只更新的token字段
_userRepository.Update(new Sys_User() { User_Id = userId, Token = token }, x => x.Token, true);
//添加一个5秒缓存
_cache.Add(key, token, 5);
string accessToken = null;
if (AppSetting.FileAuth)
{
expir = expir + 30;
string dt = DateTime.Now.AddMinutes(expir).ToString("yyyy-MM-dd HH:mm");
accessToken = $"{userId}_{dt}".EncryptDES(AppSetting.Secret.User);
_cache.Add(accessToken, dt, expir);
responseContent.OK(null, new { accessToken, token });
}
else
{
responseContent.OK(null, token);
}
}
}
catch (Exception ex)
{
error = ex.Message + ex.StackTrace;
responseContent.Error("token替换异常");
}
finally
{
_lockCurrent.TryRemove(UserContext.Current.UserId, out object val);
string _message = $"用户{userInfo?.User_Id}_{userInfo?.UserTrueName},({(responseContent.Status ? "token替换成功" : "token替换失败")})";
Logger.Info(LoggerType.ReplaceToeken, _message, null, error);
}
return Json(responseContent);
}
[HttpPost, Route("modifyPwd")]
[ApiActionPermission]
public async Task<IActionResult> ModifyPwd([FromBody] Dictionary<string, string> info)
{
return Json(await Service.ModifyPwd(info?["oldPwd"], info?["newPwd"]));
}
[HttpPost, Route("getCurrentUserInfo")]
public async Task<IActionResult> GetCurrentUserInfo()
{
return Json(await Service.GetCurrentUserInfo());
}
//只能超级管理员才能修改密码
//2020.08.01增加修改密码功能
//[HttpPost, Route("modifyUserPwd"), ApiActionPermission(ActionRolePermission.SuperAdmin)]
[HttpPost, Route("modifyUserPwd"), ApiActionPermission(ActionPermissionOptions.Add | ActionPermissionOptions.Update)]
public IActionResult ModifyUserPwd([FromBody] LoginInfo loginInfo)
{
string userName = loginInfo?.UserName;
string password = loginInfo?.Password;
WebResponseContent webResponse = new WebResponseContent();
if (string.IsNullOrEmpty(password) || string.IsNullOrEmpty(userName))
{
return Json(webResponse.Error("参数不完整"));
}
if (password.Length < 6) return Json(webResponse.Error("密码长度不能少于6位"));
ISys_UserRepository repository = Sys_UserRepository.Instance;
Sys_User user = repository.FindFirst(x => x.UserName == userName);
if (user == null)
{
return Json(webResponse.Error("用户不存在"));
}
user.UserPwd = password.EncryptDES(AppSetting.Secret.User);
repository.Update(user, x => new { x.UserPwd }, true);
//如果用户在线,强制下线
UserContext.Current.LogOut(user.User_Id);
if (userName != UserContext.Current.UserName)
{
var message = HttpContext.GetService<IMessageService>();
message.SendMessage(new MessageChannelData()
{
UserName = new List<string>() { userName },
Code = "-1",
MessageNotification = new MessageNotification()
{
Content = "密码已被修改,即将退出登录"
}
});
//通知下线
message.Remove(user.UserName);
}
return Json(webResponse.OK("密码修改成功"));
}
/// <summary>
/// 2020.06.15增加登陆验证码
/// </summary>
/// <returns></returns>
[HttpGet, Route("getVierificationCode"), AllowAnonymous]
public IActionResult GetVierificationCode()
{
string code = VierificationCode.RandomText();
var data = new
{
img = VierificationCode.CreateBase64Imgage(code),
uuid = Guid.NewGuid()
};
HttpContext.GetService<IMemoryCache>().Set(data.uuid.ToString(), code, new TimeSpan(0, 5, 0));
return Json(data);
}
[ApiActionPermission()]
public override IActionResult Upload(IEnumerable<IFormFile> fileInput)
{
return base.Upload(fileInput);
}
[HttpPost, Route("updateUserInfo")]
public IActionResult UpdateUserInfo([FromBody] Sys_User user)
{
user.User_Id = UserContext.Current.UserId;
_userRepository.Update(user, x => new { x.UserTrueName, x.Gender, x.Remark, x.HeadImageUrl }, true);
return Content("修改成功");
}
public override ActionResult GetPageData([FromBody] PageDataOptions loadData)
{
PageGridData<Sys_User> gridData = Service.GetPageData(loadData);
//是否使用用户数据权限
gridData.extra = AppSetting.UserAuth;
//设置用户是否在线
var message = HttpContext.GetService<IMessageService>();
foreach (var item in gridData.rows)
{
item.IsOnline = message.GetOnline(item.UserName);
}
return JsonNormal(gridData);
}
[HttpPost, Route("getUserAuth"), ApiActionPermission(ActionPermissionOptions.Add | ActionPermissionOptions.Update)]
public async Task<IActionResult> GetUserAuth(int userId)
{
var data = await _userRepository.DbContext.Set<Sys_UserAuth>().Where(x => x.UserId == userId && x.AuthUserIds != "")
.Select(s => new { id = s.MenuId, userIds = s.AuthUserIds })
.ToListAsync();
var userIds = data.Select(s => s.userIds.Split(",")).SelectMany(x => x).Select(s => s.GetInt()).Distinct();
var users = await _userRepository.FindAsIQueryable(x => userIds.Contains(x.User_Id))
.Select(s => new { userId = s.User_Id, userName = s.UserTrueName })
.ToListAsync();
return Json(new { data, users });
}
[HttpPost, Route("saveUserAuth"), ApiActionPermission(ActionPermissionOptions.Add | ActionPermissionOptions.Update)]
public async Task<IActionResult> SaveUserAuth([FromBody] List<Sys_UserAuth> userAuths, int userId)
{
if (userAuths == null || userId < 0)
{
return Content("参数不完整");
}
var query = _userRepository.DbContext.Set<Sys_UserAuth>();
var data = await query.Where(x => x.UserId == userId).ToListAsync();
List<Sys_UserAuth> add = new List<Sys_UserAuth>();
List<Sys_UserAuth> update = new List<Sys_UserAuth>();
foreach (var item in userAuths)
{
var auth = data.Where(x => item.MenuId == x.MenuId).FirstOrDefault();
if (auth == null)
{
if (!string.IsNullOrEmpty(item.AuthUserIds))
{
item.UserId = userId;
add.Add(item);
}
}
else
{
item.Id = auth.Id;
update.Add(item);
}
}
_userRepository.AddRange(add);
_userRepository.UpdateRange(update, x => new { x.AuthUserIds }, true);
UserContext.Current.RemoveUserAuthData(userId);
return Content("保存成功");
}
}
}

View File

@@ -0,0 +1,629 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_WorkFlow",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
using VolPro.Core.WorkFlow;
using VolPro.Sys.IRepositories;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using VolPro.Core.ManageUser;
using VolPro.Core.Services;
using VolPro.Core.Extensions;
using VolPro.Core.Infrastructure;
using VolPro.Core.UserManager;
using VolPro.Core.DbSqlSugar;
using System.Linq.Expressions;
using VolPro.Core.Configuration;
using SqlSugar;
using VolPro.Core.Filters;
namespace VolPro.Sys.Controllers
{
public partial class Sys_WorkFlowController
{
private readonly ISys_WorkFlowService _service;//访问业务代码
private readonly ISys_UserRepository _userRepository;
private readonly ISys_RoleRepository _roleRepository;
private readonly ISys_DepartmentRepository _departmentRepository;
private readonly ISys_WorkFlowRepository _workFlowRepository;
private readonly ISys_WorkFlowTableRepository _workFlowTableRepository;
private readonly ISys_WorkFlowTableStepRepository _workFlowTableStepRepository;
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_WorkFlowController(
ISys_WorkFlowService service,
ISys_UserRepository userRepository,
ISys_RoleRepository roleRepository,
ISys_WorkFlowRepository workFlowRepository,
ISys_WorkFlowTableRepository workFlowTableRepository,
IHttpContextAccessor httpContextAccessor,
ISys_DepartmentRepository departmentRepository,
ISys_WorkFlowTableStepRepository workFlowTableStepRepository
)
: base(service)
{
_service = service;
_userRepository = userRepository;
_roleRepository = roleRepository;
_departmentRepository = departmentRepository;
_workFlowRepository = workFlowRepository;
_workFlowTableRepository = workFlowTableRepository;
_workFlowTableStepRepository = workFlowTableStepRepository;
_httpContextAccessor = httpContextAccessor;
}
/// <summary>
/// 获取工作流程表数据源
/// </summary>
/// <returns></returns>
[HttpGet, Route("getTableInfo")]
public IActionResult GetTableInfo()
{
return Json(WorkFlowContainer.GetDic());
}
/// <summary>
/// 获取流程节点数据源(用户与角色)
/// </summary>
/// <returns></returns>
[HttpGet, Route("getNodeDic")]
public async Task<IActionResult> GetNodeDic()
{
var userQuery = _userRepository.FindAsIQueryable(x => true);
var roleQuery = _roleRepository.FindAsIQueryable(x => true);
var deptQuery = _departmentRepository.FindAsIQueryable(x => true);
//2024.02.05租户数据区分
if (AppSetting.UseDynamicShareDB)
{
Guid serviceId = UserContext.CurrentServiceId;
var roleIds = RoleContext.GetAllRoleId().Where(x => x.DbServiceId == serviceId)
.Select(s => s.Id).ToList();
userQuery = userQuery.Where(u => SqlFunc.Subqueryable<Sys_UserRole>().Where(c => c.UserId == u.User_Id && c.Enable == 1 && roleIds.Contains(c.RoleId)).Any());
roleQuery = roleQuery.Where(c => c.DbServiceId == serviceId);
deptQuery = deptQuery.Where(x => x.DbServiceId == serviceId);
}
var data = new
{
users = await userQuery.Select(s => new { key = s.User_Id, value = s.UserTrueName }).Take(5000).ToListAsync(),
roles = await roleQuery.Select(s => new { key = s.Role_Id, value = s.RoleName }).ToListAsync(),
dept = await deptQuery.Select(s => new { key = s.DepartmentId, value = s.DepartmentName }).ToListAsync(),
};
return Json(data);
}
private async Task<List<Sys_WorkFlowTableAuditLog>> GetLogAsync(Expression<Func<Sys_WorkFlowTableAuditLog, bool>> expression)
{
var logs = await _workFlowTableRepository.DbContext.Set<Sys_WorkFlowTableAuditLog>()
.Where(expression)//(x => x.WorkFlowTable_Id == flow.WorkFlowTable_Id)
.OrderByDescending(x => x.CreateDate)
.ToListAsync();
return logs;
}
/// <summary>
/// 获取单据的审批流程进度
/// </summary>
/// <param name="tableName"></param>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost, Route("getSteps")]
public async Task<IActionResult> GetSteps([FromBody] List<string> ids, string tableName, bool isAnti)
{
if (ids == null || ids.Count == 0)
{
return Json(new { status = false, message = "请选择数据" });
}
var flows = await _workFlowTableRepository.FindAsIQueryable(x => x.WorkTable == tableName && ids.Contains(x.WorkTableKey))
.WhereIF(WorkFlowContainer.CheckTenancy(), c => c.DbServiceId == UserContext.CurrentServiceId)
.Includes(x => x.Sys_WorkFlowTableStep)
.ToListAsync();
var auditDic = DictionaryManager.GetDictionary("audit")?.Sys_DictionaryList?.Select(s => new { key = s.DicValue, value = s.DicName });
List<Sys_WorkFlowTableAuditLog> logs;
//不在审核中的数据
if (flows.Count == 0)
{
logs = await GetLogAsync(x => x.StepId == ids[0] && x.StepName == tableName);
return Json(new { status = true, logs, auditDic });
}
if (flows.Count > 1 || flows.Count != ids.Count)
{
return Json(new { status = false, message = "只能选择一条数据进行审核" });
}
if (ids.Count > 1 && isAnti)
{
return Json(new { status = false, message = "只能选择一行数据反审" });
}
var flow = flows[0];
var user = UserContext.Current.UserInfo;
Expression<Func<Sys_WorkFlowTableAuditLog, bool>> expression;
//if (isAnti)
//{
// expression = x => x.StepId == ids[0] && x.StepName == tableName;
//}
//else
//{
expression = x => x.WorkFlowTable_Id == flow.WorkFlowTable_Id;
//}
logs = await GetLogAsync(expression);
//var log = await _workFlowTableRepository.DbContext.Set<Sys_WorkFlowTableAuditLog>()
// .Where(expression)//(x => x.WorkFlowTable_Id == flow.WorkFlowTable_Id)
// .OrderBy(x => x.CreateDate)
// .ToListAsync();
// 获取按用户审核的id如果多用户要进行分割
// 转换成int数组
//var auditUsers = flow.Sys_WorkFlowTableStep
// .Where(x => x.StepType == (int)AuditType.用户审批 && x.StepValue != null)
// .SelectMany(x => x.StepValue.Split(",")).Select(int.Parse).ToArray();
//未审批时的用户信息
var unauditSteps = flow.Sys_WorkFlowTableStep
.Where(x => (x.AuditId == null || x.AuditId == 0) && x.StepType == (int)AuditType. && x.StepValue != null)
.Select(s => new { s.Sys_WorkFlowTableStep_Id, userIds = s.StepValue.Split(",").Select(s => s.GetInt()) }
).ToList();
var unauditUsers = unauditSteps.SelectMany(c => c.userIds).ToList();
List<(int userId, string userName)> userInfo = new List<(int userId, string userName)>();
if (unauditUsers.Count > 0)
{
userInfo = (await _userRepository.FindAsIQueryable(x => unauditUsers.Contains(x.User_Id))
.Select(u => new { u.User_Id, u.UserTrueName }).ToListAsync())
.Select(c => (c.User_Id, c.UserTrueName)).ToList();
}
int currentOrderId = flow.Sys_WorkFlowTableStep.Where(x => x.StepId == flow.CurrentStepId)
.Select(s => s.OrderId).FirstOrDefault() ?? 0;
string GetAuditUsers(int? StepType, string StepValue, Guid Sys_WorkFlowTableStep_Id)
{
if (StepType == (int)AuditType.)
{
int roleId = StepValue.GetInt();
return RoleContext.GetAllRoleId().Where(c => c.Id == roleId).Select(c => c.RoleName).FirstOrDefault();
}
//按部门审批
if (StepType == (int)AuditType.)
{
var deptId = StepValue.GetGuid();
return DepartmentContext.GetAllDept().Where(c => c.id == deptId).Select(c => c.value).FirstOrDefault();
}
var userIds = unauditSteps.Where(c => c.Sys_WorkFlowTableStep_Id == Sys_WorkFlowTableStep_Id)
.Select(c => c.userIds).FirstOrDefault();
if (userIds == null)
{
return "";
}
return string.Join("/", userInfo.Where(c => userIds.Contains(c.userId)).Select(s => s.userName));
}
bool CheckCurrentUser(Sys_WorkFlowTableStep c)
{
bool b = (c.AuditStatus == null || c.AuditStatus == (int)AuditStatus. || c.AuditStatus == (int)AuditStatus.)
&& c.StepId == flow.CurrentStepId && GetAuditStepValue(c.StepType, c.StepValue);
return b;
}
string currentUserStepId = null;
string currentSetpId = null;
object GetStep(string stepId)
{
var list = flow.Sys_WorkFlowTableStep.Where(x => x.StepId == stepId)
.OrderByDescending(x => x.AuditDate)
.Select(c => new
{
c.WorkFlowTable_Id,
c.Sys_WorkFlowTableStep_Id,
c.AuditId,
c.StepType,
Auditor = c.Auditor ?? GetAuditUsers(c.StepType, c.StepValue, c.Sys_WorkFlowTableStep_Id),
//Auditor = auditor,
c.AuditDate,
c.AuditStatus,
c.Remark,
c.StepValue,
c.StepName,
c.OrderId,
c.Enable,
c.StepId,
c.StepAttrType,
c.CreateDate,
c.Creator,
//判断是按角色审批 还是用户帐号审批
isCurrentUser = CheckCurrentUser(c)
&& (flow.AuditStatus == null || flow.AuditStatus == (int)AuditStatus. || flow.AuditStatus == (int)AuditStatus.),
isCurrent = c.StepId == flow.CurrentStepId
&& (flow.AuditStatus == null || flow.AuditStatus == (int)AuditStatus. || flow.AuditStatus == (int)AuditStatus.)
}).ToList();
if (currentSetpId == null)
{
currentSetpId = list.Where(x => x.isCurrentUser).Select(s => s.StepId).FirstOrDefault();
}
if (currentUserStepId == null)
{
currentUserStepId = list.Where(x => x.isCurrentUser && x.isCurrent).Select(s => s.StepId).FirstOrDefault();
}
if (list.Count == 1)
{
return list[0];
}
//这里必须要用isCurrentUser排序否则多人审批时看不到当前人的数据
var id = list.OrderByDescending(x => x.isCurrentUser).ThenByDescending(x => x.AuditDate).Select(x => x.Sys_WorkFlowTableStep_Id).FirstOrDefault();
return list.Where(x => x.Sys_WorkFlowTableStep_Id == id)
.Select(c => new
{
c.WorkFlowTable_Id,
c.Sys_WorkFlowTableStep_Id,
c.AuditId,
AuditList =
list.OrderByDescending(x => x.AuditDate)
.Where(x => x.StepId == c.StepId && (x.StepAttrType == StepType.cc.ToString() || (!string.IsNullOrEmpty(x.Auditor)
//如果是审批过的数据,只显示多人审批过的数据
&& (x.OrderId >= currentOrderId ? true : x.AuditDate != null)))
).Select(x => new { id = x.Sys_WorkFlowTableStep_Id, x.StepType, x.StepValue, x.Auditor, x.AuditDate, x.AuditStatus }),
c.Auditor,
c.AuditDate,
c.AuditStatus,
c.Remark,
c.StepValue,
c.StepName,
c.OrderId,
c.Enable,
c.StepId,
c.StepAttrType,
c.StepType,
c.CreateDate,
c.Creator,
//这里还需要处理下
c.isCurrentUser,
c.isCurrent
}).First();
}
var steps = flow.Sys_WorkFlowTableStep
.OrderBy(o => o.OrderId)
.GroupBy(x => x.StepId)
.Select(c => GetStep(c.Key)).ToList();
//.Select(c => new
//{
// c.AuditId,
// Auditor = c.Auditor ?? GetAuditUsers(c),
// //Auditor = auditor,
// c.AuditDate,
// c.AuditStatus,
// c.Remark,
// c.StepValue,
// c.StepName,
// c.OrderId,
// c.Enable,
// c.StepId,
// c.StepAttrType,
// c.CreateDate,
// c.Creator,
// //判断是按角色审批 还是用户帐号审批
// isCurrentUser = (c.AuditStatus == null || c.AuditStatus == (int)AuditStatus.审核中 || c.AuditStatus == (int)AuditStatus.待审核)
// && c.StepId == flow.CurrentStepId && GetAuditStepValue(c),
// isCurrent = c.StepId == flow.CurrentStepId && c.AuditStatus != (int)AuditStatus.审核通过
//}).ToList();//.OrderBy(o => o.OrderId);
object form = await WorkFlowManager.GetAuditFormDataAsync(ids[0], tableName);
object attachInfo = null;
if (currentSetpId != null)
{
attachInfo = _workFlowRepository.DbContext.Set<Sys_WorkFlowStep>()
.Where(x => x.WorkFlow_Id == flow.WorkFlow_Id && x.StepId == currentSetpId)
.Select(s => new { s.AllowUpload, s.AttachQty, s.AttachType }).FirstOrDefault();
}
var data = new
{
status = true,
step = flow.CurrentStepId,
flow.AuditStatus,
auditDic,// = DictionaryManager.GetDictionary("audit")?.Sys_DictionaryList?.Select(s => new { key = s.DicValue, value = s.DicName }),
list = steps,//.OrderBy(x => x.OrderId).ToList(),
logs,
form,
attachInfo,
linkMenu = WorkFlowContainer.GetFlowOptions(x => x.WorkTable == tableName&&x.WorkFlow_Id==flow.WorkFlow_Id)
?.FirstOrDefault()
?.Sys_WorkFlowStep
?.Where(x => x.StepId == flow.CurrentStepId)
?.Select(s => s.LinkMenu)
?.FirstOrDefault(),
//编辑表单
editForm = string.IsNullOrEmpty(currentUserStepId) ? null
: WorkFlowContainer.GetFlowOptions(x => x.WorkTable == tableName && x.WorkFlow_Id == flow.WorkFlow_Id)
.FirstOrDefault()
?.Sys_WorkFlowStep
?.Where(x => x.StepId == currentUserStepId)
?.FirstOrDefault()?.Config
};
return Json(data);
}
[HttpPost, Route("getFields")]
public async Task<IActionResult> GetFields(string table)
{
var query = _workFlowTableRepository.DbContext.Set<Sys_TableColumn>().Where(c => c.TableName == table);
var fields = WorkFlowContainer.GetFilterFields(table);
if (fields != null && fields.Length > 0)
{
query = query.Where(x => fields.Contains(x.ColumnName));
}
else
{
query = query.Where(x => x.IsDisplay == 1);
}
var columns = await query.OrderByDescending(c => c.OrderNo)
.Select(s => new
{
field = s.ColumnName,
name = s.ColumnCnName,
dicNo = s.DropNo,
s.ColumnType,
s.EditType
}).ToListAsync();
var data = columns.Select(s => new
{
s.field,
s.name,
s.dicNo,
s.EditType,
columnType = s.ColumnType,
data = string.IsNullOrEmpty(s.dicNo)
? null
: DictionaryManager.GetDictionary(s.dicNo)?.Sys_DictionaryList?.Select(c => new { key = c.DicValue, value = c.DicName })?.ToList()
}).ToList();
return JsonNormal(data);
}
private bool GetAuditStepValue(int? stepType, string stepValue)
{
if (stepType == (int)AuditType.)
{
return UserContext.Current.RoleIds.Contains(stepValue.GetInt());
}
//按部门审批
if (stepType == (int)AuditType.)
{
return UserContext.Current.UserInfo.DeptIds.Select(s => s.ToString()).Contains(stepValue);
}
//按用户审批
return UserContext.Current.UserId.ToString() == stepValue;
}
[Route("getOptions"), HttpGet]
public async Task<IActionResult> GetOptions(Guid id)
{
var data = await _workFlowRepository.FindAsIQueryable(x => x.WorkFlow_Id == id)
.Includes(c => c.Sys_WorkFlowStep)
.FirstOrDefaultAsync();
return JsonNormal(data);
}
/// <summary>
/// 加签或减签
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[Route("sign"), HttpPost]
public async Task<IActionResult> Sign([FromBody] SignInfo signInfo)
{
var workflowTable = await _workFlowTableRepository.FindAsIQueryable(c => c.WorkFlowTable_Id == signInfo.WorkFlowTable_Id)
.Includes(c => c.Sys_WorkFlowTableStep)
.FirstOrDefaultAsync();
//当前节点加签
var currentSteps = workflowTable.Sys_WorkFlowTableStep.Where(c => c.StepId == signInfo.CurrentStepId).ToList();
if (signInfo.SignType == SignType.current.ToString())
{
foreach (var item in signInfo.Rows)
{
item.Sys_WorkFlowTableStep_Id = Guid.NewGuid();
item.NextStepId = currentSteps[0].NextStepId;
item.ParentId = currentSteps[0].ParentId;
item.StepAttrType = currentSteps[0].StepAttrType;
item.StepType = currentSteps[0].StepType;
item.WorkFlow_Id = currentSteps[0].WorkFlow_Id;
item.StepId = currentSteps[0].StepId;
item.SetCreateDefaultVal();
}
//找出审批过的不删除
_workFlowTableStepRepository.SqlSugarClient.Deleteable(currentSteps).ExecuteCommand();
_workFlowTableStepRepository.AddRange(signInfo.Rows, true);
}
else //if (signInfo.SignType == SignType.before.ToString()) //前置加签
{
string parentId = workflowTable.Sys_WorkFlowTableStep
.Where(c => c.OrderId < currentSteps[0].OrderId)
.OrderByDescending(c => c.OrderId).Select(c => c.StepId).FirstOrDefault();
foreach (var item in signInfo.Rows)
{
item.Sys_WorkFlowTableStep_Id = Guid.NewGuid();
//前置加签
if (signInfo.SignType == SignType.before.ToString())
{
item.NextStepId = signInfo.CurrentStepId;
item.ParentId = parentId;
//前置加签,当前节点;
item.OrderId = currentSteps[0].OrderId;
}
else
{
//后置加签,当前节点+1;
item.OrderId = currentSteps[0].OrderId + 1;
}
item.StepName = signInfo.StepName ?? "流程节点";
item.AuditMethod = signInfo.AuditMethod;
item.SourceType = "sign";
item.StepAttrType = StepType.node.ToString();
//审批类型:用户、角色、部门审批
item.StepType = signInfo.AuditType;
item.WorkFlow_Id = currentSteps[0].WorkFlow_Id;
item.WorkFlowTable_Id = currentSteps[0].WorkFlowTable_Id;
item.SetCreateDefaultVal();
}
//前置加签,当前与后面的所有节点排序号+1
if (signInfo.SignType == SignType.before.ToString())
{
foreach (var item in workflowTable.Sys_WorkFlowTableStep.Where(c => c.OrderId >= currentSteps[0].OrderId))
{
item.OrderId = item.OrderId + 1;
}
}
else
{
//后置加签,当前后面的所有节点排序号+2
foreach (var item in workflowTable.Sys_WorkFlowTableStep.Where(c => c.OrderId > currentSteps[0].OrderId))
{
item.OrderId = item.OrderId + 2;
}
}
if (signInfo.SignType == SignType.before.ToString()) //前置加签.重新设置当前审批的节点
{
workflowTable.CurrentOrderId = signInfo.Rows[0].OrderId;
workflowTable.CurrentStepId = signInfo.Rows[0].StepId;
workflowTable.StepName = signInfo.StepName;
_workFlowTableRepository.Update(workflowTable, x => new { x.CurrentStepId, x.CurrentOrderId, x.StepName });
var preSteps = workflowTable.Sys_WorkFlowTableStep.Where(c => c.StepId == currentSteps[0].ParentId).ToList();
//新加的节点前节点
foreach (var step in signInfo.Rows)
{
step.NextStepId = currentSteps[0].StepId;
step.ParentId = preSteps[0].StepId;
}
//当前节点的前一个节点,设置他的下一个节点
foreach (var step in preSteps)
{
step.NextStepId = signInfo.Rows[0].StepId;
}
//当前节点的父节点,新加签的节点
foreach (var step in currentSteps)
{
step.ParentId = signInfo.Rows[0].StepId;
}
}
else
{ //后置加签
//后一个节点
var nextSteps = workflowTable.Sys_WorkFlowTableStep.Where(c => c.ParentId == currentSteps[0].StepId).ToList();
//新加的节点前节点
foreach (var step in signInfo.Rows)
{
step.ParentId = currentSteps[0].StepId;
step.NextStepId = nextSteps[0].StepId;
}
//当前节点的前一个节点,设置他的下一个节点
foreach (var step in nextSteps)
{
step.ParentId = signInfo.Rows[0].StepId;
}
//当前节点的父节点,新加签的节点
foreach (var step in currentSteps)
{
step.NextStepId = signInfo.Rows[0].StepId;
}
}
_workFlowTableStepRepository.AddRange(signInfo.Rows);
_workFlowTableStepRepository.UpdateRange(workflowTable.Sys_WorkFlowTableStep, x => new { x.OrderId, x.ParentId, x.NextStepId });
_workFlowTableStepRepository.SaveChanges();
}
return Success("加签成功");
}
[ApiActionPermission]
public override IActionResult Upload(IEnumerable<IFormFile> fileInput)
{
return base.Upload(fileInput);
}
[Route("getTable"), HttpPost]
public async Task<IActionResult> GetTable([FromBody] List<string> tables, bool isDetail)
{
var data = await _workFlowRepository.DbContext.Set<Sys_TableColumn>().Where(x => tables.Contains(x.TableName) && (x.IsKey == null || x.IsKey == 0))
//明细表只返回显示的数据
.WhereIF(isDetail, x => x.IsDisplay == 1 || x.IsKey == 1)
.OrderByDescending(x => x.OrderNo)
.Select(s => new { s.TableName, s.IsDisplay, s.ColumnCnName, s.IsImage, s.ColumnName, s.ColumnType, s.IsNull, s.IsReadDataset, s.EditType, s.EditRowNo, s.ColumnWidth, s.DropNo })
.ToListAsync();
if (isDetail)
{
return Json(data);
}
var detail = await _workFlowRepository.DbContext.Set<Sys_TableInfo>().Where(x => x.TableName == tables[0])
.Select(s => new { s.DetailCnName, s.DetailName })
.FirstOrDefaultAsync();
return Json(new
{
data,
detail
});
}
}
public enum SignType
{
current,
before,
after
}
public class SignInfo
{
public string SignType { get; set; }
// signType: null, //加签方式
public int AuditMethod { get; set; }
//auditMethod: null, //审批方式
//auditType: null, //审批类型
public int AuditType { get; set; }
/// <summary>
/// 审批流程id
/// </summary>
public Guid WorkFlowTable_Id { get; set; }
/// <summary>
/// 当前审批Sys_WorkFlowTableStep的表主键id
/// </summary>
public Guid? CurrentWorkFlowTableStep_Id { get; set; }
/// <summary>
/// 当前审批的节点编号
/// </summary>
public string CurrentStepId { get; set; }
//rows: [] //审批人数据
public List<Sys_WorkFlowTableStep> Rows { get; set; }
//前后加签的名字
public string StepName { get; set; }
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_WorkFlowStep",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_WorkFlowStepController
{
private readonly ISys_WorkFlowStepService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_WorkFlowStepController(
ISys_WorkFlowStepService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_WorkFlowTable",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_WorkFlowTableController
{
private readonly ISys_WorkFlowTableService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_WorkFlowTableController(
ISys_WorkFlowTableService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,33 @@
/*
*接口编写处...
*如果接口需要做Action的权限验证请在Action上使用属性
*如: [ApiActionPermission("Sys_WorkFlowTableStep",Enums.ActionPermissionOptions.Search)]
*/
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
public partial class Sys_WorkFlowTableStepController
{
private readonly ISys_WorkFlowTableStepService _service;//访问业务代码
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public Sys_WorkFlowTableStepController(
ISys_WorkFlowTableStepService service,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_httpContextAccessor = httpContextAccessor;
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_ActionLogController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_ActionLog")]
[PermissionTable(Name = "Sys_ActionLog")]
public partial class Sys_ActionLogController : ApiBaseController<ISys_ActionLogService>
{
public Sys_ActionLogController(ISys_ActionLogService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_CodeRuleController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_CodeRule")]
[PermissionTable(Name = "Sys_CodeRule")]
public partial class Sys_CodeRuleController : ApiBaseController<ISys_CodeRuleService>
{
public Sys_CodeRuleController(ISys_CodeRuleService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_DashboardController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_Dashboard")]
[PermissionTable(Name = "Sys_Dashboard")]
public partial class Sys_DashboardController : ApiBaseController<ISys_DashboardService>
{
public Sys_DashboardController(ISys_DashboardService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_DbServiceController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_DbService")]
[PermissionTable(Name = "Sys_DbService")]
public partial class Sys_DbServiceController : ApiBaseController<ISys_DbServiceService>
{
public Sys_DbServiceController(ISys_DbServiceService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_DepartmentController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_Department")]
[PermissionTable(Name = "Sys_Department")]
public partial class Sys_DepartmentController : ApiBaseController<ISys_DepartmentService>
{
public Sys_DepartmentController(ISys_DepartmentService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,18 @@
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using VolPro.Core.Controllers.Basic;
using VolPro.Core.Extensions;
using VolPro.Core.Filters;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_Dictionary")]
public partial class Sys_DictionaryController : ApiBaseController<ISys_DictionaryService>
{
public Sys_DictionaryController(ISys_DictionaryService service)
: base("System", "System", "Sys_Dictionary", service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_DictionaryListController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_DictionaryList")]
[PermissionTable(Name = "Sys_DictionaryList")]
public partial class Sys_DictionaryListController : ApiBaseController<ISys_DictionaryListService>
{
public Sys_DictionaryListController(ISys_DictionaryListService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_FormWorkFlowApplyController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_FormWorkFlowApply")]
[PermissionTable(Name = "Sys_FormWorkFlowApply")]
public partial class Sys_FormWorkFlowApplyController : ApiBaseController<ISys_FormWorkFlowApplyService>
{
public Sys_FormWorkFlowApplyController(ISys_FormWorkFlowApplyService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_FormWorkFlowApplyDataController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_FormWorkFlowApplyData")]
[PermissionTable(Name = "Sys_FormWorkFlowApplyData")]
public partial class Sys_FormWorkFlowApplyDataController : ApiBaseController<ISys_FormWorkFlowApplyDataService>
{
public Sys_FormWorkFlowApplyDataController(ISys_FormWorkFlowApplyDataService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_FormWorkFlowApplyStepController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_FormWorkFlowApplyStep")]
[PermissionTable(Name = "Sys_FormWorkFlowApplyStep")]
public partial class Sys_FormWorkFlowApplyStepController : ApiBaseController<ISys_FormWorkFlowApplyStepService>
{
public Sys_FormWorkFlowApplyStepController(ISys_FormWorkFlowApplyStepService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_FormWorkFlowAuditLogController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_FormWorkFlowAuditLog")]
[PermissionTable(Name = "Sys_FormWorkFlowAuditLog")]
public partial class Sys_FormWorkFlowAuditLogController : ApiBaseController<ISys_FormWorkFlowAuditLogService>
{
public Sys_FormWorkFlowAuditLogController(ISys_FormWorkFlowAuditLogService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_FormWorkFlowController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_FormWorkFlow")]
[PermissionTable(Name = "Sys_FormWorkFlow")]
public partial class Sys_FormWorkFlowController : ApiBaseController<ISys_FormWorkFlowService>
{
public Sys_FormWorkFlowController(ISys_FormWorkFlowService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_FormWorkFlowStepController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_FormWorkFlowStep")]
[PermissionTable(Name = "Sys_FormWorkFlowStep")]
public partial class Sys_FormWorkFlowStepController : ApiBaseController<ISys_FormWorkFlowStepService>
{
public Sys_FormWorkFlowStepController(ISys_FormWorkFlowStepService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_GroupController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_Group")]
[PermissionTable(Name = "Sys_Group")]
public partial class Sys_GroupController : ApiBaseController<ISys_GroupService>
{
public Sys_GroupController(ISys_GroupService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_LanguageController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_Language")]
[PermissionTable(Name = "Sys_Language")]
public partial class Sys_LanguageController : ApiBaseController<ISys_LanguageService>
{
public Sys_LanguageController(ISys_LanguageService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,23 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using VolPro.Core.Controllers.Basic;
using VolPro.Core.DBManager;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_Log")]
public partial class Sys_LogController : ApiBaseController<ISys_LogService>
{
public Sys_LogController(ISys_LogService service)
: base("System", "System", "Sys_Log", service)
{
}
}
}

View File

@@ -0,0 +1,22 @@
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using VolPro.Core.Controllers.Basic;
using VolPro.Core.Enums;
using VolPro.Core.Filters;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/menu")]
[ApiController, JWTAuthorize()]
public partial class Sys_MenuController : ApiBaseController<ISys_MenuService>
{
private ISys_MenuService _service { get; set; }
public Sys_MenuController(ISys_MenuService service) :
base("System", "System", "Sys_Menu", service)
{
_service = service;
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_NotificationController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_Notification")]
[PermissionTable(Name = "Sys_Notification")]
public partial class Sys_NotificationController : ApiBaseController<ISys_NotificationService>
{
public Sys_NotificationController(ISys_NotificationService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_NotificationLogController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_NotificationLog")]
[PermissionTable(Name = "Sys_NotificationLog")]
public partial class Sys_NotificationLogController : ApiBaseController<ISys_NotificationLogService>
{
public Sys_NotificationLogController(ISys_NotificationLogService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_NotificationTemplateController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_NotificationTemplate")]
[PermissionTable(Name = "Sys_NotificationTemplate")]
public partial class Sys_NotificationTemplateController : ApiBaseController<ISys_NotificationTemplateService>
{
public Sys_NotificationTemplateController(ISys_NotificationTemplateService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_PostController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_Post")]
[PermissionTable(Name = "Sys_Post")]
public partial class Sys_PostController : ApiBaseController<ISys_PostService>
{
public Sys_PostController(ISys_PostService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_PrintOptionsController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_PrintOptions")]
[PermissionTable(Name = "Sys_PrintOptions")]
public partial class Sys_PrintOptionsController : ApiBaseController<ISys_PrintOptionsService>
{
public Sys_PrintOptionsController(ISys_PrintOptionsService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_QuartzLogController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_QuartzLog")]
[PermissionTable(Name = "Sys_QuartzLog")]
public partial class Sys_QuartzLogController : ApiBaseController<ISys_QuartzLogService>
{
public Sys_QuartzLogController(ISys_QuartzLogService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_QuartzOptionsController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_QuartzOptions")]
[PermissionTable(Name = "Sys_QuartzOptions")]
public partial class Sys_QuartzOptionsController : ApiBaseController<ISys_QuartzOptionsService>
{
public Sys_QuartzOptionsController(ISys_QuartzOptionsService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_RegionController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_Region")]
[PermissionTable(Name = "Sys_Region")]
public partial class Sys_RegionController : ApiBaseController<ISys_RegionService>
{
public Sys_RegionController(ISys_RegionService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_ReportOptionsController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_ReportOptions")]
[PermissionTable(Name = "Sys_ReportOptions")]
public partial class Sys_ReportOptionsController : ApiBaseController<ISys_ReportOptionsService>
{
public Sys_ReportOptionsController(ISys_ReportOptionsService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,26 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Threading.Tasks;
using VolPro.Core.Controllers.Basic;
using VolPro.Core.Enums;
using VolPro.Core.Filters;
using VolPro.Entity.AttributeManager;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_Role")]
[PermissionTable(Name = "Sys_Role")]
public partial class Sys_RoleController : ApiBaseController<ISys_RoleService>
{
public Sys_RoleController(ISys_RoleService service)
: base("System", "System", "Sys_Role", service)
{
}
}
}

View File

@@ -0,0 +1,23 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory;
using System.Threading.Tasks;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Entity.DomainModels;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_User")]
[PermissionTable(Name = "Sys_User")]
public partial class Sys_UserController : ApiBaseController<ISys_UserService>
{
public Sys_UserController(ISys_UserService service)
: base("System", "System", "Sys_User", service)
{
//, IMemoryCache cache
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_WorkFlowController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_WorkFlow")]
[PermissionTable(Name = "Sys_WorkFlow")]
public partial class Sys_WorkFlowController : ApiBaseController<ISys_WorkFlowService>
{
public Sys_WorkFlowController(ISys_WorkFlowService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_WorkFlowStepController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_WorkFlowStep")]
[PermissionTable(Name = "Sys_WorkFlowStep")]
public partial class Sys_WorkFlowStepController : ApiBaseController<ISys_WorkFlowStepService>
{
public Sys_WorkFlowStepController(ISys_WorkFlowStepService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_WorkFlowTableController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_WorkFlowTable")]
[PermissionTable(Name = "Sys_WorkFlowTable")]
public partial class Sys_WorkFlowTableController : ApiBaseController<ISys_WorkFlowTableService>
{
public Sys_WorkFlowTableController(ISys_WorkFlowTableService service)
: base(service)
{
}
}
}

View File

@@ -0,0 +1,21 @@
/*
*代码由框架生成,任何更改都可能导致被代码生成器覆盖
*如果要增加方法请在当前目录下Partial文件夹Sys_WorkFlowTableStepController编写
*/
using Microsoft.AspNetCore.Mvc;
using VolPro.Core.Controllers.Basic;
using VolPro.Entity.AttributeManager;
using VolPro.Sys.IServices;
namespace VolPro.Sys.Controllers
{
[Route("api/Sys_WorkFlowTableStep")]
[PermissionTable(Name = "Sys_WorkFlowTableStep")]
public partial class Sys_WorkFlowTableStepController : ApiBaseController<ISys_WorkFlowTableStepService>
{
public Sys_WorkFlowTableStepController(ISys_WorkFlowTableStepService service)
: base(service)
{
}
}
}