- 后端主要是用了 NewLife.XCode 作为数据库操作工具,系列教程在此(想要知道怎么添加一个表吗?修改 xml 文件即可得到表对应实体,使劲戳它)。在此基础上,结合 aspnetcore,添加身份认证、异常拦截处理、swagger 文档、自动生成菜单、vue 开发中间件等基础功能。
-
首先是AdminControllerbase,该类是控制器基类。特性上对应功能分别是路由设置、统一结果封装、Api 控制器声明、身份认证过滤、跨域设置。成员有:当前当前请求对应登录用户、是否超级管理员、处理成功结果返回,处理失败结果返回
////// 基类Api /// [Route("api/[controller]")] [ApiResultFilter] [ApiController] [ApiAuthenticateFilter()] [EnableCors] public class AdminControllerbase : Controllerbase { private IUser _appUser; ////// 当前用户 /// public IUser AppUser { get => _appUser ?? (_appUser = HttpContext.Features.Get()); set => _appUser = value; } /// /// 是否超级管理员 /// public bool IsSupperAdmin => AppUser.Role.IsSystem; ////// 返回可带分页的结果 /// ////// /// /// protected ApiResult Ok (TResult data, PageParameter p = null) { return ApiResult.Ok(data, p); } /// /// 返回默认状态为402的结果 /// /// /// ///protected ApiResult Error(String msg = null, Int32 status = 402) { return ApiResult.Err(msg, status); } } -
接着是实体EntityController,继承自AdminControllerbase,是个泛型类,只接受数据库实体。实体控制器包含列表搜索、单体查看、添加、更新、删除等基础功能,并用ApiAuthorizeFilter特性标记了权限。
////// 基类Api /// public class EntityController: AdminControllerbase where TEntity : Entity , new { /// /// 获取实体列表 /// /// 分页 /// 搜索关键字 ///[Route("Search")] [HttpPost] [ApiAuthorizeFilter(PermissionFlags.Detail)] [DisplayName("搜索{type}")] public virtual ApiResult > Search([FromQuery]PageParameter p, [FromQuery]ring key){} /// /// 获取单对象 /// /// 对象id /// [HttpGet("{id}")] [ApiAuthorizeFilter(PermissionFlags.Detail)] [DisplayName("查看{type}")] public virtual ApiResultGet([FromRoute]string id){} /// /// 添加 /// /// 需要添加的对象 [HttpPost] [ApiAuthorizeFilter(PermissionFlags.Insert)] [DisplayName("添加{type}")] public virtual ApiResult Post([FromBody]TEntity value){} ////// 更新 /// /// 需要更新的对象 ///[HttpPut] [ApiAuthorizeFilter(PermissionFlags.Update)] [DisplayName("更新{type}")] public virtual ApiResult Put([FromBody]TEntity value){} /// /// 删除 /// /// 需要删除对象的id [HttpDelete("{id}")] [ApiAuthorizeFilter(PermissionFlags.Delete)] [DisplayName("删除{type}")] public virtual ApiResult Delete([FromRoute]string id){} ////// 获取模型列信息 /// ///[HttpGet] [Route("GetColumns")] [ApiAuthorizeFilter(PermissionFlags.Detail)] [DisplayName("列信息{type}")] public virtual ApiResult - > GetColumns(){}
}
-
请确保完成了NewLife.XCode系列教程
-
添加一个控制器很简单,新增实体之后,继承实体控制器就行,自带 curd,自动生成菜单,默认页面
////// 用户 /// [Route("api/[controller]")] [ApiController] [DisplayName("用户")] public class UserController : EntityController{ }



