| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- namespace Admin.NET.Plugin.ApprovalFlow.Service;
- /// <summary>
- /// 审批意见模板服务
- /// </summary>
- [ApiDescriptionSettings(ApprovalFlowConst.GroupName, Order = 60)]
- public class FlowCommentTemplateService : IDynamicApiController, ITransient
- {
- private readonly SqlSugarRepository<ApprovalFlowCommentTemplate> _rep;
- private readonly UserManager _userManager;
- public FlowCommentTemplateService(
- SqlSugarRepository<ApprovalFlowCommentTemplate> rep,
- UserManager userManager)
- {
- _rep = rep;
- _userManager = userManager;
- }
- /// <summary>
- /// 获取当前用户可用的意见模板列表(公共 + 个人)
- /// </summary>
- [HttpGet]
- [ApiDescriptionSettings(Name = "MyList")]
- [DisplayName("获取意见模板列表")]
- public async Task<List<CommentTemplateOutput>> MyList()
- {
- var userId = _userManager.UserId;
- return await _rep.AsQueryable()
- .Where(t => t.IsEnabled && (t.UserId == null || t.UserId == userId))
- .OrderBy(t => t.OrderNo)
- .Select(t => new CommentTemplateOutput
- {
- Id = t.Id,
- Content = t.Content,
- IsSystem = t.IsSystem,
- IsMine = t.UserId != null && t.UserId == userId,
- })
- .ToListAsync();
- }
- /// <summary>
- /// 新增个人意见模板
- /// </summary>
- [HttpPost]
- [ApiDescriptionSettings(Name = "Add")]
- [DisplayName("新增意见模板")]
- public async Task<long> Add(CommentTemplateAddInput input)
- {
- var entity = new ApprovalFlowCommentTemplate
- {
- Content = input.Content,
- OrderNo = input.OrderNo ?? 100,
- IsSystem = false,
- UserId = _userManager.UserId,
- IsEnabled = true,
- };
- await _rep.InsertAsync(entity);
- return entity.Id;
- }
- /// <summary>
- /// 删除个人意见模板(系统预置不可删)
- /// </summary>
- [HttpPost]
- [ApiDescriptionSettings(Name = "Delete")]
- [DisplayName("删除意见模板")]
- public async Task Delete(BaseIdInput input)
- {
- var entity = await _rep.GetByIdAsync(input.Id)
- ?? throw Oops.Oh("模板不存在");
- if (entity.IsSystem)
- throw Oops.Oh("系统预置模板不可删除");
- if (entity.UserId != _userManager.UserId)
- throw Oops.Oh("只能删除自己的模板");
- await _rep.DeleteByIdAsync(input.Id);
- }
- /// <summary>
- /// 初始化系统预置意见模板(幂等)
- /// </summary>
- [NonAction]
- public async Task EnsureSystemTemplates()
- {
- var exists = await _rep.AsQueryable().AnyAsync(t => t.IsSystem);
- if (exists) return;
- var templates = new[]
- {
- "同意",
- "已审核,无问题",
- "情况属实,同意处理",
- "不同意,请补充材料后重新提交",
- "退回修改",
- "已阅,请按流程继续推进",
- "金额/数量有误,请核实后重新提交",
- "紧急事项,加急处理",
- };
- var order = 10;
- foreach (var content in templates)
- {
- await _rep.InsertAsync(new ApprovalFlowCommentTemplate
- {
- Content = content,
- OrderNo = order,
- IsSystem = true,
- UserId = null,
- IsEnabled = true,
- });
- order += 10;
- }
- }
- }
- public class CommentTemplateOutput
- {
- public long Id { get; set; }
- public string Content { get; set; } = "";
- public bool IsSystem { get; set; }
- public bool IsMine { get; set; }
- }
- public class CommentTemplateAddInput
- {
- [Required, MaxLength(512)]
- public string Content { get; set; } = "";
- public int? OrderNo { get; set; }
- }
|