# 更新日志 2020-04-18

# 后端

0、重构了配置管理功能

现在,除了启动时需要的配置以外(db.json、host.json、logging.json),其它配置都不再采用 json 配置文件的方式,全部通过数据库存储

1、调整了内置 ORM 的数据集 IDbSet 加载机制,现在,您可以再仓储中访问其它模块的 IDbSet 对象了~

2、模块信息新增编号属性,并采用 Id 设置,原来的编码更改为 Code

3、取消系统启动时自动更新模块和权限信息,恢复为手动更新,再权限管理=》模块中心右上角点击刷新按钮即可

4、bug 修复和更新~

# 前端

0、重新设计了配置功能

1、修复菜单栏展开动画失效的 bug

2、移除了this.$config.getValue全局通用获取配置信息的方法,因为有些配置信息具有敏感性,所有不适合使用通用方法获取,如果前端需要请自行定义接口

3、bug 修复和更新~

# 升级指南

0、修改 build 目录下的module.build.targets文件,直接复制下面代码覆盖即可

<Project>

	<PropertyGroup>
		<ModulesDir>_modules\$(Id)_$(Code)</ModulesDir>
		<ModuleName>$(ModulesDir)\_module.json</ModuleName>
		<ModuleInfo>{"Id": "$(Id)","Name":"$(Name)","Code":"$(Code)","Icon":"$(Icon)","Version":"$(Version)","Description":"$(Description)"}</ModuleInfo>
	</PropertyGroup>

	<Target Name="ModulesBuild" AfterTargets="Build">

		<!--创建modules目录-->
		<MakeDir Directories="$(ModulesDir)"/>

		<!--生成module.json文件,Note:项目需要生成两次,否则Nuget包中的文件不是最新的-->
		<WriteLinesToFile File="$(ModuleName)" Overwrite="true" Lines="$(ModuleInfo)" />

	</Target>

</Project>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

1、调整 build 目录下的Directory.Build.props文件,调整内容如下:

原来的 Id 属性对应的是模块编码,现在调整为模块的编号

新增 Code 属性用于设置模块编码

修改 RootNamespacePrefix 属性中的$(Id)改为$(Code)

如 Common 模块:

<Project>
	<PropertyGroup>
		<Id>01</Id>
		<Code>Common</Code>
		<Name>通用模块</Name>
		<Authors>DarkM</Authors>
		<Icon>database</Icon>
		<Version>1.6.8</Version>
		<Description>DarkM Module $(Id)($(Name)) - $(MSBuildProjectName)</Description>
		<NoWarn>$(NoWarn);1591</NoWarn>
		<LangVersion>Latest</LangVersion>
		<RootNamespacePrefix>DarkM.Module.$(Code)</RootNamespacePrefix>
		<AssemblyName>$(RootNamespacePrefix).$(MSBuildProjectName)</AssemblyName>
		<RootNamespace>$(AssemblyName)</RootNamespace>
		<GenerateDocumentationFile>true</GenerateDocumentationFile>
		<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
		<!--设置打包路径-->
		<PackageOutputPath>$(SolutionDir)\_packages</PackageOutputPath>
		<Company>DarkM</Company>
		<Copyright>DarkM</Copyright>
		<PackageProjectUrl>http://dmdocs.woowis.com/</PackageProjectUrl>
		<RepositoryUrl>https://glab.woowis.com/Woowis/DarkM.Module.Common</RepositoryUrl>
	</PropertyGroup>
</Project>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

2、调整模块的数据库上下文,移除IServiceProvider serviceProvider参数,如 Common 模块:

using DarkM.Lib.Data.Abstractions;
using DarkM.Lib.Data.Core;

namespace DarkM.Module.Common.Infrastructure.Repositories
{
    public class CommonDbContext : DbContext
    {
        public CommonDbContext(IDbContextOptions options) : base(options)
        {
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12

3、Infrastructure中移除DarkM.Lib.Options.Abstraction,安装DarkM.Lib.Config.Abstraction

4、修改模块配置类命名和继承的接口

原来命名采用模块编码+Options方式,现在改为模块编码+Config方式

原来继承IModuleOptions接口,现调整为IConfig接口

移除 Copy 方法

如 Common 模块的配置类:

using DarkM.Lib.Config.Abstractions;

namespace DarkM.Module.Common.Infrastructure
{
    /// <summary>
    /// 通用模块配置
    /// </summary>
    public class CommonConfig : IConfig
    {
        /// <summary>
        /// 启用字典缓存
        /// </summary>
        public bool DictCacheEnabled { get; set; } = true;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

5、移除 WebHost 项目中cache.jsonexcel.jsonjwt.json配置文件

6、移除 WebHost 项目中_modules 目录中当前模块的目录,原来的目录不带编号,现在带有编号了

7、前端的 package.json 新增 id 属性,该属性对应后端的 Id 属性,指当前模块的编号

8、前端新增配置类配置页面,该页面放在 src/components 目录下,且按照config-模块编码的规则新建目录,可参考 Common 中的config-common组件编写

9、前端全局组件注册机制改为自动注册,需要调整src/components/index.js文件,直接用下方代码替换即可

import library from 'darkm-ui/packages/library'
let components = []
const requireComponent = require.context('./', true, /index\.vue$/)
requireComponent.keys().map(fileName => {
  components.push({
    name: `${library.prefix.toLowerCase()}-${fileName.split('/')[1]}`,
    component: requireComponent(fileName).default
  })
})
export default components
1
2
3
4
5
6
7
8
9
10

10、前端 module.js 文件新增 id 属性,如下:

/** 模块信息 */
const pack = require('../package.json')

export default {
  id: pack.id,
  name: pack.title,
  code: pack.code,
  version: pack.version,
  description: pack.description
}
1
2
3
4
5
6
7
8
9
10

11、由于重构了整个配置管理模块,所以需要重新填写配置信息