diff --git a/Admin.NET/Admin.NET.Core/Const/ConfigConst.cs b/Admin.NET/Admin.NET.Core/Const/ConfigConst.cs index 5784d822..6362acdf 100644 --- a/Admin.NET/Admin.NET.Core/Const/ConfigConst.cs +++ b/Admin.NET/Admin.NET.Core/Const/ConfigConst.cs @@ -77,7 +77,7 @@ public class ConfigConst public const string SysValidationLog = "sys_validation_log"; /// - /// 行政区域同步层级 1-省级,2-市级,3-区县级,4-街道级,5-村级 + /// 行政区划同步层级 1-省级,2-市级,3-区县级,4-街道级,5-村级 /// public const string SysRegionSyncLevel = "sys_region_sync_level"; diff --git a/Admin.NET/Admin.NET.Core/SeedData/SysConfigSeedData.cs b/Admin.NET/Admin.NET.Core/SeedData/SysConfigSeedData.cs index abbf7416..bd269069 100644 --- a/Admin.NET/Admin.NET.Core/SeedData/SysConfigSeedData.cs +++ b/Admin.NET/Admin.NET.Core/SeedData/SysConfigSeedData.cs @@ -32,7 +32,7 @@ public class SysConfigSeedData : ISqlSugarEntitySeedData new SysConfig{ Id=1300000000201, Name="发送异常日志邮件", Code=ConfigConst.SysErrorMail, Value="False", SysFlag=YesNoEnum.Y, Remark="是否发送异常日志邮件", OrderNo=110, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") }, new SysConfig{ Id=1300000000211, Name="域登录验证", Code=ConfigConst.SysDomainLogin, Value="False", SysFlag=YesNoEnum.Y, Remark="是否开启域登录验证", OrderNo=120, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") }, new SysConfig{ Id=1300000000221, Name="数据校验日志", Code=ConfigConst.SysValidationLog, Value="True", SysFlag=YesNoEnum.Y, Remark="是否数据校验日志", OrderNo=130, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") }, - new SysConfig{ Id=1300000000231, Name="行政区域同步层级", Code=ConfigConst.SysRegionSyncLevel, Value="3", SysFlag=YesNoEnum.Y, Remark="行政区域同步层级 1-省级,2-市级,3-区县级,4-街道级,5-村级", OrderNo=140, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") }, + new SysConfig{ Id=1300000000231, Name="行政区划同步层级", Code=ConfigConst.SysRegionSyncLevel, Value="3", SysFlag=YesNoEnum.Y, Remark="行政区划同步层级 1-省级,2-市级,3-区县级,4-街道级,5-村级", OrderNo=140, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") }, new SysConfig{ Id=1300000000241, Name="开启强制修改密码", Code=ConfigConst.SysForceChangePassword, Value="False", SysFlag=YesNoEnum.Y, Remark="开启强制修改密码", OrderNo=150, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") }, // 新业务系统记得更改密匙,通过接口(http://localhost:5005/api/sysCommon/smKeyPair)获取 new SysConfig{ Id=1300000000251, Name="国密SM2密匙", Code=ConfigConst.SysSM2Key, Value="04851D329AA3E38C2E7670AFE70E6E70E92F8769CA27C8766B12209A0FFBA4493B603EF7A0B9B1E16F0E8930C0406EA0B179B68DF28E25334BDEC4AE76D907E9E9;3A61D1D30C6302DABFF36201D936D0143EEF0C850AF28C5CA6D5C045AF8C5C8A", SysFlag=YesNoEnum.Y, Remark="国密SM2密匙", OrderNo=160, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-11-21 00:00:00") }, diff --git a/Admin.NET/Admin.NET.Core/SeedData/SysMenuSeedData.cs b/Admin.NET/Admin.NET.Core/SeedData/SysMenuSeedData.cs index 14a5c38e..8d5f03e2 100644 --- a/Admin.NET/Admin.NET.Core/SeedData/SysMenuSeedData.cs +++ b/Admin.NET/Admin.NET.Core/SeedData/SysMenuSeedData.cs @@ -134,7 +134,7 @@ public class SysMenuSeedData : ISqlSugarEntitySeedData new SysMenu{ Id=1310000000373, Pid=1310000000371, Title="删除", Permission="sysCache/delete", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 }, new SysMenu{ Id=1310000000374, Pid=1310000000371, Title="清空", Permission="sysCache/clear", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 }, - new SysMenu{ Id=1310000000381, Pid=1310000000301, Title="行政区域", Path="/platform/region", Name="sysRegion", Component="/system/region/index", Icon="ele-LocationInformation", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=170 }, + new SysMenu{ Id=1310000000381, Pid=1310000000301, Title="行政区划", Path="/platform/region", Name="sysRegion", Component="/system/region/index", Icon="ele-LocationInformation", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=170 }, new SysMenu{ Id=1310000000382, Pid=1310000000381, Title="查询", Permission="sysRegion/page", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 }, new SysMenu{ Id=1310000000383, Pid=1310000000381, Title="编辑", Permission="sysRegion/update", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 }, new SysMenu{ Id=1310000000384, Pid=1310000000381, Title="增加", Permission="sysRegion/add", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 }, diff --git a/Admin.NET/Admin.NET.Core/SeedData/SysRoleMenuSeedData.cs b/Admin.NET/Admin.NET.Core/SeedData/SysRoleMenuSeedData.cs index e58ed513..60ff929d 100644 --- a/Admin.NET/Admin.NET.Core/SeedData/SysRoleMenuSeedData.cs +++ b/Admin.NET/Admin.NET.Core/SeedData/SysRoleMenuSeedData.cs @@ -118,7 +118,7 @@ public class SysRoleMenuSeedData : ISqlSugarEntitySeedData new SysRoleMenu{ Id=1300000000272, RoleId=1300000000101, MenuId=1310000000372 }, new SysRoleMenu{ Id=1300000000273, RoleId=1300000000101, MenuId=1310000000373 }, new SysRoleMenu{ Id=1300000000274, RoleId=1300000000101, MenuId=1310000000374 }, - // 行政区域 + // 行政区划 new SysRoleMenu{ Id=1300000000281, RoleId=1300000000101, MenuId=1310000000381 }, new SysRoleMenu{ Id=1300000000282, RoleId=1300000000101, MenuId=1310000000382 }, new SysRoleMenu{ Id=1300000000283, RoleId=1300000000101, MenuId=1310000000383 }, diff --git a/Admin.NET/Admin.NET.Core/Service/Region/Dto/GDResponse.cs b/Admin.NET/Admin.NET.Core/Service/Region/Dto/GDResponse.cs new file mode 100644 index 00000000..700e8125 --- /dev/null +++ b/Admin.NET/Admin.NET.Core/Service/Region/Dto/GDResponse.cs @@ -0,0 +1,23 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +namespace Admin.NET.Core.Service; + +public class GDResponse +{ + public string info { get; set; } + public string status { get; set; } + public T districts { get; set; } +} + +public class GDRegionResponse +{ + public string adcode { get; set; } + public string name { get; set; } + public string center { get; set; } + public string level { get; set; } + public List districts { get; set; } +} \ No newline at end of file diff --git a/Admin.NET/Admin.NET.Core/Service/Region/SysRegionService.cs b/Admin.NET/Admin.NET.Core/Service/Region/SysRegionService.cs index 058fb3ef..b860d11e 100644 --- a/Admin.NET/Admin.NET.Core/Service/Region/SysRegionService.cs +++ b/Admin.NET/Admin.NET.Core/Service/Region/SysRegionService.cs @@ -4,23 +4,21 @@ // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! -using AngleSharp; -using AngleSharp.Html.Dom; using NewLife.Remoting; namespace Admin.NET.Core.Service; /// -/// 系统行政区域服务 🧩 +/// 系统行政区划服务 🧩 /// -[ApiDescriptionSettings(Order = 310, Description = "行政区域")] +[ApiDescriptionSettings(Order = 310, Description = "行政区划")] public class SysRegionService : IDynamicApiController, ITransient { private readonly SqlSugarRepository _sysRegionRep; private readonly SysConfigService _sysConfigService; - // Url地址-国家统计局行政区域2023年 - private readonly string _url = "http://www.stats.gov.cn/sj/tjbz/tjyqhdmhcxhfdm/2023/index.html"; + // Url地址-高德 + private readonly string _url = "https://restapi.amap.com/v3/config/district?subdistrict"; public SysRegionService(SqlSugarRepository sysRegionRep, SysConfigService sysConfigService) { @@ -29,11 +27,11 @@ public class SysRegionService : IDynamicApiController, ITransient } /// - /// 获取行政区域分页列表 🔖 + /// 获取行政区划分页列表 🔖 /// /// /// - [DisplayName("获取行政区域分页列表")] + [DisplayName("获取行政区划分页列表")] public async Task> Page(PageRegionInput input) { return await _sysRegionRep.AsQueryable() @@ -44,24 +42,24 @@ public class SysRegionService : IDynamicApiController, ITransient } /// - /// 获取行政区域列表 🔖 + /// 获取行政区划列表 🔖 /// /// /// - [DisplayName("获取行政区域列表")] + [DisplayName("获取行政区划列表")] public async Task> GetList([FromQuery] RegionInput input) { return await _sysRegionRep.GetListAsync(u => u.Pid == input.Id); } /// - /// 查询行政区域列表 🔖 + /// 查询行政区划列表 🔖 /// post参数方便参数扩展,调用api不用大浮动修复,参数如果是对象不建议用[FromQuery]方式传参 /// /// /// [ApiDescriptionSettings(Name = "Query"), HttpPost] - [DisplayName("查询行政区域列表")] + [DisplayName("查询行政区划列表")] public async Task> QueryList(QueryRegionInput input) { return await _sysRegionRep.AsQueryable() @@ -73,12 +71,12 @@ public class SysRegionService : IDynamicApiController, ITransient } /// - /// 增加行政区域 🔖 + /// 增加行政区划 🔖 /// /// /// [ApiDescriptionSettings(Name = "Add"), HttpPost] - [DisplayName("增加行政区域")] + [DisplayName("增加行政区划")] public async Task AddRegion(AddRegionInput input) { input.Code = input.Code.Trim(); @@ -104,12 +102,12 @@ public class SysRegionService : IDynamicApiController, ITransient } /// - /// 更新行政区域 🔖 + /// 更新行政区划 🔖 /// /// /// [ApiDescriptionSettings(Name = "Update"), HttpPost] - [DisplayName("更新行政区域")] + [DisplayName("更新行政区划")] public async Task UpdateRegion(UpdateRegionInput input) { input.Code = input.Code.Trim(); @@ -151,12 +149,12 @@ public class SysRegionService : IDynamicApiController, ITransient } /// - /// 删除行政区域 🔖 + /// 删除行政区划 🔖 /// /// /// [ApiDescriptionSettings(Name = "Delete"), HttpPost] - [DisplayName("删除行政区域")] + [DisplayName("删除行政区划")] public async Task DeleteRegion(DeleteRegionInput input) { var regionTreeList = await _sysRegionRep.AsQueryable().ToChildListAsync(u => u.Pid, input.Id, true); @@ -165,131 +163,45 @@ public class SysRegionService : IDynamicApiController, ITransient } /// - /// 同步行政区域(国家统计局) 🔖 + /// 同步行政区划(高德) 🔖 /// + /// /// - [DisplayName("同步行政区域(国家统计局)")] - public async Task SyncRegionStats(SyncInput input) + [DisplayName("同步行政区划(高德)")] + public async Task SyncRegionGD(string key) { + if (string.IsNullOrWhiteSpace(key) || key.Length < 30) + throw Oops.Oh("请正确输入高德地图开发者 Key 值"); + var syncLevel = await _sysConfigService.GetConfigValueByCode(ConfigConst.SysRegionSyncLevel); if (syncLevel < 1 || syncLevel > 5) - syncLevel = 3;//默认区县级 + syncLevel = 3; // 默认区县级 - var context = BrowsingContext.New(AngleSharp.Configuration.Default.WithDefaultLoader()); - var dom = await context.OpenAsync(_url); + var res = await $"{_url}{syncLevel}&key={key}".GetAsync(); + if (!res.IsSuccessStatusCode) return; - // 省级 - var itemList = dom.QuerySelectorAll("table.provincetable tr.provincetr td a"); - if (itemList.Length == 0) - throw Oops.Oh(ErrorCodeEnum.R2005); + var gdResponse = JSON.Deserialize>>(res.Content.ReadAsStringAsync().Result); + if (gdResponse.info != "OK" || gdResponse.districts == null || gdResponse.districts.Count < 1) return; - await _sysRegionRep.DeleteAsync(u => u.Id > 0); - - foreach (IHtmlAnchorElement item in itemList) + var regionList = new List(); + foreach (var item in gdResponse.districts) { - if (!string.IsNullOrWhiteSpace(input.Province) && item.TextContent != input.Province) continue; - var list = new List(); + GetChildren(regionList, item.districts, 1, 0); // 排除一级目录(国家) + } - var region = new SysRegion - { - //Id = YitIdHelper.NextId(), - Pid = 0, - Name = item.TextContent, - Remark = item.Href, - Level = 1, - }; - list.Add(region); + await _sysRegionRep.AsDeleteable().ExecuteCommandAsync(); + _sysRegionRep.Context.Fastest().BulkCopy(regionList); + } - ////// 市级 - if (string.IsNullOrEmpty(item.Href)) continue; - var dom1 = await context.OpenAsync(item.Href); - var itemList1 = dom1.QuerySelectorAll("table.citytable tr.citytr td a"); - for (var i1 = 0; i1 < itemList1.Length; i1 += 2) - { - var item1 = (IHtmlAnchorElement)itemList1[i1 + 1]; - if (!string.IsNullOrWhiteSpace(input.City) && item1.TextContent != input.City) continue; + private void GetChildren(List regionList, List responses, int level, long pid) + { + foreach (var region in responses) + { + var sysRegion = new SysRegion { Id = YitIdHelper.NextId(), Pid = pid, Name = region.name, Code = region.adcode, CityCode = region.adcode, Level = level }; + regionList.Add(sysRegion); - string cityCode = itemList1[i1].TextContent; - // 若URL中查询的一级行政区域缺少Code则通过二级区域填充 - if (list.Count == 1 && !string.IsNullOrEmpty(cityCode)) - { - region.Code = cityCode.Substring(0, 2).PadRight(cityCode.Length, '0'); - region.Id = long.Parse(region.Code); - } - // 同步层级为“1-省级”退出 - if (syncLevel < 2) - break; - - var region1 = new SysRegion - { - Id = long.Parse(cityCode), - Pid = region.Id, - Name = item1.TextContent, - Code = itemList1[i1].TextContent, - Remark = item1.Href, - Level = 2, - }; - - list.Add(region1); - - ////// 区县级 - if (string.IsNullOrEmpty(item1.Href) || syncLevel <= 2) continue; - var dom2 = await context.OpenAsync(item1.Href); - var itemList2 = dom2.QuerySelectorAll("table.countytable tr.countytr td a"); - for (var i2 = 0; i2 < itemList2.Length; i2 += 2) - { - var item2 = (IHtmlAnchorElement)itemList2[i2 + 1]; - var region2 = new SysRegion - { - Id = long.Parse(itemList2[i2].TextContent), - Pid = region1.Id, - Name = item2.TextContent, - Code = itemList2[i2].TextContent, - Remark = item2.Href, - Level = 3, - }; - list.Add(region2); - - ////// 街道级 - if (string.IsNullOrEmpty(item2.Href) || syncLevel <= 3) continue; - var dom3 = await context.OpenAsync(item2.Href); - var itemList3 = dom3.QuerySelectorAll("table.towntable tr.towntr td a"); - for (var i3 = 0; i3 < itemList3.Length; i3 += 2) - { - var item3 = (IHtmlAnchorElement)itemList3[i3 + 1]; - var region3 = new SysRegion - { - Id = long.Parse(itemList3[i3].TextContent), - Pid = region2.Id, - Name = item3.TextContent, - Code = itemList3[i3].TextContent, - Remark = item3.Href, - Level = 4, - }; - list.Add(region3); - - ////// 村级 - if (string.IsNullOrEmpty(item3.Href) || syncLevel <= 4) continue; - var dom4 = await context.OpenAsync(item3.Href); - var itemList4 = dom4.QuerySelectorAll("table.villagetable tr.villagetr td"); - for (var i4 = 0; i4 < itemList4.Length; i4 += 3) - { - list.Add(new SysRegion - { - Id = long.Parse(itemList4[i4].TextContent), - Pid = region3.Id, - Name = itemList4[i4 + 2].TextContent, - Code = itemList4[i4].TextContent, - CityCode = itemList4[i4 + 1].TextContent, - Level = 5, - }); - } - } - } - } - - //按省份同步快速写入提升同步效率,全部一次性写入容易出现从统计局获取数据失败 - _sysRegionRep.Context.Fastest().BulkCopy(list); + if (region.districts.Count > 0) + GetChildren(regionList, region.districts, level++, sysRegion.Id); } } @@ -348,11 +260,8 @@ public class SysRegionService : IDynamicApiController, ITransient // 如果存在指定行政区划则删除 if (await _sysRegionRep.IsAnyAsync(u => u.Id == code)) - { await DeleteRegion(new DeleteRegionInput { Id = code }); - } - await _sysRegionRep.AsDeleteable().ExecuteCommandAsync(); return await _sysRegionRep.AsInsertable(areaList).ExecuteCommandAsync(); } @@ -443,7 +352,7 @@ public class SysRegionService : IDynamicApiController, ITransient } /// - /// 根据层级获取行政区域数据 + /// 根据层级获取行政区划数据 /// /// /// diff --git a/Web/src/api-services/apis/sys-region-api.ts b/Web/src/api-services/apis/sys-region-api.ts index de351bac..ff24f5b2 100644 --- a/Web/src/api-services/apis/sys-region-api.ts +++ b/Web/src/api-services/apis/sys-region-api.ts @@ -26,7 +26,6 @@ import { DeleteRegionInput } from '../models'; import { GenOrgInput } from '../models'; import { PageRegionInput } from '../models'; import { QueryRegionInput } from '../models'; -import { SyncInput } from '../models'; import { TiandituInput } from '../models'; import { UpdateRegionInput } from '../models'; /** @@ -37,7 +36,7 @@ export const SysRegionApiAxiosParamCreator = function (configuration?: Configura return { /** * - * @summary 增加行政区域 🔖 + * @summary 增加行政区划 🔖 * @param {AddRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -85,7 +84,7 @@ export const SysRegionApiAxiosParamCreator = function (configuration?: Configura }, /** * - * @summary 删除行政区域 🔖 + * @summary 删除行政区划 🔖 * @param {DeleteRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -181,7 +180,7 @@ export const SysRegionApiAxiosParamCreator = function (configuration?: Configura }, /** * - * @summary 获取行政区域列表 🔖 + * @summary 获取行政区划列表 🔖 * @param {number} id 主键Id * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -233,7 +232,7 @@ export const SysRegionApiAxiosParamCreator = function (configuration?: Configura }, /** * - * @summary 获取行政区域分页列表 🔖 + * @summary 获取行政区划分页列表 🔖 * @param {PageRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -281,7 +280,7 @@ export const SysRegionApiAxiosParamCreator = function (configuration?: Configura }, /** * - * @summary 查询行政区域列表 🔖 post参数方便参数扩展,调用api不用大浮动修复,参数如果是对象不建议用[FromQuery]方式传参 + * @summary 查询行政区划列表 🔖 post参数方便参数扩展,调用api不用大浮动修复,参数如果是对象不建议用[FromQuery]方式传参 * @param {QueryRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -327,6 +326,55 @@ export const SysRegionApiAxiosParamCreator = function (configuration?: Configura options: localVarRequestOptions, }; }, + /** + * + * @summary 同步行政区划(高德) 🔖 + * @param {string} key + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + apiSysRegionSyncRegionGDKeyPost: async (key: string, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'key' is not null or undefined + if (key === null || key === undefined) { + throw new RequiredError('key','Required parameter key was null or undefined when calling apiSysRegionSyncRegionGDKeyPost.'); + } + const localVarPath = `/api/sysRegion/syncRegionGD/{key}` + .replace(`{${"key"}}`, encodeURIComponent(String(key))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, 'https://example.com'); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication Bearer required + // http bearer authentication required + if (configuration && configuration.accessToken) { + const accessToken = typeof configuration.accessToken === 'function' + ? await configuration.accessToken() + : await configuration.accessToken; + localVarHeaderParameter["Authorization"] = "Bearer " + accessToken; + } + + const query = new URLSearchParams(localVarUrlObj.search); + for (const key in localVarQueryParameter) { + query.set(key, localVarQueryParameter[key]); + } + for (const key in options.params) { + query.set(key, options.params[key]); + } + localVarUrlObj.search = (new URLSearchParams(query)).toString(); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash, + options: localVarRequestOptions, + }; + }, /** * * @summary 同步行政区划数据(国家地名信息库,最多支持2级深度) 🔖 @@ -376,54 +424,6 @@ export const SysRegionApiAxiosParamCreator = function (configuration?: Configura options: localVarRequestOptions, }; }, - /** - * - * @summary 同步行政区域(国家统计局) 🔖 - * @param {SyncInput} [body] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - apiSysRegionSyncRegionStatsPost: async (body?: SyncInput, options: AxiosRequestConfig = {}): Promise => { - const localVarPath = `/api/sysRegion/syncRegionStats`; - // use dummy base URL string because the URL constructor only accepts absolute URLs. - const localVarUrlObj = new URL(localVarPath, 'https://example.com'); - let baseOptions; - if (configuration) { - baseOptions = configuration.baseOptions; - } - const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; - const localVarHeaderParameter = {} as any; - const localVarQueryParameter = {} as any; - - // authentication Bearer required - // http bearer authentication required - if (configuration && configuration.accessToken) { - const accessToken = typeof configuration.accessToken === 'function' - ? await configuration.accessToken() - : await configuration.accessToken; - localVarHeaderParameter["Authorization"] = "Bearer " + accessToken; - } - - localVarHeaderParameter['Content-Type'] = 'application/json-patch+json'; - - const query = new URLSearchParams(localVarUrlObj.search); - for (const key in localVarQueryParameter) { - query.set(key, localVarQueryParameter[key]); - } - for (const key in options.params) { - query.set(key, options.params[key]); - } - localVarUrlObj.search = (new URLSearchParams(query)).toString(); - let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; - localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; - const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json'; - localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || ""); - - return { - url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash, - options: localVarRequestOptions, - }; - }, /** * * @summary 同步行政区划数据(天地图行政区划) 🔖 @@ -474,7 +474,7 @@ export const SysRegionApiAxiosParamCreator = function (configuration?: Configura }, /** * - * @summary 更新行政区域 🔖 + * @summary 更新行政区划 🔖 * @param {UpdateRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -531,7 +531,7 @@ export const SysRegionApiFp = function(configuration?: Configuration) { return { /** * - * @summary 增加行政区域 🔖 + * @summary 增加行政区划 🔖 * @param {AddRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -545,7 +545,7 @@ export const SysRegionApiFp = function(configuration?: Configuration) { }, /** * - * @summary 删除行政区域 🔖 + * @summary 删除行政区划 🔖 * @param {DeleteRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -573,7 +573,7 @@ export const SysRegionApiFp = function(configuration?: Configuration) { }, /** * - * @summary 获取行政区域列表 🔖 + * @summary 获取行政区划列表 🔖 * @param {number} id 主键Id * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -587,7 +587,7 @@ export const SysRegionApiFp = function(configuration?: Configuration) { }, /** * - * @summary 获取行政区域分页列表 🔖 + * @summary 获取行政区划分页列表 🔖 * @param {PageRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -601,7 +601,7 @@ export const SysRegionApiFp = function(configuration?: Configuration) { }, /** * - * @summary 查询行政区域列表 🔖 post参数方便参数扩展,调用api不用大浮动修复,参数如果是对象不建议用[FromQuery]方式传参 + * @summary 查询行政区划列表 🔖 post参数方便参数扩展,调用api不用大浮动修复,参数如果是对象不建议用[FromQuery]方式传参 * @param {QueryRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -613,6 +613,20 @@ export const SysRegionApiFp = function(configuration?: Configuration) { return axios.request(axiosRequestArgs); }; }, + /** + * + * @summary 同步行政区划(高德) 🔖 + * @param {string} key + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysRegionSyncRegionGDKeyPost(key: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { + const localVarAxiosArgs = await SysRegionApiAxiosParamCreator(configuration).apiSysRegionSyncRegionGDKeyPost(key, options); + return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { + const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; + return axios.request(axiosRequestArgs); + }; + }, /** * * @summary 同步行政区划数据(国家地名信息库,最多支持2级深度) 🔖 @@ -627,20 +641,6 @@ export const SysRegionApiFp = function(configuration?: Configuration) { return axios.request(axiosRequestArgs); }; }, - /** - * - * @summary 同步行政区域(国家统计局) 🔖 - * @param {SyncInput} [body] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async apiSysRegionSyncRegionStatsPost(body?: SyncInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { - const localVarAxiosArgs = await SysRegionApiAxiosParamCreator(configuration).apiSysRegionSyncRegionStatsPost(body, options); - return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { - const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; - return axios.request(axiosRequestArgs); - }; - }, /** * * @summary 同步行政区划数据(天地图行政区划) 🔖 @@ -657,7 +657,7 @@ export const SysRegionApiFp = function(configuration?: Configuration) { }, /** * - * @summary 更新行政区域 🔖 + * @summary 更新行政区划 🔖 * @param {UpdateRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -680,7 +680,7 @@ export const SysRegionApiFactory = function (configuration?: Configuration, base return { /** * - * @summary 增加行政区域 🔖 + * @summary 增加行政区划 🔖 * @param {AddRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -690,7 +690,7 @@ export const SysRegionApiFactory = function (configuration?: Configuration, base }, /** * - * @summary 删除行政区域 🔖 + * @summary 删除行政区划 🔖 * @param {DeleteRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -710,7 +710,7 @@ export const SysRegionApiFactory = function (configuration?: Configuration, base }, /** * - * @summary 获取行政区域列表 🔖 + * @summary 获取行政区划列表 🔖 * @param {number} id 主键Id * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -720,7 +720,7 @@ export const SysRegionApiFactory = function (configuration?: Configuration, base }, /** * - * @summary 获取行政区域分页列表 🔖 + * @summary 获取行政区划分页列表 🔖 * @param {PageRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -730,7 +730,7 @@ export const SysRegionApiFactory = function (configuration?: Configuration, base }, /** * - * @summary 查询行政区域列表 🔖 post参数方便参数扩展,调用api不用大浮动修复,参数如果是对象不建议用[FromQuery]方式传参 + * @summary 查询行政区划列表 🔖 post参数方便参数扩展,调用api不用大浮动修复,参数如果是对象不建议用[FromQuery]方式传参 * @param {QueryRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -738,6 +738,16 @@ export const SysRegionApiFactory = function (configuration?: Configuration, base async apiSysRegionQueryPost(body?: QueryRegionInput, options?: AxiosRequestConfig): Promise> { return SysRegionApiFp(configuration).apiSysRegionQueryPost(body, options).then((request) => request(axios, basePath)); }, + /** + * + * @summary 同步行政区划(高德) 🔖 + * @param {string} key + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysRegionSyncRegionGDKeyPost(key: string, options?: AxiosRequestConfig): Promise> { + return SysRegionApiFp(configuration).apiSysRegionSyncRegionGDKeyPost(key, options).then((request) => request(axios, basePath)); + }, /** * * @summary 同步行政区划数据(国家地名信息库,最多支持2级深度) 🔖 @@ -748,16 +758,6 @@ export const SysRegionApiFactory = function (configuration?: Configuration, base async apiSysRegionSyncRegionMcaCodePost(code: number, options?: AxiosRequestConfig): Promise> { return SysRegionApiFp(configuration).apiSysRegionSyncRegionMcaCodePost(code, options).then((request) => request(axios, basePath)); }, - /** - * - * @summary 同步行政区域(国家统计局) 🔖 - * @param {SyncInput} [body] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - */ - async apiSysRegionSyncRegionStatsPost(body?: SyncInput, options?: AxiosRequestConfig): Promise> { - return SysRegionApiFp(configuration).apiSysRegionSyncRegionStatsPost(body, options).then((request) => request(axios, basePath)); - }, /** * * @summary 同步行政区划数据(天地图行政区划) 🔖 @@ -770,7 +770,7 @@ export const SysRegionApiFactory = function (configuration?: Configuration, base }, /** * - * @summary 更新行政区域 🔖 + * @summary 更新行政区划 🔖 * @param {UpdateRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -790,7 +790,7 @@ export const SysRegionApiFactory = function (configuration?: Configuration, base export class SysRegionApi extends BaseAPI { /** * - * @summary 增加行政区域 🔖 + * @summary 增加行政区划 🔖 * @param {AddRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -801,7 +801,7 @@ export class SysRegionApi extends BaseAPI { } /** * - * @summary 删除行政区域 🔖 + * @summary 删除行政区划 🔖 * @param {DeleteRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -823,7 +823,7 @@ export class SysRegionApi extends BaseAPI { } /** * - * @summary 获取行政区域列表 🔖 + * @summary 获取行政区划列表 🔖 * @param {number} id 主键Id * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -834,7 +834,7 @@ export class SysRegionApi extends BaseAPI { } /** * - * @summary 获取行政区域分页列表 🔖 + * @summary 获取行政区划分页列表 🔖 * @param {PageRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -845,7 +845,7 @@ export class SysRegionApi extends BaseAPI { } /** * - * @summary 查询行政区域列表 🔖 post参数方便参数扩展,调用api不用大浮动修复,参数如果是对象不建议用[FromQuery]方式传参 + * @summary 查询行政区划列表 🔖 post参数方便参数扩展,调用api不用大浮动修复,参数如果是对象不建议用[FromQuery]方式传参 * @param {QueryRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -854,6 +854,17 @@ export class SysRegionApi extends BaseAPI { public async apiSysRegionQueryPost(body?: QueryRegionInput, options?: AxiosRequestConfig) : Promise> { return SysRegionApiFp(this.configuration).apiSysRegionQueryPost(body, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @summary 同步行政区划(高德) 🔖 + * @param {string} key + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof SysRegionApi + */ + public async apiSysRegionSyncRegionGDKeyPost(key: string, options?: AxiosRequestConfig) : Promise> { + return SysRegionApiFp(this.configuration).apiSysRegionSyncRegionGDKeyPost(key, options).then((request) => request(this.axios, this.basePath)); + } /** * * @summary 同步行政区划数据(国家地名信息库,最多支持2级深度) 🔖 @@ -865,17 +876,6 @@ export class SysRegionApi extends BaseAPI { public async apiSysRegionSyncRegionMcaCodePost(code: number, options?: AxiosRequestConfig) : Promise> { return SysRegionApiFp(this.configuration).apiSysRegionSyncRegionMcaCodePost(code, options).then((request) => request(this.axios, this.basePath)); } - /** - * - * @summary 同步行政区域(国家统计局) 🔖 - * @param {SyncInput} [body] - * @param {*} [options] Override http request option. - * @throws {RequiredError} - * @memberof SysRegionApi - */ - public async apiSysRegionSyncRegionStatsPost(body?: SyncInput, options?: AxiosRequestConfig) : Promise> { - return SysRegionApiFp(this.configuration).apiSysRegionSyncRegionStatsPost(body, options).then((request) => request(this.axios, this.basePath)); - } /** * * @summary 同步行政区划数据(天地图行政区划) 🔖 @@ -889,7 +889,7 @@ export class SysRegionApi extends BaseAPI { } /** * - * @summary 更新行政区域 🔖 + * @summary 更新行政区划 🔖 * @param {UpdateRegionInput} [body] * @param {*} [options] Override http request option. * @throws {RequiredError} diff --git a/Web/src/api-services/models/index.ts b/Web/src/api-services/models/index.ts index 19ad1277..0cf6633f 100644 --- a/Web/src/api-services/models/index.ts +++ b/Web/src/api-services/models/index.ts @@ -346,7 +346,6 @@ export * from './sql-sugar-paged-list-user-output'; export * from './status-enum'; export * from './struct-layout-attribute'; export * from './swagger-submit-url-body'; -export * from './sync-input'; export * from './sync-sys-ldap-input'; export * from './sys-code-gen'; export * from './sys-code-gen-config'; diff --git a/Web/src/api-services/models/sync-input.ts b/Web/src/api-services/models/sync-input.ts deleted file mode 100644 index ff770a62..00000000 --- a/Web/src/api-services/models/sync-input.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** - * Admin.NET 通用权限开发平台 - * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。
👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! - * - * OpenAPI spec version: 1.0.0 - * - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - */ - - /** - * - * - * @export - * @interface SyncInput - */ -export interface SyncInput { - - /** - * 指定省 - * - * @type {string} - * @memberof SyncInput - */ - province?: string | null; - - /** - * 指定市 - * - * @type {string} - * @memberof SyncInput - */ - city?: string | null; -} diff --git a/Web/src/api-services/models/sys-oauth-user.ts b/Web/src/api-services/models/sys-oauth-user.ts index 5e8a0503..d45a42c5 100644 --- a/Web/src/api-services/models/sys-oauth-user.ts +++ b/Web/src/api-services/models/sys-oauth-user.ts @@ -85,6 +85,14 @@ export interface SysOAuthUser { */ isDelete?: boolean; + /** + * 邮箱 + * + * @type {string} + * @memberof SysOAuthUser + */ + email?: string | null; + /** * 系统用户Id * @@ -147,14 +155,6 @@ export interface SysOAuthUser { */ avatar?: string | null; - /** - * 邮箱 - * - * @type {string} - * @memberof SysOAuthUser - */ - email?: string | null; - /** * 手机号码 * diff --git a/Web/src/views/system/region/component/syncStatsParam.vue b/Web/src/views/system/region/component/syncGdParam.vue similarity index 72% rename from Web/src/views/system/region/component/syncStatsParam.vue rename to Web/src/views/system/region/component/syncGdParam.vue index 78d3ac5d..d0667676 100644 --- a/Web/src/views/system/region/component/syncStatsParam.vue +++ b/Web/src/views/system/region/component/syncGdParam.vue @@ -9,25 +9,20 @@
- 不建议不指定任何省市名称直接生成全国区划数据,数据超大! + 此操作会更新行政区划表所有数据,请慎重操作!!!
- - - - - - - + +