// Admin.NET 项目的版æƒã€å•†æ ‡ã€ä¸“利和其他相关æƒåˆ©å‡å—ç›¸åº”æ³•å¾‹æ³•è§„çš„ä¿æŠ¤ã€‚ä½¿ç”¨æœ¬é¡¹ç›®åº”éµå®ˆç›¸å…³æ³•律法规和许å¯è¯çš„è¦æ±‚。 // // 本项目主è¦éµå¾ª MIT 许å¯è¯å’Œ Apache 许å¯è¯ï¼ˆç‰ˆæœ¬ 2.0)进行分å‘和使用。许å¯è¯ä½äºŽæºä»£ç æ ‘æ ¹ç›®å½•ä¸çš„ LICENSE-MIT å’Œ LICENSE-APACHE 文件。 // // ä¸å¾—利用本项目从事å±å®³å›½å®¶å®‰å…¨ã€æ‰°ä¹±ç¤¾ä¼šç§©åºã€ä¾µçŠ¯ä»–äººåˆæ³•æƒç›Šç‰æ³•å¾‹æ³•è§„ç¦æ¢çš„æ´»åЍï¼ä»»ä½•基于本项目二次开å‘è€Œäº§ç”Ÿçš„ä¸€åˆ‡æ³•å¾‹çº çº·å’Œè´£ä»»ï¼Œæˆ‘ä»¬ä¸æ‰¿æ‹…ä»»ä½•è´£ä»»ï¼ using Microsoft.AspNetCore.Http; namespace Admin.NET.Plugin.ApprovalFlow.Service; /// <summary> /// 审批æµç¨‹æœåŠ¡ /// </summary> [ApiDescriptionSettings(ApprovalFlowConst.GroupName, Order = 100)] public class ApprovalFlowService : IDynamicApiController, ITransient { private readonly SqlSugarRepository<ApprovalFlow> _approvalFlowRep; public ApprovalFlowService(SqlSugarRepository<ApprovalFlow> approvalFlowRep) { _approvalFlowRep = approvalFlowRep; } /// <summary> /// åˆ†é¡µæŸ¥è¯¢å®¡æ‰¹æµ /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [ApiDescriptionSettings(Name = "Page")] public async Task<SqlSugarPagedList<ApprovalFlowOutput>> Page(ApprovalFlowInput input) { return await _approvalFlowRep.AsQueryable() .WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u => u.Code.Contains(input.SearchKey.Trim()) || u.Name.Contains(input.SearchKey.Trim()) || u.Remark.Contains(input.SearchKey.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.Code), u => u.Code.Contains(input.Code.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.Name), u => u.Name.Contains(input.Name.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.Remark), u => u.Remark.Contains(input.Remark.Trim())) .Select<ApprovalFlowOutput>() .ToPagedListAsync(input.Page, input.PageSize); } /// <summary> /// å¢žåŠ å®¡æ‰¹æµ /// </summary> /// <param name="input"></param> /// <returns></returns> [ApiDescriptionSettings(Name = "Add"), HttpPost] public async Task<long> Add(AddApprovalFlowInput input) { var entity = input.Adapt<ApprovalFlow>(); if (input.Code == null) { entity.Code = await LastCode(""); } await _approvalFlowRep.InsertAsync(entity); return entity.Id; } /// <summary> /// æ›´æ–°å®¡æ‰¹æµ /// </summary> /// <param name="input"></param> /// <returns></returns> [ApiDescriptionSettings(Name = "Update"), HttpPost] public async Task Update(UpdateApprovalFlowInput input) { var entity = input.Adapt<ApprovalFlow>(); await _approvalFlowRep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); } /// <summary> /// åˆ é™¤å®¡æ‰¹æµ /// </summary> /// <param name="input"></param> /// <returns></returns> [ApiDescriptionSettings(Name = "Delete"), HttpPost] public async Task Delete(DeleteApprovalFlowInput input) { var entity = await _approvalFlowRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002); await _approvalFlowRep.FakeDeleteAsync(entity); // å‡åˆ 除 } /// <summary> /// 获å–å®¡æ‰¹æµ /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<ApprovalFlow> GetDetail([FromQuery] QueryByIdApprovalFlowInput input) { return await _approvalFlowRep.GetFirstAsync(u => u.Id == input.Id); } /// <summary> /// æ ¹æ®ç¼–ç 获å–审批æµä¿¡æ¯ /// </summary> /// <param name="code"></param> /// <returns></returns> public async Task<ApprovalFlow> GetInfo([FromQuery] string code) { return await _approvalFlowRep.GetFirstAsync(u => u.Code == code); } /// <summary> /// 获å–审批æµåˆ—表 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<List<ApprovalFlowOutput>> GetList([FromQuery] ApprovalFlowInput input) { return await _approvalFlowRep.AsQueryable().Select<ApprovalFlowOutput>().ToListAsync(); } /// <summary> /// 获å–ä»Šå¤©åˆ›å»ºçš„æœ€å¤§ç¼–å· /// </summary> /// <param name="prefix"></param> /// <returns></returns> private async Task<string> LastCode(string prefix) { var today = DateTime.Now.Date; var count = await _approvalFlowRep.AsQueryable().Where(u => u.CreateTime >= today).CountAsync(); return prefix + DateTime.Now.ToString("yyMMdd") + string.Format("{0:d2}", count + 1); } /// <summary> /// 匹é…审批æµç¨‹ /// </summary> /// <param name="context"></param> /// <returns></returns> [NonAction] public async Task MatchApproval(HttpContext context) { var request = context.Request; var response = context.Response; var path = request.Path.ToString().Split("/"); var method = request.Method; var qs = request.QueryString; var h = request.Headers; var b = request.Body; var requestHeaders = request.Headers; var responseHeaders = response.Headers; await Task.CompletedTask; } }