版本日志
v3.3.1
2025/9/29
此版本添加了一些功能。
新增
- 新增流程节点备注功能,支持管理员在流程设计界面添加备注信息。
- 新增流程操作手册上传功能,支持在流程办理界面查看。
- 新增流程数据推送新版实现,提升推送性能。
- 新增 OBS 对象存储服务集成。
- 文件响应特性
[ResponseFile]新增下载链接属性,支持浏览器直接访问并以原文件名下载。 - 新增图形验证码功能,支持图片生成与验证。 注意:每个图形验证码仅能使用一次,若验证失败应请求生成新的验证码。
- 新增基于 UMPP 的短信、邮箱验证码发送与验证功能。
- 新增基于 SAG 的 UAC 用户相关接口声明,详情请查看 HZCC.Frm.Service.Http.ISagApi。
- 流程引擎新增会签功能,支持多人办理任务。
- 流程引擎办理任务时支持指定办理人,详情请查看
WorkStepDto/WorkStepNodeDto.OperatorId。 - 流程引擎新增节点离开事件,支持在节点离开时执行自定义逻辑。实现
INodeEventHandler.OnLeave方法即可。 - 组织机构新增
Code字段,支持从上游同步。 - 基础服务
BaseGenericService新增了事务操作方法,方便在服务层使用。
修正
- 修复流程引擎已读事件可能触发多次的问题。
变更
- 流程数据推送默认使用新版实现。
- 对象存储服务不再默认使用 MinIO,存储类别由
MinioConfig.Type配置项指定。 - 框架根据上述配置自动注册对应的对象存储客户端服务,开发人员必须移除项目中单独注册的
IMinioClient。 - 同一流程(code 相同)现在只能启用一个版本,不再支持同时启用多个版本。
- 流程引擎办理人员规则中的
表单人员,现在支持读取以逗号分隔的多个人员数据。
移除
无
升级指南
- 执行
v3.3.1.sql。 - 推荐使用新版流程数据推送,该版本优化了触发机制和性能。在配置文件添加如下配置项:json注意:要继续使用旧版,请将 LegacyPushMode 设置为 true。
"Workflow": { "EmpCenter": { "LegacyPushMode": false, // 是否使用旧版推送模式,默认false "MaxTransExecSeconds": 5, // 事务最长执行时间(秒),在此时间内会积极获取新数据 "MaxRetry": 3, // 最大重试次数 "RetryDelayMillis": 1000, // 重试间隔时间(毫秒) "RetryGrowFactor": 2 // 重试间隔增长因子,下次重试间隔=当前间隔*增长因子 } } - 要使用对象存储服务,配置文件需要添加
Type配置项:json注意:指定"MinioConfig": { "Type": "MinIO", // 对象存储服务类型,可选:MinIO、OBS、None }Type后,框架会自动注册对应的客户端服务,请检查并移除项目中单独注册的IMinioClient。 - 基于合规要求,OBS 默认不支持在线预览文件,即图片、视频等文件无法直接在浏览器中打开。 要支持在线预览,需开启 CDN 功能。具体请参考官方文档。
- 基于
[ResponseFile]特性返回的文件信息中,添加了DownloadUrl字段,前端可直接跳转此链接下载文件,文件名与原文件一致。 - 要使用图形验证码功能,需要复制 fonts 目录到项目根目录;并修改 Dockerfile 文件:json前端请求
COPY --from=publish /app/publish . # 添加如下内容 COPY --from=publish /src/fonts /usr/share/fonts/api/caps/{id}即可获取验证码图片,其中{id}为8位随机数字。 - 要使用短信、邮箱验证码功能,需要在配置文件添加如下配置项:json调用示例:
"Sag": { "Umpp": { # 其它配置项省略 "CapBizCode": "user_register_sys" # 默认的验证码业务标识,由 UMPP 下发 } }csharp注意:默认使用配置文件中指定的业务标识,要使用其它标识请使用 Dto 的重载方法。// 注入服务 [Autowired] IUmppApiWrapper apiWrapper; // 发送验证码。出于安全考虑,用户必须先通过图形验证码验证,因此需要传入验证码ID和值。 apiWrapper.SendCaptcha(new UmppCaptchaSendDto(UmppChannel.Sms, "166xxxx1234", capId, capCode)); apiWrapper.SendCaptcha(new UmppCaptchaSendDto(UmppChannel.Email, "wangdachui@hzcctech.net", capId, capCode)); // 验证验证码 apiWrapper.ValidateCaptcha(new UmppCaptchaVerifyDto(UmppChannel.Sms, "18600005917", capCode)); apiWrapper.ValidateCaptcha(new UmppCaptchaVerifyDto(UmppChannel.Email, "wangdachui@hzcctech.net", capCode))
v3.3.0
2025/4/23
此版本实现了语言本地化支持,修复了一些问题。
新增
- 新增 FxResoures.System.ComponentModel.Annotations.zh-Hans、zh-Hant 依赖,支持模型验证默认错误消息本地化。
- 各项目添加
LocalRes.resx资源文件,支持简体中文、繁体中文、英文。 - 新增超级管理员是否可禁用开关
SuperAdminDisableAllowed。 - 新增基于
DictData特性的列表数据字典翻译服务,配合 Excel 导出使用。 - 新增用户设置功能,允许保存用户自定义设置。
- 工作消息新增链接,支持跳转至工作详情。
- 新增流程引擎与第三方系统集成功能,支持工作数据推送到员工中心。
- 新增消息平台重载方法,支持基于网关认证的企微消息发送。
修正
- 修复 sql 日志无法开启显示问题。
- 修复用户日志异步环境报错问题。
- 修正工作任务当前用户查询数据包含空用户问题。
- 修正工作任务历史节点查询数据重复问题。
- 修复查看模式下无法查看工作最新节点表单问题。
变更
- 各项目硬编码中文文本调整为资源类属性,支持本地化输出。
- 工作转发时不再限制任务必须为可办理状态。
- 工作台转发工作列表现在仅显示未读数据。
- 工作人员现在支持使用禁用用户,以使工作代理生效。
- 用户搜索功能现在支持简拼与全拼搜索。
- 用户搜索方法
GetBySnOrName默认不再返回禁用用户,如有需要请指定includeDisabled参数。 - 工作消息现在使用基于 SAG 的消息平台接口,不再依赖 UHP 服务。请按照升级指南步骤 5 进行更新。
移除
- 移除
WorkflowConsts部分无用常量。
升级指南
- 执行
v3.3.0.sql。 - 配置文件添加工作流配置节:json
"Workflow": { "Notice": { "LinkPrefix": "", // 工作流消息链接前缀,通常为前端域名。如:http://foo.com "Email": false, // 是否启用邮件通知 "WeChat": false // 是否启用企微通知 } } - 如果要开启推送数据到员工中心,配置文件添加如下配置节:json注意:同时需要添加网关配置信息,请查看下一条说明。
"Workflow": { EmpCenter": { "SysCode": "frm", // 当前系统在员工中心的系统标识 "Interval": 5, // 推送频率(秒) "ErrorThreshold": 10, // 连续错误阈值。当连续错误次数达到此值时,推送频率将倍数增长。 "GrowFactor": 2, // 推送频率增长因子。即连续错误次数达到阈值时,推送频率将乘以此值。 "MaxInterval": 300, // 推送频率最大值(秒)。推送频率超出此值时,将重置为初始值。 "Enable": true // 是否启用 } } - 如果要调用基于网关的接口,配置文件添加配置节:json
"Sag": { "Url": "http://118.195.128.183:3095", // 网关地址 "AppId": "frm", // 网关下发的应用标识 "Secret": "46xxxxxxa74" // 网关下发的应用密钥 } - 调整消息发送代码,使用新版企微消息推送(不经过 UHP)功能,配置文件添加配置节:json调用示例:
"Sag": { "Umpp": { "AppCode": "frm", // 发送方标识 "EmailAccountCode": "52xxxxx54", // UMPP 下发的邮箱账户编码 "QyAgentId": "1a7xxxxxx966d" // SAG 下发的企微应用标识 } }csharpIOptions<SagUmppOptions> options; await api.SendQyWechatTextAsync(new UmppQyAppTextMsg( options.Value.QyAgentId, "hello from frm", new List<string> { "001001" }, UmppQyMsgTo.User, options.Value.AppCode) ); - 关于语言本地化详细内容,请查看线上文档。
v3.2.1
2024/11/20
此版本添加了一些功能。
新增
- 工作流:流程新增分类功能,支持按分类查询待办。
- 工作流:新增用户工作查询功能,支持按需关联业务数据查询。
- 工作流:工作组件支持接收 BizId / WorkId 参数,查看任意工作信息,不限制实际操作人。
- 新增
SignedOldApiFilterAttribute、SignedPlusApiFilterAttribute特性,支持不同版本的 API 签名认证。 OptionalExpressionBuilder新增 Where 方法,支持添加固定条件。
修正
- 修正 UAC 代理配置不生效问题。
- 修正 ApiPlus 认证模式在部分情况下不生效问题。
- 修正字典翻译接口无法接收请求体问题。
变更
- 工作流:在工作组件查看工作详情时,支持仅传递 WorkId 参数。
- 工作流:结束节点任务不再使用当前处理人信息,无需办理。
移除
无
升级指南
- 执行
v3.2.1.sql。
v3.2.0
2024/10/25
此版本添加了工作流、岗位同步功能,以及一些其它优化。
新增
- 新增工作流功能,支持流程定义、任务办理、超时提醒、流程干预等功能。具体请参考框架在线文档。
- 新增岗位同步功能。
- 用户新增岗位与上下级信息,用户服务支持根据上下级查询。
- 新增
AllowedEnvironmentsAttribute特性,限定接口服务仅在指定环境下可访问。 - 新增
OptionalExpressionBuilder类,提供多个判断方法简化服务层的动态条件生成。 BaseEntity添加 ClearBaseFields 方法,支持清空实体基础属性。
修正
无
变更
BaseDal中的QueryListPage已调整为公共方法,支持由传入的 Query 参数返回分页结果。- 进一步优化
NAutowired库,添加 AspectCore 支持,不再依赖AspectCore.Extensions.DependencyInjection.NAutowired。
移除
无
升级指南
- 执行
v3.2.0.sql。 - 将
Program.cs中导入的命名空间 AspectCore.Extensions.DependencyInjection.NAutowired,修改为 AspectCore.Extensions.DependencyInjection。 - 如果需要使用工作流完整功能
- 请在
XxlJob服务端创建wf-timeout、wf-message两个任务,触发频率建议分别为 20 分钟、5 分钟。 - 在配置文件中添加
xxlJob配置,启用定时任务。
"xxlJob": { "Enable": true, "AdminAddresses": "http://服务地址/xxl-job-admin", "appName": "执行器名", "specialBindUrl": "http://程序地址/xxl-job", "specialBindPath": "/xxl-job", "autoRegistry": true, "accessToken": "", "logRetentionDays": 30 },- 在配置文件中添加消息服务配置。
"Umpp": { "Url": "uip地址", "AppId": "uip应用", "Secret": "uip密钥", "QyId": "uhp企业应用", "EmailAccountCode": "umpp邮箱码" } - 请在
v3.1.1
2024/9/12
此版本添加了一些功能。
新增
- 新增文件对象存储管理功能,支持文件状态记录、业务绑定、数据查询。
- 新增
BindBizFileAttribute特性,支持声明式的业务数据与文件记录绑定。 - 新增
ResponseBizFileAttribute特性,支持声明式的业务数据已关联的文件记录查询返回。
- 新增
- 新增
Xxl-Job任务调度集成,简化配置与开发模式。详情请查看框架在线文档。- 新增
XxlJobHandler特性,声明任务处理器并注册为 Scoped 服务。
- 新增
- 新增
LoginLogAttribute、LogoutLogAttribute特性,支持声明式的登录、登出日志记录。 - 新增日志清理功能,支持以多种形式清理系统、用户、登录日志。详情请查看框架在线文档。
UserLogAttribute特性新增几个参数,支持限定内容长度与忽略请求头或请求体。
修正
无
变更
- Swagger 文档地址修改。
- About 接口除
version外,不再支持匿名访问。 - 登录日志清理接口不再支持传入时间参数,需要前端
2.2.0+版本支持。 NAutowired库切换为自定义版本,提升性能。
移除
无
升级指南
- 执行
v3.1.1.sql。 - 如果需要启用
Xxl-Job功能,请参考框架在线文档进行配置。 - 如果需要启用日志自动清理功能,请参考框架在线文档进行配置。
v3.1.0
2024/2/6
此版本重构部分代码,添加了一些新功能。
新增
- 新增
第三方接口请求响应日志记录功能。 - 新增
接口配置功能,支持独立设置每个接口的日志启用状态。 - 新增
系统设置功能,可以进行网络请求等相关参数设置。 - 新增
登录日志功能,记录登录与登出日志。 - 新增
在线用户功能,支持在线用户查询与清除。 - 新增
缓存管理功能,支持缓存数据查询与清除。 - 新增彩色日志输出,区分不同级别日志。
- 任意级别的日志,当内容以
[force]开头时,会写入数据库保存。 - 新增
ToResult方法,简化控制器响应对象创建方式。具体请参考各控制器方法。 BaseGenericService类中支持排序的方法,新增了对应重载方法,支持传入任意数量的排序字段。BaseGenericService.GetListPage方法现在可以传入字符串式排序信息,以支持前端页面的自定义排序情况。- 新增
WebApiClient引用,支持声明式调用外部Http接口。具体使用方法参考IUacApi相关代码。 Common库新增ValidationHelper,支持手动调用模型验证。Common库新增IpAddressHelper,支持IP归属地离线查询。
修正
- 修正树字典查询时排序不正常问题。
- 修正更新时间与创建时间一致性问题。现统一取web服务时间,不再使用数据库时间。
- 修正特定情况下
AutoMapper执行报错问题。
变更
- 代码重构为使用
主构造函数注入模式,同时保留[Autowried]注入支持。 - 代码重构为使用文件域命名空间(file-scoped namespace)。
- 模型层
Input、Output、Bo类分别移至独立的命名空间。 - 控制器参数错误不再返回
500响应。修改为响应码200,错误码999。 Result<T>不再允许忽略Body参数。如有需要请使用非泛型类Result。ServiceProviderAccessor变更为正式特性,可在请求管道范围内任意位置获取服务容器。BaseGenericService类中支持两个排序字段的查询方法,标记为已过时。BaseGenericService类中的分页查询方法,现已不再支持通过特殊参数值查询全量数据。- 默认不再在控制台显示SQL日志,需要时请至
系统设置页面开启。 - 非超级管理员操作角色时,可操作数据限定在其自身拥有的资源范围内。无法操作他人创建的角色,也无法授权给用户。
- 优化部分类名。
AbstractRowObjectMapper更改为AbstractDbRowMapper。WrapperBo更改为MultiApiCallResult。
- 字典、用户、角色、资源等路由重构为
Restfull格式,原路由已标记为过时。 - 重构
Common库Excel相关类方法。合并至ExcelHelper类,其它类标记为过时。 - 调整
Common库EPPlus依赖版本,消除潜在的版权问题。
移除
- 移除
Result<T>类的Success()、Success(msg)重载方法。 - 移除
HZCC.UAC.Client引用。
升级指南
- 执行
v3.1.0.sql。 - 从
HZCC.Frm.Api复制nlog.config文件,覆盖至Api项目根目录。 - 按需修正模型类的引用命名空间。
v3.0.0
2023/12/18
此版本升级.NET框架至.NET8,使用C#12语法重构现有代码。同时添加了一些新功能,修复了一些已知问题。
新增
Swagger文档新增签名认证模式,支持基于签名认证的接口在线调用。- 新增
OptionalExpression<>类,简化ORM动态条件生成。 BaseGenericService新增Add(object)方法。DbCommandInterceptor添加sql参数输出。- 新增
RequiredIfAttribute特性,支持根据其它属性值决定当前属性是否必填。 - 支持低级别日志按需入库(日志内容以
[db]开头即可)。 - 新增
ServiceProviderAccessor类,支持以静态属性获取ServiceProvider。[实验性功能] 数据维度功能,支持针对树模式的更多配置选项。
修正
- 修正用户数据权限不能按条件查询问题。
- 修正用户数据权限列表排序混乱问题。
- 修正用户无法批量查询问题。
- 修正菜单禁用后无法再找回问题。
- 修正默认认证策略在特殊情况下重复执行问题。
- 修正组织机构同步中潜在的死循环问题。
- 修正树字典缓存异常问题。
- 修正同时使用新老版本
签名认证时,新版本不生效问题。
以上修正已同步至2.6.0+。
变更
DataScopeAttribute、UserLogAttribute类移至Attributes命名空间。- 优化调整了
操作日志记录格式。 - 优化了swagger接口排序。
- 消除部分分页参数
PageInfo,由dto继承。 BaseService.Update方法忽略值为default(DateTime)的字段更新。- 增强版签名认证模式名称,由
api-plus更名为sign。原api模式标记为过时。
移除
BaseGenericService移除Update(T)方法。- 移除
CodeGenerateController控制器。 - 移除
UserService类无用的GetByEmp、GetListSimple、Update方法。 - 移除
RoleResService类无用的GetRoleResources方法。
升级指南
- 确保项目从基础框架
2.7.0版本开始升级。若低于该版本,请先参考各版本升级指南进行升级。(新项目忽略此条) - 更新
后端开发工具软件至最新版。 - 修改主项目中各
csproj文件,更新为<TargetFramework>net8.0</TargetFramework>。 - 从
HZCC.Frm.Api项目复制nlog.config文件,覆盖至主项目Api项目根目录。 - 从本项目根目录复制
Dockerfile文件,覆盖至主项目根目录。 - 开放接口给第三方调用时,优先使用
AuthenticationSchemes = "sign"认证模式。具体算法请查看swagger文档。