😎1、默认系统自带种子禁止更新 2、修复微信支付证书找不到问题 3、优化初始化表和种子流程
This commit is contained in:
parent
e3fef395bc
commit
61e79b6a51
@ -20,7 +20,7 @@
|
|||||||
"MerchantId": "1500000001", // 商户平台的商户号
|
"MerchantId": "1500000001", // 商户平台的商户号
|
||||||
"MerchantV3Secret": "3aaaaaaaaaaaaaaaaaaaaaaaaaaaaaoo", // 商户平台的APIv3密钥
|
"MerchantV3Secret": "3aaaaaaaaaaaaaaaaaaaaaaaaaaaaaoo", // 商户平台的APIv3密钥
|
||||||
"MerchantCertificateSerialNumber": "66aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0", // 商户平台的证书序列号
|
"MerchantCertificateSerialNumber": "66aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0", // 商户平台的证书序列号
|
||||||
"MerchantCertificatePrivateKey": "\\WxPayCert\\apiclient_key.pem" // 商户平台的API证书私钥(apiclient_key.pem文件内容)
|
"MerchantCertificatePrivateKey": "WxPayCert/apiclient_key.pem" // 商户平台的API证书私钥(apiclient_key.pem文件内容)
|
||||||
},
|
},
|
||||||
// 支付回调
|
// 支付回调
|
||||||
"PayCallBack": {
|
"PayCallBack": {
|
||||||
|
|||||||
@ -9,6 +9,7 @@ namespace Admin.NET.Core.SeedData;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 代码生成模板配置表 表种子数据
|
/// 代码生成模板配置表 表种子数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[IgnoreUpdateSeed]
|
||||||
public class SysCodeGenTemplateSeedData : ISqlSugarEntitySeedData<SysCodeGenTemplate>
|
public class SysCodeGenTemplateSeedData : ISqlSugarEntitySeedData<SysCodeGenTemplate>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -9,6 +9,7 @@ namespace Admin.NET.Core;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统配置表种子数据
|
/// 系统配置表种子数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[IgnoreUpdateSeed]
|
||||||
public class SysConfigSeedData : ISqlSugarEntitySeedData<SysConfig>
|
public class SysConfigSeedData : ISqlSugarEntitySeedData<SysConfig>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -9,6 +9,7 @@ namespace Admin.NET.Core;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统字典值表种子数据
|
/// 系统字典值表种子数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[IgnoreUpdateSeed]
|
||||||
public class SysDictDataSeedData : ISqlSugarEntitySeedData<SysDictData>
|
public class SysDictDataSeedData : ISqlSugarEntitySeedData<SysDictData>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -9,6 +9,7 @@ namespace Admin.NET.Core;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统字典类型表种子数据
|
/// 系统字典类型表种子数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[IgnoreUpdateSeed]
|
||||||
public class SysDictTypeSeedData : ISqlSugarEntitySeedData<SysDictType>
|
public class SysDictTypeSeedData : ISqlSugarEntitySeedData<SysDictType>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -9,6 +9,7 @@ namespace Admin.NET.Core;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统菜单表种子数据
|
/// 系统菜单表种子数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[IgnoreUpdateSeed]
|
||||||
public class SysMenuSeedData : ISqlSugarEntitySeedData<SysMenu>
|
public class SysMenuSeedData : ISqlSugarEntitySeedData<SysMenu>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -9,6 +9,7 @@ namespace Admin.NET.Core;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统通知公告表种子数据
|
/// 系统通知公告表种子数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[IgnoreUpdateSeed]
|
||||||
public class SysNoticeSeedData : ISqlSugarEntitySeedData<SysNotice>
|
public class SysNoticeSeedData : ISqlSugarEntitySeedData<SysNotice>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -9,6 +9,7 @@ namespace Admin.NET.Core;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统职位表种子数据
|
/// 系统职位表种子数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[IgnoreUpdateSeed]
|
||||||
public class SysPosSeedData : ISqlSugarEntitySeedData<SysPos>
|
public class SysPosSeedData : ISqlSugarEntitySeedData<SysPos>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -9,6 +9,7 @@ namespace Admin.NET.Core;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统角色菜单表种子数据
|
/// 系统角色菜单表种子数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[IgnoreUpdateSeed]
|
||||||
public class SysRoleMenuSeedData : ISqlSugarEntitySeedData<SysRoleMenu>
|
public class SysRoleMenuSeedData : ISqlSugarEntitySeedData<SysRoleMenu>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -9,6 +9,7 @@ namespace Admin.NET.Core;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统角色表种子数据
|
/// 系统角色表种子数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[IgnoreUpdateSeed]
|
||||||
public class SysRoleSeedData : ISqlSugarEntitySeedData<SysRole>
|
public class SysRoleSeedData : ISqlSugarEntitySeedData<SysRole>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -9,6 +9,7 @@ namespace Admin.NET.Core;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统租户表种子数据
|
/// 系统租户表种子数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[IgnoreUpdateSeed]
|
||||||
public class SysTenantSeedData : ISqlSugarEntitySeedData<SysTenant>
|
public class SysTenantSeedData : ISqlSugarEntitySeedData<SysTenant>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -9,6 +9,7 @@ namespace Admin.NET.Core;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统用户扩展机构表种子数据
|
/// 系统用户扩展机构表种子数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[IgnoreUpdateSeed]
|
||||||
public class SysUserExtOrgSeedData : ISqlSugarEntitySeedData<SysUserExtOrg>
|
public class SysUserExtOrgSeedData : ISqlSugarEntitySeedData<SysUserExtOrg>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -9,6 +9,7 @@ namespace Admin.NET.Core;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 系统用户角色表种子数据
|
/// 系统用户角色表种子数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[IgnoreUpdateSeed]
|
||||||
public class SysUserRoleSeedData : ISqlSugarEntitySeedData<SysUserRole>
|
public class SysUserRoleSeedData : ISqlSugarEntitySeedData<SysUserRole>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -41,6 +41,11 @@ public class TableOutput
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string TableComment { get; set; }
|
public string TableComment { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 表字段个数
|
||||||
|
/// </summary>
|
||||||
|
public int ColumnCount { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 程序集名称
|
/// 程序集名称
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -124,18 +124,8 @@ public class SysCodeGenConfigService : IDynamicApiController, ITransient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//var sugarTableType = typeof(SugarTable);
|
|
||||||
//bool IsMyAttribute(Attribute[] o)
|
|
||||||
//{
|
|
||||||
// foreach (Attribute a in o)
|
|
||||||
// {
|
|
||||||
// if (a.GetType() == sugarTableType)
|
|
||||||
// return true;
|
|
||||||
// }
|
|
||||||
// return false;
|
|
||||||
//}
|
|
||||||
Type[] cosType = types.Where(u => u.IsDefined(typeof(SugarTable), false) && !u.GetCustomAttributes<IgnoreTableAttribute>().Any()).ToArray();
|
|
||||||
|
|
||||||
|
Type[] cosType = types.Where(u => u.IsDefined(typeof(SugarTable), false) && !u.GetCustomAttributes<IgnoreTableAttribute>().Any()).ToArray();
|
||||||
var entityInfos = new List<EntityInfo>();
|
var entityInfos = new List<EntityInfo>();
|
||||||
foreach (var ct in cosType)
|
foreach (var ct in cosType)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -181,8 +181,9 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
|
|
||||||
var config = _dbConnectionOptions.ConnectionConfigs.FirstOrDefault(u => configId.Equals(u.ConfigId));
|
var config = _dbConnectionOptions.ConnectionConfigs.FirstOrDefault(u => configId.Equals(u.ConfigId));
|
||||||
|
|
||||||
IEnumerable<EntityInfo> entityInfos = await _codeGenConfigService.GetEntityInfos(); // 获取所有实体定义
|
// 获取所有实体列表并按照程序集和实体名称进行排序
|
||||||
entityInfos = entityInfos.OrderBy(u => u.EntityName.StartsWith("Sys") ? 1 : 0).ThenBy(u => u.EntityName);
|
IEnumerable<EntityInfo> entityInfos = await _codeGenConfigService.GetEntityInfos();
|
||||||
|
entityInfos = entityInfos.OrderBy(u => u.Type.Assembly.ManifestModule.Name).ThenBy(u => u.EntityName);
|
||||||
|
|
||||||
var tableOutputList = new List<TableOutput>();
|
var tableOutputList = new List<TableOutput>();
|
||||||
foreach (var item in entityInfos)
|
foreach (var item in entityInfos)
|
||||||
@ -205,6 +206,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
EntityName = item.EntityName,
|
EntityName = item.EntityName,
|
||||||
TableName = table?.Name,
|
TableName = table?.Name,
|
||||||
TableComment = item.TableDescription,
|
TableComment = item.TableDescription,
|
||||||
|
ColumnCount = item.Type.GetProperties().Length,
|
||||||
AssemblyName = item.Type.Assembly.ManifestModule.Name
|
AssemblyName = item.Type.Assembly.ManifestModule.Name
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,6 +10,8 @@ public class DataInitItemOutput
|
|||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
public int Count { get; set; }
|
||||||
|
|
||||||
public string AssemblyName { get; set; }
|
public string AssemblyName { get; set; }
|
||||||
|
|
||||||
public string Description { get; set; }
|
public string Description { get; set; }
|
||||||
|
|||||||
@ -562,8 +562,12 @@ public class SysDatabaseService : IDynamicApiController, ITransient
|
|||||||
var outputList = new List<DataInitItemOutput>();
|
var outputList = new List<DataInitItemOutput>();
|
||||||
foreach (var seedDataType in seedDataTypes)
|
foreach (var seedDataType in seedDataTypes)
|
||||||
{
|
{
|
||||||
|
var instance = Activator.CreateInstance(seedDataType);
|
||||||
|
var hasDataMethod = seedDataType.GetMethod("HasData");
|
||||||
|
var seedData = ((IEnumerable)hasDataMethod?.Invoke(instance, null))?.Cast<object>().ToArray() ?? [];
|
||||||
|
|
||||||
var entityType = seedDataType.GetInterfaces().First().GetGenericArguments().First();
|
var entityType = seedDataType.GetInterfaces().First().GetGenericArguments().First();
|
||||||
outputList.Add(new DataInitItemOutput() { Name = seedDataType.Name, AssemblyName = seedDataType.Assembly.ManifestModule.Name, Description = entityType.GetCustomAttribute<SugarTable>().TableDescription + "种子数据" });
|
outputList.Add(new DataInitItemOutput() { Name = seedDataType.Name, Count = seedData.Length, AssemblyName = seedDataType.Assembly.ManifestModule.Name, Description = entityType.GetCustomAttribute<SugarTable>().TableDescription + "种子数据" });
|
||||||
}
|
}
|
||||||
return outputList;
|
return outputList;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,7 +52,7 @@ public class SysWechatPayService : IDynamicApiController, ITransient
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private WechatTenpayClient CreateTenpayClient()
|
private WechatTenpayClient CreateTenpayClient()
|
||||||
{
|
{
|
||||||
var cerFilePath = App.WebHostEnvironment.ContentRootPath + _wechatPayOptions.MerchantCertificatePrivateKey;
|
var cerFilePath = Path.Combine(App.WebHostEnvironment.ContentRootPath, _wechatPayOptions.MerchantCertificatePrivateKey.Replace("/", Path.DirectorySeparatorChar.ToString()));
|
||||||
|
|
||||||
if (!File.Exists(cerFilePath))
|
if (!File.Exists(cerFilePath))
|
||||||
Log.Warning("商户证书文件不存在:" + cerFilePath);
|
Log.Warning("商户证书文件不存在:" + cerFilePath);
|
||||||
|
|||||||
@ -26,6 +26,12 @@ export interface DataInitItemOutput {
|
|||||||
*/
|
*/
|
||||||
name?: string | null;
|
name?: string | null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {number}
|
||||||
|
* @memberof DataInitItemOutput
|
||||||
|
*/
|
||||||
|
count?: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {string}
|
* @type {string}
|
||||||
* @memberof DataInitItemOutput
|
* @memberof DataInitItemOutput
|
||||||
|
|||||||
@ -68,6 +68,14 @@ export interface TableOutput {
|
|||||||
*/
|
*/
|
||||||
tableComment?: string | null;
|
tableComment?: string | null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表字段个数
|
||||||
|
*
|
||||||
|
* @type {number}
|
||||||
|
* @memberof TableOutput
|
||||||
|
*/
|
||||||
|
columnCount?: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 程序集名称
|
* 程序集名称
|
||||||
*
|
*
|
||||||
|
|||||||
@ -9,6 +9,9 @@
|
|||||||
初始化表结构<span v-if="state.entitySelectedRows.length > 0">({{ state.entitySelectedRows.length }})</span>
|
初始化表结构<span v-if="state.entitySelectedRows.length > 0">({{ state.entitySelectedRows.length }})</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
|
<template #row_columnCount="{ row }">
|
||||||
|
<el-tag type="primary"> {{ row.columnCount }} </el-tag>
|
||||||
|
</template>
|
||||||
</vxe-grid>
|
</vxe-grid>
|
||||||
</pane>
|
</pane>
|
||||||
|
|
||||||
@ -19,6 +22,9 @@
|
|||||||
初始化种子数据<span v-if="state.seedSelectedRows.length > 0">({{ state.seedSelectedRows.length }})</span>
|
初始化种子数据<span v-if="state.seedSelectedRows.length > 0">({{ state.seedSelectedRows.length }})</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
|
<template #row_count="{ row }">
|
||||||
|
<el-tag type="primary"> {{ row.count }} </el-tag>
|
||||||
|
</template>
|
||||||
</vxe-grid>
|
</vxe-grid>
|
||||||
</pane>
|
</pane>
|
||||||
</splitpanes>
|
</splitpanes>
|
||||||
@ -57,10 +63,11 @@ const optionsEntity = useVxeTable(
|
|||||||
columns: [
|
columns: [
|
||||||
{ type: 'checkbox', width: 40, fixed: 'left' },
|
{ type: 'checkbox', width: 40, fixed: 'left' },
|
||||||
{ type: 'seq', title: '序号', width: 50, fixed: 'left' },
|
{ type: 'seq', title: '序号', width: 50, fixed: 'left' },
|
||||||
{ field: 'entityName', title: '实体名称', showOverflow: 'tooltip', sortable: false },
|
{ field: 'entityName', title: '实体名称', showOverflow: 'tooltip', align: 'left' },
|
||||||
{ field: 'tableName', title: '表名称', showOverflow: 'tooltip', sortable: false },
|
{ field: 'tableName', title: '库表名称', showOverflow: 'tooltip', align: 'left' },
|
||||||
{ field: 'tableComment', title: '描述', showOverflow: 'tooltip', sortable: false },
|
{ field: 'tableComment', title: '描述', showOverflow: 'tooltip', align: 'left' },
|
||||||
{ field: 'assemblyName', title: '程序集', showOverflow: 'tooltip', sortable: false },
|
{ field: 'columnCount', title: '字段个数', showOverflow: 'tooltip', slots: { default: 'row_columnCount' } },
|
||||||
|
{ field: 'assemblyName', title: '所属程序集', showOverflow: 'tooltip', align: 'left' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -128,9 +135,10 @@ const optionsSeed = useVxeTable(
|
|||||||
columns: [
|
columns: [
|
||||||
{ type: 'checkbox', width: 40, fixed: 'left' },
|
{ type: 'checkbox', width: 40, fixed: 'left' },
|
||||||
{ type: 'seq', title: '序号', width: 50, fixed: 'left' },
|
{ type: 'seq', title: '序号', width: 50, fixed: 'left' },
|
||||||
{ field: 'name', title: '种子名称', showOverflow: 'tooltip', sortable: false },
|
{ field: 'name', title: '种子名称', showOverflow: 'tooltip', align: 'left' },
|
||||||
{ field: 'description', title: '描述', showOverflow: 'tooltip', sortable: false },
|
{ field: 'description', title: '描述', showOverflow: 'tooltip', align: 'left' },
|
||||||
{ field: 'assemblyName', title: '程序集', showOverflow: 'tooltip', sortable: false },
|
{ field: 'count', title: '种子个数', showOverflow: 'tooltip', slots: { default: 'row_count' } },
|
||||||
|
{ field: 'assemblyName', title: '所属程序集', showOverflow: 'tooltip', align: 'left' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user