diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/im_manager.iml b/.idea/im_manager.iml new file mode 100644 index 0000000..5e764c4 --- /dev/null +++ b/.idea/im_manager.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ba0a7e2 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..d843143 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,960 @@ +# HotGo 项目开发规范 + +**生成或修改任何代码前,必须完整阅读本文档。** +本规范是项目唯一事实来源,所有新增代码必须严格对齐现有模块风格,不得自创新的代码模式。 + +--- + +## 技术栈 + +| 层 | 技术 | +|----|----------------------------------------------------------------| +| 后端语言 | Go,module 名 `hotgo` | +| 后端框架 | GoFrame v2(gdb、ghttp、gcron、gerror、gctx、gerror、gjson、gvar) | +| 前端框架 | Vue 3 + Vite + TypeScript | +| UI 组件库 | **Naive UI**(优先使用,未经允许不得引入其他 UI 库) | +| 状态管理 | Pinia | +| HTTP 客户端 | 项目封装 `@/utils/http/axios`(`http.request`),禁止直接使用 axios | + +--- + +## 后端目录结构 + +``` +server/ +├── addons/ # 插件模块(每个插件独立微架构,见"插件开发"章节) +│ ├── modules/ # 隐式注册文件(每个插件一个 .go,仅含 import) +│ └── / # 插件目录,与主模块结构镜像 +├── api/admin// # 主模块 HTTP 契约:Req/Res + g.Meta 路由声明 +├── internal/ +│ ├── consts/ # 全局常量与字典选项(枚举在此定义并注册) +│ ├── global/ # 全局公用变量(谨慎添加,尽量少用) +│ ├── controller/admin/sys/ # 薄控制器,只做参数透传,不含业务逻辑 +│ ├── crons/ # 主模块定时任务注册与处理 +│ ├── queues/ # 主模块消息队列消费者注册与处理 +│ ├── logic/sys/ # 业务实现(sSysXxx),init() 注册到 service +│ ├── library/ # 内部基础库(addons、dict、hgorm、cache、queue、cron 等) +│ ├── service/ # 接口声明(ISysXxx)+ 注册函数 +│ ├── dao/ # 对外 DAO;internal/dao/internal/ 为 CLI 生成,禁止手改 +│ ├── model/ +│ │ ├── entity/ # 表结构体(CLI 生成,禁止手改) +│ │ ├── do/ # ORM 写入结构(CLI 生成,禁止手改) +│ │ └── input/sysin/ # 业务入参、出参、过滤结构 +│ └── router/ +│ ├── admin.go # 主路由,末尾调用 genrouter.Register() +│ └── genrouter/ # 每个生成模块一个文件,init() 追加到 LoginRequiredRouter +├── resource/ +│ ├── generate/default/curd/ # 主模块 CRUD 代码生成模板(参考,禁止直接修改) +│ └── generate/default/addon/ # 插件脚手架代码生成模板(参考,禁止直接修改) +└── utility/ # 通用工具:convert、excel、validate 等 +``` + +--- + +## 后端分层约定 + +### 分层职责(禁止跨层调用) + +``` +api(HTTP契约) → controller(参数透传) → service(接口) → logic(业务实现) → dao(数据访问) +``` + +- **controller 层**:不写任何业务逻辑,只转调 service +- **logic 层**:不出现 HTTP 相关代码,所有校验通过 `Filter()` 或 `g.Validator()` 完成 +- **dao 层**:`internal/dao/internal/` 由 CLI 自动生成,禁止手改 + +--- + +### 1. API 层 `api/admin//.go` + +- 每个接口一对 `XxxReq` / `XxxRes`,`g.Meta` 声明路由 +- GET 接口用 `method:"get"`,写操作用 `method:"post"` +- 请求体嵌入 `sysin.XxxInp`,响应体嵌入对应 Model 或空 `struct{}` + +```go +type ListReq struct { + g.Meta `path:"/xxxModule/list" method:"get" tags:"XXX模块" summary:"获取XXX列表"` + sysin.XxxListInp +} +type ListRes struct { + form.PageRes + List []*sysin.XxxListModel `json:"list" dc:"数据列表"` +} +``` + +### 2. Controller 层 `internal/controller/admin/sys/.go` + +- 变量:`var XxxModule = cXxxModule{}`,类型:`type cXxxModule struct{}` +- 只做参数转发和结果组装,禁止直接操作 dao 或写业务逻辑 + +```go +func (c *cXxxModule) List(ctx context.Context, req *xxxmodule.ListReq) (res *xxxmodule.ListRes, err error) { + list, totalCount, err := service.SysXxxModule().List(ctx, &req.XxxListInp) + if err != nil { + return + } + if list == nil { + list = []*sysin.XxxListModel{} + } + res = new(xxxmodule.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} +``` + +### 3. Service 层 `internal/service/sys.go` + +- 在已有文件中**追加**接口声明和注册函数,禁止新建文件 +- 声明 `ISysXxxModule` 接口,提供 `SysXxxModule()` 获取函数和 `RegisterSysXxxModule()` 注册函数 + +### 4. Logic 层 `internal/logic/sys/.go` + +- 结构体:`type sSysXxxModule struct{}` +- `init()` 里调用 `service.RegisterSysXxxModule(NewSysXxxModule())` +- `Model()` 方法:`return handler.Model(dao.XxxTable.Ctx(ctx), option...)` +- 列名引用必须用 `dao.XxxTable.Columns().FieldName`,禁止硬编码字符串字段名 +- `Edit` 方法以 `in.Id > 0` 区分更新/新增,更新用 `XxxUpdateFields`,新增用 `XxxInsertFields` +- 字段校验在 `sysin` 的 `Filter(ctx)` 方法完成,logic 层不重复校验 + +### 5. Model 层 `internal/model/input/sysin/.go` + +| 类型 | 用途 | +|------|------| +| `XxxUpdateFields` | 更新时字段白名单 | +| `XxxInsertFields` | 新增时字段白名单 | +| `XxxEditInp` | 嵌入 `entity.XxxTable`,含 `Filter()` 校验方法 | +| `XxxListInp` | 列表查询入参,嵌入 `form.PageInp` | +| `XxxListModel` | 列表返回字段 | +| `XxxViewInp` / `XxxViewModel` | 详情入参/出参 | +| `XxxDeleteInp` | 删除入参(通常含 `Ids []int64`) | +| `XxxStatusInp`、`XxxMaxSortInp` 等 | 其他操作 | + +### 6. 路由注册 `internal/router/genrouter/.go` + +```go +package genrouter + +import "hotgo/internal/controller/admin/sys" + +func init() { + LoginRequiredRouter = append(LoginRequiredRouter, sys.XxxModule) // XXX模块 +} +``` + +新建此文件即可,`genrouter/init.go` 通过 `init()` 链自动加载,无需修改 `admin.go`。 + +--- + +## 字典与枚举规范 + +**字典由后端统一维护**,前端通过固定接口拉取,禁止在前端硬编码枚举值。 + +### 后端:定义与注册(`internal/consts/` 下对应文件) + +```go +// 1. 定义常量 +const ( + XxxStatusEnabled = 1 // 启用 + XxxStatusDisable = 2 // 禁用 +) + +// 2. 定义选项(选择合适的样式函数) +var XxxStatusOptions = []*model.Option{ + dict.GenSuccessOption(XxxStatusEnabled, "启用"), + dict.GenWarningOption(XxxStatusDisable, "禁用"), +} + +// 3. 在 init() 中注册(同文件) +func init() { + dict.RegisterEnums("XxxStatusOptions", "XXX状态选项", XxxStatusOptions) +} +``` + +**样式函数选择规则:** + +| 函数 | 适用场景 | +|------|---------| +| `dict.GenSuccessOption` | 正常、启用、成功 | +| `dict.GenWarningOption` | 待处理、禁用、警告 | +| `dict.GenErrorOption` | 失败、封禁、危险 | +| `dict.GenInfoOption` | 信息类、中性状态 | +| `dict.GenPrimaryOption` | 主要操作、强调 | +| `dict.GenDefaultOption` | 默认、无特殊含义 | +| `dict.GenHashOption` | 不确定数量的动态枚举 | + +### 后端:Logic 层中使用字典 + +```go +// 获取标签文本 +label := dict.GetOptionLabel(consts.XxxStatusOptions, in.Status) + +// 校验是否为合法值 +if !dict.HasOptionKey(consts.XxxStatusOptions, in.Status) { + return gerror.New("状态值不合法") +} +``` + +### 前端:加载与使用字典 + +**加载**(在 `model.ts` 的 `loadOptions()` 中): + +```ts +export function loadOptions() { + dict.loadOptions(['XxxStatusOptions', 'sys_normal_disable']); +} +``` + +**在 `model.ts` 的 columns 中渲染字典标签:** + +```ts +import { useDictStore } from '@/store/modules/dict'; +const dict = useDictStore(); + +// columns 中 +{ + title: '状态', + key: 'status', + render(row) { + return dict.getLabel('XxxStatusOptions', row.status); + } +} +``` + +**在搜索表单 schemas 中使用字典下拉:** + +```ts +{ + field: 'status', + component: 'NSelect', + label: '状态', + componentProps: { + options: computed(() => dict.getOptions('XxxStatusOptions')), + placeholder: '请选择状态', + }, +} +``` + +--- + +## 插件(Addon)开发规范 + +> 定位:独立、临时性、工具类型的功能推荐插件化开发,例如小游戏、广告管理、文章管理、小程序、微商城等。插件之间完全隔离,方便多项目复用。 + +### 插件目录结构 + +每个插件拥有完整的独立微架构,与主模块结构镜像,但 **包路径前缀为 `hotgo/addons//`**: + +``` +server/addons// +├── main.go # 插件入口:定义 module 结构体,实现 Module 接口,init() 注册 +├── global/ +│ ├── global.go # 插件级全局变量 +│ └── init.go # Init(ctx, skeleton),GetSkeleton() 方法 +├── api/ +│ ├── admin/ # 后台接口契约(同主模块 api 写法) +│ ├── api/ # 前台 API 接口契约 +│ └── home/ # 首页接口契约(如有) +├── controller/ +│ ├── admin/sys/ # 后台薄控制器 +│ ├── api/ # 前台控制器 +│ └── home/ # 首页控制器(如有) +├── logic/ +│ ├── logic.go # 匿名导入各 logic 子包触发 init() +│ └── sys/ # 业务实现(同主模块 logic 写法) +├── service/ # 插件内接口声明与注册(独立,不与主模块 service 混用) +├── model/ +│ └── input/sysin/ # 插件内入参/出参(调用主模块服务时继承主模块 input 结构) +├── router/ +│ ├── admin.go # 注册后台路由,使用 addons.RouterPrefix() 获取路由前缀 +│ ├── api.go # 注册前台路由 +│ ├── home.go # 注册首页路由(如有) +│ ├── websocket.go # 注册 WebSocket 路由(如有) +│ └── genrouter/ +│ ├── init.go # 插件版 genrouter:Register() 使用插件前缀 +│ └── *.go # 每个生成模块一个文件,追加到插件 LoginRequiredRouter +├── consts/ # 插件内常量与字典(同主模块 consts 写法) +├── crons/ # 插件定时任务(可选) +├── queues/ # 插件消息队列消费者(可选) +└── resource/ # 插件静态资源与模板(可选) +``` + +**对应前端目录:** + +``` +web/src/ +├── api/addons// # 插件前端 API 封装 +└── views/addons// # 插件前端页面 +``` + +### 插件入口 `main.go` + +```go +package + +import ( + "context" + "github.com/gogf/gf/v2/net/ghttp" + _ "hotgo/addons//crons" + "hotgo/addons//global" + _ "hotgo/addons//logic" + _ "hotgo/addons//queues" + "hotgo/addons//router" + "hotgo/internal/library/addons" + "hotgo/internal/service" + "sync" +) + +type module struct { + skeleton *addons.Skeleton + ctx context.Context + sync.Mutex +} + +func init() { newModule() } + +func newModule() { + m := &module{ + skeleton: &addons.Skeleton{ + Label: "插件显示名", + Name: "", // 与目录名一致 + Group: 1, + Brief: "简介", + Description: "详细描述", + Author: "作者", + Version: "v1.0.0", + }, + ctx: gctx.New(), + } + addons.RegisterModule(m) +} + +func (m *module) Start(option *addons.Option) (err error) { + global.Init(m.ctx, m.skeleton) + option.Server.Group("/", func(group *ghttp.RouterGroup) { + group.Middleware(service.Middleware().Addon) + router.Admin(m.ctx, group) + router.Api(m.ctx, group) + }) + return +} +// 其余方法:Stop、Ctx、GetSkeleton、Install、Upgrade、UnInstall(默认留空) +``` + +### 插件路由前缀规则 + +``` +后台:/admin//接口路径 → 对应 controller/admin/sys/ +前台:/api//接口路径 → 对应 controller/api/ +首页:/home//接口路径 → 对应 controller/home/ +WebSocket:/socket//接口路径 +``` + +路由前缀通过 `addons.RouterPrefix(ctx, consts.AppAdmin, global.GetSkeleton().Name)` 自动生成,**禁止在路由文件里硬编码路径前缀**。 + +### 插件 genrouter 与主模块的区别 + +插件 `genrouter/init.go` 的 `Register()` 函数需要传入 `ctx` 和 `group`,并使用插件路由前缀: + +```go +// 插件 genrouter/init.go +func Register(ctx context.Context, group *ghttp.RouterGroup) { + prefix := addons.RouterPrefix(ctx, consts.AppAdmin, global.GetSkeleton().Name) + group.Group(prefix, func(group *ghttp.RouterGroup) { + group.Middleware(service.Middleware().AdminAuth) + if len(LoginRequiredRouter) > 0 { + group.Bind(LoginRequiredRouter...) + } + }) +} + +// 插件 genrouter/.go +func init() { + LoginRequiredRouter = append(LoginRequiredRouter, sys.XxxModule) +} +``` + +参考实现:`server/addons/hgexample/router/genrouter/` + +### 插件调用主模块服务 + +**在插件 input 层继承主模块 input 结构,解耦参数依赖**,避免 import cycle: + +```go +// 插件 model/input/sysin/config.go +package sysin + +import "hotgo/internal/model/input/sysin" + +type UpdateConfigInp struct { + sysin.UpdateAddonsConfigInp +} +``` + +```go +// 插件 logic 中调用主模块服务 +import isc "hotgo/internal/service" + +func (s *sSysConfig) UpdateConfigByGroup(ctx context.Context, in sysin.UpdateConfigInp) error { + in.UpdateAddonsConfigInp.AddonName = global.GetSkeleton().Name + return isc.SysAddonsConfig().UpdateConfigByGroup(ctx, in.UpdateAddonsConfigInp) +} +``` + +### 插件获取自身信息 + +```go +// 插件内部 +global.GetSkeleton() + +// 任意位置判断当前请求是否为插件请求 +contexts.IsAddonRequest(ctx) +contexts.GetAddonName(ctx) +``` + +### 插件隐式注册 + +在 `server/addons/modules/` 下新建 `.go`,内容仅含一行匿名导入: + +```go +package modules + +import _ "hotgo/addons/" +``` + +### 新增插件检查清单 + +**后端:** +- [ ] `addons//main.go` — 插件入口,实现 Module 接口 +- [ ] `addons//global/` — global.go + init.go +- [ ] `addons/modules/.go` — 隐式注册 +- [ ] `addons//service/` — 插件内接口声明(独立包) +- [ ] `addons//logic/logic.go` — 匿名导入触发 init() +- [ ] `addons//logic/sys/.go` — 业务实现 +- [ ] `addons//model/input/sysin/.go` — 入参/出参 +- [ ] `addons//api/admin//.go` — API 契约 +- [ ] `addons//controller/admin/sys/.go` — 薄控制器 +- [ ] `addons//router/admin.go` — 路由注册 +- [ ] `addons//router/genrouter/init.go` — 插件 genrouter +- [ ] `addons//router/genrouter/.go` — 模块路由追加 + +**前端:** +- [ ] `web/src/api/addons//index.ts` — API 封装 +- [ ] `web/src/views/addons//model.ts` — State、schemas、columns +- [ ] `web/src/views/addons//index.vue` — 列表页 +- [ ] `web/src/views/addons//edit.vue` — 编辑页 + +参考实现:`server/addons/hgexample/`(完整插件示例)、`server/resource/generate/default/addon/`(生成模板) + +--- + +## 标准 CRUD 接口清单 + +| 接口 | method | 说明 | +|------|--------|------| +| `/xxx/list` | GET | 分页列表 | +| `/xxx/view` | GET | 详情 | +| `/xxx/edit` | POST | 新增/编辑(id>0 为编辑) | +| `/xxx/delete` | POST | 删除(支持批量,传 ids) | +| `/xxx/status` | POST | 启用/禁用状态切换 | +| `/xxx/switch` | POST | 开关字段切换 | +| `/xxx/maxSort` | GET | 获取最大排序值 | +| `/xxx/export` | GET | 导出列表 | + +按实际需求裁剪,不强制全部实现。 + +--- + +## 前端目录结构 + +``` +web/src/ +├── api//index.ts # HTTP 请求封装 +├── views// +│ ├── index.vue # 列表页 +│ ├── edit.vue # 新增/编辑弹窗 +│ └── model.ts # State 类、rules、schemas、columns、loadOptions +├── components/ # 通用组件(BasicTable、BasicForm、BasicModal 等) +├── store/modules/dict.ts # 字典 store(loadOptions、getLabel、getOptions) +└── utils/ + ├── http/axios.ts # HTTP 封装(http.request / jumpExport) + └── dateUtil.ts # 日期工具(defRangeShortcuts 等) +``` + +--- + +## 前端编码约定 + +### API 文件 `api//index.ts` + +- 使用 `http.request`,禁止直接使用 axios +- 函数名与接口语义一致:`List`、`Edit`、`Delete`、`View`、`Status`、`Switch`、`Export`、`MaxSort` +- 导出接口用 `jumpExport('/xxx/export', params)` + +```ts +import { http, jumpExport } from '@/utils/http/axios'; + +export function List(params) { + return http.request({ url: '/xxxModule/list', method: 'get', params }); +} +export function Edit(params) { + return http.request({ url: '/xxxModule/edit', method: 'POST', params }); +} +export function Export(params) { + jumpExport('/xxxModule/export', params); +} +``` + +### model.ts 结构 + +- `class State`:属性与后端 entity 字段对应,提供合理默认值 +- `newState()`:工厂函数,支持深拷贝(`cloneDeep`) +- `rules`:Naive UI 表单校验规则 +- `schemas`:搜索栏 `FormSchema[]`(`ref` 包装) +- `columns`:表格列定义,含权限守卫的操作用 `hasPermission(['/xxx/edit'])` +- `loadOptions()`:调用 `dict.loadOptions([...])`,预加载字典数据 + +### 组件使用规范 + +**必须优先使用 Naive UI 原生组件**,能用 Naive UI 实现的禁止自行封装替代组件: + +| 场景 | 必须使用的组件 | +|------|--------------| +| 表格 | 项目封装 `BasicTable`(基于 Naive UI) | +| 表单 | 项目封装 `BasicForm`(基于 Naive UI) | +| 弹窗 | `n-modal` 或项目封装 `BasicModal` | +| 按钮 | `n-button`,类型用 `primary`/`default`/`error` 等语义值 | +| 选择器 | `n-select`(字典下拉)、`n-tree-select`(树形) | +| 开关 | `n-switch`,配合 Switch 接口 | +| 输入框 | `n-input` | +| 日期选择 | `n-date-picker`,范围选择配合 `defRangeShortcuts()` | +| 图片渲染 | `renderImage(url)` | +| 文件渲染 | `renderFile(url)` | +| 成员信息 | `renderPopoverMemberSumma(summa)` | + +**禁止行为:** +- 禁止引入 Element Plus、Ant Design Vue 等其他 UI 库 +- 禁止使用内联 style(使用 Naive UI 的 props 或 class) +- 禁止在模板里硬编码字典值文本,必须通过 `dict.getLabel()` 渲染 + +### 权限控制 + +```ts +import { usePermission } from '@/hooks/web/usePermission'; +const { hasPermission } = usePermission(); + +// 模板中 +v-if="hasPermission(['/xxxModule/edit'])" + +// columns 中开关操作 +disabled: !hasPermission(['/xxxModule/switch']) +``` + +权限标识与后端路由路径保持一致,**路由由后端菜单数据驱动,禁止在源码里硬编码路由路径**。 + +### Vue 3 代码规范 + +- 使用 Composition API(` + +``` + +#### 菜单表主要字段解释 + +- 代码片段:[server/internal/model/input/adminin/menu.go](../../server/internal/model/input/adminin/menu.go) + +```go +type MenuRouteMeta struct { + // 解释参考:https://naive-ui-admin-docs.vercel.app/guide/router.html#%E5%A4%9A%E7%BA%A7%E8%B7%AF%E7%94%B1 + Title string `json:"title"` // 菜单名称 一般必填 + // Disabled bool `json:"disabled,omitempty"` // 禁用菜单 + Icon string `json:"icon,omitempty"` // 菜单图标 + KeepAlive bool `json:"keepAlive,omitempty"` // 缓存该路由 + Hidden bool `json:"hidden,omitempty"` // 隐藏菜单 + Sort int `json:"sort,omitempty"` // 排序越小越排前 + AlwaysShow bool `json:"alwaysShow,omitempty"` // 取消自动计算根路由模式 + ActiveMenu string `json:"activeMenu,omitempty"` // 当路由设置了该属性,则会高亮相对应的侧边栏。 + // 这在某些场景非常有用,比如:一个列表页路由为:/list/basic-list + // 点击进入详情页,这时候路由为/list/basic-info/1,但你想在侧边栏高亮列表的路由,就可以进行如下设置 + // 注意是配置高亮路由 `name`,不是path + IsRoot bool `json:"isRoot,omitempty"` // 是否跟路由 顶部混合菜单,必须传 true,否则左侧会显示异常(场景就是,分割菜单之后,当一级菜单没有子菜单) + FrameSrc string `json:"frameSrc,omitempty" ` // 内联外部地址 + Permissions string `json:"permissions,omitempty"` // 菜单包含权限集合,满足其中一个就会显示 + Affix bool `json:"affix,omitempty"` // 是否固定 设置为 true 之后 多页签不可删除 + Type int `json:"type"` // 菜单类型 +} +``` + + +#### API权限验证流程 + +```mermaid + +graph TD + A(用户请求API) --> B(验证中间件
server/internal/logic/middleware/admin_auth.go) + B -->|没有登录,但API需要登录| H(提示登录) + B -->|没有登录,但API不需要登录| G(验证通过,进入业务) + B -->|已登录| C(检查用户角色是否拥有API权限
server/internal/logic/admin/role.go,方法:Verify) -->|有权限| G(验证通过,进入业务) + C -->|API无需验证权限| G(验证通过,进入业务流程) + C -->|无权限| D(提示无权限) +``` + +#### 菜单权限添加或修改后多久生效? + +- API权限实时生效,web后台菜单刷新页面后生效,无需重启服务 + + +### 二、数据权限 + +> 数据权限是某人只能看到某些数据,可以为某人设置一定的数据范围,让其只能看到允许他看到的数据。 + +> 例如:公司存在多个销售部门,不同的部门仅能查看到自己所属部门下的数据;再如:用户有多级代理商,只能查看自己和自己下级的数据。 + +#### 目前已经支持的数据权限如下 + +| 数据范围 | 描述 | +|---------|--------------------------------------------| +| 全部权限 | 不做过滤,可以查看所有数据 | +| 当前部门 | 仅可以看到所属部门下的数据 | +| 当前以及下部门 | 仅可以看到所属以及下级部门的数据 | +| 自定义部门 | 可以看到设置的指定部门,支持多个 | +| 仅自己 | 仅可以看到自己的数据 | +| 自己和直属下级 | 仅可以看到自己和直属下级的数据,直属下级是指当前用户往下1级的用户 | +| 自己和全部下级 | 仅可以看到自己和全部下级的数据,全部下级是指当前用户所有的下级用户,包含其下级的下级 | + +#### 如何区分部门和下级用户? + +- 在实际使用时,部门更多的是在公司或机构中使用,可以通过在 组织管理 -> 后台用户 ->为用户绑定部门 +- 下级用户在代理商或分销系统中比较常见,后台用户由谁添加的,那么被添加的用户就是其下级用户 + +#### 如何判断数据是谁的? + +- 在数据库建表时,只要表中包含字段:`created_by`或`member_id`即可过滤 [仅自己、自己和直属下级、自己和全部下级] 类型的数据权限 + +#### 如何在具体业务中使用数据权限过滤? + +- 只需在查询、更新或删除等ORM链式操作中加入相应`Handler`方法即可 + +- 如果你想对Handler有更多详细了解,请查看:https://goframe.org/pages/viewpage.action?pageId=20087340 + +- 下面提供一个简单使用例子: + +```go +package main + +import ( + "context" + "hotgo/internal/dao" + "hotgo/internal/library/hgorm/handler" +) + +func test(ctx context.Context) { + dao.AdminPost.Ctx(ctx).Where("id", 1).Handler(handler.FilterAuth).Scan(&res) +} +``` + +- 如果表中没有字段:`created_by`或`member_id`,也可以使用自定义字段方法来过滤数据权限,如下: + +```go +package main + +import ( + "context" + "hotgo/internal/dao" + "hotgo/internal/library/hgorm/handler" +) + +func test(ctx context.Context) { + dao.AdminPost.Ctx(ctx).Where("id", 1).Handler(handler.FilterAuthWithField("test_field")).Scan(&res) +} +``` + + +- 过滤方法实现请参考:[server/internal/library/hgorm/handler/filter_auth.go](../../server/internal/library/hgorm/handler/filter_auth.go) + + diff --git a/docs/guide-zh-CN/sys-catalog.md b/docs/guide-zh-CN/sys-catalog.md new file mode 100644 index 0000000..bf9d040 --- /dev/null +++ b/docs/guide-zh-CN/sys-catalog.md @@ -0,0 +1,176 @@ +## 目录结构 + +目录 + +- 服务端 +- web前端 +- uniapp端(待开放) + + +#### 服务端 +``` +/server +├── addons +│ ├── modules +│ ├── xxx插件 +│ | ├── api +│ | ├── controller +│ | ├── crons +│ | ├── global +│ | ├── logic +│ | ├── model +│ | ├── queues +│ | ├── resource +│ | ├── router +│ | ├── service +│ | ├── main.go +│ | └── README.md +├── api +│ ├── admin +│ ├── api +│ ├── home +│ ├── websocket +├── hack +├── internal +│ ├── cmd +│ ├── consts +│ ├── controller +│ ├── crons +│ ├── dao +│ ├── global +│ ├── library +│ ├── logic +│ ├── model +│ | ├── do +│ │ ├── entity +│ │ └── input +│ ├── packed +│ ├── queues +│ ├── router +│ ├── service +│ └── websocket +├── manifest +├── resource +├── storage +├── utility +├── go.mod +├── main.go +├── Makefile +└── README.md +``` + +| 目录 | 描述 | +|--------------------------|-----------------------------------------------------------------| +| 基于gf的工程目录结构做了部分调整 | 参考地址: https://goframe.org/pages/viewpage.action?pageId=30740166 | +| **addons** | 所有的插件模块都放在这里 | +| --- modules | 为插件模块提供隐式初始化 | +| --- xxx插件 | 插件模块名称 | +| --- --- api | 对外接口。提供服务的输入/输出数据结构定义 | +| --- --- --- admin | 后台接口 | +| --- --- --- api | 前台通用接口,包含PC端、移动端接口等 | +| --- --- --- home | 前台PC端、H5端页面 | +| --- --- --- websocket | 可同时为多应用提供websocket接口 | +| --- --- consts | 插件内主要的常量定义 | +| --- --- controller | 接收/解析用户输入参数的入口/接口层,也可以理解为控制器 | +| --- --- crons | 项目中由系统统一接管的定时任务处理 | +| --- --- global | 项目内主要的全局变量和系统的一些初始化操作 | +| --- --- logic | 业务逻辑封装管理,特定的业务逻辑实现和封装往往是项目中最复杂的部分 | +| --- --- model | 数据结构管理模块,管理数据实体对象,以及输入与输出数据结构定义 | +| --- --- --- input | 对内接口。用于controller调用service或service之间调用时的输入/输出结构定义,以及输入过滤和预处理 | +| --- queues | 为项目内所有的消息队列的消费者提供统一的初始化和处理 | +| --- resource | 静态资源文件。这些文件往往可以通过 资源打包/镜像编译 的形式注入到发布文件中 | +| --- --- router | 注册对外接口和分组中间件 | +| --- --- service | 用于业务模块解耦的接口定义层具体的接口实现在logic中进行注入 | +| --- main.go | 插件始化文件和模块插拔接口 | +| **api** | 对外接口。提供服务的输入/输出数据结构定义 | +| --- admin | 后台接口 | +| --- api | 前台通用接口,包含PC端、移动端接口等 | +| --- home | 前台PC端、H5端页面 | +| --- websocket | 可同时为多应用提供websocket接口 | +| **hack** | 存放项目开发工具、脚本等内容例如,CLI工具的配置,各种shell/bat脚本等文件 | +| **internal** | 业务逻辑存放目录通过Golang internal特性对外部隐藏可见性 | +| --- cmd | 命令行管理目录可以管理维护多个命令行 | +| --- consts | 项目内主要的常量定义 | +| --- controller | 接收/解析用户输入参数的入口/接口层,也可以理解为控制器 | +| --- crons | 项目中由系统统一接管的定时任务处理 | +| --- dao | 数据访问对象,这是一层抽象对象,用于和底层数据库交互,仅包含最基础的 CURD 方法 | +| --- global | 项目内主要的全局变量和系统的一些初始化操作 | +| --- library | 项目内常用功能的扩展库 | +| --- logic | 业务逻辑封装管理,特定的业务逻辑实现和封装往往是项目中最复杂的部分 | +| --- model | 数据结构管理模块,管理数据实体对象,以及输入与输出数据结构定义 | +| --- --- do | 用于dao数据操作中业务模型与实例模型转换,由工具维护,用户不能修改 | +| --- --- entity | 与数据集合绑定的程序数据结构定义,通常和数据表一一对应 | +| --- --- input | 对内接口。用于controller调用service或service之间调用时的输入/输出结构定义,以及输入过滤和预处理 | +| --- packed | 将静态资源打包进可执行文件,无需单独部署 | +| --- queues | 为项目内所有的消息队列的消费者提供统一的初始化和处理 | +| --- router | 注册对外接口和分组中间件 | +| --- service | 用于业务模块解耦的接口定义层具体的接口实现在logic中进行注入 | +| **manifest** | 包含程序编译、部署、运行、配置的文件常见内容如下: | +| --- config | 配置文件存放目录 | +| --- docker | Docker镜像相关依赖文件,脚本文件等等 | +| --- deploy | 部署相关的文件默认提供了Kubernetes集群化部署的Yaml模板,通过kustomize管理 | +| **resource** | 静态资源文件。这些文件往往可以通过 资源打包/镜像编译 的形式注入到发布文件中 | +| **storage** | 本地数据存储目录,例如文件缓存、磁盘队列数据、sql数据文件、SSL证书等 | +| **utility** | 一些常用的工具方法 | +| go.mod | 使用Go Module包管理的依赖描述文件 | +| main.go | 程序入口文件 | +| Makefile | 程序构建发布和开发快捷指令 | +| README.md | 项目介绍文件 | + + + + +#### web前端 +``` +/web +├── build # 打包脚本相关 +│ ├── config # 配置文件 +│ ├── generate # 生成器 +│ ├── script # 脚本 +│ └── vite # vite配置 +├── mock # mock文件夹 +├── public # 公共静态资源目录 +├── src # 主目录 +│ ├── api # 接口文件 +│ ├── assets # 资源文件 +│ │ ├── icons # icon sprite 图标文件夹 +│ │ ├── images # 项目存放图片的文件夹 +│ │ └── svg # 项目存放svg图片的文件夹 +│ ├── components # 公共组件 +│ ├── design # 样式文件 +│ ├── directives # 指令 +│ ├── enums # 枚举/常量 +│ ├── hooks # hook +│ │ ├── component # 组件相关hook +│ │ ├── core # 基础hook +│ │ ├── event # 事件相关hook +│ │ ├── setting # 配置相关hook +│ │ └── web # web相关hook +│ ├── layouts # 布局文件 +│ │ ├── default # 默认布局 +│ │ ├── iframe # iframe布局 +│ │ └── page # 页面布局 +│ ├── locales # 多语言 +│ ├── logics # 逻辑 +│ ├── main.ts # 主入口 +│ ├── router # 路由配置 +│ ├── settings # 项目配置 +│ │ ├── componentSetting.ts # 组件配置 +│ │ ├── designSetting.ts # 样式配置 +│ │ ├── encryptionSetting.ts # 加密配置 +│ │ ├── localeSetting.ts # 多语言配置 +│ │ ├── projectSetting.ts # 项目配置 +│ │ └── siteSetting.ts # 站点配置 +│ ├── store # 数据仓库 +│ ├── utils # 工具类 +│ └── views # 页面 +├── types # 类型文件 +├── vite.config.ts # vite配置文件 +└── windi.config.ts # windcss配置文件 +``` + + +#### uniapp端 +``` +// 待开放 +``` \ No newline at end of file diff --git a/docs/guide-zh-CN/sys-code.md b/docs/guide-zh-CN/sys-code.md new file mode 100644 index 0000000..d76d2a3 --- /dev/null +++ b/docs/guide-zh-CN/sys-code.md @@ -0,0 +1,379 @@ +## 代码生成 + +目录 + +- 使用条件 +- 模板配置 +- CLI配置 +- 生成CRUD表格 +- 生成树形表格 +- 多数据库使用 +- 自定义生成模板 +- 内置gf-cli +- 指定gf-cli版本 +- 指定数据库驱动 + + +> 在HotGo中可以通过后台开发工具快速的一键生成CRUD,自动生成Api、控制器、业务逻辑、Web页面、表单组件、菜单权限等。 + + +### 使用条件 + +- hotgo 版本号 >= 2.13.1 +- 使用前必须先看 [数据库](sys-db.md) + + +### 生成模板配置 + +- 配置路径:server/manifest/config/config.yaml +```yaml +# 生成代码 +hggen: + allowedIPs: [ "127.0.0.1", "*" ] # 白名单,*代表所有,只有允许的IP后台才能使用生成代码功能 + selectDbs: [ "default" ] # 可选生成表的数据库配置名称,支持多库 + disableTables: [ "hg_sys_gen_codes","hg_admin_role_casbin" ] # 禁用的表,禁用以后将不会在选择表中看到 + delimiters: [ "@{", "}" ] # 模板引擎变量分隔符号 + # 生成应用模型,所有生成模板允许自定义,可以参考default模板进行改造 + application: + # CRUD和关系树列表模板 + crud: + templates: + # 默认的主包模板 + - group: "default" # 分组名称 + isAddon: false # 是否为插件模板 false|true + masterPackage: "sys" # 主包名称,需和controllerPath、logicPath、inputPath保持关联 + templatePath: "./resource/generate/default/curd" # 模板路径 + apiPath: "./api/admin" # goApi生成路径 + controllerPath: "./internal/controller/admin/sys" # 控制器生成路径 + logicPath: "./internal/logic/sys" # 主要业务生成路径 + inputPath: "./internal/model/input/sysin" # 表单过滤器生成路径 + routerPath: "./internal/router/genrouter" # 生成路由表路径 + sqlPath: "./storage/data/generate" # 生成sql语句路径 + webApiPath: "../web/src/api" # webApi生成路径 + webViewsPath: "../web/src/views" # web页面生成路径 + + # 默认的插件包模板,{$name}会自动替换成实际的插件名称 + - group: "addon" # 分组名称 + isAddon: true # 是否为插件模板 false|true + masterPackage: "sys" # 主包名称,需和controllerPath、logicPath、inputPath保持关联 + templatePath: "./resource/generate/default/curd" # 模板路径 + apiPath: "./addons/{$name}/api/admin" # goApi生成路径 + controllerPath: "./addons/{$name}/controller/admin/sys" # 控制器生成路径 + logicPath: "./addons/{$name}/logic/sys" # 主要业务生成路径 + inputPath: "./addons/{$name}/model/input/sysin" # 表单过滤器生成路径 + routerPath: "./addons/{$name}/router/genrouter" # 生成路由表路径 + sqlPath: "./storage/data/generate/addons" # 生成sql语句路径 + webApiPath: "../web/src/api/addons/{$name}" # webApi生成路径 + webViewsPath: "../web/src/views/addons/{$name}" # web页面生成路径 + + # 消息队列模板 + queue: + templates: + - group: "default" + templatePath: "./resource/generate/default/queue" + + # 定时任务模板 + cron: + templates: + - group: "default" + templatePath: "./resource/generate/default/cron" + + # 生成插件模块,通过后台创建新插件时使用的模板,允许自定义,可以参考default模板进行改造 + addon: + srcPath: "./resource/generate/default/addon" # 生成模板路径 + webApiPath: "../web/src/api/addons/{$name}" # webApi生成路径 + webViewsPath: "../web/src/views/addons/{$name}" # web页面生成路径 +``` + +### 生成CLI配置 + +- hotgo在生成dao、service配置时,默认了和gf官方一致的配置方式和代码生成规则。所以无论你是通过hotgo亦或gf命令生成,最终代码格式完全一致,遵循一致的代码规范。 + +- 配置路径:[server/hack/config.yaml](../../server/hack/config.yaml) + +```yaml +gfcli: + build: + name: "hotgo" # 编译后的可执行文件名称 + # arch: "all" #不填默认当前系统架构,可选:386,amd64,arm,all + # system: "all" #不填默认当前系统平台,可选:linux,darwin,windows,all + mod: "none" + cgo: 0 + packSrc: "resource" # 将resource目录打包进可执行文件,静态资源无需单独部署 + packDst: "internal/packed/packed.go" # 打包后生成的Go文件路径,一般使用相对路径指定到本项目目录中 + version: "" + output: "./temp/hotgo" # 可执行文件生成路径 + extra: "" + + gen: + dao: + - link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true" +# - link: "pgsql:postgres:hg123456@tcp(127.0.0.1:5432)/hotgo" + group: "default" # 分组 使用hotgo代码生成功能时必须填 + # tables: "" # 指定当前数据库中需要执行代码生成的数据表。如果为空,表示数据库的所有表都会生成。 + tablesEx: "hg_sys_addons_install" # 指定当前数据库中需要排除代码生成的数据表。 + removePrefix: "hg_" + descriptionTag: true + noModelComment: true + jsonCase: "CamelLower" + gJsonSupport: true + clear: true + + service: # 生成业务配置 + srcFolder: "internal/logic" + dstFolder: "internal/service" + dstFileNameCase: "CamelLower" + clear: true +``` + +### 生成CRUD表格 + +- 推荐使用热编译方式启动HotGo,这样生成完成页面自动刷新即可看到新生成内容,无需手动重启 +- 服务端热编译启动:`gf run main.go`, web前端启动:`pnpm run dev` 或 `npm run dev` + +1、创建数据表 + +1.1 创建测试表格表`hg_test_table` +```mysql +CREATE TABLE `hg_test_table` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `category_id` bigint(20) NOT NULL COMMENT '分类ID', + `title` varchar(64) NOT NULL COMMENT '标题', + `description` varchar(255) NOT NULL COMMENT '描述', + `content` text NOT NULL COMMENT '内容', + `image` varchar(255) DEFAULT NULL COMMENT '单图', + `attachfile` varchar(255) DEFAULT NULL COMMENT '附件', + `city_id` bigint(20) DEFAULT '0' COMMENT '所在城市', + `switch` int(11) DEFAULT '1' COMMENT '显示开关', + `sort` int(11) NOT NULL COMMENT '排序', + `status` tinyint(1) DEFAULT '1' COMMENT '状态', + `created_by` bigint(20) DEFAULT '0' COMMENT '创建者', + `updated_by` bigint(20) DEFAULT '0' COMMENT '更新者', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间', + `deleted_at` datetime DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='测试表格'; + +``` + +1.2 测试分类表`hg_test_category`: +- 注意:该表为了方便功能演示已经内置无需再次创建,此处提示表结构只是为了方便大家梳理关联表关系 +```mysql +CREATE TABLE `hg_test_category` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类ID', + `name` varchar(255) NOT NULL COMMENT '分类名称', + `description` varchar(255) DEFAULT NULL COMMENT '描述', + `sort` int(11) NOT NULL COMMENT '排序', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `status` tinyint(1) DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间', + `deleted_at` datetime DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='测试分类'; + +``` + +1.3 插入测试数据 +```mysql +INSERT INTO `hg_test_table` (`id`, `category_id`, `title`, `description`, `content`, `image`, `attachfile`, `city_id`, `switch`, `sort`, `status`, `created_by`, `updated_by`, `created_at`, `updated_at`, `deleted_at`) VALUES (1, 1, '测试标题', '描述', '

不知道写点啥!



', 'https://gmycos.facms.cn/hotgo/logo.sig.png', 'https://gmycos.facms.cn/hotgo/attachment/2022-12-30/cpf1x44idoycrtajf2.xlsx', 110102, 1, 10, 1, 0, 1, '2022-12-15 19:30:14', '2023-02-23 13:55:32', NULL); + +``` + + +2、创建生成配置 +- 登录HotGo后台 -> 开发工具 -> 代码生成 -> 找到立即生成按钮并打开,选择和填写如下参数: + +![生成添加演示图](images/sys-code-add.png) + + +3、自定义配置 +- 确认配置无误后,点击生成配置会自动跳转到生成配置页面,如下: + +![生成配置页面](images/sys-code-config-init.png) + +- 你可以在该页面点击`预览代码`查看生成的内容,如果无需调整亦可以直接点击`提交生成`,以下是预览代码效果: + +![生成预览](images/sys-code-preview.png) + +- 如果你对默认的生成配置不满意,可以根据页面表单提示,自定义表格属性和字段属性 + +- 这里假设我们要一个关联表,让表`hg_test_table`字段`category_id`去关联 表`hg_test_category`字段`id`,我们可以这样做: + +![生成关联配置](images/sys-code-config-join.png) + + +- 如果你想调整主表每列字段的显示方式,可以点击上方导航栏中的 [主表字段] 进行调整 +- 这里我们不做任何调整直接进入下一步。目的是为了后续演示对最终生成结果不满意的再次调整方案 + +![生成关联配置](images/sys-code-master.png) + +4、以上内容都已配置无误后,点击提交生成即可。 + +- 如果你使用的热编译,那么页面会在生成成功后立即刷新,刷新完成你即可在后台菜单栏中看到`测试表格`菜单。如果不是使用热编译启动,请手动重启服务后刷新。 + +- 注意:热编译环境下,web端往往会快于服务端重启并加载完成,此时访问新生成的菜单页面可能会存在某接口请求超时或404问题,这是服务端正在重启导致的,属于正常现象,一般稍等几秒再试即可。 + +- 接下来让我们看看生成的表格页面,效果如下: + +![生成测试表格页面](images/sys-code-list.png) + + +5、假设我们对生成结果不满意,有新的优化需求如下: +1. 把`单图`、`附件`改换成上传组件 +2. 把`创建者`、`更新者`隐藏 +3. 把`分类ID`隐藏,然后把关联表中的`分类名称`显示出来 + +> 那么我们可以回到 开发工具 -> 代码生成 -> 找到刚刚生成的记录 -> 在右侧操作栏中点击生成配置,再次进入配置页面做如下操作即可: + +1. 点击上方导航栏[主表字段],调整字段选项: + +![修改主表配置](images/sys-code-master-save.png) + + +2. 点击上方导航栏[关联表],调整字段选项: + +![修改关联表配置](images/sys-code-config-join-save.png) + + +3. 返回[基本信息],勾选强制覆盖,然后点击`预览代码`,确认生成代码无误后点击`提交生成` + +![强制覆盖并提交生成](images/sys-code-config-post.png) + + +- 生成完成刷新页面后,再次来到`测试表格`,发现表格已经调整到了我们预期效果 + +1. 列表效果: + +![最终列表效果](images/sys-code-list-ok.png) + +2. 编辑表单效果 + +![最终编辑表单效果](images/sys-code-list-edit-ok.png) + + +- 至此生成增删改查列表示例结束! + +### 生成树形表格 + +待写。 + +### 多数据库使用 + +- 假设我们要增加一个库名为`hotgo2`、分组为`default2`的数据库,并要为其生成代码 + +1. 配置[server/hack/config.yaml](../../server/hack/config.yaml) 如下: +```yaml + gen: + dao: + - link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true" +# - link: "pgsql:postgres:hg123456@tcp(127.0.0.1:5432)/hotgo" + group: "default" # 分组 使用hotgo代码生成功能时必须填 + tablesEx: "hg_sys_addons_install" # 指定当前数据库中需要排除代码生成的数据表。 + removePrefix: "hg_" + descriptionTag: true + noModelComment: true + jsonCase: "CamelLower" + gJsonSupport: true + clear: false + - link: "mysql:hotgo2:hg123456.@tcp(127.0.0.1:3306)/hotgo2?loc=Local&parseTime=true" + group: "default2" # 分组 使用hotgo代码生成功能时必须填 + tablesEx: "hg_sys_addons_install" # 指定当前数据库中需要排除代码生成的数据表。 + removePrefix: "" + descriptionTag: true + noModelComment: true + jsonCase: "CamelLower" + gJsonSupport: true + clear: false +``` + +2. 配置`server/manifest/config/config.yaml`, + +`database`配置如下: +```yaml +database: + logger: + level: "all" + stdout: true + default: + link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true" +# - link: "pgsql:postgres:hg123456@tcp(127.0.0.1:5432)/hotgo" + debug: true + Prefix: "hg_" + default2: + link: "mysql:hotgo2:hg123456.@tcp(127.0.0.1:3306)/hotgo2?loc=Local&parseTime=true" + debug: true + Prefix: "" +``` + +`hggen`配置如下: +```yaml +hggen: + allowedIPs: ["127.0.0.1", "*"] # 白名单,*代表所有,只有允许的IP后台才能使用生成代码功能 + selectDbs: [ "default", "default2" ] # 可选生成表的数据库配置名称,支持多库 + disableTables : ["hg_sys_gen_codes","hg_admin_role_casbin"] # 禁用的表,禁用以后将不会在选择表中看到 + delimiters: ["@{", "}"] # 模板引擎变量分隔符号 +``` + +3. 登录HotGo后台 -> 开发工具 -> 代码生成 -> 找到立即生成按钮并打开,就会发现`数据库`选项增加了一个`default2`,后续生成步骤和生成例子完全一样 + +> 注意:上述的配置中所有的`default2`名称必须保持一致 + + +### 自定义生成模板 + +> 系统内置了两组CURD生成模板,请参考[生成模板配置](sys-code.md#生成模板配置)。default:是默认的生成到主模块下;addon:是默认生成到指定的插件下 + +- HotGo允许你新建新的模板分组来满足你的需求,模板可根据现有模板基础拷贝一份出来做改造,默认模板目录:[server/resource/generate/default](../../server/resource/generate/default) + + + +### 内置gf-cli + +> 为了确保生成代码的依赖稳定性,在面对`gf`版本更新可能导致向下不兼容情况时,HotGo将`gf-cli`工具内置到系统中并进行在线执行调整,从而提供更可靠和一致的生成代码功能。 + +- 后续我们也将开放在线运行`gf gen ...`功能。在做插件开发时也会支持到在线生成插件下的service接口,这将会使得插件开发更加方便 + + + +### 指定gf-cli版本 + +> HotGo多数情况下会和最新版本的gf-cli保持同步,如果更新不及时或你不想使用最新版本的gf-cli来生成代码,可以找到自己想要的版本进行替换即可。 + +- 下面大致做一些替换步骤说明: + +1. 打开https://github.com/gogf/gf,找到你想要使用的版本`clone`下来 +2. 将`clone`代码中`gf/cmd/gf/internal/`目录覆盖到`server/internal/library/hggen/internal` +3. 将覆盖过来的目录文件中引入包名`github.com/gogf/gf/cmd/gf/v2/`批量改为`hotgo/internal/library/hggen/` +4. 运行`go mod tidy` +5. 运行`go run main.go`,如果没有报错,那么恭喜你已经完成了。如果有报错一般都是版本差异带来的影响,需要根据情况自行调整 + + + +### 指定数据库驱动 + +> HotGo默认使用mysql驱动,如果你想用其他数据库驱动打开下方文件中注释即可,目前已支持mysql、pgsql + +修改文件路径:server/internal/library/hggen/internal/cmd/cmd_gen_dao.go +```go +package cmd + +import ( + //_ "github.com/gogf/gf/contrib/drivers/clickhouse/v2" + //_ "github.com/gogf/gf/contrib/drivers/mssql/v2" + _ "github.com/gogf/gf/contrib/drivers/mysql/v2" + //_ "github.com/gogf/gf/contrib/drivers/oracle/v2" + _ "github.com/gogf/gf/contrib/drivers/pgsql/v2" + //_ "github.com/gogf/gf/contrib/drivers/sqlite/v2" + + "hotgo/internal/library/hggen/internal/cmd/gendao" +) + +type ( + cGenDao = gendao.CGenDao +) + +``` + +修改完成后运行`go mod tidy` diff --git a/docs/guide-zh-CN/sys-console.md b/docs/guide-zh-CN/sys-console.md new file mode 100644 index 0000000..33e8652 --- /dev/null +++ b/docs/guide-zh-CN/sys-console.md @@ -0,0 +1,75 @@ +## 控制台 + +目录 + +- 启动所有服务 +- HTTP服务 +- 消息队列 +- 定时任务 +- 常用工具 +- Makefile + +### 启动所有服务 +- 仅推荐在开发期间快速调试使用,线上实际部署时建议将各个服务分开部署,这样重新部署某个服务时无需全部重启。 + +```shell + +# 默认 +go run main.go + +# 通过热编译启动 +gf run main.go +``` + +### HTTP服务 +- 启动HTTP服务,包含websocket。 + +```shell +# 默认 +go run main.go http + +# 通过热编译启动 +gf run main.go --args "http" +``` + +### 消息队列 +- 启动消息队列的消费者。 + +```shell +# 默认 +go run main.go queue + +# 通过热编译启动 +gf run main.go --args "queue" +``` + +### 定时任务 +- 启动系统中统一注册的定时任务。 + +```shell +# 默认 +go run main.go cron + +# 通过热编译启动 +gf run main.go --args "cron" +``` + + +### 常用工具 +- 释放casbin权限,用于清理无效的权限设置。 + + +```shell +go run main.go tools -m=casbin -a1=refresh +``` + + +### Makefile +- 通过make提供一些快捷命令 + +```shell +# 一键编译,打包前后端代码到可执行文件 +make build + +# 更多请查看 /server/Makefile文件 +``` \ No newline at end of file diff --git a/docs/guide-zh-CN/sys-cron.md b/docs/guide-zh-CN/sys-cron.md new file mode 100644 index 0000000..efca8a8 --- /dev/null +++ b/docs/guide-zh-CN/sys-cron.md @@ -0,0 +1,70 @@ +## 定时任务 + +目录 + +- 实现接口 +- 一个例子 +- 更多 + +> 在实际的项目开发中,定时任务几乎成为不可或缺的一部分。HotGo为定时任务提供一个方便的后台操作界面,让您能够轻松地进行在线启停、修改和立即执行等操作。这样的设计可以极大地改善您在使用定时任务过程中的体验,让整个过程更加顺畅、高效。 + + +### 实现接口 +- 为了提供高度的扩展性,定时任务在设计上采用了接口化的思路。只需要实现以下接口,您就可以在任何地方注册和使用定时任务功能,从而实现更大的灵活性和可扩展性。 + +```go +// Cron 定时任务接口 +type Cron interface { + // GetName 获取任务名称 + GetName() string + // Execute 执行任务 + Execute(ctx context.Context, parser *Parser) (err error) +} +``` + + +### 一个例子 + +定时任务的文件结构可以根据具体需要进行调整,以下是一个常见的参考结构: + +- 文件路径:server/internal/crons/test.go + +```go +package crons + +import ( + "context" + "hotgo/internal/library/cron" + "time" +) + +func init() { + cron.Register(Test) +} + +// Test 测试任务(无参数) +var Test = &cTest{name: "test"} + +type cTest struct { + name string +} + +func (c *cTest) GetName() string { + return c.name +} + +// Execute 执行任务 +func (c *cTest) Execute(ctx context.Context, parser *cron.Parser) (err error) { + parser.Logger.Infof(ctx, "cron test Execute:%v", time.Now()) // 记录任务调度日志 + return +} +``` + +继续在后台系统设置-定时任务-添加任务,填写的任务名称需要和上面的名称保持一致,再进行简单的策略配置以后,一个后台可控的定时任务就添加好了! + + +### 更多 + +定时任务源码路径:server/internal/library/cron/cron.go + +更多文档请参考:https://goframe.org/pages/viewpage.action?pageId=1114187 \ No newline at end of file diff --git a/docs/guide-zh-CN/sys-db.md b/docs/guide-zh-CN/sys-db.md new file mode 100644 index 0000000..64a70ef --- /dev/null +++ b/docs/guide-zh-CN/sys-db.md @@ -0,0 +1,150 @@ +## 数据库 + +目录 + +- 字段类型 +- 特殊字段默认表单组件 +- 特殊字段默认表单验证器 +- SQL默认查询方式 +- 其他 + +### 字段类型 + +- 创建数据库表当按如下的规则进行字段命名、类型、属性设置和备注后,再生成CRUD代码时会自动生成对应的Api、控制器、业务逻辑、Web页面、[表单组件](web-form.md)等的一些默认属性 +- 当你了解这些默认技巧后,会有效提高你在实际开发中的生产效率 + +| 数据库类型 | 额外属性 | 转换Go类型 | 转换Ts类型 | 表单组件 | +|---------------------------------------------------------------|--------------|--------------|---------|-----------------------| +| int, tinyint,small_int,smallint,medium_int,mediumint,serial | / | int | number | InputNumber(数字输入框) | +| int, tinyint,small_int,smallint,medium_int,mediumint,serial | unsigned | uint | number | InputNumber(数字输入框) | +| big_int,bigint,bigserial | / | int64 | number | InputNumber(数字输入框) | +| big_int,bigint,bigserial | unsigned | uint64 | number | InputNumber(数字输入框) | +| real | / | float32 | number | InputNumber(数字输入框) | +| float,double,decimal,money,numeric,smallmoney | / | float64 | number | InputNumber(数字输入框) | +| bit(1) 、bit(true)、bit(false) | / | bool | boolean | Input(文本输入框,默认) | +| bit | / | int64-bytes | array | InputDynamic(动态KV表单) | +| bit | unsigned | uint64-bytes | array | InputDynamic (动态KV表单) | +| bool | / | bool | boolean | Input(文本输入框,默认) | +| date | / | *gtime.Time | string | Date(日期选择器) | +| datetime,timestamp,timestamptz | / | *gtime.Time | string | Time(时间选择器) | +| json | / | *gjson.Json | string | Input(文本输入框) | +| jsonb | / | *gjson.Json | string | Input(文本输入框) | +| 以下为物理类型中包含字段部分时的转换方式,默认情况 | / | / | / | / | +| text,char,character | / | string | string | Input(文本输入框) | +| float,double,numeric | / | string | string | Input(文本输入框) | +| bool | / | bool | boolean | Input(文本输入框,默认) | +| binary,blob | / | []byte | string | Input(文本输入框,默认) | +| int | / | int | number | InputNumber(数字输入框) | +| int | unsigned | int | number | InputNumber(数字输入框) | +| time | / | *gtime.Time | string | Time(时间选择器) | +| date | / | *gtime.Time | string | Date(日期选择器) | +| 没有满足以上任何条件的 | / | string | string | Input(文本输入框) | + + +### 特殊字段默认表单组件 +- 以下字段在不设置表单组件时会默认使用的表单组件 + +| 数据库字段 | 字段名称 | 表单组件 | +|--------------|----------------------|----------------------| +| status | 状态字段(任意int类型) | Select (单选下拉框) | +| created_at | 创建时间字段 | TimeRange (时间范围选择) | +| province_id | 省份ID字段(任意int类型) | CitySelector (省市区选择) | +| city_id | 城市ID字段(任意int类型) | CitySelector (省市区选择) | +| 任意字串符字段 | 长度>= 200 and <= 500 | InputTextarea (文本域) | +| 任意字串符字段 | 长度> 500 | InputEditor (富文本) | + + +### 特殊字段默认表单验证器 +- 以下字段在不设置表单组件时会默认使用的表单验证器 + +| 数据库字段/Go类型 | 字段名称 | 表单验证规则 | +|-------------------|--------|-----------------------| +| mobile | 手机号 | 不为空时必须是手机号码(国内) | +| qq | QQ | 不为空时必须是QQ号码 | +| email | 邮箱地址 | 不为空时必须是邮箱格式 | +| id_card | 身份证号码 | 不为空时必须是15或18位身份证号码 | +| bank_card | 银行卡号码 | 银行卡号码 | +| password | 密码 | 密码验证,必须包含6-18为字母和数字 | +| price | 价格 | 金额验证,最多允许输入10位整数及2位小数 | +| Go类型为uint、uint64 | 正整数 | 非零正整数验证 | + +### SQL默认查询方式 +- Go类型取决于数据库物理类型,请参考 [字段类型] 部分 + +| Go类型 | 查询方式 | +|-------------------------|--------------------------------------| +| string | LIKE | +| date,datetime | = | +| int,uint,int64,uint64 | = | +| []int,[]int64,[]uint64 | IN (...) | +| float32,float64 | = | +| []byte4 | =(默认) | +| time.Time,*gtime.Time | = | +| *gjson.Json | JSON_CONTAINS(json_doc, val[, path]) | + + + +### 其他 + +#### 默认字典选项 + +- 数据库字段为 `status`且类型为任意数字类型的会使用系统默认的状态字典 + +#### 默认属性 + +- 默认必填,当数据库字段存在非空`IS_NULLABLE`属性时,默认勾选必填验证 +- 默认唯一,当数据库字段索引存在`UNI`时,默认勾选唯一值验证 +- 默认主键,当数据库字段索引存在`PRI`时,默认为主键,不允许编辑 +- 默认排序,当数据库字段存在`sort`时,默认开启排序,添加表单自动获取最大排序增量值并填充表单 +- 默认列名,默认使用字段注释作为表格的列名。当数据库字段未设置注释时,默认使用字段名称作为列名 + +#### 自动更新/插入 + +- 自动更新,当数据库字段为`updated_at`(更新时间),`updated_by`(更新者) +- 自动插入,当数据库字段为`created_at`(创建时间),`created_by`(创建者) +- 软删除,表存在字段`deleted_at`时,使用表的Orm模型查询条件将会自动加入[ `deleted_at` IS NULL ],删除时只更新删除时间而不会真的删除数据 +- 树表:不论更新插入,都会根据表中字段`pid`(上级ID)自动维护`level`(树等级)和`tree`(关系树) + + +#### 操作人字段维护 + +- 生成列表中存在并且勾选展示字段`created_by`(创建者)、`updated_by`(修改者)、`deleted_by`(删除者)时,会自动到表`hg_admin_member`中获取操作人的基本信息摘要,并渲染到列表中,效果如下: + +![](images/sys-db-by.png) + +- 生成列表中存在并且勾选查询字段`created_by`(创建者)、`updated_by`(修改者)、`deleted_by`(删除者)时,会强制将查询表单改为关键词查询,从`hg_admin_member`查询操作人。效果如下: + +![](images/sys-db-by2.png) + +- 查询代码片段,参考路径:[server/internal/logic/admin/member.go](../../server/internal/logic/admin/member.go) + +```go + +// 查询创建者 +if in.CreatedBy != "" { + ids, err := service.AdminMember().GetIdsByKeyword(ctx, in.CreatedBy) + if err != nil { + return nil, 0, err + } + mod = mod.WhereIn(dao.SysGenCurdDemo.Columns().CreatedBy, ids) +} + +// GetIdsByKeyword 根据关键词查找符合条件的用户ID +func (s *sAdminMember) GetIdsByKeyword(ctx context.Context, ks string) (res []int64, err error) { + ks = gstr.Trim(ks) + if len(ks) == 0 { + return + } + array, err := dao.AdminMember.Ctx(ctx).Fields("id"). + Where("`id` = ? or `real_name` = ? or `username` = ? or `mobile` = ?", ks, ks, ks, ks). + Array() + if err != nil { + err = gerror.Wrap(err, "根据关键词获取用户ID失败,请稍后重试!") + } + res = gvar.New(array).Int64s() + return +} +``` + + +> 这里只列举了较为常用的默认规则,其他更多默认规则请参考:[server/internal/library/hggen/views/column_default.go](../../server/internal/library/hggen/views/column_default.go) diff --git a/docs/guide-zh-CN/sys-exploit.md b/docs/guide-zh-CN/sys-exploit.md new file mode 100644 index 0000000..70fb37b --- /dev/null +++ b/docs/guide-zh-CN/sys-exploit.md @@ -0,0 +1,201 @@ +## 开发规范 + +目录 + +- 规范说明 +- 规范建议 +- 命名规范 +- 编码规范 +- 框架规范 +- 插件规范 +- 数据库规范 +- 包功能规范 + +### 规范说明 + +- 开发规范意义是是让大家尽可能写出风格统一的代码,让团队代码有更好的可读性与可维护性。 +- 在实际业务开发中,除了要提高业务开发效率,保证线上业务高性能外,好的编程习惯也是一个开发人员基本素养之一。 + + +### 规范建议 + +- 在我们实际开发中,有很多开发人可能是由某一语言转到另外一个语言领域,在转到另外一门语言后, 我们都会保留着对旧语言的编程习惯,在这里,我建议的是,虽然不同语言之前的某些规范可能是相通的, 但是我们最好能够按照官方的一些demo来熟悉是渐渐适应当前语言的编程规范,而不是直接将原来语言的编程规范也随之迁移过来。 + + +### 命名规范 + + +#### 命名准则 + +* 当变量名称在定义和最后一次使用之间的距离很短时,简短的名称看起来会更好 +* 变量命名应尽量描述其内容,而不是类型 +* 常量命名应尽量描述其值,而不是如何使用这个值 +* 在遇到for,if等循环或分支时,推荐单个字母命名来标识参数和返回值 +* package名称也是命名的一部分,推荐全部使用小写,请尽量将其利用起来 +* 使用一致的命名风格 + +#### 文件命名规范 +* 全部小写 +* 除unit test外避免下划线(_) +* 文件名称不宜过长,但不必为了简短而忽略含义 + +#### 变量命名规范参考 +* 驼峰命名 +* 见名知义,避免拼音替代英文 +* 不建议包含下划线(_) +* 不建议包含数字 + + +#### 函数、常量命名规范 +* 驼峰式命名 +* 可导出的必须首字母大写 +* 不可导出的必须首字母小写 +* 避免全部大写与下划线(_)组合 + + +#### 参考文档 + +* [Practical Go: Real world advice for writing maintainable Go programs](https://dave.cheney.net/practical-go/presentations/gophercon-singapore-2019.html#_simplicity) + + +### 编码规范 + +#### import +* 单行import不建议用圆括号包裹 +* 按照`官方包`,NEW LINE,`当前工程包`,NEW LINE,`第三方依赖包`顺序引入 + +```go +import ( + "context" + "string" + + "greet/user/internal/config" + + "google.golang.org/grpc" +) +``` + +#### 函数返回 +* 对象避免非指针返回 +* 遵循有正常值返回则一定无error,有error则一定无正常值返回的原则 + +#### 错误处理 +* 有error必须处理,如果不能处理就必须抛出。 +* 避免下划线(_)接收error + +#### 函数体编码 +* 建议一个block结束空一行,如if、for等 + +```go + func main (){ + if x==1{ + // do something + } + + fmt.println("xxx") + } +``` +* return前尽可能空一行 + +```go +func getUser(id string)(string,error){ + .... + + return "xx",nil +} +``` + +### 框架规范 + +- 项目启动初始化方法都放在`server/internal/global/init.go`,插件放在:`server/addons/xxx插件/global/init.go` +- Api 对外接口层 都放在`server/api`,根据实际应用和应用具体功能划分子目录,插件放在:`server/addons/xxx插件/api` +- Router 路由注册方式应尽可能按gf2.0版本风格定义,参考:https://goframe.org/pages/viewpage.action?pageId=30736904 +- Controller 控制器层 都放在`server/internal/controller`,根据应用和具体功能拆分子目录,插件放在:`server/addons/xxx插件/controller` +- Input 对内接口层 都放在`server/internal/model/input`,根据应用和具体功能拆分子目录并以`in`结尾,插件放在:`server/addons/xxx插件/model/input` +- Logic 业务逻辑层 统一放在`server/internal/logic` 根据实际业务需求按logic/xxx/*.go拆分,插件放在:`server/addons/xxx插件/logic` +- Orm 模型实体层 统一放在`server/internal/model/entity` +- Dao 数据访问层 统一放在`server/internal/dao` +- 自定义工具函数都放在 `server/utility`,且应根据不同类型的方法做分包,相同类型的方法放在同一个包内 +- 状态枚举统一调用`server/internal/consts`中的常量和属性 + +### 插件规范 + +- 插件命名统一全部小写 +- 资源文件在 `addons/xxx插件/resource`或`server/resource` +- 每个插件之前应该是完全独立的,尽可能避免插件于插件之间的调用依赖 +- 插件和主模块之前的调用应尽可能通过 Service 接口来调用 +- 插件业务初始化顺序下应在主模块之后,应尽可能避免使用init方法隐式初始化 + +### 数据库规范 + +#### 命名规范 + +- 数据表名小写,多关键字使用下划线分割(关键字尽量全称) +- 字段名小写,多关键字使用下划线分割(关键字尽量全称) +- 禁止使用保留字并且尽量少用含有关键词来命名 +- 临时表必须以tmp_开头、以日期结尾,备份表必须以bak_开头、以日期结尾 +- 同数据库表名设置统一前缀,默认是`hg_` +- 插件模块表名建议以`hg_addon_`开头,如:`hg_addon_hgexample_table`,含义:`插件_案例_表格`。在生成代码时可自动识别实体命名为:`Table` + +#### 基础规范 + +- 所有的字段必须添加注释 +- 尽可能地使用InnoDB作为表的存储引擎 +- 所有的表和字段必须添加注释 +- 尽量控制表行数在500万以内 +- 尽可能采用冷热数据分离策略 +- 禁止以图片、文件等二进制数据 + +#### 表设计规范 + +- 尽可能每张表的索引数量控制在5个以内 +- 每一张InnoDB表都必须含有一个主键,自增主键必须是`bigint`类型 +- 尽可能避免使用外键约束 +- 设置数据表架构应考虑后期扩展型 +- 遵循范式与冗余平衡原则 + +#### 字段设计规范 + +- 尽可能将所有的数据列定义为 `NOT NULL` 类型 +- 避免 ENUM 数据类型 +- json 存储的数据用 `json`字段代替 `text` +- 表与表关联的键名保持一致或以关联表名的缩写为前缀 +- 固定长度的字符串字段务必使用 `char` +- 使用 `UNSIGNEG` 存储非负整数 +- 禁止敏感数据以明文形式存储 +- 金额相关的数据必须使用 `DECIMAL` 数据类型 +- 尽量所有表有 `status` 字段来标注数据状态(1:启用,2:禁用,3:已删除),业务状态请使用其他字段;`status`字段类型 为带符号的 `tinyint(1)`。如果还需要其他的数据状态 请先判断该状态的数据是有用的数据还是无意义的数据,有用的数据状态 > 0,无意义的数据状态 < -1 +- 所有的删除(除开清空回收站操作) 请标记 `status` 为 3 +- 创建时间字段为`created_at`,修改时间字段为`updated_at`,删除时间字段为`deleted_at`,类型`datetime` +- 用户关联 id 字段为 `member_id` 或 `created_by` +- 排序字段为 `sort` +- 区分应用字段为 `app_id` +- 区分插件来源需要增加字段为 `addon_name` 和 `is_addon` +- 关系树表中必须包含字段:`id`(主键)、`pid`(上级ID)、`level`(树等级)、`tree`(关系树) +- 多选、多图、多文件字段类型应尽量使用类型`json` + +### 包功能规范 + +##### Input(对内接口 - 过滤验证) + +- 接收Api 对外接口数据和参数过滤 +- 对提交的复杂数据参数进行验证处理返回 + +##### View(视图) + +- 数据处理显示 +- 页面渲染 + +##### Controller(控制器) + +- 数据接收 +- 服务调用 +- 简单CURD入库 +- 简单业务逻辑 + + +##### Logic(业务逻辑 - 服务接口功能) + +- 数据逻辑处理 +- 数据入库 +- 数据查询 \ No newline at end of file diff --git a/docs/guide-zh-CN/sys-i18n.md b/docs/guide-zh-CN/sys-i18n.md new file mode 100644 index 0000000..e3e7e73 --- /dev/null +++ b/docs/guide-zh-CN/sys-i18n.md @@ -0,0 +1,73 @@ +## 国际化 + + +目录 + +- 介绍 +- 配置文件 +- 服务端使用 +- Web端使用 +- 更多文档 + +### 介绍 + +从`v2.18.6`版本开始,HotGo 提供了完善的国际化(i18n)支持,内置简体中文、繁体中文和英文三种语言包,默认语言为简体中文。目前已对后台管理首页进行了多语言适配,开发者可基于该机制扩展实现业务模块的多语言功能。 + +### 配置文件 + +国际化配置位于 `server/manifest/config/config.yaml` 文件中: + +```yaml +# hotgo系统配置 +system: + # ... + # 国际化 + i18n: + switch: true # 国际化功能开关,可选值:false|true,默认:true + defaultLanguage: "zh-CN" # 默认语言,可选值:zh-CN|zh-TW|en,默认:zh-CN +``` + +### 服务端使用 + +多语言配置文件存放目录:`server/manifest/i18n`,您可以在该目录下添加自定义的语言映射文件。 + +**使用示例:** + +```go +// 设置当前上下文的语言为英文 +ctx := gctx.New() +gi18n.WithLanguage(ctx, "en") + +// 基础翻译 +gi18n.T(ctx, "你好,美丽世界") +// 输出:Hello, Beautiful World + +// 格式化翻译(支持参数替换) +gi18n.Tf(ctx, "剩余%v余额", 100) +// 输出:Remaining 100 Balance +``` + + +### Web端使用 + +多语言配置文件存放目录:`web/src/locale`,您可以在该目录下添加自定义的语言映射文件。 + +> 提示:启用国际化功能后,后台管理界面右上角将显示语言切换选项。 + +**使用示例(假设当前语言为英文):** + +```vue + +
{{ t('你好,美丽世界') }}
+ + + +
{{ t('剩余{num}余额', {num:100}) }}
+ +``` + + +### 更多文档 + +- [gi18n](https://goframe.org/docs/core/gi18n) +- [vie-i18n](https://vue-i18n.intlify.dev) \ No newline at end of file diff --git a/docs/guide-zh-CN/sys-library.md b/docs/guide-zh-CN/sys-library.md new file mode 100644 index 0000000..25255d9 --- /dev/null +++ b/docs/guide-zh-CN/sys-library.md @@ -0,0 +1,318 @@ +## 功能扩展库 + +目录 + +- 缓存驱动 +- 请求上下文 +- JWT +- 数据字典 +- 地理定位(待写) +- 通知(待写) + + +### 缓存驱动 + +> 系统默认的缓存驱动为file,目前已支持:memory|redis|file等多种驱动。请自行选择适合你的驱动使用。 + +- 配置文件:server/manifest/config/config.yaml + +```yaml +#缓存 +cache: + adapter: "file" # 缓存驱动方式,支持:memory|redis|file,不填默认memory + fileDir: "./storage/cache" # 文件缓存路径,adapter=file时必填 +``` + +#### 使用方式 +```go +package main + +import ( + "hotgo/internal/library/cache" + "github.com/gogf/gf/v2/os/gctx" +) + +func test() { + ctx := gctx.New() + + // 添加/修改 + cache.Instance().Set(ctx, "qwe", 123, 0) + + // 查询 + cache.Instance().Get(ctx, "qwe") + + // 删除 + cache.Instance().Remove(ctx, "qwe") + + // 更多方法请参考:https://goframe.org/pages/viewpage.action?pageId=27755640 +} + +``` + +### 请求上下文 + +- 主要用于在处理HTTP和websocket请求时通过中间件将用户、应用、插件等信息绑定到上下文中,方便在做业务处理时用到这些信息 + +```go +package admin + +import ( + "fmt" + "context" + "hotgo/internal/library/contexts" + "hotgo/internal/library/addons" +) + + +func test(ctx context.Context) { + // 获取当前请求的所有上下文变量 + var ctxModel = contexts.Get(ctx) + fmt.Printf("当前请求的所有上下文变量:%+v\n", ctxModel) + + // 获取当前请求的应用模块 + var module = contexts.GetModule(ctx) + fmt.Printf("当前请求的应用:%+v\n", module) + + // 获取当前请求的用户信息 + var member = contexts.GetUser(ctx) + fmt.Printf("当前访问用户信息:%+v\n", member) + + // 获取当前请求的插件模块 + fmt.Printf("当前是否为插件请求:%v", contexts.IsAddonRequest(ctx)) + if contexts.IsAddonRequest(ctx) { + fmt.Printf("当前插件名称:%v", contexts.GetAddonName(ctx)) + fmt.Printf("当前插件信息:%v", addons.GetModule(contexts.GetAddonName(ctx))) + } +} + +``` + +### JWT + +- 基于jwt+缓存驱动实现的用户登录令牌功能,支持自动续约,解决了jwt服务端无法退出问题和jwt令牌无法主动失效问题 + +#### 配置示例 +```yaml +# 登录令牌 +token: + secretKey: "hotgo123" # 令牌加密秘钥,考虑安全问题生产环境中请修改默认值 + expires: 604800 # 令牌有效期,单位:秒。默认7天 + autoRefresh: true # 是否开启自动刷新过期时间, false|true 默认为true + refreshInterval: 86400 # 刷新间隔,单位:秒。必须小于expires,否则无法触发。默认1天内只允许刷新一次 + maxRefreshTimes: 30 # 最大允许刷新次数,-1不限制。默认30次 + multiLogin: true # 是否允许多端登录, false|true 默认为true + +``` + +```go +package admin + +import ( + "fmt" + "context" + "hotgo/internal/library/token" + "hotgo/internal/model" +) + + +func test(ctx context.Context) { + // 登录 + user := &model.Identity{ + Id: mb.Id, + Pid: mb.Pid, + DeptId: mb.DeptId, + RoleId: ro.Id, + RoleKey: ro.Key, + Username: mb.Username, + RealName: mb.RealName, + Avatar: mb.Avatar, + Email: mb.Email, + Mobile: mb.Mobile, + App: consts.AppAdmin, + LoginAt: gtime.Now(), + } + + loginToken, expires, err := token.Login(ctx, user) + if err != nil { + return nil, err + } + + // gf请求对象 + r := *ghttp.Request + + // 获取登录用户信息 + user, err := token.ParseLoginUser(r) + if err != nil { + return + } + + // 注销登录 + err = token.Logout(r) +} + +``` + +### 数据字典 + +- hotgo增加了对枚举字典和自定义方法字典的内置支持,从而在系统中经常使用的一些特定数据上做出了增强。 + +#### 字典数据选项 +- 文件路径:server/internal/model/dict.go + +```go +package model + +// Option 字典数据选项 +type Option struct { + Key interface{} `json:"key"` + Label string `json:"label" description:"字典标签"` + Value interface{} `json:"value" description:"字典键值"` + ValueType string `json:"valueType" description:"键值数据类型"` + Type string `json:"type" description:"字典类型"` + ListClass string `json:"listClass" description:"表格回显样式"` +} +``` + +#### 枚举字典 +- 适用于系统开发期间内置的枚举数据,这样即维护了枚举值,又关联了数据字典 + +##### 一个例子 +- 定义枚举值和字典数据选项,并注册字典类型 +- 文件路径:server/internal/consts/credit_log.go + +```go +package consts + +import ( + "hotgo/internal/library/dict" + "hotgo/internal/model" +) + +func init() { + dict.RegisterEnums("creditType", "资金变动类型", CreditTypeOptions) + dict.RegisterEnums("creditGroup", "资金变动分组", CreditGroupOptions) +} + +const ( + CreditTypeBalance = "balance" // 余额 + CreditTypeIntegral = "integral" // 积分 +) + +const ( + CreditGroupDecr = "decr" // 扣款 + CreditGroupIncr = "incr" // 加款 + CreditGroupOpDecr = "op_decr" // 操作扣款 + CreditGroupOpIncr = "op_incr" // 操作加款 + CreditGroupBalanceRecharge = "balance_recharge" // 余额充值 + CreditGroupBalanceRefund = "balance_refund" // 余额退款 + CreditGroupApplyCash = "apply_cash" // 申请提现 +) + +// CreditTypeOptions 变动类型 +var CreditTypeOptions = []*model.Option{ + dict.GenSuccessOption(CreditTypeBalance, "余额"), + dict.GenInfoOption(CreditTypeIntegral, "积分"), +} + +// CreditGroupOptions 变动分组 +var CreditGroupOptions = []*model.Option{ + dict.GenWarningOption(CreditGroupDecr, "扣款"), + dict.GenSuccessOption(CreditGroupIncr, "加款"), + dict.GenWarningOption(CreditGroupOpDecr, "操作扣款"), + dict.GenSuccessOption(CreditGroupOpIncr, "操作加款"), + dict.GenWarningOption(CreditGroupBalanceRefund, "余额退款"), + dict.GenSuccessOption(CreditGroupBalanceRecharge, "余额充值"), + dict.GenInfoOption(CreditGroupApplyCash, "申请提现"), +} + +``` + + +#### 自定义方法字典 +- 适用于非固定选项,如数据是从某个表/文件读取或从第三方读取,数据需要进行转换时使用 + +##### 方法字典接口 +- 文件路径:server/internal/consts/credit_log.go + +```go +package dict + +// FuncDict 方法字典,实现本接口即可使用内置方法字典 +type FuncDict func(ctx context.Context) (res []*model.Option, err error) +``` + +##### 一个例子 +- 定义获取字典数据方法,并注册字典类型 +- 文件路径:server/internal/logic/admin/post.go + +```go +package admin + +import ( + "context" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/consts" + "hotgo/internal/dao" + "hotgo/internal/library/dict" + "hotgo/internal/model" + "hotgo/internal/model/entity" + "hotgo/internal/service" +) + +type sAdminPost struct{} + +func NewAdminPost() *sAdminPost { + return &sAdminPost{} +} + +func init() { + service.RegisterAdminPost(NewAdminPost()) + dict.RegisterFunc("adminPostOption", "岗位选项", service.AdminPost().Option) +} + +// Option 岗位选项 +func (s *sAdminPost) Option(ctx context.Context) (opts []*model.Option, err error) { + var list []*entity.AdminPost + if err = dao.AdminPost.Ctx(ctx).OrderAsc(dao.AdminPost.Columns().Sort).Scan(&list); err != nil { + return nil, err + } + + if len(list) == 0 { + opts = make([]*model.Option, 0) + return + } + + for _, v := range list { + opts = append(opts, dict.GenHashOption(v.Id, v.Name)) + } + return +} +``` + +#### 代码生成支持 +- 内置的枚举字典和自定义方法字典在生成代码时可以直接进行选择,生成代码格式和系统字典管理写法一致 + +![最终编辑表单效果](images/sys-library-dict.png) + + +#### 内置字典和系统字典的区分 + +##### 主要区别 +- 系统字典由表:`hg_sys_dict_type`和`hg_sys_dict_data`共同进行维护,使用时需通过后台到字典管理中进行添加 +- 内置字典是系统开发期间在代码层面事先定义和注册好的数据选项 + + +##### 数据格式区别 +- 系统字典所有ID都是大于0的int64类型 +- 内置字典ID都是小于0的int64类型。枚举字典以20000开头,如:-200001381053496;方法字典以30000开头,如:-30000892528327;开头以外数字是根据数据选项的`key`值进行哈希算法得出 + +### 地理定位 +```go +// 待写 +``` + +### 通知 +```go +// 待写 +``` \ No newline at end of file diff --git a/docs/guide-zh-CN/sys-middleware.md b/docs/guide-zh-CN/sys-middleware.md new file mode 100644 index 0000000..70f334a --- /dev/null +++ b/docs/guide-zh-CN/sys-middleware.md @@ -0,0 +1,250 @@ +## 中间件/拦截器 + +目录 + +- 介绍 +- 全局中间件 +- 鉴权中间件 +- 响应中间件 +- 更多 + +### 介绍 +- 在hotgo中,中间件/拦截器主要作用于web请求的上下文预设、跨域请求处理、鉴权处理、请求拦截和请求结束后统一响应处理等。 + + +### 全局中间件 +```go +package main + +import ( + "hotgo/internal/service" +) + +func main() { + + // 初始化请求上下文,一般需要第一个进行加载,后续中间件存在依赖关系 + service.Middleware().Ctx() + + // 跨域中间件,自动处理跨域问题 + service.Middleware().CORS() + + // IP黑名单中间件,如果请求IP被后台拉黑,所有请求将被拒绝 + service.Middleware().Blacklist() + + // 演示系統操作限制,当开启演示模式时,所有POST请求将被拒绝 + service.Middleware().DemoLimit() + + // 请求输入预处理,api使用gf规范路由并且XxxReq结构体实现了validate.Filter接口即可隐式预处理 + service.Middleware().PreFilter() + + // HTTP响应预处理,在业务处理完成后,对响应结果进行格式化和错误过滤,将处理后的数据发送给请求方 + service.Middleware().ResponseHandler() + +} + +``` +### 鉴权中间件 +```go +package main + +import ( + "github.com/gogf/gf/v2/frame/g" +) + +func main() { + + // 在鉴权中间件下的路由如果没有通过权限验证,后续请求将被拒绝 + // 在hotgo中,鉴权中间件一般是配合一个业务模块下的路由组进行使用 + // 目前admin、api、home、websocket模块都已接入 + // 如果你需要创建一个新的模块也需要用到鉴权中间件,可以参考:server/internal/logic/middleware/admin_auth.go + + + // 一个简单例子 + s := g.Server() + s.Group("/api", func(group *ghttp.RouterGroup) { + group.Middleware(service.Middleware().ApiAuth) + group.Bind( + member.Member, // 管理员 + ) + }) + +} + +``` + +### 响应中间件 +- 文件路径:server/internal/logic/middleware/response.go + + +#### 常用响应类型 + +- hotgo为一些常用的响应类型做了统一格式封装,例如:`application/json`、`text/xml`、`text/html`、`text/event-stream`等,默认使用`application/json`。 +- 下面我们以`text/xml`为例简单演示几种使用方法: + +1. 当你使用规范化路由时,可直接在XxxRes结构体的`g.Meta`中声明响应类型: + +```go +type HelloReq struct { + g.Meta `path:"/hello" tags:"Hello" method:"get" summary:"You first hello api"` + Name string `json:"name" d:"hotgo" dc:"名字"` +} + +type HelloRes struct { + g.Meta `mime:"text/xml" type:"string"` + Tips string `json:"tips"` +} +``` + +2. 在响应前设置响应头: + +```go +var ( + Hello = cHello{} +) + +type cHello struct{} + +func (c *cHello) Hello(ctx context.Context, req *user.HelloReq) (res *user.HelloRes, err error) { + r := ghttp.RequestFromCtx(ctx) + r.Response.Header().Set("Content-Type", "text/xml") + + res = &user.HelloRes{ + Tips: fmt.Sprintf("hello %v, this is the api for %v applications.", req.Name, simple.AppName(ctx)), + } + return +} +``` + +- 浏览器中访问响应内容如下: + +![./images/sys-middleware-com-response.png](./images/sys-middleware-com-response.png) + + +#### 自定义响应 +- 在实际开发中,可能需要使用自定义的响应类型,由于响应中间件是全局的,因此您需要对其进行单独处理。 +- 推荐以下几种处理方案,可做参考: +1. 使用`ghttp.ExitAll()`,需要注意的是此方法会终止后续所有的http处理 + +```go +package main + +import ( + "github.com/gogf/gf/v2/net/ghttp" +) + +func main() { + r := new(ghttp.Request) // 当前请求对象 + + // 清空响应 + r.Response.ClearBuffer() + + // 写入响应 + r.Response.Write("自定义响应内容") + + // 终止后续http处理 + r.ExitAll() +} +``` + +2. 在`server/internal/logic/middleware/response.go`中根据请求的独有特征进行单独的处理,兼容后续http处理。 + +#### 重写响应错误提示 +- 在实际开发中,我们可能想要隐藏一些敏感错误,返回给客户端友好的错误提示,但开发者同时又想需要看到真实的敏感错误。对此hotgo已经进行了过滤处理,下面是一个简单的例子: + +```go +package main + +import ( + "github.com/gogf/gf/v2/errors/gerror" +) + +func test() error { + err = gerror.New("这是一个sql执行错误") + err = gerror.Wrap(err, "用户创建失败,请稍后重试!~") + return err +} +``` + +- 开启debug时的客户端响应: +```json +{ + "code": -1, + "message": "用户创建失败,请稍后重试!~", + "error": [ + "1. 用户创建失败,请稍后重试!~", + " 1). hotgo/internal/logic/admin.(*sAdminMember).List", + " E:/Users/Administrator/Desktop/gosrc/hotgo_dev/server/internal/logic/admin/member.go:526", + "2. 这是一个sql执行错误", " 1). hotgo/internal/logic/admin.(*sAdminMember).List", + " E:/Users/Administrator/Desktop/gosrc/hotgo_dev/server/internal/logic/admin/member.go:525", + " 2). hotgo/internal/controller/admin/admin.(*cMember).List", + " E:/Users/Administrator/Desktop/gosrc/hotgo_dev/server/internal/controller/admin/admin/member.go:157", "" + ], + "timestamp": 1684145107, + "traceID": "084022730d495f17f19e550140f3e1a8" +} +``` + +- 关闭debug时的客户端响应: +```json +{ + "code": -1, + "message": "用户创建失败,请稍后重试!~", + "timestamp": 1684145107, + "traceID": "084022730d495f17f19e550140f3e1a8" +} +``` + +- 控制台的输出日志: + +```shell +2023-05-15 18:05:07.776 {084022730d495f17f19e550140f3e1a8} 200 "GET http localhost:8000 /admin/member/list?page=1&pageSize=10&roleId=-1 HTTP/1.1" 0.002, 127.0.0.1, "http://192.168.0.207:8001/login", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Co +re/1.94.197.400 QQBrowser/11.7.5287.400", -1, "", "" +Stack: +1. 用户创建失败,请稍后重试!~ + 1). hotgo/internal/logic/admin.(*sAdminMember).List + E:/Users/Administrator/Desktop/gosrc/hotgo_dev/server/internal/logic/admin/member.go:526 +2. 这是一个sql执行错误 + 1). hotgo/internal/logic/admin.(*sAdminMember).List + E:/Users/Administrator/Desktop/gosrc/hotgo_dev/server/internal/logic/middleware/response.go:24 + 13). hotgo/internal/logic/middleware.(*sMiddleware).DemoLimit + E:/Users/Administrator/Desktop/gosrc/hotgo_dev/server/internal/logic/middleware/init.go:90 + +``` + +- 如果你开启了访问日志,那么日志记录中会详细记录本次请求的相关信息,内容如下: +![./images/sys-middleware-error-log.png](./images/sys-middleware-error-log.png) + + +#### 重写错误码 +- hotgo默认使用了gf内置的错误码进行业务处理,通常情况下成功状态码为`0`,失败状态码为`-1` +- 查看gf内置错误码:https://goframe.org/pages/viewpage.action?pageId=30739587 +- 以下是自定义错误码的简单例子: + +```go +package main + +import ( + "github.com/gogf/gf/v2/errors/gerror" +) + +func test() error { + // 使用自定义状态码30001响应客户端 + err = gerror.NewCode(gcode.New(30001, "用户创建失败,请稍后重试!~", nil)) + return err +} +``` + + +- 客户端响应如下: +```json +{ + "code": 30001, + "message": "用户创建失败,请稍后重试!~", + "timestamp": 1684146313, + "traceID": "b4f90e16264a5f17cd3fc27141aba448" +} +``` + +### 更多 +- 更多关于中间件/拦截器的介绍请参考:https://goframe.org/pages/viewpage.action?pageId=55289881 + diff --git a/docs/guide-zh-CN/sys-payment.md b/docs/guide-zh-CN/sys-payment.md new file mode 100644 index 0000000..e102b23 --- /dev/null +++ b/docs/guide-zh-CN/sys-payment.md @@ -0,0 +1,102 @@ +## 支付网关 + +目录 + +- 介绍 +- 一个简单的支付流程 +- 支付配置 +- 创建支付订单 +- 注册支付回调 +- 订单退款 +- 单笔转账(待更新) +- 其他 + + +### 介绍 +> 在web应用开发中,支付功能可以做为不可或缺的一部分,HotGo提供了相对通用的支付网关,目前已支持支付宝、微信支付、QQ支付,包含创建支付订单、支付回调、订单退款等功能,开发者几乎只需关注订单业务处理即可。 + +#### 一个简单的支付流程 + +```mermaid + +graph TD + A(用户下单) --> B(创建订单
创建成功后,将订单支付信息提交到支付网关处理) + B -->|网关返回失败| H(提示错误) + B -->|网关返回成功| G(拿到支付链接,用户侧跳转支付页面) + G -->|支付完成| C(支付平台通知支付网关
支付网关进行验签和效验支付处理状态) -->|验证通过,回调订单业务| E(订单更新状态,发放业务产品) + G -->|支付取消| D(订单支付超时关闭) + + +``` + + +### 支付配置 +> 请到 系统设置 -> 配置管理 -> 支付配置 -> 找到你需要的支付方式,进行配置即可 + + + +### 创建支付订单 + +```go +package main + +func main() { + // 创建支付网关订单 + create, err := service.Pay().Create(ctx, payin.PayCreateInp{ + Subject: "充值100元", + OrderSn: "唯一业务订单编号", + OrderGroup: "admin_order", // 订单分组,用于订单分类和绑定支付成功的回调方法 + PayType: "wxpay", // 微信支付 + TradeType: "scan", // 二维码扫码 + PayAmount: "100", // 100元 + }) +} +``` + + +### 注册支付回调 +- 在文件`server/internal/logic/pay/notify.go` 加入你的业务订单分组回调方法,当订单支付成功验签通过后会自动进行回调,参考以下: + +```go +package global + +import ( + "hotgo/internal/consts" + "hotgo/internal/library/payment" + "hotgo/internal/service" +) + +// RegisterNotifyCall 注册支付成功回调方法 +func (s *sPay) RegisterNotifyCall() { + payment.RegisterNotifyCallMap(map[string]payment.NotifyCallFunc{ + consts.OrderGroupAdminOrder: service.AdminOrder().PayNotify, // 后台充值订单 + // ... + }) +} +``` + +### 订单退款 + + +```go +package main + +func main() { + refund, err := service.PayRefund().Refund(ctx, payin.PayRefundInp{ + OrderSn: "唯一业务订单编号", + RefundMoney: "退款金额", + Reason: "买家申请退款原因", + Remark: "商家同意退款备注", + }) +} +``` + + +### 单笔转账(待更新) + + + +### 其他 +- 由于各个支付平台中交易方式较多,如果目前已有的交易方式不满足你的支付场景需求,请自行参考gopay文档对文件`server/internal/library/payment/payment.go`中的`PayClient`接口实现进行扩展 +- gopay文档地址:https://github.com/go-pay/gopay + diff --git a/docs/guide-zh-CN/sys-queue.md b/docs/guide-zh-CN/sys-queue.md new file mode 100644 index 0000000..e124805 --- /dev/null +++ b/docs/guide-zh-CN/sys-queue.md @@ -0,0 +1,203 @@ +## 消息队列 + +目录 + +- 配置文件 +- 实现接口 +- 一个例子 +- 控制台 +- 自定义队列驱动 + +> 系统默认的队列驱动为disk(磁盘队列),目前已支持:disk、redis、rocketmq、kafka等多种驱动。请自行选择适合你的驱动使用。 + +### 配置文件 +- 配置文件:server/manifest/config/config.yaml + +```yaml +# 消息队列 +queue: + switch: true # 队列开关,可选:true|false,默认为true + driver: "disk" # 队列驱动,可选:disk|redis|rocketmq|kafka,默认为disk + groupName: "hotgo" # mq群组名称 + # 磁盘队列 + disk: + path: "./storage/diskqueue" # 数据存放路径 + batchSize: 100 # 每100条消息同步一次,batchSize和batchTime满足其一就会同步一次 + batchTime: 1 # 每1秒消息同步一次 + segmentSize: 10485760 # 每个topic分片数据文件最大字节,默认10M + segmentLimit: 3000 # 每个topic最大分片数据文件数量,超出部分将会丢弃 + # redis,默认使用全局redis运行队列 + redis: + timeout: 0 # 队列超时时间以秒为单位,0表示永不超时。如果队列在设定的超时时间内没有被消费,则会被销毁 + rocketmq: + nameSrvAdders: ["127.0.0.1:9876"] # nameSrvAdder+端口,支持多个 + accessKey: "" # 选填。如果开启了acl控制就必填 + secretKey: "" # 选填。如果开启了acl控制就必填 + brokerAddr: "127.0.0.1:10911" # brokerAddr+端口,选填。用于消费者订阅主题前会检查主题是否存在,不存在会自动创建。你也可以在rocketmq控制台手动创建主题 + retry: 0 # 重试次数 + logLevel: "info" # 系统日志级别,可选:all|close|debug|info|warn|error|fatal + kafka: + address: "127.0.0.1:9092" # kafka地址+端口 + version: "2.0.0.0" # kafka专属配置,默认2.0.0.0 + randClient: true # 开启随机生成clientID,可以实现启动多实例同时一起消费相同topic,加速消费能力的特性,默认为true + multiConsumer: true # 是否支持创建多个消费者 +``` + +### 实现接口 +- 为了提供高度的扩展性,消费队列在设计上采用了接口化的思路。只需要实现以下接口,您就可以在任何地方注册和使用消费队列消费功能,从而实现更大的灵活性和可扩展性。 + +```go +// Consumer 消费者接口,实现该接口即可加入到消费队列中 +type Consumer interface { + GetTopic() string // 获取消费主题 + Handle(ctx context.Context, mqMsg MqMsg) (err error) // 处理消息的方法 +} +``` + + +### 一个例子 + +每个被发送到队列的消息应该被定义为一个单独的文件结构。 + +例如,如果您需要异步记录系统日志,内容大致如下: + +- 文件路径:server/internal/queues/sys_log.go + +```go +package queues + +import ( + "context" + "encoding/json" + "hotgo/internal/consts" + "hotgo/internal/library/queue" + "hotgo/internal/model/entity" + "hotgo/internal/service" +) + +func init() { + queue.RegisterConsumer(SysLog) +} + +// SysLog 系统日志 +var SysLog = &qSysLog{} + +type qSysLog struct{} + +// GetTopic 主题 +func (q *qSysLog) GetTopic() string { + return consts.QueueLogTopic +} + +// Handle 处理消息 +func (q *qSysLog) Handle(ctx context.Context, mqMsg queue.MqMsg) (err error) { + var data entity.SysLog + if err = json.Unmarshal(mqMsg.Body, &data); err != nil { + return err + } + return service.SysLog().RealWrite(ctx, data) +} + +``` + +下面是将消息添加到队列的方式,大概内容如下: + +```go +package main + +import ( + "fmt" + "hotgo/internal/consts" + "hotgo/internal/library/queue" + "hotgo/internal/model/entity" +) + +func test() { + data := &entity.SysLog{ + //... + } + if err := queue.Push(consts.QueueLogTopic, data); err != nil { + fmt.Printf("queue.Push err:%+v", err) + } +} + +``` + +延迟队列,目前只有redis、rocketmq驱动支持: + +```go +package main + +import ( + "fmt" + "hotgo/internal/consts" + "hotgo/internal/library/queue" + "hotgo/internal/model/entity" +) + +func test() { + data := &entity.SysLog{ + //... + } + + // redis 延迟10秒 + if err := queue.SendDelayMsg(consts.QueueLogTopic, data, 10); err != nil { + fmt.Printf("queue.Push err:%+v", err) + } + + // rocketmq 延迟5秒 + // 注意rocketmq这里传入的是延迟级别,而不是秒 + // 消息的延时级别level一共有18级,分别为: + // 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h + // 参考:https://github.com/apache/rocketmq-client-go/blob/0e19ee654819bda396a08d950c883f9008b8222b/primitive/message.go#L174 + if err := queue.SendDelayMsg(consts.QueueLogTopic, data, 2); err != nil { + fmt.Printf("queue.Push err:%+v", err) + } +} + +``` + +### 控制台 + +控制台用于处理队列消息,即消费者。 + +相关命令请参考: [控制台](sys-console.md) + + +### 自定义队列驱动 + +只需实现消息队列的生成者和消费者接口,并加入到初始化中进行相应调用即可。 + +- 接口片段:server/internal/library/queue/init.go + +```go +package queue + +import ( + "time" +) + +type MqMsg struct { + RunType int `json:"run_type"` + Topic string `json:"topic"` + MsgId string `json:"msg_id"` + Offset int64 `json:"offset"` + Partition int32 `json:"partition"` + Timestamp time.Time `json:"timestamp"` + Body []byte `json:"body"` +} + +type MqProducer interface { + SendMsg(topic string, body string) (mqMsg MqMsg, err error) + SendByteMsg(topic string, body []byte) (mqMsg MqMsg, err error) + SendDelayMsg(topic string, body string, delay int64) (mqMsg MqMsg, err error) +} + +type MqConsumer interface { + ListenReceiveMsgDo(topic string, receiveDo func(mqMsg MqMsg)) (err error) +} + +``` + +将实现过接口(MqProducer、MqConsumer)的实例方法分别加入到NewProducer、NewConsumer中进行相应调用即可。 + diff --git a/docs/guide-zh-CN/sys-tcp-server.md b/docs/guide-zh-CN/sys-tcp-server.md new file mode 100644 index 0000000..6f81a5b --- /dev/null +++ b/docs/guide-zh-CN/sys-tcp-server.md @@ -0,0 +1,271 @@ +## TCP服务器 + +目录 + +- 配置文件 +- 一个基本的消息收发例子 +- 注册路由 +- 拦截器 +- 服务认证 +- 更多 + +> HotGo基于GoFrame的TCP服务器组件,提供了一个简单而灵活的方式快速搭建基于TCP的服务应用。集成了许多常用功能,如长连接、服务认证、路由分发、RPC消息、拦截器和数据绑定等,大大简化和规范了服务器开发流程。 + +### 配置文件 +- 配置文件:server/manifest/config/config.yaml + +```yaml +tcp: + # 服务器 + server: + address: ":8099" + # 客户端 + client: + # 定时任务 + cron: + group: "cron" # 分组名称 + name: "cron1" # 客户端名称 + address: "127.0.0.1:8099" # 服务器地址 + appId: "1002" # 应用名称 + secretKey: "hotgo" # 密钥 + # 系统授权 + auth: + group: "auth" # 分组名称 + name: "auth1" # 客户端名称 + address: "127.0.0.1:8099" # 服务器地址 + appId: "mengshuai" # 应用名称 + secretKey: "123456" # 密钥 + +``` +- 可以看到,除了服务器配置外,还有两个客户端配置`cron` 和`auth` +- `cron`是HotGo内置的定时任务服务,和http服务通过RPC通讯以实现和后台交互,使其可以独立、集群部署。 +- `auth`可以为第三方平台提供授权服务。如果你需要他,可以将它部署在第三方程序中,在重要的位置进行授权验证。 + +### 一个基本的消息收发测试用例 + +- 文件路径:server/internal/library/network/tcp/tcp_example_test.go + +```go +package tcp_test + +import ( + "context" + "fmt" + "github.com/gogf/gf/v2/os/gctx" + "github.com/gogf/gf/v2/test/gtest" + "hotgo/internal/library/network/tcp" + "testing" + "time" +) + +var T *testing.T // 声明一个全局的 *testing.T 变量 + +type TestMsgReq struct { + Name string `json:"name"` +} + +type TestMsgRes struct { + tcp.ServerRes +} + +type TestRPCMsgReq struct { + Name string `json:"name"` +} + +type TestRPCMsgRes struct { + tcp.ServerRes +} + +func onTestMsg(ctx context.Context, req *TestMsgReq) { + fmt.Printf("服务器收到消息 ==> onTestMsg:%+v\n", req) + conn := tcp.ConnFromCtx(ctx) + gtest.C(T, func(t *gtest.T) { + t.AssertNE(conn, nil) + }) + + res := new(TestMsgRes) + res.Message = fmt.Sprintf("你的名字:%v", req.Name) + conn.Send(ctx, res) +} + +func onResponseTestMsg(ctx context.Context, req *TestMsgRes) { + fmt.Printf("客户端收到响应消息 ==> TestMsgRes:%+v\n", req) + err := req.GetError() + gtest.C(T, func(t *gtest.T) { + t.AssertNil(err) + }) +} + +func onTestRPCMsg(ctx context.Context, req *TestRPCMsgReq) (res *TestRPCMsgRes, err error) { + fmt.Printf("服务器收到消息 ==> onTestRPCMsg:%+v\n", req) + res = new(TestRPCMsgRes) + res.Message = fmt.Sprintf("你的名字:%v", req.Name) + return +} + +func startTCPServer() { + serv := tcp.NewServer(&tcp.ServerConfig{ + Name: "hotgo", + Addr: ":8002", + }) + + // 注册路由 + serv.RegisterRouter( + onTestMsg, + ) + + // 注册RPC路由 + serv.RegisterRPCRouter( + onTestRPCMsg, + ) + + // 服务监听 + err := serv.Listen() + gtest.C(T, func(t *gtest.T) { + t.AssertNil(err) + }) +} + +// 一个基本的消息收发 +func TestSendMsg(t *testing.T) { + T = t + go startTCPServer() + + ctx := gctx.New() + client := tcp.NewClient(&tcp.ClientConfig{ + Addr: "127.0.0.1:8002", + }) + + // 注册路由 + client.RegisterRouter( + onResponseTestMsg, + ) + + go func() { + err := client.Start() + gtest.C(T, func(t *gtest.T) { + t.AssertNil(err) + }) + }() + + // 确保服务都启动完成 + time.Sleep(time.Second * 1) + + // 拿到客户端的连接 + conn := client.Conn() + gtest.C(T, func(t *gtest.T) { + t.AssertNE(conn, nil) + }) + + // 向服务器发送tcp消息,不会阻塞程序执行 + err := conn.Send(ctx, &TestMsgReq{Name: "Tom"}) + gtest.C(T, func(t *gtest.T) { + t.AssertNil(err) + }) + + // 向服务器发送rpc消息,会等待服务器响应结果,直到拿到结果或响应超时才会继续 + var res TestRPCMsgRes + if err = conn.RequestScan(ctx, &TestRPCMsgReq{Name: "Tony"}, &res); err != nil { + gtest.C(T, func(t *gtest.T) { + t.AssertNil(err) + }) + } + + fmt.Printf("客户端收到RPC消息响应 ==> TestRPCMsgRes:%+v\n", res) + time.Sleep(time.Second * 1) +} + +``` + + +### 注册路由 + +- 从上面的例子可以看到,不管是普通TCP消息和RPC消息的请求/响应结构体都采用类似GF框架的规范路由的结构,请求`XxxRes`/响应`XxxRes`的格式,是不是很亲切? + + +### 拦截器 + +- 不管是服务端还是客户端,在初始化时都可以注册多个拦截器来满足更多场景的服务开发,下面是一个使用例子: + +```go +package main + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/library/network/tcp" +) + +func main() { + serv = tcp.NewServer(&tcp.ServerConfig{ + Name: "hotgo", + Addr: ":8002", + }) + + // 注册拦截器 + // 执行顺序是从前到后,即Interceptor -> Interceptor2 -> Interceptor3。如果中间有任意一个抛出错误,则会中断后续处理 + serv.RegisterInterceptor(Interceptor, Interceptor2, Interceptor3) + + // 服务监听 + if err := serv.Listen(); err != nil { + if !serv.IsClose() { + g.Log().Warningf(ctx, "TCPServer Listen err:%v", err) + } + } +} + +func Interceptor(ctx context.Context, msg *tcp.Message) (err error) { + // 可以在拦截器中通过上下文拿到连接 + conn := tcp.ConnFromCtx(ctx) + + // 拿到原始请求消息 + g.Dump(msg) + + // 如果想要中断后续处理只需返回一个错误即可,但注意两种情况 + // tcp消息:如果你还想对该消息进行回复应在拦截器中进行处理,例如:conn.Send(ctx, 回复消息内容) + // rpc消息:返回一个错误后系统会将错误自动回复到rpc响应中,无需单独处理 + return +} + +func Interceptor2(ctx context.Context, msg *tcp.Message) (err error) { + // ... + return +} + +func Interceptor3(ctx context.Context, msg *tcp.Message) (err error) { + // ... + return +} + +``` + + +### 服务认证 + +- 一般情况下,建议客户端连接到服务器时都通过`授权许可证`的方式进行登录认证,当初始化客户端配置认证数据时,连接成功后会自动进行登录认证。 + +```go + // 创建客户端配置 + clientConfig := &tcp.ClientConfig{ + Addr: "127.0.0.1:8002", + AutoReconnect: true, + // 认证数据 + // 认证数据可以在后台-系统监控-在线服务-许可证列表中添加,同一个授权支持多个服务使用,但多个服务不能使用相同的名称进行连接 + Auth: &tcp.AuthMeta{ + Name: "服务名称", + Group: "服务分组", + AppId: "APPID", + SecretKey: "SecretKey", + }, + } + + // 初始化客户端 + client = tcp.NewClient(clientConfig) +``` + + +### 更多 + +TCP服务器源码路径:server/internal/library/network/tcp + +更多文档请参考:https://goframe.org/pages/viewpage.action?pageId=1114625 diff --git a/docs/guide-zh-CN/sys-tenant.md b/docs/guide-zh-CN/sys-tenant.md new file mode 100644 index 0000000..6c97d79 --- /dev/null +++ b/docs/guide-zh-CN/sys-tenant.md @@ -0,0 +1,175 @@ +## SaaS多租户 + + +目录 + +- 介绍 +- 职责划分 +- 如何在HotGo开发多租户业务 +- 多租户数据库设计 +- 多租户功能演示 + +### 介绍 + +SaaS系统多租户多应用设计,已成为互联网企业的重要发展建设方向。核心在于多租户SAAS系统独立前台、共享后台、共享数据库的平台应用架构。 + +> 目前HotGo的部分基础功能并不完全支持多租户设计,但这并不妨碍开发者基于HotGo构建自己的多租户产品 + + +### 职责划分 + +在SaaS系统多租户中,不同身份用户的职责功能划分假设可以是这样: + +> 这只是一个粗略的概念,实际开发时应根据业务来进行调整,每个身份也都不是必须的。 + +| 身份 | 标识 | 职责和功能划分 | +|-----------------|----------|-------------------------------------------------------| +| 公司| company | 管理整个平台,包括商户和用户账户、系统设置以及其他全局性业务流程。 | +| 租户 | tenant | 多租户系统中顶层实体客户、组织或实体。有自己的多个商户、用户、产品、订单等。拥有独立的数据隔离和安全边界。 | +| 商户 | merchant | 受租户的监管和管理,可独立经营的实体。提供产品或服务,管理自己的业务,包括库存管理、订单处理、结算等。 | +| 用户 | user | 真正购买产品或享受服务的人,与商户互动,管理个人信息等个性化功能。 | + + +### 如何在HotGo开发多租户业务 +#### 一、应用功能 + +根据角色来划分用户的后台功能,在创建用户时为其绑定角色,然后为不同角色分配不同的功能菜单 + +请参考: [权限控制](sys-auth.md) + + +#### 二、 数据隔离 + +根据部门来划定用户的数据权限范围,在创建用户时为其绑定部门 + +- 在用户登录成功后,server端可通过上下文来获取用户部门类型来确定用户身份 +- 文件路径:server/internal/library/contexts/context.go + +```go +package contexts + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/net/ghttp" + "hotgo/internal/consts" + "hotgo/internal/model" +) + +// GetDeptType 获取用户部门类型 +func GetDeptType(ctx context.Context) string { + user := GetUser(ctx) + if user == nil { + return "" + } + return user.DeptType +} + +// IsCompanyDept 是否为公司部门 +func IsCompanyDept(ctx context.Context) bool { + return GetDeptType(ctx) == consts.DeptTypeCompany +} + +// IsTenantDept 是否为租户部门 +func IsTenantDept(ctx context.Context) bool { + return GetDeptType(ctx) == consts.DeptTypeTenant +} + +// IsMerchantDept 是否为商户部门 +func IsMerchantDept(ctx context.Context) bool { + return GetDeptType(ctx) == consts.DeptTypeMerchant +} + +// IsUserDept 是否为普通用户部门 +func IsUserDept(ctx context.Context) bool { + return GetDeptType(ctx) == consts.DeptTypeUser +} +``` + +- 在用户登录成功后,web端可通`useUserStore`来获取用户部门类型来确定用户身份 +- 文件路径:web/src/store/modules/user.ts + +```vue + +``` + +### 多租户数据库设计 + +HotGo定位是中小型应用开发,推荐采用一套数据库不同Schema。就是在多租户业务表中加入用户标识字段,来区分不同用户的数据,如:`tenant_id` + +- 参考文章:https://blog.csdn.net/haponchang/article/details/104246317 + + +### 多租户功能演示 + +请登录后台【插件应用】-【功能案例】-【多租户功能演示】查看 + +#### 自动维护租户关系 + +- 只需在表设计时包含以下字段,即可使用handler和hook实现租户权限过滤和租户关系维护 + +| 字段名称 | 数据类型 | 字段注释 | 必选 | +|------|----------|------|-----------------------------------------------------| +| tenant_id | bigint(20) | 租户ID | 否 | +| merchant_id | bigint(20) | 商户ID | 否 | +| user_id | bigint(20) | 用户ID | 否 | + +下面是多租户功能演示例子代码中的使用片段 + +- 封装查询Model + +```go +// Model 多租户功能演示ORM模型 +func (s *sSysTenantOrder) Model(ctx context.Context, option ...*handler.Option) *gdb.Model { + if len(option) == 0 { + // 过滤多租户数据权限 + option = append(option, &handler.Option{ + FilterTenant: true, + //FilterAuth: true, // 如果还需要维护created_by、member_id等部门数据权限范围可放开注释 + }) + } + return handler.Model(dao.AddonHgexampleTenantOrder.Ctx(ctx), option...) +} +``` + +- 增改数据自动维护租户关系 +```go +// Edit 修改/新增多租户功能演示 +func (s *sSysTenantOrder) Edit(ctx context.Context, in *sysin.TenantOrderEditInp) (err error) { + return g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) (err error) { + + // 修改 + if in.Id > 0 { + if _, err = s.Model(ctx). + Fields(sysin.TenantOrderUpdateFields{}). + WherePri(in.Id).Data(in). + Hook(hook.SaveTenant). // 自动维护租户关系更新 + Update(); err != nil { + } + return + } + + // 新增 + if _, err = dao.AddonHgexampleTenantOrder.Ctx(ctx). + Fields(sysin.TenantOrderInsertFields{}). + Hook(hook.SaveTenant). // 自动维护租户关系更新 + Data(in). + Insert(); err != nil { + } + return + }) +} +``` + +相关代码文件:/server/addons/hgexample/logic/sys/tenant_order.go + diff --git a/docs/guide-zh-CN/sys-test.md b/docs/guide-zh-CN/sys-test.md new file mode 100644 index 0000000..26a1681 --- /dev/null +++ b/docs/guide-zh-CN/sys-test.md @@ -0,0 +1,3 @@ +## 单元测试 + +请参考:https://goframe.org/pages/viewpage.action?pageId=1114153 \ No newline at end of file diff --git a/docs/guide-zh-CN/sys-utility.md b/docs/guide-zh-CN/sys-utility.md new file mode 100644 index 0000000..4a66582 --- /dev/null +++ b/docs/guide-zh-CN/sys-utility.md @@ -0,0 +1,20 @@ +## 工具方法 + +HotGo还提供一些系统中常用的工具库方法,在这里简单说明: + +``` +/server +├── utility +│ ├── charset # 字符串处理 +│ ├── convert # 数据类型转换 +│ ├── encrypt # 数据加密/解密 +│ ├── excel # 电子表格导出/导入 +│ ├── file # 文件/目录处理 +│ ├── format # 数据格式化 +│ ├── simple # 一些简捷函数 +│ ├── tree # 树形结构 +│ ├── url # URL处理 +│ ├── useragent # 请求头代理处理 +└── └── validate # 数据验证 +``` + diff --git a/docs/guide-zh-CN/sys-webhook.md b/docs/guide-zh-CN/sys-webhook.md new file mode 100644 index 0000000..ef5d21e --- /dev/null +++ b/docs/guide-zh-CN/sys-webhook.md @@ -0,0 +1,3 @@ +## WebHook + +请参考:https://goframe.org/pages/viewpage.action?pageId=1114387 diff --git a/docs/guide-zh-CN/sys-websocket-client.md b/docs/guide-zh-CN/sys-websocket-client.md new file mode 100644 index 0000000..517c5e8 --- /dev/null +++ b/docs/guide-zh-CN/sys-websocket-client.md @@ -0,0 +1,213 @@ +## WebSocket客户端 + +目录 + +- 全局消息监听 +- 单页面消息监听 +- 发送消息 + +> 基于WebSocket服务器,hotgo还对客户端的上做了一些封装,使其使用起来更加方便 +- [WebSocket服务器](sys-websocket-server.md) + +### 全局消息监听 +- 所有全局的消息监听都在这里 +- 文件路径:web/src/utils/websocket/registerMessage.ts + +```ts +import { TABS_ROUTES } from '@/store/mutation-types'; +import { SocketEnum } from '@/enums/socketEnum'; +import { useUserStoreWidthOut } from '@/store/modules/user'; +import { notificationStoreWidthOut } from '@/store/modules/notification'; +import { addOnMessage, WebSocketMessage } from '@/utils/websocket/index'; + +// 注册全局消息监听 +export function registerGlobalMessage() { + // 心跳 + addOnMessage(SocketEnum.EventPing, function (_message: WebSocketMessage) { + // console.log('ping..'); + }); + + // 强制退出 + addOnMessage(SocketEnum.EventKick, function (_message: WebSocketMessage) { + const useUserStore = useUserStoreWidthOut(); + useUserStore.logout().then(() => { + // 移除标签页 + localStorage.removeItem(TABS_ROUTES); + location.reload(); + }); + }); + + // 消息通知 + addOnMessage(SocketEnum.EventNotice, function (message: WebSocketMessage) { + const notificationStore = notificationStoreWidthOut(); + notificationStore.triggerNewMessages(message.data); + }); + + // 更多全局消息处理都可以在这里注册 + // ... +} + +``` + +#### 单页面消息监听 +- 当你只需要某个页面使用WebSocket,这将是一个不错的选择,下面是一个简单的演示例子 +- 文件路径:web/src/views/addons/hgexample/portal/websocketTest.vue + +```vue + + + + + +``` + +#### 发送消息 +- 向服务器发送一条消息 + +```ts + import { sendMsg } from '@/utils/websocket'; + + const event = 'admin/addons/hgexample/testMessage'; // 消息路由 + const data: object | null = { // 消息内容 + message: 'message content...', + }; + const isRetry = false; // 发送失败是否重试,不传默认为true + + // 基本使用 + sendMsg(event, data); + + // 无消息内容 + sendMsg(event); + + // 发送失败不重试 + sendMsg(event, data, isRetry); +``` diff --git a/docs/guide-zh-CN/sys-websocket-server.md b/docs/guide-zh-CN/sys-websocket-server.md new file mode 100644 index 0000000..1e6db23 --- /dev/null +++ b/docs/guide-zh-CN/sys-websocket-server.md @@ -0,0 +1,148 @@ +## WebSocket服务器 + +目录 + +- 一个基本的消息收发例子 +- 常用方法 +- HTTP接口 +- 其他 + +> hotgo提供了一个WebSocket服务器,随`HTTP服务`启停。集成了许多常用功能,如JWT身份认证、路由消息处理器、一对一消息/群组消息/广播消息、在线用户管理、心跳保持等,大大简化和规范了WebSocket服务器的开发流程。 +- [Websocket客户端](sys-websocket-client.md) + +### 一个基本的消息收发例子 +- 这是一个基本的消息接收并进行处理的简单例子 + +#### 1.消息处理接口 +- 消息处理在设计上采用了接口化的思路。只需要实现以下接口,即可进行WebSocket消息注册 +- 文件路径:server/internal/websocket/model.go + +```go +package websocket + +// EventHandler 消息处理器 +type EventHandler func(client *Client, req *WRequest) +``` + +#### 2.定义消息处理方法 +- 以下是功能案例中的一个简单演示,实现了消息处理接口,并将收到的消息原样发送给客户端 +- 文件路径:server/addons/hgexample/controller/websocket/handler/index.go + +```go +package handler + +import ( + "github.com/gogf/gf/v2/encoding/gjson" + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/websocket" +) + +var ( + Index = cIndex{} +) + +type cIndex struct{} + +// TestMessage 测试消息 +func (c *cIndex) TestMessage(client *websocket.Client, req *websocket.WRequest) { + g.Log().Infof(client.Context(), "收到客户端测试消息:%v", gjson.New(req).String()) + // 将收到的消息原样发送给客户端 + websocket.SendSuccess(client, req.Event, req.Data) +} +``` + +#### 3.注册消息 +- 定义消息处理方法后,需要将其注册到WebSocket消息处理器,一般放在对应应用模块的`router/websocket.go`下即可 +- 文件路径:server/addons/hgexample/router/websocket.go + +```go +package router + +import ( + "context" + "github.com/gogf/gf/v2/net/ghttp" + "hotgo/addons/hgexample/controller/websocket" + "hotgo/addons/hgexample/controller/websocket/handler" + ws "hotgo/internal/websocket" +) + +// WebSocket ws路由配置 +func WebSocket(ctx context.Context, group *ghttp.RouterGroup) { + // 注册消息路由 + ws.RegisterMsg(ws.EventHandlers{ + "admin/addons/hgexample/testMessage": handler.Index.TestMessage, // 测试消息 + }) + + // 这里"admin/addons/hgexample/testMessage"代表的是一个消息处理ID,可以自定义。建议的格式是和HTTP接口格式保持一致,这样还可以便于对用户请求的消息进行权限验证 + // 客户端连接后,向WebSocket服务器发送event为"admin/addons/hgexample/testMessage"的消息时,会调用TestMessage方法 +} +``` + +- 到此,你已了解了WebSocket消息接收并进行处理的基本流程 + + +### 常用方法 +- websocket服务器还提供了一些常用的方法,下面只对部分进行说明 + +```go +func test() { + websocket.SendToAll() // 发送全部客户端 + websocket.SendToClientID() // 发送单个客户端 + websocket.SendToUser() // 发送单个用户 + websocket.SendToTag() // 发送某个标签、群组 + + client := websocket.Manager().GetClient(id) // 通过连接ID获取客户端连接 + client := websocket.Manager().GetUserClient(userId) // 通过用户ID获取客户端连接,因为用户是可多端登录的,这里返回的是一个切片 + + websocket.SendSuccess(client, "admin/addons/hgexample/testMessage", "消息内容") // 向指定客户端发送一条成功的消息 + websocket.SendError(client, "admin/addons/hgexample/testMessage", gerror.New("错误内容")) // 向指定客户端发送一条失败的消息 + +} +``` + + +### HTTP接口 +- 你还可以通过http接口方式调用WebSocket发送消息 +- 参考文件:server/internal/controller/websocket/send.go + + +### 其他 +- WebSocket被连接时需验证用户认证中间件,所以用户必须登录成功后才能连接成功 +- 参考文件:server/internal/logic/middleware/weboscket_auth.go + +```go +package middleware + +import ( + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/net/ghttp" + "github.com/gogf/gf/v2/text/gstr" + "hotgo/internal/consts" + "hotgo/internal/library/response" + "hotgo/utility/simple" +) + +// WebSocketAuth websocket鉴权中间件 +func (s *sMiddleware) WebSocketAuth(r *ghttp.Request) { + var ( + ctx = r.Context() + path = gstr.Replace(r.URL.Path, simple.RouterPrefix(ctx, consts.AppWebSocket), "", 1) + ) + + // 不需要验证登录的路由地址 + if s.IsExceptLogin(ctx, consts.AppWebSocket, path) { + r.Middleware.Next() + return + } + + // 将用户信息传递到上下文中 + if err := s.DeliverUserContext(r); err != nil { + response.JsonExit(r, gcode.CodeNotAuthorized.Code(), err.Error()) + return + } + + r.Middleware.Next() +} +``` + +- 如果您不要求用户进行登录即可使用 WebSocket,那么需要对身份验证中间件进行修改。然而,这样做会降低连接的安全性,并且无法应用于需要确定用户身份的情景,因此并不建议采取这种策略 diff --git a/docs/guide-zh-CN/web-deploy.md b/docs/guide-zh-CN/web-deploy.md new file mode 100644 index 0000000..51bc603 --- /dev/null +++ b/docs/guide-zh-CN/web-deploy.md @@ -0,0 +1,261 @@ +## 独立部署 + +目录 + +- 构建 +- 旧版浏览器兼容 +- 预览 +- 分析构建文件体积 +- 压缩 +- 部署 + +> 在实际开发中,web前端也可能需要独立部署,所以在此提供一下部署方案。 + +### 构建 + +项目开发完成之后,执行以下命令进行构建 +```shell +pnpm run build 或 npm run build +``` +构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件 + + +### 旧版浏览器兼容 + +在 .env.production 内 + +设置 `VITE_LEGACY=true` 即可打包出兼容旧版浏览器的代码 +```shell +VITE_LEGACY = true +``` + + + +### 预览 + +发布之前可以在本地进行预览,有多种方式,这里介绍两种 + +##### 不能直接打开构建后的 html 文件 + +使用项目自定的命令进行预览(推荐) +```shell +# 先打包在进行预览 +pnpm run preview 或 npm run preview +# 直接预览本地 dist 文件目录 +pnpm run preview:dist 或 npm run preview:dist +``` + +- 本地服务器预览(通过 live-server) +```shell +# 1.全局安装live-server +npm -g install live-server +# 2. 进入打包的后目录 +cd ./dist +# 本地预览,默认端口8080 +live-server +# 指定端口 +live-server --port 9000 +``` + +### 分析构建文件体积 +如果你的构建文件很大,可以通过项目内置 [rollup-plugin-analyzer](https://github.com/doesdev/rollup-plugin-analyzer) 插件进行代码体积分析,从而优化你的代码。 +```shell +pnpm run report 或 npm run report +``` +运行之后,在自动打开的页面可以看到具体的体积分布,以分析哪些依赖有问题。 + +- 左上角可以切换 显示 gzip 或者 brotli + +![start-deploy-report.png](./images/start-deploy-report.png) + + +### 压缩 + +#### 开启 gzip 压缩 + +开启 gzip,并配合 nginx 的 `gzip_static` 功能可以大大加快页面访问速度 + +- 只需开启 `VITE_BUILD_COMPRESS='gzip'` 即可在打包的同时生成 .gz 文件 + +```shell +# 根据自己路径来配置更改 +# 例如部署在nginx /next/路径下 则VITE_PUBLIC_PATH=/next/ +VITE_PUBLIC_PATH=/ +``` + +#### 开启 brotli 压缩 + +brotli 是比 gzip 压缩率更高的算法,可以与 gzip 共存不会冲突,需要 nginx 安装指定模块并开启即可。 + +- 只需开启 VITE_BUILD_COMPRESS='brotli' 即可在打包的同时生成 .br 文件 + +```shell +# 根据自己路径来配置更改 +# 例如部署在nginx /next/路径下 则VITE_PUBLIC_PATH=/next/ +VITE_PUBLIC_PATH=/ +``` + + +#### 同时开启 gzip 与 brotli + +只需开启 VITE_BUILD_COMPRESS='brotli,gzip' 即可在打包的同时生成 .gz 和 .br 文件。 + + +#### gzip 与 brotli 在 nginx 内的配置 +``` +http { + # 开启gzip + gzip on; + # 开启gzip_static + # gzip_static 开启后可能会报错,需要安装相应的模块, 具体安装方式可以自行查询 + # 只有这个开启,vue文件打包的.gz文件才会有效果,否则不需要开启gzip进行打包 + gzip_static on; + gzip_proxied any; + gzip_min_length 1k; + gzip_buffers 4 16k; + #如果nginx中使用了多层代理 必须设置这个才可以开启gzip。 + gzip_http_version 1.0; + gzip_comp_level 2; + gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; + gzip_vary off; + gzip_disable "MSIE [1-6]\."; + + # 开启 brotli压缩 + # 需要安装对应的nginx模块,具体安装方式可以自行查询 + # 可以与gzip共存不会冲突 + brotli on; + brotli_comp_level 6; + brotli_buffers 16 8k; + brotli_min_length 20; + brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml; +} + +``` + +### 部署 + +- 注意:项目默认是在生产环境开启 Mock,这样做非常不好,只是为了演示环境有数据,不建议在生产环境使用 Mock,而应该使用真实的后台接口,并将 Mock 关闭。 + +#### 发布 + +简单的部署只需要将最终生成的静态文件,dist 文件夹的静态文件发布到你的 cdn 或者静态服务器即可,需要注意的是其中的 index.html 通常会是你后台服务的入口页面,在确定了 js 和 css 的静态之后可能需要改变页面的引入路径。 + +例如上传到 nginx `/srv/www/project/index.html` + +``` +# nginx配置 +location / { + # 不缓存html,防止程序更新后缓存继续生效 + if ($request_filename ~* .*\.(?:htm|html)$) { + add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate"; + access_log on; + } + # 这里是vue打包文件dist内的文件的存放路径 + root /srv/www/project/; + index index.html index.htm; +} + + +``` + +部署时可能会发现资源路径不对,只需要修改`.env.production`文件即可。 + +```shell +# 根据自己路径来配置更改 +# 注意需要以 / 开头和结尾 +VITE_PUBLIC_PATH=/ +VITE_PUBLIC_PATH=/xxx/ + +``` + +#### 前端路由与服务端的结合 + +项目前端路由使用的是 vue-router,所以你可以选择两种方式:history 和 hash。 + +- hash 默认会在 url 后面拼接# +- history 则不会,不过 history 需要服务器配合 + +可在 src/router/index.ts 内进行 mode 修改 + +```vue +import { createRouter, createWebHashHistory, createWebHistory } from 'vue-router'; + +createRouter({ + history: createWebHashHistory(), + // or + history: createWebHistory(), +}); + +``` + +#### history 路由模式下服务端配置 + +开启 history 模式需要服务器配置,更多的服务器配置详情可以看 [history-mode](https://router.vuejs.org/guide/essentials/history-mode.html#html5-mode) + +这里以 nginx 配置为例 + + +##### 部署到根目录 +``` +server { + listen 80; + location / { + # 用于配合 History 使用 + try_files $uri $uri/ /index.html; + } +} +``` + +#### 部署到非根目录 + +1. 首先需要在打包的时候更改配置 + +```shell +# 在.env.production内,配置子目录路径 +VITE_PUBLIC_PATH = /sub/ +``` + +``` +server { + listen 80; + server_name localhost; + location /sub/ { + # 这里是vue打包文件dist内的文件的存放路径 + alias /srv/www/project/; + index index.html index.htm; + try_files $uri $uri/ /sub/index.html; + } +} +``` + +#### 使用 nginx 处理跨域 + +使用 nginx 处理项目部署后的跨域问题 + +1. 配置前端项目接口地址 + +``` +# 在.env.production内,配置接口地址 +VITE_GLOB_API_URL=/api +``` + +2. 在 nginx 配置请求转发到后台 + +``` +server { + listen 8080; + server_name localhost; + # 接口代理,用于解决跨域问题 + location /api { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + # 后台接口地址 + proxy_pass http://110.110.1.1:8080/api; + proxy_redirect default; + add_header Access-Control-Allow-Origin *; + add_header Access-Control-Allow-Headers X-Requested-With; + add_header Access-Control-Allow-Methods GET,POST,OPTIONS; + } +} +``` \ No newline at end of file diff --git a/docs/guide-zh-CN/web-form.md b/docs/guide-zh-CN/web-form.md new file mode 100644 index 0000000..17a8a19 --- /dev/null +++ b/docs/guide-zh-CN/web-form.md @@ -0,0 +1,879 @@ +## 表单组件 + +目录 + +- 文本输入 Input +- 数字输入 Input Number +- 文本域 InputTextarea +- 富文本 InputEditor +- 动态键值对 InputDynamic +- 日期选择 Date(Y-M-D) +- 日期范围选择 DateRange +- 时间选择 Time(Y-M-D H:i:s) +- 时间范围选择 TimeRange +- 单选按钮 Radio +- 复选框 Checkbox +- 单选下拉框 Select +- 多选下拉框 SelectMultiple +- 树型选择 Tree Select +- 单图上传 UploadImage +- 多图上传 UploadImage +- 单文件上传 UploadFile +- 多文件上传 UploadFile +- 文件选择器 FileChooser +- 大文件上传 MultipartUpload +- 开关 Switch +- 评分 Rate +- 省市区选择器 CitySelector +- 图标选择器 IconSelector + +### 文本输入 Input + +```vue + + + +``` + +### 数字输入 Input Number + +```vue + + + +``` + +### 文本域 InputTextarea + +```vue + + + +``` + +### 富文本 InputEditor + +```vue + + + +``` + +### 动态键值对 InputDynamic + +```vue + + + +``` + +### 日期选择 Date(Y-M-D) + +```vue + + + +``` + +### 日期范围选择 DateRange + +```vue + + + +``` + +### 时间选择 Time(Y-M-D H:i:s) + +```vue + + + +``` + +### 时间范围选择 TimeRange + +```vue + + + +``` + +### 单选按钮 Radio + +```vue + + + +``` + +### 复选框 Checkbox +```vue + + + +``` + + +### 单选下拉框 Select +```vue + + + +``` + +### 多选下拉框 SelectMultiple +```vue + + + +``` + +### 树型选择 Tree Select +```vue + + + + + +``` + + +### 单图上传 UploadImage +```vue + + + +``` + +### 多图上传 UploadImage +```vue + + + +``` + +### 单文件上传 UploadFile +```vue + + + +``` + +### 多文件上传 UploadFile +```vue + + + +``` + +### 文件选择器 FileChooser +- 基础用法 +```vue + + + +``` + +- 指定fileType,支持多种选择器类型,默认情况是全部都可以选择 +```ts +type FileType = 'image' | 'doc' | 'audio' | 'video' | 'zip' | 'other' | 'default'; +``` + +- 图片选择器 +```vue + +``` + +- 多选支持,指定`maxNumber`多选数量 +```vue + +``` + +### 大文件上传 MultipartUpload +- 基础用法 +```vue + + + +``` + +### 开关 Switch +```vue + + + +``` + +### 评分 Rate +```vue + + + +``` + +### 省市区选择器 CitySelector +```vue + + + +``` + +### 图标选择器 IconSelector +```vue + + + +``` + + +更多组件请参考:https://www.naiveui.com/zh-CN/os-theme/components/button + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..8d2ad74 --- /dev/null +++ b/index.html @@ -0,0 +1,187 @@ + + + + + + + + + HotGo-V2 + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/server/.gitattributes b/server/.gitattributes new file mode 100644 index 0000000..1fbf887 --- /dev/null +++ b/server/.gitattributes @@ -0,0 +1 @@ +* linguist-language=GO \ No newline at end of file diff --git a/server/.gitignore b/server/.gitignore new file mode 100644 index 0000000..a314378 --- /dev/null +++ b/server/.gitignore @@ -0,0 +1,39 @@ +.buildpath +.hgignore.swp +.project +.orig +.swp +.idea/ +.settings/ +.vscode/ +vendor/ +composer.lock +pkg/ +cbuild +**/.DS_Store +/test/ +main +output/ +manifest/config/config.yaml +manifest/output/ +resource/log/ +resource/public/admin/ +resource/public/attachment/ +storage/cache/ +storage/diskqueue/ +storage/cert/ssl/server.crt +storage/cert/ssl/server.key +storage/cert/pay/alipay/ +storage/cert/pay/wxpay/ +temp/ +logs/ +main.exe +main.exe~ +*.exe +*.log +*.zip +.idea +!hotgo/ +*.lock +/bin/package.sh +internal/packed/packed.go diff --git a/server/.golangci.yml b/server/.golangci.yml new file mode 100644 index 0000000..94f158a --- /dev/null +++ b/server/.golangci.yml @@ -0,0 +1,287 @@ +## This file contains all available configuration options +## with their default values. + +# See https://github.com/golangci/golangci-lint#config-file +# See https://golangci-lint.run/usage/configuration/ + +# Options for analysis running. +run: + # Exit code when at least one issue was found. + # Default: 1 + issues-exit-code: 2 + + # Include test files or not. + # Default: true + tests: false + go: "1.20" + + # Which dirs to skip: issues from them won't be reported. + # Can use regexp here: `generated.*`, regexp is applied on full path. + # Default value is empty list, + # but default dirs are skipped independently of this option's value (see skip-dirs-use-default). + # "/" will be replaced by current OS file path separator to properly work on Windows. + # skip-dirs: + # - internal/library/hggen/internal + + # Which files to skip: they will be analyzed, but issues from them won't be reported. + # Default value is empty list, + # but there is no need to include all autogenerated files, + # we confidently recognize autogenerated files. + # If it's not please let us know. + # "/" will be replaced by current OS file path separator to properly work on Windows. + # skip-files: [] + + +# Main linters configurations. +# See https://golangci-lint.run/usage/linters +linters: + # Disable all default enabled linters. + disable-all: true + # Custom enable linters we want to use. + enable: + - errcheck # Errcheck is a program for checking for unchecked errors in go programs. + - errchkjson # Checks types passed to the json encoding functions. Reports unsupported types and optionally reports occasions, where the check for the returned error can be omitted. + - funlen # Tool for detection of long functions + - goconst # Finds repeated strings that could be replaced by a constant + - gocritic # Provides diagnostics that check for bugs, performance and style issues. +# - gofmt # Gofmt checks whether code was gofmt-ed. By default this tool runs with -s option to check for code simplification + - gosimple # Linter for Go source code that specializes in simplifying code + - govet # Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string + - misspell # Finds commonly misspelled English words in comments + - nolintlint # Reports ill-formed or insufficient nolint directives + - revive # Fast, configurable, extensible, flexible, and beautiful linter for Go. Drop-in replacement of golint. + - staticcheck # It's a set of rules from staticcheck. It's not the same thing as the staticcheck binary. + - typecheck # Like the front-end of a Go compiler, parses and type-checks Go code + - usestdlibvars # A linter that detect the possibility to use variables/constants from the Go standard library. + - whitespace # Tool for detection of leading and trailing whitespace + + +issues: + exclude-rules: + # helpers in tests often (rightfully) pass a *testing.T as their first argument + - path: _test\.go + text: "context.Context should be the first parameter of a function" + linters: + - revive + # Yes, they are, but it's okay in a test + - path: _test\.go + text: "exported func.*returns unexported type.*which can be annoying to use" + linters: + - revive + # https://github.com/go-critic/go-critic/issues/926 + - linters: + - gocritic + text: "unnecessaryDefer:" + exclude-dirs: + - internal/library/hggen/internal + exclude-files: [] + + +# https://golangci-lint.run/usage/linters +linters-settings: + # https://golangci-lint.run/usage/linters/#misspell + misspell: + locale: US + ignore-words: + - cancelled + + # https://golangci-lint.run/usage/linters/#revive + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md + revive: + ignore-generated-header: true + severity: error + rules: + - name: atomic + - name: line-length-limit + severity: error + arguments: [ 1024 ] + - name: unhandled-error + severity: warning + disabled: true + arguments: [] + - name: var-naming + severity: warning + disabled: true + arguments: + # AllowList + - [ "ID","URL","IP","HTTP","JSON","API","UID","Id","Api","Uid","Http","Json","Ip","Url" ] + # DenyList + - [ "VM" ] + - name: string-format + severity: warning + disabled: false + arguments: + - - 'core.WriteError[1].Message' + - '/^([^A-Z]|$)/' + - must not start with a capital letter + - - 'fmt.Errorf[0]' + - '/(^|[^\.!?])$/' + - must not end in punctuation + - - panic + - '/^[^\n]*$/' + - must not contain line breaks + - name: function-result-limit + severity: warning + disabled: false + arguments: [ 4 ] + + # https://golangci-lint.run/usage/linters/#funlen + funlen: + # Checks the number of lines in a function. + # If lower than 0, disable the check. + # Default: 60 + lines: 330 + # Checks the number of statements in a function. + # If lower than 0, disable the check. + # Default: 40 + statements: -1 + + # https://golangci-lint.run/usage/linters/#goconst + goconst: + # Minimal length of string constant. + # Default: 3 + min-len: 4 + # Minimum occurrences of constant string count to trigger issue. + # Default: 3 + # For subsequent optimization, the value is reduced. + min-occurrences: 30 + # Ignore test files. + # Default: false + ignore-tests: true + # Look for existing constants matching the values. + # Default: true + match-constant: false + # Search also for duplicated numbers. + # Default: false + numbers: true + # Minimum value, only works with goconst.numbers + # Default: 3 + min: 5 + # Maximum value, only works with goconst.numbers + # Default: 3 + max: 20 + # Ignore when constant is not used as function argument. + # Default: true + ignore-calls: false + + # https://golangci-lint.run/usage/linters/#gocritic + gocritic: + disabled-checks: + - ifElseChain + - assignOp + - appendAssign + - singleCaseSwitch + - regexpMust + - typeSwitchVar + - elseif + + # https://golangci-lint.run/usage/linters/#gosimple + gosimple: + # Select the Go version to target. + # Default: 1.13 + # Deprecated: use the global `run.go` instead. + # go: "1.15" + # Sxxxx checks in https://staticcheck.io/docs/configuration/options/#checks + # Default: ["*"] + checks: [ + "all", "-S1000", "-S1001", "-S1002", "-S1008", "-S1009", "-S1016", "-S1023", "-S1025", "-S1029", "-S1034", "-S1040" + ] + + # https://golangci-lint.run/usage/linters/#govet + govet: + # Report about shadowed variables. + # Default: false + # check-shadowing: true + # Settings per analyzer. + settings: + # Analyzer name, run `go tool vet help` to see all analyzers. + printf: + # Comma-separated list of print function names to check (in addition to default, see `go tool vet help printf`). + # Default: [] + funcs: + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Infof + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Warnf + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Errorf + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Fatalf + # shadow: + # Whether to be strict about shadowing; can be noisy. + # Default: false + # strict: false + unusedresult: + # Comma-separated list of functions whose results must be used + # (in addition to defaults context.WithCancel,context.WithDeadline,context.WithTimeout,context.WithValue, + # errors.New,fmt.Errorf,fmt.Sprint,fmt.Sprintf,sort.Reverse) + # Default [] + funcs: + - pkg.MyFunc + - context.WithCancel + # Comma-separated list of names of methods of type func() string whose results must be used + # (in addition to default Error,String) + # Default [] + stringmethods: + - MyMethod + # Enable all analyzers. + # Default: false + enable-all: true + # Disable analyzers by name. + # Run `go tool vet help` to see all analyzers. + # Default: [] + disable: + - asmdecl + - assign + - atomic + - atomicalign + - bools + - buildtag + - cgocall + - composites + - copylocks + - deepequalerrors + - errorsas + - fieldalignment + - findcall + - framepointer + - httpresponse + - ifaceassert + - loopclosure + - lostcancel + - nilfunc + - nilness + - reflectvaluecompare + - shift + - shadow + - sigchanyzer + - sortslice + - stdmethods + - stringintconv + - structtag + - testinggoroutine + - tests + - unmarshal + - unreachable + - unsafeptr + - unusedwrite + + # https://golangci-lint.run/usage/linters/#staticcheck + staticcheck: + # Select the Go version to target. + # Default: "1.13" + # Deprecated: use the global `run.go` instead. + # go: "1.15" + # SAxxxx checks in https://staticcheck.io/docs/configuration/options/#checks + # Default: ["*"] + checks: [ "all","-SA1019","-SA4015","-SA1029","-SA1016","-SA9003","-SA4006","-SA6003" ] + + # https://golangci-lint.run/usage/linters/#gofmt + gofmt: + # Simplify code: gofmt with `-s` option. + # Default: true + simplify: true + # Apply the rewrite rules to the source before reformatting. + # https://pkg.go.dev/cmd/gofmt + # Default: [] + rewrite-rules: [ ] + # - pattern: 'interface{}' + # replacement: 'any' + # - pattern: 'a[b:len(a)]' + # replacement: 'a[b:]' \ No newline at end of file diff --git a/server/Makefile b/server/Makefile new file mode 100644 index 0000000..9731f00 --- /dev/null +++ b/server/Makefile @@ -0,0 +1,113 @@ +ROOT_DIR = $(shell pwd) +NAMESPACE = "default" +DEPLOY_NAME = "template-single" +DOCKER_NAME = "template-single" +ADMIN_RESOURCE_PATH = "/resource/public/admin/" + +# 一键编译。编译web前端,并将编译后的包移动到服务端对应静态资源路径下,最后编译服务端 +.PHONY: build +build: + @rm -rf ./$(ADMIN_RESOURCE_PATH) + @mkdir ./$(ADMIN_RESOURCE_PATH) + @cd ../web && pnpm run build && \cp -rf ./dist/* ../server$(ADMIN_RESOURCE_PATH) + @cd ../server + @echo "y" | gf build + +# 通过热编译启动所有服务 +.PHONY: all +all: + gf run main.go --args "all" + +.PHONY: http +http: + gf run main.go --args "http" + +.PHONY: queue +queue: + gf run main.go --args "queue" + +.PHONY: cron +cron: + gf run main.go --args "cron" + +.PHONY: auth +auth: + gf run main.go --args "auth" + +# 启动web服务 +.PHONY: web +web: + @cd ../web && pnpm run dev + +# 刷新casbin权限 +.PHONY: refresh +refresh: + @go run main.go tools -m=casbin -a1=refresh + +# 清理casbin权限 +.PHONY: clear +clear: + @go run main.go tools -m=casbin -a1=clear + +# 运行代码质量分析工具 +# https://github.com/ywanbing/golangci +.PHONY: lint +lint: + golangci-lint run + +.PHONY: killmain +killmain: + @kill -9 $(ps -ef|grep main|grep -v grep|awk '{print $2}') + +# Install/Update to the latest CLI tool. +.PHONY: cli +cli: + @set -e; \ + wget -O gf https://github.com/gogf/gf/releases/latest/download/gf_$(shell go env GOOS)_$(shell go env GOARCH) && \ + chmod +x gf && \ + ./gf install -y && \ + rm ./gf + +# Check and install CLI tool. +.PHONY: cli.install +cli.install: + @set -e; \ + gf -v > /dev/null 2>&1 || if [[ "$?" -ne "0" ]]; then \ + echo "GoFame CLI is not installed, start proceeding auto installation..."; \ + make cli; \ + fi; + +# Generate Go files for DAO/DO/Entity. +.PHONY: dao +dao: cli.install + @gf gen dao + +# Generate Go files for Service. +.PHONY: service +service: cli.install + @gf gen service + +# Build image, deploy image and yaml to current kubectl environment and make port forward to local machine. +.PHONY: start +start: + @set -e; \ + make image; \ + make deploy; \ + make port; + +# Build docker image and commit to the repository. +# example: make image tag=v0.0.1 +.PHONY: image +image: + @echo "y" | gf docker main.go -p -tn hotgo:$(tag) + +# Deploy image and yaml to current kubectl environment. +.PHONY: deploy +deploy: + $(eval _TAG = $(if ${TAG}, ${TAG}, develop)) + @set -e; \ + mkdir -p $(ROOT_DIR)/temp/kustomize;\ + cd $(ROOT_DIR)/manifest/deploy/kustomize/overlays/${_TAG};\ + kustomize build > $(ROOT_DIR)/temp/kustomize.yaml;\ + kubectl apply -f $(ROOT_DIR)/temp/kustomize.yaml; \ + kubectl patch -n $(NAMESPACE) deployment/$(DEPLOY_NAME) -p "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"date\":\"$(shell date +%s)\"}}}}}"; diff --git a/server/README.MD b/server/README.MD new file mode 100644 index 0000000..67735c3 --- /dev/null +++ b/server/README.MD @@ -0,0 +1 @@ +## HotGo 管理后台服务端 \ No newline at end of file diff --git a/server/addons/addons.go b/server/addons/addons.go new file mode 100644 index 0000000..aa1b522 --- /dev/null +++ b/server/addons/addons.go @@ -0,0 +1,6 @@ +// Package addons +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package addons diff --git a/server/addons/hgexample/README.MD b/server/addons/hgexample/README.MD new file mode 100644 index 0000000..8fa3944 --- /dev/null +++ b/server/addons/hgexample/README.MD @@ -0,0 +1,39 @@ +## 功能案例 + +### 简介 + +系统的一些功能案例 + + +### 使用说明 + +系统自带的功能使用示例及其说明,包含一些简单的交互 + + +### 安装 + +1、安装 HotGo (2.11.4及以上) + +项目介绍:https://github.com/bufanyun/hotgo + +2、将当前插件项目拷贝进 HotGo 根目录的 server/addons 目录下 + +3、在 HotGo 根目录的 server/addons/modules 目录下创建go文件:hgexample.go,内容如下: +```go +package modules + +import _ "hotgo/addons/hgexample" +``` + +4、HotGo 后台进入 开发工具->插件管理->找到 功能案例 (hgexample) 进行安装 + +5、重启服务即可生效 + + +### 常用命令行 + +```shell +# 接口维护-gen service +gf gen service -s=addons/hgexample/logic -d=addons/hgexample/service + +``` diff --git a/server/addons/hgexample/api/admin/comp/import.go b/server/addons/hgexample/api/admin/comp/import.go new file mode 100644 index 0000000..75bd097 --- /dev/null +++ b/server/addons/hgexample/api/admin/comp/import.go @@ -0,0 +1,26 @@ +// Package comp +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package comp + +import ( + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/net/ghttp" +) + +// ImportExcelReq 导入Excel +type ImportExcelReq struct { + g.Meta `path:"/comp/importExcel" method:"post" tags:"功能案例" summary:"导入Excel"` + File *ghttp.UploadFile `json:"file" type:"file" dc:"分片文件"` +} + +type ImportExcelSheet struct { + Sheet string `json:"sheet"` + Rows [][]string `json:"rows"` +} + +type ImportExcelRes struct { + Sheets []*ImportExcelSheet `json:"sheets"` +} diff --git a/server/addons/hgexample/api/admin/config/config.go b/server/addons/hgexample/api/admin/config/config.go new file mode 100644 index 0000000..83b431f --- /dev/null +++ b/server/addons/hgexample/api/admin/config/config.go @@ -0,0 +1,30 @@ +// Package config +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package config + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/addons/hgexample/model/input/sysin" +) + +// GetReq 获取指定分组的配置 +type GetReq struct { + g.Meta `path:"/config/get" method:"get" tags:"配置" summary:"获取指定分组的配置"` + sysin.GetConfigInp +} + +type GetRes struct { + *sysin.GetConfigModel +} + +// UpdateReq 获取指定分组的配置 +type UpdateReq struct { + g.Meta `path:"/config/update" method:"post" tags:"配置" summary:"获取指定分组的配置"` + sysin.UpdateConfigInp +} + +type UpdateRes struct { +} diff --git a/server/addons/hgexample/api/admin/index/index.go b/server/addons/hgexample/api/admin/index/index.go new file mode 100644 index 0000000..764eaa8 --- /dev/null +++ b/server/addons/hgexample/api/admin/index/index.go @@ -0,0 +1,21 @@ +// Package index +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package index + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/addons/hgexample/model/input/sysin" +) + +// TestReq 测试 +type TestReq struct { + g.Meta `path:"/index/test" method:"get" tags:"功能案例" summary:"测试"` + sysin.IndexTestInp +} + +type TestRes struct { + *sysin.IndexTestModel +} diff --git a/server/addons/hgexample/api/admin/table/table.go b/server/addons/hgexample/api/admin/table/table.go new file mode 100644 index 0000000..368c4dc --- /dev/null +++ b/server/addons/hgexample/api/admin/table/table.go @@ -0,0 +1,83 @@ +// Package table +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package table + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/addons/hgexample/model/input/sysin" + "hotgo/internal/model/input/form" +) + +// ListReq 查询列表 +type ListReq struct { + g.Meta `path:"/table/list" method:"get" tags:"表格例子" summary:"获取表格列表"` + sysin.TableListInp +} + +type ListRes struct { + form.PageRes + List []*sysin.TableListModel `json:"list" dc:"数据列表"` +} + +// ExportReq 导出列表 +type ExportReq struct { + g.Meta `path:"/table/export" method:"get" tags:"表格例子" summary:"导出表格列表"` + sysin.TableListInp +} + +type ExportRes struct{} + +// ViewReq 获取信息 +type ViewReq struct { + g.Meta `path:"/table/view" method:"get" tags:"表格例子" summary:"获取指定信息"` + sysin.TableViewInp +} + +type ViewRes struct { + *sysin.TableViewModel +} + +// EditReq 修改/新增 +type EditReq struct { + g.Meta `path:"/table/edit" method:"post" tags:"表格例子" summary:"修改/新增表格"` + sysin.TableEditInp +} + +type EditRes struct{} + +// DeleteReq 删除 +type DeleteReq struct { + g.Meta `path:"/table/delete" method:"post" tags:"表格例子" summary:"删除表格"` + sysin.TableDeleteInp +} + +type DeleteRes struct{} + +// MaxSortReq 最大排序 +type MaxSortReq struct { + g.Meta `path:"/table/maxSort" method:"get" tags:"表格例子" summary:"表格最大排序"` + sysin.TableMaxSortInp +} + +type MaxSortRes struct { + *sysin.TableMaxSortModel +} + +// StatusReq 更新状态 +type StatusReq struct { + g.Meta `path:"/table/status" method:"post" tags:"表格例子" summary:"更新表格状态"` + sysin.TableStatusInp +} + +type StatusRes struct{} + +// SwitchReq 更新开关状态 +type SwitchReq struct { + g.Meta `path:"/table/switch" method:"post" tags:"表格例子" summary:"更新表格状态"` + sysin.TableSwitchInp +} + +type SwitchRes struct{} diff --git a/server/addons/hgexample/api/admin/tenantorder/tenantorder.go b/server/addons/hgexample/api/admin/tenantorder/tenantorder.go new file mode 100644 index 0000000..edb8c2e --- /dev/null +++ b/server/addons/hgexample/api/admin/tenantorder/tenantorder.go @@ -0,0 +1,59 @@ +// Package tenantorder +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2024 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.13.1 +package tenantorder + +import ( + "hotgo/addons/hgexample/model/input/sysin" + "hotgo/internal/model/input/form" + + "github.com/gogf/gf/v2/frame/g" +) + +// ListReq 查询多租户功能演示列表 +type ListReq struct { + g.Meta `path:"/tenantOrder/list" method:"get" tags:"多租户功能演示" summary:"获取多租户功能演示列表"` + sysin.TenantOrderListInp +} + +type ListRes struct { + form.PageRes + List []*sysin.TenantOrderListModel `json:"list" dc:"数据列表"` +} + +// ExportReq 导出多租户功能演示列表 +type ExportReq struct { + g.Meta `path:"/tenantOrder/export" method:"get" tags:"多租户功能演示" summary:"导出多租户功能演示列表"` + sysin.TenantOrderListInp +} + +type ExportRes struct{} + +// ViewReq 获取多租户功能演示指定信息 +type ViewReq struct { + g.Meta `path:"/tenantOrder/view" method:"get" tags:"多租户功能演示" summary:"获取多租户功能演示指定信息"` + sysin.TenantOrderViewInp +} + +type ViewRes struct { + *sysin.TenantOrderViewModel +} + +// EditReq 修改/新增多租户功能演示 +type EditReq struct { + g.Meta `path:"/tenantOrder/edit" method:"post" tags:"多租户功能演示" summary:"修改/新增多租户功能演示"` + sysin.TenantOrderEditInp +} + +type EditRes struct{} + +// DeleteReq 删除多租户功能演示 +type DeleteReq struct { + g.Meta `path:"/tenantOrder/delete" method:"post" tags:"多租户功能演示" summary:"删除多租户功能演示"` + sysin.TenantOrderDeleteInp +} + +type DeleteRes struct{} \ No newline at end of file diff --git a/server/addons/hgexample/api/admin/treetable/treetable.go b/server/addons/hgexample/api/admin/treetable/treetable.go new file mode 100644 index 0000000..d5ebb96 --- /dev/null +++ b/server/addons/hgexample/api/admin/treetable/treetable.go @@ -0,0 +1,92 @@ +// Package treetable +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package treetable + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/addons/hgexample/model/input/sysin" + "hotgo/internal/model/input/form" +) + +// ListReq 查询列表 +type ListReq struct { + g.Meta `path:"/treeTable/list" method:"get" tags:"树形表格例子" summary:"获取表格列表"` + sysin.TreeTableListInp +} + +type ListRes struct { + form.PageRes + List []*sysin.TreeTableListModel `json:"list" dc:"数据列表"` +} + +// ExportReq 导出列表 +type ExportReq struct { + g.Meta `path:"/treeTable/export" method:"get" tags:"树形表格例子" summary:"导出表格列表"` + sysin.TableListInp +} + +type ExportRes struct{} + +// ViewReq 获取信息 +type ViewReq struct { + g.Meta `path:"/treeTable/view" method:"get" tags:"树形表格例子" summary:"获取指定信息"` + sysin.TableViewInp +} + +type ViewRes struct { + *sysin.TableViewModel +} + +// EditReq 修改/新增 +type EditReq struct { + g.Meta `path:"/treeTable/edit" method:"post" tags:"树形表格例子" summary:"修改/新增表格"` + sysin.TableEditInp +} + +type EditRes struct{} + +// DeleteReq 删除 +type DeleteReq struct { + g.Meta `path:"/treeTable/delete" method:"post" tags:"树形表格例子" summary:"删除表格"` + sysin.TableDeleteInp +} + +type DeleteRes struct{} + +// MaxSortReq 最大排序 +type MaxSortReq struct { + g.Meta `path:"/treeTable/maxSort" method:"get" tags:"树形表格例子" summary:"表格最大排序"` + sysin.TableMaxSortInp +} + +type MaxSortRes struct { + *sysin.TableMaxSortModel +} + +// StatusReq 更新状态 +type StatusReq struct { + g.Meta `path:"/treeTable/status" method:"post" tags:"树形表格例子" summary:"更新表格状态"` + sysin.TableStatusInp +} + +type StatusRes struct{} + +// SwitchReq 更新开关状态 +type SwitchReq struct { + g.Meta `path:"/treeTable/switch" method:"post" tags:"树形表格例子" summary:"更新表格状态"` + sysin.TableSwitchInp +} + +type SwitchRes struct{} + +// SelectReq 树形选项 +type SelectReq struct { + g.Meta `path:"/treeTable/select" method:"get" tags:"树形表格例子" summary:"树形选项"` +} + +type SelectRes struct { + List []*sysin.TableTree `json:"list" dc:"数据列表"` +} diff --git a/server/addons/hgexample/api/api/index/index.go b/server/addons/hgexample/api/api/index/index.go new file mode 100644 index 0000000..764eaa8 --- /dev/null +++ b/server/addons/hgexample/api/api/index/index.go @@ -0,0 +1,21 @@ +// Package index +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package index + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/addons/hgexample/model/input/sysin" +) + +// TestReq 测试 +type TestReq struct { + g.Meta `path:"/index/test" method:"get" tags:"功能案例" summary:"测试"` + sysin.IndexTestInp +} + +type TestRes struct { + *sysin.IndexTestModel +} diff --git a/server/addons/hgexample/api/home/index/index.go b/server/addons/hgexample/api/home/index/index.go new file mode 100644 index 0000000..7a44e68 --- /dev/null +++ b/server/addons/hgexample/api/home/index/index.go @@ -0,0 +1,21 @@ +// Package index +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package index + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/addons/hgexample/model/input/sysin" +) + +// TestReq 测试 +type TestReq struct { + g.Meta `path:"/index/test" method:"get" tags:"功能案例" summary:"测试首页"` + sysin.IndexTestInp +} + +type TestRes struct { + g.Meta `mime:"text/html" type:"string" example:""` +} diff --git a/server/addons/hgexample/api/websocket/index/index.go b/server/addons/hgexample/api/websocket/index/index.go new file mode 100644 index 0000000..764eaa8 --- /dev/null +++ b/server/addons/hgexample/api/websocket/index/index.go @@ -0,0 +1,21 @@ +// Package index +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package index + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/addons/hgexample/model/input/sysin" +) + +// TestReq 测试 +type TestReq struct { + g.Meta `path:"/index/test" method:"get" tags:"功能案例" summary:"测试"` + sysin.IndexTestInp +} + +type TestRes struct { + *sysin.IndexTestModel +} diff --git a/server/addons/hgexample/controller/admin/sys/comp.go b/server/addons/hgexample/controller/admin/sys/comp.go new file mode 100644 index 0000000..ba57d0b --- /dev/null +++ b/server/addons/hgexample/controller/admin/sys/comp.go @@ -0,0 +1,46 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "github.com/xuri/excelize/v2" + "hotgo/addons/hgexample/api/admin/comp" +) + +var ( + Comp = cComp{} +) + +type cComp struct{} + +// ImportExcel 导入Excel +func (c *cComp) ImportExcel(ctx context.Context, req *comp.ImportExcelReq) (res *comp.ImportExcelRes, err error) { + file, err := req.File.Open() + if err != nil { + return + } + defer file.Close() + + excel, err := excelize.OpenReader(file) + if err != nil { + return + } + defer excel.Close() + + res = new(comp.ImportExcelRes) + sheetList := excel.GetSheetList() + for _, sheet := range sheetList { + item := new(comp.ImportExcelSheet) + item.Sheet = sheet + item.Rows, err = excel.GetRows(sheet) + if err != nil { + return nil, err + } + res.Sheets = append(res.Sheets, item) + } + return +} diff --git a/server/addons/hgexample/controller/admin/sys/config.go b/server/addons/hgexample/controller/admin/sys/config.go new file mode 100644 index 0000000..ef40a69 --- /dev/null +++ b/server/addons/hgexample/controller/admin/sys/config.go @@ -0,0 +1,33 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/addons/hgexample/api/admin/config" + "hotgo/addons/hgexample/service" +) + +var ( + Config = cConfig{} +) + +type cConfig struct{} + +// GetConfig 获取指定分组的配置 +func (c *cConfig) GetConfig(ctx context.Context, req *config.GetReq) (res *config.GetRes, err error) { + data, err := service.SysConfig().GetConfigByGroup(ctx, &req.GetConfigInp) + + res = new(config.GetRes) + res.GetConfigModel = data + return +} + +// UpdateConfig 更新指定分组的配置 +func (c *cConfig) UpdateConfig(ctx context.Context, req *config.UpdateReq) (res *config.UpdateRes, err error) { + err = service.SysConfig().UpdateConfigByGroup(ctx, &req.UpdateConfigInp) + return +} diff --git a/server/addons/hgexample/controller/admin/sys/index.go b/server/addons/hgexample/controller/admin/sys/index.go new file mode 100644 index 0000000..b378b1d --- /dev/null +++ b/server/addons/hgexample/controller/admin/sys/index.go @@ -0,0 +1,30 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/addons/hgexample/api/admin/index" + "hotgo/addons/hgexample/service" +) + +var ( + Index = cIndex{} +) + +type cIndex struct{} + +// Test 测试 +func (c *cIndex) Test(ctx context.Context, req *index.TestReq) (res *index.TestRes, err error) { + data, err := service.SysIndex().Test(ctx, &req.IndexTestInp) + if err != nil { + return + } + + res = new(index.TestRes) + res.IndexTestModel = data + return +} diff --git a/server/addons/hgexample/controller/admin/sys/table.go b/server/addons/hgexample/controller/admin/sys/table.go new file mode 100644 index 0000000..03188cf --- /dev/null +++ b/server/addons/hgexample/controller/admin/sys/table.go @@ -0,0 +1,85 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/addons/hgexample/api/admin/table" + "hotgo/addons/hgexample/service" +) + +var ( + Table = cTable{} +) + +type cTable struct{} + +// List 查看列表 +func (c *cTable) List(ctx context.Context, req *table.ListReq) (res *table.ListRes, err error) { + list, totalCount, err := service.SysTable().List(ctx, &req.TableListInp) + if err != nil { + return + } + + res = new(table.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Export 导出列表 +func (c *cTable) Export(ctx context.Context, req *table.ExportReq) (res *table.ExportRes, err error) { + err = service.SysTable().Export(ctx, &req.TableListInp) + return +} + +// Edit 更新 +func (c *cTable) Edit(ctx context.Context, req *table.EditReq) (res *table.EditRes, err error) { + err = service.SysTable().Edit(ctx, &req.TableEditInp) + return +} + +// MaxSort 最大排序 +func (c *cTable) MaxSort(ctx context.Context, req *table.MaxSortReq) (res *table.MaxSortRes, err error) { + data, err := service.SysTable().MaxSort(ctx, &req.TableMaxSortInp) + if err != nil { + return + } + + res = new(table.MaxSortRes) + res.TableMaxSortModel = data + return +} + +// View 获取指定信息 +func (c *cTable) View(ctx context.Context, req *table.ViewReq) (res *table.ViewRes, err error) { + data, err := service.SysTable().View(ctx, &req.TableViewInp) + if err != nil { + return + } + + res = new(table.ViewRes) + res.TableViewModel = data + return +} + +// Delete 删除 +func (c *cTable) Delete(ctx context.Context, req *table.DeleteReq) (res *table.DeleteRes, err error) { + err = service.SysTable().Delete(ctx, &req.TableDeleteInp) + return +} + +// Status 更新状态 +func (c *cTable) Status(ctx context.Context, req *table.StatusReq) (res *table.StatusRes, err error) { + err = service.SysTable().Status(ctx, &req.TableStatusInp) + return +} + +// Switch 更新开关状态 +func (c *cTable) Switch(ctx context.Context, req *table.SwitchReq) (res *table.SwitchRes, err error) { + err = service.SysTable().Switch(ctx, &req.TableSwitchInp) + return +} diff --git a/server/addons/hgexample/controller/admin/sys/tenant_order.go b/server/addons/hgexample/controller/admin/sys/tenant_order.go new file mode 100644 index 0000000..33f98b0 --- /dev/null +++ b/server/addons/hgexample/controller/admin/sys/tenant_order.go @@ -0,0 +1,67 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2024 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.13.1 +package sys + +import ( + "context" + "hotgo/addons/hgexample/api/admin/tenantorder" + "hotgo/addons/hgexample/model/input/sysin" + "hotgo/addons/hgexample/service" +) + +var ( + TenantOrder = cTenantOrder{} +) + +type cTenantOrder struct{} + +// List 查看多租户功能演示列表 +func (c *cTenantOrder) List(ctx context.Context, req *tenantorder.ListReq) (res *tenantorder.ListRes, err error) { + list, totalCount, err := service.SysTenantOrder().List(ctx, &req.TenantOrderListInp) + if err != nil { + return + } + + if list == nil { + list = []*sysin.TenantOrderListModel{} + } + + res = new(tenantorder.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Export 导出多租户功能演示列表 +func (c *cTenantOrder) Export(ctx context.Context, req *tenantorder.ExportReq) (res *tenantorder.ExportRes, err error) { + err = service.SysTenantOrder().Export(ctx, &req.TenantOrderListInp) + return +} + +// Edit 更新多租户功能演示 +func (c *cTenantOrder) Edit(ctx context.Context, req *tenantorder.EditReq) (res *tenantorder.EditRes, err error) { + err = service.SysTenantOrder().Edit(ctx, &req.TenantOrderEditInp) + return +} + +// View 获取指定多租户功能演示信息 +func (c *cTenantOrder) View(ctx context.Context, req *tenantorder.ViewReq) (res *tenantorder.ViewRes, err error) { + data, err := service.SysTenantOrder().View(ctx, &req.TenantOrderViewInp) + if err != nil { + return + } + + res = new(tenantorder.ViewRes) + res.TenantOrderViewModel = data + return +} + +// Delete 删除多租户功能演示 +func (c *cTenantOrder) Delete(ctx context.Context, req *tenantorder.DeleteReq) (res *tenantorder.DeleteRes, err error) { + err = service.SysTenantOrder().Delete(ctx, &req.TenantOrderDeleteInp) + return +} diff --git a/server/addons/hgexample/controller/admin/sys/tree_table.go b/server/addons/hgexample/controller/admin/sys/tree_table.go new file mode 100644 index 0000000..0d2dd86 --- /dev/null +++ b/server/addons/hgexample/controller/admin/sys/tree_table.go @@ -0,0 +1,92 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/addons/hgexample/api/admin/treetable" + "hotgo/addons/hgexample/service" +) + +var ( + TreeTable = cTreeTable{} +) + +type cTreeTable struct{} + +// List 查看列表 +func (c *cTreeTable) List(ctx context.Context, req *treetable.ListReq) (res *treetable.ListRes, err error) { + list, totalCount, err := service.SysTreeTable().List(ctx, &req.TreeTableListInp) + if err != nil { + return + } + + res = new(treetable.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Export 导出列表 +func (c *cTreeTable) Export(ctx context.Context, req *treetable.ExportReq) (res *treetable.ExportRes, err error) { + err = service.SysTable().Export(ctx, &req.TableListInp) + return +} + +// Edit 更新 +func (c *cTreeTable) Edit(ctx context.Context, req *treetable.EditReq) (res *treetable.EditRes, err error) { + err = service.SysTreeTable().Edit(ctx, &req.TableEditInp) + return +} + +// MaxSort 最大排序 +func (c *cTreeTable) MaxSort(ctx context.Context, req *treetable.MaxSortReq) (res *treetable.MaxSortRes, err error) { + data, err := service.SysTable().MaxSort(ctx, &req.TableMaxSortInp) + if err != nil { + return + } + + res = new(treetable.MaxSortRes) + res.TableMaxSortModel = data + return +} + +// View 获取指定信息 +func (c *cTreeTable) View(ctx context.Context, req *treetable.ViewReq) (res *treetable.ViewRes, err error) { + data, err := service.SysTable().View(ctx, &req.TableViewInp) + if err != nil { + return + } + + res = new(treetable.ViewRes) + res.TableViewModel = data + return +} + +// Delete 删除 +func (c *cTreeTable) Delete(ctx context.Context, req *treetable.DeleteReq) (res *treetable.DeleteRes, err error) { + err = service.SysTreeTable().Delete(ctx, &req.TableDeleteInp) + return +} + +// Status 更新状态 +func (c *cTreeTable) Status(ctx context.Context, req *treetable.StatusReq) (res *treetable.StatusRes, err error) { + err = service.SysTable().Status(ctx, &req.TableStatusInp) + return +} + +// Switch 更新开关状态 +func (c *cTreeTable) Switch(ctx context.Context, req *treetable.SwitchReq) (res *treetable.SwitchRes, err error) { + err = service.SysTable().Switch(ctx, &req.TableSwitchInp) + return +} + +// Select 树形选项 +func (c *cTreeTable) Select(ctx context.Context, _ *treetable.SelectReq) (res *treetable.SelectRes, err error) { + res = new(treetable.SelectRes) + res.List, err = service.SysTreeTable().Select(ctx) + return +} diff --git a/server/addons/hgexample/controller/api/index.go b/server/addons/hgexample/controller/api/index.go new file mode 100644 index 0000000..c604f1d --- /dev/null +++ b/server/addons/hgexample/controller/api/index.go @@ -0,0 +1,30 @@ +// Package api +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package api + +import ( + "context" + "hotgo/addons/hgexample/api/api/index" + "hotgo/addons/hgexample/service" +) + +var ( + Index = cIndex{} +) + +type cIndex struct{} + +// Test 测试 +func (c *cIndex) Test(ctx context.Context, req *index.TestReq) (res *index.TestRes, err error) { + data, err := service.SysIndex().Test(ctx, &req.IndexTestInp) + if err != nil { + return + } + + res = new(index.TestRes) + res.IndexTestModel = data + return +} diff --git a/server/addons/hgexample/controller/home/index.go b/server/addons/hgexample/controller/home/index.go new file mode 100644 index 0000000..668fc74 --- /dev/null +++ b/server/addons/hgexample/controller/home/index.go @@ -0,0 +1,34 @@ +// Package home +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package home + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" + "hotgo/addons/hgexample/api/home/index" + "hotgo/addons/hgexample/service" + "hotgo/internal/model" + isc "hotgo/internal/service" +) + +// Index 基础 +var Index = cIndex{} + +type cIndex struct{} + +func (a *cIndex) Index(ctx context.Context, req *index.TestReq) (res *index.TestRes, err error) { + data, err := service.SysIndex().Test(ctx, &req.IndexTestInp) + if err != nil { + return + } + + isc.View().RenderTpl(ctx, "home/index.html", model.View{Data: g.Map{ + "name": data.Name, + "module": data.Module, + "time": data.Time, + }}) + return +} diff --git a/server/addons/hgexample/controller/websocket/handler/index.go b/server/addons/hgexample/controller/websocket/handler/index.go new file mode 100644 index 0000000..0cc74ab --- /dev/null +++ b/server/addons/hgexample/controller/websocket/handler/index.go @@ -0,0 +1,25 @@ +// Package handler +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package handler + +import ( + "github.com/gogf/gf/v2/encoding/gjson" + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/websocket" +) + +var ( + Index = cIndex{} +) + +type cIndex struct{} + +// TestMessage 测试消息 +func (c *cIndex) TestMessage(client *websocket.Client, req *websocket.WRequest) { + g.Log().Infof(client.Context(), "收到客户端测试消息:%v", gjson.New(req).String()) + // 将收到的消息原样发送给客户端 + websocket.SendSuccess(client, req.Event, req.Data) +} diff --git a/server/addons/hgexample/controller/websocket/index.go b/server/addons/hgexample/controller/websocket/index.go new file mode 100644 index 0000000..37b9bbf --- /dev/null +++ b/server/addons/hgexample/controller/websocket/index.go @@ -0,0 +1,30 @@ +// Package websocket +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package websocket + +import ( + "context" + "hotgo/addons/hgexample/api/websocket/index" + "hotgo/addons/hgexample/service" +) + +var ( + Index = cIndex{} +) + +type cIndex struct{} + +// Test 测试 +func (c *cIndex) Test(ctx context.Context, req *index.TestReq) (res *index.TestRes, err error) { + data, err := service.SysIndex().Test(ctx, &req.IndexTestInp) + if err != nil { + return + } + + res = new(index.TestRes) + res.IndexTestModel = data + return +} diff --git a/server/addons/hgexample/crons/crons.go b/server/addons/hgexample/crons/crons.go new file mode 100644 index 0000000..e20bf6c --- /dev/null +++ b/server/addons/hgexample/crons/crons.go @@ -0,0 +1,9 @@ +// Package crons +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package crons + +// 定时任务. +// 插件中的定时任务可以统一在这里注册和处理 diff --git a/server/addons/hgexample/global/global.go b/server/addons/hgexample/global/global.go new file mode 100644 index 0000000..f549f88 --- /dev/null +++ b/server/addons/hgexample/global/global.go @@ -0,0 +1,12 @@ +// Package global +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package global + +import "hotgo/internal/library/addons" + +var ( + skeleton *addons.Skeleton // 插件架子 +) diff --git a/server/addons/hgexample/global/init.go b/server/addons/hgexample/global/init.go new file mode 100644 index 0000000..9db6de9 --- /dev/null +++ b/server/addons/hgexample/global/init.go @@ -0,0 +1,22 @@ +// Package global +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package global + +import ( + "context" + "hotgo/internal/library/addons" +) + +func Init(ctx context.Context, sk *addons.Skeleton) { + skeleton = sk +} + +func GetSkeleton() *addons.Skeleton { + if skeleton == nil { + panic("addon skeleton not initialized.") + } + return skeleton +} diff --git a/server/addons/hgexample/logic/.gitkeep b/server/addons/hgexample/logic/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/server/addons/hgexample/logic/logic.go b/server/addons/hgexample/logic/logic.go new file mode 100644 index 0000000..bd978f2 --- /dev/null +++ b/server/addons/hgexample/logic/logic.go @@ -0,0 +1,9 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package logic + +import ( + _ "hotgo/addons/hgexample/logic/sys" +) diff --git a/server/addons/hgexample/logic/sys/config.go b/server/addons/hgexample/logic/sys/config.go new file mode 100644 index 0000000..73620b2 --- /dev/null +++ b/server/addons/hgexample/logic/sys/config.go @@ -0,0 +1,59 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "github.com/gogf/gf/v2/util/gconv" + "hotgo/addons/hgexample/global" + "hotgo/addons/hgexample/model" + "hotgo/addons/hgexample/model/input/sysin" + "hotgo/addons/hgexample/service" + isc "hotgo/internal/service" +) + +type sSysConfig struct{} + +func NewSysConfig() *sSysConfig { + return &sSysConfig{} +} + +func init() { + service.RegisterSysConfig(NewSysConfig()) +} + +// GetBasic 获取基础配置 +func (s *sSysConfig) GetBasic(ctx context.Context) (conf *model.BasicConfig, err error) { + var in sysin.GetConfigInp + in.GetAddonsConfigInp.AddonName = global.GetSkeleton().Name + in.GetAddonsConfigInp.Group = "basic" + models, err := isc.SysAddonsConfig().GetConfigByGroup(ctx, &in.GetAddonsConfigInp) + if err != nil { + return + } + + err = gconv.Struct(models.List, &conf) + return +} + +// GetConfigByGroup 获取指定分组配置 +func (s *sSysConfig) GetConfigByGroup(ctx context.Context, in *sysin.GetConfigInp) (res *sysin.GetConfigModel, err error) { + in.GetAddonsConfigInp.AddonName = global.GetSkeleton().Name + models, err := isc.SysAddonsConfig().GetConfigByGroup(ctx, &in.GetAddonsConfigInp) + if err != nil { + return + } + + res = new(sysin.GetConfigModel) + res.List = models.List + return +} + +// UpdateConfigByGroup 更新指定分组的配置 +func (s *sSysConfig) UpdateConfigByGroup(ctx context.Context, in *sysin.UpdateConfigInp) error { + in.UpdateAddonsConfigInp.AddonName = global.GetSkeleton().Name + return isc.SysAddonsConfig().UpdateConfigByGroup(ctx, &in.UpdateAddonsConfigInp) +} diff --git a/server/addons/hgexample/logic/sys/index.go b/server/addons/hgexample/logic/sys/index.go new file mode 100644 index 0000000..d3e8ccd --- /dev/null +++ b/server/addons/hgexample/logic/sys/index.go @@ -0,0 +1,35 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "fmt" + "github.com/gogf/gf/v2/os/gtime" + "hotgo/addons/hgexample/global" + "hotgo/addons/hgexample/model/input/sysin" + "hotgo/addons/hgexample/service" + "hotgo/internal/library/contexts" +) + +type sSysIndex struct{} + +func NewSysIndex() *sSysIndex { + return &sSysIndex{} +} + +func init() { + service.RegisterSysIndex(NewSysIndex()) +} + +// Test 测试 +func (s *sSysIndex) Test(ctx context.Context, in *sysin.IndexTestInp) (res *sysin.IndexTestModel, err error) { + res = new(sysin.IndexTestModel) + res.Name = in.Name + res.Module = fmt.Sprintf("当前插件模块是:%s,当前应用模块是:%s", global.GetSkeleton().Name, contexts.Get(ctx).Module) + res.Time = gtime.Now() + return +} diff --git a/server/addons/hgexample/logic/sys/table.go b/server/addons/hgexample/logic/sys/table.go new file mode 100644 index 0000000..9c828bb --- /dev/null +++ b/server/addons/hgexample/logic/sys/table.go @@ -0,0 +1,233 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "fmt" + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gctx" + "github.com/gogf/gf/v2/util/gconv" + "hotgo/addons/hgexample/model/input/sysin" + "hotgo/addons/hgexample/service" + "hotgo/internal/dao" + "hotgo/internal/library/contexts" + "hotgo/internal/library/hgorm" + "hotgo/internal/library/hgorm/handler" + "hotgo/internal/model/input/form" + "hotgo/utility/convert" + "hotgo/utility/excel" + "hotgo/utility/validate" +) + +type sSysTable struct{} + +func NewSysTable() *sSysTable { + return &sSysTable{} +} + +func init() { + service.RegisterSysTable(NewSysTable()) +} + +// Model Orm模型 +func (s *sSysTable) Model(ctx context.Context, option ...*handler.Option) *gdb.Model { + return handler.Model(dao.AddonHgexampleTable.Ctx(ctx), option...) +} + +// List 获取列表 +func (s *sSysTable) List(ctx context.Context, in *sysin.TableListInp) (list []*sysin.TableListModel, totalCount int, err error) { + mod := s.Model(ctx) + cols := dao.AddonHgexampleTable.Columns() + + if in.Title != "" { + mod = mod.WhereLike(cols.Title, "%"+in.Title+"%") + } + + if in.Content != "" { + mod = mod.WhereLike(cols.Content, "%"+in.Content+"%") + } + + if in.Status > 0 { + mod = mod.Where(cols.Status, in.Status) + } + + if in.Switch > 0 { + mod = mod.Where(cols.Switch, in.Switch) + } + + if len(in.Price) > 0 { + if in.Price[0] > 0 && in.Price[1] > 0 { + mod = mod.WhereBetween(cols.Price, in.Price[0], in.Price[1]) + } else if in.Price[0] > 0 && in.Price[1] == 0 { + mod = mod.WhereGTE(cols.Price, in.Price[0]) + } else if in.Price[0] == 0 && in.Price[1] > 0 { + mod = mod.WhereLTE(cols.Price, in.Price[1]) + } + } + + if in.ActivityAt != nil { + mod = mod.Where(cols.ActivityAt, in.ActivityAt) + } + + if len(in.CreatedAt) == 2 { + mod = mod.WhereBetween(cols.CreatedAt, in.CreatedAt[0], in.CreatedAt[1]) + } + + if !in.Flag.IsNil() { + mod = mod.Where(fmt.Sprintf(`JSON_CONTAINS(%s,'%v')`, cols.Flag, in.Flag)) + } + + if !in.Hobby.IsNil() { + mod = mod.Where(fmt.Sprintf(`JSON_CONTAINS(%s,'%v')`, cols.Hobby, in.Hobby)) + } + + totalCount, err = mod.Clone().Count() + if err != nil { + err = gerror.Wrap(err, "获取表格数据行失败,请稍后重试!") + return + } + + if totalCount == 0 { + return + } + + // .OrderAsc(cols.Sort).OrderDesc(cols.Id) + if err = mod.Fields(sysin.TableListModel{}).Page(in.Page, in.PerPage).Handler(handler.Sorter(in)).Scan(&list); err != nil { + err = gerror.Wrap(err, "获取表格列表失败,请稍后重试!") + return + } + return +} + +// Export 导出 +func (s *sSysTable) Export(ctx context.Context, in *sysin.TableListInp) (err error) { + list, totalCount, err := s.List(ctx, in) + if err != nil { + return + } + + // 字段的排序是依据tags的字段顺序,如果你不想使用默认的排序方式,可以直接定义 tags = []string{"字段名称", "字段名称2", ...} + tags, err := convert.GetEntityDescTags(sysin.TableExportModel{}) + if err != nil { + return + } + + var ( + fileName = "表格例子导出-" + gctx.CtxId(ctx) + sheetName = fmt.Sprintf("索引条件共%v行,共%v页,当前导出是第%v页,本页共%v行", totalCount, form.CalPageCount(totalCount, in.PerPage), in.Page, len(list)) + exports []sysin.TableExportModel + ) + + if err = gconv.Scan(list, &exports); err != nil { + return + } + + if err = excel.ExportByStructs(ctx, tags, exports, fileName, sheetName); err != nil { + return + } + return +} + +// Edit 修改/新增 +func (s *sSysTable) Edit(ctx context.Context, in *sysin.TableEditInp) (err error) { + cols := dao.AddonHgexampleTable.Columns() + if err = hgorm.IsUnique(ctx, &dao.AddonHgexampleTable, g.Map{cols.Qq: in.Qq}, "QQ号码已存在,请换一个", in.Id); err != nil { + return + } + + // 修改 + if in.Id > 0 { + in.UpdatedBy = contexts.GetUserId(ctx) + if _, err = s.Model(ctx).WherePri(in.Id).Data(in).Update(); err != nil { + err = gerror.Wrap(err, "修改表格失败,请稍后重试!") + return + } + return + } + + // 新增 + in.CreatedBy = contexts.GetUserId(ctx) + if _, err = s.Model(ctx, &handler.Option{FilterAuth: false}).Data(in).OmitEmptyData().Insert(); err != nil { + err = gerror.Wrap(err, "新增表格失败,请稍后重试!") + return + } + return +} + +// Delete 删除 +func (s *sSysTable) Delete(ctx context.Context, in *sysin.TableDeleteInp) (err error) { + if _, err = s.Model(ctx).WherePri(in.Id).Delete(); err != nil { + err = gerror.Wrap(err, "删除表格失败,请稍后重试!") + return + } + return +} + +// Status 更新状态 +func (s *sSysTable) Status(ctx context.Context, in *sysin.TableStatusInp) (err error) { + update := g.Map{ + dao.AddonHgexampleTable.Columns().Status: in.Status, + dao.AddonHgexampleTable.Columns().UpdatedBy: contexts.GetUserId(ctx), + } + + if _, err = s.Model(ctx).WherePri(in.Id).Data(update).Update(); err != nil { + err = gerror.Wrap(err, "更新表格状态失败,请稍后重试!") + return + } + return +} + +// Switch 更新开关状态 +func (s *sSysTable) Switch(ctx context.Context, in *sysin.TableSwitchInp) (err error) { + var fields = []string{ + dao.AddonHgexampleTable.Columns().Switch, + // ... + } + + if !validate.InSlice(fields, in.Key) { + err = gerror.New("开关键名不在白名单") + return + } + + update := g.Map{ + in.Key: in.Value, + dao.AddonHgexampleTable.Columns().UpdatedBy: contexts.GetUserId(ctx), + } + + if _, err = s.Model(ctx).Where(dao.AddonHgexampleTable.Columns().Id, in.Id).Data(update).Update(); err != nil { + err = gerror.Wrap(err, "更新表格开关失败,请稍后重试!") + return + } + return +} + +// MaxSort 最大排序 +func (s *sSysTable) MaxSort(ctx context.Context, in *sysin.TableMaxSortInp) (res *sysin.TableMaxSortModel, err error) { + dx := dao.AddonHgexampleTable + if err = dx.Ctx(ctx).Fields(dx.Columns().Sort).OrderDesc(dx.Columns().Sort).Scan(&res); err != nil { + err = gerror.Wrap(err, "获取表格最大排序,请稍后重试!") + return + } + + if res == nil { + res = new(sysin.TableMaxSortModel) + } + + res.Sort = form.DefaultMaxSort(res.Sort) + return +} + +// View 获取指定信息 +func (s *sSysTable) View(ctx context.Context, in *sysin.TableViewInp) (res *sysin.TableViewModel, err error) { + if err = s.Model(ctx).WherePri(in.Id).Scan(&res); err != nil { + err = gerror.Wrap(err, "获取生成演示信息,请稍后重试!") + return + } + return +} diff --git a/server/addons/hgexample/logic/sys/tenant_order.go b/server/addons/hgexample/logic/sys/tenant_order.go new file mode 100644 index 0000000..ac8094d --- /dev/null +++ b/server/addons/hgexample/logic/sys/tenant_order.go @@ -0,0 +1,174 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2024 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.13.1 +package sys + +import ( + "context" + "fmt" + "hotgo/addons/hgexample/model/input/sysin" + "hotgo/addons/hgexample/service" + "hotgo/internal/dao" + "hotgo/internal/library/hgorm/handler" + "hotgo/internal/library/hgorm/hook" + "hotgo/internal/model/input/form" + "hotgo/utility/convert" + "hotgo/utility/excel" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gctx" + "github.com/gogf/gf/v2/util/gconv" +) + +type sSysTenantOrder struct{} + +func NewSysTenantOrder() *sSysTenantOrder { + return &sSysTenantOrder{} +} + +func init() { + service.RegisterSysTenantOrder(NewSysTenantOrder()) +} + +// Model 多租户功能演示ORM模型 +func (s *sSysTenantOrder) Model(ctx context.Context, option ...*handler.Option) *gdb.Model { + if len(option) == 0 { + // 过滤多租户数据权限 + option = append(option, &handler.Option{ + FilterTenant: true, + //FilterAuth: true, // 如果还需要维护created_by、member_id等部门数据权限范围可放开注释 + }) + } + return handler.Model(dao.AddonHgexampleTenantOrder.Ctx(ctx), option...) +} + +// List 获取多租户功能演示列表 +func (s *sSysTenantOrder) List(ctx context.Context, in *sysin.TenantOrderListInp) (list []*sysin.TenantOrderListModel, totalCount int, err error) { + mod := s.Model(ctx) + + // 字段过滤 + mod = mod.Fields(sysin.TenantOrderListModel{}) + + // 查询主键 + if in.Id > 0 { + mod = mod.Where(dao.AddonHgexampleTenantOrder.Columns().Id, in.Id) + } + + // 查询租户ID + if in.TenantId > 0 { + mod = mod.Where(dao.AddonHgexampleTenantOrder.Columns().TenantId, in.TenantId) + } + + // 查询商户ID + if in.MerchantId > 0 { + mod = mod.Where(dao.AddonHgexampleTenantOrder.Columns().MerchantId, in.MerchantId) + } + + // 查询用户ID + if in.UserId > 0 { + mod = mod.Where(dao.AddonHgexampleTenantOrder.Columns().UserId, in.UserId) + } + + // 查询关联订单号 + if in.OrderSn != "" { + mod = mod.Where(dao.AddonHgexampleTenantOrder.Columns().OrderSn, in.OrderSn) + } + + // 查询支付状态 + if in.Status > 0 { + mod = mod.Where(dao.AddonHgexampleTenantOrder.Columns().Status, in.Status) + } + + // 查询创建时间 + if len(in.CreatedAt) == 2 { + mod = mod.WhereBetween(dao.AddonHgexampleTenantOrder.Columns().CreatedAt, in.CreatedAt[0], in.CreatedAt[1]) + } + + // 分页 + mod = mod.Page(in.Page, in.PerPage) + + // 排序 + mod = mod.OrderDesc(dao.AddonHgexampleTenantOrder.Columns().Id) + + // 查询数据 + if err = mod.ScanAndCount(&list, &totalCount, false); err != nil { + err = gerror.Wrap(err, "获取多租户功能演示列表失败,请稍后重试!") + return + } + return +} + +// Export 导出多租户功能演示 +func (s *sSysTenantOrder) Export(ctx context.Context, in *sysin.TenantOrderListInp) (err error) { + list, totalCount, err := s.List(ctx, in) + if err != nil { + return + } + + // 字段的排序是依据tags的字段顺序,如果你不想使用默认的排序方式,可以直接定义 tags = []string{"字段名称", "字段名称2", ...} + tags, err := convert.GetEntityDescTags(sysin.TenantOrderExportModel{}) + if err != nil { + return + } + + var ( + fileName = "导出多租户功能演示-" + gctx.CtxId(ctx) + sheetName = fmt.Sprintf("索引条件共%v行,共%v页,当前导出是第%v页,本页共%v行", totalCount, form.CalPageCount(totalCount, in.PerPage), in.Page, len(list)) + exports []sysin.TenantOrderExportModel + ) + + if err = gconv.Scan(list, &exports); err != nil { + return + } + + err = excel.ExportByStructs(ctx, tags, exports, fileName, sheetName) + return +} + +// Edit 修改/新增多租户功能演示 +func (s *sSysTenantOrder) Edit(ctx context.Context, in *sysin.TenantOrderEditInp) (err error) { + return g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) (err error) { + // 修改 + if in.Id > 0 { + if _, err = s.Model(ctx). + Fields(sysin.TenantOrderUpdateFields{}). + WherePri(in.Id).Data(in). + Hook(hook.SaveTenant). // 自动维护租户关系更新 + Update(); err != nil { + } + return + } + + // 新增 + if _, err = dao.AddonHgexampleTenantOrder.Ctx(ctx). + Fields(sysin.TenantOrderInsertFields{}). + Hook(hook.SaveTenant). // 自动维护租户关系更新 + Data(in). + Insert(); err != nil { + } + return + }) +} + +// Delete 删除多租户功能演示 +func (s *sSysTenantOrder) Delete(ctx context.Context, in *sysin.TenantOrderDeleteInp) (err error) { + if _, err = s.Model(ctx).WherePri(in.Id).Delete(); err != nil { + err = gerror.Wrap(err, "删除多租户功能演示失败,请稍后重试!") + return + } + return +} + +// View 获取多租户功能演示指定信息 +func (s *sSysTenantOrder) View(ctx context.Context, in *sysin.TenantOrderViewInp) (res *sysin.TenantOrderViewModel, err error) { + if err = s.Model(ctx).WherePri(in.Id).Scan(&res); err != nil { + err = gerror.Wrap(err, "获取多租户功能演示信息,请稍后重试!") + return + } + return +} diff --git a/server/addons/hgexample/logic/sys/tree_table.go b/server/addons/hgexample/logic/sys/tree_table.go new file mode 100644 index 0000000..2f09057 --- /dev/null +++ b/server/addons/hgexample/logic/sys/tree_table.go @@ -0,0 +1,186 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "fmt" + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "hotgo/addons/hgexample/model/input/sysin" + "hotgo/addons/hgexample/service" + "hotgo/internal/consts" + "hotgo/internal/dao" + "hotgo/internal/library/contexts" + "hotgo/internal/library/hgorm" + "hotgo/internal/library/hgorm/handler" + "hotgo/internal/model/entity" +) + +type sSysTreeTable struct{} + +func NewSysTreeTable() *sSysTreeTable { + return &sSysTreeTable{} +} + +func init() { + service.RegisterSysTreeTable(NewSysTreeTable()) +} + +// Model Orm模型 +func (s *sSysTreeTable) Model(ctx context.Context, option ...*handler.Option) *gdb.Model { + return handler.Model(dao.AddonHgexampleTable.Ctx(ctx), option...) +} + +// List 获取列表 +func (s *sSysTreeTable) List(ctx context.Context, in *sysin.TreeTableListInp) (list []*sysin.TreeTableListModel, totalCount int, err error) { + mod := s.Model(ctx) + cols := dao.AddonHgexampleTable.Columns() + + if in.Title != "" { + mod = mod.WhereLike(cols.Title, "%"+in.Title+"%") + } + + if in.Content != "" { + mod = mod.WhereLike(cols.Content, "%"+in.Content+"%") + } + + if in.Status > 0 { + mod = mod.Where(cols.Status, in.Status) + } + + if in.Switch > 0 { + mod = mod.Where(cols.Switch, in.Switch) + } + + if in.Pid > 0 { + mod = mod.Where(cols.Pid, in.Pid) + } + + if len(in.Price) > 0 { + if in.Price[0] > 0 && in.Price[1] > 0 { + mod = mod.WhereBetween(cols.Price, in.Price[0], in.Price[1]) + } else if in.Price[0] > 0 && in.Price[1] == 0 { + mod = mod.WhereGTE(cols.Price, in.Price[0]) + } else if in.Price[0] == 0 && in.Price[1] > 0 { + mod = mod.WhereLTE(cols.Price, in.Price[1]) + } + } + + if in.ActivityAt != nil { + mod = mod.Where(cols.ActivityAt, in.ActivityAt) + } + + if len(in.CreatedAt) == 2 { + mod = mod.WhereBetween(cols.CreatedAt, in.CreatedAt[0], in.CreatedAt[1]) + } + + if !in.Flag.IsNil() { + mod = mod.Where(fmt.Sprintf(`JSON_CONTAINS(%s,'%v')`, cols.Flag, in.Flag)) + } + + if !in.Hobby.IsNil() { + mod = mod.Where(fmt.Sprintf(`JSON_CONTAINS(%s,'%v')`, cols.Hobby, in.Hobby)) + } + + totalCount, err = mod.Clone().Count() + if err != nil { + err = gerror.Wrap(err, "获取表格数据行失败,请稍后重试!") + return + } + + if totalCount == 0 { + return + } + + if err = mod.Fields(sysin.TableListModel{}).Page(in.Page, in.PerPage).Handler(handler.Sorter(in)).Scan(&list); err != nil { + err = gerror.Wrap(err, "获取表格列表失败,请稍后重试!") + return + } + return +} + +// Edit 修改/新增 +func (s *sSysTreeTable) Edit(ctx context.Context, in *sysin.TableEditInp) (err error) { + cols := dao.AddonHgexampleTable.Columns() + if err = hgorm.IsUnique(ctx, &dao.AddonHgexampleTable, g.Map{cols.Qq: in.Qq}, "QQ号码已存在,请换一个", in.Id); err != nil { + return + } + + return g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) (err error) { + in.Pid, in.Level, in.Tree, err = hgorm.AutoUpdateTree(ctx, &dao.AddonHgexampleTable, in.Id, in.Pid) + if err != nil { + return err + } + + if in.Id > 0 { + in.UpdatedBy = contexts.GetUserId(ctx) + if _, err = s.Model(ctx).WherePri(in.Id).Data(in).Update(); err != nil { + err = gerror.Wrap(err, "修改表格失败,请稍后重试!") + return err + } + } else { + in.CreatedBy = contexts.GetUserId(ctx) + if _, err = s.Model(ctx, &handler.Option{FilterAuth: false}).Data(in).OmitEmptyData().Insert(); err != nil { + err = gerror.Wrap(err, "新增表格失败,请稍后重试!") + return err + } + } + return + }) +} + +// Delete 删除 +func (s *sSysTreeTable) Delete(ctx context.Context, in *sysin.TableDeleteInp) (err error) { + count, err := dao.AdminMenu.Ctx(ctx).Where("pid", in.Id).Count() + if err != nil { + err = gerror.Wrap(err, consts.ErrorORM) + return err + } + if count > 0 { + return gerror.New("请先删除该表格下的所有下级!") + } + + if _, err = s.Model(ctx).WherePri(in.Id).Delete(); err != nil { + err = gerror.Wrap(err, "删除表格失败,请稍后重试!") + return + } + return +} + +// Select 关系树选项列表 +func (s *sSysTreeTable) Select(ctx context.Context) (list []*sysin.TableTree, err error) { + var models []*entity.AddonHgexampleTable + if err = dao.AddonHgexampleTable.Ctx(ctx).Order("pid asc,id asc,sort asc").Scan(&models); err != nil { + err = gerror.Wrap(err, "获取关系树选项列表失败!") + return + } + + list = s.treeList(0, models) + return +} + +// treeList 树状列表 +func (s *sSysTreeTable) treeList(pid int64, nodes []*entity.AddonHgexampleTable) (list []*sysin.TableTree) { + list = make([]*sysin.TableTree, 0) + for _, v := range nodes { + if v.Pid == pid { + item := new(sysin.TableTree) + item.AddonHgexampleTable = *v + item.Label = v.Title + item.Value = v.Id + item.Key = v.Id + + child := s.treeList(v.Id, nodes) + if len(child) > 0 { + item.Children = child + } + list = append(list, item) + } + } + return +} diff --git a/server/addons/hgexample/main.go b/server/addons/hgexample/main.go new file mode 100644 index 0000000..2cccd3a --- /dev/null +++ b/server/addons/hgexample/main.go @@ -0,0 +1,97 @@ +// Package hgexample +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package hgexample + +import ( + "context" + "github.com/gogf/gf/v2/net/ghttp" + "github.com/gogf/gf/v2/os/gctx" + _ "hotgo/addons/hgexample/crons" + "hotgo/addons/hgexample/global" + _ "hotgo/addons/hgexample/logic" + _ "hotgo/addons/hgexample/queues" + "hotgo/addons/hgexample/router" + "hotgo/internal/library/addons" + "hotgo/internal/service" + "sync" +) + +type module struct { + skeleton *addons.Skeleton + ctx context.Context + sync.Mutex +} + +func init() { + newModule() +} + +func newModule() { + m := &module{ + skeleton: &addons.Skeleton{ + Label: "功能案例", + Name: "hgexample", + Group: 1, + Logo: "", + Brief: "系统的一些功能案例", + Description: "系统自带的功能使用示例及其说明,包含一些简单的交互", + Author: "孟帅", + Version: "v1.0.0", // 当该版本号高于已安装的版本号时,会提示可以更新 + }, + ctx: gctx.New(), + } + + addons.RegisterModule(m) +} + +// Start 启动模块 +func (m *module) Start(option *addons.Option) (err error) { + // 初始化模块 + global.Init(m.ctx, m.skeleton) + + // 注册插件路由 + option.Server.Group("/", func(group *ghttp.RouterGroup) { + group.Middleware(service.Middleware().Addon) + router.Admin(m.ctx, group) + router.Api(m.ctx, group) + router.Home(m.ctx, group) + router.WebSocket(m.ctx, group) + }) + return +} + +// Stop 停止模块 +func (m *module) Stop() (err error) { + return +} + +// Ctx 上下文 +func (m *module) Ctx() context.Context { + return m.ctx +} + +// GetSkeleton 获取模块 +func (m *module) GetSkeleton() *addons.Skeleton { + return m.skeleton +} + +// Install 安装模块 +func (m *module) Install(ctx context.Context) (err error) { + // ... + return +} + +// Upgrade 更新模块 +func (m *module) Upgrade(ctx context.Context) (err error) { + // ... + return +} + +// UnInstall 卸载模块 +func (m *module) UnInstall(ctx context.Context) (err error) { + // ... + return +} diff --git a/server/addons/hgexample/model/config.go b/server/addons/hgexample/model/config.go new file mode 100644 index 0000000..7496b4b --- /dev/null +++ b/server/addons/hgexample/model/config.go @@ -0,0 +1,11 @@ +// Package model +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package model + +// BasicConfig 基础配置 +type BasicConfig struct { + Test string `json:"basicTest"` +} diff --git a/server/addons/hgexample/model/input/sysin/config.go b/server/addons/hgexample/model/input/sysin/config.go new file mode 100644 index 0000000..05c4fc1 --- /dev/null +++ b/server/addons/hgexample/model/input/sysin/config.go @@ -0,0 +1,24 @@ +// Package sysin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sysin + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/sysin" +) + +// UpdateConfigInp 更新指定配置 +type UpdateConfigInp struct { + sysin.UpdateAddonsConfigInp +} + +type GetConfigInp struct { + sysin.GetAddonsConfigInp +} + +type GetConfigModel struct { + List g.Map `json:"list"` +} diff --git a/server/addons/hgexample/model/input/sysin/index.go b/server/addons/hgexample/model/input/sysin/index.go new file mode 100644 index 0000000..8fb45c7 --- /dev/null +++ b/server/addons/hgexample/model/input/sysin/index.go @@ -0,0 +1,26 @@ +// Package sysin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sysin + +import ( + "context" + "github.com/gogf/gf/v2/os/gtime" +) + +// IndexTestInp 测试 +type IndexTestInp struct { + Name string `json:"name" d:"HotGo" dc:"名称"` +} + +func (in *IndexTestInp) Filter(ctx context.Context) (err error) { + return +} + +type IndexTestModel struct { + Name string `json:"name" dc:"名称"` + Module string `json:"module" dc:"当前插件模块"` + Time *gtime.Time `json:"time" dc:"当前时间"` +} diff --git a/server/addons/hgexample/model/input/sysin/table.go b/server/addons/hgexample/model/input/sysin/table.go new file mode 100644 index 0000000..e8d9f58 --- /dev/null +++ b/server/addons/hgexample/model/input/sysin/table.go @@ -0,0 +1,180 @@ +// Package sysin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sysin + +import ( + "context" + "errors" + "github.com/gogf/gf/v2/encoding/gjson" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gtime" + "hotgo/internal/consts" + "hotgo/internal/model/entity" + "hotgo/internal/model/input/form" + "hotgo/utility/validate" +) + +// TableEditInp 修改/新增 +type TableEditInp struct { + entity.AddonHgexampleTable +} + +type TableEditModel struct{} + +func (in *TableEditInp) Filter(ctx context.Context) (err error) { + if in.Map.IsNil() { + in.Map = gjson.New(consts.NilJsonToString) + } + if in.Flag.IsNil() { + in.Flag = gjson.New(consts.NilJsonToString) + } + if in.Images.IsNil() { + in.Images = gjson.New(consts.NilJsonToString) + } + if in.Attachfiles.IsNil() { + in.Attachfiles = gjson.New(consts.NilJsonToString) + } + if in.Hobby.IsNil() { + in.Hobby = gjson.New(consts.NilJsonToString) + } + + if in.Title == "" { + return errors.New("标题不能为空") + } + + if in.Email != "" && !validate.IsEmail(in.Email) { + return errors.New("邮箱格式不正确") + } + + if err := g.Validator().Rules("float|between:0,5").Messages("请输入一个浮点数|推荐星只能是0~5星").Data(in.Star).Run(ctx); err != nil { + return err.Current() + } + return +} + +// TableDeleteInp 删除类型 +type TableDeleteInp struct { + Id interface{} `json:"id" v:"required#表格ID不能为空" dc:"表格ID"` +} + +type TableDeleteModel struct{} + +// TableViewInp 获取信息 +type TableViewInp struct { + Id int64 `json:"id" v:"required#表格ID不能为空" dc:"表格ID"` +} + +type TableViewModel struct { + entity.AddonHgexampleTable +} + +// TableListInp 获取列表 +type TableListInp struct { + form.PageReq + form.Sorters + Id int64 `json:"id" description:""` + Flag *gjson.Json `json:"flag" description:"标签"` + Title string `json:"title" description:"标题"` + Content string `json:"content" description:"内容"` + Price []float64 `json:"price" description:"价格"` + ActivityAt *gtime.Time `json:"activityAt" description:"活动时间"` + Switch int `json:"switch" description:"开关"` + Hobby *gjson.Json `json:"hobby" description:"爱好"` + Status int `json:"status" description:"状态"` + CreatedAt []*gtime.Time `json:"createdAt" description:"创建时间"` +} + +type TableListModel struct { + entity.AddonHgexampleTable + TableCategoryName string `json:"TableCategoryName" description:"分类名称"` + TableCategoryDescription string `json:"TableCategoryDescription" description:"分类描述"` + TableCategoryRemark string `json:"TableCategoryRemark" description:"分类备注"` + SysProvincesTitle string `json:"sysProvincesTitle" description:""` +} + +func (in *TableListInp) Filter(ctx context.Context) (err error) { + if !in.Flag.IsNil() { + in.Flag = gjson.New(in.Flag.Var().Ints()) + } + if !in.Hobby.IsNil() { + in.Hobby = gjson.New(in.Hobby.Var().Ints()) + } + return +} + +type TableExportModel struct { + Id int64 `json:"id" description:""` + CategoryId int64 `json:"categoryId" description:"分类ID"` + Flag *gjson.Json `json:"flag" description:"标签"` + Title string `json:"title" description:"标题"` + Star float64 `json:"star" description:"推荐星"` + Price float64 `json:"price" description:"价格"` + Views int64 `json:"views" description:"浏览次数"` + ActivityAt *gtime.Time `json:"activityAt" description:"活动时间"` + StartAt *gtime.Time `json:"startAt" description:"开启时间"` + EndAt *gtime.Time `json:"endAt" description:"结束时间"` + Switch int `json:"switch" description:"开关"` + Sort int `json:"sort" description:"排序"` + Avatar string `json:"avatar" description:"头像"` + Sex int `json:"sex" description:"性别"` + Qq string `json:"qq" description:"qq"` + Email string `json:"email" description:"邮箱"` + Mobile string `json:"mobile" description:"手机号码"` + Hobby *gjson.Json `json:"hobby" description:"爱好"` + Channel int `json:"channel" description:"渠道"` + Pid int64 `json:"pid" description:"上级ID"` + Level int `json:"level" description:"树等级"` + Tree string `json:"tree" description:"关系树"` + Remark string `json:"remark" description:"备注"` + Status int `json:"status" description:"状态"` + CreatedBy int64 `json:"createdBy" description:"创建者"` + UpdatedBy int64 `json:"updatedBy" description:"更新者"` + CreatedAt *gtime.Time `json:"createdAt" description:"创建时间"` + UpdatedAt *gtime.Time `json:"updatedAt" description:"修改时间"` + DeletedAt *gtime.Time `json:"deletedAt" description:"删除时间"` +} + +// TableMaxSortInp 最大排序 +type TableMaxSortInp struct{} + +type TableMaxSortModel struct { + Sort int `json:"sort" description:"排序"` +} + +// TableStatusInp 更新状态 +type TableStatusInp struct { + Id int64 `json:"id" v:"required#表格ID不能为空" dc:"表格ID"` + Status int `json:"status" dc:"状态"` +} + +func (in *TableStatusInp) Filter(ctx context.Context) (err error) { + if in.Id <= 0 { + err = gerror.New("ID不能为空") + return + } + + if in.Status <= 0 { + err = gerror.New("状态不能为空") + return + } + + if !validate.InSlice(consts.StatusSlice, in.Status) { + err = gerror.New("状态不正确") + return + } + return +} + +type TableStatusModel struct{} + +// TableSwitchInp 更新开关状态 +type TableSwitchInp struct { + form.SwitchReq + Id int64 `json:"id" v:"required#表格ID不能为空" dc:"表格ID"` +} + +type TableSwitchModel struct{} diff --git a/server/addons/hgexample/model/input/sysin/tenant_order.go b/server/addons/hgexample/model/input/sysin/tenant_order.go new file mode 100644 index 0000000..61b44a6 --- /dev/null +++ b/server/addons/hgexample/model/input/sysin/tenant_order.go @@ -0,0 +1,123 @@ +// Package sysin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2024 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.13.1 +package sysin + +import ( + "context" + "hotgo/internal/model/entity" + "hotgo/internal/model/input/form" + + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gtime" +) + +// TenantOrderUpdateFields 修改多租户功能演示字段过滤 +type TenantOrderUpdateFields struct { + TenantId int64 `json:"tenantId" dc:"租户ID"` + MerchantId int64 `json:"merchantId" dc:"商户ID"` + UserId int64 `json:"userId" dc:"用户ID"` + ProductName string `json:"productName" dc:"购买产品"` + OrderSn string `json:"orderSn" dc:"关联订单号"` + Money float64 `json:"money" dc:"充值金额"` + Remark string `json:"remark" dc:"备注"` + Status int `json:"status" dc:"支付状态"` +} + +// TenantOrderInsertFields 新增多租户功能演示字段过滤 +type TenantOrderInsertFields struct { + TenantId int64 `json:"tenantId" dc:"租户ID"` + MerchantId int64 `json:"merchantId" dc:"商户ID"` + UserId int64 `json:"userId" dc:"用户ID"` + ProductName string `json:"productName" dc:"购买产品"` + OrderSn string `json:"orderSn" dc:"关联订单号"` + Money float64 `json:"money" dc:"充值金额"` + Remark string `json:"remark" dc:"备注"` + Status int `json:"status" dc:"支付状态"` +} + +// TenantOrderEditInp 修改/新增多租户功能演示 +type TenantOrderEditInp struct { + entity.AddonHgexampleTenantOrder +} + +func (in *TenantOrderEditInp) Filter(ctx context.Context) (err error) { + // 验证充值金额 + if err := g.Validator().Rules("required").Data(in.Money).Messages("充值金额不能为空").Run(ctx); err != nil { + return err.Current() + } + + return +} + +type TenantOrderEditModel struct{} + +// TenantOrderDeleteInp 删除多租户功能演示 +type TenantOrderDeleteInp struct { + Id interface{} `json:"id" v:"required#主键不能为空" dc:"主键"` +} + +func (in *TenantOrderDeleteInp) Filter(ctx context.Context) (err error) { + return +} + +type TenantOrderDeleteModel struct{} + +// TenantOrderViewInp 获取指定多租户功能演示信息 +type TenantOrderViewInp struct { + Id int64 `json:"id" v:"required#主键不能为空" dc:"主键"` +} + +func (in *TenantOrderViewInp) Filter(ctx context.Context) (err error) { + return +} + +type TenantOrderViewModel struct { + entity.AddonHgexampleTenantOrder +} + +// TenantOrderListInp 获取多租户功能演示列表 +type TenantOrderListInp struct { + form.PageReq + Id int64 `json:"id" dc:"主键"` + TenantId int64 `json:"tenantId" dc:"租户ID"` + MerchantId int64 `json:"merchantId" dc:"商户ID"` + UserId int64 `json:"userId" dc:"用户ID"` + OrderSn string `json:"orderSn" dc:"关联订单号"` + Status int `json:"status" dc:"支付状态"` + CreatedAt []*gtime.Time `json:"createdAt" dc:"创建时间"` +} + +func (in *TenantOrderListInp) Filter(ctx context.Context) (err error) { + return +} + +type TenantOrderListModel struct { + Id int64 `json:"id" dc:"主键"` + TenantId int64 `json:"tenantId" dc:"租户ID"` + MerchantId int64 `json:"merchantId" dc:"商户ID"` + UserId int64 `json:"userId" dc:"用户ID"` + ProductName string `json:"productName" dc:"购买产品"` + OrderSn string `json:"orderSn" dc:"关联订单号"` + Money float64 `json:"money" dc:"充值金额"` + Remark string `json:"remark" dc:"备注"` + Status int `json:"status" dc:"支付状态"` + CreatedAt *gtime.Time `json:"createdAt" dc:"创建时间"` +} + +// TenantOrderExportModel 导出多租户功能演示 +type TenantOrderExportModel struct { + Id int64 `json:"id" dc:"主键"` + TenantId int64 `json:"tenantId" dc:"租户ID"` + MerchantId int64 `json:"merchantId" dc:"商户ID"` + UserId int64 `json:"userId" dc:"用户ID"` + ProductName string `json:"productName" dc:"购买产品"` + OrderSn string `json:"orderSn" dc:"关联订单号"` + Money float64 `json:"money" dc:"充值金额"` + Remark string `json:"remark" dc:"备注"` + Status int `json:"status" dc:"支付状态"` + CreatedAt *gtime.Time `json:"createdAt" dc:"创建时间"` +} diff --git a/server/addons/hgexample/model/input/sysin/tree_table.go b/server/addons/hgexample/model/input/sysin/tree_table.go new file mode 100644 index 0000000..02702c4 --- /dev/null +++ b/server/addons/hgexample/model/input/sysin/tree_table.go @@ -0,0 +1,47 @@ +// Package sysin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sysin + +import ( + "github.com/gogf/gf/v2/encoding/gjson" + "github.com/gogf/gf/v2/os/gtime" + "hotgo/internal/model/entity" + "hotgo/internal/model/input/form" +) + +// TreeTableListInp 获取列表 +type TreeTableListInp struct { + form.PageReq + form.Sorters + Id int64 `json:"id" description:""` + Flag *gjson.Json `json:"flag" description:"标签"` + Title string `json:"title" description:"标题"` + Content string `json:"content" description:"内容"` + Price []float64 `json:"price" description:"价格"` + ActivityAt *gtime.Time `json:"activityAt" description:"活动时间"` + Switch int `json:"switch" description:"开关"` + Hobby *gjson.Json `json:"hobby" description:"爱好"` + Status int `json:"status" description:"状态"` + CreatedAt []*gtime.Time `json:"createdAt" description:"创建时间"` + Pid int64 `json:"pid" description:"上级ID"` +} + +type TreeTableListModel struct { + entity.AddonHgexampleTable + TableCategoryName string `json:"TableCategoryName" description:"分类名称"` + TableCategoryDescription string `json:"TableCategoryDescription" description:"分类描述"` + TableCategoryRemark string `json:"TableCategoryRemark" description:"分类备注"` + SysProvincesTitle string `json:"sysProvincesTitle" description:""` +} + +// TableTree 树 +type TableTree struct { + entity.AddonHgexampleTable + Key int64 `json:"key" dc:"key"` + Label string `json:"label" dc:"标签"` + Value int64 `json:"value" dc:"键值"` + Children []*TableTree `json:"children"` +} diff --git a/server/addons/hgexample/queues/queues.go b/server/addons/hgexample/queues/queues.go new file mode 100644 index 0000000..9f2e7eb --- /dev/null +++ b/server/addons/hgexample/queues/queues.go @@ -0,0 +1,9 @@ +// Package queues +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package queues + +// 消息队列. +// 插件中的消息队列消费者可以统一在这里注册和处理 diff --git a/server/addons/hgexample/router/admin.go b/server/addons/hgexample/router/admin.go new file mode 100644 index 0000000..75884df --- /dev/null +++ b/server/addons/hgexample/router/admin.go @@ -0,0 +1,36 @@ +// Package router +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package router + +import ( + "context" + "github.com/gogf/gf/v2/net/ghttp" + "hotgo/addons/hgexample/controller/admin/sys" + "hotgo/addons/hgexample/global" + "hotgo/addons/hgexample/router/genrouter" + "hotgo/internal/consts" + "hotgo/internal/library/addons" + "hotgo/internal/service" +) + +func Admin(ctx context.Context, group *ghttp.RouterGroup) { + prefix := addons.RouterPrefix(ctx, consts.AppAdmin, global.GetSkeleton().Name) + group.Group(prefix, func(group *ghttp.RouterGroup) { + group.Bind( + sys.Index, + ) + group.Middleware(service.Middleware().AdminAuth) + group.Bind( + sys.Comp, + sys.Config, + sys.Table, + sys.TreeTable, + ) + }) + + // 注册生成路由 + genrouter.Register(ctx, group) +} diff --git a/server/addons/hgexample/router/api.go b/server/addons/hgexample/router/api.go new file mode 100644 index 0000000..60c3626 --- /dev/null +++ b/server/addons/hgexample/router/api.go @@ -0,0 +1,32 @@ +// Package router +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package router + +import ( + "context" + "github.com/gogf/gf/v2/net/ghttp" + "hotgo/addons/hgexample/controller/api" + "hotgo/addons/hgexample/global" + "hotgo/internal/consts" + "hotgo/internal/library/addons" + "hotgo/internal/service" +) + +// Api 前台路由 +func Api(ctx context.Context, group *ghttp.RouterGroup) { + prefix := addons.RouterPrefix(ctx, consts.AppApi, global.GetSkeleton().Name) + group.Group(prefix, func(group *ghttp.RouterGroup) { + group.Bind( + // 无需验证的路由 + api.Index, + ) + group.Middleware(service.Middleware().ApiAuth) + group.Bind( + // 需要验证的路由 + // ... + ) + }) +} diff --git a/server/addons/hgexample/router/genrouter/init.go b/server/addons/hgexample/router/genrouter/init.go new file mode 100644 index 0000000..d15d513 --- /dev/null +++ b/server/addons/hgexample/router/genrouter/init.go @@ -0,0 +1,34 @@ +// Package genrouter +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package genrouter + +import ( + "context" + "github.com/gogf/gf/v2/net/ghttp" + "hotgo/addons/hgexample/global" + "hotgo/internal/consts" + "hotgo/internal/library/addons" + "hotgo/internal/service" +) + +var ( + NoLoginRouter []interface{} // 无需登录 + LoginRequiredRouter []interface{} // 需要登录 +) + +// Register 注册通过代码生成的后台路由 +func Register(ctx context.Context, group *ghttp.RouterGroup) { + prefix := addons.RouterPrefix(ctx, consts.AppAdmin, global.GetSkeleton().Name) + group.Group(prefix, func(group *ghttp.RouterGroup) { + if len(NoLoginRouter) > 0 { + group.Bind(NoLoginRouter...) + } + group.Middleware(service.Middleware().AdminAuth) + if len(LoginRequiredRouter) > 0 { + group.Bind(LoginRequiredRouter...) + } + }) +} diff --git a/server/addons/hgexample/router/genrouter/tenant_order.go b/server/addons/hgexample/router/genrouter/tenant_order.go new file mode 100644 index 0000000..15aa5b0 --- /dev/null +++ b/server/addons/hgexample/router/genrouter/tenant_order.go @@ -0,0 +1,13 @@ +// Package genrouter +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2024 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.13.1 +package genrouter + +import "hotgo/addons/hgexample/controller/admin/sys" + +func init() { + LoginRequiredRouter = append(LoginRequiredRouter, sys.TenantOrder) // 多租户功能演示 +} \ No newline at end of file diff --git a/server/addons/hgexample/router/home.go b/server/addons/hgexample/router/home.go new file mode 100644 index 0000000..d985980 --- /dev/null +++ b/server/addons/hgexample/router/home.go @@ -0,0 +1,25 @@ +// Package router +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package router + +import ( + "context" + "github.com/gogf/gf/v2/net/ghttp" + "hotgo/addons/hgexample/controller/home" + "hotgo/addons/hgexample/global" + "hotgo/internal/consts" + "hotgo/internal/library/addons" +) + +// Home 前台页面路由 +func Home(ctx context.Context, group *ghttp.RouterGroup) { + prefix := addons.RouterPrefix(ctx, consts.AppHome, global.GetSkeleton().Name) + group.Group(prefix, func(group *ghttp.RouterGroup) { + group.Bind( + home.Index, + ) + }) +} diff --git a/server/addons/hgexample/router/websocket.go b/server/addons/hgexample/router/websocket.go new file mode 100644 index 0000000..b2ec122 --- /dev/null +++ b/server/addons/hgexample/router/websocket.go @@ -0,0 +1,40 @@ +// Package router +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package router + +import ( + "context" + "github.com/gogf/gf/v2/net/ghttp" + "hotgo/addons/hgexample/controller/websocket" + "hotgo/addons/hgexample/controller/websocket/handler" + "hotgo/addons/hgexample/global" + "hotgo/internal/consts" + "hotgo/internal/library/addons" + "hotgo/internal/service" + ws "hotgo/internal/websocket" +) + +// WebSocket ws路由配置 +func WebSocket(ctx context.Context, group *ghttp.RouterGroup) { + prefix := addons.RouterPrefix(ctx, consts.AppWebSocket, global.GetSkeleton().Name) + group.Group(prefix, func(group *ghttp.RouterGroup) { + group.Bind( + // 无需验证的路由 + websocket.Index, + ) + // ws连接中间件 + group.Middleware(service.Middleware().WebSocketAuth) + group.Bind( + // 需要验证的路由 + // .. + ) + }) + + // 注册消息路由 + ws.RegisterMsg(ws.EventHandlers{ + "admin/addons/hgexample/testMessage": handler.Index.TestMessage, // 测试消息 + }) +} diff --git a/server/addons/hgexample/service/.gitkeep b/server/addons/hgexample/service/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/server/addons/hgexample/service/sys.go b/server/addons/hgexample/service/sys.go new file mode 100644 index 0000000..9ad290d --- /dev/null +++ b/server/addons/hgexample/service/sys.go @@ -0,0 +1,139 @@ +// ================================================================================ +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// You can delete these comments if you wish manually maintain this interface file. +// ================================================================================ + +package service + +import ( + "context" + "hotgo/addons/hgexample/model" + "hotgo/addons/hgexample/model/input/sysin" + "hotgo/internal/library/hgorm/handler" + + "github.com/gogf/gf/v2/database/gdb" +) + +type ( + ISysConfig interface { + // GetBasic 获取基础配置 + GetBasic(ctx context.Context) (conf *model.BasicConfig, err error) + // GetConfigByGroup 获取指定分组配置 + GetConfigByGroup(ctx context.Context, in *sysin.GetConfigInp) (res *sysin.GetConfigModel, err error) + // UpdateConfigByGroup 更新指定分组的配置 + UpdateConfigByGroup(ctx context.Context, in *sysin.UpdateConfigInp) error + } + ISysIndex interface { + // Test 测试 + Test(ctx context.Context, in *sysin.IndexTestInp) (res *sysin.IndexTestModel, err error) + } + ISysTable interface { + // Model Orm模型 + Model(ctx context.Context, option ...*handler.Option) *gdb.Model + // List 获取列表 + List(ctx context.Context, in *sysin.TableListInp) (list []*sysin.TableListModel, totalCount int, err error) + // Export 导出 + Export(ctx context.Context, in *sysin.TableListInp) (err error) + // Edit 修改/新增 + Edit(ctx context.Context, in *sysin.TableEditInp) (err error) + // Delete 删除 + Delete(ctx context.Context, in *sysin.TableDeleteInp) (err error) + // Status 更新状态 + Status(ctx context.Context, in *sysin.TableStatusInp) (err error) + // Switch 更新开关状态 + Switch(ctx context.Context, in *sysin.TableSwitchInp) (err error) + // MaxSort 最大排序 + MaxSort(ctx context.Context, in *sysin.TableMaxSortInp) (res *sysin.TableMaxSortModel, err error) + // View 获取指定信息 + View(ctx context.Context, in *sysin.TableViewInp) (res *sysin.TableViewModel, err error) + } + ISysTenantOrder interface { + // Model 多租户功能演示ORM模型 + Model(ctx context.Context, option ...*handler.Option) *gdb.Model + // List 获取多租户功能演示列表 + List(ctx context.Context, in *sysin.TenantOrderListInp) (list []*sysin.TenantOrderListModel, totalCount int, err error) + // Export 导出多租户功能演示 + Export(ctx context.Context, in *sysin.TenantOrderListInp) (err error) + // Edit 修改/新增多租户功能演示 + Edit(ctx context.Context, in *sysin.TenantOrderEditInp) (err error) + // Delete 删除多租户功能演示 + Delete(ctx context.Context, in *sysin.TenantOrderDeleteInp) (err error) + // View 获取多租户功能演示指定信息 + View(ctx context.Context, in *sysin.TenantOrderViewInp) (res *sysin.TenantOrderViewModel, err error) + } + ISysTreeTable interface { + // Model Orm模型 + Model(ctx context.Context, option ...*handler.Option) *gdb.Model + // List 获取列表 + List(ctx context.Context, in *sysin.TreeTableListInp) (list []*sysin.TreeTableListModel, totalCount int, err error) + // Edit 修改/新增 + Edit(ctx context.Context, in *sysin.TableEditInp) (err error) + // Delete 删除 + Delete(ctx context.Context, in *sysin.TableDeleteInp) (err error) + // Select 关系树选项列表 + Select(ctx context.Context) (list []*sysin.TableTree, err error) + } +) + +var ( + localSysConfig ISysConfig + localSysIndex ISysIndex + localSysTable ISysTable + localSysTenantOrder ISysTenantOrder + localSysTreeTable ISysTreeTable +) + +func SysConfig() ISysConfig { + if localSysConfig == nil { + panic("implement not found for interface ISysConfig, forgot register?") + } + return localSysConfig +} + +func RegisterSysConfig(i ISysConfig) { + localSysConfig = i +} + +func SysIndex() ISysIndex { + if localSysIndex == nil { + panic("implement not found for interface ISysIndex, forgot register?") + } + return localSysIndex +} + +func RegisterSysIndex(i ISysIndex) { + localSysIndex = i +} + +func SysTable() ISysTable { + if localSysTable == nil { + panic("implement not found for interface ISysTable, forgot register?") + } + return localSysTable +} + +func RegisterSysTable(i ISysTable) { + localSysTable = i +} + +func SysTenantOrder() ISysTenantOrder { + if localSysTenantOrder == nil { + panic("implement not found for interface ISysTenantOrder, forgot register?") + } + return localSysTenantOrder +} + +func RegisterSysTenantOrder(i ISysTenantOrder) { + localSysTenantOrder = i +} + +func SysTreeTable() ISysTreeTable { + if localSysTreeTable == nil { + panic("implement not found for interface ISysTreeTable, forgot register?") + } + return localSysTreeTable +} + +func RegisterSysTreeTable(i ISysTreeTable) { + localSysTreeTable = i +} diff --git a/server/addons/modules/.gitkeep b/server/addons/modules/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/server/addons/modules/hgexample.go b/server/addons/modules/hgexample.go new file mode 100644 index 0000000..eafbc58 --- /dev/null +++ b/server/addons/modules/hgexample.go @@ -0,0 +1,8 @@ +// Package modules +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package modules + +import _ "hotgo/addons/hgexample" diff --git a/server/api/admin/addons/addons.go b/server/api/admin/addons/addons.go new file mode 100644 index 0000000..83dd492 --- /dev/null +++ b/server/api/admin/addons/addons.go @@ -0,0 +1,59 @@ +// Package addons +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package addons + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +// ListReq 查询列表 +type ListReq struct { + g.Meta `path:"/addons/list" method:"get" tags:"插件管理" summary:"获取插件列表"` + sysin.AddonsListInp +} + +type ListRes struct { + List []*sysin.AddonsListModel `json:"list" dc:"数据列表"` + form.PageRes +} + +// BuildReq 提交生成 +type BuildReq struct { + g.Meta `path:"/addons/build" method:"post" tags:"插件管理" summary:"提交生成"` + sysin.AddonsBuildInp +} + +type BuildRes struct { +} + +// InstallReq 安装模块 +type InstallReq struct { + g.Meta `path:"/addons/install" method:"post" tags:"插件管理" summary:"安装模块"` + sysin.AddonsInstallInp +} + +type InstallRes struct { +} + +// UpgradeReq 更新模块 +type UpgradeReq struct { + g.Meta `path:"/addons/upgrade" method:"post" tags:"插件管理" summary:"更新模块"` + sysin.AddonsUpgradeInp +} + +type UpgradeRes struct { +} + +// UnInstallReq 卸载模块 +type UnInstallReq struct { + g.Meta `path:"/addons/uninstall" method:"post" tags:"插件管理" summary:"卸载模块"` + sysin.AddonsUnInstallInp +} + +type UnInstallRes struct { +} diff --git a/server/api/admin/attachment/attachment.go b/server/api/admin/attachment/attachment.go new file mode 100644 index 0000000..df58a31 --- /dev/null +++ b/server/api/admin/attachment/attachment.go @@ -0,0 +1,49 @@ +// Package attachment +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package attachment + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +// ListReq 查询附件列表 +type ListReq struct { + g.Meta `path:"/attachment/list" method:"get" tags:"附件" summary:"获取附件列表"` + sysin.AttachmentListInp +} + +type ListRes struct { + List []*sysin.AttachmentListModel `json:"list" dc:"数据列表"` + form.PageRes +} + +// ViewReq 获取附件信息 +type ViewReq struct { + g.Meta `path:"/attachment/view" method:"get" tags:"附件" summary:"获取指定附件信息"` + sysin.AttachmentViewInp +} + +type ViewRes struct { + *sysin.AttachmentViewModel +} + +// DeleteReq 删除附件 +type DeleteReq struct { + g.Meta `path:"/attachment/delete" method:"post" tags:"附件" summary:"删除附件"` + sysin.AttachmentDeleteInp +} + +type DeleteRes struct{} + +// ClearKindReq 清空上传类型 +type ClearKindReq struct { + g.Meta `path:"/attachment/clearKind" method:"post" tags:"附件" summary:"清空上传类型"` + sysin.AttachmentClearKindInp +} + +type ClearKindRes struct{} diff --git a/server/api/admin/blacklist/blacklist.go b/server/api/admin/blacklist/blacklist.go new file mode 100644 index 0000000..97c7475 --- /dev/null +++ b/server/api/admin/blacklist/blacklist.go @@ -0,0 +1,57 @@ +// Package blacklist +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package blacklist + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +// ListReq 查询列表 +type ListReq struct { + g.Meta `path:"/blacklist/list" method:"get" tags:"黑名单" summary:"获取黑名单列表"` + sysin.BlacklistListInp +} + +type ListRes struct { + List []*sysin.BlacklistListModel `json:"list" dc:"数据列表"` + form.PageRes +} + +// ViewReq 获取信息 +type ViewReq struct { + g.Meta `path:"/blacklist/view" method:"get" tags:"黑名单" summary:"获取指定信息"` + sysin.BlacklistViewInp +} + +type ViewRes struct { + *sysin.BlacklistViewModel +} + +// EditReq 修改/新增 +type EditReq struct { + g.Meta `path:"/blacklist/edit" method:"post" tags:"黑名单" summary:"修改/新增黑名单"` + sysin.BlacklistEditInp +} + +type EditRes struct{} + +// DeleteReq 删除 +type DeleteReq struct { + g.Meta `path:"/blacklist/delete" method:"post" tags:"黑名单" summary:"删除黑名单"` + sysin.BlacklistDeleteInp +} + +type DeleteRes struct{} + +// StatusReq 更新状态 +type StatusReq struct { + g.Meta `path:"/blacklist/status" method:"post" tags:"黑名单" summary:"更新黑名单状态"` + sysin.BlacklistStatusInp +} + +type StatusRes struct{} diff --git a/server/api/admin/cash/cash.go b/server/api/admin/cash/cash.go new file mode 100644 index 0000000..0d82d1f --- /dev/null +++ b/server/api/admin/cash/cash.go @@ -0,0 +1,49 @@ +// Package cash +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package cash + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/adminin" + "hotgo/internal/model/input/form" +) + +// ListReq 查询列表 +type ListReq struct { + g.Meta `path:"/cash/list" method:"get" tags:"提现" summary:"获取提现列表"` + adminin.CashListInp +} + +type ListRes struct { + List []*adminin.CashListModel `json:"list" dc:"数据列表"` + form.PageRes +} + +// ViewReq 获取指定信息 +type ViewReq struct { + g.Meta `path:"/cash/view" method:"get" tags:"提现" summary:"获取指定信息"` + adminin.CashViewInp +} + +type ViewRes struct { + *adminin.CashViewModel +} + +// ApplyReq 申请提现 +type ApplyReq struct { + g.Meta `path:"/cash/apply" method:"post" tags:"提现" summary:"申请提现"` + Money float64 `json:"money" description:"提现金额"` +} + +type ApplyRes struct{} + +// PaymentReq 提现打款处理 +type PaymentReq struct { + g.Meta `path:"/cash/payment" method:"post" tags:"提现" summary:"提现打款处理"` + adminin.CashPaymentInp +} + +type PaymentRes struct{} diff --git a/server/api/admin/common/console.go b/server/api/admin/common/console.go new file mode 100644 index 0000000..025ba2a --- /dev/null +++ b/server/api/admin/common/console.go @@ -0,0 +1,39 @@ +// Package common +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package common + +import "github.com/gogf/gf/v2/frame/g" + +// ConsoleStatReq 控制台统计 +type ConsoleStatReq struct { + g.Meta `path:"/console/stat" method:"get" tags:"控制台" summary:"综合数据统计"` +} + +type ConsoleStatRes struct { + Visits struct { + DayVisits float64 `json:"dayVisits"` + Rise float64 `json:"rise"` + Decline float64 `json:"decline"` + Amount float64 `json:"amount"` + } `json:"visits"` + Saleroom struct { + WeekSaleroom float64 `json:"weekSaleroom"` + Amount float64 `json:"amount"` + Degree float64 `json:"degree"` + } `json:"saleroom"` + OrderLarge struct { + WeekLarge float64 `json:"weekLarge"` + Rise float64 `json:"rise"` + Decline float64 `json:"decline"` + Amount float64 `json:"amount"` + } `json:"orderLarge"` + Volume struct { + WeekLarge float64 `json:"weekLarge"` + Rise float64 `json:"rise"` + Decline float64 `json:"decline"` + Amount float64 `json:"amount"` + } `json:"volume"` +} diff --git a/server/api/admin/common/ems.go b/server/api/admin/common/ems.go new file mode 100644 index 0000000..82a5a53 --- /dev/null +++ b/server/api/admin/common/ems.go @@ -0,0 +1,27 @@ +// Package common +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package common + +import ( + "github.com/gogf/gf/v2/frame/g" +) + +// SendTestEmailReq 发送测试邮件 +type SendTestEmailReq struct { + g.Meta `path:"/ems/sendTest" tags:"邮件" method:"post" summary:"发送测试邮件"` + To string `json:"to" v:"required#接收者邮件不能为空" dc:"接收者邮件,多个用;隔开"` +} + +type SendTestEmailRes struct { +} + +// SendBindEmsReq 发送换绑邮件 +type SendBindEmsReq struct { + g.Meta `path:"/ems/sendBind" tags:"邮件" method:"post" summary:"发送换绑邮件"` +} + +type SendBindEmsRes struct { +} diff --git a/server/api/admin/common/site.go b/server/api/admin/common/site.go new file mode 100644 index 0000000..7825a4c --- /dev/null +++ b/server/api/admin/common/site.go @@ -0,0 +1,90 @@ +// Package common +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package common + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model" + "hotgo/internal/model/input/adminin" +) + +// LoginLogoutReq 注销登录 +type LoginLogoutReq struct { + g.Meta `path:"/site/logout" method:"post" tags:"后台基础" summary:"注销登录"` +} + +type LoginLogoutRes struct{} + +// RegisterReq 提交账号注册 +type RegisterReq struct { + g.Meta `path:"/site/register" method:"post" tags:"后台基础" summary:"账号注册"` + adminin.RegisterInp +} + +type RegisterRes struct { + *adminin.LoginModel +} + +// LoginCaptchaReq 获取登录验证码 +type LoginCaptchaReq struct { + g.Meta `path:"/site/captcha" method:"get" tags:"后台基础" summary:"获取登录验证码"` +} + +type LoginCaptchaRes struct { + Cid string `json:"cid" dc:"验证码ID"` + Base64 string `json:"base64" dc:"验证码"` +} + +// AccountLoginReq 提交账号登录 +type AccountLoginReq struct { + g.Meta `path:"/site/accountLogin" method:"post" tags:"后台基础" summary:"账号登录"` + adminin.AccountLoginInp +} + +type AccountLoginRes struct { + *adminin.LoginModel +} + +// MobileLoginReq 提交手机号登录 +type MobileLoginReq struct { + g.Meta `path:"/site/mobileLogin" method:"post" tags:"后台基础" summary:"手机号登录"` + adminin.MobileLoginInp +} + +type MobileLoginRes struct { + *adminin.LoginModel +} + +// SiteConfigReq 获取配置 +type SiteConfigReq struct { + g.Meta `path:"/site/config" method:"get" tags:"后台基础" summary:"获取配置"` +} + +type SiteConfigRes struct { + Version string `json:"version" dc:"系统版本"` + WsAddr string `json:"wsAddr" dc:"客户端websocket地址"` + Domain string `json:"domain" dc:"对外域名"` + Mode string `json:"mode" dc:"运行模式"` +} + +// SiteLoginConfigReq 获取登录配置 +type SiteLoginConfigReq struct { + g.Meta `path:"/site/loginConfig" method:"get" tags:"后台基础" summary:"获取登录配置"` +} + +type SiteLoginConfigRes struct { + *model.LoginConfig + I18nSwitch bool `json:"i18nSwitch" dc:"国际化开关"` + DefaultLanguage string `json:"defaultLanguage" dc:"默认语言设置"` + ProjectName string `json:"projectName" dc:"项目名称"` +} + +// SitePingReq ping +type SitePingReq struct { + g.Meta `path:"/site/ping" method:"get" tags:"后台基础" summary:"ping"` +} + +type SitePingRes struct{} diff --git a/server/api/admin/common/sms.go b/server/api/admin/common/sms.go new file mode 100644 index 0000000..53ebbd1 --- /dev/null +++ b/server/api/admin/common/sms.go @@ -0,0 +1,37 @@ +// Package common +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package common + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/sysin" +) + +// SendTestSmsReq 发送测试短信 +type SendTestSmsReq struct { + g.Meta `path:"/sms/sendTest" tags:"短信" method:"post" summary:"发送测试短信"` + sysin.SendCodeInp +} + +type SendTestSmsRes struct { +} + +// SendBindSmsReq 发送换绑短信 +type SendBindSmsReq struct { + g.Meta `path:"/sms/sendBind" tags:"短信" method:"post" summary:"发送换绑短信"` +} + +type SendBindSmsRes struct { +} + +// SendSmsReq 发送短信 +type SendSmsReq struct { + g.Meta `path:"/sms/send" tags:"短信" method:"post" summary:"发送短信"` + sysin.SendCodeInp +} + +type SendSmsRes struct { +} diff --git a/server/api/admin/common/upload.go b/server/api/admin/common/upload.go new file mode 100644 index 0000000..8f1afb3 --- /dev/null +++ b/server/api/admin/common/upload.go @@ -0,0 +1,48 @@ +// Package common +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package common + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/sysin" +) + +// UploadFileReq 上传文件 +type UploadFileReq struct { + g.Meta `path:"/upload/file" tags:"附件" method:"post" summary:"上传附件"` +} + +type UploadFileRes *sysin.AttachmentListModel + +// CheckMultipartReq 检查文件分片 +type CheckMultipartReq struct { + g.Meta `path:"/upload/checkMultipart" tags:"附件" method:"post" summary:"检查文件分片"` + sysin.CheckMultipartInp +} + +type CheckMultipartRes struct { + *sysin.CheckMultipartModel +} + +// UploadPartReq 分片上传 +type UploadPartReq struct { + g.Meta `path:"/upload/uploadPart" tags:"附件" method:"post" summary:"分片上传"` + sysin.UploadPartInp +} + +type UploadPartRes struct { + *sysin.UploadPartModel +} + +// ImageTransferStorageReq 图片链接转存 +type ImageTransferStorageReq struct { + g.Meta `path:"/upload/imageTransferStorage" tags:"附件" method:"post" summary:"图片链接转存"` + sysin.ImageTransferStorageInp +} + +type ImageTransferStorageRes struct { + *sysin.ImageTransferStorageModel +} diff --git a/server/api/admin/common/wechat.go b/server/api/admin/common/wechat.go new file mode 100644 index 0000000..c7af478 --- /dev/null +++ b/server/api/admin/common/wechat.go @@ -0,0 +1,31 @@ +// Package common +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package common + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/commonin" +) + +// WechatAuthorizeReq 微信用户授权 +type WechatAuthorizeReq struct { + g.Meta `path:"/wechat/authorize" method:"get" tags:"微信" summary:"微信用户授权"` + commonin.WechatAuthorizeInp +} + +type WechatAuthorizeRes struct { + *commonin.WechatAuthorizeModel +} + +// WechatAuthorizeCallReq 微信用户授权回调 +type WechatAuthorizeCallReq struct { + g.Meta `path:"/wechat/authorizeCall" method:"get" tags:"微信" summary:"微信用户授权"` + commonin.WechatAuthorizeCallInp +} + +type WechatAuthorizeCallRes struct { + *commonin.WechatAuthorizeCallModel +} diff --git a/server/api/admin/config/config.go b/server/api/admin/config/config.go new file mode 100644 index 0000000..cc8b9b5 --- /dev/null +++ b/server/api/admin/config/config.go @@ -0,0 +1,47 @@ +// Package config +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package config + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +// GetReq 获取指定分组的配置 +type GetReq struct { + g.Meta `path:"/config/get" method:"get" tags:"配置" summary:"获取指定分组的配置"` + sysin.GetConfigInp +} + +type GetRes struct { + *sysin.GetConfigModel +} + +// UpdateReq 获取指定分组的配置 +type UpdateReq struct { + g.Meta `path:"/config/update" method:"post" tags:"配置" summary:"获取指定分组的配置"` + sysin.UpdateConfigInp +} + +type UpdateRes struct { +} + +// TypeSelectReq 数据类型选项 +type TypeSelectReq struct { + g.Meta `path:"/config/typeSelect" method:"get" tags:"配置" summary:"数据类型选项"` +} + +type TypeSelectRes []form.Select + +// GetCashReq 获取提现配置 +type GetCashReq struct { + g.Meta `path:"/config/getCash" method:"get" tags:"配置" summary:"获取提现配置"` +} + +type GetCashRes struct { + *sysin.GetConfigModel +} diff --git a/server/api/admin/creditslog/creditslog.go b/server/api/admin/creditslog/creditslog.go new file mode 100644 index 0000000..bec4694 --- /dev/null +++ b/server/api/admin/creditslog/creditslog.go @@ -0,0 +1,33 @@ +// Package creditslog +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.5.3 +// @AutoGenerate Date 2023-04-15 15:59:58 +package creditslog + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/adminin" + "hotgo/internal/model/input/form" +) + +// ListReq 查询资产变动列表 +type ListReq struct { + g.Meta `path:"/creditsLog/list" method:"get" tags:"资产变动" summary:"获取资产变动列表"` + adminin.CreditsLogListInp +} + +type ListRes struct { + form.PageRes + List []*adminin.CreditsLogListModel `json:"list" dc:"数据列表"` +} + +// ExportReq 导出资产变动列表 +type ExportReq struct { + g.Meta `path:"/creditsLog/export" method:"get" tags:"资产变动" summary:"导出资产变动列表"` + adminin.CreditsLogListInp +} + +type ExportRes struct{} diff --git a/server/api/admin/cron/cron.go b/server/api/admin/cron/cron.go new file mode 100644 index 0000000..87f7267 --- /dev/null +++ b/server/api/admin/cron/cron.go @@ -0,0 +1,93 @@ +// Package cron +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package cron + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +// ListReq 查询列表 +type ListReq struct { + g.Meta `path:"/cron/list" method:"get" tags:"定时任务" summary:"获取定时任务列表"` + sysin.CronListInp +} + +type ListRes struct { + List []*sysin.CronListModel `json:"list" dc:"数据列表"` + form.PageRes +} + +// ViewReq 获取信息 +type ViewReq struct { + g.Meta `path:"/cron/view" method:"get" tags:"定时任务" summary:"获取指定信息"` + sysin.CronViewInp +} + +type ViewRes struct { + *sysin.CronViewModel +} + +// EditReq 修改/新增 +type EditReq struct { + g.Meta `path:"/cron/edit" method:"post" tags:"定时任务" summary:"修改/新增定时任务"` + sysin.CronEditInp +} + +type EditRes struct { + *sysin.CronEditModel +} + +// DeleteReq 删除 +type DeleteReq struct { + g.Meta `path:"/cron/delete" method:"post" tags:"定时任务" summary:"删除定时任务"` + sysin.CronDeleteInp +} + +type DeleteRes struct { + *sysin.CronDeleteModel +} + +// MaxSortReq 最大排序 +type MaxSortReq struct { + g.Meta `path:"/cron/maxSort" method:"get" tags:"定时任务" summary:"定时任务最大排序"` + sysin.CronMaxSortInp +} + +type MaxSortRes struct { + *sysin.CronMaxSortModel +} + +// StatusReq 更新状态 +type StatusReq struct { + g.Meta `path:"/cron/status" method:"post" tags:"定时任务" summary:"更新定时任务状态"` + sysin.CronStatusInp +} + +type StatusRes struct { + *sysin.CronStatusModel +} + +// OnlineExecReq 在线执行 +type OnlineExecReq struct { + g.Meta `path:"/cron/onlineExec" method:"post" tags:"定时任务" summary:"在线执行"` + sysin.OnlineExecInp +} + +type OnlineExecRes struct { + *sysin.OnlineExecModel +} + +// DispatchLogReq 调度日志 +type DispatchLogReq struct { + g.Meta `path:"/cron/dispatchLog" method:"post" tags:"定时任务" summary:"调度日志"` + sysin.DispatchLogInp +} + +type DispatchLogRes struct { + *sysin.DispatchLogModel +} diff --git a/server/api/admin/cron/cron_group.go b/server/api/admin/cron/cron_group.go new file mode 100644 index 0000000..fa20089 --- /dev/null +++ b/server/api/admin/cron/cron_group.go @@ -0,0 +1,83 @@ +// Package cron +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package cron + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +// GroupListReq 查询列表 +type GroupListReq struct { + g.Meta `path:"/cronGroup/list" method:"get" tags:"定时任务分组" summary:"获取定时任务分组列表"` + sysin.CronGroupListInp +} + +type GroupListRes struct { + List []*sysin.CronGroupListModel `json:"list" dc:"数据列表"` + form.PageRes +} + +// GroupViewReq 获取信息 +type GroupViewReq struct { + g.Meta `path:"/cronGroup/view" method:"get" tags:"定时任务分组" summary:"获取指定信息"` + sysin.CronGroupViewInp +} + +type GroupViewRes struct { + *sysin.CronGroupViewModel +} + +// GroupEditReq 修改/新增 +type GroupEditReq struct { + g.Meta `path:"/cronGroup/edit" method:"post" tags:"定时任务分组" summary:"修改/新增定时任务分组"` + sysin.CronGroupEditInp +} + +type GroupEditRes struct { + *sysin.CronGroupEditModel +} + +// GroupDeleteReq 删除 +type GroupDeleteReq struct { + g.Meta `path:"/cronGroup/delete" method:"post" tags:"定时任务分组" summary:"删除定时任务分组"` + sysin.CronGroupDeleteInp +} + +type GroupDeleteRes struct { + *sysin.CronGroupDeleteModel +} + +// GroupMaxSortReq 最大排序 +type GroupMaxSortReq struct { + g.Meta `path:"/cronGroup/maxSort" method:"get" tags:"定时任务分组" summary:"定时任务分组最大排序"` + sysin.CronGroupMaxSortInp +} + +type GroupMaxSortRes struct { + *sysin.CronGroupMaxSortModel +} + +// GroupStatusReq 更新状态 +type GroupStatusReq struct { + g.Meta `path:"/cronGroup/status" method:"post" tags:"定时任务分组" summary:"更新定时任务分组状态"` + sysin.CronGroupStatusInp +} + +type GroupStatusRes struct { + *sysin.CronGroupStatusModel +} + +// GroupSelectReq 定时任务分组选项 +type GroupSelectReq struct { + g.Meta `path:"/cronGroup/select" method:"get" tags:"定时任务分组" summary:"定时任务分组选项"` + sysin.CronGroupSelectInp +} + +type GroupSelectRes struct { + *sysin.CronGroupSelectModel +} diff --git a/server/api/admin/curddemo/curddemo.go b/server/api/admin/curddemo/curddemo.go new file mode 100644 index 0000000..f570d4f --- /dev/null +++ b/server/api/admin/curddemo/curddemo.go @@ -0,0 +1,85 @@ +// Package curddemo +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2025 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.18.6 +package curddemo + +import ( + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" + + "github.com/gogf/gf/v2/frame/g" +) + +// ListReq 查询CURD列表列表 +type ListReq struct { + g.Meta `path:"/curdDemo/list" method:"get" tags:"CURD列表" summary:"获取CURD列表列表"` + sysin.CurdDemoListInp +} + +type ListRes struct { + form.PageRes + List []*sysin.CurdDemoListModel `json:"list" dc:"数据列表"` +} + +// ExportReq 导出CURD列表列表 +type ExportReq struct { + g.Meta `path:"/curdDemo/export" method:"get" tags:"CURD列表" summary:"导出CURD列表列表"` + sysin.CurdDemoListInp +} + +type ExportRes struct{} + +// ViewReq 获取CURD列表指定信息 +type ViewReq struct { + g.Meta `path:"/curdDemo/view" method:"get" tags:"CURD列表" summary:"获取CURD列表指定信息"` + sysin.CurdDemoViewInp +} + +type ViewRes struct { + *sysin.CurdDemoViewModel +} + +// EditReq 修改/新增CURD列表 +type EditReq struct { + g.Meta `path:"/curdDemo/edit" method:"post" tags:"CURD列表" summary:"修改/新增CURD列表"` + sysin.CurdDemoEditInp +} + +type EditRes struct{} + +// DeleteReq 删除CURD列表 +type DeleteReq struct { + g.Meta `path:"/curdDemo/delete" method:"post" tags:"CURD列表" summary:"删除CURD列表"` + sysin.CurdDemoDeleteInp +} + +type DeleteRes struct{} + +// MaxSortReq 获取CURD列表最大排序 +type MaxSortReq struct { + g.Meta `path:"/curdDemo/maxSort" method:"get" tags:"CURD列表" summary:"获取CURD列表最大排序"` + sysin.CurdDemoMaxSortInp +} + +type MaxSortRes struct { + *sysin.CurdDemoMaxSortModel +} + +// StatusReq 更新CURD列表状态 +type StatusReq struct { + g.Meta `path:"/curdDemo/status" method:"post" tags:"CURD列表" summary:"更新CURD列表状态"` + sysin.CurdDemoStatusInp +} + +type StatusRes struct{} + +// SwitchReq 更新CURD列表开关状态 +type SwitchReq struct { + g.Meta `path:"/curdDemo/switch" method:"post" tags:"CURD列表" summary:"更新CURD列表状态"` + sysin.CurdDemoSwitchInp +} + +type SwitchRes struct{} \ No newline at end of file diff --git a/server/api/admin/dept/dept.go b/server/api/admin/dept/dept.go new file mode 100644 index 0000000..565ec74 --- /dev/null +++ b/server/api/admin/dept/dept.go @@ -0,0 +1,75 @@ +// Package dept +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package dept + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/adminin" + "hotgo/internal/model/input/form" + "hotgo/utility/tree" +) + +// ListReq 查询列表 +type ListReq struct { + g.Meta `path:"/dept/list" method:"get" tags:"部门" summary:"获取部门列表"` + adminin.DeptListInp +} + +type ListRes *adminin.DeptListModel + +// ViewReq 获取指定信息 +type ViewReq struct { + g.Meta `path:"/dept/view" method:"get" tags:"部门" summary:"获取指定信息"` + adminin.DeptViewInp +} + +type ViewRes struct { + *adminin.DeptViewModel +} + +// EditReq 修改/新增字典数据 +type EditReq struct { + g.Meta `path:"/dept/edit" method:"post" tags:"部门" summary:"修改/新增部门"` + adminin.DeptEditInp +} + +type EditRes struct{} + +// DeleteReq 删除字典类型 +type DeleteReq struct { + g.Meta `path:"/dept/delete" method:"post" tags:"部门" summary:"删除部门"` + adminin.DeptDeleteInp +} + +type DeleteRes struct{} + +// MaxSortReq 最大排序 +type MaxSortReq struct { + g.Meta `path:"/dept/maxSort" method:"get" tags:"部门" summary:"部门最大排序"` + adminin.DeptMaxSortInp +} + +type MaxSortRes struct { + *adminin.DeptMaxSortModel +} + +// OptionReq 获取当前登录用户可选的部门选项 +type OptionReq struct { + g.Meta `path:"/dept/option" method:"get" tags:"部门" summary:"获取当前登录用户可选的部门选项"` + adminin.DeptOptionInp +} + +type OptionRes struct { + *adminin.DeptOptionModel + form.PageRes +} + +// TreeOptionReq 获取部门关系树选项 +type TreeOptionReq struct { + g.Meta `path:"/dept/treeOption" method:"get" tags:"部门" summary:"获取部门关系树选项"` +} + +type TreeOptionRes []tree.Node diff --git a/server/api/admin/dict/dict_data.go b/server/api/admin/dict/dict_data.go new file mode 100644 index 0000000..8ecdea7 --- /dev/null +++ b/server/api/admin/dict/dict_data.go @@ -0,0 +1,53 @@ +// Package dict +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package dict + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +// DataEditReq 修改/新增字典数据 +type DataEditReq struct { + g.Meta `path:"/dictData/edit" method:"post" tags:"字典数据" summary:"修改/新增字典数据"` + sysin.DictDataEditInp +} + +type DataEditRes struct{} + +// DataDeleteReq 删除字典数据 +type DataDeleteReq struct { + g.Meta `path:"/dictData/delete" method:"post" tags:"字典数据" summary:"删除字典数据"` + sysin.DictDataDeleteInp +} + +type DataDeleteRes struct{} + +// DataListReq 查询列表 +type DataListReq struct { + g.Meta `path:"/dictData/list" method:"get" tags:"字典数据" summary:"获取字典数据列表"` + sysin.DictDataListInp +} + +type DataListRes struct { + List []*sysin.DictDataListModel `json:"list" dc:"数据列表"` + form.PageRes +} + +type DataSelectReq struct { + g.Meta `path:"/dictData/option/{Type}" method:"get" tags:"字典数据" summary:"获取指定字典选项"` + sysin.DataSelectInp +} + +type DataSelectRes sysin.DataSelectModel + +type DataSelectsReq struct { + g.Meta `path:"/dictData/options" method:"get" tags:"字典数据" summary:"获取多个字典选项"` + Types []string `json:"types"` +} + +type DataSelectsRes map[string]sysin.DataSelectModel diff --git a/server/api/admin/dict/dict_type.go b/server/api/admin/dict/dict_type.go new file mode 100644 index 0000000..16f09cb --- /dev/null +++ b/server/api/admin/dict/dict_type.go @@ -0,0 +1,36 @@ +// Package dict +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package dict + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/sysin" +) + +// TypeTreeReq 字典类型树 +type TypeTreeReq struct { + g.Meta `path:"/dictType/tree" tags:"字典类型" method:"get" summary:"字典类型树列表"` +} + +type TypeTreeRes struct { + List []*sysin.DictTypeTree `json:"list" dc:"数据列表"` +} + +// TypeEditReq 修改/新增字典数据 +type TypeEditReq struct { + g.Meta `path:"/dictType/edit" method:"post" tags:"字典类型" summary:"修改/新增字典类型"` + sysin.DictTypeEditInp +} + +type TypeEditRes struct{} + +// TypeDeleteReq 删除字典类型 +type TypeDeleteReq struct { + g.Meta `path:"/dictType/delete" method:"post" tags:"字典类型" summary:"删除字典类型"` + sysin.DictTypeDeleteInp +} + +type TypeDeleteRes struct{} diff --git a/server/api/admin/emslog/emslog.go b/server/api/admin/emslog/emslog.go new file mode 100644 index 0000000..3fd1578 --- /dev/null +++ b/server/api/admin/emslog/emslog.go @@ -0,0 +1,65 @@ +// Package emslog +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package emslog + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +// ListReq 查询列表 +type ListReq struct { + g.Meta `path:"/emsLog/list" method:"get" tags:"邮件记录" summary:"获取邮件记录列表"` + sysin.EmsLogListInp +} + +type ListRes struct { + List []*sysin.EmsLogListModel `json:"list" dc:"数据列表"` + form.PageRes +} + +// ViewReq 获取指定信息 +type ViewReq struct { + g.Meta `path:"/emsLog/view" method:"get" tags:"邮件记录" summary:"获取指定信息"` + sysin.EmsLogViewInp +} + +type ViewRes struct { + *sysin.EmsLogViewModel +} + +// EditReq 修改/新增数据 +type EditReq struct { + g.Meta `path:"/emsLog/edit" method:"post" tags:"邮件记录" summary:"修改/新增邮件记录"` + sysin.EmsLogEditInp +} + +type EditRes struct{} + +// DeleteReq 删除 +type DeleteReq struct { + g.Meta `path:"/emsLog/delete" method:"post" tags:"邮件记录" summary:"删除邮件记录"` + sysin.EmsLogDeleteInp +} + +type DeleteRes struct{} + +// StatusReq 更新状态 +type StatusReq struct { + g.Meta `path:"/emsLog/status" method:"post" tags:"邮件记录" summary:"更新邮件记录状态"` + sysin.EmsLogStatusInp +} + +type StatusRes struct{} + +// SendTestReq 更新状态 +type SendTestReq struct { + g.Meta `path:"/emsLog/sendTest" method:"post" tags:"邮件记录" summary:"发送测试邮件"` + sysin.SendEmsInp +} + +type SendTestRes struct{} diff --git a/server/api/admin/gencodes/gencodes.go b/server/api/admin/gencodes/gencodes.go new file mode 100644 index 0000000..7b196c8 --- /dev/null +++ b/server/api/admin/gencodes/gencodes.go @@ -0,0 +1,118 @@ +// Package gencodes +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package gencodes + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +// ListReq 查询列表 +type ListReq struct { + g.Meta `path:"/genCodes/list" method:"get" tags:"生成代码" summary:"获取生成代码列表"` + sysin.GenCodesListInp +} + +type ListRes struct { + List []*sysin.GenCodesListModel `json:"list" dc:"数据列表"` + form.PageRes +} + +// ViewReq 获取指定信息 +type ViewReq struct { + g.Meta `path:"/genCodes/view" method:"get" tags:"生成代码" summary:"获取指定信息"` + sysin.GenCodesViewInp +} + +type ViewRes struct { + *sysin.GenCodesViewModel +} + +// EditReq 修改/新增数据 +type EditReq struct { + g.Meta `path:"/genCodes/edit" method:"post" tags:"生成代码" summary:"修改/新增生成代码"` + sysin.GenCodesEditInp +} + +type EditRes struct { + *sysin.GenCodesEditModel +} + +// DeleteReq 删除 +type DeleteReq struct { + g.Meta `path:"/genCodes/delete" method:"post" tags:"生成代码" summary:"删除生成代码"` + sysin.GenCodesDeleteInp +} + +type DeleteRes struct{} + +// MaxSortReq 最大排序 +type MaxSortReq struct { + g.Meta `path:"/genCodes/maxSort" method:"get" tags:"生成代码" summary:"生成代码最大排序"` + sysin.GenCodesMaxSortInp +} + +type MaxSortRes struct { + *sysin.GenCodesMaxSortModel +} + +// StatusReq 更新状态 +type StatusReq struct { + g.Meta `path:"/genCodes/status" method:"post" tags:"生成代码" summary:"更新生成代码状态"` + sysin.GenCodesStatusInp +} + +type StatusRes struct{} + +type SelectsReq struct { + g.Meta `path:"/genCodes/selects" method:"get" tags:"生成代码" summary:"生成入口选项"` + sysin.GenCodesSelectsInp +} + +type SelectsRes struct { + *sysin.GenCodesSelectsModel +} + +type TableSelectReq struct { + g.Meta `path:"/genCodes/tableSelect" method:"get" tags:"生成代码" summary:"数据库表选项"` + sysin.GenCodesTableSelectInp +} + +type TableSelectRes []*sysin.GenCodesTableSelectModel + +type ColumnSelectReq struct { + g.Meta `path:"/genCodes/columnSelect" method:"get" tags:"生成代码" summary:"表字段选项"` + sysin.GenCodesColumnSelectInp +} + +type ColumnSelectRes []*sysin.GenCodesColumnSelectModel + +type ColumnListReq struct { + g.Meta `path:"/genCodes/columnList" method:"get" tags:"生成代码" summary:"表字段列表"` + sysin.GenCodesColumnListInp +} + +type ColumnListRes []*sysin.GenCodesColumnListModel + +// PreviewReq 生成预览 +type PreviewReq struct { + g.Meta `path:"/genCodes/preview" method:"post" tags:"生成代码" summary:"生成预览"` + sysin.GenCodesPreviewInp +} + +type PreviewRes struct { + *sysin.GenCodesPreviewModel +} + +// BuildReq 提交生成 +type BuildReq struct { + g.Meta `path:"/genCodes/build" method:"post" tags:"生成代码" summary:"提交生成"` + sysin.GenCodesBuildInp +} + +type BuildRes struct { +} diff --git a/server/api/admin/log/log.go b/server/api/admin/log/log.go new file mode 100644 index 0000000..981751d --- /dev/null +++ b/server/api/admin/log/log.go @@ -0,0 +1,56 @@ +// Package log +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package log + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +// ClearReq 清空日志 +type ClearReq struct { + g.Meta `path:"/log/clear" method:"post" tags:"访问日志" summary:"清空日志"` +} + +type ClearRes struct{} + +// ExportReq 导出 +type ExportReq struct { + g.Meta `path:"/log/export" method:"get" tags:"访问日志" summary:"导出日志"` + sysin.LogListInp +} + +type ExportRes struct{} + +// ListReq 获取菜单列表 +type ListReq struct { + g.Meta `path:"/log/list" method:"get" tags:"访问日志" summary:"获取日志列表"` + sysin.LogListInp +} + +type ListRes struct { + List []*sysin.LogListModel `json:"list" dc:"数据列表"` + form.PageRes +} + +// DeleteReq 删除 +type DeleteReq struct { + g.Meta `path:"/log/delete" method:"post" tags:"访问日志" summary:"删除日志"` + sysin.LogDeleteInp +} + +type DeleteRes struct{} + +// ViewReq 获取指定信息 +type ViewReq struct { + g.Meta `path:"/log/view" method:"get" tags:"访问日志" summary:"获取指定信息"` + sysin.LogViewInp +} + +type ViewRes struct { + *sysin.LogViewModel +} diff --git a/server/api/admin/loginlog/loginlog.go b/server/api/admin/loginlog/loginlog.go new file mode 100644 index 0000000..6fd3710 --- /dev/null +++ b/server/api/admin/loginlog/loginlog.go @@ -0,0 +1,39 @@ +// Package loginlog +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package loginlog + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +// ListReq 查询登录日志列表 +type ListReq struct { + g.Meta `path:"/loginLog/list" method:"get" tags:"登录日志" summary:"获取登录日志列表"` + sysin.LoginLogListInp +} + +type ListRes struct { + form.PageRes + List []*sysin.LoginLogListModel `json:"list" dc:"数据列表"` +} + +// ExportReq 导出登录日志列表 +type ExportReq struct { + g.Meta `path:"/loginLog/export" method:"get" tags:"登录日志" summary:"导出登录日志列表"` + sysin.LoginLogListInp +} + +type ExportRes struct{} + +// DeleteReq 删除登录日志 +type DeleteReq struct { + g.Meta `path:"/loginLog/delete" method:"post" tags:"登录日志" summary:"删除登录日志"` + sysin.LoginLogDeleteInp +} + +type DeleteRes struct{} diff --git a/server/api/admin/member/member.go b/server/api/admin/member/member.go new file mode 100644 index 0000000..49cd1f0 --- /dev/null +++ b/server/api/admin/member/member.go @@ -0,0 +1,138 @@ +// Package member +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package member + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/adminin" + "hotgo/internal/model/input/form" +) + +// UpdateCashReq 更新提现信息 +type UpdateCashReq struct { + g.Meta `path:"/member/updateCash" method:"post" tags:"用户" summary:"更新提现信息"` + adminin.MemberUpdateCashInp +} + +type UpdateCashRes struct{} + +// UpdateEmailReq 换绑邮箱 +type UpdateEmailReq struct { + g.Meta `path:"/member/updateEmail" method:"post" tags:"用户" summary:"换绑邮箱"` + adminin.MemberUpdateEmailInp +} + +type UpdateEmailRes struct{} + +// UpdateMobileReq 换绑手机号 +type UpdateMobileReq struct { + g.Meta `path:"/member/updateMobile" method:"post" tags:"用户" summary:"换绑手机号"` + adminin.MemberUpdateMobileInp +} + +type UpdateMobileRes struct{} + +// UpdateProfileReq 更新用户资料 +type UpdateProfileReq struct { + g.Meta `path:"/member/updateProfile" method:"post" tags:"用户" summary:"更新用户资料"` + adminin.MemberUpdateProfileInp +} + +type UpdateProfileRes struct{} + +// UpdatePwdReq 修改登录密码 +type UpdatePwdReq struct { + g.Meta `path:"/member/updatePwd" method:"post" tags:"用户" summary:"重置密码"` + adminin.MemberUpdatePwdInp +} + +type UpdatePwdRes struct{} + +// ResetPwdReq 重置密码 +type ResetPwdReq struct { + g.Meta `path:"/member/resetPwd" method:"post" tags:"用户" summary:"重置密码"` + adminin.MemberResetPwdInp +} + +type ResetPwdRes struct{} + +// ListReq 查询列表 +type ListReq struct { + g.Meta `path:"/member/list" method:"get" tags:"用户" summary:"获取用户列表"` + adminin.MemberListInp +} + +type ListRes struct { + List []*adminin.MemberListModel `json:"list" dc:"数据列表"` + form.PageRes +} + +// ViewReq 获取指定信息 +type ViewReq struct { + g.Meta `path:"/member/view" method:"get" tags:"用户" summary:"获取指定信息"` + adminin.MemberViewInp +} + +type ViewRes struct { + *adminin.MemberViewModel +} + +// EditReq 修改/新增 +type EditReq struct { + g.Meta `path:"/member/edit" method:"post" tags:"用户" summary:"修改/新增用户"` + adminin.MemberEditInp +} + +type EditRes struct{} + +// DeleteReq 删除 +type DeleteReq struct { + g.Meta `path:"/member/delete" method:"post" tags:"用户" summary:"删除用户"` + adminin.MemberDeleteInp +} + +type DeleteRes struct{} + +// StatusReq 更新用户状态 +type StatusReq struct { + g.Meta `path:"/member/status" method:"post" tags:"用户" summary:"更新用户状态"` + adminin.MemberStatusInp +} + +type StatusRes struct{} + +// SelectReq 获取可选的后台用户选项 +type SelectReq struct { + g.Meta `path:"/member/option" method:"get" tags:"用户" summary:"获取可选的后台用户选项"` + adminin.MemberSelectInp +} + +type SelectRes []*adminin.MemberSelectModel + +// InfoReq 获取登录用户信息 +type InfoReq struct { + g.Meta `path:"/member/info" method:"get" tags:"用户" summary:"获取登录用户信息"` +} + +type InfoRes struct { + *adminin.LoginMemberInfoModel +} + +// AddBalanceReq 增加余额 +type AddBalanceReq struct { + g.Meta `path:"/member/addBalance" method:"post" tags:"用户" summary:"增加余额"` + adminin.MemberAddBalanceInp +} + +type AddBalanceRes struct{} + +// AddIntegralReq 增加积分 +type AddIntegralReq struct { + g.Meta `path:"/member/addIntegral" method:"post" tags:"用户" summary:"增加积分"` + adminin.MemberAddIntegralInp +} + +type AddIntegralRes struct{} diff --git a/server/api/admin/menu/menu.go b/server/api/admin/menu/menu.go new file mode 100644 index 0000000..45351da --- /dev/null +++ b/server/api/admin/menu/menu.go @@ -0,0 +1,39 @@ +// Package menu +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package menu + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/adminin" + "hotgo/internal/model/input/form" +) + +// EditReq 修改/新增菜单 +type EditReq struct { + g.Meta `path:"/menu/edit" method:"post" tags:"菜单" summary:"修改/新增菜单"` + adminin.MenuEditInp +} + +type EditRes struct{} + +// DeleteReq 删除菜单 +type DeleteReq struct { + g.Meta `path:"/menu/delete" method:"post" tags:"菜单" summary:"删除菜单"` + adminin.MenuDeleteInp +} + +type DeleteRes struct{} + +// ListReq 获取菜单列表 +type ListReq struct { + g.Meta `path:"/menu/list" method:"get" tags:"菜单" summary:"获取菜单列表"` + adminin.MenuListInp +} + +type ListRes struct { + *adminin.MenuListModel + form.PageRes +} diff --git a/server/api/admin/monitor/monitor.go b/server/api/admin/monitor/monitor.go new file mode 100644 index 0000000..d86a812 --- /dev/null +++ b/server/api/admin/monitor/monitor.go @@ -0,0 +1,106 @@ +// Package monitor +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package monitor + +import ( + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gtime" + "hotgo/internal/library/network/tcp" + "hotgo/internal/model/input/form" +) + +// UserOfflineReq 下线用户 +type UserOfflineReq struct { + g.Meta `path:"/monitor/userOffline" method:"post" tags:"在线用户" summary:"下线用户"` + Id string `json:"id" v:"required#SID不能为空" description:"SID"` +} + +type UserOfflineRes struct{} + +// UserOnlineListReq 获取在线用户列表 +type UserOnlineListReq struct { + g.Meta `path:"/monitor/userOnlineList" method:"get" tags:"在线用户" summary:"获取在线用户列表"` + form.PageReq + UserId int64 `json:"userId" description:"用户ID"` + Username string `json:"username" description:"用户名"` + IP string `json:"ip" description:"登录IP"` + FirstTime []*gtime.Time `json:"firstTime" description:"登录时间"` +} + +type UserOnlineListRes struct { + List []*UserOnlineModel `json:"list" description:"数据列表"` + form.PageRes +} + +type UserOnlineModel struct { + ID string `json:"id"` // 连接唯一标识 + IP string `json:"ip"` // 客户端IP + Os string `json:"os"` // 客户端系统名称 + Browser string `json:"browser"` // 浏览器 + FirstTime int64 `json:"firstTime"` // 首次连接时间 + HeartbeatTime uint64 `json:"heartbeatTime"` // 用户上次心跳时间 + App string `json:"app"` // 应用名称 + UserId int64 `json:"userId"` // 用户ID + Username string `json:"username"` // 用户名 + Avatar string `json:"avatar"` // 头像 +} + +// NetOnlineListReq 获取在线服务列表 +type NetOnlineListReq struct { + g.Meta `path:"/monitor/netOnlineList" method:"get" tags:"在线服务" summary:"获取在线服务列表"` + form.PageReq + Name string `json:"name" description:"应用名称"` + Group string `json:"group" description:"分组"` + AppId string `json:"appId" description:"APPID"` + Addr string `json:"addr" description:"登录地址"` + FirstTime []*gtime.Time `json:"firstTime" description:"登录时间"` +} + +type NetOnlineListRes struct { + List []*NetOnlineModel `json:"list" description:"数据列表"` + form.PageRes +} + +type NetOnlineModel struct { + *tcp.AuthMeta + Id int64 `json:"id" description:"连接ID"` + IsAuth bool `json:"isAuth" description:"是否认证"` + Addr string `json:"addr" description:"登录地址"` + Port string `json:"port" description:"连接端口"` + FirstTime int64 `json:"firstTime" description:"首次连接时间"` + HeartbeatTime int64 `json:"heartbeatTime" description:"上次心跳时间"` + LicenseId int64 `json:"licenseId" description:"许可ID"` + LicenseName string `json:"licenseName" description:"许可名称"` + LoginTimes int64 `json:"loginTimes" description:"许可累计登录次数"` + Online int `json:"online" description:"许可在线数量"` + OnlineLimit int `json:"onlineLimit" description:"许可在线数量限制"` + Desc string `json:"desc" description:"许可说明"` + Proto string `json:"proto" description:"网络协议"` +} + +// NetOptionReq 获取服务选项 +type NetOptionReq struct { + g.Meta `path:"/monitor/netOption" method:"get" tags:"在线服务" summary:"获取服务选项"` +} + +type NetOptionRes struct { + Routes []*RouteSelect `json:"routes" dc:"路由选项"` +} + +type RouteSelect struct { + Value interface{} `json:"value"` + Label string `json:"label"` + Disabled bool `json:"disabled"` + IsRPC bool `json:"isRPC"` +} + +// NetOfflineReq 下线服务 +type NetOfflineReq struct { + g.Meta `path:"/monitor/netOffline" method:"post" tags:"在线服务" summary:"下线服务"` + Id int64 `json:"id" v:"required#连接ID不能为空" description:"连接ID"` +} + +type NetOfflineRes struct{} diff --git a/server/api/admin/normaltreedemo/normaltreedemo.go b/server/api/admin/normaltreedemo/normaltreedemo.go new file mode 100644 index 0000000..62dff51 --- /dev/null +++ b/server/api/admin/normaltreedemo/normaltreedemo.go @@ -0,0 +1,69 @@ +// Package normaltreedemo +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2024 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.15.7 +package normaltreedemo + +import ( + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" + "hotgo/utility/tree" + + "github.com/gogf/gf/v2/frame/g" +) + +// ListReq 查询普通树表列表 +type ListReq struct { + g.Meta `path:"/normalTreeDemo/list" method:"get" tags:"普通树表" summary:"获取普通树表列表"` + sysin.NormalTreeDemoListInp +} + +type ListRes struct { + form.PageRes + List []*sysin.NormalTreeDemoListModel `json:"list" dc:"数据列表"` +} + +// ViewReq 获取普通树表指定信息 +type ViewReq struct { + g.Meta `path:"/normalTreeDemo/view" method:"get" tags:"普通树表" summary:"获取普通树表指定信息"` + sysin.NormalTreeDemoViewInp +} + +type ViewRes struct { + *sysin.NormalTreeDemoViewModel +} + +// EditReq 修改/新增普通树表 +type EditReq struct { + g.Meta `path:"/normalTreeDemo/edit" method:"post" tags:"普通树表" summary:"修改/新增普通树表"` + sysin.NormalTreeDemoEditInp +} + +type EditRes struct{} + +// DeleteReq 删除普通树表 +type DeleteReq struct { + g.Meta `path:"/normalTreeDemo/delete" method:"post" tags:"普通树表" summary:"删除普通树表"` + sysin.NormalTreeDemoDeleteInp +} + +type DeleteRes struct{} + +// MaxSortReq 获取普通树表最大排序 +type MaxSortReq struct { + g.Meta `path:"/normalTreeDemo/maxSort" method:"get" tags:"普通树表" summary:"获取普通树表最大排序"` + sysin.NormalTreeDemoMaxSortInp +} + +type MaxSortRes struct { + *sysin.NormalTreeDemoMaxSortModel +} + +// TreeOptionReq 获取普通树表关系树选项 +type TreeOptionReq struct { + g.Meta `path:"/normalTreeDemo/treeOption" method:"get" tags:"普通树表" summary:"获取普通树表关系树选项"` +} + +type TreeOptionRes []tree.Node diff --git a/server/api/admin/notice/notice.go b/server/api/admin/notice/notice.go new file mode 100644 index 0000000..75232df --- /dev/null +++ b/server/api/admin/notice/notice.go @@ -0,0 +1,128 @@ +// Package notice +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package notice + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/adminin" + "hotgo/internal/model/input/form" +) + +// ListReq 查询列表 +type ListReq struct { + g.Meta `path:"/notice/list" method:"get" tags:"公告" summary:"获取公告列表"` + adminin.NoticeListInp +} + +type ListRes struct { + List []*adminin.NoticeListModel `json:"list" dc:"数据列表"` + form.PageRes +} + +// ViewReq 获取指定信息 +type ViewReq struct { + g.Meta `path:"/notice/view" method:"get" tags:"公告" summary:"获取指定信息"` + adminin.NoticeViewInp +} + +type ViewRes struct { + *adminin.NoticeViewModel +} + +// EditReq 修改/新增字典数据 +type EditReq struct { + g.Meta `path:"/notice/edit" method:"post" tags:"公告" summary:"修改/新增公告"` + adminin.NoticeEditInp +} + +type EditRes struct{} + +// DeleteReq 删除字典类型 +type DeleteReq struct { + g.Meta `path:"/notice/delete" method:"post" tags:"公告" summary:"删除公告"` + adminin.NoticeDeleteInp +} + +type DeleteRes struct{} + +// MaxSortReq 最大排序 +type MaxSortReq struct { + g.Meta `path:"/notice/maxSort" method:"get" tags:"公告" summary:"公告最大排序"` + adminin.NoticeMaxSortInp +} + +type MaxSortRes struct { + *adminin.NoticeMaxSortModel +} + +// StatusReq 更新公告状态 +type StatusReq struct { + g.Meta `path:"/notice/status" method:"post" tags:"公告" summary:"更新公告状态"` + adminin.NoticeStatusInp +} + +type StatusRes struct{} + +// EditNotifyReq 修改/新增通知 +type EditNotifyReq struct { + g.Meta `path:"/notice/editNotify" method:"post" tags:"公告" summary:"修改/新增通知"` + adminin.NoticeEditInp +} + +type EditNotifyRes struct{} + +// EditNoticeReq 修改/新增公告 +type EditNoticeReq struct { + g.Meta `path:"/notice/editNotice" method:"post" tags:"公告" summary:"修改/新增公告"` + adminin.NoticeEditInp +} + +type EditNoticeRes struct{} + +// EditLetterReq 修改/新增公告 +type EditLetterReq struct { + g.Meta `path:"/notice/editLetter" method:"post" tags:"公告" summary:"修改/新增私信"` + adminin.NoticeEditInp +} + +type EditLetterRes struct{} + +// PullMessagesReq 拉取我的消息 +type PullMessagesReq struct { + g.Meta `path:"/notice/pullMessages" method:"get" tags:"公告" summary:"拉取我的消息"` + adminin.PullMessagesInp +} + +type PullMessagesRes struct { + *adminin.PullMessagesModel +} + +// ReadAllReq 全部已读 +type ReadAllReq struct { + g.Meta `path:"/notice/readAll" method:"post" tags:"公告" summary:"全部已读"` + adminin.NoticeReadAllInp +} + +type ReadAllRes struct { +} + +// UpReadReq 更新已读 +type UpReadReq struct { + g.Meta `path:"/notice/upRead" method:"post" tags:"公告" summary:"更新已读"` + adminin.NoticeUpReadInp +} +type UpReadRes struct{} + +// MessageListReq 我的消息列表 +type MessageListReq struct { + g.Meta `path:"/notice/messageList" method:"get" tags:"公告" summary:"我的消息列表"` + adminin.NoticeMessageListInp +} + +type MessageListRes struct { + List []*adminin.NoticeMessageListModel `json:"list" dc:"数据列表"` + form.PageRes +} diff --git a/server/api/admin/optiontreedemo/optiontreedemo.go b/server/api/admin/optiontreedemo/optiontreedemo.go new file mode 100644 index 0000000..70d0c63 --- /dev/null +++ b/server/api/admin/optiontreedemo/optiontreedemo.go @@ -0,0 +1,69 @@ +// Package optiontreedemo +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2025 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.17.8 +package optiontreedemo + +import ( + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" + "hotgo/utility/tree" + + "github.com/gogf/gf/v2/frame/g" +) + +// ListReq 查询选项树表列表 +type ListReq struct { + g.Meta `path:"/optionTreeDemo/list" method:"get" tags:"选项树表" summary:"获取选项树表列表"` + sysin.OptionTreeDemoListInp +} + +type ListRes struct { + form.PageRes + List []*sysin.OptionTreeDemoListModel `json:"list" dc:"数据列表"` +} + +// ViewReq 获取选项树表指定信息 +type ViewReq struct { + g.Meta `path:"/optionTreeDemo/view" method:"get" tags:"选项树表" summary:"获取选项树表指定信息"` + sysin.OptionTreeDemoViewInp +} + +type ViewRes struct { + *sysin.OptionTreeDemoViewModel +} + +// EditReq 修改/新增选项树表 +type EditReq struct { + g.Meta `path:"/optionTreeDemo/edit" method:"post" tags:"选项树表" summary:"修改/新增选项树表"` + sysin.OptionTreeDemoEditInp +} + +type EditRes struct{} + +// DeleteReq 删除选项树表 +type DeleteReq struct { + g.Meta `path:"/optionTreeDemo/delete" method:"post" tags:"选项树表" summary:"删除选项树表"` + sysin.OptionTreeDemoDeleteInp +} + +type DeleteRes struct{} + +// MaxSortReq 获取选项树表最大排序 +type MaxSortReq struct { + g.Meta `path:"/optionTreeDemo/maxSort" method:"get" tags:"选项树表" summary:"获取选项树表最大排序"` + sysin.OptionTreeDemoMaxSortInp +} + +type MaxSortRes struct { + *sysin.OptionTreeDemoMaxSortModel +} + +// TreeOptionReq 获取选项树表关系树选项 +type TreeOptionReq struct { + g.Meta `path:"/optionTreeDemo/treeOption" method:"get" tags:"选项树表" summary:"获取选项树表关系树选项"` +} + +type TreeOptionRes []tree.Node \ No newline at end of file diff --git a/server/api/admin/order/order.go b/server/api/admin/order/order.go new file mode 100644 index 0000000..425921f --- /dev/null +++ b/server/api/admin/order/order.go @@ -0,0 +1,93 @@ +// Package order +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package order + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/adminin" + "hotgo/internal/model/input/form" +) + +// AcceptRefundReq 受理申请退款 +type AcceptRefundReq struct { + g.Meta `path:"/order/acceptRefund" method:"post" tags:"充值订单" summary:"受理申请退款"` + adminin.OrderAcceptRefundInp +} + +type AcceptRefundRes struct { +} + +// ApplyRefundReq 申请退款 +type ApplyRefundReq struct { + g.Meta `path:"/order/applyRefund" method:"post" tags:"充值订单" summary:"申请退款"` + adminin.OrderApplyRefundInp +} + +type ApplyRefundRes struct { +} + +// CreateReq 创建充值订单 +type CreateReq struct { + g.Meta `path:"/order/create" method:"post" tags:"充值订单" summary:"创建充值订单"` + adminin.OrderCreateInp +} + +type CreateRes struct { + *adminin.OrderCreateModel +} + +// ListReq 查询充值订单列表 +type ListReq struct { + g.Meta `path:"/order/list" method:"get" tags:"充值订单" summary:"获取充值订单列表"` + adminin.OrderListInp +} + +type ListRes struct { + form.PageRes + List []*adminin.OrderListModel `json:"list" dc:"数据列表"` +} + +// ExportReq 导出充值订单列表 +type ExportReq struct { + g.Meta `path:"/order/export" method:"get" tags:"充值订单" summary:"导出充值订单列表"` + adminin.OrderListInp +} + +type ExportRes struct{} + +// ViewReq 获取充值订单指定信息 +type ViewReq struct { + g.Meta `path:"/order/view" method:"get" tags:"充值订单" summary:"获取充值订单指定信息"` + adminin.OrderViewInp +} + +type ViewRes struct { + *adminin.OrderViewModel +} + +// EditReq 修改/新增充值订单 +type EditReq struct { + g.Meta `path:"/order/edit" method:"post" tags:"充值订单" summary:"修改/新增充值订单"` + adminin.OrderEditInp +} + +type EditRes struct{} + +// DeleteReq 删除充值订单 +type DeleteReq struct { + g.Meta `path:"/order/delete" method:"post" tags:"充值订单" summary:"删除充值订单"` + adminin.OrderDeleteInp +} + +type DeleteRes struct{} + +// StatusReq 更新充值订单状态 +type StatusReq struct { + g.Meta `path:"/order/status" method:"post" tags:"充值订单" summary:"更新充值订单状态"` + adminin.OrderStatusInp +} + +type StatusRes struct{} diff --git a/server/api/admin/pay/refund.go b/server/api/admin/pay/refund.go new file mode 100644 index 0000000..dfbab3b --- /dev/null +++ b/server/api/admin/pay/refund.go @@ -0,0 +1,33 @@ +// Package pay +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.5.3 +// @AutoGenerate Date 2023-04-15 15:59:58 +package pay + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/payin" +) + +// RefundListReq 查询交易退款列表 +type RefundListReq struct { + g.Meta `path:"/payRefund/list" method:"get" tags:"交易退款" summary:"获取交易退款列表"` + payin.PayRefundListInp +} + +type RefundListRes struct { + form.PageRes + List []*payin.PayRefundListModel `json:"list" dc:"数据列表"` +} + +// RefundExportReq 导出交易退款列表 +type RefundExportReq struct { + g.Meta `path:"/payRefund/export" method:"get" tags:"交易退款" summary:"导出交易退款列表"` + payin.PayRefundListInp +} + +type RefundExportRes struct{} diff --git a/server/api/admin/post/post.go b/server/api/admin/post/post.go new file mode 100644 index 0000000..e0659a6 --- /dev/null +++ b/server/api/admin/post/post.go @@ -0,0 +1,67 @@ +// Package post +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package post + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/adminin" + "hotgo/internal/model/input/form" +) + +// EditReq 修改/新增岗位 +type EditReq struct { + g.Meta `path:"/post/edit" method:"post" tags:"岗位" summary:"修改/新增岗位"` + adminin.PostEditInp +} + +type EditRes struct{} + +// DeleteReq 删除岗位 +type DeleteReq struct { + g.Meta `path:"/post/delete" method:"post" tags:"岗位" summary:"删除岗位"` + adminin.PostDeleteInp +} + +type DeleteRes struct{} + +// MaxSortReq 最大排序 +type MaxSortReq struct { + g.Meta `path:"/post/maxSort" method:"get" tags:"岗位" summary:"岗位最大排序"` + adminin.PostMaxSortInp +} + +type MaxSortRes struct { + *adminin.PostMaxSortModel +} + +// ListReq 获取列表 +type ListReq struct { + g.Meta `path:"/post/list" method:"get" tags:"岗位" summary:"获取岗位列表"` + adminin.PostListInp +} + +type ListRes struct { + List []*adminin.PostListModel `json:"list" description:"数据列表"` + form.PageRes +} + +// ViewReq 获取指定信息 +type ViewReq struct { + g.Meta `path:"/post/view" method:"get" tags:"岗位" summary:"获取指定信息"` + adminin.PostViewInp +} + +type ViewRes struct { + *adminin.PostViewModel +} + +// StatusReq 更新状态 +type StatusReq struct { + g.Meta `path:"/post/status" method:"post" tags:"岗位" summary:"更新岗位状态"` + adminin.PostStatusInp +} + +type StatusRes struct{} diff --git a/server/api/admin/provinces/provinces.go b/server/api/admin/provinces/provinces.go new file mode 100644 index 0000000..d6bc9fd --- /dev/null +++ b/server/api/admin/provinces/provinces.go @@ -0,0 +1,115 @@ +// Package provinces +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package provinces + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +// ListReq 查询列表 +type ListReq struct { + g.Meta `path:"/provinces/list" method:"get" tags:"省市区" summary:"获取省市区列表"` + sysin.ProvincesListInp +} + +type ListRes struct { + List []*sysin.ProvincesListModel `json:"list" dc:"数据列表"` + form.PageRes +} + +// ViewReq 获取信息 +type ViewReq struct { + g.Meta `path:"/provinces/view" method:"get" tags:"省市区" summary:"获取指定信息"` + sysin.ProvincesViewInp +} + +type ViewRes struct { + *sysin.ProvincesViewModel +} + +// EditReq 修改/新增 +type EditReq struct { + g.Meta `path:"/provinces/edit" method:"post" tags:"省市区" summary:"修改/新增省市区"` + sysin.ProvincesEditInp +} + +type EditRes struct{} + +// DeleteReq 删除 +type DeleteReq struct { + g.Meta `path:"/provinces/delete" method:"post" tags:"省市区" summary:"删除省市区"` + sysin.ProvincesDeleteInp +} + +type DeleteRes struct{} + +// MaxSortReq 最大排序 +type MaxSortReq struct { + g.Meta `path:"/provinces/maxSort" method:"get" tags:"省市区" summary:"省市区最大排序"` + sysin.ProvincesMaxSortInp +} + +type MaxSortRes struct { + *sysin.ProvincesMaxSortModel +} + +// StatusReq 更新状态 +type StatusReq struct { + g.Meta `path:"/provinces/status" method:"post" tags:"省市区" summary:"更新省市区状态"` + sysin.ProvincesStatusInp +} + +type StatusRes struct{} + +// TreeReq 关系树选项列表 +type TreeReq struct { + g.Meta `path:"/provinces/tree" tags:"省市区" method:"get" summary:"省市区关系树选项列表"` +} + +type TreeRes struct { + List []*sysin.ProvincesTree `json:"list" dc:"数据列表"` +} + +// ChildrenListReq 获取省市区下级列表 +type ChildrenListReq struct { + g.Meta `path:"/provinces/childrenList" method:"get" tags:"省市区" summary:"获取省市区下级列表"` + sysin.ProvincesChildrenListInp +} + +type ChildrenListRes struct { + List []*sysin.ProvincesChildrenListModel `json:"list" dc:"数据列表"` + form.PageRes +} + +// UniqueIdReq 地区ID是否唯一 +type UniqueIdReq struct { + g.Meta `path:"/provinces/uniqueId" method:"get" tags:"省市区" summary:"地区ID是否唯一"` + sysin.ProvincesUniqueIdInp +} + +type UniqueIdRes struct { + *sysin.ProvincesUniqueIdModel +} + +// SelectReq 省市区选项 +type SelectReq struct { + g.Meta `path:"/provinces/select" method:"get" tags:"省市区" summary:"省市区选项"` + sysin.ProvincesSelectInp +} + +type SelectRes struct { + *sysin.ProvincesSelectModel +} + +// CityLabelReq 获取指定城市标签 +type CityLabelReq struct { + g.Meta `path:"/provinces/cityLabel" method:"get" tags:"省市区" summary:"获取指定城市标签" ` + sysin.ProvincesCityLabelInp +} + +type CityLabelRes sysin.ProvincesCityLabelModel diff --git a/server/api/admin/role/role.go b/server/api/admin/role/role.go new file mode 100644 index 0000000..bbae5a1 --- /dev/null +++ b/server/api/admin/role/role.go @@ -0,0 +1,82 @@ +// Package role +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package role + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/consts" + "hotgo/internal/model/input/adminin" + "hotgo/internal/model/input/form" +) + +// ListReq 查询列表 +type ListReq struct { + g.Meta `path:"/role/list" method:"get" tags:"角色" summary:"获取角色列表"` + adminin.RoleListInp +} + +type ListRes struct { + *adminin.RoleListModel + form.PageRes +} + +// DynamicReq 动态路由 +type DynamicReq struct { + g.Meta `path:"/role/dynamic" method:"get" tags:"角色" summary:"获取动态路由" description:"获取登录用户动态路由"` +} + +type DynamicRes struct { + List []*adminin.MenuRoute `json:"list" description:"数据列表"` +} + +type UpdatePermissionsReq struct { + g.Meta `path:"/role/updatePermissions" method:"post" tags:"角色" summary:"编辑角色菜单权限"` + adminin.UpdatePermissionsInp +} + +type UpdatePermissionsRes struct{} + +type GetPermissionsReq struct { + g.Meta `path:"/role/getPermissions" method:"get" tags:"角色" summary:"获取指定角色权限"` + adminin.GetPermissionsInp +} + +type GetPermissionsRes struct { + *adminin.GetPermissionsModel +} + +// EditReq 修改/新增角色 +type EditReq struct { + g.Meta `path:"/role/edit" method:"post" tags:"角色" summary:"修改/新增角色"` + adminin.RoleEditInp +} + +type EditRes struct{} + +// DeleteReq 删除角色 +type DeleteReq struct { + g.Meta `path:"/role/delete" method:"post" tags:"角色" summary:"删除角色"` + adminin.RoleDeleteInp +} + +type DeleteRes struct{} + +// DataScopeSelectReq 获取数据权限选项 +type DataScopeSelectReq struct { + g.Meta `path:"/role/dataScope/select" method:"get" tags:"角色" summary:"获取数据权限选项"` +} + +type DataScopeSelectRes struct { + List []consts.GroupScopeSelect `json:"list" dc:"数据选项"` +} + +// DataScopeEditReq 修改指定角色的数据权限 +type DataScopeEditReq struct { + g.Meta `path:"/role/dataScope/edit" method:"post" tags:"角色" summary:"修改指定角色的数据权限"` + adminin.DataScopeEditInp +} + +type DataScopeEditRes struct{} diff --git a/server/api/admin/servelicense/servelicense.go b/server/api/admin/servelicense/servelicense.go new file mode 100644 index 0000000..78c7f20 --- /dev/null +++ b/server/api/admin/servelicense/servelicense.go @@ -0,0 +1,74 @@ +// Package servelicense +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.7.6 +package servelicense + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +// ListReq 查询服务许可证列表 +type ListReq struct { + g.Meta `path:"/serveLicense/list" method:"get" tags:"服务许可证" summary:"获取服务许可证列表"` + sysin.ServeLicenseListInp +} + +type ListRes struct { + form.PageRes + List []*sysin.ServeLicenseListModel `json:"list" dc:"数据列表"` +} + +// ExportReq 导出服务许可证列表 +type ExportReq struct { + g.Meta `path:"/serveLicense/export" method:"get" tags:"服务许可证" summary:"导出服务许可证列表"` + sysin.ServeLicenseListInp +} + +type ExportRes struct{} + +// ViewReq 获取服务许可证指定信息 +type ViewReq struct { + g.Meta `path:"/serveLicense/view" method:"get" tags:"服务许可证" summary:"获取服务许可证指定信息"` + sysin.ServeLicenseViewInp +} + +type ViewRes struct { + *sysin.ServeLicenseViewModel +} + +// EditReq 修改/新增服务许可证 +type EditReq struct { + g.Meta `path:"/serveLicense/edit" method:"post" tags:"服务许可证" summary:"修改/新增服务许可证"` + sysin.ServeLicenseEditInp +} + +type EditRes struct{} + +// DeleteReq 删除服务许可证 +type DeleteReq struct { + g.Meta `path:"/serveLicense/delete" method:"post" tags:"服务许可证" summary:"删除服务许可证"` + sysin.ServeLicenseDeleteInp +} + +type DeleteRes struct{} + +// StatusReq 更新服务许可证状态 +type StatusReq struct { + g.Meta `path:"/serveLicense/status" method:"post" tags:"服务许可证" summary:"更新服务许可证状态"` + sysin.ServeLicenseStatusInp +} + +type StatusRes struct{} + +// AssignRouterReq 分配服务许可证路由 +type AssignRouterReq struct { + g.Meta `path:"/serveLicense/assignRouter" method:"post" tags:"服务许可证" summary:"分配服务许可证路由"` + sysin.ServeLicenseAssignRouterInp +} + +type AssignRouterRes struct{} diff --git a/server/api/admin/servelog/servelog.go b/server/api/admin/servelog/servelog.go new file mode 100644 index 0000000..d250cd1 --- /dev/null +++ b/server/api/admin/servelog/servelog.go @@ -0,0 +1,49 @@ +// Package servelog +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package servelog + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +// ListReq 查询服务日志列表 +type ListReq struct { + g.Meta `path:"/serveLog/list" method:"get" tags:"服务日志" summary:"获取服务日志列表"` + sysin.ServeLogListInp +} + +type ListRes struct { + form.PageRes + List []*sysin.ServeLogListModel `json:"list" dc:"数据列表"` +} + +// ExportReq 导出服务日志列表 +type ExportReq struct { + g.Meta `path:"/serveLog/export" method:"get" tags:"服务日志" summary:"导出服务日志列表"` + sysin.ServeLogListInp +} + +type ExportRes struct{} + +// ViewReq 获取服务日志指定信息 +type ViewReq struct { + g.Meta `path:"/serveLog/view" method:"get" tags:"服务日志" summary:"获取服务日志指定信息"` + sysin.ServeLogViewInp +} + +type ViewRes struct { + *sysin.ServeLogViewModel +} + +// DeleteReq 删除服务日志 +type DeleteReq struct { + g.Meta `path:"/serveLog/delete" method:"post" tags:"服务日志" summary:"删除服务日志"` + sysin.ServeLogDeleteInp +} + +type DeleteRes struct{} diff --git a/server/api/admin/smslog/smslog.go b/server/api/admin/smslog/smslog.go new file mode 100644 index 0000000..ed97c2d --- /dev/null +++ b/server/api/admin/smslog/smslog.go @@ -0,0 +1,41 @@ +// Package smslog +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package smslog + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" +) + +// ListReq 查询列表 +type ListReq struct { + g.Meta `path:"/smsLog/list" method:"get" tags:"短信" summary:"获取短信记录列表"` + sysin.SmsLogListInp +} + +type ListRes struct { + List []*sysin.SmsLogListModel `json:"list" dc:"数据列表"` + form.PageRes +} + +// ViewReq 获取指定信息 +type ViewReq struct { + g.Meta `path:"/smsLog/view" method:"get" tags:"短信" summary:"获取指定短信信息"` + sysin.SmsLogViewInp +} + +type ViewRes struct { + *sysin.SmsLogViewModel +} + +// DeleteReq 删除 +type DeleteReq struct { + g.Meta `path:"/smsLog/delete" method:"post" tags:"短信" summary:"删除短信记录"` + sysin.SmsLogDeleteInp +} + +type DeleteRes struct{} diff --git a/server/api/admin/testcategory/testcategory.go b/server/api/admin/testcategory/testcategory.go new file mode 100644 index 0000000..7a8eca3 --- /dev/null +++ b/server/api/admin/testcategory/testcategory.go @@ -0,0 +1,69 @@ +// Package testcategory +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2024 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.15.7 +package testcategory + +import ( + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" + + "github.com/gogf/gf/v2/frame/g" +) + +// ListReq 查询测试分类列表 +type ListReq struct { + g.Meta `path:"/testCategory/list" method:"get" tags:"测试分类" summary:"获取测试分类列表"` + sysin.TestCategoryListInp +} + +type ListRes struct { + form.PageRes + List []*sysin.TestCategoryListModel `json:"list" dc:"数据列表"` +} + +// ViewReq 获取测试分类指定信息 +type ViewReq struct { + g.Meta `path:"/testCategory/view" method:"get" tags:"测试分类" summary:"获取测试分类指定信息"` + sysin.TestCategoryViewInp +} + +type ViewRes struct { + *sysin.TestCategoryViewModel +} + +// EditReq 修改/新增测试分类 +type EditReq struct { + g.Meta `path:"/testCategory/edit" method:"post" tags:"测试分类" summary:"修改/新增测试分类"` + sysin.TestCategoryEditInp +} + +type EditRes struct{} + +// DeleteReq 删除测试分类 +type DeleteReq struct { + g.Meta `path:"/testCategory/delete" method:"post" tags:"测试分类" summary:"删除测试分类"` + sysin.TestCategoryDeleteInp +} + +type DeleteRes struct{} + +// MaxSortReq 获取测试分类最大排序 +type MaxSortReq struct { + g.Meta `path:"/testCategory/maxSort" method:"get" tags:"测试分类" summary:"获取测试分类最大排序"` + sysin.TestCategoryMaxSortInp +} + +type MaxSortRes struct { + *sysin.TestCategoryMaxSortModel +} + +// StatusReq 更新测试分类状态 +type StatusReq struct { + g.Meta `path:"/testCategory/status" method:"post" tags:"测试分类" summary:"更新测试分类状态"` + sysin.TestCategoryStatusInp +} + +type StatusRes struct{} diff --git a/server/api/api/member/member.go b/server/api/api/member/member.go new file mode 100644 index 0000000..d335001 --- /dev/null +++ b/server/api/api/member/member.go @@ -0,0 +1,15 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package member + +import ( + "context" + + "hotgo/api/api/member/v1" +) + +type IMemberV1 interface { + GetIdByCode(ctx context.Context, req *v1.GetIdByCodeReq) (res *v1.GetIdByCodeRes, err error) +} diff --git a/server/api/api/member/v1/member.go b/server/api/api/member/v1/member.go new file mode 100644 index 0000000..0ed4bb6 --- /dev/null +++ b/server/api/api/member/v1/member.go @@ -0,0 +1,16 @@ +// Package member +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package v1 + +import "github.com/gogf/gf/v2/frame/g" + +// GetIdByCodeReq 通过邀请码获取用户ID +type GetIdByCodeReq struct { + g.Meta `path:"/member/getIdByCode" method:"post" tags:"用户" summary:"通过邀请码获取用户ID"` + Code string `json:"code" dc:"邀请码"` +} + +type GetIdByCodeRes struct{} diff --git a/server/api/api/pay/pay.go b/server/api/api/pay/pay.go new file mode 100644 index 0000000..654099c --- /dev/null +++ b/server/api/api/pay/pay.go @@ -0,0 +1,17 @@ +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package pay + +import ( + "context" + + "hotgo/api/api/pay/v1" +) + +type IPayV1 interface { + NotifyAliPay(ctx context.Context, req *v1.NotifyAliPayReq) (res *v1.NotifyAliPayRes, err error) + NotifyWxPay(ctx context.Context, req *v1.NotifyWxPayReq) (res *v1.NotifyWxPayRes, err error) + NotifyQQPay(ctx context.Context, req *v1.NotifyQQPayReq) (res *v1.NotifyQQPayRes, err error) +} diff --git a/server/api/api/pay/v1/notify.go b/server/api/api/pay/v1/notify.go new file mode 100644 index 0000000..8ac343b --- /dev/null +++ b/server/api/api/pay/v1/notify.go @@ -0,0 +1,41 @@ +// Package pay +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package v1 + +import ( + "hotgo/internal/model/input/payin" + + "github.com/gogf/gf/v2/frame/g" +) + +// NotifyAliPayReq 支付宝回调 +type NotifyAliPayReq struct { + g.Meta `path:"/pay/notify/alipay" method:"post" tags:"支付异步通知" summary:"支付宝回调"` +} + +type NotifyAliPayRes struct { + g.Meta `mime:"text/html" type:"string" example:""` + *payin.PayNotifyModel +} + +// NotifyWxPayReq 微信支付回调 +type NotifyWxPayReq struct { + g.Meta `path:"/pay/notify/wxpay" method:"post" tags:"支付异步通知" summary:"微信支付回调"` +} + +type NotifyWxPayRes struct { + *payin.PayNotifyModel +} + +// NotifyQQPayReq QQ支付回调 +type NotifyQQPayReq struct { + g.Meta `path:"/pay/notify/qqpay" method:"post" tags:"支付异步通知" summary:"QQ支付回调"` +} + +type NotifyQQPayRes struct { + g.Meta `mime:"text/xml" type:"string"` + *payin.PayNotifyModel +} diff --git a/server/api/home/base/site.go b/server/api/home/base/site.go new file mode 100644 index 0000000..d70f5ba --- /dev/null +++ b/server/api/home/base/site.go @@ -0,0 +1,16 @@ +// Package base +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package base + +import "github.com/gogf/gf/v2/frame/g" + +type SiteIndexReq struct { + g.Meta `path:"/" method:"get" summary:"首页" tags:"首页"` +} + +type SiteIndexRes struct { + g.Meta `mime:"text/html" type:"string" example:""` +} diff --git a/server/api/servmsg/auth.go b/server/api/servmsg/auth.go new file mode 100644 index 0000000..e071144 --- /dev/null +++ b/server/api/servmsg/auth.go @@ -0,0 +1,21 @@ +// Package servmsg +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package servmsg + +import ( + "hotgo/internal/library/network/tcp" + "hotgo/internal/model/input/servmsgin" +) + +// AuthSummaryReq 授权信息 +type AuthSummaryReq struct { +} + +// AuthSummaryRes 响应授权信息 +type AuthSummaryRes struct { + tcp.ServerRes + Data *servmsgin.AuthSummaryModel `json:"data,omitempty" description:"数据集"` +} diff --git a/server/api/servmsg/cron.go b/server/api/servmsg/cron.go new file mode 100644 index 0000000..ab3eafa --- /dev/null +++ b/server/api/servmsg/cron.go @@ -0,0 +1,57 @@ +// Package servmsg +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package servmsg + +import ( + "hotgo/internal/library/network/tcp" + "hotgo/internal/model/input/sysin" +) + +// CronDeleteReq 删除任务 +type CronDeleteReq struct { + *sysin.CronDeleteInp +} + +type CronDeleteRes struct { + tcp.ServerRes +} + +// CronEditReq 编辑任务 +type CronEditReq struct { + *sysin.CronEditInp +} + +type CronEditRes struct { + tcp.ServerRes +} + +// CronStatusReq 修改任务状态 +type CronStatusReq struct { + *sysin.CronStatusInp +} + +type CronStatusRes struct { + tcp.ServerRes +} + +// CronOnlineExecReq 在线执行 +type CronOnlineExecReq struct { + *sysin.OnlineExecInp +} + +type CronOnlineExecRes struct { + tcp.ServerRes +} + +// CronDispatchLogReq 调度日志 +type CronDispatchLogReq struct { + *sysin.DispatchLogInp +} + +type CronDispatchLogRes struct { + tcp.ServerRes + *sysin.DispatchLogModel +} diff --git a/server/api/servmsg/example.go b/server/api/servmsg/example.go new file mode 100644 index 0000000..c469ebf --- /dev/null +++ b/server/api/servmsg/example.go @@ -0,0 +1,33 @@ +// Package servmsg +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package servmsg + +import ( + "hotgo/internal/library/network/tcp" + "hotgo/internal/model/input/servmsgin" +) + +// 一些例子. + +// ExampleHelloReq 一个tcp请求例子 +type ExampleHelloReq struct { + Name string `json:"name" description:"名字"` +} + +type ExampleHelloRes struct { + tcp.ServerRes + Data *servmsgin.ExampleHelloModel `json:"data,omitempty" description:"数据集"` +} + +// ExampleRPCHelloReq 一个rpc请求例子 +type ExampleRPCHelloReq struct { + Name string `json:"name" description:"名字"` +} + +type ExampleRPCHelloRes struct { + tcp.ServerRes + Data *servmsgin.ExampleHelloModel `json:"data,omitempty" description:"数据集"` +} diff --git a/server/api/websocket/base/send.go b/server/api/websocket/base/send.go new file mode 100644 index 0000000..b67d70b --- /dev/null +++ b/server/api/websocket/base/send.go @@ -0,0 +1,20 @@ +// Package base +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package base + +import ( + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/model/input/websocketin" +) + +// SendToTagReq 发送标签消息 +type SendToTagReq struct { + g.Meta `path:"/send/toTag" method:"post" tags:"WebSocket" summary:"发送标签消息"` + websocketin.SendToTagInp +} + +type SendToTagRes struct { +} diff --git a/server/go.mod b/server/go.mod new file mode 100644 index 0000000..25bab3f --- /dev/null +++ b/server/go.mod @@ -0,0 +1,162 @@ +module hotgo + +go 1.24.4 + +require ( + github.com/IBM/sarama v1.45.2 + github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.7 + github.com/alibabacloud-go/dysmsapi-20170525/v3 v3.0.6 + github.com/alibabacloud-go/tea v1.3.9 + github.com/alibabacloud-go/tea-utils/v2 v2.0.7 + github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible + github.com/apache/rocketmq-client-go/v2 v2.1.2 + github.com/casbin/casbin/v2 v2.108.0 + github.com/forgoer/openssl v1.6.1 + github.com/go-pay/crypto v0.0.1 + github.com/go-pay/gopay v1.5.114 + github.com/go-pay/smap v0.0.2 + github.com/gogf/gf/contrib/drivers/mysql/v2 v2.10.0 + github.com/gogf/gf/contrib/drivers/pgsql/v2 v2.10.0 + github.com/gogf/gf/contrib/nosql/redis/v2 v2.10.0 + github.com/gogf/gf/contrib/trace/jaeger/v2 v2.7.4 + github.com/gogf/gf/v2 v2.10.0 + github.com/gogf/selfupdate v0.0.0-20231215043001-5c48c528462f + github.com/golang-jwt/jwt/v5 v5.2.2 + github.com/gorilla/websocket v1.5.3 + github.com/kayon/iploc v0.0.0-20200312105652-bda3e968a794 + github.com/minio/minio-go/v7 v7.0.94 + github.com/mojocn/base64Captcha v1.3.8 + github.com/olekukonko/tablewriter v1.1.0 + github.com/qiniu/go-sdk/v7 v7.25.4 + github.com/schollz/progressbar/v3 v3.18.0 + github.com/shirou/gopsutil/v3 v3.24.5 + github.com/silenceper/wechat/v2 v2.1.9 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1202 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.1200 + github.com/tencentyun/cos-go-sdk-v5 v0.7.66 + github.com/ufilesdk-dev/ufile-gosdk v1.0.6 + github.com/xuri/excelize/v2 v2.9.1 + go.opentelemetry.io/otel v1.38.0 + golang.org/x/mod v0.26.0 + golang.org/x/net v0.43.0 + golang.org/x/tools v0.35.0 + gopkg.in/yaml.v3 v3.0.1 +) + +require ( + aead.dev/minisign v0.2.0 // indirect + github.com/BurntSushi/toml v1.5.0 // indirect + github.com/alex-ant/gomath v0.0.0-20160516115720-89013a210a82 // indirect + github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 // indirect + github.com/alibabacloud-go/debug v1.0.1 // indirect + github.com/alibabacloud-go/endpoint-util v1.1.0 // indirect + github.com/alibabacloud-go/openapi-util v0.1.0 // indirect + github.com/alibabacloud-go/tea-utils v1.3.1 // indirect + github.com/aliyun/credentials-go v1.4.5 // indirect + github.com/bmatcuk/doublestar/v4 v4.6.1 // indirect + github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d // indirect + github.com/casbin/govaluate v1.3.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/clbanning/mxj v1.8.4 // indirect + github.com/clbanning/mxj/v2 v2.7.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/eapache/go-resiliency v1.7.0 // indirect + github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3 // indirect + github.com/eapache/queue v1.1.0 // indirect + github.com/emirpasic/gods v1.18.1 // indirect + github.com/emirpasic/gods/v2 v2.0.0-alpha // indirect + github.com/fatih/color v1.18.0 // indirect + github.com/fatih/structs v1.1.0 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect + github.com/gammazero/toposort v0.1.1 // indirect + github.com/go-ini/ini v1.67.0 // indirect + github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-pay/errgroup v0.0.3 // indirect + github.com/go-pay/util v0.0.4 // indirect + github.com/go-pay/xlog v0.0.3 // indirect + github.com/go-pay/xtime v0.0.2 // indirect + github.com/go-redis/redis/v8 v8.11.5 // indirect + github.com/go-sql-driver/mysql v1.7.1 // indirect + github.com/goccy/go-json v0.10.5 // indirect + github.com/gofrs/flock v0.8.1 // indirect + github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect + github.com/golang/mock v1.4.4 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/go-querystring v1.0.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/grokify/html-strip-tags-go v0.1.0 // indirect + github.com/hashicorp/errwrap v1.0.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-uuid v1.0.3 // indirect + github.com/jcmturner/aescts/v2 v2.0.0 // indirect + github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect + github.com/jcmturner/gofork v1.7.6 // indirect + github.com/jcmturner/gokrb5/v8 v8.4.4 // indirect + github.com/jcmturner/rpc/v2 v2.0.3 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.18.0 // indirect + github.com/klauspost/cpuid/v2 v2.2.10 // indirect + github.com/lib/pq v1.10.9 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/magiconair/properties v1.8.10 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/minio/crc64nvme v1.0.1 // indirect + github.com/minio/md5-simd v1.1.2 // indirect + github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect + github.com/mitchellh/mapstructure v1.4.3 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/mozillazg/go-httpheader v0.2.1 // indirect + github.com/olekukonko/errors v1.1.0 // indirect + github.com/olekukonko/ll v0.0.9 // indirect + github.com/patrickmn/go-cache v2.1.0+incompatible // indirect + github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c // indirect + github.com/pierrec/lz4/v4 v4.1.22 // indirect + github.com/pkg/errors v0.8.1 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/redis/go-redis/v9 v9.12.1 // indirect + github.com/richardlehane/mscfb v1.0.4 // indirect + github.com/richardlehane/msoleps v1.0.4 // indirect + github.com/rivo/uniseg v0.4.7 // indirect + github.com/rs/xid v1.6.0 // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/sirupsen/logrus v1.9.0 // indirect + github.com/spf13/cast v1.4.1 // indirect + github.com/tidwall/gjson v1.14.1 // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/pretty v1.2.0 // indirect + github.com/tiendc/go-deepcopy v1.6.0 // indirect + github.com/tinylib/msgp v1.3.0 // indirect + github.com/tjfoc/gmsm v1.4.1 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/xuri/efp v0.0.1 // indirect + github.com/xuri/nfp v0.0.1 // indirect + github.com/yusufpapurcu/wmi v1.2.4 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/otel/exporters/jaeger v1.14.0 // indirect + go.opentelemetry.io/otel/metric v1.38.0 // indirect + go.opentelemetry.io/otel/sdk v1.38.0 // indirect + go.opentelemetry.io/otel/trace v1.38.0 // indirect + go.uber.org/atomic v1.5.1 // indirect + golang.org/x/crypto v0.41.0 // indirect + golang.org/x/image v0.25.0 // indirect + golang.org/x/lint v0.0.0-20190930215403-16217165b5de // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/term v0.34.0 // indirect + golang.org/x/text v0.28.0 // indirect + golang.org/x/time v0.12.0 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect + modernc.org/fileutil v1.0.0 // indirect + stathat.com/c/consistent v1.0.0 // indirect +) diff --git a/server/go.sum b/server/go.sum new file mode 100644 index 0000000..ce59b74 --- /dev/null +++ b/server/go.sum @@ -0,0 +1,700 @@ +aead.dev/minisign v0.2.0 h1:kAWrq/hBRu4AARY6AlciO83xhNnW9UaC8YipS2uhLPk= +aead.dev/minisign v0.2.0/go.mod h1:zdq6LdSd9TbuSxchxwhpA9zEb9YXcVGoE8JakuiGaIQ= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= +github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/IBM/sarama v1.45.2 h1:8m8LcMCu3REcwpa7fCP6v2fuPuzVwXDAM2DOv3CBrKw= +github.com/IBM/sarama v1.45.2/go.mod h1:ppaoTcVdGv186/z6MEKsMm70A5fwJfRTpstI37kVn3Y= +github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM= +github.com/alex-ant/gomath v0.0.0-20160516115720-89013a210a82 h1:7dONQ3WNZ1zy960TmkxJPuwoolZwL7xKtpcM04MBnt4= +github.com/alex-ant/gomath v0.0.0-20160516115720-89013a210a82/go.mod h1:nLnM0KdK1CmygvjpDUO6m1TjSsiQtL61juhNsvV/JVI= +github.com/alibabacloud-go/alibabacloud-gateway-pop v0.0.6 h1:eIf+iGJxdU4U9ypaUfbtOWCsZSbTb8AUHvyPrxu6mAA= +github.com/alibabacloud-go/alibabacloud-gateway-pop v0.0.6/go.mod h1:4EUIoxs/do24zMOGGqYVWgw0s9NtiylnJglOeEB5UJo= +github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.4/go.mod h1:sCavSAvdzOjul4cEqeVtvlSaSScfNsTQ+46HwlTL1hc= +github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 h1:zE8vH9C7JiZLNJJQ5OwjU9mSi4T9ef9u3BURT6LCLC8= +github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5/go.mod h1:tWnyE9AjF8J8qqLk645oUmVUnFybApTQWklQmi5tY6g= +github.com/alibabacloud-go/darabonba-array v0.1.0 h1:vR8s7b1fWAQIjEjWnuF0JiKsCvclSRTfDzZHTYqfufY= +github.com/alibabacloud-go/darabonba-array v0.1.0/go.mod h1:BLKxr0brnggqOJPqT09DFJ8g3fsDshapUD3C3aOEFaI= +github.com/alibabacloud-go/darabonba-encode-util v0.0.2 h1:1uJGrbsGEVqWcWxrS9MyC2NG0Ax+GpOM5gtupki31XE= +github.com/alibabacloud-go/darabonba-encode-util v0.0.2/go.mod h1:JiW9higWHYXm7F4PKuMgEUETNZasrDM6vqVr/Can7H8= +github.com/alibabacloud-go/darabonba-map v0.0.2 h1:qvPnGB4+dJbJIxOOfawxzF3hzMnIpjmafa0qOTp6udc= +github.com/alibabacloud-go/darabonba-map v0.0.2/go.mod h1:28AJaX8FOE/ym8OUFWga+MtEzBunJwQGceGQlvaPGPc= +github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.2/go.mod h1:5JHVmnHvGzR2wNdgaW1zDLQG8kOC4Uec8ubkMogW7OQ= +github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.7 h1:ASXSBga98QrGMxbIThCD6jAti09gedLfvry6yJtsoBE= +github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.7/go.mod h1:TBpgqm3XofZz2LCYjZhektGPU7ArEgascyzbm4SjFo4= +github.com/alibabacloud-go/darabonba-signature-util v0.0.7 h1:UzCnKvsjPFzApvODDNEYqBHMFt1w98wC7FOo0InLyxg= +github.com/alibabacloud-go/darabonba-signature-util v0.0.7/go.mod h1:oUzCYV2fcCH797xKdL6BDH8ADIHlzrtKVjeRtunBNTQ= +github.com/alibabacloud-go/darabonba-string v1.0.2 h1:E714wms5ibdzCqGeYJ9JCFywE5nDyvIXIIQbZVFkkqo= +github.com/alibabacloud-go/darabonba-string v1.0.2/go.mod h1:93cTfV3vuPhhEwGGpKKqhVW4jLe7tDpo3LUM0i0g6mA= +github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68/go.mod h1:6pb/Qy8c+lqua8cFpEy7g39NRRqOWc3rOwAy8m5Y2BY= +github.com/alibabacloud-go/debug v1.0.0/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/qlH6IHTI4QyICOc= +github.com/alibabacloud-go/debug v1.0.1 h1:MsW9SmUtbb1Fnt3ieC6NNZi6aEwrXfDksD4QA6GSbPg= +github.com/alibabacloud-go/debug v1.0.1/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/qlH6IHTI4QyICOc= +github.com/alibabacloud-go/dysmsapi-20170525/v3 v3.0.6 h1:UTl97mt2qfavxveqCkaVg4tKaZUPzA9RKbFIRaIdtdg= +github.com/alibabacloud-go/dysmsapi-20170525/v3 v3.0.6/go.mod h1:UWpcGrWwTbES9QW7OQ7xDffukMJ/l7lzioixIz8+lgY= +github.com/alibabacloud-go/endpoint-util v1.1.0 h1:r/4D3VSw888XGaeNpP994zDUaxdgTSHBbVfZlzf6b5Q= +github.com/alibabacloud-go/endpoint-util v1.1.0/go.mod h1:O5FuCALmCKs2Ff7JFJMudHs0I5EBgecXXxZRyswlEjE= +github.com/alibabacloud-go/openapi-util v0.0.11/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws= +github.com/alibabacloud-go/openapi-util v0.1.0 h1:0z75cIULkDrdEhkLWgi9tnLe+KhAFE/r5Pb3312/eAY= +github.com/alibabacloud-go/openapi-util v0.1.0/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws= +github.com/alibabacloud-go/tea v1.1.0/go.mod h1:IkGyUSX4Ba1V+k4pCtJUc6jDpZLFph9QMy2VUPTwukg= +github.com/alibabacloud-go/tea v1.1.7/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4= +github.com/alibabacloud-go/tea v1.1.8/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4= +github.com/alibabacloud-go/tea v1.1.11/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4= +github.com/alibabacloud-go/tea v1.1.17/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A= +github.com/alibabacloud-go/tea v1.1.19/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A= +github.com/alibabacloud-go/tea v1.1.20/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A= +github.com/alibabacloud-go/tea v1.2.2/go.mod h1:CF3vOzEMAG+bR4WOql8gc2G9H3EkH3ZLAQdpmpXMgwk= +github.com/alibabacloud-go/tea v1.3.8/go.mod h1:A560v/JTQ1n5zklt2BEpurJzZTI8TUT+Psg2drWlxRg= +github.com/alibabacloud-go/tea v1.3.9 h1:bjgt1bvdY780vz/17iWNNtbXl4A77HWntWMeaUF3So0= +github.com/alibabacloud-go/tea v1.3.9/go.mod h1:A560v/JTQ1n5zklt2BEpurJzZTI8TUT+Psg2drWlxRg= +github.com/alibabacloud-go/tea-utils v1.3.1 h1:iWQeRzRheqCMuiF3+XkfybB3kTgUXkXX+JMrqfLeB2I= +github.com/alibabacloud-go/tea-utils v1.3.1/go.mod h1:EI/o33aBfj3hETm4RLiAxF/ThQdSngxrpF8rKUDJjPE= +github.com/alibabacloud-go/tea-utils/v2 v2.0.0/go.mod h1:U5MTY10WwlquGPS34DOeomUGBB0gXbLueiq5Trwu0C4= +github.com/alibabacloud-go/tea-utils/v2 v2.0.3/go.mod h1:sj1PbjPodAVTqGTA3olprfeeqqmwD0A5OQz94o9EuXQ= +github.com/alibabacloud-go/tea-utils/v2 v2.0.5/go.mod h1:dL6vbUT35E4F4bFTHL845eUloqaerYBYPsdWR2/jhe4= +github.com/alibabacloud-go/tea-utils/v2 v2.0.7 h1:WDx5qW3Xa5ZgJ1c8NfqJkF6w+AU5wB8835UdhPr6Ax0= +github.com/alibabacloud-go/tea-utils/v2 v2.0.7/go.mod h1:qxn986l+q33J5VkialKMqT/TTs3E+U9MJpd001iWQ9I= +github.com/alibabacloud-go/tea-xml v1.1.2/go.mod h1:Rq08vgCcCAjHyRi/M7xlHKUykZCEtyBy9+DPF6GgEu8= +github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZpUGpz5+4FfNmIU+FmZg2P3Xaj2v2bfNWmk= +github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= +github.com/alicebob/miniredis/v2 v2.30.0 h1:uA3uhDbCxfO9+DI/DuGeAMr9qI+noVWwGPNTFuKID5M= +github.com/alicebob/miniredis/v2 v2.30.0/go.mod h1:84TWKZlxYkfgMucPBf5SOQBYJceZeQRFIaQgNMiCX6Q= +github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible h1:8psS8a+wKfiLt1iVDX79F7Y6wUM49Lcha2FMXt4UM8g= +github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= +github.com/aliyun/credentials-go v1.1.2/go.mod h1:ozcZaMR5kLM7pwtCMEpVmQ242suV6qTJya2bDq4X1Tw= +github.com/aliyun/credentials-go v1.3.1/go.mod h1:8jKYhQuDawt8x2+fusqa1Y6mPxemTsBEN04dgcAcYz0= +github.com/aliyun/credentials-go v1.3.6/go.mod h1:1LxUuX7L5YrZUWzBrRyk0SwSdH4OmPrib8NVePL3fxM= +github.com/aliyun/credentials-go v1.4.5 h1:O76WYKgdy1oQYYiJkERjlA2dxGuvLRrzuO2ScrtGWSk= +github.com/aliyun/credentials-go v1.4.5/go.mod h1:Jm6d+xIgwJVLVWT561vy67ZRP4lPTQxMbEYRuT2Ti1U= +github.com/apache/rocketmq-client-go/v2 v2.1.2 h1:yt73olKe5N6894Dbm+ojRf/JPiP0cxfDNNffKwhpJVg= +github.com/apache/rocketmq-client-go/v2 v2.1.2/go.mod h1:6I6vgxHR3hzrvn+6n/4mrhS+UTulzK/X9LB2Vk1U5gE= +github.com/bmatcuk/doublestar/v4 v4.6.1 h1:FH9SifrbvJhnlQpztAx++wlkk70QBf0iBWDwNy7PA4I= +github.com/bmatcuk/doublestar/v4 v4.6.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= +github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d h1:pVrfxiGfwelyab6n21ZBkbkmbevaf+WvMIiR7sr97hw= +github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= +github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= +github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= +github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= +github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= +github.com/casbin/casbin/v2 v2.108.0 h1:aMc3I81wfLpQe/uzMdElB1OBhEmPZoWMPb2nfEaKygY= +github.com/casbin/casbin/v2 v2.108.0/go.mod h1:Ee33aqGrmES+GNL17L0h9X28wXuo829wnNUnS0edAco= +github.com/casbin/govaluate v1.3.0 h1:VA0eSY0M2lA86dYd5kPPuNZMUD9QkWnOCnavGrw9myc= +github.com/casbin/govaluate v1.3.0/go.mod h1:G/UnbIjZk/0uMNaLwZZmFQrR72tYRZWQkO70si/iR7A= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chengxilo/virtualterm v1.0.4 h1:Z6IpERbRVlfB8WkOmtbHiDbBANU7cimRIof7mk9/PwM= +github.com/chengxilo/virtualterm v1.0.4/go.mod h1:DyxxBZz/x1iqJjFxTFcr6/x+jSpqN0iwWCOK1q10rlY= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/clbanning/mxj v1.8.4 h1:HuhwZtbyvyOw+3Z1AowPkU87JkJUSv751ELWaiTpj8I= +github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= +github.com/clbanning/mxj/v2 v2.5.5/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s= +github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME= +github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/dave/jennifer v1.6.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/eapache/go-resiliency v1.7.0 h1:n3NRTnBn5N0Cbi/IeOHuQn9s2UwVUH7Ga0ZWcP+9JTA= +github.com/eapache/go-resiliency v1.7.0/go.mod h1:5yPzW0MIvSe0JDsv0v+DvcjEv2FyD6iZYSs1ZI+iQho= +github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3 h1:Oy0F4ALJ04o5Qqpdz8XLIpNA3WM/iSIXqxtqo7UGVws= +github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3/go.mod h1:YvSRo5mw33fLEx1+DlK6L2VV43tJt5Eyel9n9XBcR+0= +github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +github.com/emirpasic/gods/v2 v2.0.0-alpha h1:dwFlh8pBg1VMOXWGipNMRt8v96dKAIvBehtCt6OtunU= +github.com/emirpasic/gods/v2 v2.0.0-alpha/go.mod h1:W0y4M2dtBB9U5z3YlghmpuUhiaZT2h6yoeE+C1sCp6A= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/forgoer/openssl v1.6.1 h1:pBfyCd0p5Htd0CzKhtZ5kPLzRk9XeMdRVnC27AIRKmM= +github.com/forgoer/openssl v1.6.1/go.mod h1:9DZ4yOsQmveP0aXC/BpQ++Y5TKaz5yR9+emcxmIZNZs= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/gammazero/toposort v0.1.1 h1:OivGxsWxF3U3+U80VoLJ+f50HcPU1MIqE1JlKzoJ2Eg= +github.com/gammazero/toposort v0.1.1/go.mod h1:H2cozTnNpMw0hg2VHAYsAxmkHXBYroNangj2NTBQDvw= +github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= +github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-pay/crypto v0.0.1 h1:B6InT8CLfSLc6nGRVx9VMJRBBazFMjr293+jl0lLXUY= +github.com/go-pay/crypto v0.0.1/go.mod h1:41oEIvHMKbNcYlWUlRWtsnC6+ASgh7u29z0gJXe5bes= +github.com/go-pay/errgroup v0.0.3 h1:DB4s8e8oWYDyETKQ1y1riMJ7y29zE1uIsMCSjEOFSbU= +github.com/go-pay/errgroup v0.0.3/go.mod h1:0+4b8mvFMS71MIzsaC+gVvB4x37I93lRb2dqrwuU8x8= +github.com/go-pay/gopay v1.5.114 h1:jNYpcylr7WJev6i/MBeer0Z58E0x5NyqG4FfZrar3pQ= +github.com/go-pay/gopay v1.5.114/go.mod h1:p48xvWeepPolZuakAjCeucWynWwW7msoXsqahcoJpKE= +github.com/go-pay/smap v0.0.2 h1:kKflYor5T5FgZltPFBMTFfjJvqYMHr5VnIFSEyhVTcA= +github.com/go-pay/smap v0.0.2/go.mod h1:HW9oAo0okuyDYsbpbj5fJFxnNj/BZorRGFw26SxrNWw= +github.com/go-pay/util v0.0.4 h1:TuwSU9o3Qd7m9v1PbzFuIA/8uO9FJnA6P7neG/NwPyk= +github.com/go-pay/util v0.0.4/go.mod h1:Tsdhs8Ib9J9b4+NKNO1PHh5hWHhlg98PthsX0ckq6PM= +github.com/go-pay/xlog v0.0.3 h1:avyMhCL/JgBHreoGx/am/kHxfs1udDOAeVqbmzP/Yes= +github.com/go-pay/xlog v0.0.3/go.mod h1:mH47xbobrdsSHWsmFtSF5agWbMHFP+tK0ZbVCk5OAEw= +github.com/go-pay/xtime v0.0.2 h1:7YR4/iuELsEHpJ6LUO0SVK80hQxDO9MLCfuVYIiTCRM= +github.com/go-pay/xtime v0.0.2/go.mod h1:W1yRbJaSt4CSBcdAtLBQ8xajiN/Pl5hquGczUcUE9xE= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/validator/v10 v10.7.0/go.mod h1:xm76BBt941f7yWdGnI2DVPFFg1UK3YY04qifoXU3lOk= +github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= +github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gogf/gf/contrib/drivers/mysql/v2 v2.10.0 h1:UvqxwinkelKxwdwnKUfdy51/ls4RL7MCeJqAZOVAy0I= +github.com/gogf/gf/contrib/drivers/mysql/v2 v2.10.0/go.mod h1:6v7oGBF9wv59WERJIOJxXmLhkUcxwON3tPYW3AZ7wbY= +github.com/gogf/gf/contrib/drivers/pgsql/v2 v2.10.0 h1:39+jbTenm7KBj4hO2C8ANAxVHpX/7OuRDs1VcGC9ylA= +github.com/gogf/gf/contrib/drivers/pgsql/v2 v2.10.0/go.mod h1:B0s0fVzn0W220E8UTpSGzrrGKsop5KcB90twBeLCiz0= +github.com/gogf/gf/contrib/nosql/redis/v2 v2.10.0 h1:N/F9CuDdUZLoM1nVRqrDE/33pDZuhVxpNY4wYdeIaBs= +github.com/gogf/gf/contrib/nosql/redis/v2 v2.10.0/go.mod h1:x6uoJGfZOtirIRQls8xUlYzC6f7T/eULPUa9er368X0= +github.com/gogf/gf/contrib/trace/jaeger/v2 v2.7.4 h1:JnUjXb7C9vmwcZFwXqnxi9H4/I0rir9LmRryIX7xNds= +github.com/gogf/gf/contrib/trace/jaeger/v2 v2.7.4/go.mod h1:A3NhV8u45twLq5VdqObhYNhT4szLFLCROw4LzHM+lYg= +github.com/gogf/gf/v2 v2.10.0 h1:rzDROlyqGMe/eM6dCalSR8dZOuMIdLhmxKSH1DGhbFs= +github.com/gogf/gf/v2 v2.10.0/go.mod h1:Svl1N+E8G/QshU2DUbh/3J/AJauqCgUnxHurXWR4Qx0= +github.com/gogf/selfupdate v0.0.0-20231215043001-5c48c528462f h1:7xfXR/BhG3JDqO1s45n65Oyx9t4E/UqDOXep6jXdLCM= +github.com/gogf/selfupdate v0.0.0-20231215043001-5c48c528462f/go.mod h1:HnYoio6S7VaFJdryKcD/r9HgX+4QzYfr00XiXUo/xz0= +github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= +github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0= +github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grokify/html-strip-tags-go v0.1.0 h1:03UrQLjAny8xci+R+qjCce/MYnpNXCtgzltlQbOBae4= +github.com/grokify/html-strip-tags-go v0.1.0/go.mod h1:ZdzgfHEzAfz9X6Xe5eBLVblWIxXfYSQ40S/VKrAOGpc= +github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= +github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= +github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= +github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo= +github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= +github.com/jcmturner/gofork v1.7.6 h1:QH0l3hzAU1tfT3rZCnW5zXl+orbkNMMRGJfdJjHVETg= +github.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo= +github.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o= +github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= +github.com/jcmturner/gokrb5/v8 v8.4.4 h1:x1Sv4HaTpepFkXbt2IkL29DXRf8sOfZXo8eRKh687T8= +github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs= +github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY= +github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kayon/iploc v0.0.0-20200312105652-bda3e968a794 h1:dWJxw+KQOMeVcoyxqG9I5fppPld1hh1FG8ngv0fKNsQ= +github.com/kayon/iploc v0.0.0-20200312105652-bda3e968a794/go.mod h1:IwrOeG3O3K9vVXmcVvc9T0XLabw67QePi5pKQt5U+Kw= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= +github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= +github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/minio/crc64nvme v1.0.1 h1:DHQPrYPdqK7jQG/Ls5CTBZWeex/2FMS3G5XGkycuFrY= +github.com/minio/crc64nvme v1.0.1/go.mod h1:eVfm2fAzLlxMdUGc0EEBGSMmPwmXD5XiNRpnu9J3bvg= +github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= +github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= +github.com/minio/minio-go/v7 v7.0.94 h1:1ZoksIKPyaSt64AVOyaQvhDOgVC3MfZsWM6mZXRUGtM= +github.com/minio/minio-go/v7 v7.0.94/go.mod h1:71t2CqDt3ThzESgZUlU1rBN54mksGGlkLcFgguDnnAc= +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= +github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= +github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/mojocn/base64Captcha v1.3.8 h1:rrN9BhCwXKS8ht1e21kvR3iTaMgf4qPC9sRoV52bqEg= +github.com/mojocn/base64Captcha v1.3.8/go.mod h1:QFZy927L8HVP3+VV5z2b1EAEiv1KxVJKZbAucVgLUy4= +github.com/mozillazg/go-httpheader v0.2.1 h1:geV7TrjbL8KXSyvghnFm+NyTux/hxwueTSrwhe88TQQ= +github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60= +github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= +github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= +github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.1.0 h1:N0LHrshF4T39KvI96fn6GT8HEjXRXYNDrDjKFDB7RIY= +github.com/olekukonko/tablewriter v1.1.0/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= +github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= +github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= +github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c h1:dAMKvw0MlJT1GshSTtih8C2gDs04w8dReiOGXrGLNoY= +github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM= +github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU= +github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/qiniu/dyn v1.3.0/go.mod h1:E8oERcm8TtwJiZvkQPbcAh0RL8jO1G0VXJMW3FAWdkk= +github.com/qiniu/go-sdk/v7 v7.25.4 h1:ulCKlTEyrZzmNytXweOrnva49+Q4+ASjYBCSXhkRWTo= +github.com/qiniu/go-sdk/v7 v7.25.4/go.mod h1:dmKtJ2ahhPWFVi9o1D5GemmWoh/ctuB9peqTowyTO8o= +github.com/qiniu/x v1.10.5/go.mod h1:03Ni9tj+N2h2aKnAz+6N0Xfl8FwMEDRC2PAlxekASDs= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/redis/go-redis/v9 v9.12.1 h1:k5iquqv27aBtnTm2tIkROUDp8JBXhXZIVu1InSgvovg= +github.com/redis/go-redis/v9 v9.12.1/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= +github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM= +github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk= +github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= +github.com/richardlehane/msoleps v1.0.4 h1:WuESlvhX3gH2IHcd8UqyCuFY5yiq/GR/yqaSM/9/g00= +github.com/richardlehane/msoleps v1.0.4/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= +github.com/schollz/progressbar/v3 v3.18.0 h1:uXdoHABRFmNIjUfte/Ex7WtuyVslrw2wVPQmCN62HpA= +github.com/schollz/progressbar/v3 v3.18.0/go.mod h1:IsO3lpbaGuzh8zIMzgY3+J8l4C8GjO0Y9S69eFvNsec= +github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI= +github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/silenceper/wechat/v2 v2.1.9 h1:wc092gUkGbbBRTdzPxROhQhOH5iE98stnfzKA73mnTo= +github.com/silenceper/wechat/v2 v2.1.9/go.mod h1:7Iu3EhQYVtDUJAj+ZVRy8yom75ga7aDWv8RurLkVm0s= +github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v1.1.0 h1:MkTeG1DMwsrdH7QtLXy5W+fUxWq+vmb6cLmyJ7aRtF0= +github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= +github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.563/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1200/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1202 h1:3QTQZXLLGLALyHNHs6WAsFCWvElMEXfOdaFM01/3Zjo= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1202/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.563/go.mod h1:uom4Nvi9W+Qkom0exYiJ9VWJjXwyxtPYTkKkaLMlfE0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.1200 h1:bu2Jqn/rc5CQslIgTCyG4CTqMpkz2luIOq7dzuLp4G8= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.1200/go.mod h1:JzzUsHoueCXnMEYcgorKxyfR0OZAI416XKgHEpgyO7o= +github.com/tencentyun/cos-go-sdk-v5 v0.7.66 h1:O4O6EsozBoDjxWbltr3iULgkI7WPj/BFNlYTXDuE64E= +github.com/tencentyun/cos-go-sdk-v5 v0.7.66/go.mod h1:8+hG+mQMuRP/OIS9d83syAvXvrMj9HhkND6Q1fLghw0= +github.com/tidwall/gjson v1.13.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.14.1 h1:iymTbGkQBhveq21bEvAQ81I0LEBork8BFe1CUZXdyuo= +github.com/tidwall/gjson v1.14.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tiendc/go-deepcopy v1.6.0 h1:0UtfV/imoCwlLxVsyfUd4hNHnB3drXsfle+wzSCA5Wo= +github.com/tiendc/go-deepcopy v1.6.0/go.mod h1:toXoeQoUqXOOS/X4sKuiAoSk6elIdqc0pN7MTgOOo2I= +github.com/tinylib/msgp v1.3.0 h1:ULuf7GPooDaIlbyvgAxBV/FI7ynli6LZ1/nVUNu+0ww= +github.com/tinylib/msgp v1.3.0/go.mod h1:ykjzy2wzgrlvpDCRc4LA8UXy6D8bzMSuAF3WD57Gok0= +github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w= +github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho= +github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/ufilesdk-dev/ufile-gosdk v1.0.6 h1:YhTZfA0U5zjKUe6qYrIs72jjxSZryTMbS9wE76fIxMs= +github.com/ufilesdk-dev/ufile-gosdk v1.0.6/go.mod h1:s1LIpscsgVNx0JRNbDElNNQhyNXJiumVpzvPzVNS/XI= +github.com/xuri/efp v0.0.1 h1:fws5Rv3myXyYni8uwj2qKjVaRP30PdjeYe2Y6FDsCL8= +github.com/xuri/efp v0.0.1/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI= +github.com/xuri/excelize/v2 v2.9.1 h1:VdSGk+rraGmgLHGFaGG9/9IWu1nj4ufjJ7uwMDtj8Qw= +github.com/xuri/excelize/v2 v2.9.1/go.mod h1:x7L6pKz2dvo9ejrRuD8Lnl98z4JLt0TGAwjhW+EiP8s= +github.com/xuri/nfp v0.0.1 h1:MDamSGatIvp8uOmDP8FnmjuQpu90NzdJxo7242ANR9Q= +github.com/xuri/nfp v0.0.1/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.30/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yuin/gopher-lua v0.0.0-20220504180219-658193537a64 h1:5mLPGnFdSsevFRFc9q3yYbBkB6tsm4aCwwQV/j1JQAQ= +github.com/yuin/gopher-lua v0.0.0-20220504180219-658193537a64/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= +github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= +github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/exporters/jaeger v1.14.0 h1:CjbUNd4iN2hHmWekmOqZ+zSCU+dzZppG8XsV+A3oc8Q= +go.opentelemetry.io/otel/exporters/jaeger v1.14.0/go.mod h1:4Ay9kk5vELRrbg5z4cpP9EtmQRFap2Wb0woPG4lujZA= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +go.uber.org/atomic v1.5.1 h1:rsqfU5vBkVknbhUGbAUwQKR2H4ItV8tjJ+6kJX4cxHM= +go.uber.org/atomic v1.5.1/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/image v0.23.0/go.mod h1:wJJBTdLfCCf3tiHa1fNxpZmUI4mmoZvwMCPP0ddoNKY= +golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ= +golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210228012217-479acdf4ea46/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= +golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= +golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/h2non/gock.v1 v1.1.2 h1:jBbHXgGBK/AoPVfJh5x4r/WxIrElvbLel8TCZkkZJoY= +gopkg.in/h2non/gock.v1 v1.1.2/go.mod h1:n7UGz/ckNChHiK05rDoiC4MYSunEC/lyaUm2WWaDva0= +gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +modernc.org/fileutil v1.0.0 h1:Z1AFLZwl6BO8A5NldQg/xTSjGLetp+1Ubvl4alfGx8w= +modernc.org/fileutil v1.0.0/go.mod h1:JHsWpkrk/CnVV1H/eGlFf85BEpfkrp56ro8nojIq9Q8= +stathat.com/c/consistent v1.0.0 h1:ezyc51EGcRPJUxfHGSgJjWzJdj3NiMU9pNfLNGiXV0c= +stathat.com/c/consistent v1.0.0/go.mod h1:QkzMWzcbB+yQBL2AttO6sgsQS/JSTapcDISJalmCDS0= diff --git a/server/hack/config.yaml b/server/hack/config.yaml new file mode 100644 index 0000000..f779bf5 --- /dev/null +++ b/server/hack/config.yaml @@ -0,0 +1,48 @@ +# CLI tool, only in development environment. +# https://goframe.org/pages/viewpage.action?pageId=3673173 +gfcli: + build: + name: "hotgo" # 编译后的可执行文件名称 + arch: "amd64" # 不填默认当前系统架构,可选:386,amd64,arm,all + system: "linux" # 不填默认当前系统平台,可选:linux,darwin,windows,all + mod: "none" + cgo: 0 + packSrc: "resource" # 将resource目录打包进可执行文件,静态资源无需单独部署 + packDst: "internal/packed/packed.go" # 打包后生成的Go文件路径,一般使用相对路径指定到本项目目录中 + version: "" + output: "./temp/hotgo" # 可执行文件生成路径 + extra: "" + + + docker: + build: "-a amd64 -s linux -p temp -ew" # 构建参数 + tagPrefixes: # 该docker的标记前缀,用于docker推送,请替换成你自己的 + - ccr.ccs.tencentyun.com/bufanyun + + + gen: + dao: + - link: "mysql:hotgo:hg123456.@tcp(127.0.0.1:3306)/hotgo?loc=Local&parseTime=true&charset=utf8mb4" +# - link: "pgsql:postgres:hg123456@tcp(127.0.0.1:5432)/hotgo" + group: "default" # 分组 使用hotgo代码生成功能时必须填 + # tables: "" # 指定当前数据库中需要执行代码生成的数据表。如果为空,表示数据库的所有表都会生成。 + tablesEx: "hg_sys_addons_install" # 指定当前数据库中需要排除代码生成的数据表。 + removePrefix: "hg_" + descriptionTag: true + noModelComment: true + jsonCase: "CamelLower" + gJsonSupport: true + clear: false + + +# service: # 生成业务配置 +# srcFolder: "internal/logic" +# dstFolder: "internal/service" +# dstFileNameCase: "CamelLower" +# clear: true + ctrl: + # api/api下的接口可以使用gf gen ctrl自动生成控制器相关代码 + srcFolder: "api/api" + dstFolder: "internal/controller/api" + clear: true + merge: false diff --git a/server/internal/cmd/auth.go b/server/internal/cmd/auth.go new file mode 100644 index 0000000..dc3e045 --- /dev/null +++ b/server/internal/cmd/auth.go @@ -0,0 +1,35 @@ +// Package cmd +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package cmd + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gcmd" + "hotgo/internal/service" +) + +var ( + Auth = &gcmd.Command{ + Name: "auth", + Brief: "系统授权,当为第三方客户开发应用项目不想将源码和可执行文件让其随意使用时,可以通过授权的方式约束使用方。", + Description: `目前已实现,一对一、一对多、有效期授权,具体使用可以参考现有逻辑结合实际场景进行改造`, + Func: func(ctx context.Context, parser *gcmd.Parser) (err error) { + service.AuthClient().Start(ctx) + + serverWg.Add(1) + + // 信号监听 + signalListen(ctx, signalHandlerForOverall) + + <-serverCloseSignal + service.AuthClient().Stop(ctx) + g.Log().Debug(ctx, "auth successfully closed ..") + serverWg.Done() + return + }, + } +) diff --git a/server/internal/cmd/cmd.go b/server/internal/cmd/cmd.go new file mode 100644 index 0000000..154016c --- /dev/null +++ b/server/internal/cmd/cmd.go @@ -0,0 +1,86 @@ +// Package cmd +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package cmd + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gcmd" + "hotgo/utility/simple" +) + +var ( + Main = &gcmd.Command{ + Description: `默认启动所有服务`, + Func: func(ctx context.Context, parser *gcmd.Parser) (err error) { + return All.Func(ctx, parser) + }, + } + + Help = &gcmd.Command{ + Name: "help", + Brief: "查看帮助", + Description: ` + 命令提示符 + --------------------------------------------------------------------------------- + 启动服务 + >> 所有服务 [go run main.go] 热编译 [gf run main.go] + >> HTTP服务 [go run main.go http] + >> 消息队列 [go run main.go queue] + >> 定时任务 [go run main.go cron] + >> 查看帮助 [go run main.go help] + + --------------------------------------------------------------------------------- + 工具 + >> 释放casbin权限,用于清理无效的权限设置 [go run main.go tools -m=casbin -a1=refresh] + >> 打印所有打包的资源文件列表 [go run main.go tools -m=gres -a1=dump] + >> 打印指定打包的资源文件内容 [go run main.go tools -m=gres -a1=content -a2=resource/template/home/index.html] + --------------------------------------------------------------------------------- + 升级更新 + >> 修复菜单关系树 [go run main.go up -m=fix -a1=menuTree] + --------------------------------------------------------------------------------- + 更多 + github地址:https://github.com/bufanyun/hotgo + 文档地址:https://github.com/bufanyun/hotgo/tree/v2.0/docs/guide-zh-CN + HotGo框架交流1群:190966648 + `, + } + + All = &gcmd.Command{ + Name: "all", + Brief: "start all server", + Description: "this is the command entry for starting all server", + Func: func(ctx context.Context, parser *gcmd.Parser) (err error) { + g.Log().Debug(ctx, "starting all server") + + // 需要启动的服务 + var allServers = []*gcmd.Command{Http, Queue, Cron} + + for _, server := range allServers { + var cmd = server + simple.SafeGo(ctx, func(ctx context.Context) { + if err := cmd.Func(ctx, parser); err != nil { + g.Log().Fatalf(ctx, "%v start fail:%v", cmd.Name, err) + } + }) + } + + // 信号监听 + signalListen(ctx, signalHandlerForOverall) + + <-serverCloseSignal + serverWg.Wait() + g.Log().Debug(ctx, "all service successfully closed ..") + return + }, + } +) + +func init() { + if err := Main.AddCommand(All, Http, Queue, Cron, Auth, Tools, Up, Help); err != nil { + panic(err) + } +} diff --git a/server/internal/cmd/cron.go b/server/internal/cmd/cron.go new file mode 100644 index 0000000..0b2fd49 --- /dev/null +++ b/server/internal/cmd/cron.go @@ -0,0 +1,45 @@ +// Package cmd +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package cmd + +import ( + "context" + "github.com/gogf/gf/v2/os/gcmd" + _ "hotgo/internal/crons" + "hotgo/internal/global" + "hotgo/internal/library/cron" + "hotgo/internal/service" +) + +var ( + Cron = &gcmd.Command{ + Name: "cron", + Brief: "定时任务,用来部署一些可独立运行的定时任务,通过tcp方式和后台保持长连接通讯,动态调整任务属性。", + Description: ``, + Func: func(ctx context.Context, parser *gcmd.Parser) (err error) { + // 服务日志处理 + cron.Logger().SetHandlers(global.LoggingServeLogHandler) + + // 启动定时任务 + service.SysCron().StartCron(ctx) + + // tcp客户端 + service.CronClient().Start(ctx) + + serverWg.Add(1) + + // 信号监听 + signalListen(ctx, signalHandlerForOverall) + + <-serverCloseSignal + service.CronClient().Stop(ctx) + cron.StopALL() + cron.Logger().Debug(ctx, "cron successfully closed ..") + serverWg.Done() + return + }, + } +) diff --git a/server/internal/cmd/handler_shutdown.go b/server/internal/cmd/handler_shutdown.go new file mode 100644 index 0000000..61a51ba --- /dev/null +++ b/server/internal/cmd/handler_shutdown.go @@ -0,0 +1,44 @@ +// Package cmd +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package cmd + +import ( + "context" + "github.com/gogf/gf/v2/os/gctx" + "github.com/gogf/gf/v2/os/gproc" + "hotgo/internal/consts" + "hotgo/utility/simple" + "os" + "sync" +) + +var ( + serverCloseSignal = make(chan struct{}, 1) + serverWg = sync.WaitGroup{} + once sync.Once +) + +// signalHandlerForOverall 关闭信号处理 +func signalHandlerForOverall(sig os.Signal) { + serverCloseEvent(gctx.GetInitCtx()) + serverCloseSignal <- struct{}{} +} + +// signalListen 信号监听 +func signalListen(ctx context.Context, handler ...gproc.SigHandler) { + simple.SafeGo(ctx, func(ctx context.Context) { + gproc.AddSigHandlerShutdown(handler...) + gproc.Listen() + }) +} + +// serverCloseEvent 关闭事件 +// 区别于服务收到退出信号后的处理,只会执行一次 +func serverCloseEvent(ctx context.Context) { + once.Do(func() { + simple.Event().Call(consts.EventServerClose, ctx) + }) +} diff --git a/server/internal/cmd/http.go b/server/internal/cmd/http.go new file mode 100644 index 0000000..7a4cb3e --- /dev/null +++ b/server/internal/cmd/http.go @@ -0,0 +1,106 @@ +// Package cmd +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package cmd + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/net/ghttp" + "github.com/gogf/gf/v2/os/gcmd" + "github.com/gogf/gf/v2/util/gmode" + "hotgo/internal/library/addons" + "hotgo/internal/library/casbin" + "hotgo/internal/library/hggen" + "hotgo/internal/router" + "hotgo/internal/service" + "hotgo/internal/websocket" +) + +var ( + Http = &gcmd.Command{ + Name: "http", + Usage: "http", + Brief: "HTTP服务,也可以称为主服务,包含http、websocket、tcpserver多个可对外服务", + Func: func(ctx context.Context, parser *gcmd.Parser) (err error) { + // 初始化http服务 + s := g.Server() + + // 初始化请求前回调 + s.BindHookHandler("/*any", ghttp.HookBeforeServe, service.Hook().BeforeServe) + + // 请求响应结束后回调 + s.BindHookHandler("/*any", ghttp.HookAfterOutput, service.Hook().AfterOutput) + + // 注册全局中间件 + s.BindMiddleware("/*any", []ghttp.HandlerFunc{ + service.Middleware().Ctx, // 初始化请求上下文,一般需要第一个进行加载,后续中间件存在依赖关系 + service.Middleware().CORS, // 跨域中间件,自动处理跨域问题 + service.Middleware().Blacklist, // IP黑名单中间件,如果请求IP被后台拉黑,所有请求将被拒绝 + service.Middleware().DemoLimit, // 演示系統操作限制,当开启演示模式时,所有POST请求将被拒绝 + service.Middleware().PreFilter, // 请求输入预处理,api使用gf规范路由并且XxxReq结构体实现了validate.Filter接口即可隐式预处理 + service.Middleware().ResponseHandler, // HTTP响应预处理,在业务处理完成后,对响应结果进行格式化和错误过滤,将处理后的数据发送给请求方 + }...) + + s.Group("/", func(group *ghttp.RouterGroup) { + // 注册后台路由 + router.Admin(ctx, group) + + // 注册Api路由 + router.Api(ctx, group) + + // 注册websocket路由 + router.WebSocket(ctx, group) + + // 注册前台页面路由 + router.Home(ctx, group) + }) + + // 启动插件 + if err = addons.StartModules(ctx, &addons.Option{Server: s}); err != nil { + return err + } + + // 初始化casbin权限 + casbin.InitEnforcer(ctx) + + // 初始化生成代码配置 + if !gmode.IsProduct() { + hggen.InIt(ctx) + } + + // 启动tcp服务 + service.TCPServer().Start(ctx) + + // 启动服务监控 + service.AdminMonitor().StartMonitor(ctx) + + // 加载ip访问黑名单 + service.SysBlacklist().Load(ctx) + + // 注册支付成功回调方法 + service.Pay().RegisterNotifyCall() + + serverWg.Add(1) + + // 信号监听 + signalListen(ctx, signalHandlerForOverall) + + go func() { + <-serverCloseSignal + websocket.Stop() // 关闭websocket + service.TCPServer().Stop(ctx) // 关闭tcp服务器 + addons.StopModules(ctx) // 停止插件 + _ = s.Shutdown() // 关闭http服务,主服务建议放在最后一个关闭 + g.Log().Debug(ctx, "http successfully closed ..") + serverWg.Done() + }() + + // Just run the server. + s.Run() + return + }, + } +) diff --git a/server/internal/cmd/queue.go b/server/internal/cmd/queue.go new file mode 100644 index 0000000..a8dbb5d --- /dev/null +++ b/server/internal/cmd/queue.go @@ -0,0 +1,43 @@ +// Package cmd +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package cmd + +import ( + "context" + "github.com/gogf/gf/v2/os/gcmd" + "hotgo/internal/global" + "hotgo/internal/library/queue" + _ "hotgo/internal/queues" + "hotgo/utility/simple" +) + +var ( + Queue = &gcmd.Command{ + Name: "queue", + Brief: "消息队列", + Description: ``, + Func: func(ctx context.Context, parser *gcmd.Parser) (err error) { + // 服务日志处理 + queue.Logger().SetHandlers(global.LoggingServeLogHandler) + + simple.SafeGo(ctx, func(ctx context.Context) { + queue.Logger().Debug(ctx, "start queue consumer..") + queue.StartConsumersListener(ctx) + queue.Logger().Debug(ctx, "start queue consumer success..") + }) + + serverWg.Add(1) + + // 信号监听 + signalListen(ctx, signalHandlerForOverall) + + <-serverCloseSignal + queue.Logger().Debug(ctx, "queue successfully closed ..") + serverWg.Done() + return + }, + } +) diff --git a/server/internal/cmd/tools.go b/server/internal/cmd/tools.go new file mode 100644 index 0000000..c098f08 --- /dev/null +++ b/server/internal/cmd/tools.go @@ -0,0 +1,107 @@ +// Package cmd +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package cmd + +import ( + "context" + "fmt" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gcmd" + "github.com/gogf/gf/v2/os/gres" + "hotgo/internal/library/casbin" +) + +var ( + Tools = &gcmd.Command{ + Name: "tools", + Brief: "常用工具", + Description: ``, + Func: func(ctx context.Context, parser *gcmd.Parser) (err error) { + args := parser.GetOptAll() + g.Log().Debugf(ctx, "tools args:%v", args) + if len(args) == 0 { + err = gerror.New("tools args cannot be empty.") + return + } + + method, ok := args["m"] + if !ok { + err = gerror.New("tools method cannot be empty.") + return + } + + switch method { + case "casbin": + err = handleCasbin(ctx, args) + case "gres": + err = handleGRes(ctx, args) + default: + err = gerror.Newf("tools method[%v] does not exist", method) + } + + if err == nil { + g.Log().Info(ctx, "tools exec successful!") + } + return + }, + } +) + +// handleCasbin casbin. +func handleCasbin(ctx context.Context, args map[string]string) (err error) { + a1, ok := args["a1"] + if !ok { + err = gerror.New("casbin args cannot be empty.") + return + } + + casbin.InitEnforcer(ctx) + switch a1 { + case "clear": + err = casbin.Clear(ctx) + case "refresh": + err = casbin.Refresh(ctx) + default: + err = gerror.Newf("casbin a1 is invalid, a1:%v", a1) + } + return +} + +func handleGRes(ctx context.Context, args map[string]string) (err error) { + a1, ok := args["a1"] + if !ok { + err = gerror.New("gres args cannot be empty.") + return + } + + switch a1 { + case "dump": + gres.Dump() + case "content": + path, ok := args["a2"] + if !ok { + err = gerror.New("缺少查看文件路径参数:`a2`") + return + } + + if !gres.Contains(path) { + err = gerror.Newf("没有找到资源文件:%v", path) + return + } + content := string(gres.GetContent(path)) + + if len(content) == 0 { + err = gerror.Newf("没有找到资源文件内容,请确认传入`a2`参数是一个文件,a2:%v", path) + return + } + fmt.Println("以下是资源文件内容:") + fmt.Println(content) + default: + err = gerror.Newf("handleGRes a1 is invalid, a1:%v", a1) + } + return +} diff --git a/server/internal/cmd/up.go b/server/internal/cmd/up.go new file mode 100644 index 0000000..cbfc045 --- /dev/null +++ b/server/internal/cmd/up.go @@ -0,0 +1,65 @@ +// Package cmd +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package cmd + +import ( + "context" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gcmd" + "hotgo/internal/cmd/upgrade/fix" +) + +var ( + Up = &gcmd.Command{ + Name: "up", + Brief: "处理hotgo版本升级更新带来的兼容问题", + Description: ``, + Func: func(ctx context.Context, parser *gcmd.Parser) (err error) { + args := parser.GetOptAll() + g.Log().Debugf(ctx, "up args:%v", args) + if len(args) == 0 { + err = gerror.New("up args cannot be empty.") + return + } + + method, ok := args["m"] + if !ok { + err = gerror.New("up method cannot be empty.") + return + } + + switch method { + case "fix": + err = handleUpgradeFix(ctx, args) + default: + err = gerror.Newf("up method[%v] does not exist", method) + } + + if err == nil { + g.Log().Info(ctx, "up exec successful!") + } + return + }, + } +) + +// handleUpgradeFix 处理修复脚本 +func handleUpgradeFix(ctx context.Context, args map[string]string) (err error) { + a1, ok := args["a1"] + if !ok { + err = gerror.New("fix args cannot be empty.") + return + } + + switch a1 { + case "menuTree": + fix.UpdateAdminMenuTree(ctx) + default: + err = gerror.Newf("fix a1 is invalid, a1:%v", a1) + } + return +} diff --git a/server/internal/cmd/upgrade/fix/admin_menu_tree.go b/server/internal/cmd/upgrade/fix/admin_menu_tree.go new file mode 100644 index 0000000..e5c7d66 --- /dev/null +++ b/server/internal/cmd/upgrade/fix/admin_menu_tree.go @@ -0,0 +1,48 @@ +// Package fix +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package fix + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gtime" + "hotgo/internal/dao" + "hotgo/internal/library/hgorm" + "hotgo/internal/model/entity" +) + +// UpdateAdminMenuTree 更新菜单关系树 +// 根据树等级从上到下依次检查,将无效的关系树进行修复更新 +func UpdateAdminMenuTree(ctx context.Context) { + var list []*entity.AdminMenu + err := dao.AdminMenu.Ctx(ctx).OrderAsc("level").Scan(&list) + if err != nil { + g.Log().Fatal(ctx, err) + } + + genUpdateData := func(v *entity.AdminMenu) g.Map { + update := g.Map{"updated_at": gtime.Now()} + if v.Pid <= 0 { + update["level"] = 1 + update["tree"] = "" + return update + } + + // 生成下级关系树 + update["pid"], update["level"], update["tree"], err = hgorm.GenSubTree(ctx, &dao.AdminMenu, v.Pid) + return update + } + + for _, v := range list { + update := genUpdateData(v) + if v.Level == update["level"] && v.Tree == update["tree"] { + continue + } + if _, err = dao.AdminMenu.Ctx(ctx).WherePri(v.Id).Data(genUpdateData(v)).Update(); err != nil { + g.Log().Fatal(ctx, err) + } + } +} diff --git a/server/internal/consts/addons.go b/server/internal/consts/addons.go new file mode 100644 index 0000000..3384bbf --- /dev/null +++ b/server/internal/consts/addons.go @@ -0,0 +1,80 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +import ( + "hotgo/internal/library/dict" + "hotgo/internal/model" +) + +func init() { + dict.RegisterEnums("addonsGroupOptions", "插件分组", AddonsGroupOptions) + dict.RegisterEnums("addonsInstallStatus", "插件安装状态", AddonsInstallStatusOptions) + dict.RegisterEnums("addonsExtend", "插件扩展", AddonsExtendOptions) +} + +const ( + AddonsTag = "addons_" // 插件标签前缀 + AddonsDir = "addons" // 插件路径 +) + +const ( + AddonsGroupPlug = 1 // 功能扩展 + AddonsGroupBusiness = 2 // 主要业务 + AddonsGroupThirdParty = 3 // 第三方插件 + AddonsGroupMiniApp = 4 // 小程序 + AddonsGroupCustomer = 5 // 客户关系 + AddonsGroupActivity = 6 // 营销及活动 + AddonsGroupServices = 7 // 常用服务及工具 + AddonsGroupBiz = 8 // 行业解决方案 +) + +// AddonsGroupOptions 插件分组选项 +var AddonsGroupOptions = []*model.Option{ + dict.GenInfoOption(AddonsGroupPlug, "功能扩展"), + dict.GenInfoOption(AddonsGroupBusiness, "主要业务"), + dict.GenInfoOption(AddonsGroupThirdParty, "第三方插件"), + dict.GenInfoOption(AddonsGroupMiniApp, "小程序"), + dict.GenInfoOption(AddonsGroupCustomer, "客户关系"), + dict.GenInfoOption(AddonsGroupActivity, "营销及活动"), + dict.GenInfoOption(AddonsGroupServices, "常用服务及工具"), + dict.GenInfoOption(AddonsGroupBiz, "行业解决方案"), +} + +var AddonsGroupIconMap = map[int]string{ + AddonsGroupPlug: "AppstoreAddOutlined", + AddonsGroupBusiness: "FireOutlined", + AddonsGroupThirdParty: "ApiOutlined", + AddonsGroupMiniApp: "RocketOutlined", + AddonsGroupCustomer: "UserSwitchOutlined", + AddonsGroupActivity: "TagOutlined", + AddonsGroupServices: "ToolOutlined", + AddonsGroupBiz: "CheckCircleOutlined", +} + +const ( + AddonsInstallStatusOk = 1 // 已安装 + AddonsInstallStatusNo = 2 // 未安装 + AddonsInstallStatusUn = 3 // 已卸载 +) + +// AddonsInstallStatusOptions 插件安装状态 +var AddonsInstallStatusOptions = []*model.Option{ + dict.GenInfoOption(AddonsInstallStatusOk, "已安装"), + dict.GenInfoOption(AddonsInstallStatusNo, "未安装"), + dict.GenInfoOption(AddonsInstallStatusUn, "已卸载"), +} + +const ( + AddonsExtendResourcePublic = "resourcePublic" + AddonsExtendResourceTemplate = "resourceTemplate" +) + +// AddonsExtendOptions 插件扩展选项 +var AddonsExtendOptions = []*model.Option{ + dict.GenInfoOption(AddonsExtendResourcePublic, "创建静态目录"), + dict.GenInfoOption(AddonsExtendResourceTemplate, "创建模板目录"), +} diff --git a/server/internal/consts/app.go b/server/internal/consts/app.go new file mode 100644 index 0000000..9b57213 --- /dev/null +++ b/server/internal/consts/app.go @@ -0,0 +1,15 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +// 应用类型 +const ( + AppAdmin = "admin" + AppApi = "api" + AppHome = "home" + AppWebSocket = "websocket" + AppDefault = "default" +) diff --git a/server/internal/consts/cache.go b/server/internal/consts/cache.go new file mode 100644 index 0000000..e1313b8 --- /dev/null +++ b/server/internal/consts/cache.go @@ -0,0 +1,13 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +// cache +const ( + CacheToken = "token" // 登录token + CacheTokenBind = "token_bind" // 登录用户身份绑定 + CacheMultipartUpload = "multipart_upload" // 分片上传 +) diff --git a/server/internal/consts/captcha.go b/server/internal/consts/captcha.go new file mode 100644 index 0000000..c5c7a75 --- /dev/null +++ b/server/internal/consts/captcha.go @@ -0,0 +1,6 @@ +package consts + +const ( + CaptchaTypeString = iota + 1 // 字符串 + CaptchaTypeMath // 数字计算 +) diff --git a/server/internal/consts/cash.go b/server/internal/consts/cash.go new file mode 100644 index 0000000..f215d85 --- /dev/null +++ b/server/internal/consts/cash.go @@ -0,0 +1,13 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +// 提现状态 +const ( + CashStatusWait = 1 // 处理中 + CashStatusOk = 2 // 提现成功 + CashStatusFail = 3 // 提现异常 +) diff --git a/server/internal/consts/config.go b/server/internal/consts/config.go new file mode 100644 index 0000000..1a85e77 --- /dev/null +++ b/server/internal/consts/config.go @@ -0,0 +1,117 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +import ( + "github.com/gogf/gf/v2/util/gconv" +) + +// RequestEncryptKey +// 请求加密密钥用于敏感数据加密,16位字符,前后端需保持一致 +// 安全起见,生产环境运行时请注意修改 +var RequestEncryptKey = []byte("f080a463654b2279") + +// 配置数据类型 +const ( + ConfigTypeString = "string" + ConfigTypeInt = "int" + ConfigTypeInt8 = "int8" + ConfigTypeInt16 = "int16" + ConfigTypeInt32 = "int32" + ConfigTypeInt64 = "int64" + ConfigTypeUint = "uint" + ConfigTypeUint8 = "uint8" + ConfigTypeUint16 = "uint16" + ConfigTypeUint32 = "uint32" + ConfigTypeUint64 = "uint64" + ConfigTypeFloat32 = "float32" + ConfigTypeFloat64 = "float64" + ConfigTypeBool = "bool" + ConfigTypeDate = "date" + ConfigTypeDateTime = "datetime" + ConfigTypeSliceString = "[]string" + ConfigTypeSliceInt = "[]int" + ConfigTypeSliceInt64 = "[]int64" +) + +var ConfigTypes = []string{ConfigTypeString, + ConfigTypeInt, ConfigTypeInt8, ConfigTypeInt16, ConfigTypeInt32, ConfigTypeInt64, + ConfigTypeUint, ConfigTypeUint8, ConfigTypeUint16, ConfigTypeUint32, ConfigTypeUint64, + ConfigTypeFloat32, ConfigTypeFloat64, + ConfigTypeBool, + ConfigTypeDate, ConfigTypeDateTime, + ConfigTypeSliceString, ConfigTypeSliceInt, ConfigTypeSliceInt64, +} + +// ConfigMaskDemoField 演示环境下需要隐藏的配置 +var ConfigMaskDemoField = map[string]struct{}{ + // 邮箱 + "smtpUser": {}, "smtpPass": {}, + + // 云存储 + "uploadUCloudPublicKey": {}, "uploadUCloudPrivateKey": {}, "uploadCosSecretId": {}, "uploadCosSecretKey": {}, + "uploadOssSecretId": {}, "uploadOssSecretKey": {}, "uploadQiNiuAccessKey": {}, "uploadQiNiuSecretKey": {}, + + // 地图 + "geoAmapWebKey": {}, + + // 短信 + "smsAliYunAccessKeyID": {}, "smsAliYunAccessKeySecret": {}, "smsTencentSecretId": {}, "smsTencentSecretKey": {}, + + // 支付 + "payWxPayMchId": {}, "payWxPaySerialNo": {}, "payWxPayAPIv3Key": {}, "payWxPayPrivateKey": {}, "payQQPayMchId": {}, "payQQPayApiKey": {}, + + // 微信 + "officialAccountAppSecret": {}, "officialAccountToken": {}, "officialAccountEncodingAESKey": {}, "openPlatformAppSecret": {}, + "openPlatformToken": {}, "openPlatformEncodingAESKey": {}, +} + +// ConvType 类型转换 +func ConvType(val interface{}, t string) interface{} { + switch t { + case ConfigTypeString: + val = gconv.String(val) + case ConfigTypeInt: + val = gconv.Int(val) + case ConfigTypeInt8: + val = gconv.Int8(val) + case ConfigTypeInt16: + val = gconv.Int16(val) + case ConfigTypeInt32: + val = gconv.Int32(val) + case ConfigTypeInt64: + val = gconv.Int64(val) + case ConfigTypeUint: + val = gconv.Uint(val) + case ConfigTypeUint8: + val = gconv.Uint8(val) + case ConfigTypeUint16: + val = gconv.Uint16(val) + case ConfigTypeUint32: + val = gconv.Uint32(val) + case ConfigTypeUint64: + val = gconv.Uint64(val) + case ConfigTypeFloat32: + val = gconv.Float32(val) + case ConfigTypeFloat64: + val = gconv.Float64(val) + case ConfigTypeBool: + val = gconv.Bool(val) + case ConfigTypeDate: + val = gconv.Time(val, "Y-m-d") + case ConfigTypeDateTime: + val = gconv.Time(val, "Y-m-d H:i:s") + case ConfigTypeSliceInt: + val = gconv.SliceInt(val) + case ConfigTypeSliceInt64: + val = gconv.SliceInt64(val) + case ConfigTypeSliceString: + val = gconv.SliceStr(val) + default: + val = gconv.String(val) + } + return val +} diff --git a/server/internal/consts/context.go b/server/internal/consts/context.go new file mode 100644 index 0000000..38acd81 --- /dev/null +++ b/server/internal/consts/context.go @@ -0,0 +1,15 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +type CtxKey string + +// ContextKey 上下文 +const ( + ContextHTTPKey CtxKey = "httpContext" // http上下文变量名称 + ContextKeyCronArgs CtxKey = "cronArgs" // 定时任务参数 + ContextKeyCronSn CtxKey = "cronSn" // 定时任务序列号 +) diff --git a/server/internal/consts/credit_log.go b/server/internal/consts/credit_log.go new file mode 100644 index 0000000..c06d654 --- /dev/null +++ b/server/internal/consts/credit_log.go @@ -0,0 +1,48 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +import ( + "hotgo/internal/library/dict" + "hotgo/internal/model" +) + +func init() { + dict.RegisterEnums("creditType", "资金变动类型", CreditTypeOptions) + dict.RegisterEnums("creditGroup", "资金变动分组", CreditGroupOptions) +} + +const ( + CreditTypeBalance = "balance" // 余额 + CreditTypeIntegral = "integral" // 积分 +) + +const ( + CreditGroupDecr = "decr" // 扣款 + CreditGroupIncr = "incr" // 加款 + CreditGroupOpDecr = "op_decr" // 操作扣款 + CreditGroupOpIncr = "op_incr" // 操作加款 + CreditGroupBalanceRecharge = "balance_recharge" // 余额充值 + CreditGroupBalanceRefund = "balance_refund" // 余额退款 + CreditGroupApplyCash = "apply_cash" // 申请提现 +) + +// CreditTypeOptions 变动类型 +var CreditTypeOptions = []*model.Option{ + dict.GenSuccessOption(CreditTypeBalance, "余额"), + dict.GenInfoOption(CreditTypeIntegral, "积分"), +} + +// CreditGroupOptions 变动分组 +var CreditGroupOptions = []*model.Option{ + dict.GenWarningOption(CreditGroupDecr, "扣款"), + dict.GenSuccessOption(CreditGroupIncr, "加款"), + dict.GenWarningOption(CreditGroupOpDecr, "操作扣款"), + dict.GenSuccessOption(CreditGroupOpIncr, "操作加款"), + dict.GenWarningOption(CreditGroupBalanceRefund, "余额退款"), + dict.GenSuccessOption(CreditGroupBalanceRecharge, "余额充值"), + dict.GenInfoOption(CreditGroupApplyCash, "申请提现"), +} diff --git a/server/internal/consts/cron.go b/server/internal/consts/cron.go new file mode 100644 index 0000000..3898160 --- /dev/null +++ b/server/internal/consts/cron.go @@ -0,0 +1,16 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +// 定时任务 + +const ( + CronSplitStr = "," // 变量分割符 + CronPolicySame = 1 // 并行策略 + CronPolicySingle = 2 // 单例策略 + CronPolicyOnce = 3 // 单次策略 + CronPolicyTimes = 4 // 多次策略 +) diff --git a/server/internal/consts/debris.go b/server/internal/consts/debris.go new file mode 100644 index 0000000..531c34c --- /dev/null +++ b/server/internal/consts/debris.go @@ -0,0 +1,37 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2025 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +// 碎片 + +const ( + DemoTips = "演示系统已隐藏" // 演示系统敏感数据打码 + NilJsonToString = "{}" // 空json初始化值 + RegionSpilt = " / " // 地区分隔符 + Unknown = "Unknown" // Unknown + SuperRoleKey = "super" // 超管角色唯一标识符,通过角色验证超管 + MaxServeLogContentLen = 2048 // 最大保留服务日志内容大小 + SysDefaultLanguage = "zh_CN" // 系统默认语言,当配置文件没有国际化配置时生效 +) + +// curd. +const ( + DefaultPage = 10 // 默认列表分页加载数量 + DefaultPageSize = 1 // 默认列表分页加载页码 + MaxSortIncr = 10 // 最大排序值增量 +) + +// TenantField 租户字段 +const ( + TenantId = "tenant_id" // 租户ID + MerchantId = "merchant_id" // 商户ID + UserId = "user_id" // 用户ID +) + +const ( + DBMysql = "mysql" + DBPgsql = "pgsql" +) diff --git a/server/internal/consts/dept.go b/server/internal/consts/dept.go new file mode 100644 index 0000000..7c2f2d6 --- /dev/null +++ b/server/internal/consts/dept.go @@ -0,0 +1,30 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2024 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +import ( + "hotgo/internal/library/dict" + "hotgo/internal/model" +) + +func init() { + dict.RegisterEnums("deptType", "部门类型选项", DeptTypeOptions) +} + +const ( + DeptTypeCompany = "company" // 公司 + DeptTypeTenant = "tenant" // 租户 + DeptTypeMerchant = "merchant" // 商户 + DeptTypeUser = "user" // 用户 +) + +// DeptTypeOptions 部门类型选项 +var DeptTypeOptions = []*model.Option{ + dict.GenSuccessOption(DeptTypeCompany, "公司"), + dict.GenErrorOption(DeptTypeTenant, "租户"), + dict.GenInfoOption(DeptTypeMerchant, "商户"), + dict.GenWarningOption(DeptTypeUser, "用户"), +} diff --git a/server/internal/consts/ems.go b/server/internal/consts/ems.go new file mode 100644 index 0000000..5191153 --- /dev/null +++ b/server/internal/consts/ems.go @@ -0,0 +1,38 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +import "github.com/gogf/gf/v2/frame/g" + +// 邮件内置模板 +const ( + EmsTemplateText = "text" // 通用文本 + EmsTemplateCode = "code" // 通用验证码 + EmsTemplateLogin = "login" // 登录 + EmsTemplateRegister = "register" // 注册 + EmsTemplateResetPwd = "resetPwd" // 重置密码 + EmsTemplateBind = "bind" // 绑定邮箱 + EmsTemplateCash = "cash" // 申请提现 +) + +var EmsSubjectMap = g.MapStrStr{ + EmsTemplateText: "这是一封来自HotGo的邮件", + EmsTemplateCode: "验证码", + EmsTemplateLogin: "登录验证码", + EmsTemplateRegister: "注册验证码", + EmsTemplateResetPwd: "重置密码", + EmsTemplateBind: "绑定邮箱验证码", + EmsTemplateCash: "申请提现验证码", +} + +// IsCodeEmsTemplate 是否是验证码类型的模板 +func IsCodeEmsTemplate(template string) bool { + return template == EmsTemplateCode || + template == EmsTemplateLogin || + template == EmsTemplateRegister || + template == EmsTemplateBind || + template == EmsTemplateCash +} diff --git a/server/internal/consts/error.go b/server/internal/consts/error.go new file mode 100644 index 0000000..fa392ed --- /dev/null +++ b/server/internal/consts/error.go @@ -0,0 +1,35 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +import ( + "github.com/gogf/gf/v2/text/gstr" +) + +// 错误解释 +const ( + ErrorORM = "sql执行异常" + ErrorNotData = "数据不存在" + ErrorRotaPointer = "指针转换异常" +) + +// 需要隐藏真实错误的Wrap,开启访问日志后仍然会将真实错误记录 +var concealErrorSlice = []string{ErrorORM, ErrorRotaPointer} + +// ErrorMessage 错误显示信息,非debug模式有效 +func ErrorMessage(err error) (message string) { + if err == nil { + return "操作失败!~" + } + + message = err.Error() + for _, e := range concealErrorSlice { + if gstr.Contains(message, e) { + return "操作失败,请稍后重试!~" + } + } + return +} diff --git a/server/internal/consts/event.go b/server/internal/consts/event.go new file mode 100644 index 0000000..e3e6ca3 --- /dev/null +++ b/server/internal/consts/event.go @@ -0,0 +1,10 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +const ( + EventServerClose = "server.close" // 服务关闭事件 +) diff --git a/server/internal/consts/gencodes.go b/server/internal/consts/gencodes.go new file mode 100644 index 0000000..88da4e7 --- /dev/null +++ b/server/internal/consts/gencodes.go @@ -0,0 +1,96 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +import ( + "hotgo/internal/library/dict" + "hotgo/internal/model" +) + +// 生成代码类型 +const ( + GenCodesTypeCurd = 10 // 增删改查列表 + GenCodesTypeTree = 11 // 树列表 + GenCodesTypeQueue = 20 // 队列消费者 + GenCodesTypeCron = 30 // 定时任务 +) + +var GenCodesTypeNameMap = map[int]string{ + GenCodesTypeCurd: "增删改查列表", + GenCodesTypeTree: "关系树列表", + GenCodesTypeQueue: "队列消费者(未实现)", + GenCodesTypeCron: "定时任务(未实现)", +} + +var GenCodesTypeConfMap = map[int]string{ + GenCodesTypeCurd: "crud", + GenCodesTypeTree: "tree", + GenCodesTypeQueue: "queue", + GenCodesTypeCron: "cron", +} + +// 生成代码状态 +const ( + GenCodesStatusOk = 1 // 生成成功 + GenCodesStatusWait = 2 // 未生成 + GenCodesStatusFail = 3 // 生成失败 +) + +var GenCodesStatusNameMap = map[int]string{ + GenCodesStatusOk: "生成成功", + GenCodesStatusWait: "未生成", + GenCodesStatusFail: "生成失败", +} + +// 生成代码关联表方式 +const ( + GenCodesJoinLeft = 1 // 左关联 + GenCodesJoinRight = 2 // 右关联 + GenCodesJoinInner = 3 // 内关联 +) + +var GenCodesJoinNameMap = map[int]string{ + GenCodesJoinLeft: "左关联", + GenCodesJoinRight: "右关联", + GenCodesJoinInner: "内关联", +} + +var GenCodesJoinLinkMap = map[int]string{ + GenCodesJoinLeft: "LeftJoin", + GenCodesJoinRight: "RightJoin", + GenCodesJoinInner: "InnerJoin", +} + +// 生成代码的生成方式 +const ( + GenCodesBuildMethCreate = 1 // 创建 + GenCodesBuildMethCover = 2 // 覆盖 + GenCodesBuildMethSkip = 3 // 跳过 + GenCodesBuildIgnore = 4 // 不生成 +) + +var GenCodesBuildMethNameMap = map[int]string{ + GenCodesBuildMethCreate: "创建文件", + GenCodesBuildMethCover: "强制覆盖", + GenCodesBuildMethSkip: "已存在跳过", + GenCodesBuildIgnore: "不生成", +} + +const ( + GenCodesIndexPK = "PRI" // 主键索引 + GenCodesIndexUNI = "UNI" // 唯一索引 +) + +const ( + GenCodesTreeStyleTypeNormal = 1 // 普通树表格 + GenCodesTreeStyleTypeOption = 2 // 选项式树表 +) + +// GenCodesTreeStyleTypeOptions 树表样式选项 +var GenCodesTreeStyleTypeOptions = []*model.Option{ + dict.GenSuccessOption(GenCodesTreeStyleTypeNormal, "普通树表格"), + dict.GenInfoOption(GenCodesTreeStyleTypeOption, "选项式树表"), +} diff --git a/server/internal/consts/http.go b/server/internal/consts/http.go new file mode 100644 index 0000000..019168e --- /dev/null +++ b/server/internal/consts/http.go @@ -0,0 +1,63 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +import ( + "fmt" + "hotgo/internal/library/dict" + "hotgo/internal/model" + "net/http" + + "github.com/gogf/gf/v2/errors/gcode" +) + +func init() { + dict.RegisterEnums("HTTPMethod", "HTTP请求方式选项", HTTPMethodOptions) + dict.RegisterEnums("HTTPHandlerTime", "HTTP处理耗时选项", HTTPHandlerTimeOptions) + dict.RegisterEnums("HTTPApiCode", "HTTP接口状态码选项", HTTPApiCodeOptions) +} + +const ( + HTTPContentTypeXml = "text/xml" + HTTPContentTypeHtml = "text/html" + HTTPContentTypeStream = "text/event-stream" + HTTPContentTypeJson = "application/json" + HTTPContentTypeOctetStream = "application/octet-stream" +) + +// HTTPMethodOptions HTTP请求方式选项 +var HTTPMethodOptions = []*model.Option{ + dict.GenSuccessOption(http.MethodGet, "GET"), + dict.GenInfoOption(http.MethodPost, "POST"), + dict.GenSuccessOption(http.MethodPut, "PUT"), + dict.GenInfoOption(http.MethodDelete, "DELETE"), +} + +const ( + HTTPHandlerTime50 = "< 50" + HTTPHandlerTime200 = "< 200" + HTTPHandlerTime200To500 = "BETWEEN 200 AND 500" + HTTPHandlerTime500To1000 = "BETWEEN 500 AND 1000" + HTTPHandlerTime1000To10000 = "BETWEEN 1000 AND 10000" + HTTPHandlerTime10000UP = "> 10000" +) + +// HTTPHandlerTimeOptions HTTP处理耗时选项 +var HTTPHandlerTimeOptions = []*model.Option{ + dict.GenSuccessOption(HTTPHandlerTime50, "50ms以内"), + dict.GenInfoOption(HTTPHandlerTime200, "200ms以内"), + dict.GenSuccessOption(HTTPHandlerTime200To500, "200~500ms"), + dict.GenSuccessOption(HTTPHandlerTime500To1000, "500~1000ms"), + dict.GenInfoOption(HTTPHandlerTime1000To10000, "1000~10000ms"), + dict.GenInfoOption(HTTPHandlerTime10000UP, "10000ms以上"), +} + +// HTTPApiCodeOptions HTTP接口状态码选项 +var HTTPApiCodeOptions = []*model.Option{ + dict.GenSuccessOption(gcode.CodeOK.Code(), fmt.Sprintf("%v %v", gcode.CodeOK.Code(), "成功")), + dict.GenWarningOption(gcode.CodeNil.Code(), fmt.Sprintf("%v %v", gcode.CodeNil.Code(), "失败")), + dict.GenWarningOption(gcode.CodeSecurityReason.Code(), fmt.Sprintf("%v %v", gcode.CodeSecurityReason.Code(), "无访问权限")), +} diff --git a/server/internal/consts/notice.go b/server/internal/consts/notice.go new file mode 100644 index 0000000..ff4ea63 --- /dev/null +++ b/server/internal/consts/notice.go @@ -0,0 +1,13 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +// 公告类型 +const ( + NoticeTypeNotify = 1 // 通知 + NoticeTypeNotice = 2 // 公告 + NoticeTypeLetter = 3 // 私信 +) diff --git a/server/internal/consts/order.go b/server/internal/consts/order.go new file mode 100644 index 0000000..007a1f2 --- /dev/null +++ b/server/internal/consts/order.go @@ -0,0 +1,66 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +import ( + "hotgo/internal/library/dict" + "hotgo/internal/model" +) + +func init() { + dict.RegisterEnums("orderStatus", "订单状态", OrderStatusOptions) + dict.RegisterEnums("acceptRefundStatus", "订单退款受理状态", OrderAcceptRefundOptions) +} + +// 订单分组 +// 为不同的业务订单设置不同的分组,分组可以设置不同的业务回调方法 + +const ( + OrderGroupDefault = "order" // 普通订单 + OrderGroupAdminOrder = "admin_order" // 后台充值订单 + // 还可以设置其他,方便后期扩展.. +) + +// 订单类型 + +const ( + OrderTypeBalance = "balance" // 余额充值 + OrderTypeProduct = "product" // 购买产品 +) + +const ( + OrderStatusALL = -1 // 全部状态 + OrderStatusNotPay = 1 // 待付款 + OrderStatusPay = 2 // 已付款 + OrderStatusShipments = 3 // 已发货 + OrderStatusDone = 4 // 已完成 + OrderStatusClose = 5 // 已关闭 + OrderStatusReturnRequest = 6 // 申请退款 + OrderStatusReturning = 7 // 退款中 + OrderStatusReturned = 8 // 已退款 + OrderStatusReturnReject = 9 // 拒绝退款 +) + +// OrderStatusOptions 订单状态选项 +var OrderStatusOptions = []*model.Option{ + dict.GenInfoOption(OrderStatusALL, "全部"), + dict.GenInfoOption(OrderStatusNotPay, "待付款"), + dict.GenInfoOption(OrderStatusPay, "已付款"), + dict.GenInfoOption(OrderStatusShipments, "已发货"), + dict.GenSuccessOption(OrderStatusDone, "已完成"), + dict.GenDefaultOption(OrderStatusClose, "已关闭"), + dict.GenWarningOption(OrderStatusReturnRequest, "申请退款"), + dict.GenDefaultOption(OrderStatusReturning, "退款中"), + dict.GenErrorOption(OrderStatusReturned, "已退款"), + dict.GenWarningOption(OrderStatusReturnReject, "拒绝退款"), +} + +// OrderAcceptRefundOptions 订单退款受理状态 +var OrderAcceptRefundOptions = []*model.Option{ + dict.GenWarningOption(OrderStatusReturnRequest, "申请退款"), + dict.GenSuccessOption(OrderStatusReturned, "已退款"), + dict.GenErrorOption(OrderStatusReturnReject, "拒绝退款"), +} diff --git a/server/internal/consts/pay.go b/server/internal/consts/pay.go new file mode 100644 index 0000000..084dd4c --- /dev/null +++ b/server/internal/consts/pay.go @@ -0,0 +1,96 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +import ( + "hotgo/internal/library/dict" + "hotgo/internal/model" +) + +// 支付方式 + +func init() { + dict.RegisterEnums("payType", "支付方式", PayTypeOptions) + dict.RegisterEnums("payStatus", "支付状态", PayStatusOptions) +} + +const ( + PayTypeALL = "" // 全部 + PayTypeWxPay = "wxpay" // 微信支付 + PayTypeAliPay = "alipay" // 支付宝 + PayTypeQQPay = "qqpay" // QQ支付 +) + +var ( + PayTypeSlice = []string{ + PayTypeWxPay, PayTypeAliPay, PayTypeQQPay, + } + + PayTypeNameMap = map[string]string{ + PayTypeALL: "全部", + PayTypeWxPay: "微信支付", + PayTypeAliPay: "支付宝", + PayTypeQQPay: "QQ支付", + } +) + +// 交易方式 + +const ( + // 微信 + TradeTypeWxMP = "mp" // 公众号 + TradeTypeWxMini = "mini" // 小程序 + TradeTypeWxApp = "app" // APP + TradeTypeWxScan = "scan" // 二维码扫码 + TradeTypeWxPos = "pos" // 二维码收款 + TradeTypeWxH5 = "h5" // H5 + + // 支付宝 + TradeTypeAliWeb = "web" // 电脑网页 + TradeTypeAliApp = "app" // APP + TradeTypeAliScan = "scan" // 二维码扫码 + TradeTypeAliWap = "wap" // 手机网页 + TradeTypeAliPos = "pos" // 二维码收款 + + // QQ + TradeTypeQQWeb = "qqweb" // PC网页 + TradeTypeQQWap = "qqwap" // 移动端 +) + +var ( + TradeTypeWxSlice = []string{TradeTypeWxMP, TradeTypeWxMini, TradeTypeWxApp, TradeTypeWxScan, TradeTypeWxPos, TradeTypeWxH5} + TradeTypeAliSlice = []string{TradeTypeAliWeb, TradeTypeAliApp, TradeTypeAliScan, TradeTypeAliWap, TradeTypeAliPos} + TradeTypeQQSlice = []string{TradeTypeQQWeb, TradeTypeQQWap} +) + +// 支付状态 + +const ( + PayStatusWait = 1 // 待支付 + PayStatusOk = 2 // 已支付 +) + +// PayStatusOptions 支付状态选项 +var PayStatusOptions = []*model.Option{ + dict.GenDefaultOption(PayStatusWait, "待支付"), + dict.GenSuccessOption(PayStatusOk, "已支付"), +} + +// 退款状态 + +const ( + RefundStatusNo = 1 // 未退款 + RefundStatusApply = 2 // 申请退款 + RefundStatusReject = 3 // 拒绝退款 + RefundStatusAgree = 4 // 同意退款,已退款 +) + +// PayTypeOptions 支付方式选项 +var PayTypeOptions = []*model.Option{ + dict.GenSuccessOption(PayTypeWxPay, "微信支付"), + dict.GenInfoOption(PayTypeAliPay, "支付宝"), + dict.GenDefaultOption(PayTypeQQPay, "QQ支付"), +} diff --git a/server/internal/consts/pubsub.go b/server/internal/consts/pubsub.go new file mode 100644 index 0000000..eff5e9c --- /dev/null +++ b/server/internal/consts/pubsub.go @@ -0,0 +1,12 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +const ( + ClusterSyncSysconfig = "cluster.sync.sysConfig" // 系统配置 + ClusterSyncSysBlacklist = "cluster.sync.sysBlacklist" // 系统黑名单 + ClusterSyncSysSuperAdmin = "cluster.sync.superAdmin" // 超管 +) diff --git a/server/internal/consts/queue.go b/server/internal/consts/queue.go new file mode 100644 index 0000000..0aa91a4 --- /dev/null +++ b/server/internal/consts/queue.go @@ -0,0 +1,13 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +// 消息队列 +const ( + QueueLogTopic = `request_log` // 访问日志 + QueueLoginLogTopic = `login_log` // 登录日志 + QueueServeLogTopic = `serve_log` // 服务日志 +) diff --git a/server/internal/consts/role.go b/server/internal/consts/role.go new file mode 100644 index 0000000..eb2e846 --- /dev/null +++ b/server/internal/consts/role.go @@ -0,0 +1,90 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +// 数据范围 +const ( + RoleDataAll = 1 // 全部权限 + + // 通过部门划分 + RoleDataNowDept = 2 // 当前部门 + RoleDataDeptAndSub = 3 // 当前部门及以下部门 + RoleDataDeptCustom = 4 // 自定义部门 + + // 通过上下级关系划分 + RoleDataSelf = 5 // 仅自己 + RoleDataSelfAndSub = 6 // 自己和直属下级 + RoleDataSelfAndAllSub = 7 // 自己和全部下级 +) + +var RoleDataNameMap = map[int]string{ + RoleDataAll: "全部权限", + RoleDataNowDept: "当前部门", + RoleDataDeptAndSub: "当前及以下部门", + RoleDataDeptCustom: "自定义部门", + RoleDataSelf: "仅自己", + RoleDataSelfAndSub: "自己和直属下级", + RoleDataSelfAndAllSub: "自己和全部下级", +} + +type GroupScopeSelect struct { + Type string `json:"type,omitempty"` + Label string `json:"label"` + Key int `json:"key"` + Value int `json:"value,omitempty"` + Children []ScopeSelect `json:"children,omitempty"` +} + +type ScopeSelect struct { + Label string `json:"label"` + Value int `json:"value"` +} + +var DataScopeSelect = []GroupScopeSelect{ + { + Label: RoleDataNameMap[RoleDataAll], + Key: RoleDataAll, + Value: RoleDataAll, + }, + { + Type: "group", + Label: "按部门划分", + Key: -1, + Children: []ScopeSelect{ + { + Label: RoleDataNameMap[RoleDataNowDept], + Value: RoleDataNowDept, + }, + { + Label: RoleDataNameMap[RoleDataDeptAndSub], + Value: RoleDataDeptAndSub, + }, + { + Label: RoleDataNameMap[RoleDataDeptCustom], + Value: RoleDataDeptCustom, + }, + }, + }, + { + Type: "group", + Label: "按上下级关系划分", + Key: -2, + Children: []ScopeSelect{ + { + Label: RoleDataNameMap[RoleDataSelf], + Value: RoleDataSelf, + }, + { + Label: RoleDataNameMap[RoleDataSelfAndSub], + Value: RoleDataSelfAndSub, + }, + { + Label: RoleDataNameMap[RoleDataSelfAndAllSub], + Value: RoleDataSelfAndAllSub, + }, + }, + }, +} diff --git a/server/internal/consts/servelicense.go b/server/internal/consts/servelicense.go new file mode 100644 index 0000000..96e9dc8 --- /dev/null +++ b/server/internal/consts/servelicense.go @@ -0,0 +1,29 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +import ( + "hotgo/internal/library/dict" + "hotgo/internal/model" +) + +func init() { + dict.RegisterEnums("ServerLicenseGroupOptions", "服务授权分组选项", ServerLicenseGroupOptions) +} + +// 授权分组 +const ( + LicenseGroupDefault = "default" // 默认组 + LicenseGroupCron = "cron" // 定时任务 + LicenseGroupAuth = "auth" // 服务授权 +) + +// ServerLicenseGroupOptions 服务授权分组选项 +var ServerLicenseGroupOptions = []*model.Option{ + dict.GenWarningOption(LicenseGroupDefault, "默认组"), + dict.GenSuccessOption(LicenseGroupCron, "定时任务"), + dict.GenSuccessOption(LicenseGroupAuth, "服务授权"), +} diff --git a/server/internal/consts/sms.go b/server/internal/consts/sms.go new file mode 100644 index 0000000..2836e24 --- /dev/null +++ b/server/internal/consts/sms.go @@ -0,0 +1,33 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +// 短信驱动 +const ( + SmsDriveAliYun = "aliyun" // 阿里云 + SmsDriveTencent = "tencent" // 腾讯云 +) + +// 短信内置模板 +const ( + SmsTemplateCode = "code" // 通用验证码 + SmsTemplateLogin = "login" // 登录 + SmsTemplateRegister = "register" // 注册 + SmsTemplateResetPwd = "resetPwd" // 重置密码 + SmsTemplateBind = "bind" // 绑定手机号 + SmsTemplateCash = "cash" // 申请提现 +) + +var ( + SmsTemplateEventMap = map[string]string{ + SmsTemplateCode: "通用验证码", + SmsTemplateLogin: "登录", + SmsTemplateRegister: "注册", + SmsTemplateResetPwd: "重置密码", + SmsTemplateBind: "绑定手机号", + SmsTemplateCash: "申请提现", + } +) diff --git a/server/internal/consts/status.go b/server/internal/consts/status.go new file mode 100644 index 0000000..eb379f9 --- /dev/null +++ b/server/internal/consts/status.go @@ -0,0 +1,49 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +import ( + "hotgo/internal/library/dict" + "hotgo/internal/model" +) + +func init() { + dict.RegisterEnums("CodeStatusOptions", "验证码状态选项", CodeStatusOptions) + dict.RegisterEnums("BlacklistStatusOptions", "黑名单拉黑状态选项", BlacklistStatusOptions) +} + +// 状态码 +const ( + StatusALL int = -1 // 全部状态 + StatusEnabled int = 1 // 启用 + StatusDisable int = 2 // 禁用 + StatusDelete int = 3 // 已删除 +) + +var StatusSlice = []int{StatusALL, StatusEnabled, StatusDisable, StatusDelete} + +// 验证码状态 +const ( + CodeStatusNotUsed = 1 // 未使用 + CodeStatusUsed = 2 // 已使用 +) + +// CodeStatusOptions 验证码状态选项 +var CodeStatusOptions = []*model.Option{ + dict.GenWarningOption(CodeStatusNotUsed, "未使用"), + dict.GenSuccessOption(CodeStatusUsed, "已使用"), +} + +const ( + BlacklistStatusDisable = 1 // 封禁中 + BlacklistStatusEnabled = 2 // 已解封 +) + +// BlacklistStatusOptions 黑名单拉黑状态选项 +var BlacklistStatusOptions = []*model.Option{ + dict.GenWarningOption(BlacklistStatusDisable, "封禁中"), + dict.GenSuccessOption(BlacklistStatusEnabled, "已解封"), +} diff --git a/server/internal/consts/upload.go b/server/internal/consts/upload.go new file mode 100644 index 0000000..b760381 --- /dev/null +++ b/server/internal/consts/upload.go @@ -0,0 +1,16 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +// 上传存储驱动 +const ( + UploadDriveLocal = "local" // 本地驱动 + UploadDriveUCloud = "ucloud" // ucloud对象存储 + UploadDriveCos = "cos" // 腾讯云cos + UploadDriveOss = "oss" // 阿里云oss + UploadDriveQiNiu = "qiniu" // 七牛云对象存储 + UploadDriveMinio = "minio" // minio对象存储 +) diff --git a/server/internal/consts/version.go b/server/internal/consts/version.go new file mode 100644 index 0000000..0c77457 --- /dev/null +++ b/server/internal/consts/version.go @@ -0,0 +1,11 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2025 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +// VersionApp HotGo版本 +const ( + VersionApp = "2.18.9" +) diff --git a/server/internal/consts/wechat.go b/server/internal/consts/wechat.go new file mode 100644 index 0000000..54565fd --- /dev/null +++ b/server/internal/consts/wechat.go @@ -0,0 +1,18 @@ +// Package consts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package consts + +// 授权类型 +const ( + WechatAuthorizeOpenId = "openId" // 设置openid + WechatAuthorizeBindLogin = "bindLogin" // 绑定微信登录 +) + +// 应用授权作用域 +const ( + WechatScopeBase = "snsapi_base" // 只获取openid,无需用户授权 + WechatScopeUserinfo = "snsapi_userinfo" // 获取用户信息,需要授权 +) diff --git a/server/internal/controller/admin/admin/cash.go b/server/internal/controller/admin/admin/cash.go new file mode 100644 index 0000000..124b034 --- /dev/null +++ b/server/internal/controller/admin/admin/cash.go @@ -0,0 +1,60 @@ +// Package admin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package admin + +import ( + "context" + "hotgo/api/admin/cash" + "hotgo/internal/library/contexts" + "hotgo/internal/model/input/adminin" + "hotgo/internal/service" +) + +var ( + Cash = cCash{} +) + +type cCash struct{} + +// View 获取指定信息 +func (c *cCash) View(ctx context.Context, req *cash.ViewReq) (res *cash.ViewRes, err error) { + data, err := service.AdminCash().View(ctx, &req.CashViewInp) + if err != nil { + return + } + + res = new(cash.ViewRes) + res.CashViewModel = data + return +} + +// List 查看列表 +func (c *cCash) List(ctx context.Context, req *cash.ListReq) (res *cash.ListRes, err error) { + list, totalCount, err := service.AdminCash().List(ctx, &req.CashListInp) + if err != nil { + return + } + + res = new(cash.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Apply 申请提现 +func (c *cCash) Apply(ctx context.Context, req *cash.ApplyReq) (res *cash.ApplyRes, err error) { + err = service.AdminCash().Apply(ctx, &adminin.CashApplyInp{ + Money: req.Money, + MemberId: contexts.GetUserId(ctx), + }) + return +} + +// Payment 提现打款处理 +func (c *cCash) Payment(ctx context.Context, req *cash.PaymentReq) (res *cash.PaymentRes, err error) { + err = service.AdminCash().Payment(ctx, &req.CashPaymentInp) + return +} diff --git a/server/internal/controller/admin/admin/credits_log.go b/server/internal/controller/admin/admin/credits_log.go new file mode 100644 index 0000000..003fc82 --- /dev/null +++ b/server/internal/controller/admin/admin/credits_log.go @@ -0,0 +1,39 @@ +// Package admin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.5.3 +// @AutoGenerate Date 2023-04-15 15:59:58 +package admin + +import ( + "context" + "hotgo/api/admin/creditslog" + "hotgo/internal/service" +) + +var ( + CreditsLog = cCreditsLog{} +) + +type cCreditsLog struct{} + +// List 查看资产变动列表 +func (c *cCreditsLog) List(ctx context.Context, req *creditslog.ListReq) (res *creditslog.ListRes, err error) { + list, totalCount, err := service.AdminCreditsLog().List(ctx, &req.CreditsLogListInp) + if err != nil { + return + } + + res = new(creditslog.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Export 导出资产变动列表 +func (c *cCreditsLog) Export(ctx context.Context, req *creditslog.ExportReq) (res *creditslog.ExportRes, err error) { + err = service.AdminCreditsLog().Export(ctx, &req.CreditsLogListInp) + return +} diff --git a/server/internal/controller/admin/admin/dept.go b/server/internal/controller/admin/admin/dept.go new file mode 100644 index 0000000..5730ce6 --- /dev/null +++ b/server/internal/controller/admin/admin/dept.go @@ -0,0 +1,75 @@ +// Package admin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package admin + +import ( + "context" + "hotgo/api/admin/dept" + "hotgo/internal/service" +) + +var ( + Dept = cDept{} +) + +type cDept struct{} + +// Delete 删除 +func (c *cDept) Delete(ctx context.Context, req *dept.DeleteReq) (res *dept.DeleteRes, err error) { + err = service.AdminDept().Delete(ctx, &req.DeptDeleteInp) + return +} + +// Edit 更新 +func (c *cDept) Edit(ctx context.Context, req *dept.EditReq) (res *dept.EditRes, err error) { + err = service.AdminDept().Edit(ctx, &req.DeptEditInp) + return +} + +// MaxSort 最大排序 +func (c *cDept) MaxSort(ctx context.Context, req *dept.MaxSortReq) (res *dept.MaxSortRes, err error) { + res = new(dept.MaxSortRes) + res.DeptMaxSortModel, err = service.AdminDept().MaxSort(ctx, &req.DeptMaxSortInp) + return +} + +// View 获取指定信息 +func (c *cDept) View(ctx context.Context, req *dept.ViewReq) (res *dept.ViewRes, err error) { + res = new(dept.ViewRes) + res.DeptViewModel, err = service.AdminDept().View(ctx, &req.DeptViewInp) + return +} + +// List 查看列表 +func (c *cDept) List(ctx context.Context, req *dept.ListReq) (res *dept.ListRes, err error) { + data, err := service.AdminDept().List(ctx, &req.DeptListInp) + if err != nil || data == nil { + return + } + + res = (*dept.ListRes)(&data) + return +} + +// Option 获取部门选项树 +func (c *cDept) Option(ctx context.Context, req *dept.OptionReq) (res *dept.OptionRes, err error) { + list, totalCount, err := service.AdminDept().Option(ctx, &req.DeptOptionInp) + if err != nil { + return + } + + res = new(dept.OptionRes) + res.DeptOptionModel = list + res.PageRes.Pack(req, totalCount) + return +} + +// TreeOption 获取部门管理关系树选项 +func (c *cDept) TreeOption(ctx context.Context, req *dept.TreeOptionReq) (res *dept.TreeOptionRes, err error) { + data, err := service.AdminDept().TreeOption(ctx) + res = (*dept.TreeOptionRes)(&data) + return +} diff --git a/server/internal/controller/admin/admin/member.go b/server/internal/controller/admin/admin/member.go new file mode 100644 index 0000000..6724e58 --- /dev/null +++ b/server/internal/controller/admin/admin/member.go @@ -0,0 +1,145 @@ +// Package admin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package admin + +import ( + "context" + "github.com/gogf/gf/v2/errors/gerror" + "hotgo/api/admin/member" + "hotgo/internal/library/contexts" + "hotgo/internal/model/input/adminin" + "hotgo/internal/service" +) + +var ( + Member = cMember{} +) + +type cMember struct{} + +// UpdateCash 修改代理商提现信息 +func (c *cMember) UpdateCash(ctx context.Context, req *member.UpdateCashReq) (res *member.UpdateCashRes, err error) { + err = service.AdminMember().UpdateCash(ctx, &req.MemberUpdateCashInp) + return +} + +// UpdateEmail 换绑邮箱 +func (c *cMember) UpdateEmail(ctx context.Context, req *member.UpdateEmailReq) (res *member.UpdateEmailRes, err error) { + err = service.AdminMember().UpdateEmail(ctx, &req.MemberUpdateEmailInp) + return +} + +// UpdateMobile 换绑手机号 +func (c *cMember) UpdateMobile(ctx context.Context, req *member.UpdateMobileReq) (res *member.UpdateMobileRes, err error) { + err = service.AdminMember().UpdateMobile(ctx, &req.MemberUpdateMobileInp) + return +} + +// UpdateProfile 更新用户资料 +func (c *cMember) UpdateProfile(ctx context.Context, req *member.UpdateProfileReq) (res *member.UpdateProfileRes, err error) { + err = service.AdminMember().UpdateProfile(ctx, &req.MemberUpdateProfileInp) + return +} + +// UpdatePwd 修改登录密码 +func (c *cMember) UpdatePwd(ctx context.Context, req *member.UpdatePwdReq) (res *member.UpdatePwdRes, err error) { + var memberId = contexts.Get(ctx).User.Id + if memberId <= 0 { + err = gerror.New("获取用户信息失败!") + return + } + + err = service.AdminMember().UpdatePwd(ctx, &adminin.MemberUpdatePwdInp{ + Id: memberId, + OldPassword: req.OldPassword, + NewPassword: req.NewPassword, + }) + return +} + +// ResetPwd 重置密码 +func (c *cMember) ResetPwd(ctx context.Context, req *member.ResetPwdReq) (res *member.ResetPwdRes, err error) { + err = service.AdminMember().ResetPwd(ctx, &req.MemberResetPwdInp) + return +} + +// MemberInfo 登录用户信息 +func (c *cMember) MemberInfo(ctx context.Context, _ *member.InfoReq) (res *member.InfoRes, err error) { + data, err := service.AdminMember().LoginMemberInfo(ctx) + if err != nil { + return + } + + res = new(member.InfoRes) + res.LoginMemberInfoModel = data + return +} + +// Delete 删除用户 +func (c *cMember) Delete(ctx context.Context, req *member.DeleteReq) (res *member.DeleteRes, err error) { + err = service.AdminMember().Delete(ctx, &req.MemberDeleteInp) + return +} + +// Edit 修改/新增用户 +func (c *cMember) Edit(ctx context.Context, req *member.EditReq) (res *member.EditRes, err error) { + err = service.AdminMember().Edit(ctx, &req.MemberEditInp) + return +} + +// View 获取指定用户信息 +func (c *cMember) View(ctx context.Context, req *member.ViewReq) (res *member.ViewRes, err error) { + data, err := service.AdminMember().View(ctx, &req.MemberViewInp) + if err != nil { + return + } + + res = new(member.ViewRes) + res.MemberViewModel = data + return +} + +// List 查看用户列表 +func (c *cMember) List(ctx context.Context, req *member.ListReq) (res *member.ListRes, err error) { + list, totalCount, err := service.AdminMember().List(ctx, &req.MemberListInp) + if err != nil { + return + } + + res = new(member.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Status 更新用户状态 +func (c *cMember) Status(ctx context.Context, req *member.StatusReq) (res *member.StatusRes, err error) { + err = service.AdminMember().Status(ctx, &req.MemberStatusInp) + return +} + +// Select 获取可选的后台用户选项 +func (c *cMember) Select(ctx context.Context, req *member.SelectReq) (res *member.SelectRes, err error) { + data, err := service.AdminMember().Select(ctx, &req.MemberSelectInp) + if err != nil { + return + } + + res = (*member.SelectRes)(&data) + return +} + +// AddBalance 增加用户余额 +func (c *cMember) AddBalance(ctx context.Context, req *member.AddBalanceReq) (res *member.AddBalanceRes, err error) { + err = service.AdminMember().AddBalance(ctx, &req.MemberAddBalanceInp) + return +} + +// AddIntegral 增加用户积分 +func (c *cMember) AddIntegral(ctx context.Context, req *member.AddIntegralReq) (res *member.AddIntegralRes, err error) { + err = service.AdminMember().AddIntegral(ctx, &req.MemberAddIntegralInp) + return +} diff --git a/server/internal/controller/admin/admin/menu.go b/server/internal/controller/admin/admin/menu.go new file mode 100644 index 0000000..3bd2de5 --- /dev/null +++ b/server/internal/controller/admin/admin/menu.go @@ -0,0 +1,37 @@ +// Package admin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package admin + +import ( + "context" + "hotgo/api/admin/menu" + "hotgo/internal/service" +) + +// Menu 菜单 +var ( + Menu = cMenu{} +) + +type cMenu struct{} + +// Delete 删除 +func (c *cMenu) Delete(ctx context.Context, req *menu.DeleteReq) (res *menu.DeleteRes, err error) { + err = service.AdminMenu().Delete(ctx, &req.MenuDeleteInp) + return +} + +// Edit 更新 +func (c *cMenu) Edit(ctx context.Context, req *menu.EditReq) (res *menu.EditRes, err error) { + err = service.AdminMenu().Edit(ctx, &req.MenuEditInp) + return +} + +// List 获取列表 +func (c *cMenu) List(ctx context.Context, req *menu.ListReq) (res menu.ListRes, err error) { + res.MenuListModel, err = service.AdminMenu().List(ctx, &req.MenuListInp) + return +} diff --git a/server/internal/controller/admin/admin/monitor.go b/server/internal/controller/admin/admin/monitor.go new file mode 100644 index 0000000..2a8a936 --- /dev/null +++ b/server/internal/controller/admin/admin/monitor.go @@ -0,0 +1,243 @@ +// Package admin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package admin + +import ( + "context" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/os/gtime" + "github.com/gogf/gf/v2/text/gstr" + "hotgo/api/admin/monitor" + "hotgo/internal/consts" + "hotgo/internal/dao" + "hotgo/internal/model/entity" + "hotgo/internal/model/input/form" + "hotgo/internal/service" + "hotgo/internal/websocket" + "hotgo/utility/simple" + "hotgo/utility/useragent" + "sort" +) + +// Monitor 监控 +var Monitor = cMonitor{ + wsManager: websocket.Manager(), +} + +type cMonitor struct { + wsManager *websocket.ClientManager +} + +// UserOffline 下线用户 +func (c *cMonitor) UserOffline(ctx context.Context, req *monitor.UserOfflineReq) (res *monitor.UserOfflineRes, err error) { + client := c.wsManager.GetClient(req.Id) + if client == nil { + err = gerror.New("客户端已离线") + return + } + + simple.SafeGo(ctx, func(ctx context.Context) { + websocket.SendSuccess(client, "kick") + websocket.Close(client) + }) + return +} + +// UserOnlineList 获取用户在线列表 +func (c *cMonitor) UserOnlineList(ctx context.Context, req *monitor.UserOnlineListReq) (res *monitor.UserOnlineListRes, err error) { + var ( + clients []*monitor.UserOnlineModel + i int + ) + + if c.wsManager.GetClientsLen() == 0 { + return + } + + for conn := range c.wsManager.GetClients() { + if conn.SendClose || conn.User == nil { + continue + } + + if req.UserId > 0 && req.UserId != conn.User.Id { + continue + } + + if req.Username != "" && req.Username != conn.User.Username { + continue + } + + if req.IP != "" && !gstr.Contains(conn.IP, req.IP) { + continue + } + + if len(req.FirstTime) == 2 && (conn.User.LoginAt.Before(req.FirstTime[0]) || conn.User.LoginAt.After(req.FirstTime[1])) { + continue + } + + clients = append(clients, &monitor.UserOnlineModel{ + ID: conn.ID, + IP: conn.IP, + Os: useragent.GetOs(conn.UserAgent), + Browser: useragent.GetBrowser(conn.UserAgent), + FirstTime: conn.User.LoginAt.Unix(), + HeartbeatTime: conn.HeartbeatTime, + App: conn.User.App, + UserId: conn.User.Id, + Username: conn.User.Username, + Avatar: conn.User.Avatar, + }) + } + + res = new(monitor.UserOnlineListRes) + res.PageRes.Pack(req, len(clients)) + + sort.Slice(clients, func(i, j int) bool { + if clients[i].FirstTime == clients[j].FirstTime { + return clients[i].ID < clients[j].ID + } + return clients[i].FirstTime < clients[j].FirstTime + }) + + _, perPage, offset := form.CalPage(req.Page, req.PerPage) + for k, v := range clients { + if k >= offset && i <= perPage { + if simple.IsDemo(ctx) { + v.IP = consts.DemoTips + } + res.List = append(res.List, v) + i++ + } + } + return +} + +// NetOnlineList 获取服务在线列表 +func (c *cMonitor) NetOnlineList(ctx context.Context, req *monitor.NetOnlineListReq) (res *monitor.NetOnlineListRes, err error) { + var ( + clients []*monitor.NetOnlineModel + i int + cols = dao.SysServeLicense.Columns() + serv = service.TCPServer().Instance() + models *entity.SysServeLicense + ) + + conns := serv.GetClients() + if len(conns) == 0 { + res = new(monitor.NetOnlineListRes) + res.PageRes.Pack(req, 0) + return + } + + for _, conn := range conns { + v := &monitor.NetOnlineModel{ + AuthMeta: conn.Auth, + Id: conn.CID, + IsAuth: conn.Auth != nil, + Addr: conn.RemoteAddr().String(), + Port: gstr.SubStrFromEx(conn.LocalAddr().String(), `:`), + FirstTime: conn.FirstTime, + HeartbeatTime: conn.Heartbeat, + Proto: "TCP", + } + + if v.IsAuth { + if err = dao.SysServeLicense.Ctx(ctx).Where(cols.Appid, conn.Auth.AppId).Where(cols.Group, conn.Auth.Group).Scan(&models); err != nil { + return + } + + if models == nil { + continue + } + + v.LicenseId = models.Id + v.LicenseName = models.Name + v.LoginTimes = models.LoginTimes + v.Online = serv.GetAppIdOnline(models.Appid) + v.OnlineLimit = models.OnlineLimit + } + + if req.Addr != "" && !gstr.Contains(v.Addr, req.Addr) { + continue + } + + if req.Name != "" && !gstr.Contains(v.Name, req.Name) { + continue + } + + if req.Group != "" && (!v.IsAuth || v.Group != req.Group) { + continue + } + + if req.AppId != "" && (!v.IsAuth || v.AppId != req.AppId) { + continue + } + + ft := gtime.New(conn.FirstTime) + if len(req.FirstTime) == 2 && (ft.Before(req.FirstTime[0]) || ft.After(req.FirstTime[1])) { + continue + } + clients = append(clients, v) + } + + res = new(monitor.NetOnlineListRes) + res.PageRes.Pack(req, len(clients)) + + sort.Slice(clients, func(i, j int) bool { + return clients[i].Id > clients[j].Id + }) + + _, perPage, offset := form.CalPage(req.Page, req.PerPage) + for k, v := range clients { + if k >= offset && i <= perPage { + res.List = append(res.List, v) + i++ + } + } + return +} + +// NetOption 获取服务选项 +func (c *cMonitor) NetOption(ctx context.Context, req *monitor.NetOptionReq) (res *monitor.NetOptionRes, err error) { + res = new(monitor.NetOptionRes) + + for _, v := range service.TCPServer().Instance().GetRoutes() { + // 无需勾选的路由 + disabled := false + if v.Id == "ServerLoginReq" || v.Id == "ServerHeartbeatReq" { + disabled = true + } + + res.Routes = append(res.Routes, &monitor.RouteSelect{ + Value: v.Id, + Label: v.Id, + Disabled: disabled, + IsRPC: v.IsRPC, + }) + } + + sort.Slice(res.Routes, func(i, j int) bool { + if res.Routes[i].IsRPC && !res.Routes[j].IsRPC { + return true + } else if !res.Routes[i].IsRPC && res.Routes[j].IsRPC { + return false + } + return res.Routes[i].Label < res.Routes[j].Label + }) + return +} + +// NetOffline 下线服务 +func (c *cMonitor) NetOffline(ctx context.Context, req *monitor.NetOfflineReq) (res *monitor.NetOfflineRes, err error) { + conn := service.TCPServer().Instance().GetClientById(req.Id) + if conn == nil { + err = gerror.New("客户端不在线") + return + } + // 关闭连接 + conn.Close() + return +} diff --git a/server/internal/controller/admin/admin/notice.go b/server/internal/controller/admin/admin/notice.go new file mode 100644 index 0000000..068e71c --- /dev/null +++ b/server/internal/controller/admin/admin/notice.go @@ -0,0 +1,127 @@ +// Package admin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package admin + +import ( + "context" + "hotgo/api/admin/notice" + "hotgo/internal/consts" + "hotgo/internal/service" +) + +var ( + Notice = cNotice{} +) + +type cNotice struct{} + +// Delete 删除 +func (c *cNotice) Delete(ctx context.Context, req *notice.DeleteReq) (res *notice.DeleteRes, err error) { + err = service.AdminNotice().Delete(ctx, &req.NoticeDeleteInp) + return +} + +// Edit 更新 +func (c *cNotice) Edit(ctx context.Context, req *notice.EditReq) (res *notice.EditRes, err error) { + err = service.AdminNotice().Edit(ctx, &req.NoticeEditInp) + return +} + +// MaxSort 最大排序 +func (c *cNotice) MaxSort(ctx context.Context, req *notice.MaxSortReq) (res *notice.MaxSortRes, err error) { + res = new(notice.MaxSortRes) + res.NoticeMaxSortModel, err = service.AdminNotice().MaxSort(ctx, &req.NoticeMaxSortInp) + return +} + +// View 获取指定信息 +func (c *cNotice) View(ctx context.Context, req *notice.ViewReq) (res *notice.ViewRes, err error) { + data, err := service.AdminNotice().View(ctx, &req.NoticeViewInp) + if err != nil { + return + } + + res = new(notice.ViewRes) + res.NoticeViewModel = data + return +} + +// List 查看列表 +func (c *cNotice) List(ctx context.Context, req *notice.ListReq) (res *notice.ListRes, err error) { + list, totalCount, err := service.AdminNotice().List(ctx, &req.NoticeListInp) + if err != nil { + return nil, err + } + + res = new(notice.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Status 更新状态 +func (c *cNotice) Status(ctx context.Context, req *notice.StatusReq) (res *notice.StatusRes, err error) { + err = service.AdminNotice().Status(ctx, &req.NoticeStatusInp) + return +} + +// Notify 更新通知 +func (c *cNotice) Notify(ctx context.Context, req *notice.EditNotifyReq) (res *notice.EditNotifyRes, err error) { + req.Type = consts.NoticeTypeNotify + err = service.AdminNotice().Edit(ctx, &req.NoticeEditInp) + return +} + +// Notice 更新公告 +func (c *cNotice) Notice(ctx context.Context, req *notice.EditNoticeReq) (res *notice.EditNoticeRes, err error) { + req.Type = consts.NoticeTypeNotice + err = service.AdminNotice().Edit(ctx, &req.NoticeEditInp) + return +} + +// Letter 更新私信 +func (c *cNotice) Letter(ctx context.Context, req *notice.EditLetterReq) (res *notice.EditLetterRes, err error) { + req.Type = consts.NoticeTypeLetter + err = service.AdminNotice().Edit(ctx, &req.NoticeEditInp) + return +} + +// UpRead 更新已读 +func (c *cNotice) UpRead(ctx context.Context, req *notice.UpReadReq) (res *notice.UpReadRes, err error) { + err = service.AdminNotice().UpRead(ctx, &req.NoticeUpReadInp) + return +} + +// PullMessages 拉取未读消息列表 +func (c *cNotice) PullMessages(ctx context.Context, req *notice.PullMessagesReq) (res *notice.PullMessagesRes, err error) { + data, err := service.AdminNotice().PullMessages(ctx, &req.PullMessagesInp) + if err != nil { + return + } + + res = new(notice.PullMessagesRes) + res.PullMessagesModel = data + return +} + +// ReadAll 全部已读 +func (c *cNotice) ReadAll(ctx context.Context, req *notice.ReadAllReq) (res *notice.ReadAllRes, err error) { + err = service.AdminNotice().ReadAll(ctx, &req.NoticeReadAllInp) + return +} + +// MessageList 我的消息列表 +func (c *cNotice) MessageList(ctx context.Context, req *notice.MessageListReq) (res *notice.MessageListRes, err error) { + list, totalCount, err := service.AdminNotice().MessageList(ctx, &req.NoticeMessageListInp) + if err != nil { + return + } + + res = new(notice.MessageListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} diff --git a/server/internal/controller/admin/admin/order.go b/server/internal/controller/admin/admin/order.go new file mode 100644 index 0000000..5f6e2de --- /dev/null +++ b/server/internal/controller/admin/admin/order.go @@ -0,0 +1,91 @@ +// Package admin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package admin + +import ( + "context" + "hotgo/api/admin/order" + "hotgo/internal/service" +) + +var ( + Order = cOrder{} +) + +type cOrder struct{} + +// AcceptRefund 受理申请退款 +func (c *cOrder) AcceptRefund(ctx context.Context, req *order.AcceptRefundReq) (res *order.AcceptRefundRes, err error) { + err = service.AdminOrder().AcceptRefund(ctx, &req.OrderAcceptRefundInp) + return +} + +// ApplyRefund 申请退款 +func (c *cOrder) ApplyRefund(ctx context.Context, req *order.ApplyRefundReq) (res *order.ApplyRefundRes, err error) { + err = service.AdminOrder().ApplyRefund(ctx, &req.OrderApplyRefundInp) + return +} + +// Create 创建充值订单 +func (c *cOrder) Create(ctx context.Context, req *order.CreateReq) (res *order.CreateRes, err error) { + data, err := service.AdminOrder().Create(ctx, &req.OrderCreateInp) + if err != nil { + return + } + + res = new(order.CreateRes) + res.OrderCreateModel = data + return +} + +// List 查看充值订单列表 +func (c *cOrder) List(ctx context.Context, req *order.ListReq) (res *order.ListRes, err error) { + list, totalCount, err := service.AdminOrder().List(ctx, &req.OrderListInp) + if err != nil { + return + } + + res = new(order.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Export 导出充值订单列表 +func (c *cOrder) Export(ctx context.Context, req *order.ExportReq) (res *order.ExportRes, err error) { + err = service.AdminOrder().Export(ctx, &req.OrderListInp) + return +} + +// Edit 更新充值订单 +func (c *cOrder) Edit(ctx context.Context, req *order.EditReq) (res *order.EditRes, err error) { + err = service.AdminOrder().Edit(ctx, &req.OrderEditInp) + return +} + +// View 获取指定充值订单信息 +func (c *cOrder) View(ctx context.Context, req *order.ViewReq) (res *order.ViewRes, err error) { + data, err := service.AdminOrder().View(ctx, &req.OrderViewInp) + if err != nil { + return + } + + res = new(order.ViewRes) + res.OrderViewModel = data + return +} + +// Delete 删除充值订单 +func (c *cOrder) Delete(ctx context.Context, req *order.DeleteReq) (res *order.DeleteRes, err error) { + err = service.AdminOrder().Delete(ctx, &req.OrderDeleteInp) + return +} + +// Status 更新充值订单状态 +func (c *cOrder) Status(ctx context.Context, req *order.StatusReq) (res *order.StatusRes, err error) { + err = service.AdminOrder().Status(ctx, &req.OrderStatusInp) + return +} diff --git a/server/internal/controller/admin/admin/post.go b/server/internal/controller/admin/admin/post.go new file mode 100644 index 0000000..2c2faf8 --- /dev/null +++ b/server/internal/controller/admin/admin/post.go @@ -0,0 +1,67 @@ +// Package admin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package admin + +import ( + "context" + "hotgo/api/admin/post" + "hotgo/internal/service" +) + +// Post 岗位 +var Post = cPost{} + +type cPost struct{} + +// Delete 删除 +func (c *cPost) Delete(ctx context.Context, req *post.DeleteReq) (res *post.DeleteRes, err error) { + err = service.AdminPost().Delete(ctx, &req.PostDeleteInp) + return +} + +// Edit 修改/新增 +func (c *cPost) Edit(ctx context.Context, req *post.EditReq) (res *post.EditRes, err error) { + err = service.AdminPost().Edit(ctx, &req.PostEditInp) + return +} + +// MaxSort 最大排序 +func (c *cPost) MaxSort(ctx context.Context, req *post.MaxSortReq) (res *post.MaxSortRes, err error) { + res = new(post.MaxSortRes) + res.PostMaxSortModel, err = service.AdminPost().MaxSort(ctx, &req.PostMaxSortInp) + return +} + +// View 获取指定信息 +func (c *cPost) View(ctx context.Context, req *post.ViewReq) (res *post.ViewRes, err error) { + data, err := service.AdminPost().View(ctx, &req.PostViewInp) + if err != nil { + return + } + + res = new(post.ViewRes) + res.PostViewModel = data + return +} + +// List 获取列表 +func (c *cPost) List(ctx context.Context, req *post.ListReq) (res *post.ListRes, err error) { + list, totalCount, err := service.AdminPost().List(ctx, &req.PostListInp) + if err != nil { + return + } + + res = new(post.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Status 更新状态 +func (c *cPost) Status(ctx context.Context, req *post.StatusReq) (res *post.StatusRes, err error) { + err = service.AdminPost().Status(ctx, &req.PostStatusInp) + return +} diff --git a/server/internal/controller/admin/admin/role.go b/server/internal/controller/admin/admin/role.go new file mode 100644 index 0000000..92e626c --- /dev/null +++ b/server/internal/controller/admin/admin/role.go @@ -0,0 +1,81 @@ +// Package admin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package admin + +import ( + "context" + "hotgo/api/admin/role" + "hotgo/internal/consts" + "hotgo/internal/library/contexts" + "hotgo/internal/service" +) + +var ( + Role = cRole{} +) + +type cRole struct{} + +// List 获取列表 +func (c *cRole) List(ctx context.Context, req *role.ListReq) (res *role.ListRes, err error) { + list, totalCount, err := service.AdminRole().List(ctx, &req.RoleListInp) + if err != nil { + return + } + + res = new(role.ListRes) + res.RoleListModel = list + res.PageRes.Pack(req, totalCount) + return +} + +// Edit 修改角色 +func (c *cRole) Edit(ctx context.Context, req *role.EditReq) (res *role.EditRes, err error) { + err = service.AdminRole().Edit(ctx, &req.RoleEditInp) + return +} + +// Delete 删除 +func (c *cRole) Delete(ctx context.Context, req *role.DeleteReq) (res *role.DeleteRes, err error) { + err = service.AdminRole().Delete(ctx, &req.RoleDeleteInp) + return +} + +// Dynamic 动态路由 +func (c *cRole) Dynamic(ctx context.Context, _ *role.DynamicReq) (res *role.DynamicRes, err error) { + return service.AdminMenu().GetMenuList(ctx, contexts.GetUserId(ctx)) +} + +// GetPermissions 获取指定角色权限 +func (c *cRole) GetPermissions(ctx context.Context, req *role.GetPermissionsReq) (res *role.GetPermissionsRes, err error) { + data, err := service.AdminRole().GetPermissions(ctx, &req.GetPermissionsInp) + if err != nil { + return + } + + res = new(role.GetPermissionsRes) + res.GetPermissionsModel = data + return +} + +// UpdatePermissions 修改角色菜单权限 +func (c *cRole) UpdatePermissions(ctx context.Context, req *role.UpdatePermissionsReq) (res *role.UpdatePermissionsRes, err error) { + err = service.AdminRole().UpdatePermissions(ctx, &req.UpdatePermissionsInp) + return +} + +// DataScopeSelect 获取数据权限选项 +func (c *cRole) DataScopeSelect(_ context.Context, _ *role.DataScopeSelectReq) (res *role.DataScopeSelectRes, err error) { + res = new(role.DataScopeSelectRes) + res.List = consts.DataScopeSelect + return +} + +// DataScopeEdit 获取数据权限选项 +func (c *cRole) DataScopeEdit(ctx context.Context, req *role.DataScopeEditReq) (res *role.DataScopeEditRes, err error) { + err = service.AdminRole().DataScopeEdit(ctx, &req.DataScopeEditInp) + return +} diff --git a/server/internal/controller/admin/common/console.go b/server/internal/controller/admin/common/console.go new file mode 100644 index 0000000..9b2eaf6 --- /dev/null +++ b/server/internal/controller/admin/common/console.go @@ -0,0 +1,42 @@ +// Package common +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package common + +import ( + "context" + "hotgo/api/admin/common" +) + +var Console = cConsole{} + +type cConsole struct{} + +// Stat 综合数据统计 +func (c *cConsole) Stat(_ context.Context, _ *common.ConsoleStatReq) (res *common.ConsoleStatRes, err error) { + res = new(common.ConsoleStatRes) + + // 此处均为模拟数据,可以根据实际业务情况替换成真实数据 + + res.Visits.DayVisits = 12010 + res.Visits.Rise = 13501 + res.Visits.Decline = 10502 + res.Visits.Amount = 10403 + + res.Saleroom.WeekSaleroom = 20501 + res.Saleroom.Amount = 21002 + res.Saleroom.Degree = 83.66 + + res.OrderLarge.WeekLarge = 39901 + res.OrderLarge.Rise = 31012 + res.OrderLarge.Decline = 30603 + res.OrderLarge.Amount = 36084 + + res.Volume.WeekLarge = 40021 + res.Volume.Rise = 40202 + res.Volume.Decline = 45003 + res.Volume.Amount = 49004 + return +} diff --git a/server/internal/controller/admin/common/ems.go b/server/internal/controller/admin/common/ems.go new file mode 100644 index 0000000..5c70c4e --- /dev/null +++ b/server/internal/controller/admin/common/ems.go @@ -0,0 +1,75 @@ +// Package common +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package common + +import ( + "context" + "github.com/gogf/gf/v2/errors/gerror" + "hotgo/api/admin/common" + "hotgo/internal/consts" + "hotgo/internal/dao" + "hotgo/internal/library/contexts" + "hotgo/internal/model/entity" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var Ems = new(cEms) + +type cEms struct{} + +// SendTest 发送测试邮件 +func (c *cEms) SendTest(ctx context.Context, req *common.SendTestEmailReq) (res *common.SendTestEmailRes, err error) { + err = service.SysEmsLog().Send(ctx, &sysin.SendEmsInp{ + Event: consts.EmsTemplateText, + Email: req.To, + Content: ` + + + + + 这是一封来自HotGo的测试邮件 + + + 这是您通过HotGo后台发送的测试邮件。当你收到这封邮件的时候,说明已经联调成功了,恭喜你! + + `, + }) + return +} + +// SendBindEms 发送换绑邮件 +func (c *cEms) SendBindEms(ctx context.Context, _ *common.SendBindEmsReq) (res *common.SendBindEmsRes, err error) { + var ( + memberId = contexts.GetUserId(ctx) + models *entity.AdminMember + ) + + if memberId <= 0 { + err = gerror.New("用户身份异常,请重新登录!") + return + } + + if err = dao.AdminMember.Ctx(ctx).Fields(dao.AdminMember.Columns().Email).Where(dao.AdminMember.Columns().Id, memberId).Scan(&models); err != nil { + return + } + + if models == nil { + err = gerror.New("用户信息不存在") + return + } + + if models.Email == "" { + err = gerror.New("未绑定邮箱无需发送") + return + } + + err = service.SysEmsLog().Send(ctx, &sysin.SendEmsInp{ + Event: consts.EmsTemplateBind, + Email: models.Email, + }) + return +} diff --git a/server/internal/controller/admin/common/site.go b/server/internal/controller/admin/common/site.go new file mode 100644 index 0000000..6dc1a31 --- /dev/null +++ b/server/internal/controller/admin/common/site.go @@ -0,0 +1,156 @@ +// Package common +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package common + +import ( + "context" + "github.com/gogf/gf/v2/i18n/gi18n" + "hotgo/api/admin/common" + "hotgo/internal/consts" + "hotgo/internal/library/captcha" + "hotgo/internal/library/token" + "hotgo/internal/service" + "hotgo/utility/validate" + + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/net/ghttp" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gconv" + "github.com/gogf/gf/v2/util/gmode" +) + +var Site = cSite{} + +type cSite struct{} + +// Ping ping +func (c *cSite) Ping(_ context.Context, _ *common.SitePingReq) (res *common.SitePingRes, err error) { + return +} + +// Config 获取配置 +func (c *cSite) Config(ctx context.Context, _ *common.SiteConfigReq) (res *common.SiteConfigRes, err error) { + request := ghttp.RequestFromCtx(ctx) + res = &common.SiteConfigRes{ + Version: consts.VersionApp, + WsAddr: c.getWsAddr(ctx, request), + Domain: c.getDomain(ctx, request), + Mode: gmode.Mode(), + } + return +} + +func (c *cSite) getWsAddr(ctx context.Context, request *ghttp.Request) string { + // 如果是本地IP访问,则认为是调试模式,走实际请求地址,否则走配置中的地址 + // 尝试读取hostname,兼容本地运行模式 + ip := ghttp.RequestFromCtx(ctx).GetHeader("hostname") + if len(ip) == 0 { + ip = ghttp.RequestFromCtx(ctx).GetHost() + } + + if validate.IsLocalIPAddr(ip) { + return "ws://" + ip + ":" + gstr.StrEx(request.Host, ":") + g.Cfg().MustGet(ctx, "router.websocket.prefix").String() + } + + basic, err := service.SysConfig().GetBasic(ctx) + if err != nil || basic == nil { + return "" + } + return basic.WsAddr +} + +func (c *cSite) getDomain(ctx context.Context, request *ghttp.Request) string { + // 如果是本地IP访问,则认为是调试模式,走实际请求地址,否则走配置中的地址 + // 尝试读取hostname,兼容本地运行模式 + ip := ghttp.RequestFromCtx(ctx).GetHeader("hostname") + if len(ip) == 0 { + ip = ghttp.RequestFromCtx(ctx).GetHost() + } + + if validate.IsLocalIPAddr(ip) { + return "http://" + ip + ":" + gstr.StrEx(request.Host, ":") + } + + basic, err := service.SysConfig().GetBasic(ctx) + if err != nil || basic == nil { + return "" + } + return basic.Domain +} + +// LoginConfig 登录配置 +func (c *cSite) LoginConfig(ctx context.Context, _ *common.SiteLoginConfigReq) (res *common.SiteLoginConfigRes, err error) { + res = new(common.SiteLoginConfigRes) + login, err := service.SysConfig().GetLogin(ctx) + if err != nil { + return + } + + res.LoginConfig = login + res.I18nSwitch = g.Cfg().MustGet(ctx, "system.i18n.switch", true).Bool() + res.DefaultLanguage = g.Cfg().MustGet(ctx, "system.i18n.defaultLanguage", consts.SysDefaultLanguage).String() + res.ProjectName = gi18n.T(ctx, "HotGo管理系统") + return +} + +// Captcha 登录验证码 +func (c *cSite) Captcha(ctx context.Context, _ *common.LoginCaptchaReq) (res *common.LoginCaptchaRes, err error) { + loginConf, err := service.SysConfig().GetLogin(ctx) + if err != nil { + return + } + cid, base64 := captcha.Generate(ctx, loginConf.CaptchaType) + res = &common.LoginCaptchaRes{Cid: cid, Base64: base64} + return +} + +// Register 账号注册 +func (c *cSite) Register(ctx context.Context, req *common.RegisterReq) (res *common.RegisterRes, err error) { + err = service.AdminSite().Register(ctx, &req.RegisterInp) + return +} + +// AccountLogin 账号登录 +func (c *cSite) AccountLogin(ctx context.Context, req *common.AccountLoginReq) (res *common.AccountLoginRes, err error) { + login, err := service.SysConfig().GetLogin(ctx) + if err != nil { + return + } + + if !req.IsLock && login.CaptchaSwitch == consts.StatusEnabled { + // 校验 验证码 + if !captcha.Verify(req.Cid, req.Code) { + err = gerror.New("验证码错误") + return + } + } + + model, err := service.AdminSite().AccountLogin(ctx, &req.AccountLoginInp) + if err != nil { + return + } + + err = gconv.Scan(model, &res) + return +} + +// MobileLogin 手机号登录 +func (c *cSite) MobileLogin(ctx context.Context, req *common.MobileLoginReq) (res *common.MobileLoginRes, err error) { + model, err := service.AdminSite().MobileLogin(ctx, &req.MobileLoginInp) + if err != nil { + return + } + + err = gconv.Scan(model, &res) + return +} + +// Logout 注销登录 +func (c *cSite) Logout(ctx context.Context, _ *common.LoginLogoutReq) (res *common.LoginLogoutRes, err error) { + err = token.Logout(ghttp.RequestFromCtx(ctx)) + return +} diff --git a/server/internal/controller/admin/common/sms.go b/server/internal/controller/admin/common/sms.go new file mode 100644 index 0000000..c1f5c6a --- /dev/null +++ b/server/internal/controller/admin/common/sms.go @@ -0,0 +1,67 @@ +// Package common +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package common + +import ( + "context" + "github.com/gogf/gf/v2/errors/gerror" + "hotgo/api/admin/common" + "hotgo/internal/consts" + "hotgo/internal/dao" + "hotgo/internal/library/contexts" + "hotgo/internal/model/entity" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var Sms = new(cSms) + +type cSms struct{} + +// SendTest 发送测试短信 +func (c *cSms) SendTest(ctx context.Context, req *common.SendTestSmsReq) (res *common.SendTestSmsRes, err error) { + err = service.SysSmsLog().SendCode(ctx, &req.SendCodeInp) + return +} + +// SendBindSms 发送换绑短信 +func (c *cSms) SendBindSms(ctx context.Context, _ *common.SendBindSmsReq) (res *common.SendBindSmsRes, err error) { + var ( + memberId = contexts.GetUserId(ctx) + models *entity.AdminMember + ) + + if memberId <= 0 { + err = gerror.New("用户身份异常,请重新登录!") + return + } + + if err = dao.AdminMember.Ctx(ctx).Fields(dao.AdminMember.Columns().Mobile).Where(dao.AdminMember.Columns().Id, memberId).Scan(&models); err != nil { + return + } + + if models == nil { + err = gerror.New("用户信息不存在") + return + } + + if models.Mobile == "" { + err = gerror.New("未绑定手机号无需发送") + return + } + + err = service.SysSmsLog().SendCode(ctx, &sysin.SendCodeInp{ + Event: consts.SmsTemplateBind, + Mobile: models.Mobile, + }) + return +} + +// SendSms 发送短信 +func (c *cSms) SendSms(ctx context.Context, req *common.SendSmsReq) (res *common.SendSmsRes, err error) { + err = service.SysSmsLog().SendCode(ctx, &req.SendCodeInp) + return +} diff --git a/server/internal/controller/admin/common/upload.go b/server/internal/controller/admin/common/upload.go new file mode 100644 index 0000000..82f00aa --- /dev/null +++ b/server/internal/controller/admin/common/upload.go @@ -0,0 +1,66 @@ +// Package common +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package common + +import ( + "context" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "hotgo/api/admin/common" + "hotgo/internal/library/storager" + "hotgo/internal/service" + "hotgo/utility/validate" +) + +var Upload = new(cUpload) + +type cUpload struct{} + +// UploadFile 上传文件 +func (c *cUpload) UploadFile(ctx context.Context, _ *common.UploadFileReq) (res common.UploadFileRes, err error) { + r := g.RequestFromCtx(ctx) + uploadType := r.Header.Get("uploadType") + if uploadType != "default" && !validate.InSlice(storager.KindSlice, uploadType) { + err = gerror.New("上传类型是无效的") + return + } + + file := r.GetUploadFile("file") + if file == nil { + err = gerror.New("没有找到上传的文件") + return + } + return service.CommonUpload().UploadFile(ctx, uploadType, file) +} + +// CheckMultipart 检查文件分片 +func (c *cUpload) CheckMultipart(ctx context.Context, req *common.CheckMultipartReq) (res *common.CheckMultipartRes, err error) { + data, err := service.CommonUpload().CheckMultipart(ctx, &req.CheckMultipartInp) + if err != nil { + return nil, err + } + res = new(common.CheckMultipartRes) + res.CheckMultipartModel = data + return +} + +// UploadPart 上传分片 +func (c *cUpload) UploadPart(ctx context.Context, req *common.UploadPartReq) (res *common.UploadPartRes, err error) { + data, err := service.CommonUpload().UploadPart(ctx, &req.UploadPartInp) + if err != nil { + return nil, err + } + res = new(common.UploadPartRes) + res.UploadPartModel = data + return +} + +// ImageTransferStorage 图片链接转存 +func (c *cUpload) ImageTransferStorage(ctx context.Context, req *common.ImageTransferStorageReq) (res *common.ImageTransferStorageRes, err error) { + res = new(common.ImageTransferStorageRes) + res.ImageTransferStorageModel, err = service.CommonUpload().ImageTransferStorage(ctx, &req.ImageTransferStorageInp) + return +} diff --git a/server/internal/controller/admin/common/wechat.go b/server/internal/controller/admin/common/wechat.go new file mode 100644 index 0000000..4e658d3 --- /dev/null +++ b/server/internal/controller/admin/common/wechat.go @@ -0,0 +1,28 @@ +// Package common +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package common + +import ( + "context" + "hotgo/api/admin/common" + "hotgo/internal/service" +) + +var ( + Wechat = cWechat{} +) + +type cWechat struct{} + +func (c *cWechat) Authorize(ctx context.Context, req *common.WechatAuthorizeReq) (res *common.WechatAuthorizeRes, err error) { + _, err = service.CommonWechat().Authorize(ctx, &req.WechatAuthorizeInp) + return +} + +func (c *cWechat) AuthorizeCall(ctx context.Context, req *common.WechatAuthorizeCallReq) (res *common.WechatAuthorizeCallRes, err error) { + _, err = service.CommonWechat().AuthorizeCall(ctx, &req.WechatAuthorizeCallInp) + return +} diff --git a/server/internal/controller/admin/pay/refund.go b/server/internal/controller/admin/pay/refund.go new file mode 100644 index 0000000..1facbfe --- /dev/null +++ b/server/internal/controller/admin/pay/refund.go @@ -0,0 +1,39 @@ +// Package pay +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.5.3 +// @AutoGenerate Date 2023-04-15 15:59:58 +package pay + +import ( + "context" + "hotgo/api/admin/pay" + "hotgo/internal/service" +) + +var ( + Refund = cRefund{} +) + +type cRefund struct{} + +// List 查看交易退款列表 +func (c *cRefund) List(ctx context.Context, req *pay.RefundListReq) (res *pay.RefundListRes, err error) { + list, totalCount, err := service.PayRefund().List(ctx, &req.PayRefundListInp) + if err != nil { + return + } + + res = new(pay.RefundListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Export 导出交易退款列表 +func (c *cRefund) Export(ctx context.Context, req *pay.RefundExportReq) (res *pay.RefundExportRes, err error) { + err = service.PayRefund().Export(ctx, &req.PayRefundListInp) + return +} diff --git a/server/internal/controller/admin/sys/addons.go b/server/internal/controller/admin/sys/addons.go new file mode 100644 index 0000000..73ba447 --- /dev/null +++ b/server/internal/controller/admin/sys/addons.go @@ -0,0 +1,61 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/api/admin/addons" + "hotgo/internal/service" +) + +var ( + Addons = cAddons{} +) + +type cAddons struct{} + +// List 查看列表 +func (c *cAddons) List(ctx context.Context, req *addons.ListReq) (res *addons.ListRes, err error) { + list, totalCount, err := service.SysAddons().List(ctx, &req.AddonsListInp) + if err != nil { + return + } + + res = new(addons.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Build 生成预览 +func (c *cAddons) Build(ctx context.Context, req *addons.BuildReq) (res *addons.BuildRes, err error) { + err = service.SysAddons().Build(ctx, &req.AddonsBuildInp) + return +} + +// Install 安装模块 +func (c *cAddons) Install(ctx context.Context, req *addons.InstallReq) (res *addons.InstallRes, err error) { + if err = service.SysAddons().Install(ctx, &req.AddonsInstallInp); err != nil { + return + } + return +} + +// Upgrade 更新模块 +func (c *cAddons) Upgrade(ctx context.Context, req *addons.UpgradeReq) (res *addons.UpgradeRes, err error) { + if err = service.SysAddons().Upgrade(ctx, &req.AddonsUpgradeInp); err != nil { + return + } + return +} + +// UnInstall 卸载模块 +func (c *cAddons) UnInstall(ctx context.Context, req *addons.UnInstallReq) (res *addons.UnInstallRes, err error) { + if err = service.SysAddons().UnInstall(ctx, &req.AddonsUnInstallInp); err != nil { + return + } + return +} diff --git a/server/internal/controller/admin/sys/attachment.go b/server/internal/controller/admin/sys/attachment.go new file mode 100644 index 0000000..9380887 --- /dev/null +++ b/server/internal/controller/admin/sys/attachment.go @@ -0,0 +1,55 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/api/admin/attachment" + "hotgo/internal/service" +) + +var ( + Attachment = cAttachment{} +) + +type cAttachment struct{} + +// Delete 删除附件 +func (c *cAttachment) Delete(ctx context.Context, req *attachment.DeleteReq) (res *attachment.DeleteRes, err error) { + err = service.SysAttachment().Delete(ctx, &req.AttachmentDeleteInp) + return +} + +// View 获取指定附件信息 +func (c *cAttachment) View(ctx context.Context, req *attachment.ViewReq) (res *attachment.ViewRes, err error) { + data, err := service.SysAttachment().View(ctx, &req.AttachmentViewInp) + if err != nil { + return + } + + res = new(attachment.ViewRes) + res.AttachmentViewModel = data + return +} + +// List 查看附件列表 +func (c *cAttachment) List(ctx context.Context, req *attachment.ListReq) (res *attachment.ListRes, err error) { + list, totalCount, err := service.SysAttachment().List(ctx, &req.AttachmentListInp) + if err != nil { + return + } + + res = new(attachment.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// ClearKind 清空上传类型 +func (c *cAttachment) ClearKind(ctx context.Context, req *attachment.ClearKindReq) (res *attachment.ClearKindRes, err error) { + err = service.SysAttachment().ClearKind(ctx, &req.AttachmentClearKindInp) + return +} diff --git a/server/internal/controller/admin/sys/blacklist.go b/server/internal/controller/admin/sys/blacklist.go new file mode 100644 index 0000000..cac7c3d --- /dev/null +++ b/server/internal/controller/admin/sys/blacklist.go @@ -0,0 +1,61 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/api/admin/blacklist" + "hotgo/internal/service" +) + +var ( + Blacklist = cBlacklist{} +) + +type cBlacklist struct{} + +// Delete 删除 +func (c *cBlacklist) Delete(ctx context.Context, req *blacklist.DeleteReq) (res *blacklist.DeleteRes, err error) { + err = service.SysBlacklist().Delete(ctx, &req.BlacklistDeleteInp) + return +} + +// Edit 更新 +func (c *cBlacklist) Edit(ctx context.Context, req *blacklist.EditReq) (res *blacklist.EditRes, err error) { + err = service.SysBlacklist().Edit(ctx, &req.BlacklistEditInp) + return +} + +// View 获取指定信息 +func (c *cBlacklist) View(ctx context.Context, req *blacklist.ViewReq) (res *blacklist.ViewRes, err error) { + data, err := service.SysBlacklist().View(ctx, &req.BlacklistViewInp) + if err != nil { + return + } + + res = new(blacklist.ViewRes) + res.BlacklistViewModel = data + return +} + +// List 查看列表 +func (c *cBlacklist) List(ctx context.Context, req *blacklist.ListReq) (res *blacklist.ListRes, err error) { + list, totalCount, err := service.SysBlacklist().List(ctx, &req.BlacklistListInp) + if err != nil { + return + } + + res = new(blacklist.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Status 更新黑名单状态 +func (c *cBlacklist) Status(ctx context.Context, req *blacklist.StatusReq) (res *blacklist.StatusRes, err error) { + err = service.SysBlacklist().Status(ctx, &req.BlacklistStatusInp) + return +} diff --git a/server/internal/controller/admin/sys/config.go b/server/internal/controller/admin/sys/config.go new file mode 100644 index 0000000..a831c80 --- /dev/null +++ b/server/internal/controller/admin/sys/config.go @@ -0,0 +1,53 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/api/admin/config" + "hotgo/internal/consts" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var ( + Config = cConfig{} +) + +type cConfig struct{} + +// GetConfig 获取指定分组的配置 +func (c *cConfig) GetConfig(ctx context.Context, req *config.GetReq) (res *config.GetRes, err error) { + res = new(config.GetRes) + res.GetConfigModel, err = service.SysConfig().GetConfigByGroup(ctx, &req.GetConfigInp) + return +} + +// UpdateConfig 更新指定分组的配置 +func (c *cConfig) UpdateConfig(ctx context.Context, req *config.UpdateReq) (res *config.UpdateRes, err error) { + err = service.SysConfig().UpdateConfigByGroup(ctx, &req.UpdateConfigInp) + return +} + +// TypeSelect 数据类型选项 +func (c *cConfig) TypeSelect(_ context.Context, _ *config.TypeSelectReq) (res config.TypeSelectRes, err error) { + for _, v := range consts.ConfigTypes { + res = append(res, form.Select{ + Value: v, + Name: v, + Label: v, + }) + } + return +} + +// GetCash 获取提现的配置 +func (c *cConfig) GetCash(ctx context.Context, _ *config.GetCashReq) (res *config.GetCashRes, err error) { + res = new(config.GetCashRes) + res.GetConfigModel, err = service.SysConfig().GetConfigByGroup(ctx, &sysin.GetConfigInp{Group: "cash"}) + return +} diff --git a/server/internal/controller/admin/sys/cron.go b/server/internal/controller/admin/sys/cron.go new file mode 100644 index 0000000..e87e98b --- /dev/null +++ b/server/internal/controller/admin/sys/cron.go @@ -0,0 +1,97 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "github.com/gogf/gf/v2/errors/gerror" + "hotgo/api/admin/cron" + "hotgo/api/servmsg" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var ( + Cron = cCron{} +) + +type cCron struct{} + +// Delete 删除 +func (c *cCron) Delete(ctx context.Context, req *cron.DeleteReq) (res *cron.DeleteRes, err error) { + err = service.TCPServer().CronDelete(ctx, &servmsg.CronDeleteReq{CronDeleteInp: &req.CronDeleteInp}) + return +} + +// Edit 更新 +func (c *cCron) Edit(ctx context.Context, req *cron.EditReq) (res *cron.EditRes, err error) { + err = service.TCPServer().CronEdit(ctx, &servmsg.CronEditReq{CronEditInp: &req.CronEditInp}) + return +} + +// MaxSort 最大排序 +func (c *cCron) MaxSort(ctx context.Context, req *cron.MaxSortReq) (res *cron.MaxSortRes, err error) { + res = new(cron.MaxSortRes) + res.CronMaxSortModel, err = service.SysCron().MaxSort(ctx, &req.CronMaxSortInp) + return +} + +// View 获取指定信息 +func (c *cCron) View(ctx context.Context, req *cron.ViewReq) (res *cron.ViewRes, err error) { + data, err := service.SysCron().View(ctx, &req.CronViewInp) + if err != nil { + return + } + + res = new(cron.ViewRes) + res.CronViewModel = data + return +} + +// List 查看列表 +func (c *cCron) List(ctx context.Context, req *cron.ListReq) (res *cron.ListRes, err error) { + list, totalCount, err := service.SysCron().List(ctx, &req.CronListInp) + if err != nil { + return + } + + res = new(cron.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Status 更新状态 +func (c *cCron) Status(ctx context.Context, req *cron.StatusReq) (res *cron.StatusRes, err error) { + if req.Id <= 0 { + return nil, gerror.New("定时任务ID不能为空") + } + + err = service.TCPServer().CronStatus(ctx, &servmsg.CronStatusReq{CronStatusInp: &req.CronStatusInp}) + return +} + +// OnlineExec 在线执行 +func (c *cCron) OnlineExec(ctx context.Context, req *cron.OnlineExecReq) (res *cron.OnlineExecRes, err error) { + if req.Id <= 0 { + return nil, gerror.New("定时任务ID不能为空") + } + + err = service.TCPServer().CronOnlineExec(ctx, &servmsg.CronOnlineExecReq{OnlineExecInp: &req.OnlineExecInp}) + return +} + +// DispatchLog 调度日志 +func (c *cCron) DispatchLog(ctx context.Context, req *cron.DispatchLogReq) (res *cron.DispatchLogRes, err error) { + if req.Id <= 0 { + return nil, gerror.New("定时任务ID不能为空") + } + + res = new(cron.DispatchLogRes) + res.DispatchLogModel = new(sysin.DispatchLogModel) + res.Log, err = service.TCPServer().DispatchLog(ctx, &servmsg.CronDispatchLogReq{DispatchLogInp: &req.DispatchLogInp}) + return +} diff --git a/server/internal/controller/admin/sys/cron_group.go b/server/internal/controller/admin/sys/cron_group.go new file mode 100644 index 0000000..8362c95 --- /dev/null +++ b/server/internal/controller/admin/sys/cron_group.go @@ -0,0 +1,80 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/api/admin/cron" + "hotgo/internal/service" +) + +var ( + CronGroup = cCronGroup{} +) + +type cCronGroup struct{} + +// Delete 删除 +func (c *cCronGroup) Delete(ctx context.Context, req *cron.GroupDeleteReq) (res *cron.GroupDeleteRes, err error) { + err = service.SysCronGroup().Delete(ctx, &req.CronGroupDeleteInp) + return +} + +// Edit 更新 +func (c *cCronGroup) Edit(ctx context.Context, req *cron.GroupEditReq) (res *cron.GroupEditRes, err error) { + err = service.SysCronGroup().Edit(ctx, &req.CronGroupEditInp) + return +} + +// MaxSort 最大排序 +func (c *cCronGroup) MaxSort(ctx context.Context, req *cron.GroupMaxSortReq) (res *cron.GroupMaxSortRes, err error) { + res = new(cron.GroupMaxSortRes) + res.CronGroupMaxSortModel, err = service.SysCronGroup().MaxSort(ctx, &req.CronGroupMaxSortInp) + return +} + +// View 获取指定信息 +func (c *cCronGroup) View(ctx context.Context, req *cron.GroupViewReq) (res *cron.GroupViewRes, err error) { + data, err := service.SysCronGroup().View(ctx, &req.CronGroupViewInp) + if err != nil { + return + } + + res = new(cron.GroupViewRes) + res.CronGroupViewModel = data + return +} + +// List 查看列表 +func (c *cCronGroup) List(ctx context.Context, req *cron.GroupListReq) (res *cron.GroupListRes, err error) { + list, totalCount, err := service.SysCronGroup().List(ctx, &req.CronGroupListInp) + if err != nil { + return + } + + res = new(cron.GroupListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Status 更新状态 +func (c *cCronGroup) Status(ctx context.Context, req *cron.GroupStatusReq) (res *cron.GroupStatusRes, err error) { + err = service.SysCronGroup().Status(ctx, &req.CronGroupStatusInp) + return +} + +// Select 选项 +func (c *cCronGroup) Select(ctx context.Context, req *cron.GroupSelectReq) (res *cron.GroupSelectRes, err error) { + data, err := service.SysCronGroup().Select(ctx, &req.CronGroupSelectInp) + if err != nil { + return + } + + res = new(cron.GroupSelectRes) + res.CronGroupSelectModel = data + return +} diff --git a/server/internal/controller/admin/sys/curd_demo.go b/server/internal/controller/admin/sys/curd_demo.go new file mode 100644 index 0000000..9f73e8a --- /dev/null +++ b/server/internal/controller/admin/sys/curd_demo.go @@ -0,0 +1,91 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2025 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.18.6 +package sys + +import ( + "context" + "hotgo/api/admin/curddemo" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var ( + CurdDemo = cCurdDemo{} +) + +type cCurdDemo struct{} + +// List 查看CURD列表列表 +func (c *cCurdDemo) List(ctx context.Context, req *curddemo.ListReq) (res *curddemo.ListRes, err error) { + list, totalCount, err := service.SysCurdDemo().List(ctx, &req.CurdDemoListInp) + if err != nil { + return + } + + if list == nil { + list = []*sysin.CurdDemoListModel{} + } + + res = new(curddemo.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Export 导出CURD列表列表 +func (c *cCurdDemo) Export(ctx context.Context, req *curddemo.ExportReq) (res *curddemo.ExportRes, err error) { + err = service.SysCurdDemo().Export(ctx, &req.CurdDemoListInp) + return +} + +// Edit 更新CURD列表 +func (c *cCurdDemo) Edit(ctx context.Context, req *curddemo.EditReq) (res *curddemo.EditRes, err error) { + err = service.SysCurdDemo().Edit(ctx, &req.CurdDemoEditInp) + return +} + +// MaxSort 获取CURD列表最大排序 +func (c *cCurdDemo) MaxSort(ctx context.Context, req *curddemo.MaxSortReq) (res *curddemo.MaxSortRes, err error) { + data, err := service.SysCurdDemo().MaxSort(ctx, &req.CurdDemoMaxSortInp) + if err != nil { + return + } + + res = new(curddemo.MaxSortRes) + res.CurdDemoMaxSortModel = data + return +} + +// View 获取指定CURD列表信息 +func (c *cCurdDemo) View(ctx context.Context, req *curddemo.ViewReq) (res *curddemo.ViewRes, err error) { + data, err := service.SysCurdDemo().View(ctx, &req.CurdDemoViewInp) + if err != nil { + return + } + + res = new(curddemo.ViewRes) + res.CurdDemoViewModel = data + return +} + +// Delete 删除CURD列表 +func (c *cCurdDemo) Delete(ctx context.Context, req *curddemo.DeleteReq) (res *curddemo.DeleteRes, err error) { + err = service.SysCurdDemo().Delete(ctx, &req.CurdDemoDeleteInp) + return +} + +// Status 更新CURD列表状态 +func (c *cCurdDemo) Status(ctx context.Context, req *curddemo.StatusReq) (res *curddemo.StatusRes, err error) { + err = service.SysCurdDemo().Status(ctx, &req.CurdDemoStatusInp) + return +} + +// Switch 更新CURD列表开关状态 +func (c *cCurdDemo) Switch(ctx context.Context, req *curddemo.SwitchReq) (res *curddemo.SwitchRes, err error) { + err = service.SysCurdDemo().Switch(ctx, &req.CurdDemoSwitchInp) + return +} diff --git a/server/internal/controller/admin/sys/dict_data.go b/server/internal/controller/admin/sys/dict_data.go new file mode 100644 index 0000000..1e067da --- /dev/null +++ b/server/internal/controller/admin/sys/dict_data.go @@ -0,0 +1,68 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/api/admin/dict" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var ( + DictData = cDictData{} +) + +type cDictData struct{} + +// Delete 删除 +func (c *cDictData) Delete(ctx context.Context, req *dict.DataDeleteReq) (res *dict.DataDeleteRes, err error) { + err = service.SysDictData().Delete(ctx, &req.DictDataDeleteInp) + return +} + +// Edit 更新 +func (c *cDictData) Edit(ctx context.Context, req *dict.DataEditReq) (res *dict.DataEditRes, err error) { + err = service.SysDictData().Edit(ctx, &req.DictDataEditInp) + return +} + +// List 查看列表 +func (c *cDictData) List(ctx context.Context, req *dict.DataListReq) (res *dict.DataListRes, err error) { + list, totalCount, err := service.SysDictData().List(ctx, &req.DictDataListInp) + if err != nil { + return + } + + res = new(dict.DataListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Select 指定选项 +func (c *cDictData) Select(ctx context.Context, req *dict.DataSelectReq) (res dict.DataSelectRes, err error) { + list, err := service.SysDictData().Select(ctx, &req.DataSelectInp) + if err != nil { + return + } + + res = dict.DataSelectRes(list) + return +} + +// Selects 多个选项 +func (c *cDictData) Selects(ctx context.Context, req *dict.DataSelectsReq) (res dict.DataSelectsRes, err error) { + res = make(dict.DataSelectsRes) + for _, v := range req.Types { + option, err := service.SysDictData().Select(ctx, &sysin.DataSelectInp{Type: v}) + if err != nil { + return nil, err + } + res[v] = option + } + return +} diff --git a/server/internal/controller/admin/sys/dict_type.go b/server/internal/controller/admin/sys/dict_type.go new file mode 100644 index 0000000..ededd0a --- /dev/null +++ b/server/internal/controller/admin/sys/dict_type.go @@ -0,0 +1,37 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/api/admin/dict" + "hotgo/internal/service" +) + +var ( + DictType = cDictType{} +) + +type cDictType struct{} + +// Tree 树 +func (c *cDictType) Tree(ctx context.Context, _ *dict.TypeTreeReq) (res *dict.TypeTreeRes, err error) { + res = new(dict.TypeTreeRes) + res.List, err = service.SysDictType().Tree(ctx) + return +} + +// Delete 删除 +func (c *cDictType) Delete(ctx context.Context, req *dict.TypeDeleteReq) (res *dict.TypeDeleteRes, err error) { + err = service.SysDictType().Delete(ctx, &req.DictTypeDeleteInp) + return +} + +// Edit 更新 +func (c *cDictType) Edit(ctx context.Context, req *dict.TypeEditReq) (res *dict.TypeEditRes, err error) { + err = service.SysDictType().Edit(ctx, &req.DictTypeEditInp) + return +} diff --git a/server/internal/controller/admin/sys/ems_log.go b/server/internal/controller/admin/sys/ems_log.go new file mode 100644 index 0000000..0bea28e --- /dev/null +++ b/server/internal/controller/admin/sys/ems_log.go @@ -0,0 +1,61 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/api/admin/emslog" + "hotgo/internal/service" +) + +var ( + EmsLog = cEmsLog{} +) + +type cEmsLog struct{} + +// Delete 删除 +func (c *cEmsLog) Delete(ctx context.Context, req *emslog.DeleteReq) (res *emslog.DeleteRes, err error) { + err = service.SysEmsLog().Delete(ctx, &req.EmsLogDeleteInp) + return +} + +// Edit 更新 +func (c *cEmsLog) Edit(ctx context.Context, req *emslog.EditReq) (res *emslog.EditRes, err error) { + err = service.SysEmsLog().Edit(ctx, &req.EmsLogEditInp) + return +} + +// View 获取指定信息 +func (c *cEmsLog) View(ctx context.Context, req *emslog.ViewReq) (res *emslog.ViewRes, err error) { + data, err := service.SysEmsLog().View(ctx, &req.EmsLogViewInp) + if err != nil { + return + } + + res = new(emslog.ViewRes) + res.EmsLogViewModel = data + return +} + +// List 查看列表 +func (c *cEmsLog) List(ctx context.Context, req *emslog.ListReq) (res *emslog.ListRes, err error) { + list, totalCount, err := service.SysEmsLog().List(ctx, &req.EmsLogListInp) + if err != nil { + return + } + + res = new(emslog.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Status 更新状态 +func (c *cEmsLog) Status(ctx context.Context, req *emslog.StatusReq) (res *emslog.StatusRes, err error) { + err = service.SysEmsLog().Status(ctx, &req.EmsLogStatusInp) + return +} diff --git a/server/internal/controller/admin/sys/gen_codes.go b/server/internal/controller/admin/sys/gen_codes.go new file mode 100644 index 0000000..44a4631 --- /dev/null +++ b/server/internal/controller/admin/sys/gen_codes.go @@ -0,0 +1,137 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/api/admin/gencodes" + "hotgo/internal/service" +) + +var ( + GenCodes = cGenCodes{} +) + +type cGenCodes struct{} + +// Delete 删除 +func (c *cGenCodes) Delete(ctx context.Context, req *gencodes.DeleteReq) (res *gencodes.DeleteRes, err error) { + err = service.SysGenCodes().Delete(ctx, &req.GenCodesDeleteInp) + return +} + +// Edit 更新 +func (c *cGenCodes) Edit(ctx context.Context, req *gencodes.EditReq) (res *gencodes.EditRes, err error) { + data, err := service.SysGenCodes().Edit(ctx, &req.GenCodesEditInp) + if err != nil { + return + } + + res = new(gencodes.EditRes) + res.GenCodesEditModel = data + return +} + +// MaxSort 最大排序 +func (c *cGenCodes) MaxSort(ctx context.Context, req *gencodes.MaxSortReq) (res *gencodes.MaxSortRes, err error) { + res = new(gencodes.MaxSortRes) + res.GenCodesMaxSortModel, err = service.SysGenCodes().MaxSort(ctx, &req.GenCodesMaxSortInp) + return +} + +// View 获取指定信息 +func (c *cGenCodes) View(ctx context.Context, req *gencodes.ViewReq) (res *gencodes.ViewRes, err error) { + data, err := service.SysGenCodes().View(ctx, &req.GenCodesViewInp) + if err != nil { + return + } + + res = new(gencodes.ViewRes) + res.GenCodesViewModel = data + return +} + +// List 查看列表 +func (c *cGenCodes) List(ctx context.Context, req *gencodes.ListReq) (res *gencodes.ListRes, err error) { + list, totalCount, err := service.SysGenCodes().List(ctx, &req.GenCodesListInp) + if err != nil { + return + } + + res = new(gencodes.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Status 更新状态 +func (c *cGenCodes) Status(ctx context.Context, req *gencodes.StatusReq) (res *gencodes.StatusRes, err error) { + err = service.SysGenCodes().Status(ctx, &req.GenCodesStatusInp) + return +} + +// Selects 获取指定信息 +func (c *cGenCodes) Selects(ctx context.Context, req *gencodes.SelectsReq) (res *gencodes.SelectsRes, err error) { + data, err := service.SysGenCodes().Selects(ctx, &req.GenCodesSelectsInp) + if err != nil { + return + } + + res = new(gencodes.SelectsRes) + res.GenCodesSelectsModel = data + return +} + +// TableSelect 数据库表选项 +func (c *cGenCodes) TableSelect(ctx context.Context, req *gencodes.TableSelectReq) (res *gencodes.TableSelectRes, err error) { + data, err := service.SysGenCodes().TableSelect(ctx, &req.GenCodesTableSelectInp) + if err != nil { + return + } + + res = (*gencodes.TableSelectRes)(&data) + return +} + +// ColumnSelect 表字段选项 +func (c *cGenCodes) ColumnSelect(ctx context.Context, req *gencodes.ColumnSelectReq) (res *gencodes.ColumnSelectRes, err error) { + data, err := service.SysGenCodes().ColumnSelect(ctx, &req.GenCodesColumnSelectInp) + if err != nil { + return + } + + res = (*gencodes.ColumnSelectRes)(&data) + return +} + +// ColumnList 表字段列表 +func (c *cGenCodes) ColumnList(ctx context.Context, req *gencodes.ColumnListReq) (res *gencodes.ColumnListRes, err error) { + data, err := service.SysGenCodes().ColumnList(ctx, &req.GenCodesColumnListInp) + if err != nil { + return + } + + res = (*gencodes.ColumnListRes)(&data) + return +} + +// Preview 生成预览 +func (c *cGenCodes) Preview(ctx context.Context, req *gencodes.PreviewReq) (res *gencodes.PreviewRes, err error) { + data, err := service.SysGenCodes().Preview(ctx, &req.GenCodesPreviewInp) + if err != nil { + return + } + + res = new(gencodes.PreviewRes) + res.GenCodesPreviewModel = data + return +} + +// Build 生成预览 +func (c *cGenCodes) Build(ctx context.Context, req *gencodes.BuildReq) (res *gencodes.BuildRes, err error) { + err = service.SysGenCodes().Build(ctx, &req.GenCodesBuildInp) + return +} diff --git a/server/internal/controller/admin/sys/log.go b/server/internal/controller/admin/sys/log.go new file mode 100644 index 0000000..192a5a5 --- /dev/null +++ b/server/internal/controller/admin/sys/log.go @@ -0,0 +1,56 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "github.com/gogf/gf/v2/errors/gerror" + "hotgo/api/admin/log" + "hotgo/internal/service" +) + +// Log 日志 +var Log = sLog{} + +type sLog struct{} + +// Clear 清空日志 +func (c *sLog) Clear(ctx context.Context, _ *log.ClearReq) (res *log.ClearRes, err error) { + err = gerror.New("暂时考虑到安全问题,请到数据库清空") + return +} + +// Export 导出 +func (c *sLog) Export(ctx context.Context, req *log.ExportReq) (res *log.ExportRes, err error) { + err = service.SysLog().Export(ctx, &req.LogListInp) + return +} + +// List 获取访问日志列表 +func (c *sLog) List(ctx context.Context, req *log.ListReq) (res *log.ListRes, err error) { + list, totalCount, err := service.SysLog().List(ctx, &req.LogListInp) + if err != nil { + return + } + + res = new(log.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// View 获取指定信息 +func (c *sLog) View(ctx context.Context, req *log.ViewReq) (res *log.ViewRes, err error) { + res = new(log.ViewRes) + res.LogViewModel, err = service.SysLog().View(ctx, &req.LogViewInp) + return +} + +// Delete 删除 +func (c *sLog) Delete(ctx context.Context, req *log.DeleteReq) (res *log.DeleteRes, err error) { + err = service.SysLog().Delete(ctx, &req.LogDeleteInp) + return +} diff --git a/server/internal/controller/admin/sys/login_log.go b/server/internal/controller/admin/sys/login_log.go new file mode 100644 index 0000000..6123c58 --- /dev/null +++ b/server/internal/controller/admin/sys/login_log.go @@ -0,0 +1,45 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.1.1 +// @AutoGenerate Date 2023-01-19 16:57:33 +package sys + +import ( + "context" + "hotgo/api/admin/loginlog" + "hotgo/internal/service" +) + +var ( + LoginLog = cLoginLog{} +) + +type cLoginLog struct{} + +// List 查看登录日志列表 +func (c *cLoginLog) List(ctx context.Context, req *loginlog.ListReq) (res *loginlog.ListRes, err error) { + list, totalCount, err := service.SysLoginLog().List(ctx, &req.LoginLogListInp) + if err != nil { + return + } + + res = new(loginlog.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Export 导出登录日志列表 +func (c *cLoginLog) Export(ctx context.Context, req *loginlog.ExportReq) (res *loginlog.ExportRes, err error) { + err = service.SysLoginLog().Export(ctx, &req.LoginLogListInp) + return +} + +// Delete 删除登录日志 +func (c *cLoginLog) Delete(ctx context.Context, req *loginlog.DeleteReq) (res *loginlog.DeleteRes, err error) { + err = service.SysLoginLog().Delete(ctx, &req.LoginLogDeleteInp) + return +} diff --git a/server/internal/controller/admin/sys/normal_tree_demo.go b/server/internal/controller/admin/sys/normal_tree_demo.go new file mode 100644 index 0000000..7348d87 --- /dev/null +++ b/server/internal/controller/admin/sys/normal_tree_demo.go @@ -0,0 +1,89 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2024 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.15.7 +package sys + +import ( + "context" + "hotgo/api/admin/normaltreedemo" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var ( + NormalTreeDemo = cNormalTreeDemo{} +) + +type cNormalTreeDemo struct{} + +// List 查看普通树表列表 +func (c *cNormalTreeDemo) List(ctx context.Context, req *normaltreedemo.ListReq) (res *normaltreedemo.ListRes, err error) { + list, totalCount, err := service.SysNormalTreeDemo().List(ctx, &req.NormalTreeDemoListInp) + if err != nil { + return + } + + if list == nil { + list = []*sysin.NormalTreeDemoListModel{} + } + + res = new(normaltreedemo.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Edit 更新普通树表 +func (c *cNormalTreeDemo) Edit(ctx context.Context, req *normaltreedemo.EditReq) (res *normaltreedemo.EditRes, err error) { + err = service.SysNormalTreeDemo().Edit(ctx, &req.NormalTreeDemoEditInp) + return +} + +// MaxSort 获取普通树表最大排序 +func (c *cNormalTreeDemo) MaxSort(ctx context.Context, req *normaltreedemo.MaxSortReq) (res *normaltreedemo.MaxSortRes, err error) { + data, err := service.SysNormalTreeDemo().MaxSort(ctx, &req.NormalTreeDemoMaxSortInp) + if err != nil { + return + } + + res = new(normaltreedemo.MaxSortRes) + res.NormalTreeDemoMaxSortModel = data + return +} + +// View 获取指定普通树表信息 +func (c *cNormalTreeDemo) View(ctx context.Context, req *normaltreedemo.ViewReq) (res *normaltreedemo.ViewRes, err error) { + data, err := service.SysNormalTreeDemo().View(ctx, &req.NormalTreeDemoViewInp) + if err != nil { + return + } + + res = new(normaltreedemo.ViewRes) + res.NormalTreeDemoViewModel = data + return +} + +// Delete 删除普通树表 +func (c *cNormalTreeDemo) Delete(ctx context.Context, req *normaltreedemo.DeleteReq) (res *normaltreedemo.DeleteRes, err error) { + err = service.SysNormalTreeDemo().Delete(ctx, &req.NormalTreeDemoDeleteInp) + return +} + +// TreeOption 获取普通树表关系树选项 +func (c *cNormalTreeDemo) TreeOption(ctx context.Context, req *normaltreedemo.TreeOptionReq) (res *normaltreedemo.TreeOptionRes, err error) { + data, err := service.SysNormalTreeDemo().TreeOption(ctx) + if err != nil { + return nil, err + } + + if len(data) > 0 { + res = (*normaltreedemo.TreeOptionRes)(&data) + } else { + temp := make(normaltreedemo.TreeOptionRes, 0) + res = &temp + } + return +} diff --git a/server/internal/controller/admin/sys/option_tree_demo.go b/server/internal/controller/admin/sys/option_tree_demo.go new file mode 100644 index 0000000..fa6cd22 --- /dev/null +++ b/server/internal/controller/admin/sys/option_tree_demo.go @@ -0,0 +1,89 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2025 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.17.8 +package sys + +import ( + "context" + "hotgo/api/admin/optiontreedemo" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var ( + OptionTreeDemo = cOptionTreeDemo{} +) + +type cOptionTreeDemo struct{} + +// List 查看选项树表列表 +func (c *cOptionTreeDemo) List(ctx context.Context, req *optiontreedemo.ListReq) (res *optiontreedemo.ListRes, err error) { + list, totalCount, err := service.SysOptionTreeDemo().List(ctx, &req.OptionTreeDemoListInp) + if err != nil { + return + } + + if list == nil { + list = []*sysin.OptionTreeDemoListModel{} + } + + res = new(optiontreedemo.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Edit 更新选项树表 +func (c *cOptionTreeDemo) Edit(ctx context.Context, req *optiontreedemo.EditReq) (res *optiontreedemo.EditRes, err error) { + err = service.SysOptionTreeDemo().Edit(ctx, &req.OptionTreeDemoEditInp) + return +} + +// MaxSort 获取选项树表最大排序 +func (c *cOptionTreeDemo) MaxSort(ctx context.Context, req *optiontreedemo.MaxSortReq) (res *optiontreedemo.MaxSortRes, err error) { + data, err := service.SysOptionTreeDemo().MaxSort(ctx, &req.OptionTreeDemoMaxSortInp) + if err != nil { + return + } + + res = new(optiontreedemo.MaxSortRes) + res.OptionTreeDemoMaxSortModel = data + return +} + +// View 获取指定选项树表信息 +func (c *cOptionTreeDemo) View(ctx context.Context, req *optiontreedemo.ViewReq) (res *optiontreedemo.ViewRes, err error) { + data, err := service.SysOptionTreeDemo().View(ctx, &req.OptionTreeDemoViewInp) + if err != nil { + return + } + + res = new(optiontreedemo.ViewRes) + res.OptionTreeDemoViewModel = data + return +} + +// Delete 删除选项树表 +func (c *cOptionTreeDemo) Delete(ctx context.Context, req *optiontreedemo.DeleteReq) (res *optiontreedemo.DeleteRes, err error) { + err = service.SysOptionTreeDemo().Delete(ctx, &req.OptionTreeDemoDeleteInp) + return +} + +// TreeOption 获取选项树表关系树选项 +func (c *cOptionTreeDemo) TreeOption(ctx context.Context, req *optiontreedemo.TreeOptionReq) (res *optiontreedemo.TreeOptionRes, err error) { + data, err := service.SysOptionTreeDemo().TreeOption(ctx) + if err != nil { + return nil, err + } + + if len(data) > 0 { + res = (*optiontreedemo.TreeOptionRes)(&data) + } else { + temp := make(optiontreedemo.TreeOptionRes, 0) + res = &temp + } + return +} diff --git a/server/internal/controller/admin/sys/provinces.go b/server/internal/controller/admin/sys/provinces.go new file mode 100644 index 0000000..318a423 --- /dev/null +++ b/server/internal/controller/admin/sys/provinces.go @@ -0,0 +1,129 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/api/admin/provinces" + "hotgo/internal/library/location" + "hotgo/internal/service" +) + +var ( + Provinces = cProvinces{} +) + +type cProvinces struct{} + +// Tree 关系树选项列表 +func (c *cProvinces) Tree(ctx context.Context, _ *provinces.TreeReq) (res *provinces.TreeRes, err error) { + res = new(provinces.TreeRes) + res.List, err = service.SysProvinces().Tree(ctx) + return +} + +// Delete 删除 +func (c *cProvinces) Delete(ctx context.Context, req *provinces.DeleteReq) (res *provinces.DeleteRes, err error) { + err = service.SysProvinces().Delete(ctx, &req.ProvincesDeleteInp) + return +} + +// Edit 更新 +func (c *cProvinces) Edit(ctx context.Context, req *provinces.EditReq) (res *provinces.EditRes, err error) { + err = service.SysProvinces().Edit(ctx, &req.ProvincesEditInp) + return +} + +// MaxSort 最大排序 +func (c *cProvinces) MaxSort(ctx context.Context, req *provinces.MaxSortReq) (res *provinces.MaxSortRes, err error) { + data, err := service.SysProvinces().MaxSort(ctx, &req.ProvincesMaxSortInp) + if err != nil { + return + } + + res = new(provinces.MaxSortRes) + res.ProvincesMaxSortModel = data + return +} + +// View 获取指定信息 +func (c *cProvinces) View(ctx context.Context, req *provinces.ViewReq) (res *provinces.ViewRes, err error) { + data, err := service.SysProvinces().View(ctx, &req.ProvincesViewInp) + if err != nil { + return + } + + res = new(provinces.ViewRes) + res.ProvincesViewModel = data + return +} + +// List 查看列表 +func (c *cProvinces) List(ctx context.Context, req *provinces.ListReq) (res *provinces.ListRes, err error) { + list, totalCount, err := service.SysProvinces().List(ctx, &req.ProvincesListInp) + if err != nil { + return + } + + res = new(provinces.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Status 更新省市区状态 +func (c *cProvinces) Status(ctx context.Context, req *provinces.StatusReq) (res *provinces.StatusRes, err error) { + err = service.SysProvinces().Status(ctx, &req.ProvincesStatusInp) + return +} + +// ChildrenList 获取省市区下级列表 +func (c *cProvinces) ChildrenList(ctx context.Context, req *provinces.ChildrenListReq) (res *provinces.ChildrenListRes, err error) { + list, totalCount, err := service.SysProvinces().ChildrenList(ctx, &req.ProvincesChildrenListInp) + if err != nil { + return + } + + res = new(provinces.ChildrenListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// UniqueId 地区ID是否唯一 +func (c *cProvinces) UniqueId(ctx context.Context, req *provinces.UniqueIdReq) (res *provinces.UniqueIdRes, err error) { + data, err := service.SysProvinces().UniqueId(ctx, &req.ProvincesUniqueIdInp) + if err != nil { + return + } + + res = new(provinces.UniqueIdRes) + res.ProvincesUniqueIdModel = data + return +} + +// Select 省市区选项 +func (c *cProvinces) Select(ctx context.Context, req *provinces.SelectReq) (res *provinces.SelectRes, err error) { + data, err := service.SysProvinces().Select(ctx, &req.ProvincesSelectInp) + if err != nil { + return + } + + res = new(provinces.SelectRes) + res.ProvincesSelectModel = data + return +} + +// CityLabel 省市区选项 +func (c *cProvinces) CityLabel(ctx context.Context, req *provinces.CityLabelReq) (res *provinces.CityLabelRes, err error) { + cityLabel, err := location.ParseSimpleRegion(ctx, req.Id, req.Spilt) + if err != nil { + return + } + + res = (*provinces.CityLabelRes)(&cityLabel) + return +} diff --git a/server/internal/controller/admin/sys/serve_license.go b/server/internal/controller/admin/sys/serve_license.go new file mode 100644 index 0000000..5dd94d3 --- /dev/null +++ b/server/internal/controller/admin/sys/serve_license.go @@ -0,0 +1,74 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.7.6 +package sys + +import ( + "context" + "hotgo/api/admin/servelicense" + "hotgo/internal/service" +) + +var ( + ServeLicense = cServeLicense{} +) + +type cServeLicense struct{} + +// List 查看服务授权许可列表 +func (c *cServeLicense) List(ctx context.Context, req *servelicense.ListReq) (res *servelicense.ListRes, err error) { + list, totalCount, err := service.SysServeLicense().List(ctx, &req.ServeLicenseListInp) + if err != nil { + return + } + + res = new(servelicense.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Export 导出服务授权许可列表 +func (c *cServeLicense) Export(ctx context.Context, req *servelicense.ExportReq) (res *servelicense.ExportRes, err error) { + err = service.SysServeLicense().Export(ctx, &req.ServeLicenseListInp) + return +} + +// Edit 更新服务授权许可 +func (c *cServeLicense) Edit(ctx context.Context, req *servelicense.EditReq) (res *servelicense.EditRes, err error) { + err = service.SysServeLicense().Edit(ctx, &req.ServeLicenseEditInp) + return +} + +// View 获取指定服务授权许可信息 +func (c *cServeLicense) View(ctx context.Context, req *servelicense.ViewReq) (res *servelicense.ViewRes, err error) { + data, err := service.SysServeLicense().View(ctx, &req.ServeLicenseViewInp) + if err != nil { + return + } + + res = new(servelicense.ViewRes) + res.ServeLicenseViewModel = data + return +} + +// Delete 删除服务授权许可 +func (c *cServeLicense) Delete(ctx context.Context, req *servelicense.DeleteReq) (res *servelicense.DeleteRes, err error) { + err = service.SysServeLicense().Delete(ctx, &req.ServeLicenseDeleteInp) + return +} + +// Status 更新服务授权许可状态 +func (c *cServeLicense) Status(ctx context.Context, req *servelicense.StatusReq) (res *servelicense.StatusRes, err error) { + err = service.SysServeLicense().Status(ctx, &req.ServeLicenseStatusInp) + return +} + +// AssignRouter 分配服务授权许可路由 +func (c *cServeLicense) AssignRouter(ctx context.Context, req *servelicense.AssignRouterReq) (res *servelicense.AssignRouterRes, err error) { + err = service.SysServeLicense().AssignRouter(ctx, &req.ServeLicenseAssignRouterInp) + return +} diff --git a/server/internal/controller/admin/sys/serve_log.go b/server/internal/controller/admin/sys/serve_log.go new file mode 100644 index 0000000..b3ca4cf --- /dev/null +++ b/server/internal/controller/admin/sys/serve_log.go @@ -0,0 +1,55 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/api/admin/servelog" + "hotgo/internal/service" +) + +var ( + ServeLog = cServeLog{} +) + +type cServeLog struct{} + +// List 查看服务日志列表 +func (c *cServeLog) List(ctx context.Context, req *servelog.ListReq) (res *servelog.ListRes, err error) { + list, totalCount, err := service.SysServeLog().List(ctx, &req.ServeLogListInp) + if err != nil { + return + } + + res = new(servelog.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Export 导出服务日志列表 +func (c *cServeLog) Export(ctx context.Context, req *servelog.ExportReq) (res *servelog.ExportRes, err error) { + err = service.SysServeLog().Export(ctx, &req.ServeLogListInp) + return +} + +// View 获取指定服务日志信息 +func (c *cServeLog) View(ctx context.Context, req *servelog.ViewReq) (res *servelog.ViewRes, err error) { + data, err := service.SysServeLog().View(ctx, &req.ServeLogViewInp) + if err != nil { + return + } + + res = new(servelog.ViewRes) + res.ServeLogViewModel = data + return +} + +// Delete 删除服务日志 +func (c *cServeLog) Delete(ctx context.Context, req *servelog.DeleteReq) (res *servelog.DeleteRes, err error) { + err = service.SysServeLog().Delete(ctx, &req.ServeLogDeleteInp) + return +} diff --git a/server/internal/controller/admin/sys/sms_log.go b/server/internal/controller/admin/sys/sms_log.go new file mode 100644 index 0000000..b718efb --- /dev/null +++ b/server/internal/controller/admin/sys/sms_log.go @@ -0,0 +1,49 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package sys + +import ( + "context" + "hotgo/api/admin/smslog" + "hotgo/internal/service" +) + +var ( + SmsLog = cSmsLog{} +) + +type cSmsLog struct{} + +// Delete 删除 +func (c *cSmsLog) Delete(ctx context.Context, req *smslog.DeleteReq) (res *smslog.DeleteRes, err error) { + err = service.SysSmsLog().Delete(ctx, &req.SmsLogDeleteInp) + return +} + +// View 获取指定信息 +func (c *cSmsLog) View(ctx context.Context, req *smslog.ViewReq) (res *smslog.ViewRes, err error) { + data, err := service.SysSmsLog().View(ctx, &req.SmsLogViewInp) + if err != nil { + return + } + + res = new(smslog.ViewRes) + res.SmsLogViewModel = data + return +} + +// List 查看列表 +func (c *cSmsLog) List(ctx context.Context, req *smslog.ListReq) (res *smslog.ListRes, err error) { + list, totalCount, err := service.SysSmsLog().List(ctx, &req.SmsLogListInp) + if err != nil { + return + } + + res = new(smslog.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} diff --git a/server/internal/controller/admin/sys/test_category.go b/server/internal/controller/admin/sys/test_category.go new file mode 100644 index 0000000..72213f3 --- /dev/null +++ b/server/internal/controller/admin/sys/test_category.go @@ -0,0 +1,79 @@ +// Package sys +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2024 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// @AutoGenerate Version 2.15.7 +package sys + +import ( + "context" + "hotgo/api/admin/testcategory" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" +) + +var ( + TestCategory = cTestCategory{} +) + +type cTestCategory struct{} + +// List 查看测试分类列表 +func (c *cTestCategory) List(ctx context.Context, req *testcategory.ListReq) (res *testcategory.ListRes, err error) { + list, totalCount, err := service.SysTestCategory().List(ctx, &req.TestCategoryListInp) + if err != nil { + return + } + + if list == nil { + list = []*sysin.TestCategoryListModel{} + } + + res = new(testcategory.ListRes) + res.List = list + res.PageRes.Pack(req, totalCount) + return +} + +// Edit 更新测试分类 +func (c *cTestCategory) Edit(ctx context.Context, req *testcategory.EditReq) (res *testcategory.EditRes, err error) { + err = service.SysTestCategory().Edit(ctx, &req.TestCategoryEditInp) + return +} + +// MaxSort 获取测试分类最大排序 +func (c *cTestCategory) MaxSort(ctx context.Context, req *testcategory.MaxSortReq) (res *testcategory.MaxSortRes, err error) { + data, err := service.SysTestCategory().MaxSort(ctx, &req.TestCategoryMaxSortInp) + if err != nil { + return + } + + res = new(testcategory.MaxSortRes) + res.TestCategoryMaxSortModel = data + return +} + +// View 获取指定测试分类信息 +func (c *cTestCategory) View(ctx context.Context, req *testcategory.ViewReq) (res *testcategory.ViewRes, err error) { + data, err := service.SysTestCategory().View(ctx, &req.TestCategoryViewInp) + if err != nil { + return + } + + res = new(testcategory.ViewRes) + res.TestCategoryViewModel = data + return +} + +// Delete 删除测试分类 +func (c *cTestCategory) Delete(ctx context.Context, req *testcategory.DeleteReq) (res *testcategory.DeleteRes, err error) { + err = service.SysTestCategory().Delete(ctx, &req.TestCategoryDeleteInp) + return +} + +// Status 更新测试分类状态 +func (c *cTestCategory) Status(ctx context.Context, req *testcategory.StatusReq) (res *testcategory.StatusRes, err error) { + err = service.SysTestCategory().Status(ctx, &req.TestCategoryStatusInp) + return +} diff --git a/server/internal/controller/api/member/member.go b/server/internal/controller/api/member/member.go new file mode 100644 index 0000000..6fe3c71 --- /dev/null +++ b/server/internal/controller/api/member/member.go @@ -0,0 +1,5 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package member diff --git a/server/internal/controller/api/member/member_new.go b/server/internal/controller/api/member/member_new.go new file mode 100644 index 0000000..dfb4e71 --- /dev/null +++ b/server/internal/controller/api/member/member_new.go @@ -0,0 +1,15 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package member + +import ( + "hotgo/api/api/member" +) + +type ControllerV1 struct{} + +func NewV1() member.IMemberV1 { + return &ControllerV1{} +} diff --git a/server/internal/controller/api/member/member_v1_get_id_by_code.go b/server/internal/controller/api/member/member_v1_get_id_by_code.go new file mode 100644 index 0000000..42010d3 --- /dev/null +++ b/server/internal/controller/api/member/member_v1_get_id_by_code.go @@ -0,0 +1,14 @@ +package member + +import ( + "context" + + v1 "hotgo/api/api/member/v1" + + "github.com/gogf/gf/v2/frame/g" +) + +func (c *ControllerV1) GetIdByCode(ctx context.Context, req *v1.GetIdByCodeReq) (res *v1.GetIdByCodeRes, err error) { + g.RequestFromCtx(ctx).Response.Writeln("Hello World api member!") + return +} diff --git a/server/internal/controller/api/pay/pay.go b/server/internal/controller/api/pay/pay.go new file mode 100644 index 0000000..cc269a0 --- /dev/null +++ b/server/internal/controller/api/pay/pay.go @@ -0,0 +1,5 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package pay diff --git a/server/internal/controller/api/pay/pay_new.go b/server/internal/controller/api/pay/pay_new.go new file mode 100644 index 0000000..53eb435 --- /dev/null +++ b/server/internal/controller/api/pay/pay_new.go @@ -0,0 +1,15 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package pay + +import ( + "hotgo/api/api/pay" +) + +type ControllerV1 struct{} + +func NewV1() pay.IPayV1 { + return &ControllerV1{} +} diff --git a/server/internal/controller/api/pay/pay_v1_notify_ali_pay.go b/server/internal/controller/api/pay/pay_v1_notify_ali_pay.go new file mode 100644 index 0000000..5e22899 --- /dev/null +++ b/server/internal/controller/api/pay/pay_v1_notify_ali_pay.go @@ -0,0 +1,22 @@ +package pay + +import ( + "context" + + v1 "hotgo/api/api/pay/v1" + "hotgo/internal/consts" + "hotgo/internal/library/response" + "hotgo/internal/model/input/payin" + "hotgo/internal/service" + + "github.com/gogf/gf/v2/frame/g" +) + +func (c *ControllerV1) NotifyAliPay(ctx context.Context, req *v1.NotifyAliPayReq) (res *v1.NotifyAliPayRes, err error) { + if _, err = service.Pay().Notify(ctx, &payin.PayNotifyInp{PayType: consts.PayTypeAliPay}); err != nil { + return nil, err + } + + response.RText(g.RequestFromCtx(ctx), "success") + return +} diff --git a/server/internal/controller/api/pay/pay_v1_notify_qq_pay.go b/server/internal/controller/api/pay/pay_v1_notify_qq_pay.go new file mode 100644 index 0000000..6c93b03 --- /dev/null +++ b/server/internal/controller/api/pay/pay_v1_notify_qq_pay.go @@ -0,0 +1,26 @@ +package pay + +import ( + "context" + + v1 "hotgo/api/api/pay/v1" + "hotgo/internal/consts" + "hotgo/internal/model/input/payin" + "hotgo/internal/service" + + "github.com/gogf/gf/v2/frame/g" +) + +func (c *ControllerV1) NotifyQQPay(ctx context.Context, req *v1.NotifyQQPayReq) (res *v1.NotifyQQPayRes, err error) { + if _, err = service.Pay().Notify(ctx, &payin.PayNotifyInp{PayType: consts.PayTypeQQPay}); err != nil { + return + } + + r := g.RequestFromCtx(ctx) + r.Response.ClearBuffer() + r.Response.Write(``) + r.Response.WriteXml(g.Map{ + "return_code": "SUCCESS", + }) + return +} diff --git a/server/internal/controller/api/pay/pay_v1_notify_wx_pay.go b/server/internal/controller/api/pay/pay_v1_notify_wx_pay.go new file mode 100644 index 0000000..e871910 --- /dev/null +++ b/server/internal/controller/api/pay/pay_v1_notify_wx_pay.go @@ -0,0 +1,22 @@ +package pay + +import ( + "context" + + v1 "hotgo/api/api/pay/v1" + "hotgo/internal/consts" + "hotgo/internal/library/response" + "hotgo/internal/model/input/payin" + "hotgo/internal/service" + + "github.com/gogf/gf/v2/frame/g" +) + +func (c *ControllerV1) NotifyWxPay(ctx context.Context, req *v1.NotifyWxPayReq) (res *v1.NotifyWxPayRes, err error) { + if _, err = service.Pay().Notify(ctx, &payin.PayNotifyInp{PayType: consts.PayTypeWxPay}); err != nil { + return + } + + response.CustomJson(g.RequestFromCtx(ctx), `{"code": "SUCCESS","message": "收单成功"}`) + return +} diff --git a/server/internal/controller/home/base/site.go b/server/internal/controller/home/base/site.go new file mode 100644 index 0000000..b65ad40 --- /dev/null +++ b/server/internal/controller/home/base/site.go @@ -0,0 +1,38 @@ +// Package base +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package base + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" + "hotgo/api/home/base" + "hotgo/internal/consts" + "hotgo/internal/model" + "hotgo/internal/service" + "hotgo/utility/simple" +) + +// Site 基础 +var Site = cSite{} + +type cSite struct{} + +func (a *cSite) Index(ctx context.Context, _ *base.SiteIndexReq) (res *base.SiteIndexRes, err error) { + service.View().Render(ctx, model.View{Data: g.Map{ + "name": simple.AppName(ctx), + "version": consts.VersionApp, + }}) + + // err = gerror.New("这是一个测试错误") + // return + + // err = gerror.NewCode(gcode.New(10000, "这是一个测试自定义错误码错误", nil)) + // return + + // service.View().Error(ctx, gerror.New("这是一个允许被自定义格式的错误,默认和通用错误格式一致,你可以修改它")) + // return + return +} diff --git a/server/internal/controller/websocket/handler/admin/monitor.go b/server/internal/controller/websocket/handler/admin/monitor.go new file mode 100644 index 0000000..f10ed93 --- /dev/null +++ b/server/internal/controller/websocket/handler/admin/monitor.go @@ -0,0 +1,198 @@ +// Package admin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package admin + +import ( + "fmt" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gtime" + "github.com/gogf/gf/v2/util/gconv" + "github.com/shirou/gopsutil/v3/cpu" + "github.com/shirou/gopsutil/v3/disk" + "github.com/shirou/gopsutil/v3/host" + "github.com/shirou/gopsutil/v3/mem" + "github.com/shirou/gopsutil/v3/process" + "hotgo/internal/consts" + "hotgo/internal/model" + "hotgo/internal/service" + "hotgo/internal/websocket" + "hotgo/utility/file" + "hotgo/utility/format" + "hotgo/utility/simple" + "os" + "runtime" + "time" +) + +var ( + Monitor = cMonitor{} +) + +type cMonitor struct{} + +type MonitorHeadExtra struct { + Data interface{} `json:"data"` + Data1 string `json:"data1,omitempty"` +} +type MonitorHead struct { + Title string `json:"title"` + Data string `json:"data"` + BottomTitle string `json:"bottomTitle"` + TotalSum string `json:"totalSum"` + IconClass string `json:"iconClass"` + Extra MonitorHeadExtra `json:"extra"` +} + +// RunInfo 运行信息 +func (c *cMonitor) RunInfo(client *websocket.Client, req *websocket.WRequest) { + var ( + meta = service.AdminMonitor().GetMeta(client.Context()) + mHost, _ = host.Info() + pwd, _ = os.Getwd() + gm runtime.MemStats + ) + + runtime.ReadMemStats(&gm) + + data := g.Map{ + // 服务器信息 + "hostname": mHost.Hostname, + "os": mHost.OS, + "arch": mHost.KernelArch, + "intranet_ip": meta.IntranetIP, + "public_ip": meta.PublicIP, + + // 运行信息 + "version": runtime.Version(), // GO 版本 + "hgVersion": consts.VersionApp, // HG 版本 + "startTime": gtime.New(meta.STartTime), + "runTime": gtime.Now().Timestamp() - meta.STartTime, + "rootPath": runtime.GOROOT(), + "pwd": pwd, + "goroutine": runtime.NumGoroutine(), + "goMem": format.FileSize(int64(gm.Sys)), + "goSize": file.DirSize(pwd), + } + + if simple.IsDemo(client.Context()) { + data["rootPath"] = consts.DemoTips + data["pwd"] = consts.DemoTips + data["intranet_ip"] = consts.DemoTips + data["public_ip"] = consts.DemoTips + } + + websocket.SendSuccess(client, req.Event, data) +} + +// Trends 实时数据 +func (c *cMonitor) Trends(client *websocket.Client, req *websocket.WRequest) { + type NetC struct { + Time *gtime.Time `json:"time"` + BytesSent string `json:"bytesSent"` // number of bytes sent + BytesRecv string `json:"bytesRecv"` // number of bytes received + Down float64 `json:"down"` + UP float64 `json:"up"` + } + + var ( + mCpu, cpuErr = cpu.Info() + mCpuUsed float64 + mMem, memErr = mem.VirtualMemory() + mMemUsed float64 + mDisk, diskErr = disk.Usage("/") + mProcess, processErr = process.Pids() + mLoadAvg = new(model.LoadAvgStats) + monitorHeads []MonitorHead + nets []NetC + meta = service.AdminMonitor().GetMeta(client.Context()) + ) + + if cpuErr != nil { + g.Log().Infof(client.Context(), "read CPU info fail:%+v", cpuErr) + mCpu = []cpu.InfoStat{{VendorID: "", ModelName: ""}} + } + + if memErr != nil { + g.Log().Infof(client.Context(), "read mem info fail:%+v", memErr) + mMem = new(mem.VirtualMemoryStat) + } + + if diskErr != nil { + g.Log().Infof(client.Context(), "read disk info fail:%+v", diskErr) + mDisk = new(disk.UsageStat) + } + + if processErr != nil { + g.Log().Infof(client.Context(), "read process.Pids fail:%+v", processErr) + } + + // cpu使用率 + cu, err := cpu.Percent(time.Second, false) + if err == nil { + mCpuUsed = gconv.Float64(fmt.Sprintf("%.2f", cu[0])) + } + + // 内存使用率 + mMemUsed = gconv.Float64(fmt.Sprintf("%.2f", mMem.UsedPercent)) + + // 负载 + if len(meta.LoadAvg) > 0 { + mLoadAvg = meta.LoadAvg[len(meta.LoadAvg)-1] + } + + monitorHeads = append(monitorHeads, MonitorHead{ + Title: "CPU", + Data: "使用率 " + format.Round2String(mCpuUsed) + "%", + BottomTitle: "CPU数量", + TotalSum: gconv.String(runtime.NumCPU()) + "核心", + IconClass: "HardwareChip", + Extra: MonitorHeadExtra{ + Data: mCpu[0].VendorID, + Data1: mCpu[0].ModelName, + }}, + MonitorHead{ + Title: "内存", + Data: "使用率 " + format.Round2String(mMemUsed) + "%", + BottomTitle: "总内存", + TotalSum: format.FileSize(int64(mMem.Total)), + IconClass: "AppsSharp", + Extra: MonitorHeadExtra{ + Data: format.FileSize(int64(mMem.Used)), + Data1: format.FileSize(int64(mMem.Total - mMem.Used)), + }}, + MonitorHead{ + Title: "磁盘", + Data: "已用 " + format.FileSize(int64(mDisk.Used)), + BottomTitle: "总容量", + TotalSum: format.FileSize(int64(mDisk.Total)), + IconClass: "PieChart", + Extra: MonitorHeadExtra{ + Data: format.Round2String(mDisk.UsedPercent), + }}, + MonitorHead{ + Title: "负载", + Data: format.Round2String(mLoadAvg.Ratio) + "%", + BottomTitle: "总进程数", + TotalSum: gconv.String(len(mProcess)) + "个", + IconClass: "Analytics", + }) + + for _, v := range meta.NetIO { + nets = append(nets, NetC{ + Time: v.Time, + BytesSent: format.FileSize(int64(v.BytesSent)), // 转换为最大整数单位 + BytesRecv: format.FileSize(int64(v.BytesRecv)), + Down: format.Round2Float64(v.Down / 1024), // 转换为kb + UP: format.Round2Float64(v.UP / 1024), + }) + } + + websocket.SendSuccess(client, req.Event, g.Map{ + "head": monitorHeads, + "load": meta.LoadAvg, + "net": nets, + }) +} diff --git a/server/internal/controller/websocket/handler/common/site.go b/server/internal/controller/websocket/handler/common/site.go new file mode 100644 index 0000000..400165e --- /dev/null +++ b/server/internal/controller/websocket/handler/common/site.go @@ -0,0 +1,39 @@ +// Package common +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package common + +import ( + "github.com/gogf/gf/v2/util/gconv" + "hotgo/internal/websocket" +) + +var ( + Site = cSite{} +) + +type cSite struct{} + +func (c *cSite) Join(client *websocket.Client, req *websocket.WRequest) { + name := gconv.String(req.Data["id"]) + + if !client.Tags.Contains(name) { + client.Tags.Append(name) + } + + websocket.SendSuccess(client, req.Event, client.Tags.Slice()) +} + +func (c *cSite) Quit(client *websocket.Client, req *websocket.WRequest) { + name := gconv.String(req.Data["id"]) + if client.Tags.Contains(name) { + client.Tags.RemoveValue(name) + } + websocket.SendSuccess(client, req.Event, client.Tags.Slice()) +} + +func (c *cSite) Ping(client *websocket.Client, req *websocket.WRequest) { + websocket.SendSuccess(client, req.Event) +} diff --git a/server/internal/controller/websocket/send.go b/server/internal/controller/websocket/send.go new file mode 100644 index 0000000..03cec08 --- /dev/null +++ b/server/internal/controller/websocket/send.go @@ -0,0 +1,29 @@ +// Package websocket +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package websocket + +import ( + "context" + "hotgo/api/websocket/base" + "hotgo/internal/websocket" + "hotgo/utility/simple" +) + +// Send 通过http发送ws消息 +var Send = send{} + +type send struct{} + +// SendToTag 发送标签消息 +func (c *send) SendToTag(ctx context.Context, req *base.SendToTagReq) (res *base.SendToTagRes, err error) { + simple.SafeGo(ctx, func(ctx context.Context) { + websocket.SendToTag(req.Tag, &websocket.WResponse{ + Event: req.Response.Event, + Data: req.Response, + }) + }) + return +} diff --git a/server/internal/crons/close_order.go b/server/internal/crons/close_order.go new file mode 100644 index 0000000..8dfebe6 --- /dev/null +++ b/server/internal/crons/close_order.go @@ -0,0 +1,45 @@ +// Package crons +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package crons + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gtime" + "hotgo/internal/consts" + "hotgo/internal/dao" + "hotgo/internal/library/cron" + "hotgo/internal/service" +) + +func init() { + cron.Register(CloseOrder) +} + +// CloseOrder 取消过期订单 +var CloseOrder = &cCloseOrder{name: "close_order"} + +type cCloseOrder struct { + name string +} + +func (c *cCloseOrder) GetName() string { + return c.name +} + +// Execute 执行任务 +func (c *cCloseOrder) Execute(ctx context.Context, parser *cron.Parser) (err error) { + _, err = service.AdminOrder().Model(ctx). + Where(dao.AdminOrder.Columns().Status, consts.OrderStatusNotPay). + WhereLTE(dao.AdminOrder.Columns().CreatedAt, gtime.Now().AddDate(0, 0, -1)). + Data(g.Map{ + dao.AdminOrder.Columns().Status: consts.OrderStatusClose, + }).Update() + if err != nil { + parser.Logger.Warning(ctx, "cron CloseOrder Execute err:%+v", err) + } + return +} diff --git a/server/internal/crons/test.go b/server/internal/crons/test.go new file mode 100644 index 0000000..c207c23 --- /dev/null +++ b/server/internal/crons/test.go @@ -0,0 +1,33 @@ +// Package crons +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package crons + +import ( + "context" + "hotgo/internal/library/cron" + "time" +) + +func init() { + cron.Register(Test) +} + +// Test 测试任务(无参数) +var Test = &cTest{name: "test"} + +type cTest struct { + name string +} + +func (c *cTest) GetName() string { + return c.name +} + +// Execute 执行任务 +func (c *cTest) Execute(ctx context.Context, parser *cron.Parser) (err error) { + parser.Logger.Infof(ctx, "cron test Execute:%v", time.Now()) + return +} diff --git a/server/internal/crons/test2.go b/server/internal/crons/test2.go new file mode 100644 index 0000000..c312e13 --- /dev/null +++ b/server/internal/crons/test2.go @@ -0,0 +1,45 @@ +// Package crons +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package crons + +import ( + "context" + "github.com/gogf/gf/v2/errors/gerror" + "hotgo/internal/library/cron" + "time" +) + +func init() { + cron.Register(Test2) +} + +// Test2 测试2任务(带参数) +var Test2 = &cTest2{name: "test2"} + +type cTest2 struct { + name string +} + +func (c *cTest2) GetName() string { + return c.name +} + +// Execute 执行任务 +func (c *cTest2) Execute(ctx context.Context, parser *cron.Parser) (err error) { + if len(parser.Args) != 3 { + err = gerror.New("传入参数不正确!") + return + } + + var ( + name = parser.Args[0] + age = parser.Args[1] + msg = parser.Args[2] + ) + + parser.Logger.Infof(ctx, "cron test2 Execute:%v, name:%v, age:%v, msg:%v", time.Now(), name, age, msg) + return +} diff --git a/server/internal/dao/.gitkeep b/server/internal/dao/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/server/internal/dao/addon_hgexample_table.go b/server/internal/dao/addon_hgexample_table.go new file mode 100755 index 0000000..1191340 --- /dev/null +++ b/server/internal/dao/addon_hgexample_table.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// addonHgexampleTableDao is the data access object for the table hg_addon_hgexample_table. +// You can define custom methods on it to extend its functionality as needed. +type addonHgexampleTableDao struct { + *internal.AddonHgexampleTableDao +} + +var ( + // AddonHgexampleTable is a globally accessible object for table hg_addon_hgexample_table operations. + AddonHgexampleTable = addonHgexampleTableDao{internal.NewAddonHgexampleTableDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/addon_hgexample_tenant_order.go b/server/internal/dao/addon_hgexample_tenant_order.go new file mode 100755 index 0000000..d369ac6 --- /dev/null +++ b/server/internal/dao/addon_hgexample_tenant_order.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// addonHgexampleTenantOrderDao is the data access object for the table hg_addon_hgexample_tenant_order. +// You can define custom methods on it to extend its functionality as needed. +type addonHgexampleTenantOrderDao struct { + *internal.AddonHgexampleTenantOrderDao +} + +var ( + // AddonHgexampleTenantOrder is a globally accessible object for table hg_addon_hgexample_tenant_order operations. + AddonHgexampleTenantOrder = addonHgexampleTenantOrderDao{internal.NewAddonHgexampleTenantOrderDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/admin_cash.go b/server/internal/dao/admin_cash.go new file mode 100755 index 0000000..6bda8cf --- /dev/null +++ b/server/internal/dao/admin_cash.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// adminCashDao is the data access object for the table hg_admin_cash. +// You can define custom methods on it to extend its functionality as needed. +type adminCashDao struct { + *internal.AdminCashDao +} + +var ( + // AdminCash is a globally accessible object for table hg_admin_cash operations. + AdminCash = adminCashDao{internal.NewAdminCashDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/admin_credits_log.go b/server/internal/dao/admin_credits_log.go new file mode 100755 index 0000000..b415991 --- /dev/null +++ b/server/internal/dao/admin_credits_log.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// adminCreditsLogDao is the data access object for the table hg_admin_credits_log. +// You can define custom methods on it to extend its functionality as needed. +type adminCreditsLogDao struct { + *internal.AdminCreditsLogDao +} + +var ( + // AdminCreditsLog is a globally accessible object for table hg_admin_credits_log operations. + AdminCreditsLog = adminCreditsLogDao{internal.NewAdminCreditsLogDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/admin_dept.go b/server/internal/dao/admin_dept.go new file mode 100755 index 0000000..4eeced7 --- /dev/null +++ b/server/internal/dao/admin_dept.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// adminDeptDao is the data access object for the table hg_admin_dept. +// You can define custom methods on it to extend its functionality as needed. +type adminDeptDao struct { + *internal.AdminDeptDao +} + +var ( + // AdminDept is a globally accessible object for table hg_admin_dept operations. + AdminDept = adminDeptDao{internal.NewAdminDeptDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/admin_member.go b/server/internal/dao/admin_member.go new file mode 100755 index 0000000..112f3f0 --- /dev/null +++ b/server/internal/dao/admin_member.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// adminMemberDao is the data access object for the table hg_admin_member. +// You can define custom methods on it to extend its functionality as needed. +type adminMemberDao struct { + *internal.AdminMemberDao +} + +var ( + // AdminMember is a globally accessible object for table hg_admin_member operations. + AdminMember = adminMemberDao{internal.NewAdminMemberDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/admin_member_post.go b/server/internal/dao/admin_member_post.go new file mode 100755 index 0000000..1c4ab68 --- /dev/null +++ b/server/internal/dao/admin_member_post.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// adminMemberPostDao is the data access object for the table hg_admin_member_post. +// You can define custom methods on it to extend its functionality as needed. +type adminMemberPostDao struct { + *internal.AdminMemberPostDao +} + +var ( + // AdminMemberPost is a globally accessible object for table hg_admin_member_post operations. + AdminMemberPost = adminMemberPostDao{internal.NewAdminMemberPostDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/admin_member_role.go b/server/internal/dao/admin_member_role.go new file mode 100755 index 0000000..7b48a86 --- /dev/null +++ b/server/internal/dao/admin_member_role.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// adminMemberRoleDao is the data access object for the table hg_admin_member_role. +// You can define custom methods on it to extend its functionality as needed. +type adminMemberRoleDao struct { + *internal.AdminMemberRoleDao +} + +var ( + // AdminMemberRole is a globally accessible object for table hg_admin_member_role operations. + AdminMemberRole = adminMemberRoleDao{internal.NewAdminMemberRoleDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/admin_menu.go b/server/internal/dao/admin_menu.go new file mode 100755 index 0000000..8bac378 --- /dev/null +++ b/server/internal/dao/admin_menu.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// adminMenuDao is the data access object for the table hg_admin_menu. +// You can define custom methods on it to extend its functionality as needed. +type adminMenuDao struct { + *internal.AdminMenuDao +} + +var ( + // AdminMenu is a globally accessible object for table hg_admin_menu operations. + AdminMenu = adminMenuDao{internal.NewAdminMenuDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/admin_notice.go b/server/internal/dao/admin_notice.go new file mode 100755 index 0000000..457c3e7 --- /dev/null +++ b/server/internal/dao/admin_notice.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// adminNoticeDao is the data access object for the table hg_admin_notice. +// You can define custom methods on it to extend its functionality as needed. +type adminNoticeDao struct { + *internal.AdminNoticeDao +} + +var ( + // AdminNotice is a globally accessible object for table hg_admin_notice operations. + AdminNotice = adminNoticeDao{internal.NewAdminNoticeDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/admin_notice_read.go b/server/internal/dao/admin_notice_read.go new file mode 100755 index 0000000..1a8f484 --- /dev/null +++ b/server/internal/dao/admin_notice_read.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// adminNoticeReadDao is the data access object for the table hg_admin_notice_read. +// You can define custom methods on it to extend its functionality as needed. +type adminNoticeReadDao struct { + *internal.AdminNoticeReadDao +} + +var ( + // AdminNoticeRead is a globally accessible object for table hg_admin_notice_read operations. + AdminNoticeRead = adminNoticeReadDao{internal.NewAdminNoticeReadDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/admin_oauth.go b/server/internal/dao/admin_oauth.go new file mode 100755 index 0000000..eed3b14 --- /dev/null +++ b/server/internal/dao/admin_oauth.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// adminOauthDao is the data access object for the table hg_admin_oauth. +// You can define custom methods on it to extend its functionality as needed. +type adminOauthDao struct { + *internal.AdminOauthDao +} + +var ( + // AdminOauth is a globally accessible object for table hg_admin_oauth operations. + AdminOauth = adminOauthDao{internal.NewAdminOauthDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/admin_order.go b/server/internal/dao/admin_order.go new file mode 100755 index 0000000..8fd4a80 --- /dev/null +++ b/server/internal/dao/admin_order.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// adminOrderDao is the data access object for the table hg_admin_order. +// You can define custom methods on it to extend its functionality as needed. +type adminOrderDao struct { + *internal.AdminOrderDao +} + +var ( + // AdminOrder is a globally accessible object for table hg_admin_order operations. + AdminOrder = adminOrderDao{internal.NewAdminOrderDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/admin_post.go b/server/internal/dao/admin_post.go new file mode 100755 index 0000000..ecf69cd --- /dev/null +++ b/server/internal/dao/admin_post.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// adminPostDao is the data access object for the table hg_admin_post. +// You can define custom methods on it to extend its functionality as needed. +type adminPostDao struct { + *internal.AdminPostDao +} + +var ( + // AdminPost is a globally accessible object for table hg_admin_post operations. + AdminPost = adminPostDao{internal.NewAdminPostDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/admin_role.go b/server/internal/dao/admin_role.go new file mode 100755 index 0000000..8315e43 --- /dev/null +++ b/server/internal/dao/admin_role.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// adminRoleDao is the data access object for the table hg_admin_role. +// You can define custom methods on it to extend its functionality as needed. +type adminRoleDao struct { + *internal.AdminRoleDao +} + +var ( + // AdminRole is a globally accessible object for table hg_admin_role operations. + AdminRole = adminRoleDao{internal.NewAdminRoleDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/admin_role_casbin.go b/server/internal/dao/admin_role_casbin.go new file mode 100755 index 0000000..3557470 --- /dev/null +++ b/server/internal/dao/admin_role_casbin.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// adminRoleCasbinDao is the data access object for the table hg_admin_role_casbin. +// You can define custom methods on it to extend its functionality as needed. +type adminRoleCasbinDao struct { + *internal.AdminRoleCasbinDao +} + +var ( + // AdminRoleCasbin is a globally accessible object for table hg_admin_role_casbin operations. + AdminRoleCasbin = adminRoleCasbinDao{internal.NewAdminRoleCasbinDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/admin_role_menu.go b/server/internal/dao/admin_role_menu.go new file mode 100755 index 0000000..e180651 --- /dev/null +++ b/server/internal/dao/admin_role_menu.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// adminRoleMenuDao is the data access object for the table hg_admin_role_menu. +// You can define custom methods on it to extend its functionality as needed. +type adminRoleMenuDao struct { + *internal.AdminRoleMenuDao +} + +var ( + // AdminRoleMenu is a globally accessible object for table hg_admin_role_menu operations. + AdminRoleMenu = adminRoleMenuDao{internal.NewAdminRoleMenuDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/internal/addon_hgexample_table.go b/server/internal/dao/internal/addon_hgexample_table.go new file mode 100755 index 0000000..97a8551 --- /dev/null +++ b/server/internal/dao/internal/addon_hgexample_table.go @@ -0,0 +1,151 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AddonHgexampleTableDao is the data access object for the table hg_addon_hgexample_table. +type AddonHgexampleTableDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AddonHgexampleTableColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AddonHgexampleTableColumns defines and stores column names for the table hg_addon_hgexample_table. +type AddonHgexampleTableColumns struct { + Id string // ID + Pid string // 上级ID + Level string // 树等级 + Tree string // 关系树 + CategoryId string // 分类ID + Flag string // 标签 + Title string // 标题 + Description string // 描述 + Content string // 内容 + Image string // 单图 + Images string // 多图 + Attachfile string // 附件 + Attachfiles string // 多附件 + Map string // 动态键值对 + Star string // 推荐星 + Price string // 价格 + Views string // 浏览次数 + ActivityAt string // 活动时间 + StartAt string // 开启时间 + EndAt string // 结束时间 + Switch string // 开关 + Sort string // 排序 + Avatar string // 头像 + Sex string // 性别 + Qq string // qq + Email string // 邮箱 + Mobile string // 手机号码 + Hobby string // 爱好 + Channel string // 渠道 + CityId string // 所在城市 + Remark string // 备注 + Status string // 状态 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + CreatedAt string // 创建时间 + UpdatedAt string // 修改时间 + DeletedAt string // 删除时间 +} + +// addonHgexampleTableColumns holds the columns for the table hg_addon_hgexample_table. +var addonHgexampleTableColumns = AddonHgexampleTableColumns{ + Id: "id", + Pid: "pid", + Level: "level", + Tree: "tree", + CategoryId: "category_id", + Flag: "flag", + Title: "title", + Description: "description", + Content: "content", + Image: "image", + Images: "images", + Attachfile: "attachfile", + Attachfiles: "attachfiles", + Map: "map", + Star: "star", + Price: "price", + Views: "views", + ActivityAt: "activity_at", + StartAt: "start_at", + EndAt: "end_at", + Switch: "switch", + Sort: "sort", + Avatar: "avatar", + Sex: "sex", + Qq: "qq", + Email: "email", + Mobile: "mobile", + Hobby: "hobby", + Channel: "channel", + CityId: "city_id", + Remark: "remark", + Status: "status", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewAddonHgexampleTableDao creates and returns a new DAO object for table data access. +func NewAddonHgexampleTableDao(handlers ...gdb.ModelHandler) *AddonHgexampleTableDao { + return &AddonHgexampleTableDao{ + group: "default", + table: "hg_addon_hgexample_table", + columns: addonHgexampleTableColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AddonHgexampleTableDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AddonHgexampleTableDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AddonHgexampleTableDao) Columns() AddonHgexampleTableColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AddonHgexampleTableDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AddonHgexampleTableDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AddonHgexampleTableDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/addon_hgexample_tenant_order.go b/server/internal/dao/internal/addon_hgexample_tenant_order.go new file mode 100755 index 0000000..bf41fd8 --- /dev/null +++ b/server/internal/dao/internal/addon_hgexample_tenant_order.go @@ -0,0 +1,99 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AddonHgexampleTenantOrderDao is the data access object for the table hg_addon_hgexample_tenant_order. +type AddonHgexampleTenantOrderDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AddonHgexampleTenantOrderColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AddonHgexampleTenantOrderColumns defines and stores column names for the table hg_addon_hgexample_tenant_order. +type AddonHgexampleTenantOrderColumns struct { + Id string // 主键 + TenantId string // 租户ID + MerchantId string // 商户ID + UserId string // 用户ID + ProductName string // 购买产品 + OrderSn string // 订单号 + Money string // 充值金额 + Remark string // 备注 + Status string // 订单状态 + CreatedAt string // 创建时间 + UpdatedAt string // 修改时间 +} + +// addonHgexampleTenantOrderColumns holds the columns for the table hg_addon_hgexample_tenant_order. +var addonHgexampleTenantOrderColumns = AddonHgexampleTenantOrderColumns{ + Id: "id", + TenantId: "tenant_id", + MerchantId: "merchant_id", + UserId: "user_id", + ProductName: "product_name", + OrderSn: "order_sn", + Money: "money", + Remark: "remark", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewAddonHgexampleTenantOrderDao creates and returns a new DAO object for table data access. +func NewAddonHgexampleTenantOrderDao(handlers ...gdb.ModelHandler) *AddonHgexampleTenantOrderDao { + return &AddonHgexampleTenantOrderDao{ + group: "default", + table: "hg_addon_hgexample_tenant_order", + columns: addonHgexampleTenantOrderColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AddonHgexampleTenantOrderDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AddonHgexampleTenantOrderDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AddonHgexampleTenantOrderDao) Columns() AddonHgexampleTenantOrderColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AddonHgexampleTenantOrderDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AddonHgexampleTenantOrderDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AddonHgexampleTenantOrderDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/admin_cash.go b/server/internal/dao/internal/admin_cash.go new file mode 100755 index 0000000..a9bdb1b --- /dev/null +++ b/server/internal/dao/internal/admin_cash.go @@ -0,0 +1,97 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AdminCashDao is the data access object for the table hg_admin_cash. +type AdminCashDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AdminCashColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AdminCashColumns defines and stores column names for the table hg_admin_cash. +type AdminCashColumns struct { + Id string // ID + MemberId string // 管理员ID + Money string // 提现金额 + Fee string // 手续费 + LastMoney string // 最终到账金额 + Ip string // 申请人IP + Status string // 状态码 + Msg string // 处理结果 + HandleAt string // 处理时间 + CreatedAt string // 申请时间 +} + +// adminCashColumns holds the columns for the table hg_admin_cash. +var adminCashColumns = AdminCashColumns{ + Id: "id", + MemberId: "member_id", + Money: "money", + Fee: "fee", + LastMoney: "last_money", + Ip: "ip", + Status: "status", + Msg: "msg", + HandleAt: "handle_at", + CreatedAt: "created_at", +} + +// NewAdminCashDao creates and returns a new DAO object for table data access. +func NewAdminCashDao(handlers ...gdb.ModelHandler) *AdminCashDao { + return &AdminCashDao{ + group: "default", + table: "hg_admin_cash", + columns: adminCashColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AdminCashDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AdminCashDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AdminCashDao) Columns() AdminCashColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AdminCashDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AdminCashDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AdminCashDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/admin_credits_log.go b/server/internal/dao/internal/admin_credits_log.go new file mode 100755 index 0000000..0b3602e --- /dev/null +++ b/server/internal/dao/internal/admin_credits_log.go @@ -0,0 +1,107 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AdminCreditsLogDao is the data access object for the table hg_admin_credits_log. +type AdminCreditsLogDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AdminCreditsLogColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AdminCreditsLogColumns defines and stores column names for the table hg_admin_credits_log. +type AdminCreditsLogColumns struct { + Id string // 变动ID + MemberId string // 管理员ID + AppId string // 应用id + AddonsName string // 插件名称 + CreditType string // 变动类型 + CreditGroup string // 变动组别 + BeforeNum string // 变动前 + Num string // 变动数据 + AfterNum string // 变动后 + Remark string // 备注 + Ip string // 操作人IP + MapId string // 关联ID + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 修改时间 +} + +// adminCreditsLogColumns holds the columns for the table hg_admin_credits_log. +var adminCreditsLogColumns = AdminCreditsLogColumns{ + Id: "id", + MemberId: "member_id", + AppId: "app_id", + AddonsName: "addons_name", + CreditType: "credit_type", + CreditGroup: "credit_group", + BeforeNum: "before_num", + Num: "num", + AfterNum: "after_num", + Remark: "remark", + Ip: "ip", + MapId: "map_id", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewAdminCreditsLogDao creates and returns a new DAO object for table data access. +func NewAdminCreditsLogDao(handlers ...gdb.ModelHandler) *AdminCreditsLogDao { + return &AdminCreditsLogDao{ + group: "default", + table: "hg_admin_credits_log", + columns: adminCreditsLogColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AdminCreditsLogDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AdminCreditsLogDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AdminCreditsLogDao) Columns() AdminCreditsLogColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AdminCreditsLogDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AdminCreditsLogDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AdminCreditsLogDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/admin_dept.go b/server/internal/dao/internal/admin_dept.go new file mode 100755 index 0000000..becb639 --- /dev/null +++ b/server/internal/dao/internal/admin_dept.go @@ -0,0 +1,105 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AdminDeptDao is the data access object for the table hg_admin_dept. +type AdminDeptDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AdminDeptColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AdminDeptColumns defines and stores column names for the table hg_admin_dept. +type AdminDeptColumns struct { + Id string // 部门ID + Pid string // 父部门ID + Name string // 部门名称 + Code string // 部门编码 + Type string // 部门类型 + Leader string // 负责人 + Phone string // 联系电话 + Email string // 邮箱 + Level string // 关系树等级 + Tree string // 关系树 + Sort string // 排序 + Status string // 部门状态 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// adminDeptColumns holds the columns for the table hg_admin_dept. +var adminDeptColumns = AdminDeptColumns{ + Id: "id", + Pid: "pid", + Name: "name", + Code: "code", + Type: "type", + Leader: "leader", + Phone: "phone", + Email: "email", + Level: "level", + Tree: "tree", + Sort: "sort", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewAdminDeptDao creates and returns a new DAO object for table data access. +func NewAdminDeptDao(handlers ...gdb.ModelHandler) *AdminDeptDao { + return &AdminDeptDao{ + group: "default", + table: "hg_admin_dept", + columns: adminDeptColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AdminDeptDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AdminDeptDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AdminDeptDao) Columns() AdminDeptColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AdminDeptDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AdminDeptDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AdminDeptDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/admin_member.go b/server/internal/dao/internal/admin_member.go new file mode 100755 index 0000000..93ebaa7 --- /dev/null +++ b/server/internal/dao/internal/admin_member.go @@ -0,0 +1,133 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AdminMemberDao is the data access object for the table hg_admin_member. +type AdminMemberDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AdminMemberColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AdminMemberColumns defines and stores column names for the table hg_admin_member. +type AdminMemberColumns struct { + Id string // 管理员ID + DeptId string // 部门ID + RoleId string // 角色ID + RealName string // 真实姓名 + Username string // 帐号 + PasswordHash string // 密码 + Salt string // 密码盐 + PasswordResetToken string // 密码重置令牌 + Integral string // 积分 + Balance string // 余额 + Avatar string // 头像 + Sex string // 性别 + Qq string // qq + Email string // 邮箱 + Mobile string // 手机号码 + Birthday string // 生日 + CityId string // 城市编码 + Address string // 联系地址 + Pid string // 上级管理员ID + Level string // 关系树等级 + Tree string // 关系树 + InviteCode string // 邀请码 + Cash string // 提现配置 + LastActiveAt string // 最后活跃时间 + Remark string // 备注 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 修改时间 +} + +// adminMemberColumns holds the columns for the table hg_admin_member. +var adminMemberColumns = AdminMemberColumns{ + Id: "id", + DeptId: "dept_id", + RoleId: "role_id", + RealName: "real_name", + Username: "username", + PasswordHash: "password_hash", + Salt: "salt", + PasswordResetToken: "password_reset_token", + Integral: "integral", + Balance: "balance", + Avatar: "avatar", + Sex: "sex", + Qq: "qq", + Email: "email", + Mobile: "mobile", + Birthday: "birthday", + CityId: "city_id", + Address: "address", + Pid: "pid", + Level: "level", + Tree: "tree", + InviteCode: "invite_code", + Cash: "cash", + LastActiveAt: "last_active_at", + Remark: "remark", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewAdminMemberDao creates and returns a new DAO object for table data access. +func NewAdminMemberDao(handlers ...gdb.ModelHandler) *AdminMemberDao { + return &AdminMemberDao{ + group: "default", + table: "hg_admin_member", + columns: adminMemberColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AdminMemberDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AdminMemberDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AdminMemberDao) Columns() AdminMemberColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AdminMemberDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AdminMemberDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AdminMemberDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/admin_member_post.go b/server/internal/dao/internal/admin_member_post.go new file mode 100755 index 0000000..8a30c9e --- /dev/null +++ b/server/internal/dao/internal/admin_member_post.go @@ -0,0 +1,81 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AdminMemberPostDao is the data access object for the table hg_admin_member_post. +type AdminMemberPostDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AdminMemberPostColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AdminMemberPostColumns defines and stores column names for the table hg_admin_member_post. +type AdminMemberPostColumns struct { + MemberId string // 管理员ID + PostId string // 岗位ID +} + +// adminMemberPostColumns holds the columns for the table hg_admin_member_post. +var adminMemberPostColumns = AdminMemberPostColumns{ + MemberId: "member_id", + PostId: "post_id", +} + +// NewAdminMemberPostDao creates and returns a new DAO object for table data access. +func NewAdminMemberPostDao(handlers ...gdb.ModelHandler) *AdminMemberPostDao { + return &AdminMemberPostDao{ + group: "default", + table: "hg_admin_member_post", + columns: adminMemberPostColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AdminMemberPostDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AdminMemberPostDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AdminMemberPostDao) Columns() AdminMemberPostColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AdminMemberPostDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AdminMemberPostDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AdminMemberPostDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/admin_member_role.go b/server/internal/dao/internal/admin_member_role.go new file mode 100755 index 0000000..094d663 --- /dev/null +++ b/server/internal/dao/internal/admin_member_role.go @@ -0,0 +1,81 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AdminMemberRoleDao is the data access object for the table hg_admin_member_role. +type AdminMemberRoleDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AdminMemberRoleColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AdminMemberRoleColumns defines and stores column names for the table hg_admin_member_role. +type AdminMemberRoleColumns struct { + MemberId string // 管理员ID + RoleId string // 角色ID +} + +// adminMemberRoleColumns holds the columns for the table hg_admin_member_role. +var adminMemberRoleColumns = AdminMemberRoleColumns{ + MemberId: "member_id", + RoleId: "role_id", +} + +// NewAdminMemberRoleDao creates and returns a new DAO object for table data access. +func NewAdminMemberRoleDao(handlers ...gdb.ModelHandler) *AdminMemberRoleDao { + return &AdminMemberRoleDao{ + group: "default", + table: "hg_admin_member_role", + columns: adminMemberRoleColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AdminMemberRoleDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AdminMemberRoleDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AdminMemberRoleDao) Columns() AdminMemberRoleColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AdminMemberRoleDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AdminMemberRoleDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AdminMemberRoleDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/admin_menu.go b/server/internal/dao/internal/admin_menu.go new file mode 100755 index 0000000..3312718 --- /dev/null +++ b/server/internal/dao/internal/admin_menu.go @@ -0,0 +1,129 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AdminMenuDao is the data access object for the table hg_admin_menu. +type AdminMenuDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AdminMenuColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AdminMenuColumns defines and stores column names for the table hg_admin_menu. +type AdminMenuColumns struct { + Id string // 菜单ID + Pid string // 父菜单ID + Level string // 关系树等级 + Tree string // 关系树 + Title string // 菜单名称 + Name string // 名称编码 + Path string // 路由地址 + Icon string // 菜单图标 + Type string // 菜单类型(1目录 2菜单 3按钮) + Redirect string // 重定向地址 + Permissions string // 菜单包含权限集合 + PermissionName string // 权限名称 + Component string // 组件路径 + AlwaysShow string // 取消自动计算根路由模式 + ActiveMenu string // 高亮菜单编码 + IsRoot string // 是否跟路由 + IsFrame string // 是否内嵌 + FrameSrc string // 内联外部地址 + KeepAlive string // 缓存该路由 + Hidden string // 是否隐藏 + Affix string // 是否固定 + Sort string // 排序 + Remark string // 备注 + Status string // 菜单状态 + UpdatedAt string // 更新时间 + CreatedAt string // 创建时间 +} + +// adminMenuColumns holds the columns for the table hg_admin_menu. +var adminMenuColumns = AdminMenuColumns{ + Id: "id", + Pid: "pid", + Level: "level", + Tree: "tree", + Title: "title", + Name: "name", + Path: "path", + Icon: "icon", + Type: "type", + Redirect: "redirect", + Permissions: "permissions", + PermissionName: "permission_name", + Component: "component", + AlwaysShow: "always_show", + ActiveMenu: "active_menu", + IsRoot: "is_root", + IsFrame: "is_frame", + FrameSrc: "frame_src", + KeepAlive: "keep_alive", + Hidden: "hidden", + Affix: "affix", + Sort: "sort", + Remark: "remark", + Status: "status", + UpdatedAt: "updated_at", + CreatedAt: "created_at", +} + +// NewAdminMenuDao creates and returns a new DAO object for table data access. +func NewAdminMenuDao(handlers ...gdb.ModelHandler) *AdminMenuDao { + return &AdminMenuDao{ + group: "default", + table: "hg_admin_menu", + columns: adminMenuColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AdminMenuDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AdminMenuDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AdminMenuDao) Columns() AdminMenuColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AdminMenuDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AdminMenuDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AdminMenuDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/admin_notice.go b/server/internal/dao/internal/admin_notice.go new file mode 100755 index 0000000..ecb0cb9 --- /dev/null +++ b/server/internal/dao/internal/admin_notice.go @@ -0,0 +1,105 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AdminNoticeDao is the data access object for the table hg_admin_notice. +type AdminNoticeDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AdminNoticeColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AdminNoticeColumns defines and stores column names for the table hg_admin_notice. +type AdminNoticeColumns struct { + Id string // 公告ID + Title string // 公告标题 + Type string // 公告类型 + Tag string // 标签 + Content string // 公告内容 + Receiver string // 接收者 + Remark string // 备注 + Sort string // 排序 + Status string // 公告状态 + CreatedBy string // 发送人 + UpdatedBy string // 修改人 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 + DeletedAt string // 删除时间 +} + +// adminNoticeColumns holds the columns for the table hg_admin_notice. +var adminNoticeColumns = AdminNoticeColumns{ + Id: "id", + Title: "title", + Type: "type", + Tag: "tag", + Content: "content", + Receiver: "receiver", + Remark: "remark", + Sort: "sort", + Status: "status", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewAdminNoticeDao creates and returns a new DAO object for table data access. +func NewAdminNoticeDao(handlers ...gdb.ModelHandler) *AdminNoticeDao { + return &AdminNoticeDao{ + group: "default", + table: "hg_admin_notice", + columns: adminNoticeColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AdminNoticeDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AdminNoticeDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AdminNoticeDao) Columns() AdminNoticeColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AdminNoticeDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AdminNoticeDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AdminNoticeDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/admin_notice_read.go b/server/internal/dao/internal/admin_notice_read.go new file mode 100755 index 0000000..2ee0f7b --- /dev/null +++ b/server/internal/dao/internal/admin_notice_read.go @@ -0,0 +1,89 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AdminNoticeReadDao is the data access object for the table hg_admin_notice_read. +type AdminNoticeReadDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AdminNoticeReadColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AdminNoticeReadColumns defines and stores column names for the table hg_admin_notice_read. +type AdminNoticeReadColumns struct { + Id string // 记录ID + NoticeId string // 公告ID + MemberId string // 会员ID + Clicks string // 已读次数 + UpdatedAt string // 更新时间 + CreatedAt string // 阅读时间 +} + +// adminNoticeReadColumns holds the columns for the table hg_admin_notice_read. +var adminNoticeReadColumns = AdminNoticeReadColumns{ + Id: "id", + NoticeId: "notice_id", + MemberId: "member_id", + Clicks: "clicks", + UpdatedAt: "updated_at", + CreatedAt: "created_at", +} + +// NewAdminNoticeReadDao creates and returns a new DAO object for table data access. +func NewAdminNoticeReadDao(handlers ...gdb.ModelHandler) *AdminNoticeReadDao { + return &AdminNoticeReadDao{ + group: "default", + table: "hg_admin_notice_read", + columns: adminNoticeReadColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AdminNoticeReadDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AdminNoticeReadDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AdminNoticeReadDao) Columns() AdminNoticeReadColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AdminNoticeReadDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AdminNoticeReadDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AdminNoticeReadDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/admin_oauth.go b/server/internal/dao/internal/admin_oauth.go new file mode 100755 index 0000000..f812ac6 --- /dev/null +++ b/server/internal/dao/internal/admin_oauth.go @@ -0,0 +1,107 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AdminOauthDao is the data access object for the table hg_admin_oauth. +type AdminOauthDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AdminOauthColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AdminOauthColumns defines and stores column names for the table hg_admin_oauth. +type AdminOauthColumns struct { + Id string // 主键 + MemberId string // 用户ID + Unionid string // 唯一ID + OauthClient string // 授权组别 + OauthOpenid string // 授权开放ID + Sex string // 性别 + Nickname string // 昵称 + HeadPortrait string // 头像 + Birthday string // 生日 + Country string // 国家 + Province string // 省 + City string // 市 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 修改时间 +} + +// adminOauthColumns holds the columns for the table hg_admin_oauth. +var adminOauthColumns = AdminOauthColumns{ + Id: "id", + MemberId: "member_id", + Unionid: "unionid", + OauthClient: "oauth_client", + OauthOpenid: "oauth_openid", + Sex: "sex", + Nickname: "nickname", + HeadPortrait: "head_portrait", + Birthday: "birthday", + Country: "country", + Province: "province", + City: "city", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewAdminOauthDao creates and returns a new DAO object for table data access. +func NewAdminOauthDao(handlers ...gdb.ModelHandler) *AdminOauthDao { + return &AdminOauthDao{ + group: "default", + table: "hg_admin_oauth", + columns: adminOauthColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AdminOauthDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AdminOauthDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AdminOauthDao) Columns() AdminOauthColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AdminOauthDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AdminOauthDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AdminOauthDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/admin_order.go b/server/internal/dao/internal/admin_order.go new file mode 100755 index 0000000..8b3df6f --- /dev/null +++ b/server/internal/dao/internal/admin_order.go @@ -0,0 +1,101 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AdminOrderDao is the data access object for the table hg_admin_order. +type AdminOrderDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AdminOrderColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AdminOrderColumns defines and stores column names for the table hg_admin_order. +type AdminOrderColumns struct { + Id string // 主键 + MemberId string // 管理员id + OrderType string // 订单类型 + ProductId string // 产品id + OrderSn string // 关联订单号 + Money string // 充值金额 + Remark string // 备注 + RefundReason string // 退款原因 + RejectRefundReason string // 拒绝退款原因 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 修改时间 +} + +// adminOrderColumns holds the columns for the table hg_admin_order. +var adminOrderColumns = AdminOrderColumns{ + Id: "id", + MemberId: "member_id", + OrderType: "order_type", + ProductId: "product_id", + OrderSn: "order_sn", + Money: "money", + Remark: "remark", + RefundReason: "refund_reason", + RejectRefundReason: "reject_refund_reason", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewAdminOrderDao creates and returns a new DAO object for table data access. +func NewAdminOrderDao(handlers ...gdb.ModelHandler) *AdminOrderDao { + return &AdminOrderDao{ + group: "default", + table: "hg_admin_order", + columns: adminOrderColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AdminOrderDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AdminOrderDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AdminOrderDao) Columns() AdminOrderColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AdminOrderDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AdminOrderDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AdminOrderDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/admin_post.go b/server/internal/dao/internal/admin_post.go new file mode 100755 index 0000000..986103d --- /dev/null +++ b/server/internal/dao/internal/admin_post.go @@ -0,0 +1,93 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AdminPostDao is the data access object for the table hg_admin_post. +type AdminPostDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AdminPostColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AdminPostColumns defines and stores column names for the table hg_admin_post. +type AdminPostColumns struct { + Id string // 岗位ID + Code string // 岗位编码 + Name string // 岗位名称 + Remark string // 备注 + Sort string // 排序 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// adminPostColumns holds the columns for the table hg_admin_post. +var adminPostColumns = AdminPostColumns{ + Id: "id", + Code: "code", + Name: "name", + Remark: "remark", + Sort: "sort", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewAdminPostDao creates and returns a new DAO object for table data access. +func NewAdminPostDao(handlers ...gdb.ModelHandler) *AdminPostDao { + return &AdminPostDao{ + group: "default", + table: "hg_admin_post", + columns: adminPostColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AdminPostDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AdminPostDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AdminPostDao) Columns() AdminPostColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AdminPostDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AdminPostDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AdminPostDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/admin_role.go b/server/internal/dao/internal/admin_role.go new file mode 100755 index 0000000..6d8a324 --- /dev/null +++ b/server/internal/dao/internal/admin_role.go @@ -0,0 +1,103 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AdminRoleDao is the data access object for the table hg_admin_role. +type AdminRoleDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AdminRoleColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AdminRoleColumns defines and stores column names for the table hg_admin_role. +type AdminRoleColumns struct { + Id string // 角色ID + Name string // 角色名称 + Key string // 角色权限字符串 + DataScope string // 数据范围 + CustomDept string // 自定义部门权限 + Pid string // 上级角色ID + Level string // 关系树等级 + Tree string // 关系树 + Remark string // 备注 + Sort string // 排序 + Status string // 角色状态 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// adminRoleColumns holds the columns for the table hg_admin_role. +var adminRoleColumns = AdminRoleColumns{ + Id: "id", + Name: "name", + Key: "key", + DataScope: "data_scope", + CustomDept: "custom_dept", + Pid: "pid", + Level: "level", + Tree: "tree", + Remark: "remark", + Sort: "sort", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewAdminRoleDao creates and returns a new DAO object for table data access. +func NewAdminRoleDao(handlers ...gdb.ModelHandler) *AdminRoleDao { + return &AdminRoleDao{ + group: "default", + table: "hg_admin_role", + columns: adminRoleColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AdminRoleDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AdminRoleDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AdminRoleDao) Columns() AdminRoleColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AdminRoleDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AdminRoleDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AdminRoleDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/admin_role_casbin.go b/server/internal/dao/internal/admin_role_casbin.go new file mode 100755 index 0000000..e00b886 --- /dev/null +++ b/server/internal/dao/internal/admin_role_casbin.go @@ -0,0 +1,93 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AdminRoleCasbinDao is the data access object for the table hg_admin_role_casbin. +type AdminRoleCasbinDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AdminRoleCasbinColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AdminRoleCasbinColumns defines and stores column names for the table hg_admin_role_casbin. +type AdminRoleCasbinColumns struct { + Id string // + PType string // + V0 string // + V1 string // + V2 string // + V3 string // + V4 string // + V5 string // +} + +// adminRoleCasbinColumns holds the columns for the table hg_admin_role_casbin. +var adminRoleCasbinColumns = AdminRoleCasbinColumns{ + Id: "id", + PType: "p_type", + V0: "v0", + V1: "v1", + V2: "v2", + V3: "v3", + V4: "v4", + V5: "v5", +} + +// NewAdminRoleCasbinDao creates and returns a new DAO object for table data access. +func NewAdminRoleCasbinDao(handlers ...gdb.ModelHandler) *AdminRoleCasbinDao { + return &AdminRoleCasbinDao{ + group: "default", + table: "hg_admin_role_casbin", + columns: adminRoleCasbinColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AdminRoleCasbinDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AdminRoleCasbinDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AdminRoleCasbinDao) Columns() AdminRoleCasbinColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AdminRoleCasbinDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AdminRoleCasbinDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AdminRoleCasbinDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/admin_role_menu.go b/server/internal/dao/internal/admin_role_menu.go new file mode 100755 index 0000000..9f9e4ff --- /dev/null +++ b/server/internal/dao/internal/admin_role_menu.go @@ -0,0 +1,81 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// AdminRoleMenuDao is the data access object for the table hg_admin_role_menu. +type AdminRoleMenuDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns AdminRoleMenuColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// AdminRoleMenuColumns defines and stores column names for the table hg_admin_role_menu. +type AdminRoleMenuColumns struct { + RoleId string // 角色ID + MenuId string // 菜单ID +} + +// adminRoleMenuColumns holds the columns for the table hg_admin_role_menu. +var adminRoleMenuColumns = AdminRoleMenuColumns{ + RoleId: "role_id", + MenuId: "menu_id", +} + +// NewAdminRoleMenuDao creates and returns a new DAO object for table data access. +func NewAdminRoleMenuDao(handlers ...gdb.ModelHandler) *AdminRoleMenuDao { + return &AdminRoleMenuDao{ + group: "default", + table: "hg_admin_role_menu", + columns: adminRoleMenuColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *AdminRoleMenuDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *AdminRoleMenuDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *AdminRoleMenuDao) Columns() AdminRoleMenuColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *AdminRoleMenuDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *AdminRoleMenuDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *AdminRoleMenuDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/pay_log.go b/server/internal/dao/internal/pay_log.go new file mode 100755 index 0000000..0ef4f61 --- /dev/null +++ b/server/internal/dao/internal/pay_log.go @@ -0,0 +1,137 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// PayLogDao is the data access object for the table hg_pay_log. +type PayLogDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns PayLogColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// PayLogColumns defines and stores column names for the table hg_pay_log. +type PayLogColumns struct { + Id string // 主键 + MemberId string // 会员ID + AppId string // 应用ID + AddonsName string // 插件名称 + OrderSn string // 关联订单号 + OrderGroup string // 组别[默认统一支付类型] + Openid string // openid + MchId string // 商户支付账户 + Subject string // 订单标题 + Detail string // 支付商品详情 + AuthCode string // 刷卡码 + OutTradeNo string // 商户订单号 + TransactionId string // 交易号 + PayType string // 支付类型 + PayAmount string // 支付金额 + ActualAmount string // 实付金额 + PayStatus string // 支付状态 + PayAt string // 支付时间 + TradeType string // 交易类型 + RefundSn string // 退款单号 + IsRefund string // 是否退款 + Custom string // 自定义参数 + CreateIp string // 创建者IP + PayIp string // 支付者IP + NotifyUrl string // 支付通知回调地址 + ReturnUrl string // 买家付款成功跳转地址 + TraceIds string // 链路ID集合 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 修改时间 +} + +// payLogColumns holds the columns for the table hg_pay_log. +var payLogColumns = PayLogColumns{ + Id: "id", + MemberId: "member_id", + AppId: "app_id", + AddonsName: "addons_name", + OrderSn: "order_sn", + OrderGroup: "order_group", + Openid: "openid", + MchId: "mch_id", + Subject: "subject", + Detail: "detail", + AuthCode: "auth_code", + OutTradeNo: "out_trade_no", + TransactionId: "transaction_id", + PayType: "pay_type", + PayAmount: "pay_amount", + ActualAmount: "actual_amount", + PayStatus: "pay_status", + PayAt: "pay_at", + TradeType: "trade_type", + RefundSn: "refund_sn", + IsRefund: "is_refund", + Custom: "custom", + CreateIp: "create_ip", + PayIp: "pay_ip", + NotifyUrl: "notify_url", + ReturnUrl: "return_url", + TraceIds: "trace_ids", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewPayLogDao creates and returns a new DAO object for table data access. +func NewPayLogDao(handlers ...gdb.ModelHandler) *PayLogDao { + return &PayLogDao{ + group: "default", + table: "hg_pay_log", + columns: payLogColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *PayLogDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *PayLogDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *PayLogDao) Columns() PayLogColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *PayLogDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *PayLogDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *PayLogDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/pay_refund.go b/server/internal/dao/internal/pay_refund.go new file mode 100755 index 0000000..8b7684f --- /dev/null +++ b/server/internal/dao/internal/pay_refund.go @@ -0,0 +1,103 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// PayRefundDao is the data access object for the table hg_pay_refund. +type PayRefundDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns PayRefundColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// PayRefundColumns defines and stores column names for the table hg_pay_refund. +type PayRefundColumns struct { + Id string // 主键ID + MemberId string // 会员ID + AppId string // 应用ID + OrderSn string // 业务订单号 + RefundTradeNo string // 退款交易号 + RefundMoney string // 退款金额 + RefundWay string // 退款方式 + Ip string // 申请者IP + Reason string // 申请退款原因 + Remark string // 退款备注 + Status string // 退款状态 + CreatedAt string // 申请时间 + UpdatedAt string // 更新时间 +} + +// payRefundColumns holds the columns for the table hg_pay_refund. +var payRefundColumns = PayRefundColumns{ + Id: "id", + MemberId: "member_id", + AppId: "app_id", + OrderSn: "order_sn", + RefundTradeNo: "refund_trade_no", + RefundMoney: "refund_money", + RefundWay: "refund_way", + Ip: "ip", + Reason: "reason", + Remark: "remark", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewPayRefundDao creates and returns a new DAO object for table data access. +func NewPayRefundDao(handlers ...gdb.ModelHandler) *PayRefundDao { + return &PayRefundDao{ + group: "default", + table: "hg_pay_refund", + columns: payRefundColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *PayRefundDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *PayRefundDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *PayRefundDao) Columns() PayRefundColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *PayRefundDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *PayRefundDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *PayRefundDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_addons_config.go b/server/internal/dao/internal/sys_addons_config.go new file mode 100755 index 0000000..fa73736 --- /dev/null +++ b/server/internal/dao/internal/sys_addons_config.go @@ -0,0 +1,105 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysAddonsConfigDao is the data access object for the table hg_sys_addons_config. +type SysAddonsConfigDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysAddonsConfigColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysAddonsConfigColumns defines and stores column names for the table hg_sys_addons_config. +type SysAddonsConfigColumns struct { + Id string // 配置ID + AddonName string // 插件名称 + Group string // 分组 + Name string // 参数名称 + Type string // 键值类型:string,int,uint,bool,TIMESTAMP,date + Key string // 参数键名 + Value string // 参数键值 + DefaultValue string // 默认值 + Sort string // 排序 + Tip string // 变量描述 + IsDefault string // 是否为系统默认 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// sysAddonsConfigColumns holds the columns for the table hg_sys_addons_config. +var sysAddonsConfigColumns = SysAddonsConfigColumns{ + Id: "id", + AddonName: "addon_name", + Group: "group", + Name: "name", + Type: "type", + Key: "key", + Value: "value", + DefaultValue: "default_value", + Sort: "sort", + Tip: "tip", + IsDefault: "is_default", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysAddonsConfigDao creates and returns a new DAO object for table data access. +func NewSysAddonsConfigDao(handlers ...gdb.ModelHandler) *SysAddonsConfigDao { + return &SysAddonsConfigDao{ + group: "default", + table: "hg_sys_addons_config", + columns: sysAddonsConfigColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysAddonsConfigDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysAddonsConfigDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysAddonsConfigDao) Columns() SysAddonsConfigColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysAddonsConfigDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysAddonsConfigDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysAddonsConfigDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_addons_install.go b/server/internal/dao/internal/sys_addons_install.go new file mode 100644 index 0000000..9611545 --- /dev/null +++ b/server/internal/dao/internal/sys_addons_install.go @@ -0,0 +1,89 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysAddonsInstallDao is the data access object for the table hg_sys_addons_install. +type SysAddonsInstallDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysAddonsInstallColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysAddonsInstallColumns defines and stores column names for the table hg_sys_addons_install. +type SysAddonsInstallColumns struct { + Id string // 主键 + Name string // 插件名称 + Version string // 版本号 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// sysAddonsInstallColumns holds the columns for the table hg_sys_addons_install. +var sysAddonsInstallColumns = SysAddonsInstallColumns{ + Id: "id", + Name: "name", + Version: "version", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysAddonsInstallDao creates and returns a new DAO object for table data access. +func NewSysAddonsInstallDao(handlers ...gdb.ModelHandler) *SysAddonsInstallDao { + return &SysAddonsInstallDao{ + group: "default", + table: "hg_sys_addons_install", + columns: sysAddonsInstallColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysAddonsInstallDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysAddonsInstallDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysAddonsInstallDao) Columns() SysAddonsInstallColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysAddonsInstallDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysAddonsInstallDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysAddonsInstallDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_attachment.go b/server/internal/dao/internal/sys_attachment.go new file mode 100755 index 0000000..dcd6558 --- /dev/null +++ b/server/internal/dao/internal/sys_attachment.go @@ -0,0 +1,111 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysAttachmentDao is the data access object for the table hg_sys_attachment. +type SysAttachmentDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysAttachmentColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysAttachmentColumns defines and stores column names for the table hg_sys_attachment. +type SysAttachmentColumns struct { + Id string // 文件ID + AppId string // 应用ID + MemberId string // 管理员ID + CateId string // 上传分类 + Drive string // 上传驱动 + Name string // 文件原始名 + Kind string // 上传类型 + MimeType string // 扩展类型 + NaiveType string // NaiveUI类型 + Path string // 本地路径 + FileUrl string // url + Size string // 文件大小 + Ext string // 扩展名 + Md5 string // md5校验码 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 修改时间 +} + +// sysAttachmentColumns holds the columns for the table hg_sys_attachment. +var sysAttachmentColumns = SysAttachmentColumns{ + Id: "id", + AppId: "app_id", + MemberId: "member_id", + CateId: "cate_id", + Drive: "drive", + Name: "name", + Kind: "kind", + MimeType: "mime_type", + NaiveType: "naive_type", + Path: "path", + FileUrl: "file_url", + Size: "size", + Ext: "ext", + Md5: "md5", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysAttachmentDao creates and returns a new DAO object for table data access. +func NewSysAttachmentDao(handlers ...gdb.ModelHandler) *SysAttachmentDao { + return &SysAttachmentDao{ + group: "default", + table: "hg_sys_attachment", + columns: sysAttachmentColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysAttachmentDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysAttachmentDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysAttachmentDao) Columns() SysAttachmentColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysAttachmentDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysAttachmentDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysAttachmentDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_blacklist.go b/server/internal/dao/internal/sys_blacklist.go new file mode 100755 index 0000000..1838a14 --- /dev/null +++ b/server/internal/dao/internal/sys_blacklist.go @@ -0,0 +1,89 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysBlacklistDao is the data access object for the table hg_sys_blacklist. +type SysBlacklistDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysBlacklistColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysBlacklistColumns defines and stores column names for the table hg_sys_blacklist. +type SysBlacklistColumns struct { + Id string // 黑名单ID + Ip string // IP地址 + Remark string // 备注 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// sysBlacklistColumns holds the columns for the table hg_sys_blacklist. +var sysBlacklistColumns = SysBlacklistColumns{ + Id: "id", + Ip: "ip", + Remark: "remark", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysBlacklistDao creates and returns a new DAO object for table data access. +func NewSysBlacklistDao(handlers ...gdb.ModelHandler) *SysBlacklistDao { + return &SysBlacklistDao{ + group: "default", + table: "hg_sys_blacklist", + columns: sysBlacklistColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysBlacklistDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysBlacklistDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysBlacklistDao) Columns() SysBlacklistColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysBlacklistDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysBlacklistDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysBlacklistDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_config.go b/server/internal/dao/internal/sys_config.go new file mode 100755 index 0000000..5c46adb --- /dev/null +++ b/server/internal/dao/internal/sys_config.go @@ -0,0 +1,103 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysConfigDao is the data access object for the table hg_sys_config. +type SysConfigDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysConfigColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysConfigColumns defines and stores column names for the table hg_sys_config. +type SysConfigColumns struct { + Id string // 配置ID + Group string // 配置分组 + Name string // 参数名称 + Type string // 键值类型:string,int,uint,bool,TIMESTAMP,date + Key string // 参数键名 + Value string // 参数键值 + DefaultValue string // 默认值 + Sort string // 排序 + Tip string // 变量描述 + IsDefault string // 是否为系统默认 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// sysConfigColumns holds the columns for the table hg_sys_config. +var sysConfigColumns = SysConfigColumns{ + Id: "id", + Group: "group", + Name: "name", + Type: "type", + Key: "key", + Value: "value", + DefaultValue: "default_value", + Sort: "sort", + Tip: "tip", + IsDefault: "is_default", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysConfigDao creates and returns a new DAO object for table data access. +func NewSysConfigDao(handlers ...gdb.ModelHandler) *SysConfigDao { + return &SysConfigDao{ + group: "default", + table: "hg_sys_config", + columns: sysConfigColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysConfigDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysConfigDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysConfigDao) Columns() SysConfigColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysConfigDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysConfigDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysConfigDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_cron.go b/server/internal/dao/internal/sys_cron.go new file mode 100755 index 0000000..a8a8dac --- /dev/null +++ b/server/internal/dao/internal/sys_cron.go @@ -0,0 +1,103 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysCronDao is the data access object for the table hg_sys_cron. +type SysCronDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysCronColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysCronColumns defines and stores column names for the table hg_sys_cron. +type SysCronColumns struct { + Id string // 任务ID + GroupId string // 分组ID + Title string // 任务标题 + Name string // 任务方法 + Params string // 函数参数 + Pattern string // 表达式 + Policy string // 策略 + Count string // 执行次数 + Sort string // 排序 + Remark string // 备注 + Status string // 任务状态 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// sysCronColumns holds the columns for the table hg_sys_cron. +var sysCronColumns = SysCronColumns{ + Id: "id", + GroupId: "group_id", + Title: "title", + Name: "name", + Params: "params", + Pattern: "pattern", + Policy: "policy", + Count: "count", + Sort: "sort", + Remark: "remark", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysCronDao creates and returns a new DAO object for table data access. +func NewSysCronDao(handlers ...gdb.ModelHandler) *SysCronDao { + return &SysCronDao{ + group: "default", + table: "hg_sys_cron", + columns: sysCronColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysCronDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysCronDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysCronDao) Columns() SysCronColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysCronDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysCronDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysCronDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_cron_group.go b/server/internal/dao/internal/sys_cron_group.go new file mode 100755 index 0000000..983a238 --- /dev/null +++ b/server/internal/dao/internal/sys_cron_group.go @@ -0,0 +1,95 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysCronGroupDao is the data access object for the table hg_sys_cron_group. +type SysCronGroupDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysCronGroupColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysCronGroupColumns defines and stores column names for the table hg_sys_cron_group. +type SysCronGroupColumns struct { + Id string // 任务分组ID + Pid string // 父类任务分组ID + Name string // 分组名称 + IsDefault string // 是否默认 + Sort string // 排序 + Remark string // 备注 + Status string // 分组状态 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// sysCronGroupColumns holds the columns for the table hg_sys_cron_group. +var sysCronGroupColumns = SysCronGroupColumns{ + Id: "id", + Pid: "pid", + Name: "name", + IsDefault: "is_default", + Sort: "sort", + Remark: "remark", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysCronGroupDao creates and returns a new DAO object for table data access. +func NewSysCronGroupDao(handlers ...gdb.ModelHandler) *SysCronGroupDao { + return &SysCronGroupDao{ + group: "default", + table: "hg_sys_cron_group", + columns: sysCronGroupColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysCronGroupDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysCronGroupDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysCronGroupDao) Columns() SysCronGroupColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysCronGroupDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysCronGroupDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysCronGroupDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_dict_data.go b/server/internal/dao/internal/sys_dict_data.go new file mode 100755 index 0000000..67caa80 --- /dev/null +++ b/server/internal/dao/internal/sys_dict_data.go @@ -0,0 +1,101 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysDictDataDao is the data access object for the table hg_sys_dict_data. +type SysDictDataDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysDictDataColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysDictDataColumns defines and stores column names for the table hg_sys_dict_data. +type SysDictDataColumns struct { + Id string // 字典数据ID + Label string // 字典标签 + Value string // 字典键值 + ValueType string // 键值数据类型:string,int,uint,bool,TIMESTAMP,date + Type string // 字典类型 + ListClass string // 表格回显样式 + IsDefault string // 是否为系统默认 + Sort string // 字典排序 + Remark string // 备注 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// sysDictDataColumns holds the columns for the table hg_sys_dict_data. +var sysDictDataColumns = SysDictDataColumns{ + Id: "id", + Label: "label", + Value: "value", + ValueType: "value_type", + Type: "type", + ListClass: "list_class", + IsDefault: "is_default", + Sort: "sort", + Remark: "remark", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysDictDataDao creates and returns a new DAO object for table data access. +func NewSysDictDataDao(handlers ...gdb.ModelHandler) *SysDictDataDao { + return &SysDictDataDao{ + group: "default", + table: "hg_sys_dict_data", + columns: sysDictDataColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysDictDataDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysDictDataDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysDictDataDao) Columns() SysDictDataColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysDictDataDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysDictDataDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysDictDataDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_dict_type.go b/server/internal/dao/internal/sys_dict_type.go new file mode 100755 index 0000000..b0b05f7 --- /dev/null +++ b/server/internal/dao/internal/sys_dict_type.go @@ -0,0 +1,95 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysDictTypeDao is the data access object for the table hg_sys_dict_type. +type SysDictTypeDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysDictTypeColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysDictTypeColumns defines and stores column names for the table hg_sys_dict_type. +type SysDictTypeColumns struct { + Id string // 字典类型ID + Pid string // 父类字典类型ID + Name string // 字典类型名称 + Type string // 字典类型 + Sort string // 排序 + Remark string // 备注 + Status string // 字典类型状态 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// sysDictTypeColumns holds the columns for the table hg_sys_dict_type. +var sysDictTypeColumns = SysDictTypeColumns{ + Id: "id", + Pid: "pid", + Name: "name", + Type: "type", + Sort: "sort", + Remark: "remark", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysDictTypeDao creates and returns a new DAO object for table data access. +func NewSysDictTypeDao(handlers ...gdb.ModelHandler) *SysDictTypeDao { + return &SysDictTypeDao{ + group: "default", + table: "hg_sys_dict_type", + columns: sysDictTypeColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysDictTypeDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysDictTypeDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysDictTypeDao) Columns() SysDictTypeColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysDictTypeDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysDictTypeDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysDictTypeDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_ems_log.go b/server/internal/dao/internal/sys_ems_log.go new file mode 100755 index 0000000..3cac58d --- /dev/null +++ b/server/internal/dao/internal/sys_ems_log.go @@ -0,0 +1,97 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysEmsLogDao is the data access object for the table hg_sys_ems_log. +type SysEmsLogDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysEmsLogColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysEmsLogColumns defines and stores column names for the table hg_sys_ems_log. +type SysEmsLogColumns struct { + Id string // 主键 + Event string // 事件 + Email string // 邮箱地址,多个用;隔开 + Code string // 验证码 + Times string // 验证次数 + Content string // 邮件内容 + Ip string // ip地址 + Status string // 状态(1未验证,2已验证) + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// sysEmsLogColumns holds the columns for the table hg_sys_ems_log. +var sysEmsLogColumns = SysEmsLogColumns{ + Id: "id", + Event: "event", + Email: "email", + Code: "code", + Times: "times", + Content: "content", + Ip: "ip", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysEmsLogDao creates and returns a new DAO object for table data access. +func NewSysEmsLogDao(handlers ...gdb.ModelHandler) *SysEmsLogDao { + return &SysEmsLogDao{ + group: "default", + table: "hg_sys_ems_log", + columns: sysEmsLogColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysEmsLogDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysEmsLogDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysEmsLogDao) Columns() SysEmsLogColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysEmsLogDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysEmsLogDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysEmsLogDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_gen_codes.go b/server/internal/dao/internal/sys_gen_codes.go new file mode 100755 index 0000000..e909a3f --- /dev/null +++ b/server/internal/dao/internal/sys_gen_codes.go @@ -0,0 +1,105 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysGenCodesDao is the data access object for the table hg_sys_gen_codes. +type SysGenCodesDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysGenCodesColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysGenCodesColumns defines and stores column names for the table hg_sys_gen_codes. +type SysGenCodesColumns struct { + Id string // 生成ID + GenType string // 生成类型 + GenTemplate string // 生成模板 + VarName string // 实体命名 + Options string // 配置选项 + DbName string // 数据库名称 + TableName string // 主表名称 + TableComment string // 主表注释 + DaoName string // 主表dao模型 + MasterColumns string // 主表字段 + AddonName string // 插件名称 + Status string // 生成状态 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// sysGenCodesColumns holds the columns for the table hg_sys_gen_codes. +var sysGenCodesColumns = SysGenCodesColumns{ + Id: "id", + GenType: "gen_type", + GenTemplate: "gen_template", + VarName: "var_name", + Options: "options", + DbName: "db_name", + TableName: "table_name", + TableComment: "table_comment", + DaoName: "dao_name", + MasterColumns: "master_columns", + AddonName: "addon_name", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysGenCodesDao creates and returns a new DAO object for table data access. +func NewSysGenCodesDao(handlers ...gdb.ModelHandler) *SysGenCodesDao { + return &SysGenCodesDao{ + group: "default", + table: "hg_sys_gen_codes", + columns: sysGenCodesColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysGenCodesDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysGenCodesDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysGenCodesDao) Columns() SysGenCodesColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysGenCodesDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysGenCodesDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysGenCodesDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_gen_curd_demo.go b/server/internal/dao/internal/sys_gen_curd_demo.go new file mode 100755 index 0000000..25bd694 --- /dev/null +++ b/server/internal/dao/internal/sys_gen_curd_demo.go @@ -0,0 +1,111 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysGenCurdDemoDao is the data access object for the table hg_sys_gen_curd_demo. +type SysGenCurdDemoDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysGenCurdDemoColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysGenCurdDemoColumns defines and stores column names for the table hg_sys_gen_curd_demo. +type SysGenCurdDemoColumns struct { + Id string // ID + CategoryId string // 分类ID + Title string // 标题 + Description string // 描述 + Content string // 内容 + Image string // 单图 + Attachfile string // 附件 + CityId string // 所在城市 + Switch string // 显示开关 + Sort string // 排序 + Status string // 状态 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + DeletedBy string // 删除者 + CreatedAt string // 创建时间 + UpdatedAt string // 修改时间 + DeletedAt string // 删除时间 +} + +// sysGenCurdDemoColumns holds the columns for the table hg_sys_gen_curd_demo. +var sysGenCurdDemoColumns = SysGenCurdDemoColumns{ + Id: "id", + CategoryId: "category_id", + Title: "title", + Description: "description", + Content: "content", + Image: "image", + Attachfile: "attachfile", + CityId: "city_id", + Switch: "switch", + Sort: "sort", + Status: "status", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + DeletedBy: "deleted_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewSysGenCurdDemoDao creates and returns a new DAO object for table data access. +func NewSysGenCurdDemoDao(handlers ...gdb.ModelHandler) *SysGenCurdDemoDao { + return &SysGenCurdDemoDao{ + group: "default", + table: "hg_sys_gen_curd_demo", + columns: sysGenCurdDemoColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysGenCurdDemoDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysGenCurdDemoDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysGenCurdDemoDao) Columns() SysGenCurdDemoColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysGenCurdDemoDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysGenCurdDemoDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysGenCurdDemoDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_gen_tree_demo.go b/server/internal/dao/internal/sys_gen_tree_demo.go new file mode 100755 index 0000000..5e3cdc5 --- /dev/null +++ b/server/internal/dao/internal/sys_gen_tree_demo.go @@ -0,0 +1,105 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysGenTreeDemoDao is the data access object for the table hg_sys_gen_tree_demo. +type SysGenTreeDemoDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysGenTreeDemoColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysGenTreeDemoColumns defines and stores column names for the table hg_sys_gen_tree_demo. +type SysGenTreeDemoColumns struct { + Id string // ID + Pid string // 上级ID + Level string // 关系树级别 + Tree string // 关系树 + CategoryId string // 分类ID + Title string // 标题 + Description string // 描述 + Sort string // 排序 + Status string // 状态 + CreatedBy string // 创建者 + UpdatedBy string // 更新者 + CreatedAt string // 创建时间 + UpdatedAt string // 修改时间 + DeletedAt string // 删除时间 +} + +// sysGenTreeDemoColumns holds the columns for the table hg_sys_gen_tree_demo. +var sysGenTreeDemoColumns = SysGenTreeDemoColumns{ + Id: "id", + Pid: "pid", + Level: "level", + Tree: "tree", + CategoryId: "category_id", + Title: "title", + Description: "description", + Sort: "sort", + Status: "status", + CreatedBy: "created_by", + UpdatedBy: "updated_by", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewSysGenTreeDemoDao creates and returns a new DAO object for table data access. +func NewSysGenTreeDemoDao(handlers ...gdb.ModelHandler) *SysGenTreeDemoDao { + return &SysGenTreeDemoDao{ + group: "default", + table: "hg_sys_gen_tree_demo", + columns: sysGenTreeDemoColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysGenTreeDemoDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysGenTreeDemoDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysGenTreeDemoDao) Columns() SysGenTreeDemoColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysGenTreeDemoDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysGenTreeDemoDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysGenTreeDemoDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_log.go b/server/internal/dao/internal/sys_log.go new file mode 100755 index 0000000..79813b3 --- /dev/null +++ b/server/internal/dao/internal/sys_log.go @@ -0,0 +1,123 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysLogDao is the data access object for the table hg_sys_log. +type SysLogDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysLogColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysLogColumns defines and stores column names for the table hg_sys_log. +type SysLogColumns struct { + Id string // 日志ID + ReqId string // 对外ID + AppId string // 应用ID + MerchantId string // 商户ID + MemberId string // 用户ID + Method string // 提交类型 + Module string // 访问模块 + Url string // 提交url + GetData string // get数据 + PostData string // post数据 + HeaderData string // header数据 + Ip string // IP地址 + ProvinceId string // 省编码 + CityId string // 市编码 + ErrorCode string // 报错code + ErrorMsg string // 对外错误提示 + ErrorData string // 报错日志 + UserAgent string // UA信息 + TakeUpTime string // 请求耗时 + Timestamp string // 响应时间 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 修改时间 +} + +// sysLogColumns holds the columns for the table hg_sys_log. +var sysLogColumns = SysLogColumns{ + Id: "id", + ReqId: "req_id", + AppId: "app_id", + MerchantId: "merchant_id", + MemberId: "member_id", + Method: "method", + Module: "module", + Url: "url", + GetData: "get_data", + PostData: "post_data", + HeaderData: "header_data", + Ip: "ip", + ProvinceId: "province_id", + CityId: "city_id", + ErrorCode: "error_code", + ErrorMsg: "error_msg", + ErrorData: "error_data", + UserAgent: "user_agent", + TakeUpTime: "take_up_time", + Timestamp: "timestamp", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysLogDao creates and returns a new DAO object for table data access. +func NewSysLogDao(handlers ...gdb.ModelHandler) *SysLogDao { + return &SysLogDao{ + group: "default", + table: "hg_sys_log", + columns: sysLogColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysLogDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysLogDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysLogDao) Columns() SysLogColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysLogDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysLogDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysLogDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_login_log.go b/server/internal/dao/internal/sys_login_log.go new file mode 100755 index 0000000..0637049 --- /dev/null +++ b/server/internal/dao/internal/sys_login_log.go @@ -0,0 +1,105 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysLoginLogDao is the data access object for the table hg_sys_login_log. +type SysLoginLogDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysLoginLogColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysLoginLogColumns defines and stores column names for the table hg_sys_login_log. +type SysLoginLogColumns struct { + Id string // 日志ID + ReqId string // 请求ID + MemberId string // 用户ID + Username string // 用户名 + Response string // 响应数据 + LoginAt string // 登录时间 + LoginIp string // 登录IP + ProvinceId string // 省编码 + CityId string // 市编码 + UserAgent string // UA信息 + ErrMsg string // 错误提示 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 修改时间 +} + +// sysLoginLogColumns holds the columns for the table hg_sys_login_log. +var sysLoginLogColumns = SysLoginLogColumns{ + Id: "id", + ReqId: "req_id", + MemberId: "member_id", + Username: "username", + Response: "response", + LoginAt: "login_at", + LoginIp: "login_ip", + ProvinceId: "province_id", + CityId: "city_id", + UserAgent: "user_agent", + ErrMsg: "err_msg", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysLoginLogDao creates and returns a new DAO object for table data access. +func NewSysLoginLogDao(handlers ...gdb.ModelHandler) *SysLoginLogDao { + return &SysLoginLogDao{ + group: "default", + table: "hg_sys_login_log", + columns: sysLoginLogColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysLoginLogDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysLoginLogDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysLoginLogDao) Columns() SysLoginLogColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysLoginLogDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysLoginLogDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysLoginLogDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_provinces.go b/server/internal/dao/internal/sys_provinces.go new file mode 100755 index 0000000..377de59 --- /dev/null +++ b/server/internal/dao/internal/sys_provinces.go @@ -0,0 +1,101 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysProvincesDao is the data access object for the table hg_sys_provinces. +type SysProvincesDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysProvincesColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysProvincesColumns defines and stores column names for the table hg_sys_provinces. +type SysProvincesColumns struct { + Id string // 省市区ID + Title string // 栏目名称 + Pinyin string // 拼音 + Lng string // 经度 + Lat string // 纬度 + Pid string // 父栏目 + Level string // 关系树等级 + Tree string // 关系 + Sort string // 排序 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// sysProvincesColumns holds the columns for the table hg_sys_provinces. +var sysProvincesColumns = SysProvincesColumns{ + Id: "id", + Title: "title", + Pinyin: "pinyin", + Lng: "lng", + Lat: "lat", + Pid: "pid", + Level: "level", + Tree: "tree", + Sort: "sort", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysProvincesDao creates and returns a new DAO object for table data access. +func NewSysProvincesDao(handlers ...gdb.ModelHandler) *SysProvincesDao { + return &SysProvincesDao{ + group: "default", + table: "hg_sys_provinces", + columns: sysProvincesColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysProvincesDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysProvincesDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysProvincesDao) Columns() SysProvincesColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysProvincesDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysProvincesDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysProvincesDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_serve_license.go b/server/internal/dao/internal/sys_serve_license.go new file mode 100755 index 0000000..46ef2f5 --- /dev/null +++ b/server/internal/dao/internal/sys_serve_license.go @@ -0,0 +1,111 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysServeLicenseDao is the data access object for the table hg_sys_serve_license. +type SysServeLicenseDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysServeLicenseColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysServeLicenseColumns defines and stores column names for the table hg_sys_serve_license. +type SysServeLicenseColumns struct { + Id string // 许可ID + Group string // 分组 + Name string // 许可名称 + Appid string // 应用ID + SecretKey string // 应用秘钥 + RemoteAddr string // 最后连接地址 + OnlineLimit string // 在线限制 + LoginTimes string // 登录次数 + LastLoginAt string // 最后登录时间 + LastActiveAt string // 最后心跳 + Routes string // 路由表,空使用默认分组路由 + AllowedIps string // IP白名单 + EndAt string // 授权有效期 + Remark string // 备注 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 修改时间 +} + +// sysServeLicenseColumns holds the columns for the table hg_sys_serve_license. +var sysServeLicenseColumns = SysServeLicenseColumns{ + Id: "id", + Group: "group", + Name: "name", + Appid: "appid", + SecretKey: "secret_key", + RemoteAddr: "remote_addr", + OnlineLimit: "online_limit", + LoginTimes: "login_times", + LastLoginAt: "last_login_at", + LastActiveAt: "last_active_at", + Routes: "routes", + AllowedIps: "allowed_ips", + EndAt: "end_at", + Remark: "remark", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysServeLicenseDao creates and returns a new DAO object for table data access. +func NewSysServeLicenseDao(handlers ...gdb.ModelHandler) *SysServeLicenseDao { + return &SysServeLicenseDao{ + group: "default", + table: "hg_sys_serve_license", + columns: sysServeLicenseColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysServeLicenseDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysServeLicenseDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysServeLicenseDao) Columns() SysServeLicenseColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysServeLicenseDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysServeLicenseDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysServeLicenseDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_serve_log.go b/server/internal/dao/internal/sys_serve_log.go new file mode 100755 index 0000000..abf52f9 --- /dev/null +++ b/server/internal/dao/internal/sys_serve_log.go @@ -0,0 +1,97 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysServeLogDao is the data access object for the table hg_sys_serve_log. +type SysServeLogDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysServeLogColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysServeLogColumns defines and stores column names for the table hg_sys_serve_log. +type SysServeLogColumns struct { + Id string // 日志ID + TraceId string // 链路ID + LevelFormat string // 日志级别 + Content string // 日志内容 + Stack string // 打印堆栈 + Line string // 调用行 + TriggerNs string // 触发时间(ns) + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 修改时间 +} + +// sysServeLogColumns holds the columns for the table hg_sys_serve_log. +var sysServeLogColumns = SysServeLogColumns{ + Id: "id", + TraceId: "trace_id", + LevelFormat: "level_format", + Content: "content", + Stack: "stack", + Line: "line", + TriggerNs: "trigger_ns", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysServeLogDao creates and returns a new DAO object for table data access. +func NewSysServeLogDao(handlers ...gdb.ModelHandler) *SysServeLogDao { + return &SysServeLogDao{ + group: "default", + table: "hg_sys_serve_log", + columns: sysServeLogColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysServeLogDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysServeLogDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysServeLogDao) Columns() SysServeLogColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysServeLogDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysServeLogDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysServeLogDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/sys_sms_log.go b/server/internal/dao/internal/sys_sms_log.go new file mode 100755 index 0000000..da73d87 --- /dev/null +++ b/server/internal/dao/internal/sys_sms_log.go @@ -0,0 +1,95 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// SysSmsLogDao is the data access object for the table hg_sys_sms_log. +type SysSmsLogDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns SysSmsLogColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// SysSmsLogColumns defines and stores column names for the table hg_sys_sms_log. +type SysSmsLogColumns struct { + Id string // 主键 + Event string // 事件 + Mobile string // 手机号 + Code string // 验证码或短信内容 + Times string // 验证次数 + Ip string // ip地址 + Status string // 状态(1未验证,2已验证) + CreatedAt string // 创建时间 + UpdatedAt string // 更新时间 +} + +// sysSmsLogColumns holds the columns for the table hg_sys_sms_log. +var sysSmsLogColumns = SysSmsLogColumns{ + Id: "id", + Event: "event", + Mobile: "mobile", + Code: "code", + Times: "times", + Ip: "ip", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", +} + +// NewSysSmsLogDao creates and returns a new DAO object for table data access. +func NewSysSmsLogDao(handlers ...gdb.ModelHandler) *SysSmsLogDao { + return &SysSmsLogDao{ + group: "default", + table: "hg_sys_sms_log", + columns: sysSmsLogColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *SysSmsLogDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *SysSmsLogDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *SysSmsLogDao) Columns() SysSmsLogColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *SysSmsLogDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *SysSmsLogDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *SysSmsLogDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/internal/test_category.go b/server/internal/dao/internal/test_category.go new file mode 100755 index 0000000..1ebbc81 --- /dev/null +++ b/server/internal/dao/internal/test_category.go @@ -0,0 +1,97 @@ +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// TestCategoryDao is the data access object for the table hg_test_category. +type TestCategoryDao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns TestCategoryColumns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// TestCategoryColumns defines and stores column names for the table hg_test_category. +type TestCategoryColumns struct { + Id string // 分类ID + Name string // 分类名称 + ShortName string // 简称 + Description string // 描述 + Sort string // 排序 + Remark string // 备注 + Status string // 状态 + CreatedAt string // 创建时间 + UpdatedAt string // 修改时间 + DeletedAt string // 删除时间 +} + +// testCategoryColumns holds the columns for the table hg_test_category. +var testCategoryColumns = TestCategoryColumns{ + Id: "id", + Name: "name", + ShortName: "short_name", + Description: "description", + Sort: "sort", + Remark: "remark", + Status: "status", + CreatedAt: "created_at", + UpdatedAt: "updated_at", + DeletedAt: "deleted_at", +} + +// NewTestCategoryDao creates and returns a new DAO object for table data access. +func NewTestCategoryDao(handlers ...gdb.ModelHandler) *TestCategoryDao { + return &TestCategoryDao{ + group: "default", + table: "hg_test_category", + columns: testCategoryColumns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *TestCategoryDao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *TestCategoryDao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *TestCategoryDao) Columns() TestCategoryColumns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *TestCategoryDao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *TestCategoryDao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *TestCategoryDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} diff --git a/server/internal/dao/pay_log.go b/server/internal/dao/pay_log.go new file mode 100755 index 0000000..eef43f9 --- /dev/null +++ b/server/internal/dao/pay_log.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// payLogDao is the data access object for the table hg_pay_log. +// You can define custom methods on it to extend its functionality as needed. +type payLogDao struct { + *internal.PayLogDao +} + +var ( + // PayLog is a globally accessible object for table hg_pay_log operations. + PayLog = payLogDao{internal.NewPayLogDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/pay_refund.go b/server/internal/dao/pay_refund.go new file mode 100755 index 0000000..bc52795 --- /dev/null +++ b/server/internal/dao/pay_refund.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// payRefundDao is the data access object for the table hg_pay_refund. +// You can define custom methods on it to extend its functionality as needed. +type payRefundDao struct { + *internal.PayRefundDao +} + +var ( + // PayRefund is a globally accessible object for table hg_pay_refund operations. + PayRefund = payRefundDao{internal.NewPayRefundDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_addons_config.go b/server/internal/dao/sys_addons_config.go new file mode 100755 index 0000000..47c7893 --- /dev/null +++ b/server/internal/dao/sys_addons_config.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysAddonsConfigDao is the data access object for the table hg_sys_addons_config. +// You can define custom methods on it to extend its functionality as needed. +type sysAddonsConfigDao struct { + *internal.SysAddonsConfigDao +} + +var ( + // SysAddonsConfig is a globally accessible object for table hg_sys_addons_config operations. + SysAddonsConfig = sysAddonsConfigDao{internal.NewSysAddonsConfigDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_addons_install.go b/server/internal/dao/sys_addons_install.go new file mode 100644 index 0000000..3eb6bac --- /dev/null +++ b/server/internal/dao/sys_addons_install.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysAddonsInstallDao is the data access object for the table hg_sys_addons_install. +// You can define custom methods on it to extend its functionality as needed. +type sysAddonsInstallDao struct { + *internal.SysAddonsInstallDao +} + +var ( + // SysAddonsInstall is a globally accessible object for table hg_sys_addons_install operations. + SysAddonsInstall = sysAddonsInstallDao{internal.NewSysAddonsInstallDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_attachment.go b/server/internal/dao/sys_attachment.go new file mode 100755 index 0000000..2e40b56 --- /dev/null +++ b/server/internal/dao/sys_attachment.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysAttachmentDao is the data access object for the table hg_sys_attachment. +// You can define custom methods on it to extend its functionality as needed. +type sysAttachmentDao struct { + *internal.SysAttachmentDao +} + +var ( + // SysAttachment is a globally accessible object for table hg_sys_attachment operations. + SysAttachment = sysAttachmentDao{internal.NewSysAttachmentDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_blacklist.go b/server/internal/dao/sys_blacklist.go new file mode 100755 index 0000000..84bdec1 --- /dev/null +++ b/server/internal/dao/sys_blacklist.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysBlacklistDao is the data access object for the table hg_sys_blacklist. +// You can define custom methods on it to extend its functionality as needed. +type sysBlacklistDao struct { + *internal.SysBlacklistDao +} + +var ( + // SysBlacklist is a globally accessible object for table hg_sys_blacklist operations. + SysBlacklist = sysBlacklistDao{internal.NewSysBlacklistDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_config.go b/server/internal/dao/sys_config.go new file mode 100755 index 0000000..a868a27 --- /dev/null +++ b/server/internal/dao/sys_config.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysConfigDao is the data access object for the table hg_sys_config. +// You can define custom methods on it to extend its functionality as needed. +type sysConfigDao struct { + *internal.SysConfigDao +} + +var ( + // SysConfig is a globally accessible object for table hg_sys_config operations. + SysConfig = sysConfigDao{internal.NewSysConfigDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_cron.go b/server/internal/dao/sys_cron.go new file mode 100755 index 0000000..1e0f647 --- /dev/null +++ b/server/internal/dao/sys_cron.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysCronDao is the data access object for the table hg_sys_cron. +// You can define custom methods on it to extend its functionality as needed. +type sysCronDao struct { + *internal.SysCronDao +} + +var ( + // SysCron is a globally accessible object for table hg_sys_cron operations. + SysCron = sysCronDao{internal.NewSysCronDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_cron_group.go b/server/internal/dao/sys_cron_group.go new file mode 100755 index 0000000..25e1578 --- /dev/null +++ b/server/internal/dao/sys_cron_group.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysCronGroupDao is the data access object for the table hg_sys_cron_group. +// You can define custom methods on it to extend its functionality as needed. +type sysCronGroupDao struct { + *internal.SysCronGroupDao +} + +var ( + // SysCronGroup is a globally accessible object for table hg_sys_cron_group operations. + SysCronGroup = sysCronGroupDao{internal.NewSysCronGroupDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_dict_data.go b/server/internal/dao/sys_dict_data.go new file mode 100755 index 0000000..05e78a3 --- /dev/null +++ b/server/internal/dao/sys_dict_data.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysDictDataDao is the data access object for the table hg_sys_dict_data. +// You can define custom methods on it to extend its functionality as needed. +type sysDictDataDao struct { + *internal.SysDictDataDao +} + +var ( + // SysDictData is a globally accessible object for table hg_sys_dict_data operations. + SysDictData = sysDictDataDao{internal.NewSysDictDataDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_dict_type.go b/server/internal/dao/sys_dict_type.go new file mode 100755 index 0000000..102c167 --- /dev/null +++ b/server/internal/dao/sys_dict_type.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysDictTypeDao is the data access object for the table hg_sys_dict_type. +// You can define custom methods on it to extend its functionality as needed. +type sysDictTypeDao struct { + *internal.SysDictTypeDao +} + +var ( + // SysDictType is a globally accessible object for table hg_sys_dict_type operations. + SysDictType = sysDictTypeDao{internal.NewSysDictTypeDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_ems_log.go b/server/internal/dao/sys_ems_log.go new file mode 100755 index 0000000..cad6a7b --- /dev/null +++ b/server/internal/dao/sys_ems_log.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysEmsLogDao is the data access object for the table hg_sys_ems_log. +// You can define custom methods on it to extend its functionality as needed. +type sysEmsLogDao struct { + *internal.SysEmsLogDao +} + +var ( + // SysEmsLog is a globally accessible object for table hg_sys_ems_log operations. + SysEmsLog = sysEmsLogDao{internal.NewSysEmsLogDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_gen_codes.go b/server/internal/dao/sys_gen_codes.go new file mode 100755 index 0000000..4e82527 --- /dev/null +++ b/server/internal/dao/sys_gen_codes.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysGenCodesDao is the data access object for the table hg_sys_gen_codes. +// You can define custom methods on it to extend its functionality as needed. +type sysGenCodesDao struct { + *internal.SysGenCodesDao +} + +var ( + // SysGenCodes is a globally accessible object for table hg_sys_gen_codes operations. + SysGenCodes = sysGenCodesDao{internal.NewSysGenCodesDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_gen_curd_demo.go b/server/internal/dao/sys_gen_curd_demo.go new file mode 100755 index 0000000..e67ce1e --- /dev/null +++ b/server/internal/dao/sys_gen_curd_demo.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysGenCurdDemoDao is the data access object for the table hg_sys_gen_curd_demo. +// You can define custom methods on it to extend its functionality as needed. +type sysGenCurdDemoDao struct { + *internal.SysGenCurdDemoDao +} + +var ( + // SysGenCurdDemo is a globally accessible object for table hg_sys_gen_curd_demo operations. + SysGenCurdDemo = sysGenCurdDemoDao{internal.NewSysGenCurdDemoDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_gen_tree_demo.go b/server/internal/dao/sys_gen_tree_demo.go new file mode 100755 index 0000000..8cc7d86 --- /dev/null +++ b/server/internal/dao/sys_gen_tree_demo.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysGenTreeDemoDao is the data access object for the table hg_sys_gen_tree_demo. +// You can define custom methods on it to extend its functionality as needed. +type sysGenTreeDemoDao struct { + *internal.SysGenTreeDemoDao +} + +var ( + // SysGenTreeDemo is a globally accessible object for table hg_sys_gen_tree_demo operations. + SysGenTreeDemo = sysGenTreeDemoDao{internal.NewSysGenTreeDemoDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_log.go b/server/internal/dao/sys_log.go new file mode 100755 index 0000000..fd4f72a --- /dev/null +++ b/server/internal/dao/sys_log.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysLogDao is the data access object for the table hg_sys_log. +// You can define custom methods on it to extend its functionality as needed. +type sysLogDao struct { + *internal.SysLogDao +} + +var ( + // SysLog is a globally accessible object for table hg_sys_log operations. + SysLog = sysLogDao{internal.NewSysLogDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_login_log.go b/server/internal/dao/sys_login_log.go new file mode 100755 index 0000000..f158383 --- /dev/null +++ b/server/internal/dao/sys_login_log.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysLoginLogDao is the data access object for the table hg_sys_login_log. +// You can define custom methods on it to extend its functionality as needed. +type sysLoginLogDao struct { + *internal.SysLoginLogDao +} + +var ( + // SysLoginLog is a globally accessible object for table hg_sys_login_log operations. + SysLoginLog = sysLoginLogDao{internal.NewSysLoginLogDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_provinces.go b/server/internal/dao/sys_provinces.go new file mode 100755 index 0000000..7e35c53 --- /dev/null +++ b/server/internal/dao/sys_provinces.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysProvincesDao is the data access object for the table hg_sys_provinces. +// You can define custom methods on it to extend its functionality as needed. +type sysProvincesDao struct { + *internal.SysProvincesDao +} + +var ( + // SysProvinces is a globally accessible object for table hg_sys_provinces operations. + SysProvinces = sysProvincesDao{internal.NewSysProvincesDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_serve_license.go b/server/internal/dao/sys_serve_license.go new file mode 100755 index 0000000..6397152 --- /dev/null +++ b/server/internal/dao/sys_serve_license.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysServeLicenseDao is the data access object for the table hg_sys_serve_license. +// You can define custom methods on it to extend its functionality as needed. +type sysServeLicenseDao struct { + *internal.SysServeLicenseDao +} + +var ( + // SysServeLicense is a globally accessible object for table hg_sys_serve_license operations. + SysServeLicense = sysServeLicenseDao{internal.NewSysServeLicenseDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_serve_log.go b/server/internal/dao/sys_serve_log.go new file mode 100755 index 0000000..1fb569d --- /dev/null +++ b/server/internal/dao/sys_serve_log.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysServeLogDao is the data access object for the table hg_sys_serve_log. +// You can define custom methods on it to extend its functionality as needed. +type sysServeLogDao struct { + *internal.SysServeLogDao +} + +var ( + // SysServeLog is a globally accessible object for table hg_sys_serve_log operations. + SysServeLog = sysServeLogDao{internal.NewSysServeLogDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/sys_sms_log.go b/server/internal/dao/sys_sms_log.go new file mode 100755 index 0000000..aa2c686 --- /dev/null +++ b/server/internal/dao/sys_sms_log.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// sysSmsLogDao is the data access object for the table hg_sys_sms_log. +// You can define custom methods on it to extend its functionality as needed. +type sysSmsLogDao struct { + *internal.SysSmsLogDao +} + +var ( + // SysSmsLog is a globally accessible object for table hg_sys_sms_log operations. + SysSmsLog = sysSmsLogDao{internal.NewSysSmsLogDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/dao/test_category.go b/server/internal/dao/test_category.go new file mode 100755 index 0000000..d9e5ab7 --- /dev/null +++ b/server/internal/dao/test_category.go @@ -0,0 +1,22 @@ +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package dao + +import ( + "hotgo/internal/dao/internal" +) + +// testCategoryDao is the data access object for the table hg_test_category. +// You can define custom methods on it to extend its functionality as needed. +type testCategoryDao struct { + *internal.TestCategoryDao +} + +var ( + // TestCategory is a globally accessible object for table hg_test_category operations. + TestCategory = testCategoryDao{internal.NewTestCategoryDao()} +) + +// Add your custom methods and functionality below. diff --git a/server/internal/global/cluster.go b/server/internal/global/cluster.go new file mode 100644 index 0000000..6a12ca1 --- /dev/null +++ b/server/internal/global/cluster.go @@ -0,0 +1,51 @@ +// Package global +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package global + +import ( + "context" + "fmt" + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/consts" + "hotgo/internal/library/hgrds/lock" + "hotgo/internal/library/hgrds/pubsub" + "hotgo/internal/service" + "hotgo/utility/simple" +) + +// SubscribeClusterSync 订阅集群同步,可以用来集中同步数据、状态等 +func SubscribeClusterSync(ctx context.Context) { + if !simple.IsCluster(ctx) { + return + } + + err := pubsub.SubscribeMap(map[string]pubsub.SubHandler{ + consts.ClusterSyncSysconfig: service.SysConfig().ClusterSync, // 系统配置 + consts.ClusterSyncSysBlacklist: service.SysBlacklist().ClusterSync, // 系统黑名单 + consts.ClusterSyncSysSuperAdmin: service.AdminMember().ClusterSyncSuperAdmin, // 超管 + }) + + if err != nil { + g.Log().Fatal(ctx, err) + } +} + +// PublishClusterSync 推送集群同步消息,如果没有开启集群部署,则不进行推送 +func PublishClusterSync(ctx context.Context, channel string, message interface{}) { + if !simple.IsCluster(ctx) { + return + } + + mutex := lock.Mutex(fmt.Sprintf("%s:%s", "lock", channel)) + err := mutex.LockFunc(ctx, func() { + if _, err := pubsub.Publish(ctx, channel, message); err != nil { + g.Log().Warningf(ctx, "PublishClusterSync %v err:%v", channel, err) + } + }) + if err != nil { + g.Log().Warningf(ctx, "PublishClusterSync %v LockFunc err:%v", channel, err) + } +} diff --git a/server/internal/global/global.go b/server/internal/global/global.go new file mode 100644 index 0000000..bc2b3e1 --- /dev/null +++ b/server/internal/global/global.go @@ -0,0 +1,8 @@ +// Package global +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package global + +// 在这里可以配置一些全局公用的变量 diff --git a/server/internal/global/httproutes.go b/server/internal/global/httproutes.go new file mode 100644 index 0000000..8a4e535 --- /dev/null +++ b/server/internal/global/httproutes.go @@ -0,0 +1,125 @@ +// Package global +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2024 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package global + +import ( + "reflect" + "strings" + "sync" + + "github.com/gogf/gf/v2/net/ghttp" + "github.com/gogf/gf/v2/util/gmeta" + "github.com/gogf/gf/v2/util/gtag" +) + +// HTTPRouter http路由 +type HTTPRouter struct { + ghttp.RouterItem + Tags string `json:"tags" dc:"接口所属的标签,用于接口分类"` + Summary string `json:"summary" dc:"接口/参数概要描述"` + Description string `json:"description" dc:"接口/参数详细描述"` +} + +var ( + httpRoutes map[string]*HTTPRouter + routeMutex sync.Mutex + shortTypeMapForTag = map[string]string{ + gtag.SummaryShort: gtag.Summary, + gtag.SummaryShort2: gtag.Summary, + gtag.DescriptionShort: gtag.Description, + gtag.DescriptionShort2: gtag.Description, + } +) + +// GetRequestRoute 获取当前请求路由属性 +func GetRequestRoute(r *ghttp.Request) *HTTPRouter { + key := GenFilterRequestKey(r) + routes := LoadHTTPRoutes(r) + router, ok := routes[key] + if !ok { + return nil + } + return router +} + +// GenFilterRequestKey 根据请求生成唯一key +func GenFilterRequestKey(r *ghttp.Request) string { + return GenRouteKey(r.Method, r.Request.URL.Path) +} + +// GenFilterRouteKey 根据路由生成唯一key +func GenFilterRouteKey(r *ghttp.Router) string { + return GenRouteKey(r.Method, r.Uri) +} + +// GenRouteKey 生成唯一key +func GenRouteKey(method, path string) string { + return strings.ToUpper(method) + " " + path +} + +func LoadHTTPRoutes(r *ghttp.Request) map[string]*HTTPRouter { + if httpRoutes == nil { + routeMutex.Lock() + defer routeMutex.Unlock() + + if httpRoutes != nil { + return httpRoutes + } + + httpRoutes = make(map[string]*HTTPRouter, len(r.Server.GetRoutes())) + for _, v := range r.Server.GetRoutes() { + key := GenFilterRouteKey(v.Handler.Router) + if _, ok := httpRoutes[key]; !ok { + router := new(HTTPRouter) + router.RouterItem = v + httpRoutes[key] = setRouterMeta(router) + } + } + } + return httpRoutes +} + +func setRouterMeta(router *HTTPRouter) *HTTPRouter { + if !router.RouterItem.Handler.Info.IsStrictRoute { + return router + } + + var reflectValue = reflect.ValueOf(router.Handler.Info.Value.Interface()) + for reflectValue.Kind() == reflect.Ptr { + reflectValue = reflectValue.Elem() + } + + if reflectValue.Kind() != reflect.Func { + return router + } + + var reflectType = reflect.TypeOf(router.Handler.Info.Value.Interface()) + if reflectType.NumIn() != 2 || reflectType.NumOut() != 2 { + return router + } + + var inputObject reflect.Value + if reflectType.In(1).Kind() == reflect.Ptr { + inputObject = reflect.New(reflectType.In(1).Elem()).Elem() + } else { + inputObject = reflect.New(reflectType.In(1)).Elem() + } + + inputMetaMap := fillMapWithShortTags(gmeta.Data(inputObject.Interface())) + router.Tags = inputMetaMap["tags"] + router.Summary = inputMetaMap[gtag.Summary] + router.Description = inputMetaMap[gtag.Description] + return router +} + +func fillMapWithShortTags(m map[string]string) map[string]string { + for k, v := range shortTypeMapForTag { + if m[v] == "" && m[k] != "" { + m[v] = m[k] + } + } + return m +} diff --git a/server/internal/global/init.go b/server/internal/global/init.go new file mode 100644 index 0000000..3666117 --- /dev/null +++ b/server/internal/global/init.go @@ -0,0 +1,168 @@ +// Package global +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package global + +import ( + "context" + "fmt" + "github.com/gogf/gf/contrib/trace/jaeger/v2" + "github.com/gogf/gf/v2" + "github.com/gogf/gf/v2/container/gvar" + "github.com/gogf/gf/v2/encoding/gjson" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gctx" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/glog" + "github.com/gogf/gf/v2/os/gtime" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gmode" + "hotgo/internal/consts" + "hotgo/internal/library/cache" + "hotgo/internal/library/queue" + "hotgo/internal/model/entity" + "hotgo/internal/service" + "hotgo/utility/charset" + "hotgo/utility/simple" + "hotgo/utility/validate" + "runtime" + "strings" +) + +func Init(ctx context.Context) { + // 设置gf运行模式 + SetGFMode(ctx) + + // 设置服务日志处理 + glog.SetDefaultHandler(LoggingServeLogHandler) + + // 默认上海时区 + if err := gtime.SetTimeZone("Asia/Shanghai"); err != nil { + g.Log().Fatalf(ctx, "时区设置异常 err:%+v", err) + return + } + + fmt.Printf("欢迎使用HotGo!\r\n当前运行环境:%v, 运行根路径为:%v \r\nHotGo版本:v%v, gf版本:%v \n", runtime.GOOS, gfile.Pwd(), consts.VersionApp, gf.VERSION) + + // 初始化链路追踪 + InitTrace(ctx) + + // 设置缓存适配器 + cache.SetAdapter(ctx) + + // 初始化功能库配置 + service.SysConfig().InitConfig(ctx) + + // 加载超管数据 + service.AdminMember().LoadSuperAdmin(ctx) + + // 订阅集群同步 + SubscribeClusterSync(ctx) +} + +// LoggingServeLogHandler 服务日志处理 +// 需要将异常日志保存到服务日志时可以通过SetHandlers设置此方法 +func LoggingServeLogHandler(ctx context.Context, in *glog.HandlerInput) { + in.Next(ctx) + + err := g.Try(ctx, func(ctx context.Context) { + var err error + defer func() { + if err != nil { + panic(err) + } + }() + + // web服务日志不做记录,因为会导致重复记录 + r := g.RequestFromCtx(ctx) + if r != nil && r.Server != nil && in.Logger.GetConfig().Path == r.Server.Logger().GetConfig().Path { + return + } + + conf, err := service.SysConfig().GetLoadServeLog(ctx) + if err != nil { + return + } + + if conf == nil { + return + } + + if !conf.Switch { + return + } + + if in.LevelFormat == "" || !gstr.InArray(conf.LevelFormat, in.LevelFormat) { + return + } + + if in.Stack == "" { + in.Stack = in.Logger.GetStack() + } + + if len(in.Content) == 0 { + in.Content = gstr.StrLimit(gvar.New(in.Values).String(), consts.MaxServeLogContentLen) + } + + var data entity.SysServeLog + data.TraceId = gctx.CtxId(ctx) + data.LevelFormat = in.LevelFormat + data.Content = in.Content + data.Stack = gjson.New(charset.ParseStack(in.Stack)) + data.Line = strings.TrimRight(in.CallerPath, ":") + data.TriggerNs = in.Time.UnixNano() + data.Status = consts.StatusEnabled + + if gstr.Contains(in.Content, `exception recovered`) { + data.LevelFormat = "PANI" + } + + if data.Stack.IsNil() { + data.Stack = gjson.New(consts.NilJsonToString) + } + + if conf.Queue { + err = queue.Push(consts.QueueServeLogTopic, data) + } else { + err = service.SysServeLog().RealWrite(ctx, data) + } + }) + + if err != nil { + g.Dump("LoggingServeLogHandler err:", err) + } +} + +// InitTrace 初始化链路追踪 +func InitTrace(ctx context.Context) { + if !g.Cfg().MustGet(ctx, "jaeger.switch").Bool() { + return + } + + tp, err := jaeger.Init(simple.AppName(ctx), g.Cfg().MustGet(ctx, "jaeger.endpoint").String()) + if err != nil { + g.Log().Fatal(ctx, err) + } + + simple.Event().Register(consts.EventServerClose, func(ctx context.Context, args ...interface{}) { + _ = tp.Shutdown(ctx) + g.Log().Debug(ctx, "jaeger closed ..") + }) +} + +// SetGFMode 设置gf运行模式 +func SetGFMode(ctx context.Context) { + mode := g.Cfg().MustGet(ctx, "system.mode").String() + if len(mode) == 0 { + mode = gmode.NOT_SET + } + + var modes = []string{gmode.DEVELOP, gmode.TESTING, gmode.STAGING, gmode.PRODUCT} + + // 如果是有效的运行模式,就进行设置 + if validate.InSlice(modes, mode) { + gmode.Set(mode) + } +} diff --git a/server/internal/library/addons/addons.go b/server/internal/library/addons/addons.go new file mode 100644 index 0000000..dd5f128 --- /dev/null +++ b/server/internal/library/addons/addons.go @@ -0,0 +1,61 @@ +// Package addons +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package addons + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" + "hotgo/internal/consts" +) + +var cacheResourcePath string + +// GetResourcePath 获取插件资源路径 +func GetResourcePath(ctx context.Context) string { + if len(cacheResourcePath) > 0 { + return cacheResourcePath + } + basePath := g.Cfg().MustGet(ctx, "system.addonsResourcePath").String() + if basePath == "" { + g.Log().Warning(ctx, "addons GetResourcePath not config found:'system.addonsResourcePath', use default values:'resource'") + basePath = "resource" + } + + cacheResourcePath = basePath + return basePath +} + +// GetModulePath 获取指定模块相对路径 +func GetModulePath(name string) string { + return "./" + consts.AddonsDir + "/" + name +} + +// ViewPath 默认的插件模板路径 +// 模板路径:resource/addons/插件模块名称/template +// 例如:resource/addons/hgexample/template +// 如果你不喜欢现在的风格,可以自行调整 +func ViewPath(name, basePath string) string { + return basePath + "/" + consts.AddonsDir + "/" + name + "/template" +} + +// StaticPath 默认的插件静态路映射关系 +// 静态资源路径:resource/public/addons/插件模块名称/public +// 例如访问:http://127.0.0.1:8000/addons/hgexample/default 则指向文件-> resource/addons/hgexample/public/default +// 如果你不喜欢现在的风格,可以自行调整 +func StaticPath(name, basePath string) (string, string) { + return "/" + consts.AddonsDir + "/" + name, basePath + "/" + consts.AddonsDir + "/" + name + "/public" +} + +// RouterPrefix 路由前缀 +// 最终效果:/应用名称/插件模块名称/xxx/xxx。 +// 如果你不喜欢现在的风格,可以自行调整 +func RouterPrefix(ctx context.Context, app, name string) string { + var prefix = "/" + if app != "" { + prefix = g.Cfg().MustGet(ctx, "router."+app+".prefix", "/"+app+"").String() + } + return prefix + "/" + name +} diff --git a/server/internal/library/addons/build.go b/server/internal/library/addons/build.go new file mode 100644 index 0000000..6fab466 --- /dev/null +++ b/server/internal/library/addons/build.go @@ -0,0 +1,138 @@ +// Package addons +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package addons + +import ( + "context" + "fmt" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/text/gstr" + "hotgo/internal/consts" + "hotgo/internal/model" + "hotgo/utility/validate" + "strconv" + "strings" +) + +type BuildOption struct { + Skeleton Skeleton + Config *model.BuildAddonConfig + Extend []string `json:"extend" dc:"扩展功能"` +} + +// Build 构建新插件 +func Build(ctx context.Context, option *BuildOption) (err error) { + var ( + resourcePath = GetResourcePath(ctx) + buildPath = "./" + consts.AddonsDir + "/" + option.Skeleton.Name + modulesPath = "./" + consts.AddonsDir + "/modules/" + option.Skeleton.Name + ".go" + webApiPath = gstr.Replace(option.Config.WebApiPath, "{$name}", option.Skeleton.Name) + webViewsPath = gstr.Replace(option.Config.WebViewsPath, "{$name}", option.Skeleton.Name) + replaces = map[string]string{ + "@{.label}": option.Skeleton.Label, + "@{.name}": option.Skeleton.Name, + "@{.group}": strconv.Itoa(option.Skeleton.Group), + "@{.brief}": option.Skeleton.Brief, + "@{.description}": option.Skeleton.Description, + "@{.author}": option.Skeleton.Author, + "@{.version}": option.Skeleton.Version, + "@{.hgVersion}": consts.VersionApp, // HG 版本 + } + ) + + if resourcePath == "" { + err = gerror.New("请先设置一个有效的插件资源路径,配置名称:'system.addonsResourcePath'") + return + } + + if err = checkBuildDir(buildPath, modulesPath, webApiPath, webViewsPath); err != nil { + return + } + + // scans directory recursively + list, err := gfile.ScanDirFunc(option.Config.SrcPath, "*", true, func(path string) string { + return path + }) + + if err != nil { + return + } + + for _, path := range list { + if !gfile.IsReadable(path) { + err = gerror.Newf("file:%v is unreadable, please check permissions", path) + return + } + + if gfile.IsDir(path) { + continue + } + + flowFile := gstr.ReplaceByMap(path, map[string]string{ + gfile.RealPath(option.Config.SrcPath): "", + ".template": "", + }) + flowFile = buildPath + "/" + flowFile + + content := gstr.ReplaceByMap(gfile.GetContents(path), replaces) + + if err = gfile.PutContents(flowFile, content); err != nil { + break + } + } + + // 隐式注入插件 + if err = gfile.PutContents(modulesPath, gstr.ReplaceByMap(importModules, replaces)); err != nil { + return + } + + // webApi + if err = gfile.PutContents(webApiPath+"/config/index.ts", gstr.ReplaceByMap(webApiLayout, replaces)); err != nil { + return + } + + // web插件配置主页面 + if err = gfile.PutContents(webViewsPath+"/config/BasicSetting.vue", gstr.ReplaceByMap(webConfigBasicSetting, replaces)); err != nil { + return + } + + // web插件基础配置页面 + if err = gfile.PutContents(webViewsPath+"/config/system.vue", gstr.ReplaceByMap(webConfigSystem, replaces)); err != nil { + return + } + + // 创建静态目录 + if validate.InSlice(option.Extend, consts.AddonsExtendResourcePublic) { + _, staticPath := StaticPath(option.Skeleton.Name, resourcePath) + content := fmt.Sprintf(resourcePublicDefaultFile, option.Skeleton.Label) + if err = gfile.PutContents(staticPath+"/default", content); err != nil { + return + } + } + + // 创建模板目录 + if validate.InSlice(option.Extend, consts.AddonsExtendResourceTemplate) { + viewPath := ViewPath(option.Skeleton.Name, resourcePath) + if err = gfile.PutContents(viewPath+"/home/index.html", resourceTemplateHomeFile); err != nil { + return + } + } + return +} + +func checkBuildDir(paths ...string) (err error) { + if len(paths) == 0 { + return + } + + for _, path := range paths { + if gfile.Exists(path) { + return gerror.Newf("插件已存在,请换一个插件名称或者经确认无误后依次删除文件夹: [%v] 后重新生成", strings.Join(paths, "、\t")) + } + } + return +} diff --git a/server/internal/library/addons/build_layout.go b/server/internal/library/addons/build_layout.go new file mode 100644 index 0000000..dd85e96 --- /dev/null +++ b/server/internal/library/addons/build_layout.go @@ -0,0 +1,232 @@ +// Package addons +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package addons + +const ( + importModules = `// Package modules +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package modules + +import _ "hotgo/addons/@{.name}" +` + + webApiLayout = `import { http } from '@/utils/http/axios'; + +export function getConfig(params) { + return http.request({ + url: '/@{.name}/config/get', + method: 'get', + params, + }); +} + +export function updateConfig(params) { + return http.request({ + url: '/@{.name}/config/update', + method: 'post', + params, + }); +} +` + + webConfigBasicSetting = ` + + +` + + webConfigSystem = ` + + +` + + resourcePublicDefaultFile = "Hello!这是创建插件 [%v] 时默认生成的一个静态目录文件,用于测试,当你看到这个提示时,说明已经联调成功啦!" + + resourceTemplateHomeFile = ` + + + + + + + + @{.Title} + + + + +
+

Hello,@{.Data.name}!!

+

@{.Data.module}

+

服务器时间:@{.Data.time}

+
+ + + +` +) diff --git a/server/internal/library/addons/install.go b/server/internal/library/addons/install.go new file mode 100644 index 0000000..976aadd --- /dev/null +++ b/server/internal/library/addons/install.go @@ -0,0 +1,120 @@ +// Package addons +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package addons + +import ( + "context" + "hotgo/internal/consts" + "hotgo/internal/dao" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gtime" +) + +// InstallRecord 安装记录 +type InstallRecord struct { + Id int64 `json:"id" description:"安装ID"` + Version string `json:"version" description:"安装版本"` + Status int `json:"status" description:"安装状态"` + CreatedAt *gtime.Time `json:"createdAt" description:"创建时间"` + UpdatedAt *gtime.Time `json:"updatedAt" description:"更新时间"` +} + +func GetModel(ctx context.Context) *gdb.Model { + return dao.SysAddonsInstall.Ctx(ctx) +} + +func ScanInstall(m Module) (record *InstallRecord, err error) { + err = GetModel(m.Ctx()).Where(dao.SysAddonsInstall.Columns().Name, m.GetSkeleton().Name).Scan(&record) + return +} + +// IsInstall 模块是否已安装 +func IsInstall(m Module) bool { + record, err := ScanInstall(m) + if err != nil { + g.Log().Debugf(m.Ctx(), "addons.IsInstall err:%+v", err) + return false + } + if record == nil { + return false + } + return record.Status == consts.AddonsInstallStatusOk +} + +// Install 安装模块 +func Install(m Module) (err error) { + record, err := ScanInstall(m) + if err != nil { + return + } + if record != nil && record.Status == consts.AddonsInstallStatusOk { + return gerror.New("插件已安装,无需重复操作!") + } + + data := g.Map{ + dao.SysAddonsInstall.Columns().Name: m.GetSkeleton().Name, + dao.SysAddonsInstall.Columns().Version: m.GetSkeleton().Version, + dao.SysAddonsInstall.Columns().Status: consts.AddonsInstallStatusOk, + } + return g.DB().Transaction(m.Ctx(), func(ctx context.Context, tx gdb.TX) error { + if record != nil { + _, _ = GetModel(ctx).Where(dao.SysAddonsInstall.Columns().Id, record.Id).Delete() + } + + if _, err = GetModel(ctx).Data(data).OmitEmptyData().Insert(); err != nil { + return err + } + return m.Install(ctx) + }) +} + +// Upgrade 更新模块 +func Upgrade(m Module) (err error) { + record, err := ScanInstall(m) + if err != nil { + return + } + + if record == nil || record.Status != consts.AddonsInstallStatusOk { + return gerror.New("插件未安装,请安装后操作!") + } + + data := g.Map{ + dao.SysAddonsInstall.Columns().Version: m.GetSkeleton().Version, + } + return g.DB().Transaction(m.Ctx(), func(ctx context.Context, tx gdb.TX) error { + if _, err = GetModel(ctx).Where(dao.SysAddonsInstall.Columns().Id, record.Id).Data(data).Update(); err != nil { + return err + } + return m.Upgrade(ctx) + }) +} + +// UnInstall 卸载模块 +func UnInstall(m Module) (err error) { + record, err := ScanInstall(m) + if err != nil { + return + } + + if record == nil || record.Status != consts.AddonsInstallStatusOk { + return gerror.New("插件未安装,请安装后操作!") + } + + data := g.Map{ + dao.SysAddonsInstall.Columns().Version: m.GetSkeleton().Version, + dao.SysAddonsInstall.Columns().Status: consts.AddonsInstallStatusUn, + } + return g.DB().Transaction(m.Ctx(), func(ctx context.Context, tx gdb.TX) error { + if _, err = GetModel(ctx).Where(dao.SysAddonsInstall.Columns().Id, record.Id).Data(data).Update(); err != nil { + return err + } + return m.UnInstall(ctx) + }) +} diff --git a/server/internal/library/addons/module.go b/server/internal/library/addons/module.go new file mode 100644 index 0000000..092887f --- /dev/null +++ b/server/internal/library/addons/module.go @@ -0,0 +1,186 @@ +// Package addons +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package addons + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/net/ghttp" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gres" + "hotgo/internal/model/input/form" + "sort" + "sync" + "time" +) + +// Option 模块启动选项 +type Option struct { + Server *ghttp.Server // http服务器 + // 更多选项参数 + // .. +} + +// Skeleton 模块骨架 +type Skeleton struct { + Label string `json:"label"` // 标识 + Name string `json:"name"` // 名称 + Group int `json:"group"` // 分组 + Logo string `json:"logo"` // logo + Brief string `json:"brief"` // 简介 + Description string `json:"description"` // 详细描述 + Author string `json:"author"` // 作者 + Version string `json:"version"` // 版本号 + RootPath string `json:"rootPath"` // 根路径 +} + +func (s *Skeleton) GetModule() Module { + return GetModule(s.Name) +} + +// Module 插件模块 +type Module interface { + Start(option *Option) (err error) // 启动模块 + Stop() (err error) // 停止模块 + Ctx() context.Context // 上下文 + GetSkeleton() *Skeleton // 获取模块 + Install(ctx context.Context) (err error) // 安装模块 + Upgrade(ctx context.Context) (err error) // 更新模块 + UnInstall(ctx context.Context) (err error) // 卸载模块 +} + +var ( + modules = make(map[string]Module) + mLock sync.Mutex +) + +// StartModules 启动所有已安装模块 +func StartModules(ctx context.Context, option *Option) (err error) { + for _, module := range filterInstalled() { + if err = module.Start(option); err != nil { + return + } + } + + // 为所有已安装模块设置静态资源路径 + AddStaticPath(ctx, option.Server) + return +} + +// StopModules 停止所有已安装模块 +func StopModules(ctx context.Context) { + for _, module := range filterInstalled() { + if err := module.Stop(); err != nil { + g.Log().Warningf(ctx, "StopModules err:%v, module:%v", err.Error(), module.GetSkeleton().Name) + time.Sleep(time.Second) + } + } + return +} + +// RegisterModule 注册模块 +func RegisterModule(m Module) Module { + mLock.Lock() + defer mLock.Unlock() + name := m.GetSkeleton().Name + _, ok := modules[name] + if ok { + panic("module repeat registration, name:" + name) + } + + sk := m.GetSkeleton() + if sk == nil { + panic("module skeleton not initialized, name:" + name) + } + + sk.RootPath = GetModulePath(name) + modules[name] = m + return m +} + +// GetModule 获取指定名称模块 +func GetModule(name string) Module { + mLock.Lock() + defer mLock.Unlock() + m, ok := modules[name] + if !ok { + panic("implement not found for interface " + name + ", forgot register?") + } + return m +} + +// GetSkeletons 获取所有模块骨架 +func GetSkeletons() (list []*Skeleton) { + var keys []string + for k := range modules { + keys = append(keys, k) + } + + sort.Strings(keys) + + for _, v := range keys { + list = append(list, GetModule(v).GetSkeleton()) + } + return list +} + +// GetModuleRealPath 获取指定模块绝对路径 +func GetModuleRealPath(name string) string { + path := gfile.RealPath(GetModulePath(name)) + if path == "" { + panic("no path is found. please confirm that the path " + GetModulePath(name) + " exists?") + } + return path +} + +// AddStaticPath 设置插件静态目录映射 +func AddStaticPath(ctx context.Context, server *ghttp.Server) { + basePath := GetResourcePath(ctx) + if basePath == "" { + return + } + + for _, module := range filterInstalled() { + name := module.GetSkeleton().Name + prefix, path := StaticPath(name, basePath) + if !gres.Contains(path) { + if _, err := gfile.Search(path); err != nil { + g.Log().Warningf(ctx, `addons AddStaticPath failed: %v`, err) + continue + } + } + server.AddStaticPath(prefix, path) + } +} + +// filterInstalled 过滤已安装模块 +func filterInstalled() []Module { + var ms []Module + for _, module := range modules { + if IsInstall(module) { + ms = append(ms, module) + } + } + return ms +} + +// ModuleSelect 获取插件模块选项 +func ModuleSelect() form.Selects { + sks := GetSkeletons() + lst := make(form.Selects, 0) + if len(sks) == 0 { + return lst + } + + for _, skeleton := range sks { + lst = append(lst, &form.Select{ + Value: skeleton.Name, + Label: skeleton.Label, + Name: skeleton.Label, + }) + } + return lst +} diff --git a/server/internal/library/cache/cache.go b/server/internal/library/cache/cache.go new file mode 100644 index 0000000..d131061 --- /dev/null +++ b/server/internal/library/cache/cache.go @@ -0,0 +1,58 @@ +// Package cache +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package cache + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gcache" + "github.com/gogf/gf/v2/os/gfile" + "hotgo/internal/library/cache/file" +) + +// cache 缓存驱动 +var cache *gcache.Cache + +// Instance 缓存实例 +func Instance() *gcache.Cache { + if cache == nil { + panic("cache uninitialized.") + } + return cache +} + +// SetAdapter 设置缓存适配器 +func SetAdapter(ctx context.Context) { + var adapter gcache.Adapter + + switch g.Cfg().MustGet(ctx, "cache.adapter").String() { + case "redis": + adapter = gcache.NewAdapterRedis(g.Redis()) + case "file": + fileDir := g.Cfg().MustGet(ctx, "cache.fileDir").String() + if fileDir == "" { + g.Log().Fatal(ctx, "file path must be configured for file caching.") + return + } + + if !gfile.Exists(fileDir) { + if err := gfile.Mkdir(fileDir); err != nil { + g.Log().Fatalf(ctx, "failed to create the cache directory. procedure, err:%+v", err) + return + } + } + adapter = file.NewAdapterFile(fileDir) + default: + adapter = gcache.NewAdapterMemory() + } + + // 数据库缓存,默认和通用缓冲驱动一致,如果你不想使用默认的,可以自行调整 + g.DB().GetCache().SetAdapter(adapter) + + // 通用缓存 + cache = gcache.New() + cache.SetAdapter(adapter) +} diff --git a/server/internal/library/cache/file/file.go b/server/internal/library/cache/file/file.go new file mode 100644 index 0000000..26138ff --- /dev/null +++ b/server/internal/library/cache/file/file.go @@ -0,0 +1,322 @@ +// Package file +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package file + +import ( + "context" + "crypto/sha256" + "encoding/hex" + "encoding/json" + "errors" + "fmt" + "github.com/gogf/gf/v2/container/gvar" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/os/gcache" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/util/gconv" + "os" + "path/filepath" + "time" +) + +type ( + // AdapterFile is the gcache adapter implements using file server. + AdapterFile struct { + dir string + } + + fileContent struct { + Duration int64 `json:"duration"` + Data interface{} `json:"data,omitempty"` + } +) + +const perm = 0o666 + +var ( + CacheExpiredErr = errors.New("cache expired") +) + +// NewAdapterFile creates and returns a new memory cache object. +func NewAdapterFile(dir string) gcache.Adapter { + return &AdapterFile{ + dir: dir, + } +} + +func (c *AdapterFile) Set(ctx context.Context, key interface{}, value interface{}, lifeTime time.Duration) (err error) { + fileKey := gconv.String(key) + if value == nil || lifeTime < 0 { + return c.Delete(fileKey) + } + return c.Save(fileKey, gconv.String(value), lifeTime) +} + +func (c *AdapterFile) SetMap(ctx context.Context, data map[interface{}]interface{}, duration time.Duration) (err error) { + return gerror.New("implement me") +} + +func (c *AdapterFile) SetIfNotExist(ctx context.Context, key interface{}, value interface{}, duration time.Duration) (ok bool, err error) { + return false, gerror.New("implement me") +} + +func (c *AdapterFile) SetIfNotExistFunc(ctx context.Context, key interface{}, f gcache.Func, duration time.Duration) (ok bool, err error) { + return false, gerror.New("implement me") +} + +func (c *AdapterFile) SetIfNotExistFuncLock(ctx context.Context, key interface{}, f gcache.Func, duration time.Duration) (ok bool, err error) { + return false, gerror.New("implement me") +} + +func (c *AdapterFile) Get(ctx context.Context, key interface{}) (*gvar.Var, error) { + fetch, err := c.Fetch(gconv.String(key)) + if err != nil { + return nil, err + } + return gvar.New(fetch), nil +} + +func (c *AdapterFile) GetOrSet(ctx context.Context, key interface{}, value interface{}, duration time.Duration) (result *gvar.Var, err error) { + result, err = c.Get(ctx, key) + if err != nil && !errors.Is(err, CacheExpiredErr) { + return nil, err + } + if result.IsNil() { + return gvar.New(value), c.Set(ctx, key, value, duration) + } + return +} + +func (c *AdapterFile) GetOrSetFunc(ctx context.Context, key interface{}, f gcache.Func, duration time.Duration) (result *gvar.Var, err error) { + v, err := c.Get(ctx, key) + if err != nil && !errors.Is(err, CacheExpiredErr) { + return nil, err + } + if v.IsNil() { + value, err := f(ctx) + if err != nil { + return nil, err + } + if value == nil { + return nil, nil + } + return gvar.New(value), c.Set(ctx, key, value, duration) + } else { + return v, nil + } +} + +func (c *AdapterFile) GetOrSetFuncLock(ctx context.Context, key interface{}, f gcache.Func, duration time.Duration) (result *gvar.Var, err error) { + return c.GetOrSetFunc(ctx, key, f, duration) +} + +func (c *AdapterFile) Contains(ctx context.Context, key interface{}) (bool, error) { + return c.Has(gconv.String(key)), nil +} + +func (c *AdapterFile) Size(ctx context.Context) (size int, err error) { + return 0, nil +} + +func (c *AdapterFile) Data(ctx context.Context) (data map[interface{}]interface{}, err error) { + return nil, gerror.New("implement me") +} + +func (c *AdapterFile) Keys(ctx context.Context) (keys []interface{}, err error) { + return nil, gerror.New("implement me") +} + +func (c *AdapterFile) Values(ctx context.Context) (values []interface{}, err error) { + return nil, gerror.New("implement me") +} + +func (c *AdapterFile) Update(ctx context.Context, key interface{}, value interface{}) (oldValue *gvar.Var, exist bool, err error) { + return nil, false, gerror.New("implement me") +} + +func (c *AdapterFile) UpdateExpire(ctx context.Context, key interface{}, duration time.Duration) (oldDuration time.Duration, err error) { + var ( + v *gvar.Var + oldTTL int64 + fileKey = gconv.String(key) + ) + // TTL. + expire, err := c.GetExpire(ctx, fileKey) + if err != nil { + return + } + oldTTL = int64(expire) + if oldTTL == -2 { + // It does not exist. + return + } + oldDuration = time.Duration(oldTTL) * time.Second + // DEL. + if duration < 0 { + err = c.Delete(fileKey) + return + } + v, err = c.Get(ctx, fileKey) + if err != nil { + return + } + err = c.Set(ctx, fileKey, v.Val(), duration) + return +} + +func (c *AdapterFile) GetExpire(ctx context.Context, key interface{}) (time.Duration, error) { + content, err := c.read(gconv.String(key)) + if err != nil { + return -1, nil + } + + if content.Duration <= time.Now().Unix() { + return -1, nil + } + return time.Duration(time.Now().Unix()-content.Duration) * time.Second, nil +} + +func (c *AdapterFile) Remove(ctx context.Context, keys ...interface{}) (lastValue *gvar.Var, err error) { + if len(keys) == 0 { + return nil, nil + } + // Retrieves the last key value. + if lastValue, err = c.Get(ctx, gconv.String(keys[len(keys)-1])); err != nil { + return nil, err + } + // Deletes all given keys. + err = c.DeleteMulti(gconv.Strings(keys)...) + return +} + +func (c *AdapterFile) Clear(ctx context.Context) error { + return c.Flush() +} + +func (c *AdapterFile) Close(ctx context.Context) error { + return nil +} + +func (c *AdapterFile) createName(key string) string { + h := sha256.New() + _, _ = h.Write([]byte(key)) + hash := hex.EncodeToString(h.Sum(nil)) + return filepath.Join(c.dir, fmt.Sprintf("%s.cache", hash)) +} + +func (c *AdapterFile) read(key string) (*fileContent, error) { + rp := gfile.RealPath(c.createName(key)) + if rp == "" { + return nil, nil + } + + value, err := os.ReadFile(rp) + if err != nil { + return nil, err + } + + content := &fileContent{} + if err := json.Unmarshal(value, content); err != nil { + return nil, err + } + + if content.Duration == 0 { + return content, nil + } + + if content.Duration <= time.Now().Unix() { + _ = c.Delete(key) + return nil, CacheExpiredErr + } + return content, nil +} + +// Has checks if the cached key exists into the File storage +func (c *AdapterFile) Has(key string) bool { + fc, err := c.read(key) + return err == nil && fc != nil +} + +// Delete the cached key from File storage +func (c *AdapterFile) Delete(key string) error { + _, err := os.Stat(c.createName(key)) + if err != nil && os.IsNotExist(err) { + return nil + } + return os.Remove(c.createName(key)) +} + +// DeleteMulti the cached key from File storage +func (c *AdapterFile) DeleteMulti(keys ...string) (err error) { + for _, key := range keys { + if err = c.Delete(key); err != nil { + return + } + } + return +} + +// Fetch retrieves the cached value from key of the File storage +func (c *AdapterFile) Fetch(key string) (interface{}, error) { + content, err := c.read(key) + if err != nil { + return nil, err + } + + if content == nil { + return nil, nil + } + return content.Data, nil +} + +// FetchMulti retrieve multiple cached values from keys of the File storage +func (c *AdapterFile) FetchMulti(keys []string) map[string]interface{} { + result := make(map[string]interface{}) + for _, key := range keys { + if value, err := c.Fetch(key); err == nil { + result[key] = value + } + } + return result +} + +// Flush removes all cached keys of the File storage +func (c *AdapterFile) Flush() error { + dir, err := os.Open(c.dir) + if err != nil { + return err + } + + defer func() { + _ = dir.Close() + }() + + names, _ := dir.Readdirnames(-1) + + for _, name := range names { + _ = os.Remove(filepath.Join(c.dir, name)) + } + return nil +} + +// Save a value in File storage by key +func (c *AdapterFile) Save(key string, value string, lifeTime time.Duration) error { + duration := int64(0) + + if lifeTime > 0 { + duration = time.Now().Unix() + int64(lifeTime.Seconds()) + } + + content := &fileContent{duration, value} + + data, err := json.Marshal(content) + if err != nil { + return err + } + + err = os.WriteFile(c.createName(key), data, perm) + return err +} diff --git a/server/internal/library/captcha/captcha.go b/server/internal/library/captcha/captcha.go new file mode 100644 index 0000000..6cdca8c --- /dev/null +++ b/server/internal/library/captcha/captcha.go @@ -0,0 +1,77 @@ +// Package captcha +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package captcha + +import ( + "context" + "hotgo/internal/consts" + "image/color" + + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/text/gstr" + "github.com/mojocn/base64Captcha" +) + +// store 验证码存储方式 +var store = base64Captcha.DefaultMemStore + +// Generate 生成验证码 +func Generate(ctx context.Context, captchaType int) (id string, base64 string) { + var err error + + switch captchaType { + // 算数 + case consts.CaptchaTypeMath: + driver := &base64Captcha.DriverMath{ + Height: 42, + Width: 100, + NoiseCount: 0, + ShowLineOptions: 0, + BgColor: &color.RGBA{ + R: 255, + G: 250, + B: 250, + A: 250, + }, + Fonts: []string{"chromohv.ttf"}, + } + c := base64Captcha.NewCaptcha(driver.ConvertFonts(), store) + id, base64, _, err = c.Generate() + // 字符 + default: + driver := &base64Captcha.DriverString{ + Height: 42, + Width: 100, + //NoiseCount: 50, + //ShowLineOptions: 20, + Length: 4, + BgColor: &color.RGBA{ + R: 255, + G: 250, + B: 250, + A: 250, + }, + Source: "abcdefghjkmnpqrstuvwxyz23456789", // abcdefghjkmnpqrstuvwxyz23456789 + Fonts: []string{"chromohv.ttf"}, + } + c := base64Captcha.NewCaptcha(driver.ConvertFonts(), store) + id, base64, _, err = c.Generate() + } + + if err != nil { + g.Log().Errorf(ctx, "captcha.Generate err:%+v", err) + } + + return +} + +// Verify 验证输入的验证码是否正确 +func Verify(id, answer string) bool { + if id == "" || answer == "" { + return false + } + return store.Verify(id, gstr.ToLower(answer), true) +} diff --git a/server/internal/library/casbin/adapter.go b/server/internal/library/casbin/adapter.go new file mode 100644 index 0000000..7264fa4 --- /dev/null +++ b/server/internal/library/casbin/adapter.go @@ -0,0 +1,333 @@ +// Package casbin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package casbin + +import ( + "context" + "errors" + "fmt" + "hotgo/internal/consts" + "hotgo/internal/dao" + "math" + "strings" + + "github.com/casbin/casbin/v2/model" + "github.com/casbin/casbin/v2/persist" + "github.com/gogf/gf/v2/database/gdb" +) + +var defaultTableName = dao.AdminRoleCasbin.Table() + +const ( + dropPolicyTableSql = `DROP TABLE IF EXISTS %s` + createPolicyTableSql = ` +CREATE TABLE IF NOT EXISTS %s ( + id bigint(20) NOT NULL AUTO_INCREMENT, + p_type varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + v0 varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + v1 varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + v2 varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + v3 varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + v4 varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + v5 varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + PRIMARY KEY (id) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '管理员_casbin权限表' ROW_FORMAT = Dynamic; +` + createPolicyTablePgSql = `CREATE TABLE IF NOT EXISTS "public"."%s" ( + "id" int8 NOT NULL DEFAULT nextval('hg_admin_role_casbin_id_seq'::regclass), + "p_type" varchar(64) COLLATE "pg_catalog"."default", + "v0" varchar(256) COLLATE "pg_catalog"."default", + "v1" varchar(256) COLLATE "pg_catalog"."default", + "v2" varchar(256) COLLATE "pg_catalog"."default", + "v3" varchar(256) COLLATE "pg_catalog"."default", + "v4" varchar(256) COLLATE "pg_catalog"."default", + "v5" varchar(256) COLLATE "pg_catalog"."default", + CONSTRAINT "hg_admin_role_casbin_pkey" PRIMARY KEY ("id") +) +; + +ALTER TABLE "public"."%s" + OWNER TO "postgres"; + +COMMENT ON TABLE "public"."%s" IS '管理员_casbin权限表';` +) + +type ( + adapter struct { + db gdb.DB + table string + } + + policyColumns struct { + ID string // ID + PType string // PType + V0 string // V0 + V1 string // V1 + V2 string // V2 + V3 string // V3 + V4 string // V4 + V5 string // V5 + } + + // policy rule entity + policyRule struct { + ID int64 `orm:"id" json:"id"` + PType string `orm:"p_type" json:"p_type"` + V0 string `orm:"v0" json:"v0"` + V1 string `orm:"v1" json:"v1"` + V2 string `orm:"v2" json:"v2"` + V3 string `orm:"v3" json:"v3"` + V4 string `orm:"v4" json:"v4"` + V5 string `orm:"v5" json:"v5"` + } +) + +var ( + errInvalidDatabaseLink = errors.New("invalid database link") + policyColumnsName = policyColumns{ + ID: "id", + PType: "p_type", + V0: "v0", + V1: "v1", + V2: "v2", + V3: "v3", + V4: "v4", + V5: "v5", + } +) + +// NewAdapter Create a casbin adapter +func NewAdapter(link string) (adp *adapter, err error) { + adp = &adapter{table: defaultTableName} + config := strings.SplitN(link, ":", 2) + + if len(config) != 2 { + err = errInvalidDatabaseLink + return + } + + if adp.db, err = gdb.New(gdb.ConfigNode{Type: config[0], Link: config[1]}); err != nil { + return + } + + err = adp.createPolicyTable() + + return +} + +func (a *adapter) model() *gdb.Model { + return a.db.Model(a.table).Safe().Ctx(context.TODO()) +} + +// create a policy table when it's not exists. +func (a *adapter) createPolicyTable() (err error) { + if a.db.GetConfig().Type == consts.DBPgsql { + _, err = a.db.Exec(context.TODO(), fmt.Sprintf(createPolicyTablePgSql, a.table, a.table, a.table)) + return + } + _, err = a.db.Exec(context.TODO(), fmt.Sprintf(createPolicyTableSql, a.table)) + return +} + +// drop policy table from the storage. +func (a *adapter) dropPolicyTable() (err error) { + _, err = a.db.Exec(context.TODO(), fmt.Sprintf(dropPolicyTableSql, a.table)) + return +} + +// LoadPolicy loads all policy rules from the storage. +func (a *adapter) LoadPolicy(model model.Model) (err error) { + var rules []policyRule + if err = a.model().Scan(&rules); err != nil { + return + } + + for _, rule := range rules { + a.loadPolicyRule(rule, model) + } + return +} + +// SavePolicy Saves all policy rules to the storage. +func (a *adapter) SavePolicy(model model.Model) (err error) { + if err = a.dropPolicyTable(); err != nil { + return + } + + if err = a.createPolicyTable(); err != nil { + return + } + + policyRules := make([]policyRule, 0) + + for ptype, ast := range model["p"] { + for _, rule := range ast.Policy { + policyRules = append(policyRules, a.buildPolicyRule(ptype, rule)) + } + } + + for ptype, ast := range model["g"] { + for _, rule := range ast.Policy { + policyRules = append(policyRules, a.buildPolicyRule(ptype, rule)) + } + } + + if count := len(policyRules); count > 0 { + if _, err = a.model().OmitEmptyData().FieldsEx(policyColumnsName.ID).Insert(policyRules); err != nil { + return + } + } + return +} + +// AddPolicy adds a policy rule to the storage. +func (a *adapter) AddPolicy(sec string, ptype string, rule []string) (err error) { + _, err = a.model().OmitEmptyData().FieldsEx(policyColumnsName.ID).Insert(a.buildPolicyRule(ptype, rule)) + return +} + +// AddPolicies adds policy rules to the storage. +func (a *adapter) AddPolicies(sec string, ptype string, rules [][]string) (err error) { + if len(rules) == 0 { + return + } + + policyRules := make([]policyRule, 0, len(rules)) + + for _, rule := range rules { + policyRules = append(policyRules, a.buildPolicyRule(ptype, rule)) + } + + _, err = a.model().OmitEmptyData().FieldsEx(policyColumnsName.ID).Insert(policyRules) + return +} + +// RemovePolicy removes a policy rule from the storage. +func (a *adapter) RemovePolicy(sec string, ptype string, rule []string) (err error) { + db := a.model() + db = db.Where(policyColumnsName.PType, ptype) + for index := 0; index < len(rule); index++ { + db = db.Where(fmt.Sprintf("v%d", index), rule[index]) + } + _, err = db.Delete() + return err +} + +// RemoveFilteredPolicy removes policy rules that match the filter from the storage. +func (a *adapter) RemoveFilteredPolicy(sec string, ptype string, fieldIndex int, fieldValues ...string) (err error) { + db := a.model() + db = db.Where(policyColumnsName.PType, ptype) + for index := 0; index <= 5; index++ { + if fieldIndex <= index && index < fieldIndex+len(fieldValues) { + db = db.Where(fmt.Sprintf("v%d", index), fieldValues[index-fieldIndex]) + } + } + _, err = db.Delete() + return +} + +// RemovePolicies removes policy rules from the storage (implements the persist.BatchAdapter interface). +func (a *adapter) RemovePolicies(sec string, ptype string, rules [][]string) (err error) { + db := a.model() + + for _, rule := range rules { + where := map[string]interface{}{policyColumnsName.PType: ptype} + + for i := 0; i <= 5; i++ { + if len(rule) > i { + where[fmt.Sprintf("v%d", i)] = rule[i] + } + } + + db = db.WhereOr(where) + } + + _, err = db.Delete() + return +} + +// UpdatePolicy updates a policy rule from storage. +func (a *adapter) UpdatePolicy(sec string, ptype string, oldRule, newRule []string) (err error) { + _, err = a.model().Update(a.buildPolicyRule(ptype, newRule), a.buildPolicyRule(ptype, oldRule)) + return +} + +// UpdatePolicies updates some policy rules to storage, like db, redis. +func (a *adapter) UpdatePolicies(sec string, ptype string, oldRules, newRules [][]string) (err error) { + if len(oldRules) == 0 || len(newRules) == 0 { + return + } + return a.db.Transaction(context.TODO(), func(ctx context.Context, tx gdb.TX) error { + for i := 0; i < int(math.Min(float64(len(oldRules)), float64(len(newRules)))); i++ { + if _, err = tx.Model(a.table).Update(a.buildPolicyRule(ptype, newRules[i]), a.buildPolicyRule(ptype, oldRules[i])); err != nil { + return err + } + } + return nil + }) +} + +// 加载策略规则 +func (a *adapter) loadPolicyRule(rule policyRule, model model.Model) { + ruleText := rule.PType + + if rule.V0 != "" { + ruleText += ", " + rule.V0 + } + + if rule.V1 != "" { + ruleText += ", " + rule.V1 + } + + if rule.V2 != "" { + ruleText += ", " + rule.V2 + } + + if rule.V3 != "" { + ruleText += ", " + rule.V3 + } + + if rule.V4 != "" { + ruleText += ", " + rule.V4 + } + + if rule.V5 != "" { + ruleText += ", " + rule.V5 + } + if err := persist.LoadPolicyLine(ruleText, model); err != nil { + panic(err) + } +} + +// 构建策略规则 +func (a *adapter) buildPolicyRule(ptype string, data []string) policyRule { + rule := policyRule{PType: ptype} + + if len(data) > 0 { + rule.V0 = data[0] + } + + if len(data) > 1 { + rule.V1 = data[1] + } + + if len(data) > 2 { + rule.V2 = data[2] + } + + if len(data) > 3 { + rule.V3 = data[3] + } + + if len(data) > 4 { + rule.V4 = data[4] + } + + if len(data) > 5 { + rule.V5 = data[5] + } + return rule +} diff --git a/server/internal/library/casbin/casbin_test.go b/server/internal/library/casbin/casbin_test.go new file mode 100644 index 0000000..6dafe7a --- /dev/null +++ b/server/internal/library/casbin/casbin_test.go @@ -0,0 +1,67 @@ +// Package casbin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package casbin + +import ( + "context" + "net/http" + "testing" +) + +// TestNew description +func TestNew(t *testing.T) { + + InitEnforcer(context.TODO()) + + user := "admin" + path := "/" + method := http.MethodGet + t.Logf("\nuser:%v\npath:%v\nmethod:%v", user, path, method) + + ok, err := Enforcer.DeletePermissionsForUser(user) + if err != nil { + t.Error(err) + } + t.Logf("delete user premission:%v", ok) + CheckPremission(t, user, path, method) + AddPremission(t, user, "*", ActionAll) + CheckPremission(t, user, path, method) + + user1 := "user1" + path1 := "/api/v1/*" + checkPathTrue := "/api/v1/user/list" + checkPathFalse := "/api/v2/user/list" + AddPremission(t, user1, path1, ActionAll) + CheckPremission(t, user1, checkPathTrue, ActionPost) + CheckPremission(t, user1, checkPathFalse, http.MethodGet) + CheckPremission(t, user1, checkPathTrue, http.MethodGet) + CheckPremission(t, user1, "/api/v1/user/list2", http.MethodGet) + + ok, err = Enforcer.DeletePermissionsForUser(user1) + if err != nil { + t.Error(err) + } + t.Logf("delete user premission:%v", ok) + CheckPremission(t, user1, "/api/v1/user1/list", http.MethodGet) +} + +// CheckPremission description +func CheckPremission(t *testing.T, user string, path string, method string) { + ok, err := Enforcer.Enforce(user, path, method) + if err != nil { + t.Error(err) + } + t.Logf("check \tuser[%s] \tpremission[%s] \tpath[%s] \tallow[%v]", user, method, path, ok) +} + +// Add description +func AddPremission(t *testing.T, user string, path string, method string) { + ok, err := Enforcer.AddPolicy(user, path, method) + if err != nil { + t.Error(err) + } + t.Logf("add \tuser[%s] \tpremission[%s] \tpath[%s] \tresult[%v]", user, method, path, ok) +} diff --git a/server/internal/library/casbin/enforcer.go b/server/internal/library/casbin/enforcer.go new file mode 100644 index 0000000..3676d11 --- /dev/null +++ b/server/internal/library/casbin/enforcer.go @@ -0,0 +1,164 @@ +// Package casbin +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package casbin + +import ( + "context" + "fmt" + "hotgo/internal/consts" + "hotgo/internal/dao" + "net/http" + "strings" + + "github.com/casbin/casbin/v2" + "github.com/casbin/casbin/v2/model" + _ "github.com/gogf/gf/contrib/drivers/mysql/v2" + "github.com/gogf/gf/v2/container/gvar" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gres" + "github.com/gogf/gf/v2/text/gstr" +) + +const ( + ActionGet = http.MethodGet + ActionPost = http.MethodPost + ActionPut = http.MethodPut + ActionDelete = http.MethodDelete + ActionAll = "GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD" +) + +var Enforcer *casbin.Enforcer + +// InitEnforcer 初始化 +func InitEnforcer(ctx context.Context) { + var ( + link = getDbLink(ctx) + a, err = NewAdapter(link.String()) + ) + + if err != nil { + g.Log().Panicf(ctx, "casbin.NewAdapter err . %v", err) + return + } + + path := "manifest/config/casbin.conf" + + // 优先从本地加载casbin.conf,如果不存在就从资源文件中找 + modelContent := gfile.GetContents(path) + if len(modelContent) == 0 { + if !gres.IsEmpty() && gres.Contains(path) { + modelContent = string(gres.GetContent(path)) + } + } + + if len(modelContent) == 0 { + g.Log().Panicf(ctx, "casbin model file does not exist:%v", path) + } + + m, err := model.NewModelFromString(modelContent) + if err != nil { + g.Log().Panicf(ctx, "casbin NewModelFromString err:%v", err) + } + + Enforcer, err = casbin.NewEnforcer(m, a) + if err != nil { + g.Log().Panicf(ctx, "casbin NewEnforcer err:%v", err) + } + loadPermissions(ctx) +} + +// GetDbLink 获取数据库链接 +func getDbLink(ctx context.Context) *gvar.Var { + + link := g.Cfg().MustGet(ctx, "database.default") + //读写分离 + if !link.IsSlice() { + return g.Cfg().MustGet(ctx, "database.default.link") + } + + for _, v := range link.Array() { + // 只获取主库 + val := v.(map[string]interface{}) + if val["role"] == "master" { + return gvar.New(val["link"]) + } + } + return gvar.New("database.default.0.link") + +} + +func loadPermissions(ctx context.Context) { + type Policy struct { + Key string `json:"key"` + Permissions string `json:"permissions"` + } + var ( + rules [][]string + polices []*Policy + err error + ) + //别名拼接 r.key m.permissions + q := func(alias string, column string) string { + return fmt.Sprintf("%s.%s", alias, column) + } + err = g.Model(gstr.Join([]string{dao.AdminRole.Table(), "r"}, " ")). + LeftJoin(gstr.Join([]string{dao.AdminRoleMenu.Table(), "rm"}, " "), "r.id=rm.role_id"). + LeftJoin(gstr.Join([]string{dao.AdminMenu.Table(), "m"}, " "), "rm.menu_id=m.id"). + Fields(q("r", dao.AdminRole.Columns().Key), q("m", dao.AdminMenu.Columns().Permissions)). + Where(q("r", dao.AdminRole.Columns().Status), consts.StatusEnabled). + Where(q("m", dao.AdminMenu.Columns().Status), consts.StatusEnabled). + WhereNot(q("m", dao.AdminMenu.Columns().Permissions), ""). + WhereNot(q("r", dao.AdminRole.Columns().Key), consts.SuperRoleKey). + Scan(&polices) + if err != nil { + g.Log().Fatalf(ctx, "loadPermissions Scan err:%v", err) + return + } + + for _, policy := range polices { + if strings.Contains(policy.Permissions, ",") { + lst := strings.Split(policy.Permissions, ",") + for _, permissions := range lst { + rules = append(rules, []string{policy.Key, permissions, ActionAll}) + } + } else { + rules = append(rules, []string{policy.Key, policy.Permissions, ActionAll}) + } + } + + if _, err = Enforcer.AddPolicies(rules); err != nil { + g.Log().Fatalf(ctx, "loadPermissions AddPolicies err:%v", err) + return + } +} + +func Clear(ctx context.Context) (err error) { + policy, err := Enforcer.GetPolicy() + if err != nil { + g.Log().Warningf(ctx, "Enforcer RemovePolicies err:%+v", err) + return + } + _, err = Enforcer.RemovePolicies(policy) + if err != nil { + g.Log().Warningf(ctx, "Enforcer RemovePolicies err:%+v", err) + return + } + + // 检查是否清理干净 + if len(policy) > 0 { + return Clear(ctx) + } + return +} + +func Refresh(ctx context.Context) (err error) { + if err = Clear(ctx); err != nil { + return err + } + loadPermissions(ctx) + return +} diff --git a/server/internal/library/contexts/context.go b/server/internal/library/contexts/context.go new file mode 100644 index 0000000..b9cd6bd --- /dev/null +++ b/server/internal/library/contexts/context.go @@ -0,0 +1,195 @@ +// Package contexts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package contexts + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/net/ghttp" + "hotgo/internal/consts" + "hotgo/internal/model" +) + +// Init 初始化上下文对象指针到上下文对象中,以便后续的请求流程中可以修改 +func Init(r *ghttp.Request, customCtx *model.Context) { + r.SetCtxVar(consts.ContextHTTPKey, customCtx) +} + +// Get 获得上下文变量,如果没有设置,那么返回nil +func Get(ctx context.Context) *model.Context { + value := ctx.Value(consts.ContextHTTPKey) + if value == nil { + return nil + } + if localCtx, ok := value.(*model.Context); ok { + return localCtx + } + return nil +} + +// SetUser 将上下文信息设置到上下文请求中,注意是完整覆盖 +func SetUser(ctx context.Context, user *model.Identity) { + c := Get(ctx) + if c == nil { + g.Log().Warning(ctx, "contexts.SetUser, c == nil ") + return + } + c.User = user +} + +// SetResponse 设置组件响应 用于访问日志使用 +func SetResponse(ctx context.Context, response *model.Response) { + c := Get(ctx) + if c == nil { + g.Log().Warning(ctx, "contexts.SetResponse, c == nil ") + return + } + c.Response = response +} + +// SetModule 设置应用模块 +func SetModule(ctx context.Context, module string) { + c := Get(ctx) + if c == nil { + g.Log().Warning(ctx, "contexts.SetModule, c == nil ") + return + } + c.Module = module +} + +// GetUser 获取用户信息 +func GetUser(ctx context.Context) *model.Identity { + c := Get(ctx) + if c == nil { + return nil + } + return c.User +} + +// GetUserId 获取用户ID +func GetUserId(ctx context.Context) int64 { + user := GetUser(ctx) + if user == nil { + return 0 + } + return user.Id +} + +// GetRoleId 获取用户角色ID +func GetRoleId(ctx context.Context) int64 { + user := GetUser(ctx) + if user == nil { + return 0 + } + return user.RoleId +} + +// GetRoleKey 获取用户角色唯一编码 +func GetRoleKey(ctx context.Context) string { + user := GetUser(ctx) + if user == nil { + return "" + } + return user.RoleKey +} + +// GetDeptType 获取用户部门类型 +func GetDeptType(ctx context.Context) string { + user := GetUser(ctx) + if user == nil { + return "" + } + return user.DeptType +} + +// IsCompanyDept 是否为公司部门 +func IsCompanyDept(ctx context.Context) bool { + return GetDeptType(ctx) == consts.DeptTypeCompany +} + +// IsTenantDept 是否为租户部门 +func IsTenantDept(ctx context.Context) bool { + return GetDeptType(ctx) == consts.DeptTypeTenant +} + +// IsMerchantDept 是否为商户部门 +func IsMerchantDept(ctx context.Context) bool { + return GetDeptType(ctx) == consts.DeptTypeMerchant +} + +// IsUserDept 是否为普通用户部门 +func IsUserDept(ctx context.Context) bool { + return GetDeptType(ctx) == consts.DeptTypeUser +} + +// GetModule 获取应用模块 +func GetModule(ctx context.Context) string { + c := Get(ctx) + if c == nil { + return "" + } + return c.Module +} + +// SetAddonName 设置插件信息 +func SetAddonName(ctx context.Context, name string) { + c := Get(ctx) + if c == nil { + g.Log().Warning(ctx, "contexts.SetAddonName, c == nil ") + return + } + Get(ctx).AddonName = name +} + +// IsAddonRequest 是否为插件模块请求 +func IsAddonRequest(ctx context.Context) bool { + c := Get(ctx) + if c == nil { + return false + } + return GetAddonName(ctx) != "" +} + +// GetAddonName 获取插件信息 +func GetAddonName(ctx context.Context) string { + c := Get(ctx) + if c == nil { + return "" + } + return Get(ctx).AddonName +} + +// SetData 设置额外数据 +func SetData(ctx context.Context, k string, v interface{}) { + c := Get(ctx) + if c == nil { + g.Log().Warning(ctx, "contexts.SetData, c == nil ") + return + } + Get(ctx).Data[k] = v +} + +// SetDataMap 设置额外数据 +func SetDataMap(ctx context.Context, vs g.Map) { + c := Get(ctx) + if c == nil { + g.Log().Warning(ctx, "contexts.SetData, c == nil ") + return + } + + for k, v := range vs { + Get(ctx).Data[k] = v + } +} + +// GetData 获取额外数据 +func GetData(ctx context.Context) g.Map { + c := Get(ctx) + if c == nil { + return nil + } + return c.Data +} diff --git a/server/internal/library/contexts/detached.go b/server/internal/library/contexts/detached.go new file mode 100644 index 0000000..e7c1310 --- /dev/null +++ b/server/internal/library/contexts/detached.go @@ -0,0 +1,35 @@ +// Package contexts +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package contexts + +import ( + "context" + "time" +) + +type detached struct { + ctx context.Context +} + +func (detached) Deadline() (time.Time, bool) { + return time.Time{}, false +} + +func (detached) Done() <-chan struct{} { + return nil +} + +func (detached) Err() error { + return nil +} + +func (d detached) Value(key interface{}) interface{} { + return d.ctx.Value(key) +} + +func Detach(ctx context.Context) context.Context { + return detached{ctx: ctx} +} diff --git a/server/internal/library/cron/cron.go b/server/internal/library/cron/cron.go new file mode 100644 index 0000000..450cf08 --- /dev/null +++ b/server/internal/library/cron/cron.go @@ -0,0 +1,313 @@ +// Package cron +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package cron + +import ( + "bufio" + "context" + "fmt" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gcron" + "github.com/gogf/gf/v2/os/gctx" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/glog" + "github.com/gogf/gf/v2/os/gtime" + "hotgo/internal/consts" + "hotgo/internal/dao" + "hotgo/internal/model/entity" + "hotgo/utility/simple" + "os" + "strings" + "sync" +) + +var crons = &cronManager{ + tasks: make(map[string]*TaskItem), + loggers: make(map[string]*glog.Logger), +} + +// Cron 定时任务接口 +type Cron interface { + // GetName 获取任务名称 + GetName() string + // Execute 执行任务 + Execute(ctx context.Context, parser *Parser) (err error) +} + +// Parser 任务执行参数 +type Parser struct { + Args []string // 任务参数 + Logger *glog.Logger // 日志管理实例 +} + +// Log 任务调度日志 +type Log struct { + FileName string `json:"fileName" dc:"文件名称"` + SizeFormat string `json:"sizeFormat" dc:"文件大小"` + Contents string `json:"contents" dc:"文件内容"` +} + +// consumerManager 任务管理者 +type cronManager struct { + tasks map[string]*TaskItem + loggers map[string]*glog.Logger + sync.RWMutex +} + +type TaskItem struct { + Pattern string // 表达式,参考:https://goframe.org/pages/viewpage.action?pageId=30736411 + Name string // 唯一的任务名称 + Params string // 函数参数,多个用,隔开 + Fun gcron.JobFunc // 执行的函数接口 + Policy int64 // 策略 1:并行 2:单例 3:单次 4:多次 + Count int // 执行次数,仅Policy=4时有效 +} + +func Logger() *glog.Logger { + return g.Log("cron") +} + +// Register 注册任务 +func Register(c Cron) { + crons.Lock() + defer crons.Unlock() + + name := c.GetName() + if _, ok := crons.tasks[name]; ok { + Logger().Debugf(gctx.GetInitCtx(), "cron.Register name:%v duplicate registration.", name) + return + } + + crons.tasks[name] = &TaskItem{Name: c.GetName(), Fun: GenExecuteFun(c.Execute)} +} + +// StopALL 停止所有任务 +func StopALL() { + for _, v := range gcron.Entries() { + gcron.Remove(v.Name) + } +} + +// StartALL 启动所有任务 +func StartALL(sysCron []*entity.SysCron) (err error) { + crons.Lock() + defer crons.Unlock() + + if len(crons.tasks) == 0 { + g.Log().Debug(gctx.GetInitCtx(), "no scheduled task is available.") + return + } + + for _, cron := range sysCron { + f, ok := crons.tasks[cron.Name] + if !ok { + return gerror.Newf("该任务没有加入任务列表:%v", cron.Name) + } + + sn := GenCronSn(cron) + + // 没有则添加 + if gcron.Search(sn) == nil { + var ( + t *gcron.Entry + ctx = GenCronCtx(cron) + ) + switch cron.Policy { + case consts.CronPolicySame: + t, err = gcron.Add(ctx, cron.Pattern, f.Fun, sn) + + case consts.CronPolicySingle: + t, err = gcron.AddSingleton(ctx, cron.Pattern, f.Fun, sn) + + case consts.CronPolicyOnce: + t, err = gcron.AddOnce(ctx, cron.Pattern, f.Fun, sn) + + case consts.CronPolicyTimes: + if f.Count <= 0 { + f.Count = 1 + } + t, err = gcron.AddTimes(ctx, cron.Pattern, int(cron.Count), f.Fun, sn) + + default: + return gerror.Newf("使用无效的策略, cron.Policy=%v", cron.Policy) + } + + if err != nil { + return err + } + if t == nil { + return gerror.New("启动任务失败") + } + } + + gcron.Start(sn) + + // 执行完毕,单次和多次执行的任务更新状态 + if cron.Policy == consts.CronPolicyOnce || cron.Policy == consts.CronPolicyTimes { + if _, err = dao.SysCron.Ctx(gctx.GetInitCtx()).Where(dao.SysCron.Columns().Id, cron.Id).Data(g.Map{dao.SysCron.Columns().Status: consts.StatusDisable, dao.SysCron.Columns().UpdatedAt: gtime.Now()}).Update(); err != nil { + err = gerror.Wrap(err, "定时任务执行失败!") + return err + } + } + } + + Logger().Debug(gctx.GetInitCtx(), "load cron success..") + return nil +} + +// RefreshStatus 刷新状态 +func RefreshStatus(sysCron *entity.SysCron) (err error) { + if sysCron == nil { + return + } + + if sysCron.Status == consts.StatusEnabled { + return ResetStart(sysCron) + } + return Stop(sysCron) +} + +// Stop 停止单个任务 +func Stop(sysCron *entity.SysCron) (err error) { + cr := gcron.Search(GenCronSn(sysCron)) + if cr == nil { + return + } + cr.Stop() + return +} + +// ResetStart 重置任务 +func ResetStart(sysCron *entity.SysCron) (err error) { + if err = Stop(sysCron); err != nil { + return + } + if err = Delete(sysCron); err != nil { + return + } + return Start(sysCron) +} + +// Once 立即执行一次某个任务 +func Once(ctx context.Context, sysCron *entity.SysCron) error { + crons.RLock() + defer crons.RUnlock() + + for _, v := range crons.tasks { + if v.Name == sysCron.Name { + simple.SafeGo(ctx, func(ctx context.Context) { + v.Fun(GenCronCtx(sysCron)) + }) + return nil + } + } + return gerror.Newf("定时任务不存在:%+v", sysCron.Name) +} + +// Delete 删除任务 +func Delete(sysCron *entity.SysCron) (err error) { + if sysCron == nil { + return + } + + for _, v := range gcron.Entries() { + if v.Name == GenCronSn(sysCron) { + gcron.Remove(v.Name) + } + } + return +} + +// Start 启动单个任务 +func Start(sysCron *entity.SysCron) (err error) { + if sysCron == nil { + return + } + + c := gcron.Search(GenCronSn(sysCron)) + if c != nil { + c.Start() + return + } + return StartALL([]*entity.SysCron{sysCron}) +} + +// DispatchLog 查看指定任务的调度日志 +func DispatchLog(sysCron *entity.SysCron) (log *Log, err error) { + path := fmt.Sprintf("%v/%v", Logger().GetConfig().Path, GenCronSn(sysCron)) + file, err := FindLastModifiedFile(path) + if err != nil { + return nil, err + } + + if len(file) == 0 || !gfile.IsFile(file) { + err = gerror.New("未找到日志!") + return + } + + log = new(Log) + log.FileName = file + log.SizeFormat = gfile.SizeFormat(file) + + if gfile.Size(file) > 1024*50 { + log.Contents, err = ReadLastLines(file, 100) + if err != nil { + return nil, err + } + } else { + log.Contents = gfile.GetContents(file) + } + return +} + +func ReadLastLines(filename string, lineCount int) (string, error) { + file, err := os.Open(filename) + if err != nil { + return "", err + } + defer file.Close() + + scanner := bufio.NewScanner(file) + + lines := make([]string, 0, lineCount) + for scanner.Scan() { + lines = append(lines, scanner.Text()) + if len(lines) > lineCount { + lines = lines[1:] + } + } + + if err = scanner.Err(); err != nil { + return "", err + } + + result := strings.Join(lines, "\n") + return result, nil +} + +func FindLastModifiedFile(dirPath string) (string, error) { + if !gfile.Exists(dirPath) { + return "", gerror.New("该任务暂未产生日志!") + } + + files, err := gfile.ScanDir(dirPath, "*.log", true) + if err != nil { + return "", err + } + + var lastModifiedFile string + var lastModifiedTime int64 = 0 + + for _, file := range files { + modTime := gfile.MTimestamp(file) + if modTime > lastModifiedTime { + lastModifiedTime = modTime + lastModifiedFile = file + } + } + return lastModifiedFile, nil +} diff --git a/server/internal/library/cron/cron_gen.go b/server/internal/library/cron/cron_gen.go new file mode 100644 index 0000000..f19c308 --- /dev/null +++ b/server/internal/library/cron/cron_gen.go @@ -0,0 +1,88 @@ +// Package cron +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package cron + +import ( + "context" + "fmt" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gctx" + "github.com/gogf/gf/v2/os/glog" + "github.com/gogf/gf/v2/os/gtime" + "hotgo/internal/consts" + "hotgo/internal/model/entity" + "strings" +) + +// GenCronSn 生成任务序列号 +func GenCronSn(sysCron *entity.SysCron) string { + return fmt.Sprintf("%s@%d", sysCron.Name, sysCron.Id) +} + +// GenCronCtx 生成任务上下文 +func GenCronCtx(sysCron *entity.SysCron) (ctx context.Context) { + ctx = context.WithValue(gctx.New(), consts.ContextKeyCronArgs, strings.Split(sysCron.Params, consts.CronSplitStr)) + ctx = context.WithValue(ctx, consts.ContextKeyCronSn, GenCronSn(sysCron)) + return ctx +} + +func GenLoggerByCtx(ctx context.Context) *glog.Logger { + sn, ok := ctx.Value(consts.ContextKeyCronSn).(string) + if !ok { + Logger().Panic(ctx, "获取定时任务序列号失败!") + } + + crons.RLock() + logger, ok := crons.loggers[sn] + crons.RUnlock() + if ok { + return logger + } + + logger = glog.New() + if err := logger.SetConfig(Logger().GetConfig()); err != nil { + Logger().Panic(ctx, err) + } + + logger.SetFlags(glog.F_TIME_STD | glog.F_FILE_SHORT) + // 设置子路径 + if err := logger.SetPath(fmt.Sprintf("%v/%v", logger.GetPath(), sn)); err != nil { + Logger().Panic(ctx, err) + } + + crons.Lock() + defer crons.Unlock() + crons.loggers[sn] = logger + return logger +} + +// GenExecuteFun 生成执行过程 +func GenExecuteFun(fun func(ctx context.Context, parser *Parser) (err error)) func(ctx context.Context) { + return func(ctx context.Context) { + args, ok := ctx.Value(consts.ContextKeyCronArgs).([]string) + if !ok { + Logger().Panic(ctx, "执行定时任务时,参数解析失败!") + return + } + parser := new(Parser) + parser.Args = args + parser.Logger = GenLoggerByCtx(ctx) + + st := gtime.Now() + err := g.Try(ctx, func(ctx context.Context) { + if err := fun(ctx, parser); err != nil { + panic(err) + } + }) + + milliseconds := gtime.Now().Sub(st).Milliseconds() // 执行耗时 + if err != nil { + parser.Logger.Errorf(ctx, "execute failed, took %vms, err:%+v", milliseconds, err) + return + } + parser.Logger.Infof(ctx, "execute success, took %vms.", milliseconds) + } +} diff --git a/server/internal/library/debris/debris.go b/server/internal/library/debris/debris.go new file mode 100644 index 0000000..6defd0e --- /dev/null +++ b/server/internal/library/debris/debris.go @@ -0,0 +1,9 @@ +// Package debris +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +// +package debris + +// 碎片 diff --git a/server/internal/library/dict/dict.go b/server/internal/library/dict/dict.go new file mode 100644 index 0000000..0bb04e5 --- /dev/null +++ b/server/internal/library/dict/dict.go @@ -0,0 +1,81 @@ +// Package dict +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package dict + +import ( + "context" + "errors" + "fmt" + "github.com/gogf/gf/v2/frame/g" + "hash/fnv" + "hotgo/internal/model" + "strconv" +) + +const ( + BuiltinId int64 = -1 // 内置字典ID + EnumsId int64 = -2 // 枚举字典ID + FuncId int64 = -3 // 方法字典ID +) + +var NotExistKeyError = errors.New("not exist key") + +// GetOptions 获取内置选项 +func GetOptions(ctx context.Context, key string) (opts []*model.Option, err error) { + opts = GetEnumsOptions(key) + if opts != nil { + return + } + return GetFuncOptions(ctx, key) +} + +// GetOptionsById 通过类型ID获取内置选项 +func GetOptionsById(ctx context.Context, id int64) (opts []*model.Option, err error) { + for _, v := range GetAllEnums() { + if v.Id == id { + return v.Opts, nil + } + } + + for _, v := range GetAllFunc() { + g.Log().Warningf(ctx, "GetAllFunc GetOptionsById v:%v, %v", v.Id, v.Key) + if v.Id == id { + return LoadFuncOptions(ctx, v) + } + } + + err = NotExistKeyError + return +} + +// GetTypeById 通过类型ID获取内置选项类型 +func GetTypeById(ctx context.Context, id int64) (typ string, err error) { + for _, v := range GetAllEnums() { + if v.Id == id { + return v.Key, nil + } + } + + for _, v := range GetAllFunc() { + if v.Id == id { + return v.Key, nil + } + } + + err = NotExistKeyError + return +} + +// GenIdHash 生成字典id +func GenIdHash(str string, t int64) int64 { + prefix := 10000 * t + h := fnv.New32a() + h.Write([]byte("dict" + str)) + + idStr := fmt.Sprintf("%d%d", prefix, int64(h.Sum32())) + id, _ := strconv.ParseInt(idStr, 10, 64) + return id +} diff --git a/server/internal/library/dict/dict_option.go b/server/internal/library/dict/dict_option.go new file mode 100644 index 0000000..a628e26 --- /dev/null +++ b/server/internal/library/dict/dict_option.go @@ -0,0 +1,181 @@ +// Package dict +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package dict + +import ( + "hash/fnv" + "hotgo/internal/model" + + "github.com/gogf/gf/v2/util/gconv" +) + +// GenDefaultOption 生成默认表格回显样式 +func GenDefaultOption(key interface{}, label string, extra ...any) *model.Option { + e := interface{}(nil) + if len(extra) > 0 { + e = extra[0] + } + return &model.Option{ + Key: key, + Label: label, + Value: key, + ListClass: "default", + Extra: e, + } +} + +func GenSuccessOption(key interface{}, label string, extra ...any) *model.Option { + e := interface{}(nil) + if len(extra) > 0 { + e = extra[0] + } + return &model.Option{ + Key: key, + Label: label, + Value: key, + ListClass: "success", + Extra: e, + } +} + +func GenWarningOption(key interface{}, label string, extra ...any) *model.Option { + e := interface{}(nil) + if len(extra) > 0 { + e = extra[0] + } + return &model.Option{ + Key: key, + Label: label, + Value: key, + ListClass: "warning", + Extra: e, + } +} + +func GenErrorOption(key interface{}, label string, extra ...any) *model.Option { + e := interface{}(nil) + if len(extra) > 0 { + e = extra[0] + } + return &model.Option{ + Key: key, + Label: label, + Value: key, + ListClass: "error", + Extra: e, + } +} + +func GenInfoOption(key interface{}, label string, extra ...any) *model.Option { + e := interface{}(nil) + if len(extra) > 0 { + e = extra[0] + } + return &model.Option{ + Key: key, + Label: label, + Value: key, + ListClass: "info", + Extra: e, + } +} + +func GenPrimaryOption(key interface{}, label string, extra ...any) *model.Option { + e := interface{}(nil) + if len(extra) > 0 { + e = extra[0] + } + return &model.Option{ + Key: key, + Label: label, + Value: key, + ListClass: "primary", + Extra: e, + } +} + +// GenCustomOption 生成自定义表格回显样式 +func GenCustomOption(key interface{}, label string, custom string, extra ...any) *model.Option { + e := interface{}(nil) + if len(extra) > 0 { + e = extra[0] + } + return &model.Option{ + Key: key, + Label: label, + Value: key, + ListClass: custom, + Extra: e, + } +} + +// GenHashOption 根据不同label以hash算法生成表格回显样式 +func GenHashOption(key interface{}, label string, extra ...any) *model.Option { + e := interface{}(nil) + if len(extra) > 0 { + e = extra[0] + } + strings := []string{"default", "primary", "info", "success", "warning", "error"} + hash := fnv.New32() + + tag := "default" + if _, err := hash.Write(gconv.Bytes(label)); err == nil { + index := uint32(hash.Sum32()) % uint32(len(strings)) + if index < uint32(len(strings)) { + tag = strings[index] + } + } + return &model.Option{ + Key: key, + Label: label, + Value: key, + ListClass: tag, + Extra: e, + } +} + +// GetOption 通过key找到label +func GetOption(ses []*model.Option, key interface{}) *model.Option { + for _, v := range ses { + if gconv.String(v.Key) == gconv.String(key) { + return v + } + } + return nil +} + +// GetOptionLabel 通过key找到label +func GetOptionLabel(ses []*model.Option, key interface{}) string { + for _, v := range ses { + if gconv.String(v.Key) == gconv.String(key) { + return v.Label + } + } + return `` +} + +// HasOptionKey 是否存在指定key +func HasOptionKey(ses []*model.Option, key interface{}) bool { + for _, v := range ses { + if gconv.String(v.Key) == gconv.String(key) { + return true + } + } + return false +} + +// UniqueOption 去重选项 +func UniqueOption(src []*model.Option) (dst []*model.Option) { + temp := map[string]struct{}{} + for _, item := range src { + key := gconv.String(item.Key) + if _, ok := temp[key]; !ok { + temp[key] = struct{}{} + dst = append(dst, item) + } + } + return dst +} diff --git a/server/internal/library/dict/dict_register_enums.go b/server/internal/library/dict/dict_register_enums.go new file mode 100644 index 0000000..434698b --- /dev/null +++ b/server/internal/library/dict/dict_register_enums.go @@ -0,0 +1,70 @@ +// Package dict +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package dict + +import ( + "fmt" + "hotgo/internal/model" + "sync" +) + +type EnumsOption struct { + Id int64 // 字典ID,由系统自动生成 + Key string // 字典选项key + Label string // 字典选项标签名称 + Opts []*model.Option // 数据选项 +} + +var ( + enumsOptions = make(map[string]*EnumsOption) + eLock sync.Mutex +) + +// GetAllEnums 获取所有枚举字典 +func GetAllEnums() map[string]*EnumsOption { + return enumsOptions +} + +// RegisterEnums 注册枚举字典选项 +func RegisterEnums(key, label string, opts []*model.Option) { + eLock.Lock() + defer eLock.Unlock() + + if len(key) == 0 { + panic("字典key不能为空") + } + + if _, ok := enumsOptions[key]; ok { + panic(fmt.Sprintf("重复注册枚举字典选项:%v", key)) + } + + for _, v := range opts { + v.Type = key + } + enumsOptions[key] = &EnumsOption{ + Id: GenIdHash(key, EnumsId), + Key: key, + Label: label, + Opts: opts, + } +} + +// SaveEnums 更新枚举字典选项 +func SaveEnums(key, label string, opts []*model.Option) { + eLock.Lock() + defer eLock.Unlock() + delete(enumsOptions, key) + RegisterEnums(key, label, opts) +} + +// GetEnumsOptions 获取指定枚举字典的数据选项 +func GetEnumsOptions(key string) []*model.Option { + enums, ok := enumsOptions[key] + if !ok { + return nil + } + return enums.Opts +} diff --git a/server/internal/library/dict/dict_register_func.go b/server/internal/library/dict/dict_register_func.go new file mode 100644 index 0000000..cf75dcd --- /dev/null +++ b/server/internal/library/dict/dict_register_func.go @@ -0,0 +1,129 @@ +// Package dict +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package dict + +import ( + "context" + "fmt" + "hotgo/internal/model" + "sync" +) + +// FuncDict 方法字典,实现本接口即可使用内置方法字典 +type FuncDict func(ctx context.Context) (res []*model.Option, err error) + +type FuncOption struct { + Id int64 // 字典ID,由系统自动生成 + Key string // 字典选项key + Label string // 字典选项标签名称 + Fun FuncDict // 字典方法 + Cache bool // 是否缓存数据选项 + Opts []*model.Option // 缓存的数据选项 + sync.Mutex +} + +var ( + funcOptions = make(map[string]*FuncOption) + fLock sync.Mutex +) + +// GetAllFunc 获取所有方法字典 +func GetAllFunc() map[string]*FuncOption { + return funcOptions +} + +// RegisterFunc 注册方法字典选项 +func RegisterFunc(key, label string, fun FuncDict, cache ...bool) { + fLock.Lock() + defer fLock.Unlock() + + if len(key) == 0 { + panic("字典key不能为空") + } + + if _, ok := funcOptions[key]; ok { + panic(fmt.Sprintf("重复注册方法选项:%v", key)) + } + + isCache := false + if len(cache) > 0 { + isCache = cache[0] + } + + funcOptions[key] = &FuncOption{ + Id: GenIdHash(key, FuncId), + Key: key, + Label: label, + Fun: fun, + Cache: isCache, + Opts: nil, + } +} + +// SaveFunc 更新方法字典选项 +func SaveFunc(key, label string, fun FuncDict, cache ...bool) { + fLock.Lock() + defer fLock.Unlock() + delete(funcOptions, key) + RegisterFunc(key, label, fun, cache...) +} + +// ClearFuncCache 清理指定方法缓存选项 +func ClearFuncCache(key string) (err error) { + fun, ok := funcOptions[key] + if !ok { + err = NotExistKeyError + return + } + + fun.Lock() + defer fun.Unlock() + + if fun.Opts != nil { + fun.Opts = nil + } + return +} + +// GetFuncOptions 获取指定方法字典的数据选项 +func GetFuncOptions(ctx context.Context, key string) (res []*model.Option, err error) { + fun, ok := funcOptions[key] + if !ok { + err = NotExistKeyError + return + } + return LoadFuncOptions(ctx, fun) +} + +// LoadFuncOptions 加载指定方法字典的数据选项 +func LoadFuncOptions(ctx context.Context, fun *FuncOption) (res []*model.Option, err error) { + if fun.Cache && fun.Opts != nil { + res = fun.Opts + return + } + + fun.Lock() + defer fun.Unlock() + + if fun.Cache && fun.Opts != nil { + res = fun.Opts + return + } + + res, err = fun.Fun(ctx) + if err != nil { + return nil, err + } + + for k := range res { + res[k].Type = fun.Key + } + + if fun.Cache { + fun.Opts = res + } + return +} diff --git a/server/internal/library/ems/ems.go b/server/internal/library/ems/ems.go new file mode 100644 index 0000000..e26fd45 --- /dev/null +++ b/server/internal/library/ems/ems.go @@ -0,0 +1,50 @@ +// Package ems +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package ems + +import ( + "github.com/gogf/gf/v2/errors/gerror" + "hotgo/internal/model" + "hotgo/utility/validate" + "net/smtp" + "strings" +) + +// Send 发送邮件入口 +func Send(config *model.EmailConfig, to string, subject string, body string) error { + return sendToMail(config, to, subject, body, "html") +} + +func sendToMail(config *model.EmailConfig, to, subject, body, mailType string) error { + if config == nil { + return gerror.New("邮件配置不能为空") + } + + var ( + contentType string + auth = smtp.PlainAuth("", config.User, config.Password, config.Host) + sendTo = strings.Split(to, ";") + ) + + if len(sendTo) == 0 { + return gerror.New("收件人不能为空") + } + + for _, em := range sendTo { + if !validate.IsEmail(em) { + return gerror.Newf("邮件格式不正确,请检查:%v", em) + } + } + + if mailType == "html" { + contentType = "Content-Type: text/" + mailType + "; charset=UTF-8" + } else { + contentType = "Content-Type: text/plain" + "; charset=UTF-8" + } + + msg := []byte("To: " + to + "\r\nFrom: " + config.SendName + "<" + config.User + ">" + "\r\nSubject: " + subject + "\r\n" + contentType + "\r\n\r\n" + body) + return smtp.SendMail(config.Addr, auth, config.User, sendTo, msg) +} diff --git a/server/internal/library/hggen/hggen.go b/server/internal/library/hggen/hggen.go new file mode 100644 index 0000000..cb23db3 --- /dev/null +++ b/server/internal/library/hggen/hggen.go @@ -0,0 +1,290 @@ +// Package hggen +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package hggen + +import ( + _ "hotgo/internal/library/hggen/internal/cmd/gendao" + "hotgo/internal/library/hggen/internal/utility/utils" + _ "unsafe" + + "github.com/gogf/gf/v2/os/gfile" + + "context" + "hotgo/internal/consts" + "hotgo/internal/library/addons" + "hotgo/internal/library/hggen/internal/cmd" + "hotgo/internal/library/hggen/internal/cmd/gendao" + "hotgo/internal/library/hggen/internal/cmd/genservice" + "hotgo/internal/library/hggen/views" + "hotgo/internal/model" + "hotgo/internal/model/input/form" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" + "sort" + + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/util/gconv" +) + +//go:linkname doGenDaoForArray hotgo/internal/library/hggen/internal/cmd/gendao.doGenDaoForArray +func doGenDaoForArray(ctx context.Context, index int, in gendao.CGenDaoInput) + +// Dao 生成数据库实体 +func Dao(ctx context.Context) (err error) { + // 在执行gf gen dao时,先将生成文件放在临时路径,生成完成后再拷贝到项目 + // 目的是希望减少触发gf热编译的几率,防止热编译运行时代码生成流程未结束被自动重启打断 + // gf gen dao 的执行时长主要取决于需要生成数据库表的数量,表越多速度越慢 + tempPathPrefix := views.GetTempGeneratePath(ctx) + "/dao" + + for _, v := range daoConfig { + inp := defaultGenDaoInput + if err = gconv.Scan(v, &inp); err != nil { + return + } + oldPath := inp.Path + inp.ImportPrefix = utils.GetImportPath(inp.Path) + inp.Path = tempPathPrefix + "/" + inp.Path + + if err = gfile.RemoveAll(inp.Path); err != nil { + err = gerror.Newf("清理临时生成目录失败:%v", err) + return err + } + + if err = gfile.Mkdir(inp.Path); err != nil { + err = gerror.Newf("创建临时生成目录失败:%v", err) + return err + } + + doGenDaoForArray(ctx, -1, inp) + + if err = gfile.CopyDir(inp.Path, gfile.Pwd()+"/"+oldPath); err != nil { + err = gerror.Newf("拷贝生成文件失败:%v", err) + return err + } + } + return +} + +// Service 生成业务接口 +func Service(ctx context.Context) (err error) { + return ServiceWithCfg(ctx, GetServiceConfig()) +} + +// ServiceWithCfg 生成业务接口 +func ServiceWithCfg(ctx context.Context, cfg ...genservice.CGenServiceInput) (err error) { + c := GetServiceConfig() + if len(cfg) > 0 { + c = cfg[0] + } + _, err = cmd.Gen.Service(ctx, c) + return +} + +// TableColumns 获取指定表生成字段列表 +func TableColumns(ctx context.Context, in *sysin.GenCodesColumnListInp) (fields []*sysin.GenCodesColumnListModel, err error) { + return views.DoTableColumns(ctx, in, GetDaoConfig(in.Name)) +} + +func TableSelects(ctx context.Context, in *sysin.GenCodesSelectsInp) (res *sysin.GenCodesSelectsModel, err error) { + res = new(sysin.GenCodesSelectsModel) + res.GenType, err = GenTypeSelect(ctx) + if err != nil { + return + } + + res.Db = DbSelect(ctx) + + for k, v := range consts.GenCodesStatusNameMap { + res.Status = append(res.Status, &form.Select{ + Value: k, + Name: v, + Label: v, + }) + } + sort.Sort(res.Status) + + for k, v := range consts.GenCodesJoinNameMap { + res.LinkMode = append(res.LinkMode, &form.Select{ + Value: k, + Name: v, + Label: v, + }) + } + sort.Sort(res.LinkMode) + + for k, v := range consts.GenCodesBuildMethNameMap { + res.BuildMeth = append(res.BuildMeth, &form.Select{ + Value: k, + Name: v, + Label: v, + }) + } + sort.Sort(res.BuildMeth) + + for _, v := range views.FormModes { + res.FormMode = append(res.FormMode, &form.Select{ + Value: v, + Name: views.FormModeMap[v], + Label: views.FormModeMap[v], + }) + } + sort.Sort(res.FormMode) + + for k, v := range views.FormRoleMap { + res.FormRole = append(res.FormRole, &form.Select{ + Value: k, + Name: v, + Label: v, + }) + } + sort.Sort(res.FormRole) + + dictMode, err := service.SysDictType().TreeSelect(ctx, &sysin.DictTreeSelectInp{}) + if err != nil { + return + } + res.DictMode = dictMode + + for _, v := range views.WhereModes { + res.WhereMode = append(res.WhereMode, &form.Select{ + Value: v, + Name: v, + Label: v, + }) + } + for _, v := range views.TableAligns { + res.TableAlign = append(res.TableAlign, &form.Select{ + Value: v, + Name: views.TableAlignMap[v], + Label: views.TableAlignMap[v], + }) + } + + res.Addons = addons.ModuleSelect() + res.TreeStyleType = consts.GenCodesTreeStyleTypeOptions + return +} + +// GenTypeSelect 获取生成类型选项 +func GenTypeSelect(ctx context.Context) (res sysin.GenTypeSelects, err error) { + for k, v := range consts.GenCodesTypeNameMap { + row := &sysin.GenTypeSelect{ + Value: k, + Name: v, + Label: v, + Templates: make(sysin.GenTemplateSelects, 0), + } + + km := k + if km == consts.GenCodesTypeTree { + km = consts.GenCodesTypeCurd + } + confName, ok := consts.GenCodesTypeConfMap[km] + if ok { + var temps []*model.GenerateAppCrudTemplate + err = g.Cfg().MustGet(ctx, "hggen.application."+confName+".templates").Scan(&temps) + if err != nil { + return + } + if len(temps) > 0 { + for index, temp := range temps { + row.Templates = append(row.Templates, &sysin.GenTemplateSelect{ + Value: index, + Label: temp.Group, + Name: temp.Group, + IsAddon: temp.IsAddon, + }) + } + sort.Sort(row.Templates) + } + } + + res = append(res, row) + } + sort.Sort(res) + return +} + +// DbSelect db选项 +func DbSelect(ctx context.Context) (res form.Selects) { + dbs := g.Cfg().MustGet(ctx, "hggen.selectDbs") + if len(dbs.Strings()) == 0 { + res = make(form.Selects, 0) + return res + } + + for _, v := range dbs.Strings() { + res = append(res, &form.Select{ + Value: v, + Label: v, + Name: v, + }) + } + return res +} + +// Preview 生成预览 +func Preview(ctx context.Context, in *sysin.GenCodesPreviewInp) (res *sysin.GenCodesPreviewModel, err error) { + genConfig, err := service.SysConfig().GetLoadGenerate(ctx) + if err != nil { + return nil, err + } + + switch in.GenType { + case consts.GenCodesTypeCurd, consts.GenCodesTypeTree: + return views.Curd.DoPreview(ctx, &views.CurdPreviewInput{ + In: in, + DaoConfig: GetDaoConfig(in.DbName), + Config: genConfig, + }) + case consts.GenCodesTypeQueue: + err = gerror.Newf("生成类型开发中!") + return + default: + err = gerror.Newf("生成类型暂不支持!") + return + } +} + +// Build 提交生成 +func Build(ctx context.Context, in *sysin.GenCodesBuildInp) (err error) { + genConfig, err := service.SysConfig().GetLoadGenerate(ctx) + if err != nil { + return err + } + + switch in.GenType { + case consts.GenCodesTypeCurd, consts.GenCodesTypeTree: + pin := &sysin.GenCodesPreviewInp{SysGenCodes: in.SysGenCodes} + return views.Curd.DoBuild(ctx, &views.CurdBuildInput{ + PreviewIn: &views.CurdPreviewInput{ + In: pin, + DaoConfig: GetDaoConfig(in.DbName), + Config: genConfig, + }, + BeforeEvent: views.CurdBuildEvent{"runDao": Dao}, + AfterEvent: views.CurdBuildEvent{"runService": func(ctx context.Context) (err error) { + cfg := GetServiceConfig() + + // 插件模块,切换到插件下运行gen service + if genConfig.Application.Crud.Templates[pin.GenTemplate].IsAddon { + // 依然使用配置中的参数,只是将生成路径指向插件模块路径 + cfg.SrcFolder = "addons/" + pin.AddonName + "/logic" + cfg.DstFolder = "addons/" + pin.AddonName + "/service" + } + err = ServiceWithCfg(ctx, cfg) + return + }}, + }) + case consts.GenCodesTypeQueue: + err = gerror.Newf("生成类型开发中!") + return + default: + err = gerror.Newf("生成类型暂不支持!") + return + } +} diff --git a/server/internal/library/hggen/init.go b/server/internal/library/hggen/init.go new file mode 100644 index 0000000..7ff306c --- /dev/null +++ b/server/internal/library/hggen/init.go @@ -0,0 +1,130 @@ +// Package hggen +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package hggen + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/util/gconv" + "gopkg.in/yaml.v3" + "hotgo/internal/library/hggen/internal/cmd/gendao" + "hotgo/internal/library/hggen/internal/cmd/genservice" +) + +const ( + cliFolderName = `hack/config.yaml` + RequiredErrorTag = `the cli configuration file must be configured %s` +) + +var ( + config g.Map + daoConfig []interface{} + serviceConfig g.Map + + // 生成service默认参数,请不要直接修改以下配置,如需调整请到/hack/config.yaml,可参考:https://goframe.org/pages/viewpage.action?pageId=49770772 + defaultGenServiceInput = genservice.CGenServiceInput{ + SrcFolder: "internal/logic", + DstFolder: "internal/service", + DstFileNameCase: "Snake", + StPattern: `s([A-Z]\w+)`, + Clear: false, + } + + // 生成dao默认参数,请不要直接修改以下配置,如需调整请到/hack/config.yaml,可参考:https://goframe.org/pages/viewpage.action?pageId=3673173 + defaultGenDaoInput = gendao.CGenDaoInput{ + Path: "internal", + Group: "default", + JsonCase: "CamelLower", + DaoPath: "dao", + DoPath: "model/do", + EntityPath: "model/entity", + StdTime: false, + WithTime: false, + GJsonSupport: false, + OverwriteDao: false, + DescriptionTag: true, + NoJsonTag: false, + NoModelComment: false, + Clear: false, + } +) + +func GetServiceConfig() genservice.CGenServiceInput { + inp := defaultGenServiceInput + _ = gconv.Scan(serviceConfig, &inp) + return inp +} + +func GetDaoConfig(group string) gendao.CGenDaoInput { + find := func(group string) g.Map { + for _, v := range daoConfig { + if v.(g.Map)["group"].(string) == group { + return v.(g.Map) + } + } + return nil + } + + v := find(group) + inp := defaultGenDaoInput + if v != nil { + if err := gconv.Scan(v, &inp); err != nil { + panic(err) + } + } + return inp +} + +func InIt(ctx context.Context) { + path, err := gfile.Search(cliFolderName) + if err != nil { + g.Log().Fatalf(ctx, "get cli configuration file:%v, err:%+v", cliFolderName, err) + } + if path == "" { + g.Log().Fatalf(ctx, "get cli configuration file:%v fail", cliFolderName) + } + if config == nil { + config = make(g.Map) + } + err = yaml.Unmarshal(gfile.GetBytes(path), &config) + if err != nil { + g.Log().Fatalf(ctx, "load cli configuration file:%v, yaml err:%+v", cliFolderName, err) + } + loadConfig(ctx) +} + +func loadConfig(ctx context.Context) { + if _, ok := config["gfcli"]; !ok { + g.Log().Fatalf(ctx, RequiredErrorTag, "gfcli") + } + + if _, ok := config["gfcli"].(g.Map)["gen"]; !ok { + g.Log().Fatalf(ctx, RequiredErrorTag, "gfcli.gen") + } + + dao, ok := config["gfcli"].(g.Map)["gen"].(map[string]interface{})["dao"] + if !ok { + g.Log().Fatalf(ctx, RequiredErrorTag, "gfcli.gen.dao") + } + daoConf, ok := dao.([]interface{}) + if !ok { + g.Log().Fatalf(ctx, RequiredErrorTag, "gfcli.gen.dao format error") + } + daoConfig = daoConf + for _, v := range daoConfig { + if _, ok := v.(g.Map)["group"].(string); !ok { + g.Log().Fatalf(ctx, "group must be configured in %s: `gfcli.gen.dao` and must be the same as the database group", cliFolderName) + } + } + + if serviceConf, ok := config["gfcli"].(g.Map)["gen"].(map[string]interface{})["service"]; ok { + if serviceConfig == nil { + serviceConfig = make(g.Map) + } + serviceConfig = serviceConf.(g.Map) + } +} diff --git a/server/internal/library/hggen/internal/cmd/cmd.go b/server/internal/library/hggen/internal/cmd/cmd.go new file mode 100644 index 0000000..d3668ef --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd.go @@ -0,0 +1,79 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +// Package cmd provides the management of CLI commands for `gf` tool. +package cmd + +import ( + "context" + "strings" + + "github.com/gogf/gf/v2" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gcmd" + "github.com/gogf/gf/v2/util/gtag" + + "hotgo/internal/library/hggen/internal/service" + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +// GF is the management object for `gf` command line tool. +var GF = cGF{} + +type cGF struct { + g.Meta `name:"gf" ad:"{cGFAd}"` +} + +const ( + cGFAd = ` +ADDITIONAL + Use "gf COMMAND -h" for details about a command. +` +) + +func init() { + gtag.Sets(g.MapStrStr{ + `cGFAd`: cGFAd, + }) +} + +type cGFInput struct { + g.Meta `name:"gf"` + Yes bool `short:"y" name:"yes" brief:"all yes for all command without prompt ask" orphan:"true"` + Version bool `short:"v" name:"version" brief:"show version information of current binary" orphan:"true"` + Debug bool `short:"d" name:"debug" brief:"show internal detailed debugging information" orphan:"true"` +} + +type cGFOutput struct{} + +func (c cGF) Index(ctx context.Context, in cGFInput) (out *cGFOutput, err error) { + // Version. + if in.Version { + _, err = Version.Index(ctx, cVersionInput{}) + return + } + + answer := "n" + // No argument or option, do installation checks. + if data, isInstalled := service.Install.IsInstalled(); !isInstalled { + mlog.Print("hi, it seems it's the first time you installing gf cli.") + answer = gcmd.Scanf("do you want to install gf(%s) binary to your system? [y/n]: ", gf.VERSION) + } else if !data.IsSelf { + mlog.Print("hi, you have installed gf cli.") + answer = gcmd.Scanf("do you want to install gf(%s) binary to your system? [y/n]: ", gf.VERSION) + } + if strings.EqualFold(answer, "y") { + if err = service.Install.Run(ctx); err != nil { + return + } + gcmd.Scan("press `Enter` to exit...") + return + } + + // Print help content. + gcmd.CommandFromCtx(ctx).Print() + return +} diff --git a/server/internal/library/hggen/internal/cmd/cmd_build.go b/server/internal/library/hggen/internal/cmd/cmd_build.go new file mode 100644 index 0000000..7a7e245 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_build.go @@ -0,0 +1,399 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "context" + "encoding/json" + "fmt" + "os" + "regexp" + "runtime" + "strings" + + "github.com/gogf/gf/v2/encoding/gbase64" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gbuild" + "github.com/gogf/gf/v2/os/gcmd" + "github.com/gogf/gf/v2/os/genv" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gproc" + "github.com/gogf/gf/v2/os/gtime" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gtag" + + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +var Build = cBuild{ + nodeNameInConfigFile: "gfcli.build", + packedGoFileName: "internal/packed/build_pack_data.go", +} + +type cBuild struct { + g.Meta `name:"build" brief:"{cBuildBrief}" dc:"{cBuildDc}" eg:"{cBuildEg}" ad:"{cBuildAd}"` + nodeNameInConfigFile string // nodeNameInConfigFile is the node name for compiler configurations in configuration file. + packedGoFileName string // packedGoFileName specifies the file name for packing common folders into one single go file. +} + +const ( + cBuildDefaultFile = "main.go" + cBuildBrief = `cross-building go project for lots of platforms` + cBuildEg = ` +gf build main.go +gf build main.go --ps public,template +gf build main.go --cgo +gf build main.go -m none +gf build main.go -n my-app -a all -s all +gf build main.go -n my-app -a amd64,386 -s linux -p . +gf build main.go -n my-app -v 1.0 -a amd64,386 -s linux,windows,darwin -p ./docker/bin +` + cBuildDc = ` +The "build" command is most commonly used command, which is designed as a powerful wrapper for +"go build" command for convenience cross-compiling usage. +It provides much more features for building binary: +1. Cross-Compiling for many platforms and architectures. +2. Configuration file support for compiling. +3. Build-In Variables. +` + cBuildAd = ` +PLATFORMS + aix ppc64 + android 386,amd64,arm,arm64 + darwin amd64,arm64 + dragonfly amd64 + freebsd 386,amd64,arm + illumos amd64 + ios arm64 + js wasm + linux 386,amd64,arm,arm64,loong64,mips,mipsle,mips64,mips64le,ppc64,ppc64le,riscv64,s390x + netbsd 386,amd64,arm + openbsd 386,amd64,arm,arm64 + plan9 386,amd64,arm + solaris amd64 + wasip1 wasm + windows 386,amd64,arm,arm64 +` + // https://golang.google.cn/doc/install/source + cBuildPlatforms = ` +aix ppc64 +android 386 +android amd64 +android arm +android arm64 +darwin amd64 +darwin arm64 +dragonfly amd64 +freebsd 386 +freebsd amd64 +freebsd arm +illumos amd64 +ios arm64 +js wasm +linux 386 +linux amd64 +linux arm +linux arm64 +linux loong64 +linux mips +linux mipsle +linux mips64 +linux mips64le +linux ppc64 +linux ppc64le +linux riscv64 +linux s390x +netbsd 386 +netbsd amd64 +netbsd arm +openbsd 386 +openbsd amd64 +openbsd arm +openbsd arm64 +plan9 386 +plan9 amd64 +plan9 arm +solaris amd64 +wasip1 wasm +windows 386 +windows amd64 +windows arm +windows arm64 +` +) + +func init() { + gtag.Sets(g.MapStrStr{ + `cBuildBrief`: cBuildBrief, + `cBuildDc`: cBuildDc, + `cBuildEg`: cBuildEg, + `cBuildAd`: cBuildAd, + }) +} + +type cBuildInput struct { + g.Meta `name:"build" config:"gfcli.build"` + File string `name:"FILE" arg:"true" brief:"building file path"` + Name string `short:"n" name:"name" brief:"output binary name"` + Version string `short:"v" name:"version" brief:"output binary version"` + Arch string `short:"a" name:"arch" brief:"output binary architecture, multiple arch separated with ','"` + System string `short:"s" name:"system" brief:"output binary system, multiple os separated with ','"` + Output string `short:"o" name:"output" brief:"output binary path, used when building single binary file"` + Path string `short:"p" name:"path" brief:"output binary directory path, default is '.'" d:"."` + Extra string `short:"e" name:"extra" brief:"extra custom \"go build\" options"` + Mod string `short:"m" name:"mod" brief:"like \"-mod\" option of \"go build\", use \"-m none\" to disable go module"` + Cgo bool `short:"c" name:"cgo" brief:"enable or disable cgo feature, it's disabled in default" orphan:"true"` + VarMap g.Map `short:"r" name:"varMap" brief:"custom built embedded variable into binary"` + PackSrc string `short:"ps" name:"packSrc" brief:"pack one or more folders into one go file before building"` + PackDst string `short:"pd" name:"packDst" brief:"temporary go file path for pack, this go file will be automatically removed after built" d:"internal/packed/build_pack_data.go"` + ExitWhenError bool `short:"ew" name:"exitWhenError" brief:"exit building when any error occurs, specially for multiple arch and system buildings. default is false" orphan:"true"` + DumpENV bool `short:"de" name:"dumpEnv" brief:"dump current go build environment before building binary" orphan:"true"` +} + +type cBuildOutput struct{} + +func (c cBuild) Index(ctx context.Context, in cBuildInput) (out *cBuildOutput, err error) { + mlog.SetHeaderPrint(true) + + mlog.Debugf(`build command input: %+v`, in) + // Necessary check. + if gproc.SearchBinary("go") == "" { + mlog.Fatalf(`command "go" not found in your environment, please install golang first to proceed this command`) + } + + var ( + parser = gcmd.ParserFromCtx(ctx) + file = in.File + ) + if file == "" { + file = parser.GetArg(2).String() + // Check and use the main.go file. + if gfile.Exists(cBuildDefaultFile) { + file = cBuildDefaultFile + } else { + mlog.Fatal("build file path is empty or main.go not found in current working directory") + } + } + if in.Name == "" { + in.Name = gfile.Name(file) + } + if len(in.Name) < 1 || in.Name == "*" { + mlog.Fatal("name cannot be empty") + } + if in.Mod != "" && in.Mod != "none" { + mlog.Debugf(`mod is %s`, in.Mod) + if in.Extra == "" { + in.Extra = fmt.Sprintf(`-mod=%s`, in.Mod) + } else { + in.Extra = fmt.Sprintf(`-mod=%s %s`, in.Mod, in.Extra) + } + } + if in.Extra != "" { + in.Extra += " " + } + var ( + customSystems = gstr.SplitAndTrim(in.System, ",") + customArches = gstr.SplitAndTrim(in.Arch, ",") + ) + if len(in.Version) > 0 { + in.Path += "/" + in.Version + } + // System and arch checks. + var ( + spaceRegex = regexp.MustCompile(`\s+`) + platformMap = make(map[string]map[string]bool) + ) + for _, line := range strings.Split(strings.TrimSpace(cBuildPlatforms), "\n") { + line = gstr.Trim(line) + line = spaceRegex.ReplaceAllString(line, " ") + var ( + array = strings.Split(line, " ") + system = strings.TrimSpace(array[0]) + arch = strings.TrimSpace(array[1]) + ) + if platformMap[system] == nil { + platformMap[system] = make(map[string]bool) + } + platformMap[system][arch] = true + } + // Auto packing. + if in.PackSrc != "" { + if in.PackDst == "" { + mlog.Fatal(`parameter "packDst" should not be empty when "packSrc" is used`) + } + if gfile.Exists(in.PackDst) && !gfile.IsFile(in.PackDst) { + mlog.Fatalf(`parameter "packDst" path "%s" should be type of file not directory`, in.PackDst) + } + if !gfile.Exists(in.PackDst) { + // Remove the go file that is automatically packed resource. + defer func() { + _ = gfile.RemoveFile(in.PackDst) + mlog.Printf(`remove the automatically generated resource go file: %s`, in.PackDst) + }() + } + // remove black space in separator. + in.PackSrc, _ = gregex.ReplaceString(`,\s+`, `,`, in.PackSrc) + packCmd := fmt.Sprintf(`gf pack %s %s --keepPath=true`, in.PackSrc, in.PackDst) + mlog.Print(packCmd) + gproc.MustShellRun(ctx, packCmd) + } + + // Injected information by building flags. + ldFlags := fmt.Sprintf( + `-X 'github.com/gogf/gf/v2/os/gbuild.builtInVarStr=%v'`, + c.getBuildInVarStr(ctx, in), + ) + + // start building + mlog.Print("start building...") + if in.Cgo { + genv.MustSet("CGO_ENABLED", "1") + } else { + genv.MustSet("CGO_ENABLED", "0") + } + // print used go env + if in.DumpENV { + _, _ = Env.Index(ctx, cEnvInput{}) + } + for system, item := range platformMap { + if len(customSystems) > 0 && customSystems[0] != "all" && !gstr.InArray(customSystems, system) { + continue + } + for arch := range item { + if len(customArches) > 0 && customArches[0] != "all" && !gstr.InArray(customArches, arch) { + continue + } + if len(customSystems) == 0 && len(customArches) == 0 { + // Single binary building, output the binary to current working folder. + // For example: + // `gf build` + // `gf build -o main.exe` + c.doBinaryBuild( + ctx, file, + in.Output, in.Path, + runtime.GOOS, runtime.GOARCH, in.Name, ldFlags, in.Extra, + in.ExitWhenError, + true, + ) + } else { + c.doBinaryBuild( + ctx, file, + in.Output, in.Path, + system, arch, in.Name, ldFlags, in.Extra, + in.ExitWhenError, + false, + ) + } + // single binary building. + if len(customSystems) == 0 && len(customArches) == 0 { + goto buildDone + } + } + } + +buildDone: + mlog.Print("done!") + return +} + +func (c cBuild) doBinaryBuild( + ctx context.Context, + filePath string, + outputPath, dirPath string, + system, arch, name, ldFlags, extra string, + exitWhenError bool, + singleBuild bool, +) { + var ( + cmd string + ext string + ) + // Cross-building, output the compiled binary to specified path. + if system == "windows" { + ext = ".exe" + } + genv.MustSet("GOOS", system) + genv.MustSet("GOARCH", arch) + + if outputPath != "" { + outputPath = "-o " + outputPath + } else { + if dirPath == "" { + dirPath = "." + } else { + dirPath = gstr.TrimRight(dirPath, "/") + } + if singleBuild { + outputPath = fmt.Sprintf( + "-o %s/%s%s", + dirPath, name, ext, + ) + } else { + outputPath = fmt.Sprintf( + "-o %s/%s/%s%s", + dirPath, system+"_"+arch, name, ext, + ) + } + } + cmd = fmt.Sprintf( + `go build %s -ldflags "%s" %s%s`, + outputPath, ldFlags, extra, filePath, + ) + mlog.Debug(fmt.Sprintf("build for GOOS=%s GOARCH=%s", system, arch)) + mlog.Debug(cmd) + // It's not necessary printing the complete command string, filtering ldFlags. + cmdShow, _ := gregex.ReplaceString(`\s+(-ldflags ".+?")\s+`, " ", cmd) + mlog.Print(cmdShow) + if result, err := gproc.ShellExec(ctx, cmd); err != nil { + mlog.Printf( + "failed to build, os:%s, arch:%s, error:\n%s\n\n%s\n", + system, arch, gstr.Trim(result), + `you may use command option "--debug" to enable debug info and check the details`, + ) + if exitWhenError { + os.Exit(1) + } + } else { + mlog.Debug(gstr.Trim(result)) + } +} + +// getBuildInVarStr retrieves and returns the custom build-in variables in configuration +// file as json. +func (c cBuild) getBuildInVarStr(ctx context.Context, in cBuildInput) string { + buildInVarMap := in.VarMap + if buildInVarMap == nil { + buildInVarMap = make(g.Map) + } + buildInVarMap[gbuild.BuiltGit] = c.getGitCommit(ctx) + buildInVarMap[gbuild.BuiltTime] = gtime.Now().String() + buildInVarMap[gbuild.BuiltVersion] = in.Version + b, err := json.Marshal(buildInVarMap) + if err != nil { + mlog.Fatal(err) + } + return gbase64.EncodeToString(b) +} + +// getGitCommit retrieves and returns the latest git commit hash string if present. +func (c cBuild) getGitCommit(ctx context.Context) string { + if gproc.SearchBinary("git") == "" { + return "" + } + var ( + cmd = `git log -1 --format="%cd %H" --date=format:"%Y-%m-%d %H:%M:%S"` + s, _ = gproc.ShellExec(ctx, cmd) + ) + mlog.Debug(cmd) + if s != "" { + if !gstr.Contains(s, "fatal") { + return gstr.Trim(s) + } + } + return "" +} diff --git a/server/internal/library/hggen/internal/cmd/cmd_doc.go b/server/internal/library/hggen/internal/cmd/cmd_doc.go new file mode 100644 index 0000000..163732d --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_doc.go @@ -0,0 +1,184 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "context" + "fmt" + "io" + "net/http" + "os" + "path" + "path/filepath" + "time" + + "github.com/gogf/gf/v2/encoding/gcompress" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +const ( + GitName = "gf-site" + BranchName = "gh-pages" + + SiteFileName = GitName + "-" + BranchName + // DocURL is the download address of the document + DocURL = "https://github.com/gogf/" + GitName + "/archive/refs/heads/" + BranchName + ".zip" +) + +var ( + Doc = cDoc{} +) + +type cDoc struct { + g.Meta `name:"doc" brief:"download https://pages.goframe.org/ to run locally"` +} + +type cDocInput struct { + g.Meta `name:"doc" config:"gfcli.doc"` + Path string `short:"p" name:"path" brief:"download docs directory path, default is \"%temp%/goframe\""` + Port int `short:"o" name:"port" brief:"http server port, default is 8080" d:"8080"` + Update bool `short:"u" name:"update" brief:"clean docs directory and update docs"` + Clean bool `short:"c" name:"clean" brief:"clean docs directory"` + Proxy string `short:"x" name:"proxy" brief:"proxy for download, such as https://hub.gitmirror.com/;https://ghproxy.com/;https://ghproxy.net/;https://ghps.cc/"` +} + +type cDocOutput struct{} + +func (c cDoc) Index(ctx context.Context, in cDocInput) (out *cDocOutput, err error) { + docs := NewDocSetting(ctx, in) + mlog.Print("Directory where the document is downloaded:", docs.TempDir) + if in.Clean { + mlog.Print("Cleaning document directory") + err = docs.Clean() + if err != nil { + mlog.Print("Failed to clean document directory:", err) + return + } + return + } + if in.Update { + mlog.Print("Cleaning old document directory") + err = docs.Clean() + if err != nil { + mlog.Print("Failed to clean old document directory:", err) + return + } + } + err = docs.DownloadDoc() + if err != nil { + mlog.Print("Failed to download document:", err) + return + } + + http.Handle("/", http.FileServer(http.Dir(docs.DocDir))) + mlog.Printf("Access address http://127.0.0.1:%d in %s", in.Port, docs.DocDir) + err = http.ListenAndServe(fmt.Sprintf(":%d", in.Port), nil) + if err != nil { + return nil, err + } + return +} + +// DocSetting doc setting +type DocSetting struct { + TempDir string + DocURL string + DocDir string + DocZipFile string +} + +// NewDocSetting new DocSetting +func NewDocSetting(ctx context.Context, in cDocInput) *DocSetting { + fileName := SiteFileName + ".zip" + tempDir := in.Path + if tempDir == "" { + tempDir = gfile.Temp("goframe/docs") + } else { + tempDir = gfile.Abs(path.Join(tempDir, "docs")) + } + + return &DocSetting{ + TempDir: filepath.FromSlash(tempDir), + DocDir: filepath.FromSlash(path.Join(tempDir, SiteFileName)), + DocURL: in.Proxy + DocURL, + DocZipFile: filepath.FromSlash(path.Join(tempDir, fileName)), + } + +} + +// Clean cleans the temporary directory +func (d *DocSetting) Clean() error { + if _, err := os.Stat(d.TempDir); err == nil { + err = gfile.RemoveAll(d.TempDir) + if err != nil { + mlog.Print("Failed to delete temporary directory:", err) + return err + } + } + return nil +} + +// DownloadDoc download the document +func (d *DocSetting) DownloadDoc() error { + if _, err := os.Stat(d.TempDir); err != nil { + err = gfile.Mkdir(d.TempDir) + if err != nil { + mlog.Print("Failed to create temporary directory:", err) + return nil + } + } + // Check if the file exists + if _, err := os.Stat(d.DocDir); err == nil { + mlog.Print("Document already exists, no need to download and unzip") + return nil + } + + if _, err := os.Stat(d.DocZipFile); err == nil { + mlog.Print("File already exists, no need to download") + } else { + mlog.Printf("File does not exist, start downloading: %s", d.DocURL) + startTime := time.Now() + // Download the file + resp, err := http.Get(d.DocURL) + if err != nil { + mlog.Print("Failed to download file:", err) + return err + } + defer resp.Body.Close() + + // Create the file + out, err := os.Create(d.DocZipFile) + if err != nil { + mlog.Print("Failed to create file:", err) + return err + } + defer out.Close() + + // Write the response body to the file + _, err = io.Copy(out, resp.Body) + if err != nil { + mlog.Print("Failed to write file:", err) + return err + } + mlog.Printf("Download successful, time-consuming: %v", time.Since(startTime)) + } + + mlog.Print("Start unzipping the file...") + // Unzip the file + err := gcompress.UnZipFile(d.DocZipFile, d.TempDir) + if err != nil { + mlog.Print("Failed to unzip the file, please run again:", err) + _ = gfile.RemoveFile(d.DocZipFile) + return err + } + + mlog.Print("Download and unzip successful") + return nil +} diff --git a/server/internal/library/hggen/internal/cmd/cmd_docker.go b/server/internal/library/hggen/internal/cmd/cmd_docker.go new file mode 100644 index 0000000..3b53e74 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_docker.go @@ -0,0 +1,179 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "context" + "fmt" + "runtime" + + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gproc" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gtag" + + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +var ( + Docker = cDocker{} +) + +type cDocker struct { + g.Meta `name:"docker" usage:"{cDockerUsage}" brief:"{cDockerBrief}" eg:"{cDockerEg}" dc:"{cDockerDc}"` +} + +const ( + cDockerUsage = `gf docker [MAIN] [OPTION]` + cDockerBrief = `build docker image for current GoFrame project` + cDockerEg = ` +gf docker +gf docker -t hub.docker.com/john/image:tag +gf docker -p -t hub.docker.com/john/image:tag +gf docker main.go +gf docker main.go -t hub.docker.com/john/image:tag +gf docker main.go -t hub.docker.com/john/image:tag +gf docker main.go -p -t hub.docker.com/john/image:tag +gf docker main.go -p -tp ["hub.docker.com/john","hub.docker.com/smith"] -tn image:tag +` + cDockerDc = ` +The "docker" command builds the GF project to a docker images. +It runs "gf build" firstly to compile the project to binary file. +It then runs "docker build" command automatically to generate the docker image. +You should have docker installed, and there must be a Dockerfile in the root of the project. +` + cDockerMainBrief = `main file path for "gf build", it's "main.go" in default. empty string for no binary build` + cDockerBuildBrief = `binary build options before docker image build, it's "-a amd64 -s linux" in default` + cDockerFileBrief = `file path of the Dockerfile. it's "manifest/docker/Dockerfile" in default` + cDockerShellBrief = `path of the shell file which is executed before docker build` + cDockerPushBrief = `auto push the docker image to docker registry if "-t" option passed` + cDockerTagBrief = `full tag for this docker, pattern like "xxx.xxx.xxx/image:tag"` + cDockerTagNameBrief = `tag name for this docker, pattern like "image:tag". this option is required with TagPrefixes` + cDockerTagPrefixesBrief = `tag prefixes for this docker, which are used for docker push. this option is required with TagName` + cDockerExtraBrief = `extra build options passed to "docker image"` +) + +func init() { + gtag.Sets(g.MapStrStr{ + `cDockerUsage`: cDockerUsage, + `cDockerBrief`: cDockerBrief, + `cDockerEg`: cDockerEg, + `cDockerDc`: cDockerDc, + `cDockerMainBrief`: cDockerMainBrief, + `cDockerFileBrief`: cDockerFileBrief, + `cDockerShellBrief`: cDockerShellBrief, + `cDockerBuildBrief`: cDockerBuildBrief, + `cDockerPushBrief`: cDockerPushBrief, + `cDockerTagBrief`: cDockerTagBrief, + `cDockerTagNameBrief`: cDockerTagNameBrief, + `cDockerTagPrefixesBrief`: cDockerTagPrefixesBrief, + `cDockerExtraBrief`: cDockerExtraBrief, + }) +} + +type cDockerInput struct { + g.Meta `name:"docker" config:"gfcli.docker"` + Main string `name:"MAIN" arg:"true" brief:"{cDockerMainBrief}" d:"main.go"` + File string `name:"file" short:"f" brief:"{cDockerFileBrief}" d:"manifest/docker/Dockerfile"` + Shell string `name:"shell" short:"s" brief:"{cDockerShellBrief}" d:"manifest/docker/docker.sh"` + Build string `name:"build" short:"b" brief:"{cDockerBuildBrief}"` + Tag string `name:"tag" short:"t" brief:"{cDockerTagBrief}"` + TagName string `name:"tagName" short:"tn" brief:"{cDockerTagNameBrief}" v:"required-with:TagPrefixes"` + TagPrefixes []string `name:"tagPrefixes" short:"tp" brief:"{cDockerTagPrefixesBrief}" v:"required-with:TagName"` + Push bool `name:"push" short:"p" brief:"{cDockerPushBrief}" orphan:"true"` + Extra string `name:"extra" short:"e" brief:"{cDockerExtraBrief}"` +} + +type cDockerOutput struct{} + +func (c cDocker) Index(ctx context.Context, in cDockerInput) (out *cDockerOutput, err error) { + // Necessary check. + if gproc.SearchBinary("docker") == "" { + mlog.Fatalf(`command "docker" not found in your environment, please install docker first to proceed this command`) + } + + mlog.Debugf(`docker command input: %+v`, in) + + // Binary build. + if in.Main != "" && in.Build != "" { + in.Build += " --exitWhenError" + if in.Main != "" { + if err = gproc.ShellRun(ctx, fmt.Sprintf(`gf build %s %s`, in.Main, in.Build)); err != nil { + mlog.Debugf(`build binary failed with error: %+v`, err) + return + } + } + } + + // Shell executing. + if in.Shell != "" && gfile.Exists(in.Shell) { + if err = c.exeDockerShell(ctx, in.Shell); err != nil { + mlog.Debugf(`build docker failed with error: %+v`, err) + return + } + } + // Docker build. + var ( + dockerBuildOptions string + dockerTags []string + dockerTagBase string + ) + if len(in.TagPrefixes) > 0 { + for _, tagPrefix := range in.TagPrefixes { + tagPrefix = gstr.TrimRight(tagPrefix, "/") + dockerTags = append(dockerTags, fmt.Sprintf(`%s/%s`, tagPrefix, in.TagName)) + } + } + if len(dockerTags) == 0 { + dockerTags = []string{in.Tag} + } + for i, dockerTag := range dockerTags { + if i > 0 { + err = gproc.ShellRun(ctx, fmt.Sprintf(`docker tag %s %s`, dockerTagBase, dockerTag)) + if err != nil { + return + } + continue + } + dockerTagBase = dockerTag + dockerBuildOptions = "" + if dockerTag != "" { + dockerBuildOptions = fmt.Sprintf(`-t %s`, dockerTag) + } + if in.Extra != "" { + dockerBuildOptions = fmt.Sprintf(`%s %s`, dockerBuildOptions, in.Extra) + } + err = gproc.ShellRun(ctx, fmt.Sprintf(`docker build -f %s . %s`, in.File, dockerBuildOptions)) + if err != nil { + return + } + } + + // Docker push. + if !in.Push { + return + } + for _, dockerTag := range dockerTags { + if dockerTag == "" { + continue + } + err = gproc.ShellRun(ctx, fmt.Sprintf(`docker push %s`, dockerTag)) + if err != nil { + return + } + } + return +} + +func (c cDocker) exeDockerShell(ctx context.Context, shellFilePath string) error { + if gfile.ExtName(shellFilePath) == "sh" && runtime.GOOS == "windows" { + mlog.Debugf(`ignore shell file "%s", as it cannot be run on windows system`, shellFilePath) + return nil + } + return gproc.ShellRun(ctx, gfile.GetContents(shellFilePath)) +} diff --git a/server/internal/library/hggen/internal/cmd/cmd_env.go b/server/internal/library/hggen/internal/cmd/cmd_env.go new file mode 100644 index 0000000..88371cb --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_env.go @@ -0,0 +1,85 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "bytes" + "context" + + "github.com/olekukonko/tablewriter" + "github.com/olekukonko/tablewriter/renderer" + "github.com/olekukonko/tablewriter/tw" + + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gproc" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +var ( + Env = cEnv{} +) + +type cEnv struct { + g.Meta `name:"env" brief:"show current Golang environment variables"` +} + +type cEnvInput struct { + g.Meta `name:"env"` +} + +type cEnvOutput struct{} + +func (c cEnv) Index(ctx context.Context, in cEnvInput) (out *cEnvOutput, err error) { + result, err := gproc.ShellExec(ctx, "go env") + if err != nil { + mlog.Fatal(err) + } + if result == "" { + mlog.Fatal(`retrieving Golang environment variables failed, did you install Golang?`) + } + var ( + lines = gstr.Split(result, "\n") + buffer = bytes.NewBuffer(nil) + ) + array := make([][]string, 0) + for _, line := range lines { + line = gstr.Trim(line) + if line == "" { + continue + } + if gstr.Pos(line, "set ") == 0 { + line = line[4:] + } + match, _ := gregex.MatchString(`(.+?)=(.*)`, line) + if len(match) < 3 { + mlog.Fatalf(`invalid Golang environment variable: "%s"`, line) + } + array = append(array, []string{gstr.Trim(match[1]), gstr.Trim(match[2])}) + } + table := tablewriter.NewTable(buffer, + tablewriter.WithRenderer(renderer.NewBlueprint(tw.Rendition{ + Settings: tw.Settings{ + Separators: tw.Separators{BetweenRows: tw.Off, BetweenColumns: tw.On}, + }, + Symbols: tw.NewSymbols(tw.StyleASCII), + })), + tablewriter.WithConfig(tablewriter.Config{ + Row: tw.CellConfig{ + Formatting: tw.CellFormatting{AutoWrap: tw.WrapNone}, + Alignment: tw.CellAlignment{PerColumn: []tw.Align{tw.AlignLeft, tw.AlignLeft}}, + ColMaxWidths: tw.CellWidth{Global: 84}, + }, + }), + ) + table.Bulk(array) + table.Render() + mlog.Print(buffer.String()) + return +} diff --git a/server/internal/library/hggen/internal/cmd/cmd_fix.go b/server/internal/library/hggen/internal/cmd/cmd_fix.go new file mode 100644 index 0000000..0a338aa --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_fix.go @@ -0,0 +1,152 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gproc" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +var ( + Fix = cFix{} +) + +type cFix struct { + g.Meta `name:"fix" brief:"auto fixing codes after upgrading to new GoFrame version" usage:"gf fix" ` +} + +type cFixInput struct { + g.Meta `name:"fix"` + Path string `name:"path" short:"p" brief:"directory path, it uses current working directory in default"` + Version string `name:"version" short:"v" brief:"custom specified version to fix, leave it empty to auto detect"` +} + +type cFixOutput struct{} + +type cFixItem struct { + Version string + Func func(version string) error +} + +func (c cFix) Index(ctx context.Context, in cFixInput) (out *cFixOutput, err error) { + + if in.Path == "" { + in.Path = gfile.Pwd() + } + if in.Version == "" { + in.Version, err = c.autoDetectVersion(in) + if err != nil { + mlog.Fatal(err) + } + if in.Version == "" { + mlog.Print(`no GoFrame usage found, exit fixing`) + return + } + mlog.Debugf(`current GoFrame version auto detect "%s"`, in.Version) + } + + if !gproc.IsChild() { + mlog.Printf(`start auto fixing directory path "%s"...`, in.Path) + defer mlog.Print(`done!`) + } + + err = c.doFix(in) + return +} + +func (c cFix) doFix(in cFixInput) (err error) { + + var items = []cFixItem{ + {Version: "v2.3", Func: c.doFixV23}, + {Version: "v2.5", Func: c.doFixV25}, + } + for _, item := range items { + if gstr.CompareVersionGo(in.Version, item.Version) < 0 { + mlog.Debugf( + `current GoFrame or contrib package version "%s" is lesser than "%s", nothing to do`, + in.Version, item.Version, + ) + continue + } + if err = item.Func(in.Version); err != nil { + return + } + } + return +} + +// doFixV23 fixes code when upgrading to GoFrame v2.3. +func (c cFix) doFixV23(version string) error { + replaceFunc := func(path, content string) string { + // gdb.TX from struct to interface. + content = gstr.Replace(content, "*gdb.TX", "gdb.TX") + // function name changes for package gtcp/gudp. + if gstr.Contains(content, "/gf/v2/net/gtcp") || gstr.Contains(content, "/gf/v2/net/gudp") { + content = gstr.ReplaceByMap(content, g.MapStrStr{ + ".SetSendDeadline": ".SetDeadlineSend", + ".SetReceiveDeadline": ".SetDeadlineRecv", + ".SetReceiveBufferWait": ".SetBufferWaitRecv", + }) + } + return content + } + return gfile.ReplaceDirFunc(replaceFunc, ".", "*.go", true) +} + +// doFixV25 fixes code when upgrading to GoFrame v2.5. +func (c cFix) doFixV25(version string) (err error) { + replaceFunc := func(path, content string) string { + content, err = c.doFixV25Content(content) + return content + } + return gfile.ReplaceDirFunc(replaceFunc, ".", "*.go", true) +} + +func (c cFix) doFixV25Content(content string) (newContent string, err error) { + newContent = content + if gstr.Contains(content, `.BindHookHandlerByMap(`) { + var pattern = `\.BindHookHandlerByMap\((.+?), map\[string\]ghttp\.HandlerFunc` + newContent, err = gregex.ReplaceString( + pattern, + `.BindHookHandlerByMap($1, map[ghttp.HookName]ghttp.HandlerFunc`, + content, + ) + } + return +} + +func (c cFix) autoDetectVersion(in cFixInput) (string, error) { + var ( + err error + path = gfile.Join(in.Path, "go.mod") + version string + ) + if !gfile.Exists(path) { + return "", gerror.Newf(`"%s" not found in current working directory`, path) + } + err = gfile.ReadLines(path, func(line string) error { + array := gstr.SplitAndTrim(line, " ") + if len(array) > 0 { + if gstr.HasPrefix(array[0], gfPackage) { + version = array[1] + } + } + return nil + }) + if err != nil { + mlog.Fatal(err) + } + return version, nil +} diff --git a/server/internal/library/hggen/internal/cmd/cmd_gen.go b/server/internal/library/hggen/internal/cmd/cmd_gen.go new file mode 100644 index 0000000..10f03da --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_gen.go @@ -0,0 +1,42 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/util/gtag" +) + +var ( + Gen = cGen{} +) + +type cGen struct { + g.Meta `name:"gen" brief:"{cGenBrief}" dc:"{cGenDc}"` + cGenDao + cGenEnums + cGenCtrl + cGenPb + cGenPbEntity + cGenService +} + +const ( + cGenBrief = `automatically generate go files for dao/do/entity/pb/pbentity` + cGenDc = ` +The "gen" command is designed for multiple generating purposes. +It's currently supporting generating go files for ORM models, protobuf and protobuf entity files. +Please use "gf gen dao -h" for specified type help. +` +) + +func init() { + gtag.Sets(g.MapStrStr{ + `cGenBrief`: cGenBrief, + `cGenDc`: cGenDc, + }) +} diff --git a/server/internal/library/hggen/internal/cmd/cmd_gen_ctrl.go b/server/internal/library/hggen/internal/cmd/cmd_gen_ctrl.go new file mode 100644 index 0000000..cd116ac --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_gen_ctrl.go @@ -0,0 +1,15 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "hotgo/internal/library/hggen/internal/cmd/genctrl" +) + +type ( + cGenCtrl = genctrl.CGenCtrl +) diff --git a/server/internal/library/hggen/internal/cmd/cmd_gen_dao.go b/server/internal/library/hggen/internal/cmd/cmd_gen_dao.go new file mode 100644 index 0000000..2781da5 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_gen_dao.go @@ -0,0 +1,25 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + //_ "github.com/gogf/gf/contrib/drivers/clickhouse/v2" + //_ "github.com/gogf/gf/contrib/drivers/mssql/v2" + _ "github.com/gogf/gf/contrib/drivers/mysql/v2" + //_ "github.com/gogf/gf/contrib/drivers/oracle/v2" + _ "github.com/gogf/gf/contrib/drivers/pgsql/v2" + //_ "github.com/gogf/gf/contrib/drivers/sqlite/v2" + + // do not add dm in cli pre-compilation, + // the dm driver does not support certain target platforms. + // _ "github.com/gogf/gf/contrib/drivers/dm/v2" + "hotgo/internal/library/hggen/internal/cmd/gendao" +) + +type ( + cGenDao = gendao.CGenDao +) diff --git a/server/internal/library/hggen/internal/cmd/cmd_gen_enums.go b/server/internal/library/hggen/internal/cmd/cmd_gen_enums.go new file mode 100644 index 0000000..35fc3b6 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_gen_enums.go @@ -0,0 +1,15 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "hotgo/internal/library/hggen/internal/cmd/genenums" +) + +type ( + cGenEnums = genenums.CGenEnums +) diff --git a/server/internal/library/hggen/internal/cmd/cmd_gen_pb.go b/server/internal/library/hggen/internal/cmd/cmd_gen_pb.go new file mode 100644 index 0000000..1833d89 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_gen_pb.go @@ -0,0 +1,13 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import "hotgo/internal/library/hggen/internal/cmd/genpb" + +type ( + cGenPb = genpb.CGenPb +) diff --git a/server/internal/library/hggen/internal/cmd/cmd_gen_pbentity.go b/server/internal/library/hggen/internal/cmd/cmd_gen_pbentity.go new file mode 100644 index 0000000..58b26d8 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_gen_pbentity.go @@ -0,0 +1,13 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import "hotgo/internal/library/hggen/internal/cmd/genpbentity" + +type ( + cGenPbEntity = genpbentity.CGenPbEntity +) diff --git a/server/internal/library/hggen/internal/cmd/cmd_gen_service.go b/server/internal/library/hggen/internal/cmd/cmd_gen_service.go new file mode 100644 index 0000000..33b5689 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_gen_service.go @@ -0,0 +1,15 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "hotgo/internal/library/hggen/internal/cmd/genservice" +) + +type ( + cGenService = genservice.CGenService +) diff --git a/server/internal/library/hggen/internal/cmd/cmd_init.go b/server/internal/library/hggen/internal/cmd/cmd_init.go new file mode 100644 index 0000000..319f730 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_init.go @@ -0,0 +1,182 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "context" + "fmt" + "os" + "strings" + + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gcmd" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gproc" + "github.com/gogf/gf/v2/os/gres" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gtag" + + "hotgo/internal/library/hggen/internal/utility/allyes" + "hotgo/internal/library/hggen/internal/utility/mlog" + "hotgo/internal/library/hggen/internal/utility/utils" +) + +var ( + // Init . + Init = cInit{} +) + +type cInit struct { + g.Meta `name:"init" brief:"{cInitBrief}" eg:"{cInitEg}"` +} + +const ( + cInitRepoPrefix = `github.com/gogf/` + cInitMonoRepo = `template-mono` + cInitMonoRepoApp = `template-mono-app` + cInitSingleRepo = `template-single` + cInitBrief = `create and initialize an empty GoFrame project` + cInitEg = ` +gf init my-project +gf init my-mono-repo -m +gf init my-mono-repo -a +` + cInitNameBrief = ` +name for the project. It will create a folder with NAME in current directory. +The NAME will also be the module name for the project. +` + // cInitGitDir the git directory + cInitGitDir = ".git" + // cInitGitignore the gitignore file + cInitGitignore = ".gitignore" +) + +func init() { + gtag.Sets(g.MapStrStr{ + `cInitBrief`: cInitBrief, + `cInitEg`: cInitEg, + `cInitNameBrief`: cInitNameBrief, + }) +} + +type cInitInput struct { + g.Meta `name:"init"` + Name string `name:"NAME" arg:"true" v:"required" brief:"{cInitNameBrief}"` + Mono bool `name:"mono" short:"m" brief:"initialize a mono-repo instead a single-repo" orphan:"true"` + MonoApp bool `name:"monoApp" short:"a" brief:"initialize a mono-repo-app instead a single-repo" orphan:"true"` + Update bool `name:"update" short:"u" brief:"update to the latest goframe version" orphan:"true"` + Module string `name:"module" short:"g" brief:"custom go module"` +} + +type cInitOutput struct{} + +func (c cInit) Index(ctx context.Context, in cInitInput) (out *cInitOutput, err error) { + var overwrote = false + if !gfile.IsEmpty(in.Name) && !allyes.Check() { + s := gcmd.Scanf(`the folder "%s" is not empty, files might be overwrote, continue? [y/n]: `, in.Name) + if strings.EqualFold(s, "n") { + return + } + overwrote = true + } + mlog.Print("initializing...") + + // Create project folder and files. + var ( + templateRepoName string + gitignoreFile = in.Name + "/" + cInitGitignore + ) + + if in.Mono { + templateRepoName = cInitMonoRepo + } else if in.MonoApp { + templateRepoName = cInitMonoRepoApp + } else { + templateRepoName = cInitSingleRepo + } + + err = gres.Export(templateRepoName, in.Name, gres.ExportOption{ + RemovePrefix: templateRepoName, + }) + if err != nil { + return + } + + // build ignoreFiles from the .gitignore file + ignoreFiles := make([]string, 0, 10) + ignoreFiles = append(ignoreFiles, cInitGitDir) + // in.MonoApp is a mono-repo-app, it should ignore the .gitignore file + if overwrote && !in.MonoApp { + err = gfile.ReadLines(gitignoreFile, func(line string) error { + // Add only hidden files or directories + // If other directories are added, it may cause the entire directory to be ignored + // such as 'main' in the .gitignore file, but the path is ' D:\main\my-project ' + if line != "" && strings.HasPrefix(line, ".") { + ignoreFiles = append(ignoreFiles, line) + } + return nil + }) + + // if not found the .gitignore file will skip os.ErrNotExist error + if err != nil && !os.IsNotExist(err) { + return + } + } + + // Get template name and module name. + if in.Module == "" { + in.Module = gfile.Basename(gfile.RealPath(in.Name)) + } + if in.MonoApp { + pwd := gfile.Pwd() + string(os.PathSeparator) + in.Name + in.Module = utils.GetImportPath(pwd) + } + + // Replace template name to project name. + err = gfile.ReplaceDirFunc(func(path, content string) string { + for _, ignoreFile := range ignoreFiles { + if strings.Contains(path, ignoreFile) { + return content + } + } + return gstr.Replace(gfile.GetContents(path), cInitRepoPrefix+templateRepoName, in.Module) + }, in.Name, "*", true) + if err != nil { + return + } + + // Update the GoFrame version. + if in.Update { + mlog.Print("update goframe...") + // go get -u github.com/gogf/gf/v2@latest + updateCommand := `go get -u github.com/gogf/gf/v2@latest` + if in.Name != "." { + updateCommand = fmt.Sprintf(`cd %s && %s`, in.Name, updateCommand) + } + if err = gproc.ShellRun(ctx, updateCommand); err != nil { + mlog.Fatal(err) + } + // go mod tidy + gomModTidyCommand := `go mod tidy` + if in.Name != "." { + gomModTidyCommand = fmt.Sprintf(`cd %s && %s`, in.Name, gomModTidyCommand) + } + if err = gproc.ShellRun(ctx, gomModTidyCommand); err != nil { + mlog.Fatal(err) + } + } + + mlog.Print("initialization done! ") + if !in.Mono { + enjoyCommand := `gf run main.go` + if in.Name != "." { + enjoyCommand = fmt.Sprintf(`cd %s && %s`, in.Name, enjoyCommand) + } + mlog.Printf(`you can now run "%s" to start your journey, enjoy!`, enjoyCommand) + } + return +} diff --git a/server/internal/library/hggen/internal/cmd/cmd_install.go b/server/internal/library/hggen/internal/cmd/cmd_install.go new file mode 100644 index 0000000..0dd30ad --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_install.go @@ -0,0 +1,34 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "context" + + "github.com/gogf/gf/v2/frame/g" + + "hotgo/internal/library/hggen/internal/service" +) + +var ( + Install = cInstall{} +) + +type cInstall struct { + g.Meta `name:"install" brief:"install gf binary to system (might need root/admin permission)"` +} + +type cInstallInput struct { + g.Meta `name:"install"` +} + +type cInstallOutput struct{} + +func (c cInstall) Index(ctx context.Context, in cInstallInput) (out *cInstallOutput, err error) { + err = service.Install.Run(ctx) + return +} diff --git a/server/internal/library/hggen/internal/cmd/cmd_pack.go b/server/internal/library/hggen/internal/cmd/cmd_pack.go new file mode 100644 index 0000000..b6addd0 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_pack.go @@ -0,0 +1,104 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "context" + "strings" + + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gcmd" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gres" + "github.com/gogf/gf/v2/util/gtag" + + "hotgo/internal/library/hggen/internal/utility/allyes" + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +var ( + Pack = cPack{} +) + +type cPack struct { + g.Meta `name:"pack" usage:"{cPackUsage}" brief:"{cPackBrief}" eg:"{cPackEg}"` +} + +const ( + cPackUsage = `gf pack SRC DST` + cPackBrief = `packing any file/directory to a resource file, or a go file` + cPackEg = ` +gf pack public data.bin +gf pack public,template data.bin +gf pack public,template packed/data.go +gf pack public,template,config packed/data.go +gf pack public,template,config packed/data.go -n=packed -p=/var/www/my-app +gf pack /var/www/public packed/data.go -n=packed +` + cPackSrcBrief = `source path for packing, which can be multiple source paths.` + cPackDstBrief = ` +destination file path for packed file. if extension of the filename is ".go" and "-n" option is given, +it enables packing SRC to go file, or else it packs SRC into a binary file. +` + cPackNameBrief = `package name for output go file, it's set as its directory name if no name passed` + cPackPrefixBrief = `prefix for each file packed into the resource file` + cPackKeepPathBrief = `keep the source path from system to resource file, usually for relative path` +) + +func init() { + gtag.Sets(g.MapStrStr{ + `cPackUsage`: cPackUsage, + `cPackBrief`: cPackBrief, + `cPackEg`: cPackEg, + `cPackSrcBrief`: cPackSrcBrief, + `cPackDstBrief`: cPackDstBrief, + `cPackNameBrief`: cPackNameBrief, + `cPackPrefixBrief`: cPackPrefixBrief, + `cPackKeepPathBrief`: cPackKeepPathBrief, + }) +} + +type cPackInput struct { + g.Meta `name:"pack" config:"gfcli.pack"` + Src string `name:"SRC" arg:"true" v:"required" brief:"{cPackSrcBrief}"` + Dst string `name:"DST" arg:"true" v:"required" brief:"{cPackDstBrief}"` + Name string `name:"name" short:"n" brief:"{cPackNameBrief}"` + Prefix string `name:"prefix" short:"p" brief:"{cPackPrefixBrief}"` + KeepPath bool `name:"keepPath" short:"k" brief:"{cPackKeepPathBrief}" orphan:"true"` +} + +type cPackOutput struct{} + +func (c cPack) Index(ctx context.Context, in cPackInput) (out *cPackOutput, err error) { + if gfile.Exists(in.Dst) && gfile.IsDir(in.Dst) { + mlog.Fatalf("DST path '%s' cannot be a directory", in.Dst) + } + if !gfile.IsEmpty(in.Dst) && !allyes.Check() { + s := gcmd.Scanf("path '%s' is not empty, files might be overwrote, continue? [y/n]: ", in.Dst) + if strings.EqualFold(s, "n") { + return + } + } + if in.Name == "" && gfile.ExtName(in.Dst) == "go" { + in.Name = gfile.Basename(gfile.Dir(in.Dst)) + } + var option = gres.Option{ + Prefix: in.Prefix, + KeepPath: in.KeepPath, + } + if in.Name != "" { + if err = gres.PackToGoFileWithOption(in.Src, in.Dst, in.Name, option); err != nil { + mlog.Fatalf("pack failed: %v", err) + } + } else { + if err = gres.PackToFileWithOption(in.Src, in.Dst, option); err != nil { + mlog.Fatalf("pack failed: %v", err) + } + } + mlog.Print("done!") + return +} diff --git a/server/internal/library/hggen/internal/cmd/cmd_run.go b/server/internal/library/hggen/internal/cmd/cmd_run.go new file mode 100644 index 0000000..7eef8fb --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_run.go @@ -0,0 +1,283 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "context" + "fmt" + "os" + "path/filepath" + "runtime" + "strings" + "time" + + "github.com/gogf/gf/v2/container/gtype" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gfsnotify" + "github.com/gogf/gf/v2/os/gproc" + "github.com/gogf/gf/v2/os/gtime" + "github.com/gogf/gf/v2/os/gtimer" + "github.com/gogf/gf/v2/util/gtag" + + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +var Run = cRun{} + +type cRun struct { + g.Meta `name:"run" usage:"{cRunUsage}" brief:"{cRunBrief}" eg:"{cRunEg}" dc:"{cRunDc}"` +} + +type cRunApp struct { + File string // Go run file name. + Path string // Directory storing built binary. + Options string // Extra "go run" options. + Args string // Custom arguments. + WatchPaths []string // Watch paths for live reload. +} + +const ( + cRunUsage = `gf run FILE [OPTION]` + cRunBrief = `running go codes with hot-compiled-like feature` + cRunEg = ` +gf run main.go +gf run main.go --args "server -p 8080" +gf run main.go -mod=vendor +gf run main.go -w "manifest/config/*.yaml" +` + cRunDc = ` +The "run" command is used for running go codes with hot-compiled-like feature, +which compiles and runs the go codes asynchronously when codes change. +` + cRunFileBrief = `building file path.` + cRunPathBrief = `output directory path for built binary file. it's "./" in default` + cRunExtraBrief = `the same options as "go run"/"go build" except some options as follows defined` + cRunArgsBrief = `custom arguments for your process` + cRunWatchPathsBrief = `watch additional paths for live reload, separated by ",". i.e. "manifest/config/*.yaml"` +) + +var process *gproc.Process + +func init() { + gtag.Sets(g.MapStrStr{ + `cRunUsage`: cRunUsage, + `cRunBrief`: cRunBrief, + `cRunEg`: cRunEg, + `cRunDc`: cRunDc, + `cRunFileBrief`: cRunFileBrief, + `cRunPathBrief`: cRunPathBrief, + `cRunExtraBrief`: cRunExtraBrief, + `cRunArgsBrief`: cRunArgsBrief, + `cRunWatchPathsBrief`: cRunWatchPathsBrief, + }) +} + +type ( + cRunInput struct { + g.Meta `name:"run" config:"gfcli.run"` + File string `name:"FILE" arg:"true" brief:"{cRunFileBrief}" v:"required"` + Path string `name:"path" short:"p" brief:"{cRunPathBrief}" d:"./"` + Extra string `name:"extra" short:"e" brief:"{cRunExtraBrief}"` + Args string `name:"args" short:"a" brief:"{cRunArgsBrief}"` + WatchPaths []string `name:"watchPaths" short:"w" brief:"{cRunWatchPathsBrief}"` + } + cRunOutput struct{} +) + +func (c cRun) Index(ctx context.Context, in cRunInput) (out *cRunOutput, err error) { + if !gfile.Exists(in.File) { + mlog.Fatalf(`given file "%s" not found`, in.File) + } + if !gfile.IsFile(in.File) { + mlog.Fatalf(`given "%s" is not a file`, in.File) + } + // Necessary check. + if gproc.SearchBinary("go") == "" { + mlog.Fatalf(`command "go" not found in your environment, please install golang first to proceed this command`) + } + + if len(in.WatchPaths) == 1 { + in.WatchPaths = strings.Split(in.WatchPaths[0], ",") + mlog.Printf("watchPaths: %v", in.WatchPaths) + } + + app := &cRunApp{ + File: in.File, + Path: filepath.FromSlash(in.Path), + Options: in.Extra, + Args: in.Args, + WatchPaths: in.WatchPaths, + } + dirty := gtype.NewBool() + + outputPath := app.genOutputPath() + callbackFunc := func(event *gfsnotify.Event) { + if !event.IsWrite() && !event.IsCreate() && !event.IsRemove() && !event.IsRename() { + return + } + + if gfile.ExtName(event.Path) != "go" { + return + } + + // Variable `dirty` is used for running the changes only one in one second. + if !dirty.Cas(false, true) { + return + } + + // With some delay in case of multiple code changes in very short interval. + gtimer.SetTimeout(ctx, 1500*gtime.MS, func(ctx context.Context) { + defer dirty.Set(false) + mlog.Printf(`watched file changes: %s`, event.String()) + app.Run(ctx, outputPath) + }) + } + + if len(app.WatchPaths) > 0 { + for _, path := range app.WatchPaths { + _, err = gfsnotify.Add(gfile.RealPath(path), callbackFunc) + if err != nil { + mlog.Fatal(err) + } + } + } else { + _, err = gfsnotify.Add(gfile.RealPath("."), callbackFunc) + if err != nil { + mlog.Fatal(err) + } + } + + go app.Run(ctx, outputPath) + + gproc.AddSigHandlerShutdown(func(sig os.Signal) { + app.End(ctx, sig, outputPath) + os.Exit(0) + }) + gproc.Listen() + + select {} +} + +func (app *cRunApp) Run(ctx context.Context, outputPath string) { + // Rebuild and run the codes. + mlog.Printf("build: %s", app.File) + + // In case of `pipe: too many open files` error. + // Build the app. + buildCommand := fmt.Sprintf( + `go build -o %s %s %s`, + outputPath, + app.Options, + app.File, + ) + mlog.Print(buildCommand) + result, err := gproc.ShellExec(ctx, buildCommand) + if err != nil { + mlog.Printf("build error: \n%s%s", result, err.Error()) + return + } + // Kill the old process if build successfully. + if process != nil { + if err := process.Kill(); err != nil { + mlog.Debugf("kill process error: %s", err.Error()) + } + } + // Run the binary file. + runCommand := fmt.Sprintf(`%s %s`, outputPath, app.Args) + mlog.Print(runCommand) + if runtime.GOOS == "windows" { + // Special handling for windows platform. + // DO NOT USE "cmd /c" command. + process = gproc.NewProcess(outputPath, strings.Fields(app.Args)) + } else { + process = gproc.NewProcessCmd(runCommand, nil) + } + if pid, err := process.Start(ctx); err != nil { + mlog.Printf("build running error: %s", err.Error()) + } else { + mlog.Printf("build running pid: %d", pid) + } +} + +func (app *cRunApp) End(ctx context.Context, sig os.Signal, outputPath string) { + // Delete the binary file. + // firstly, kill the process. + if process != nil { + if sig != nil && runtime.GOOS != "windows" { + if err := process.Signal(sig); err != nil { + mlog.Debugf("send signal to process error: %s", err.Error()) + if err := process.Kill(); err != nil { + mlog.Debugf("kill process error: %s", err.Error()) + } + } else { + waitCtx, cancel := context.WithTimeout(ctx, 30*time.Second) + defer cancel() + done := make(chan error, 1) + go func() { + select { + case <-waitCtx.Done(): + done <- waitCtx.Err() + case done <- process.Wait(): + } + }() + err := <-done + if err != nil { + mlog.Debugf("process wait error: %s", err.Error()) + if err := process.Kill(); err != nil { + mlog.Debugf("kill process error: %s", err.Error()) + } + } else { + mlog.Debug("process exited gracefully") + } + } + } else { + if err := process.Kill(); err != nil { + mlog.Debugf("kill process error: %s", err.Error()) + } + } + } + if err := gfile.RemoveFile(outputPath); err != nil { + mlog.Printf("delete binary file error: %s", err.Error()) + } else { + mlog.Printf("deleted binary file: %s", outputPath) + } +} + +func (app *cRunApp) genOutputPath() (outputPath string) { + var renamePath string + outputPath = gfile.Join(app.Path, gfile.Name(app.File)) + if runtime.GOOS == "windows" { + outputPath += ".exe" + if gfile.Exists(outputPath) { + renamePath = outputPath + "~" + if err := gfile.Rename(outputPath, renamePath); err != nil { + mlog.Print(err) + } + } + } + return filepath.FromSlash(outputPath) +} + +func matchWatchPaths(watchPaths []string, eventPath string) bool { + for _, path := range watchPaths { + absPath, err := filepath.Abs(path) + if err != nil { + mlog.Printf("match watchPath '%s' error: %s", path, err.Error()) + continue + } + matched, err := filepath.Match(absPath, eventPath) + if err != nil { + mlog.Printf("match watchPath '%s' error: %s", path, err.Error()) + continue + } + if matched { + return true + } + } + return false +} diff --git a/server/internal/library/hggen/internal/cmd/cmd_tpl.go b/server/internal/library/hggen/internal/cmd/cmd_tpl.go new file mode 100644 index 0000000..4c132e5 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_tpl.go @@ -0,0 +1,174 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "context" + + "github.com/gogf/gf/v2/encoding/gjson" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gtag" + "github.com/gogf/gf/v2/util/gutil" + + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +var ( + Tpl = cTpl{} +) + +type cTpl struct { + g.Meta `name:"tpl" brief:"{cTplBrief}" dc:"{cTplDc}"` +} + +const ( + cTplBrief = `template parsing and building commands` + cTplDc = ` +The "tpl" command is used for template parsing and building purpose. +It can parse either template file or folder with multiple types of values support, +like json/xml/yaml/toml/ini. +` + cTplParseBrief = `parse either template file or folder with multiple types of values` + cTplParseEg = ` +gf tpl parse -p ./template -v values.json -r +gf tpl parse -p ./template -v values.json -n *.tpl -r +gf tpl parse -p ./template -v values.json -d '${{,}}' -r +gf tpl parse -p ./template -v values.json -o ./template.parsed +` + cTplSupportValuesFilePattern = `*.json,*.xml,*.yaml,*.yml,*.toml,*.ini` +) + +type ( + cTplParseInput struct { + g.Meta `name:"parse" config:"gfcli.tpl.parse" brief:"{cTplParseBrief}" eg:"{cTplParseEg}"` + Path string `name:"path" short:"p" brief:"template file or folder path" v:"required"` + Pattern string `name:"pattern" short:"n" brief:"template file pattern when path is a folder, default is:*" d:"*"` + Recursive bool `name:"recursive" short:"c" brief:"recursively parsing files if path is folder, default is:true" d:"true"` + Values string `name:"values" short:"v" brief:"template values file/folder, support file types like: json/xml/yaml/toml/ini" v:"required"` + Output string `name:"output" short:"o" brief:"output file/folder path"` + Delimiters string `name:"delimiters" short:"d" brief:"delimiters for template content parsing, default is:{{,}}" d:"{{,}}"` + Replace bool `name:"replace" short:"r" brief:"replace original files" orphan:"true"` + } + cTplParseOutput struct{} +) + +func init() { + gtag.Sets(g.MapStrStr{ + `cTplBrief`: cTplBrief, + `cTplDc`: cTplDc, + `cTplParseEg`: cTplParseEg, + `cTplParseBrief`: cTplParseBrief, + }) +} + +func (c *cTpl) Parse(ctx context.Context, in cTplParseInput) (out *cTplParseOutput, err error) { + if in.Output == "" && !in.Replace { + return nil, gerror.New(`parameter output and replace should not be both empty`) + } + delimiters := gstr.SplitAndTrim(in.Delimiters, ",") + mlog.Debugf("delimiters input:%s, parsed:%#v", in.Delimiters, delimiters) + if len(delimiters) != 2 { + return nil, gerror.Newf(`invalid delimiters: %s`, in.Delimiters) + } + g.View().SetDelimiters(delimiters[0], delimiters[1]) + valuesMap, err := c.loadValues(ctx, in.Values) + if err != nil { + return nil, err + } + if len(valuesMap) == 0 { + return nil, gerror.Newf(`empty values loaded from values file/folder "%s"`, in.Values) + } + err = c.parsePath(ctx, valuesMap, in) + if err == nil { + mlog.Print("done!") + } + return +} + +func (c *cTpl) parsePath(ctx context.Context, values g.Map, in cTplParseInput) (err error) { + if !gfile.Exists(in.Path) { + return gerror.Newf(`path "%s" does not exist`, in.Path) + } + var ( + path string + files []string + relativePath string + outputPath string + ) + path = gfile.RealPath(in.Path) + if gfile.IsDir(path) { + files, err = gfile.ScanDirFile(path, in.Pattern, in.Recursive) + if err != nil { + return err + } + for _, file := range files { + relativePath = gstr.Replace(file, path, "") + if in.Output != "" { + outputPath = gfile.Join(in.Output, relativePath) + } + if err = c.parseFile(ctx, file, outputPath, values, in); err != nil { + return + } + } + return + } + if in.Output != "" { + outputPath = in.Output + } + err = c.parseFile(ctx, path, outputPath, values, in) + return +} + +func (c *cTpl) parseFile(ctx context.Context, file string, output string, values g.Map, in cTplParseInput) (err error) { + output = gstr.ReplaceByMap(output, g.MapStrStr{ + `\\`: `\`, + `//`: `/`, + }) + content, err := g.View().Parse(ctx, file, values) + if err != nil { + return err + } + if output != "" { + mlog.Printf(`parse file "%s" to "%s"`, file, output) + return gfile.PutContents(output, content) + } + if in.Replace { + mlog.Printf(`parse and replace file "%s"`, file) + return gfile.PutContents(file, content) + } + return nil +} + +func (c *cTpl) loadValues(ctx context.Context, valuesPath string) (data g.Map, err error) { + if !gfile.Exists(valuesPath) { + return nil, gerror.Newf(`values file/folder "%s" does not exist`, valuesPath) + } + var j *gjson.Json + if gfile.IsDir(valuesPath) { + var valueFiles []string + valueFiles, err = gfile.ScanDirFile(valuesPath, cTplSupportValuesFilePattern, true) + if err != nil { + return nil, err + } + data = make(g.Map) + for _, file := range valueFiles { + if j, err = gjson.Load(file); err != nil { + return nil, err + } + gutil.MapMerge(data, j.Map()) + } + return + } + if j, err = gjson.Load(valuesPath); err != nil { + return nil, err + } + data = j.Map() + return +} diff --git a/server/internal/library/hggen/internal/cmd/cmd_up.go b/server/internal/library/hggen/internal/cmd/cmd_up.go new file mode 100644 index 0000000..1b12686 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_up.go @@ -0,0 +1,279 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "context" + "fmt" + "runtime" + + "github.com/gogf/selfupdate" + + "github.com/gogf/gf/v2/container/gset" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/genv" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gproc" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gtag" + + "hotgo/internal/library/hggen/internal/utility/mlog" + "hotgo/internal/library/hggen/internal/utility/utils" +) + +var ( + Up = cUp{} +) + +type cUp struct { + g.Meta `name:"up" brief:"upgrade GoFrame version/tool to latest one in current project" eg:"{cUpEg}" ` +} + +const ( + gfPackage = `github.com/gogf/gf/` + cUpEg = ` +gf up +gf up -a +gf up -c +gf up -cf +gf up -a -m=install +gf up -a -m=install -p=github.com/gogf/gf/cmd/gf/v2@latest +` + cliMethodHttpDownload = "http" + cliMethodGoInstall = "install" +) + +func init() { + gtag.Sets(g.MapStrStr{ + `cUpEg`: cUpEg, + }) +} + +type cUpInput struct { + g.Meta `name:"up" config:"gfcli.up"` + All bool `name:"all" short:"a" brief:"upgrade both version and cli, auto fix codes" orphan:"true"` + Cli bool `name:"cli" short:"c" brief:"also upgrade CLI tool" orphan:"true"` + Fix bool `name:"fix" short:"f" brief:"auto fix codes(it only make sense if cli is to be upgraded)" orphan:"true"` + CliDownloadingMethod string `name:"cli-download-method" short:"m" brief:"cli upgrade method: http=download binary via HTTP GET, install=upgrade via go install" d:"http"` + // CliModulePath specifies the module path for CLI installation via go install. + // This is used when CliDownloadingMethod is set to "install". + CliModulePath string `name:"cli-module-path" short:"p" brief:"custom cli module path for upgrade CLI tool with go install method" d:"github.com/gogf/gf/cmd/gf/v2@latest"` +} + +type cUpOutput struct{} + +func (c cUp) Index(ctx context.Context, in cUpInput) (out *cUpOutput, err error) { + defer func() { + if err == nil { + mlog.Print() + mlog.Print(`👏congratulations! you've upgraded to the latest version of GoFrame! enjoy it!👏`) + mlog.Print() + } + }() + + var doUpgradeVersionOut *doUpgradeVersionOutput + if in.All { + in.Cli = true + in.Fix = true + } + if doUpgradeVersionOut, err = c.doUpgradeVersion(ctx, in); err != nil { + return nil, err + } + + if in.Cli { + if err = c.doUpgradeCLI(ctx, in); err != nil { + return nil, err + } + } + + if in.Cli && in.Fix { + if doUpgradeVersionOut != nil && len(doUpgradeVersionOut.Items) > 0 { + upgradedPathSet := gset.NewStrSet() + for _, item := range doUpgradeVersionOut.Items { + if !upgradedPathSet.AddIfNotExist(item.DirPath) { + continue + } + if err = c.doAutoFixing(ctx, item.DirPath, item.Version); err != nil { + return nil, err + } + } + } + } + return +} + +type doUpgradeVersionOutput struct { + Items []doUpgradeVersionOutputItem +} + +type doUpgradeVersionOutputItem struct { + DirPath string + Version string +} + +func (c cUp) doUpgradeVersion(ctx context.Context, in cUpInput) (out *doUpgradeVersionOutput, err error) { + mlog.Print(`start upgrading version...`) + out = &doUpgradeVersionOutput{ + Items: make([]doUpgradeVersionOutputItem, 0), + } + type Package struct { + Name string + Version string + } + + var ( + temp string + dirPath = gfile.Pwd() + goModPath = gfile.Join(dirPath, "go.mod") + ) + // It recursively upgrades the go.mod from sub folder to its parent folders. + for { + if gfile.Exists(goModPath) { + var packages []Package + err = gfile.ReadLines(goModPath, func(line string) error { + line = gstr.Trim(line) + line = gstr.TrimLeftStr(line, "require ") + line = gstr.Trim(line) + if gstr.HasPrefix(line, gfPackage) { + array := gstr.SplitAndTrim(line, " ") + packages = append(packages, Package{ + Name: array[0], + Version: array[1], + }) + } + return nil + }) + if err != nil { + return + } + for _, pkg := range packages { + mlog.Printf(`upgrading "%s" from "%s" to "latest"`, pkg.Name, pkg.Version) + mlog.Printf(`running command: go get %s@latest`, pkg.Name) + // go get @latest + command := fmt.Sprintf(`cd %s && go get %s@latest`, dirPath, pkg.Name) + if err = gproc.ShellRun(ctx, command); err != nil { + return + } + // go mod tidy + if err = utils.GoModTidy(ctx, dirPath); err != nil { + return nil, err + } + out.Items = append(out.Items, doUpgradeVersionOutputItem{ + DirPath: dirPath, + Version: pkg.Version, + }) + } + return + } + temp = gfile.Dir(dirPath) + if temp == "" || temp == dirPath { + return + } + dirPath = temp + goModPath = gfile.Join(dirPath, "go.mod") + } +} + +// doUpgradeCLI downloads the new version binary with process. +func (c cUp) doUpgradeCLI(ctx context.Context, in cUpInput) (err error) { + mlog.Print(`start upgrading cli...`) + fmt.Println(` cli upgrade method:`, in.CliDownloadingMethod) + switch in.CliDownloadingMethod { + case cliMethodHttpDownload: + return c.doUpgradeCLIWithHttpDownload(ctx) + case cliMethodGoInstall: + return c.doUpgradeCLIWithGoInstall(ctx, in) + default: + mlog.Fatalf(`invalid cli upgrade method: "%s", please use "http" or "install"`, in.CliDownloadingMethod) + } + return +} + +func (c cUp) doUpgradeCLIWithHttpDownload(ctx context.Context) (err error) { + mlog.Print(`start upgrading cli with http get download...`) + var ( + downloadUrl = fmt.Sprintf( + `https://github.com/gogf/gf/releases/latest/download/gf_%s_%s`, + runtime.GOOS, runtime.GOARCH, + ) + localSaveFilePath = gfile.SelfPath() + "~" + ) + + if runtime.GOOS == "windows" { + downloadUrl += ".exe" + } + + mlog.Printf(`start downloading "%s" to "%s", it may take some time`, downloadUrl, localSaveFilePath) + err = utils.HTTPDownloadFileWithPercent(downloadUrl, localSaveFilePath) + if err != nil { + return err + } + + defer func() { + mlog.Printf(`new version cli binary is successfully installed to "%s"`, gfile.SelfPath()) + mlog.Printf(`remove temporary buffer file "%s"`, localSaveFilePath) + _ = gfile.RemoveFile(localSaveFilePath) + }() + + // It fails if file not exist or its size is less than 1MB. + if !gfile.Exists(localSaveFilePath) || gfile.Size(localSaveFilePath) < 1024*1024 { + mlog.Fatalf(`download "%s" to "%s" failed`, downloadUrl, localSaveFilePath) + } + + newFile, err := gfile.Open(localSaveFilePath) + if err != nil { + return err + } + // selfupdate + err = selfupdate.Apply(newFile, selfupdate.Options{}) + if err != nil { + return err + } + return +} + +func (c cUp) doUpgradeCLIWithGoInstall(ctx context.Context, in cUpInput) (err error) { + mlog.Print(`upgrading cli with go install...`) + if !genv.Contains("GOPATH") { + mlog.Fatal(`"GOPATH" environment variable does not exist, please check your go installation`) + } + + command := fmt.Sprintf(`go install %s`, in.CliModulePath) + mlog.Printf(`running command: %s`, command) + err = gproc.ShellRun(ctx, command) + if err != nil { + return err + } + + cliFilePath := gfile.Join(genv.Get("GOPATH").String(), "bin/gf") + if runtime.GOOS == "windows" { + cliFilePath += ".exe" + } + + // It fails if file not exist or its size is less than 1MB. + if !gfile.Exists(cliFilePath) || gfile.Size(cliFilePath) < 1024*1024 { + mlog.Fatalf(`go install %s failed, "%s" does not exist or its size is less than 1MB`, in.CliModulePath, cliFilePath) + } + + newFile, err := gfile.Open(cliFilePath) + if err != nil { + return err + } + // selfupdate + err = selfupdate.Apply(newFile, selfupdate.Options{}) + if err != nil { + return err + } + return +} + +func (c cUp) doAutoFixing(ctx context.Context, dirPath string, version string) (err error) { + mlog.Printf(`auto fixing directory path "%s" from version "%s" ...`, dirPath, version) + command := fmt.Sprintf(`gf fix -p %s`, dirPath) + _ = gproc.ShellRun(ctx, command) + return +} diff --git a/server/internal/library/hggen/internal/cmd/cmd_version.go b/server/internal/library/hggen/internal/cmd/cmd_version.go new file mode 100644 index 0000000..420d588 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/cmd_version.go @@ -0,0 +1,162 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package cmd + +import ( + "bytes" + "context" + "fmt" + "runtime" + "strings" + "time" + + "github.com/gogf/gf/v2" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gbuild" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gproc" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +var ( + Version = cVersion{} +) + +const ( + defaultIndent = "{{indent}}" +) + +type cVersion struct { + g.Meta `name:"version" brief:"show version information of current binary"` +} + +type cVersionInput struct { + g.Meta `name:"version"` +} + +type cVersionOutput struct{} + +func (c cVersion) Index(ctx context.Context, in cVersionInput) (*cVersionOutput, error) { + detailBuffer := &detailBuffer{} + detailBuffer.WriteString(fmt.Sprintf("%s", gf.VERSION)) + + detailBuffer.appendLine(0, "Welcome to GoFrame!") + + detailBuffer.appendLine(0, "Env Detail:") + goVersion, ok := getGoVersion() + if ok { + detailBuffer.appendLine(1, fmt.Sprintf("Go Version: %s", goVersion)) + detailBuffer.appendLine(1, fmt.Sprintf("GF Version(go.mod): %s", getGoFrameVersion(2))) + } else { + v, err := c.getGFVersionOfCurrentProject() + if err == nil { + detailBuffer.appendLine(1, fmt.Sprintf("GF Version(go.mod): %s", v)) + } else { + detailBuffer.appendLine(1, fmt.Sprintf("GF Version(go.mod): %s", err.Error())) + } + } + + detailBuffer.appendLine(0, "CLI Detail:") + detailBuffer.appendLine(1, fmt.Sprintf("Installed At: %s", gfile.SelfPath())) + info := gbuild.Info() + if info.GoFrame == "" { + detailBuffer.appendLine(1, fmt.Sprintf("Built Go Version: %s", runtime.Version())) + detailBuffer.appendLine(1, fmt.Sprintf("Built GF Version: %s", gf.VERSION)) + } else { + if info.Git == "" { + info.Git = "none" + } + detailBuffer.appendLine(1, fmt.Sprintf("Built Go Version: %s", info.Golang)) + detailBuffer.appendLine(1, fmt.Sprintf("Built GF Version: %s", info.GoFrame)) + detailBuffer.appendLine(1, fmt.Sprintf("Git Commit: %s", info.Git)) + detailBuffer.appendLine(1, fmt.Sprintf("Built Time: %s", info.Time)) + } + + detailBuffer.appendLine(0, "Others Detail:") + detailBuffer.appendLine(1, "Docs: https://goframe.org") + detailBuffer.appendLine(1, fmt.Sprintf("Now : %s", time.Now().Format(time.RFC3339))) + + mlog.Print(detailBuffer.replaceAllIndent(" ")) + return nil, nil +} + +// detailBuffer is a buffer for detail information. +type detailBuffer struct { + bytes.Buffer +} + +// appendLine appends a line to the buffer with given indent level. +func (d *detailBuffer) appendLine(indentLevel int, line string) { + d.WriteString(fmt.Sprintf("\n%s%s", strings.Repeat(defaultIndent, indentLevel), line)) +} + +// replaceAllIndent replaces the tab with given indent string and prints the buffer content. +func (d *detailBuffer) replaceAllIndent(indentStr string) string { + return strings.ReplaceAll(d.String(), defaultIndent, indentStr) +} + +// getGoFrameVersion returns the goframe version of current project using. +func getGoFrameVersion(indentLevel int) (gfVersion string) { + pkgInfo, err := gproc.ShellExec(context.Background(), `go list -f "{{if (not .Main)}}{{.Path}}@{{.Version}}{{end}}" -m all`) + if err != nil { + return "cannot find go.mod" + } + pkgList := gstr.Split(pkgInfo, "\n") + for _, v := range pkgList { + if strings.HasPrefix(v, "github.com/gogf/gf") { + gfVersion += fmt.Sprintf("\n%s%s", strings.Repeat(defaultIndent, indentLevel), v) + } + } + return +} + +// getGoVersion returns the go version +func getGoVersion() (goVersion string, ok bool) { + goVersion, err := gproc.ShellExec(context.Background(), "go version") + if err != nil { + return "", false + } + goVersion = gstr.TrimLeftStr(goVersion, "go version ") + goVersion = gstr.TrimRightStr(goVersion, "\n") + return goVersion, true +} + +// getGFVersionOfCurrentProject checks and returns the GoFrame version current project using. +func (c cVersion) getGFVersionOfCurrentProject() (string, error) { + goModPath := gfile.Join(gfile.Pwd(), "go.mod") + if gfile.Exists(goModPath) { + lines := gstr.SplitAndTrim(gfile.GetContents(goModPath), "\n") + for _, line := range lines { + line = gstr.Trim(line) + line = gstr.TrimLeftStr(line, "require ") + line = gstr.Trim(line) + // Version 1. + match, err := gregex.MatchString(`^github\.com/gogf/gf\s+(.+)$`, line) + if err != nil { + return "", err + } + if len(match) <= 1 { + // Version > 1. + match, err = gregex.MatchString(`^github\.com/gogf/gf/v\d\s+(.+)$`, line) + if err != nil { + return "", err + } + } + if len(match) > 1 { + return gstr.Trim(match[1]), nil + } + } + + return "", gerror.New("cannot find goframe requirement in go.mod") + } else { + return "", gerror.New("cannot find go.mod") + } +} diff --git a/server/internal/library/hggen/internal/cmd/genctrl/genctrl.go b/server/internal/library/hggen/internal/cmd/genctrl/genctrl.go new file mode 100644 index 0000000..c62ff22 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genctrl/genctrl.go @@ -0,0 +1,238 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genctrl + +import ( + "context" + + "github.com/gogf/gf/v2/container/gset" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gtime" + "github.com/gogf/gf/v2/util/gconv" + "github.com/gogf/gf/v2/util/gtag" + + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +const ( + CGenCtrlConfig = `gfcli.gen.ctrl` + CGenCtrlUsage = `gf gen ctrl [OPTION]` + CGenCtrlBrief = `parse api definitions to generate controller/sdk go files` + CGenCtrlEg = ` +gf gen ctrl +` + CGenCtrlBriefSrcFolder = `source folder path to be parsed. default: api` + CGenCtrlBriefDstFolder = `destination folder path storing automatically generated go files. default: internal/controller` + CGenCtrlBriefWatchFile = `used in file watcher, it re-generates go files only if given file is under srcFolder` + CGenCtrlBriefSdkPath = `also generate SDK go files for api definitions to specified directory` + CGenCtrlBriefSdkStdVersion = `use standard version prefix for generated sdk request path` + CGenCtrlBriefSdkNoV1 = `do not add version suffix for interface module name if version is v1` + CGenCtrlBriefClear = `auto delete generated and unimplemented controller go files if api definitions are missing` + CGenCtrlControllerMerge = `generate all controller files into one go file by name of api definition source go file` +) + +const ( + PatternCtrlDefinition = `func\s+\(.+?\)\s+\w+\(.+?\*(\w+)\.(\w+)Req\)\s+\(.+?\*(\w+)\.(\w+)Res,\s+\w+\s+error\)\s+{` +) + +const ( + genCtrlFileLockSeconds = 10 +) + +func init() { + gtag.Sets(g.MapStrStr{ + `CGenCtrlConfig`: CGenCtrlConfig, + `CGenCtrlUsage`: CGenCtrlUsage, + `CGenCtrlBrief`: CGenCtrlBrief, + `CGenCtrlEg`: CGenCtrlEg, + `CGenCtrlBriefSrcFolder`: CGenCtrlBriefSrcFolder, + `CGenCtrlBriefDstFolder`: CGenCtrlBriefDstFolder, + `CGenCtrlBriefWatchFile`: CGenCtrlBriefWatchFile, + `CGenCtrlBriefSdkPath`: CGenCtrlBriefSdkPath, + `CGenCtrlBriefSdkStdVersion`: CGenCtrlBriefSdkStdVersion, + `CGenCtrlBriefSdkNoV1`: CGenCtrlBriefSdkNoV1, + `CGenCtrlBriefClear`: CGenCtrlBriefClear, + `CGenCtrlControllerMerge`: CGenCtrlControllerMerge, + }) +} + +type ( + CGenCtrl struct{} + CGenCtrlInput struct { + g.Meta `name:"ctrl" config:"{CGenCtrlConfig}" usage:"{CGenCtrlUsage}" brief:"{CGenCtrlBrief}" eg:"{CGenCtrlEg}"` + SrcFolder string `short:"s" name:"srcFolder" brief:"{CGenCtrlBriefSrcFolder}" d:"api"` + DstFolder string `short:"d" name:"dstFolder" brief:"{CGenCtrlBriefDstFolder}" d:"internal/controller"` + WatchFile string `short:"w" name:"watchFile" brief:"{CGenCtrlBriefWatchFile}"` + SdkPath string `short:"k" name:"sdkPath" brief:"{CGenCtrlBriefSdkPath}"` + SdkStdVersion bool `short:"v" name:"sdkStdVersion" brief:"{CGenCtrlBriefSdkStdVersion}" orphan:"true"` + SdkNoV1 bool `short:"n" name:"sdkNoV1" brief:"{CGenCtrlBriefSdkNoV1}" orphan:"true"` + Clear bool `short:"c" name:"clear" brief:"{CGenCtrlBriefClear}" orphan:"true"` + Merge bool `short:"m" name:"merge" brief:"{CGenCtrlControllerMerge}" orphan:"true"` + } + CGenCtrlOutput struct{} +) + +func (c CGenCtrl) Ctrl(ctx context.Context, in CGenCtrlInput) (out *CGenCtrlOutput, err error) { + if in.WatchFile != "" { + err = c.generateByWatchFile( + in.WatchFile, in.SdkPath, in.SdkStdVersion, in.SdkNoV1, in.Clear, in.Merge, + ) + mlog.Print(`done!`) + return + } + + if !gfile.Exists(in.SrcFolder) { + mlog.Fatalf(`source folder path "%s" does not exist`, in.SrcFolder) + } + // retrieve all api modules. + apiModuleFolderPaths, err := gfile.ScanDir(in.SrcFolder, "*", false) + if err != nil { + return nil, err + } + for _, apiModuleFolderPath := range apiModuleFolderPaths { + if !gfile.IsDir(apiModuleFolderPath) { + continue + } + // generate go files by api module. + var ( + module = gfile.Basename(apiModuleFolderPath) + dstModuleFolderPath = gfile.Join(in.DstFolder, module) + ) + err = c.generateByModule( + apiModuleFolderPath, dstModuleFolderPath, in.SdkPath, + in.SdkStdVersion, in.SdkNoV1, in.Clear, in.Merge, + ) + if err != nil { + return nil, err + } + } + + mlog.Print(`done!`) + return +} + +func (c CGenCtrl) generateByWatchFile(watchFile, sdkPath string, sdkStdVersion, sdkNoV1, clear, merge bool) (err error) { + // File lock to avoid multiple processes. + var ( + flockFilePath = gfile.Temp("gf.cli.gen.service.lock") + flockContent = gfile.GetContents(flockFilePath) + ) + if flockContent != "" { + if gtime.Timestamp()-gconv.Int64(flockContent) < genCtrlFileLockSeconds { + // If another generating process is running, it just exits. + mlog.Debug(`another "gen service" process is running, exit`) + return + } + } + defer gfile.RemoveFile(flockFilePath) + _ = gfile.PutContents(flockFilePath, gtime.TimestampStr()) + + // check this updated file is an api file. + // watch file should be in standard goframe project structure. + var ( + apiVersionPath = gfile.Dir(watchFile) + apiModuleFolderPath = gfile.Dir(apiVersionPath) + shouldBeNameOfAPi = gfile.Basename(gfile.Dir(apiModuleFolderPath)) + ) + if shouldBeNameOfAPi != "api" { + return nil + } + // watch file should have api definitions. + if gfile.Exists(watchFile) { + structsInfo, err := c.getStructsNameInSrc(watchFile) + if err != nil { + return err + } + if len(structsInfo) == 0 { + return nil + } + } + + var ( + projectRootPath = gfile.Dir(gfile.Dir(apiModuleFolderPath)) + module = gfile.Basename(apiModuleFolderPath) + dstModuleFolderPath = gfile.Join(projectRootPath, "internal", "controller", module) + ) + return c.generateByModule( + apiModuleFolderPath, dstModuleFolderPath, sdkPath, sdkStdVersion, sdkNoV1, clear, merge, + ) +} + +// parseApiModule parses certain api and generate associated go files by certain module, not all api modules. +func (c CGenCtrl) generateByModule( + apiModuleFolderPath, dstModuleFolderPath, sdkPath string, + sdkStdVersion, sdkNoV1, clear, merge bool, +) (err error) { + // parse src and dst folder go files. + apiItemsInSrc, err := c.getApiItemsInSrc(apiModuleFolderPath) + if err != nil { + return err + } + apiItemsInDst, err := c.getApiItemsInDst(dstModuleFolderPath) + if err != nil { + return err + } + + // generate api interface go files. + if err = newApiInterfaceGenerator().Generate(apiModuleFolderPath, apiItemsInSrc); err != nil { + return + } + + // generate controller go files. + // api filtering for already implemented api controllers. + var ( + alreadyImplementedCtrlSet = gset.NewStrSet() + toBeImplementedApiItems = make([]apiItem, 0) + ) + for _, item := range apiItemsInDst { + alreadyImplementedCtrlSet.Add(item.String()) + } + for _, item := range apiItemsInSrc { + if alreadyImplementedCtrlSet.Contains(item.String()) { + continue + } + toBeImplementedApiItems = append(toBeImplementedApiItems, item) + } + if len(toBeImplementedApiItems) > 0 { + err = newControllerGenerator().Generate(dstModuleFolderPath, toBeImplementedApiItems, merge) + if err != nil { + return + } + } + + // delete unimplemented controllers if api definitions are missing. + if clear { + var ( + apiDefinitionSet = gset.NewStrSet() + extraApiItemsInCtrl = make([]apiItem, 0) + ) + for _, item := range apiItemsInSrc { + apiDefinitionSet.Add(item.String()) + } + for _, item := range apiItemsInDst { + if apiDefinitionSet.Contains(item.String()) { + continue + } + extraApiItemsInCtrl = append(extraApiItemsInCtrl, item) + } + if len(extraApiItemsInCtrl) > 0 { + err = newControllerClearer().Clear(dstModuleFolderPath, extraApiItemsInCtrl) + if err != nil { + return + } + } + } + + // generate sdk go files. + if sdkPath != "" { + if err = newApiSdkGenerator().Generate(apiItemsInSrc, sdkPath, sdkStdVersion, sdkNoV1); err != nil { + return + } + } + return +} diff --git a/server/internal/library/hggen/internal/cmd/genctrl/genctrl_api_item.go b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_api_item.go new file mode 100644 index 0000000..c502e3e --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_api_item.go @@ -0,0 +1,37 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genctrl + +import ( + "fmt" + + "github.com/gogf/gf/v2/text/gstr" +) + +type apiItem struct { + Import string `eg:"demo.com/api/user/v1"` + FileName string `eg:"user"` + Module string `eg:"user"` + Version string `eg:"v1"` + MethodName string `eg:"GetList"` + Comment string `eg:"GetList get list"` +} + +func (a apiItem) String() string { + return gstr.Join([]string{ + a.Import, a.Module, a.Version, a.MethodName, + }, ",") +} + +// GetComment returns the comment of apiItem. +func (a apiItem) GetComment() string { + if a.Comment == "" { + return "" + } + // format for handling comments + return fmt.Sprintf("\n// %s %s", a.MethodName, a.Comment) +} diff --git a/server/internal/library/hggen/internal/cmd/genctrl/genctrl_ast_parse.go b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_ast_parse.go new file mode 100644 index 0000000..9f87bf5 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_ast_parse.go @@ -0,0 +1,95 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genctrl + +import ( + "bytes" + "go/ast" + "go/parser" + "go/printer" + "go/token" + + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/text/gstr" +) + +type structInfo struct { + structName string + comment string +} + +// getStructsNameInSrc retrieves all struct names and comment +// that end in "Req" and have "g.Meta" in their body. +func (c CGenCtrl) getStructsNameInSrc(filePath string) (structInfos []*structInfo, err error) { + var ( + fileContent = gfile.GetContents(filePath) + fileSet = token.NewFileSet() + ) + + node, err := parser.ParseFile(fileSet, "", fileContent, parser.ParseComments) + if err != nil { + return + } + + ast.Inspect(node, func(n ast.Node) bool { + if typeSpec, ok := n.(*ast.TypeSpec); ok { + structName := typeSpec.Name.Name + if !gstr.HasSuffix(structName, "Req") { + // ignore struct name that do not end in "Req" + return true + } + if structType, ok := typeSpec.Type.(*ast.StructType); ok { + var buf bytes.Buffer + if err := printer.Fprint(&buf, fileSet, structType); err != nil { + return false + } + // ignore struct name that match a request, but has no g.Meta in its body. + if !gstr.Contains(buf.String(), `g.Meta`) { + return true + } + + comment := typeSpec.Doc.Text() + // remove the struct name from the comment + if gstr.HasPrefix(comment, structName) { + comment = gstr.TrimLeftStr(comment, structName, 1) + } + // remove the comment \n or space + comment = gstr.Trim(comment) + + structInfos = append(structInfos, &structInfo{ + structName: structName, + comment: comment, + }) + } + } + return true + }) + + return +} + +// getImportsInDst retrieves all import paths in the file. +func (c CGenCtrl) getImportsInDst(filePath string) (imports []string, err error) { + var ( + fileContent = gfile.GetContents(filePath) + fileSet = token.NewFileSet() + ) + + node, err := parser.ParseFile(fileSet, "", fileContent, parser.ParseComments) + if err != nil { + return + } + + ast.Inspect(node, func(n ast.Node) bool { + if imp, ok := n.(*ast.ImportSpec); ok { + imports = append(imports, imp.Path.Value) + } + return true + }) + + return +} diff --git a/server/internal/library/hggen/internal/cmd/genctrl/genctrl_ast_parse_clear.go b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_ast_parse_clear.go new file mode 100644 index 0000000..a1bd739 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_ast_parse_clear.go @@ -0,0 +1,43 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genctrl + +import ( + "bytes" + "go/ast" + "go/parser" + "go/printer" + "go/token" + + "github.com/gogf/gf/v2/os/gfile" +) + +// getFuncInDst retrieves all function declarations and bodies in the file. +func (c *controllerClearer) getFuncInDst(filePath string) (funcs []string, err error) { + var ( + fileContent = gfile.GetContents(filePath) + fileSet = token.NewFileSet() + ) + + node, err := parser.ParseFile(fileSet, "", fileContent, parser.ParseComments) + if err != nil { + return + } + + ast.Inspect(node, func(n ast.Node) bool { + if fun, ok := n.(*ast.FuncDecl); ok { + var buf bytes.Buffer + if err := printer.Fprint(&buf, fileSet, fun); err != nil { + return false + } + funcs = append(funcs, buf.String()) + } + return true + }) + + return +} diff --git a/server/internal/library/hggen/internal/cmd/genctrl/genctrl_calculate.go b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_calculate.go new file mode 100644 index 0000000..62818a4 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_calculate.go @@ -0,0 +1,137 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genctrl + +import ( + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/utility/utils" +) + +func (c CGenCtrl) getApiItemsInSrc(apiModuleFolderPath string) (items []apiItem, err error) { + var importPath string + // The second level folders: versions. + apiVersionFolderPaths, err := gfile.ScanDir(apiModuleFolderPath, "*", false) + if err != nil { + return nil, err + } + for _, apiVersionFolderPath := range apiVersionFolderPaths { + if !gfile.IsDir(apiVersionFolderPath) { + continue + } + // The second level folders: versions. + apiFileFolderPaths, err := gfile.ScanDir(apiVersionFolderPath, "*.go", false) + if err != nil { + return nil, err + } + importPath = utils.GetImportPath(apiVersionFolderPath) + for _, apiFileFolderPath := range apiFileFolderPaths { + if gfile.IsDir(apiFileFolderPath) { + continue + } + structsInfo, err := c.getStructsNameInSrc(apiFileFolderPath) + if err != nil { + return nil, err + } + for _, s := range structsInfo { + // remove end "Req" + methodName := gstr.TrimRightStr(s.structName, "Req", 1) + item := apiItem{ + Import: gstr.Trim(importPath, `"`), + FileName: gfile.Name(apiFileFolderPath), + Module: gfile.Basename(apiModuleFolderPath), + Version: gfile.Basename(apiVersionFolderPath), + MethodName: methodName, + Comment: s.comment, + } + items = append(items, item) + } + } + } + return +} + +func (c CGenCtrl) getApiItemsInDst(dstFolder string) (items []apiItem, err error) { + if !gfile.Exists(dstFolder) { + return nil, nil + } + type importItem struct { + Path string + Alias string + } + filePaths, err := gfile.ScanDir(dstFolder, "*.go", true) + if err != nil { + return nil, err + } + for _, filePath := range filePaths { + var ( + array []string + importItems []importItem + importLines []string + module = gfile.Basename(gfile.Dir(filePath)) + ) + importLines, err = c.getImportsInDst(filePath) + if err != nil { + return nil, err + } + + // retrieve all imports. + for _, importLine := range importLines { + array = gstr.SplitAndTrim(importLine, " ") + if len(array) == 2 { + importItems = append(importItems, importItem{ + Path: gstr.Trim(array[1], `"`), + Alias: array[0], + }) + } else { + importItems = append(importItems, importItem{ + Path: gstr.Trim(array[0], `"`), + }) + } + } + // retrieve all api usages. + // retrieve it without using AST, but use regular expressions to retrieve. + // It's because the api definition is simple and regular. + // Use regular expressions to get better performance. + fileContent := gfile.GetContents(filePath) + matches, err := gregex.MatchAllString(PatternCtrlDefinition, fileContent) + if err != nil { + return nil, err + } + for _, match := range matches { + // try to find the import path of the api. + var ( + importPath string + version = match[1] + methodName = match[2] // not the function name, but the method name in api definition. + ) + for _, item := range importItems { + if item.Alias != "" { + if item.Alias == version { + importPath = item.Path + break + } + continue + } + if gfile.Basename(item.Path) == version { + importPath = item.Path + break + } + } + item := apiItem{ + Import: gstr.Trim(importPath, `"`), + Module: module, + Version: gfile.Basename(importPath), + MethodName: methodName, + } + items = append(items, item) + } + } + return +} diff --git a/server/internal/library/hggen/internal/cmd/genctrl/genctrl_generate_ctrl.go b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_generate_ctrl.go new file mode 100644 index 0000000..08cb33e --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_generate_ctrl.go @@ -0,0 +1,231 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genctrl + +import ( + "fmt" + "path/filepath" + "strings" + + "github.com/gogf/gf/v2/container/gset" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/consts" + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +type controllerGenerator struct{} + +func newControllerGenerator() *controllerGenerator { + return &controllerGenerator{} +} + +func (c *controllerGenerator) Generate(dstModuleFolderPath string, apiModuleApiItems []apiItem, merge bool) (err error) { + var ( + doneApiItemSet = gset.NewStrSet() + ) + for _, item := range apiModuleApiItems { + if doneApiItemSet.Contains(item.String()) { + continue + } + // retrieve all api items of the same module. + var ( + subItems = c.getSubItemsByModuleAndVersion(apiModuleApiItems, item.Module, item.Version) + importPath = gstr.Replace(gfile.Dir(item.Import), "\\", "/", -1) + ) + if err = c.doGenerateCtrlNewByModuleAndVersion( + dstModuleFolderPath, item.Module, item.Version, importPath, + ); err != nil { + return + } + + // use -merge + if merge { + err = c.doGenerateCtrlMergeItem(dstModuleFolderPath, subItems, doneApiItemSet) + continue + } + + for _, subItem := range subItems { + err = c.doGenerateCtrlItem(dstModuleFolderPath, subItem) + if err != nil { + return + } + doneApiItemSet.Add(subItem.String()) + } + } + return +} + +func (c *controllerGenerator) getSubItemsByModuleAndVersion(items []apiItem, module, version string) (subItems []apiItem) { + for _, item := range items { + if item.Module == module && item.Version == version { + subItems = append(subItems, item) + } + } + return +} + +func (c *controllerGenerator) doGenerateCtrlNewByModuleAndVersion( + dstModuleFolderPath, module, version, importPath string, +) (err error) { + var ( + moduleFilePath = filepath.FromSlash(gfile.Join(dstModuleFolderPath, module+".go")) + moduleFilePathNew = filepath.FromSlash(gfile.Join(dstModuleFolderPath, module+"_new.go")) + ctrlName = fmt.Sprintf(`Controller%s`, gstr.UcFirst(version)) + interfaceName = fmt.Sprintf(`%s.I%s%s`, module, gstr.CaseCamel(module), gstr.UcFirst(version)) + newFuncName = fmt.Sprintf(`New%s`, gstr.UcFirst(version)) + newFuncNameDefinition = fmt.Sprintf(`func %s()`, newFuncName) + alreadyCreated bool + ) + if !gfile.Exists(moduleFilePath) { + content := gstr.ReplaceByMap(consts.TemplateGenCtrlControllerEmpty, g.MapStrStr{ + "{Module}": module, + }) + if err = gfile.PutContents(moduleFilePath, gstr.TrimLeft(content)); err != nil { + return err + } + mlog.Printf(`generated: %s`, gfile.RealPath(moduleFilePath)) + } + if !gfile.Exists(moduleFilePathNew) { + content := gstr.ReplaceByMap(consts.TemplateGenCtrlControllerNewEmpty, g.MapStrStr{ + "{Module}": module, + "{ImportPath}": fmt.Sprintf(`"%s"`, importPath), + }) + if err = gfile.PutContents(moduleFilePathNew, gstr.TrimLeft(content)); err != nil { + return err + } + mlog.Printf(`generated: %s`, gfile.RealPath(moduleFilePathNew)) + } + filePaths, err := gfile.ScanDir(dstModuleFolderPath, "*.go", false) + if err != nil { + return err + } + for _, filePath := range filePaths { + if gstr.Contains(gfile.GetContents(filePath), newFuncNameDefinition) { + alreadyCreated = true + break + } + } + if !alreadyCreated { + content := gstr.ReplaceByMap(consts.TemplateGenCtrlControllerNewFunc, g.MapStrStr{ + "{CtrlName}": ctrlName, + "{NewFuncName}": newFuncName, + "{InterfaceName}": interfaceName, + }) + err = gfile.PutContentsAppend(moduleFilePathNew, content) + if err != nil { + return err + } + } + return +} + +func (c *controllerGenerator) doGenerateCtrlItem(dstModuleFolderPath string, item apiItem) (err error) { + var ( + methodNameSnake = gstr.CaseSnake(item.MethodName) + ctrlName = fmt.Sprintf(`Controller%s`, gstr.UcFirst(item.Version)) + methodFilePath = filepath.FromSlash(gfile.Join(dstModuleFolderPath, fmt.Sprintf( + `%s_%s_%s.go`, item.Module, item.Version, methodNameSnake, + ))) + ) + var content string + + if gfile.Exists(methodFilePath) { + content = gstr.ReplaceByMap(consts.TemplateGenCtrlControllerMethodFuncMerge, g.MapStrStr{ + "{Module}": item.Module, + "{CtrlName}": ctrlName, + "{Version}": item.Version, + "{MethodName}": item.MethodName, + "{MethodComment}": item.GetComment(), + }) + + if gstr.Contains(gfile.GetContents(methodFilePath), fmt.Sprintf(`func (c *%v) %v(`, ctrlName, item.MethodName)) { + return + } + if err = gfile.PutContentsAppend(methodFilePath, gstr.TrimLeft(content)); err != nil { + return err + } + } else { + content = gstr.ReplaceByMap(consts.TemplateGenCtrlControllerMethodFunc, g.MapStrStr{ + "{Module}": item.Module, + "{ImportPath}": item.Import, + "{CtrlName}": ctrlName, + "{Version}": item.Version, + "{MethodName}": item.MethodName, + "{MethodComment}": item.GetComment(), + }) + if err = gfile.PutContents(methodFilePath, gstr.TrimLeft(content)); err != nil { + return err + } + } + mlog.Printf(`generated: %s`, gfile.RealPath(methodFilePath)) + return +} + +// use -merge +func (c *controllerGenerator) doGenerateCtrlMergeItem(dstModuleFolderPath string, apiItems []apiItem, doneApiSet *gset.StrSet) (err error) { + + type controllerFileItem struct { + module string + version string + importPath string + // Each ctrlFileItem has multiple CTRLs + controllers strings.Builder + } + // It is possible that there are multiple files under one module + ctrlFileItemMap := make(map[string]*controllerFileItem) + + for _, api := range apiItems { + ctrlFileItem, found := ctrlFileItemMap[api.FileName] + if !found { + ctrlFileItem = &controllerFileItem{ + module: api.Module, + version: api.Version, + controllers: strings.Builder{}, + importPath: api.Import, + } + ctrlFileItemMap[api.FileName] = ctrlFileItem + } + + ctrl := gstr.TrimLeft(gstr.ReplaceByMap(consts.TemplateGenCtrlControllerMethodFuncMerge, g.MapStrStr{ + "{Module}": api.Module, + "{CtrlName}": fmt.Sprintf(`Controller%s`, gstr.UcFirst(api.Version)), + "{Version}": api.Version, + "{MethodName}": api.MethodName, + "{MethodComment}": api.GetComment(), + })) + ctrlFileItem.controllers.WriteString(ctrl) + doneApiSet.Add(api.String()) + } + + for ctrlFileName, ctrlFileItem := range ctrlFileItemMap { + ctrlFilePath := gfile.Join(dstModuleFolderPath, fmt.Sprintf( + `%s_%s_%s.go`, ctrlFileItem.module, ctrlFileItem.version, ctrlFileName, + )) + + // This logic is only followed when a new ctrlFileItem is generated + // Most of the rest of the time, the following logic is followed + if !gfile.Exists(ctrlFilePath) { + ctrlFileHeader := gstr.TrimLeft(gstr.ReplaceByMap(consts.TemplateGenCtrlControllerHeader, g.MapStrStr{ + "{Module}": ctrlFileItem.module, + "{ImportPath}": ctrlFileItem.importPath, + })) + err = gfile.PutContents(ctrlFilePath, ctrlFileHeader) + if err != nil { + return err + } + } + + if err = gfile.PutContentsAppend(ctrlFilePath, ctrlFileItem.controllers.String()); err != nil { + return err + } + mlog.Printf(`generated: %s`, gfile.RealPath(ctrlFilePath)) + } + return +} diff --git a/server/internal/library/hggen/internal/cmd/genctrl/genctrl_generate_ctrl_clear.go b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_generate_ctrl_clear.go new file mode 100644 index 0000000..b3fbcc8 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_generate_ctrl_clear.go @@ -0,0 +1,57 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genctrl + +import ( + "fmt" + + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +type controllerClearer struct{} + +func newControllerClearer() *controllerClearer { + return &controllerClearer{} +} + +func (c *controllerClearer) Clear(dstModuleFolderPath string, extraApiItemsInCtrl []apiItem) (err error) { + for _, item := range extraApiItemsInCtrl { + if err = c.doClear(dstModuleFolderPath, item); err != nil { + return err + } + } + return +} + +func (c *controllerClearer) doClear(dstModuleFolderPath string, item apiItem) (err error) { + var ( + methodNameSnake = gstr.CaseSnake(item.MethodName) + methodFilePath = gfile.Join(dstModuleFolderPath, fmt.Sprintf( + `%s_%s_%s.go`, item.Module, item.Version, methodNameSnake, + )) + ) + + funcs, err := c.getFuncInDst(methodFilePath) + if err != nil { + return err + } + + if len(funcs) > 1 { + // One line. + if !gstr.Contains(funcs[0], "\n") && gstr.Contains(funcs[0], `CodeNotImplemented`) { + mlog.Printf( + `remove unimplemented and of no api definitions controller file: %s`, + methodFilePath, + ) + err = gfile.RemoveFile(methodFilePath) + } + } + return +} diff --git a/server/internal/library/hggen/internal/cmd/genctrl/genctrl_generate_interface.go b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_generate_interface.go new file mode 100644 index 0000000..a6cc5eb --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_generate_interface.go @@ -0,0 +1,118 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genctrl + +import ( + "fmt" + "path/filepath" + + "github.com/gogf/gf/v2/container/gmap" + "github.com/gogf/gf/v2/container/gset" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gconv" + + "hotgo/internal/library/hggen/internal/consts" + "hotgo/internal/library/hggen/internal/utility/mlog" + "hotgo/internal/library/hggen/internal/utility/utils" +) + +type apiInterfaceGenerator struct{} + +func newApiInterfaceGenerator() *apiInterfaceGenerator { + return &apiInterfaceGenerator{} +} + +func (c *apiInterfaceGenerator) Generate(apiModuleFolderPath string, apiModuleApiItems []apiItem) (err error) { + if len(apiModuleApiItems) == 0 { + return nil + } + var firstApiItem = apiModuleApiItems[0] + if err = c.doGenerate(apiModuleFolderPath, firstApiItem.Module, apiModuleApiItems); err != nil { + return + } + return +} + +func (c *apiInterfaceGenerator) doGenerate(apiModuleFolderPath string, module string, items []apiItem) (err error) { + var ( + moduleFilePath = filepath.FromSlash(gfile.Join(apiModuleFolderPath, fmt.Sprintf(`%s.go`, module))) + importPathMap = gmap.NewListMap() + importPaths []string + ) + // if there's already exist file that with the same but not auto generated go file, + // it uses another file name. + if !utils.IsFileDoNotEdit(moduleFilePath) { + moduleFilePath = filepath.FromSlash(gfile.Join(apiModuleFolderPath, fmt.Sprintf(`%s.if.go`, module))) + } + // all import paths. + importPathMap.Set("\t"+`"context"`+"\n", 1) + for _, item := range items { + importPathMap.Set(fmt.Sprintf("\t"+`"%s"`, item.Import), 1) + } + importPaths = gconv.Strings(importPathMap.Keys()) + // interface definitions. + var ( + doneApiItemSet = gset.NewStrSet() + interfaceDefinition string + interfaceContent = gstr.TrimLeft(gstr.ReplaceByMap(consts.TemplateGenCtrlApiInterface, g.MapStrStr{ + "{Module}": module, + "{ImportPaths}": gstr.Join(importPaths, "\n"), + })) + ) + for _, item := range items { + if doneApiItemSet.Contains(item.String()) { + continue + } + // retrieve all api items of the same module. + subItems := c.getSubItemsByModuleAndVersion(items, item.Module, item.Version) + var ( + method string + methods = make([]string, 0) + interfaceName = fmt.Sprintf(`I%s%s`, gstr.CaseCamel(item.Module), gstr.UcFirst(item.Version)) + ) + for _, subItem := range subItems { + method = fmt.Sprintf( + "\t%s(ctx context.Context, req *%s.%sReq) (res *%s.%sRes, err error)", + subItem.MethodName, subItem.Version, subItem.MethodName, subItem.Version, subItem.MethodName, + ) + methods = append(methods, method) + doneApiItemSet.Add(subItem.String()) + } + interfaceDefinition += fmt.Sprintf("type %s interface {", interfaceName) + interfaceDefinition += "\n" + interfaceDefinition += gstr.Join(methods, "\n") + interfaceDefinition += "\n" + interfaceDefinition += fmt.Sprintf("}") + interfaceDefinition += "\n\n" + } + interfaceContent = gstr.TrimLeft(gstr.ReplaceByMap(interfaceContent, g.MapStrStr{ + "{Interfaces}": gstr.TrimRightStr(interfaceDefinition, "\n", 2), + })) + err = gfile.PutContents(moduleFilePath, interfaceContent) + mlog.Printf(`generated: %s`, gfile.RealPath(moduleFilePath)) + return +} + +func (c *apiInterfaceGenerator) getSubItemsByModule(items []apiItem, module string) (subItems []apiItem) { + for _, item := range items { + if item.Module == module { + subItems = append(subItems, item) + } + } + return +} + +func (c *apiInterfaceGenerator) getSubItemsByModuleAndVersion(items []apiItem, module, version string) (subItems []apiItem) { + for _, item := range items { + if item.Module == module && item.Version == version { + subItems = append(subItems, item) + } + } + return +} diff --git a/server/internal/library/hggen/internal/cmd/genctrl/genctrl_generate_sdk.go b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_generate_sdk.go new file mode 100644 index 0000000..17bb64a --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genctrl/genctrl_generate_sdk.go @@ -0,0 +1,199 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genctrl + +import ( + "fmt" + "path/filepath" + + "github.com/gogf/gf/v2/container/gset" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/consts" + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +type apiSdkGenerator struct{} + +func newApiSdkGenerator() *apiSdkGenerator { + return &apiSdkGenerator{} +} + +func (c *apiSdkGenerator) Generate(apiModuleApiItems []apiItem, sdkFolderPath string, sdkStdVersion, sdkNoV1 bool) (err error) { + if err = c.doGenerateSdkPkgFile(sdkFolderPath); err != nil { + return + } + + var doneApiItemSet = gset.NewStrSet() + for _, item := range apiModuleApiItems { + if doneApiItemSet.Contains(item.String()) { + continue + } + // retrieve all api items of the same module. + subItems := c.getSubItemsByModuleAndVersion(apiModuleApiItems, item.Module, item.Version) + if err = c.doGenerateSdkIClient(sdkFolderPath, item.Import, item.Module, item.Version, sdkNoV1); err != nil { + return + } + if err = c.doGenerateSdkImplementer( + subItems, sdkFolderPath, item.Import, item.Module, item.Version, sdkStdVersion, sdkNoV1, + ); err != nil { + return + } + for _, subItem := range subItems { + doneApiItemSet.Add(subItem.String()) + } + } + return +} + +func (c *apiSdkGenerator) doGenerateSdkPkgFile(sdkFolderPath string) (err error) { + var ( + pkgName = gfile.Basename(sdkFolderPath) + pkgFilePath = filepath.FromSlash(gfile.Join(sdkFolderPath, fmt.Sprintf(`%s.go`, pkgName))) + fileContent string + ) + if gfile.Exists(pkgFilePath) { + return nil + } + fileContent = gstr.TrimLeft(gstr.ReplaceByMap(consts.TemplateGenCtrlSdkPkgNew, g.MapStrStr{ + "{PkgName}": pkgName, + })) + err = gfile.PutContents(pkgFilePath, fileContent) + mlog.Printf(`generated: %s`, gfile.RealPath(pkgFilePath)) + return +} + +func (c *apiSdkGenerator) doGenerateSdkIClient( + sdkFolderPath, versionImportPath, module, version string, sdkNoV1 bool, +) (err error) { + var ( + fileContent string + isDirty bool + isExist bool + pkgName = gfile.Basename(sdkFolderPath) + funcName = gstr.CaseCamel(module) + gstr.UcFirst(version) + interfaceName = fmt.Sprintf(`I%s`, funcName) + moduleImportPath = gstr.Replace(fmt.Sprintf(`"%s"`, gfile.Dir(versionImportPath)), "\\", "/", -1) + iClientFilePath = filepath.FromSlash(gfile.Join(sdkFolderPath, fmt.Sprintf(`%s.iclient.go`, pkgName))) + interfaceFuncDefinition = fmt.Sprintf( + `%s() %s.%s`, + gstr.CaseCamel(module)+gstr.UcFirst(version), module, interfaceName, + ) + ) + if sdkNoV1 && version == "v1" { + interfaceFuncDefinition = fmt.Sprintf( + `%s() %s.%s`, + gstr.CaseCamel(module), module, interfaceName, + ) + } + if isExist = gfile.Exists(iClientFilePath); isExist { + fileContent = gfile.GetContents(iClientFilePath) + } else { + fileContent = gstr.TrimLeft(gstr.ReplaceByMap(consts.TemplateGenCtrlSdkIClient, g.MapStrStr{ + "{PkgName}": pkgName, + })) + } + + // append the import path to current import paths. + if !gstr.Contains(fileContent, moduleImportPath) { + isDirty = true + // It is without using AST, because it is from a template. + fileContent, err = gregex.ReplaceString( + `(import \([\s\S]*?)\)`, + fmt.Sprintf("$1\t%s\n)", moduleImportPath), + fileContent, + ) + if err != nil { + return + } + } + + // append the function definition to interface definition. + if !gstr.Contains(fileContent, interfaceFuncDefinition) { + isDirty = true + // It is without using AST, because it is from a template. + fileContent, err = gregex.ReplaceString( + `(type IClient interface {[\s\S]*?)}`, + fmt.Sprintf("$1\t%s\n}", interfaceFuncDefinition), + fileContent, + ) + if err != nil { + return + } + } + if isDirty { + err = gfile.PutContents(iClientFilePath, fileContent) + if isExist { + mlog.Printf(`updated: %s`, gfile.RealPath(iClientFilePath)) + } else { + mlog.Printf(`generated: %s`, gfile.RealPath(iClientFilePath)) + } + } + return +} + +func (c *apiSdkGenerator) doGenerateSdkImplementer( + items []apiItem, sdkFolderPath, versionImportPath, module, version string, sdkStdVersion, sdkNoV1 bool, +) (err error) { + var ( + pkgName = gfile.Basename(sdkFolderPath) + moduleNameCamel = gstr.CaseCamel(module) + moduleNameSnake = gstr.CaseSnake(module) + moduleImportPath = gstr.Replace(gfile.Dir(versionImportPath), "\\", "/", -1) + versionPrefix = "" + implementerName = moduleNameCamel + gstr.UcFirst(version) + implementerFilePath = filepath.FromSlash(gfile.Join(sdkFolderPath, fmt.Sprintf( + `%s_%s_%s.go`, pkgName, moduleNameSnake, version, + ))) + ) + if sdkNoV1 && version == "v1" { + implementerName = moduleNameCamel + } + // implementer file template. + var importPaths = make([]string, 0) + importPaths = append(importPaths, fmt.Sprintf("\t\"%s\"", moduleImportPath)) + importPaths = append(importPaths, fmt.Sprintf("\t\"%s\"", versionImportPath)) + implementerFileContent := gstr.TrimLeft(gstr.ReplaceByMap(consts.TemplateGenCtrlSdkImplementer, g.MapStrStr{ + "{PkgName}": pkgName, + "{ImportPaths}": gstr.Join(importPaths, "\n"), + "{ImplementerName}": implementerName, + })) + // implementer new function definition. + if sdkStdVersion { + versionPrefix = fmt.Sprintf(`/api/%s`, version) + } + implementerFileContent += gstr.TrimLeft(gstr.ReplaceByMap(consts.TemplateGenCtrlSdkImplementerNew, g.MapStrStr{ + "{Module}": module, + "{VersionPrefix}": versionPrefix, + "{ImplementerName}": implementerName, + })) + // implementer functions definitions. + for _, item := range items { + implementerFileContent += gstr.TrimLeft(gstr.ReplaceByMap(consts.TemplateGenCtrlSdkImplementerFunc, g.MapStrStr{ + "{Version}": item.Version, + "{MethodName}": item.MethodName, + "{ImplementerName}": implementerName, + "{MethodComment}": item.GetComment(), + })) + implementerFileContent += "\n" + } + err = gfile.PutContents(implementerFilePath, implementerFileContent) + mlog.Printf(`generated: %s`, gfile.RealPath(implementerFilePath)) + return +} + +func (c *apiSdkGenerator) getSubItemsByModuleAndVersion(items []apiItem, module, version string) (subItems []apiItem) { + for _, item := range items { + if item.Module == module && item.Version == version { + subItems = append(subItems, item) + } + } + return +} diff --git a/server/internal/library/hggen/internal/cmd/gendao/gendao.go b/server/internal/library/hggen/internal/cmd/gendao/gendao.go new file mode 100644 index 0000000..1c01c39 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/gendao/gendao.go @@ -0,0 +1,413 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package gendao + +import ( + "context" + "fmt" + "strings" + + "github.com/olekukonko/tablewriter" + "github.com/olekukonko/tablewriter/renderer" + "github.com/olekukonko/tablewriter/tw" + "golang.org/x/mod/modfile" + + "github.com/gogf/gf/v2/container/garray" + "github.com/gogf/gf/v2/container/gset" + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gproc" + "github.com/gogf/gf/v2/os/gtime" + "github.com/gogf/gf/v2/os/gview" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/utility/mlog" + "hotgo/internal/library/hggen/internal/utility/utils" +) + +type ( + CGenDao struct{} + CGenDaoInput struct { + g.Meta `name:"dao" config:"{CGenDaoConfig}" usage:"{CGenDaoUsage}" brief:"{CGenDaoBrief}" eg:"{CGenDaoEg}" ad:"{CGenDaoAd}"` + Path string `name:"path" short:"p" brief:"{CGenDaoBriefPath}" d:"internal"` + Link string `name:"link" short:"l" brief:"{CGenDaoBriefLink}"` + Tables string `name:"tables" short:"t" brief:"{CGenDaoBriefTables}"` + TablesEx string `name:"tablesEx" short:"x" brief:"{CGenDaoBriefTablesEx}"` + ShardingPattern []string `name:"shardingPattern" short:"sp" brief:"{CGenDaoBriefShardingPattern}"` + Group string `name:"group" short:"g" brief:"{CGenDaoBriefGroup}" d:"default"` + Prefix string `name:"prefix" short:"f" brief:"{CGenDaoBriefPrefix}"` + RemovePrefix string `name:"removePrefix" short:"r" brief:"{CGenDaoBriefRemovePrefix}"` + RemoveFieldPrefix string `name:"removeFieldPrefix" short:"rf" brief:"{CGenDaoBriefRemoveFieldPrefix}"` + JsonCase string `name:"jsonCase" short:"j" brief:"{CGenDaoBriefJsonCase}" d:"CamelLower"` + ImportPrefix string `name:"importPrefix" short:"i" brief:"{CGenDaoBriefImportPrefix}"` + DaoPath string `name:"daoPath" short:"d" brief:"{CGenDaoBriefDaoPath}" d:"dao"` + TablePath string `name:"tablePath" short:"tp" brief:"{CGenDaoBriefTablePath}" d:"table"` + DoPath string `name:"doPath" short:"o" brief:"{CGenDaoBriefDoPath}" d:"model/do"` + EntityPath string `name:"entityPath" short:"e" brief:"{CGenDaoBriefEntityPath}" d:"model/entity"` + TplDaoTablePath string `name:"tplDaoTablePath" short:"t0" brief:"{CGenDaoBriefTplDaoTablePath}"` + TplDaoIndexPath string `name:"tplDaoIndexPath" short:"t1" brief:"{CGenDaoBriefTplDaoIndexPath}"` + TplDaoInternalPath string `name:"tplDaoInternalPath" short:"t2" brief:"{CGenDaoBriefTplDaoInternalPath}"` + TplDaoDoPath string `name:"tplDaoDoPath" short:"t3" brief:"{CGenDaoBriefTplDaoDoPathPath}"` + TplDaoEntityPath string `name:"tplDaoEntityPath" short:"t4" brief:"{CGenDaoBriefTplDaoEntityPath}"` + StdTime bool `name:"stdTime" short:"s" brief:"{CGenDaoBriefStdTime}" orphan:"true"` + WithTime bool `name:"withTime" short:"w" brief:"{CGenDaoBriefWithTime}" orphan:"true"` + GJsonSupport bool `name:"gJsonSupport" short:"n" brief:"{CGenDaoBriefGJsonSupport}" orphan:"true"` + OverwriteDao bool `name:"overwriteDao" short:"v" brief:"{CGenDaoBriefOverwriteDao}" orphan:"true"` + DescriptionTag bool `name:"descriptionTag" short:"c" brief:"{CGenDaoBriefDescriptionTag}" orphan:"true"` + NoJsonTag bool `name:"noJsonTag" short:"k" brief:"{CGenDaoBriefNoJsonTag}" orphan:"true"` + NoModelComment bool `name:"noModelComment" short:"m" brief:"{CGenDaoBriefNoModelComment}" orphan:"true"` + Clear bool `name:"clear" short:"a" brief:"{CGenDaoBriefClear}" orphan:"true"` + GenTable bool `name:"genTable" short:"gt" brief:"{CGenDaoBriefGenTable}" orphan:"true"` + + TypeMapping map[DBFieldTypeName]CustomAttributeType `name:"typeMapping" short:"y" brief:"{CGenDaoBriefTypeMapping}" orphan:"true"` + FieldMapping map[DBTableFieldName]CustomAttributeType `name:"fieldMapping" short:"fm" brief:"{CGenDaoBriefFieldMapping}" orphan:"true"` + + // internal usage purpose. + genItems *CGenDaoInternalGenItems + } + CGenDaoOutput struct{} + + CGenDaoInternalInput struct { + CGenDaoInput + DB gdb.DB + TableNames []string + NewTableNames []string + ShardingTableSet *gset.StrSet + } + DBTableFieldName = string + DBFieldTypeName = string + CustomAttributeType struct { + Type string `brief:"custom attribute type name"` + Import string `brief:"custom import for this type"` + } +) + +var ( + createdAt = gtime.Now() + tplView = gview.New() + defaultTypeMapping = map[DBFieldTypeName]CustomAttributeType{ + "decimal": { + Type: "float64", + }, + "money": { + Type: "float64", + }, + "numeric": { + Type: "float64", + }, + "smallmoney": { + Type: "float64", + }, + } + + // tablewriter Options + twRenderer = tablewriter.WithRenderer(renderer.NewBlueprint(tw.Rendition{ + Borders: tw.Border{Top: tw.Off, Bottom: tw.Off, Left: tw.Off, Right: tw.Off}, + Settings: tw.Settings{ + Separators: tw.Separators{BetweenRows: tw.Off, BetweenColumns: tw.Off}, + }, + Symbols: tw.NewSymbols(tw.StyleASCII), + })) + twConfig = tablewriter.WithConfig(tablewriter.Config{ + Row: tw.CellConfig{ + Formatting: tw.CellFormatting{AutoWrap: tw.WrapNone}, + }, + }) +) + +func (c CGenDao) Dao(ctx context.Context, in CGenDaoInput) (out *CGenDaoOutput, err error) { + in.genItems = newCGenDaoInternalGenItems() + if in.Link != "" { + doGenDaoForArray(ctx, -1, in) + } else if g.Cfg().Available(ctx) { + v := g.Cfg().MustGet(ctx, CGenDaoConfig) + if v.IsSlice() { + for i := 0; i < len(v.Interfaces()); i++ { + doGenDaoForArray(ctx, i, in) + } + } else { + doGenDaoForArray(ctx, -1, in) + } + } else { + doGenDaoForArray(ctx, -1, in) + } + doClear(in.genItems) + mlog.Print("done!") + return +} + +// doGenDaoForArray implements the "gen dao" command for configuration array. +func doGenDaoForArray(ctx context.Context, index int, in CGenDaoInput) { + if in.genItems == nil { + in.genItems = newCGenDaoInternalGenItems() + } + + var ( + err error + db gdb.DB + ) + if index >= 0 { + err = g.Cfg().MustGet( + ctx, + fmt.Sprintf(`%s.%d`, CGenDaoConfig, index), + ).Scan(&in) + if err != nil { + mlog.Fatalf(`invalid configuration of "%s": %+v`, CGenDaoConfig, err) + } + } + if dirRealPath := gfile.RealPath(in.Path); dirRealPath == "" { + mlog.Fatalf(`path "%s" does not exist`, in.Path) + } + removePrefixArray := gstr.SplitAndTrim(in.RemovePrefix, ",") + + // It uses user passed database configuration. + if in.Link != "" { + var tempGroup = gtime.TimestampNanoStr() + err = gdb.AddConfigNode(tempGroup, gdb.ConfigNode{ + Link: in.Link, + }) + if err != nil { + mlog.Fatalf(`database configuration failed: %+v`, err) + } + if db, err = gdb.Instance(tempGroup); err != nil { + mlog.Fatalf(`database initialization failed: %+v`, err) + } + } else { + db = g.DB(in.Group) + } + if db == nil { + mlog.Fatal(`database initialization failed, may be invalid database configuration`) + } + + var tableNames []string + if in.Tables != "" { + tableNames = gstr.SplitAndTrim(in.Tables, ",") + } else { + tableNames, err = db.Tables(context.TODO()) + if err != nil { + mlog.Fatalf("fetching tables failed: %+v", err) + } + } + // Table excluding. + if in.TablesEx != "" { + array := garray.NewStrArrayFrom(tableNames) + for _, p := range gstr.SplitAndTrim(in.TablesEx, ",") { + if gstr.Contains(p, "*") || gstr.Contains(p, "?") { + p = gstr.ReplaceByMap(p, map[string]string{ + "\r": "", + "\n": "", + }) + p = gstr.ReplaceByMap(p, map[string]string{ + "*": "\r", + "?": "\n", + }) + p = gregex.Quote(p) + p = gstr.ReplaceByMap(p, map[string]string{ + "\r": ".*", + "\n": ".", + }) + for _, v := range array.Clone().Slice() { + if gregex.IsMatchString(p, v) { + array.RemoveValue(v) + } + } + } else { + array.RemoveValue(p) + } + } + tableNames = array.Slice() + } + + // merge default typeMapping to input typeMapping. + if in.TypeMapping == nil { + in.TypeMapping = defaultTypeMapping + } else { + for key, typeMapping := range defaultTypeMapping { + if _, ok := in.TypeMapping[key]; !ok { + in.TypeMapping[key] = typeMapping + } + } + } + + // Generating dao & model go files one by one according to given table name. + var ( + newTableNames = make([]string, len(tableNames)) + shardingNewTableSet = gset.NewStrSet() + ) + for i, tableName := range tableNames { + newTableName := tableName + for _, v := range removePrefixArray { + newTableName = gstr.TrimLeftStr(newTableName, v, 1) + } + if len(in.ShardingPattern) > 0 { + for _, pattern := range in.ShardingPattern { + var ( + match []string + regPattern = gstr.Replace(pattern, "?", `(.+)`) + ) + match, err = gregex.MatchString(regPattern, newTableName) + if err != nil { + mlog.Fatalf(`invalid sharding pattern "%s": %+v`, pattern, err) + } + if len(match) < 2 { + continue + } + newTableName = gstr.Replace(pattern, "?", "") + newTableName = gstr.Trim(newTableName, `_.-`) + if shardingNewTableSet.Contains(newTableName) { + tableNames[i] = "" + continue + } + // Add prefix to sharding table name, if not, the isSharding check would not match. + shardingNewTableSet.Add(in.Prefix + newTableName) + } + } + newTableName = in.Prefix + newTableName + if tableNames[i] != "" { + // If shardingNewTableSet contains newTableName (tableName is empty), it should not be added to tableNames, make it empty and filter later. + newTableNames[i] = newTableName + } + } + tableNames = garray.NewStrArrayFrom(tableNames).FilterEmpty().Slice() + newTableNames = garray.NewStrArrayFrom(newTableNames).FilterEmpty().Slice() // Filter empty table names. make sure that newTableNames and tableNames have the same length. + in.genItems.Scale() + + // Dao: index and internal. + generateDao(ctx, CGenDaoInternalInput{ + CGenDaoInput: in, + DB: db, + TableNames: tableNames, + NewTableNames: newTableNames, + ShardingTableSet: shardingNewTableSet, + }) + // Table: table fields. + generateTable(ctx, CGenDaoInternalInput{ + CGenDaoInput: in, + DB: db, + TableNames: tableNames, + NewTableNames: newTableNames, + ShardingTableSet: shardingNewTableSet, + }) + // Do. + generateDo(ctx, CGenDaoInternalInput{ + CGenDaoInput: in, + DB: db, + TableNames: tableNames, + NewTableNames: newTableNames, + }) + // Entity. + generateEntity(ctx, CGenDaoInternalInput{ + CGenDaoInput: in, + DB: db, + TableNames: tableNames, + NewTableNames: newTableNames, + }) + + in.genItems.SetClear(in.Clear) +} + +func getImportPartContent(ctx context.Context, source string, isDo bool, appendImports []string) string { + var packageImportsArray = garray.NewStrArray() + if isDo { + packageImportsArray.Append(`"github.com/gogf/gf/v2/frame/g"`) + } + + // Time package recognition. + if strings.Contains(source, "gtime.Time") { + packageImportsArray.Append(`"github.com/gogf/gf/v2/os/gtime"`) + } else if strings.Contains(source, "time.Time") { + packageImportsArray.Append(`"time"`) + } + + // Json type. + if strings.Contains(source, "gjson.Json") { + packageImportsArray.Append(`"github.com/gogf/gf/v2/encoding/gjson"`) + } + + // Check and update imports in go.mod + if len(appendImports) > 0 { + goModPath := utils.GetModPath() + if goModPath == "" { + mlog.Fatal("go.mod not found in current project") + } + mod, err := modfile.Parse(goModPath, gfile.GetBytes(goModPath), nil) + if err != nil { + mlog.Fatalf("parse go.mod failed: %+v", err) + } + for _, appendImport := range appendImports { + found := false + for _, require := range mod.Require { + if gstr.Contains(appendImport, require.Mod.Path) { + found = true + break + } + } + if !found { + if err = gproc.ShellRun(ctx, `go get `+appendImport); err != nil { + mlog.Fatalf(`%+v`, err) + } + } + packageImportsArray.Append(fmt.Sprintf(`"%s"`, appendImport)) + } + } + + // Generate and write content to golang file. + packageImportsStr := "" + if packageImportsArray.Len() > 0 { + packageImportsStr = fmt.Sprintf("import(\n%s\n)", packageImportsArray.Join("\n")) + } + return packageImportsStr +} + +func assignDefaultVar(view *gview.View, in CGenDaoInternalInput) { + var ( + tplCreatedAtDatetimeStr string + tplDatetimeStr = createdAt.String() + ) + if in.WithTime { + tplCreatedAtDatetimeStr = fmt.Sprintf(`Created at %s`, tplDatetimeStr) + } + view.Assigns(g.Map{ + tplVarDatetimeStr: tplDatetimeStr, + tplVarCreatedAtDatetimeStr: tplCreatedAtDatetimeStr, + }) +} + +func sortFieldKeyForDao(fieldMap map[string]*gdb.TableField) []string { + names := make(map[int]string) + for _, field := range fieldMap { + names[field.Index] = field.Name + } + var ( + i = 0 + j = 0 + result = make([]string, len(names)) + ) + for { + if len(names) == 0 { + break + } + if val, ok := names[i]; ok { + result[j] = val + j++ + delete(names, i) + } + i++ + } + return result +} + +func getTemplateFromPathOrDefault(filePath string, def string) string { + if filePath != "" { + if contents := gfile.GetContents(filePath); contents != "" { + return contents + } + } + return def +} diff --git a/server/internal/library/hggen/internal/cmd/gendao/gendao_clear.go b/server/internal/library/hggen/internal/cmd/gendao/gendao_clear.go new file mode 100644 index 0000000..ae297e0 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/gendao/gendao_clear.go @@ -0,0 +1,48 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package gendao + +import ( + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +func doClear(items *CGenDaoInternalGenItems) { + var allGeneratedFilePaths = make([]string, 0) + for _, item := range items.Items { + allGeneratedFilePaths = append(allGeneratedFilePaths, item.GeneratedFilePaths...) + } + for i, v := range allGeneratedFilePaths { + allGeneratedFilePaths[i] = gfile.RealPath(v) + } + for _, item := range items.Items { + if !item.Clear { + continue + } + doClearItem(item, allGeneratedFilePaths) + } +} + +func doClearItem(item CGenDaoInternalGenItem, allGeneratedFilePaths []string) { + var generatedFilePaths = make([]string, 0) + for _, dirPath := range item.StorageDirPaths { + filePaths, err := gfile.ScanDirFile(dirPath, "*.go", true) + if err != nil { + mlog.Fatal(err) + } + generatedFilePaths = append(generatedFilePaths, filePaths...) + } + for _, filePath := range generatedFilePaths { + if !gstr.InArray(allGeneratedFilePaths, filePath) { + if err := gfile.RemoveFile(filePath); err != nil { + mlog.Print(err) + } + } + } +} diff --git a/server/internal/library/hggen/internal/cmd/gendao/gendao_dao.go b/server/internal/library/hggen/internal/cmd/gendao/gendao_dao.go new file mode 100644 index 0000000..d1ebe85 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/gendao/gendao_dao.go @@ -0,0 +1,260 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package gendao + +import ( + "bytes" + "context" + "fmt" + "path/filepath" + "strings" + + "github.com/olekukonko/tablewriter" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gview" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/consts" + "hotgo/internal/library/hggen/internal/utility/mlog" + "hotgo/internal/library/hggen/internal/utility/utils" +) + +func generateDao(ctx context.Context, in CGenDaoInternalInput) { + var ( + dirPathDao = gfile.Join(in.Path, in.DaoPath) + dirPathDaoInternal = gfile.Join(dirPathDao, "internal") + ) + in.genItems.AppendDirPath(dirPathDao) + for i := 0; i < len(in.TableNames); i++ { + var ( + realTableName = in.TableNames[i] + newTableName = in.NewTableNames[i] + ) + generateDaoSingle(ctx, generateDaoSingleInput{ + CGenDaoInternalInput: in, + TableName: realTableName, + NewTableName: newTableName, + DirPathDao: dirPathDao, + DirPathDaoInternal: dirPathDaoInternal, + IsSharding: in.ShardingTableSet.Contains(newTableName), + }) + } +} + +type generateDaoSingleInput struct { + CGenDaoInternalInput + // TableName specifies the table name of the table. + TableName string + // NewTableName specifies the prefix-stripped or custom edited name of the table. + NewTableName string + DirPathDao string + DirPathDaoInternal string + IsSharding bool +} + +// generateDaoSingle generates the dao and model content of given table. +func generateDaoSingle(ctx context.Context, in generateDaoSingleInput) { + // Generating table data preparing. + fieldMap, err := in.DB.TableFields(ctx, in.TableName) + if err != nil { + mlog.Fatalf(`fetching tables fields failed for table "%s": %+v`, in.TableName, err) + } + var ( + tableNameCamelCase = formatFieldName(in.NewTableName, FieldNameCaseCamel) + tableNameCamelLowerCase = formatFieldName(in.NewTableName, FieldNameCaseCamelLower) + tableNameSnakeCase = gstr.CaseSnake(in.NewTableName) + importPrefix = in.ImportPrefix + ) + if importPrefix == "" { + importPrefix = utils.GetImportPath(gfile.Join(in.Path, in.DaoPath)) + } else { + importPrefix = gstr.Join(g.SliceStr{importPrefix, in.DaoPath}, "/") + } + + fileName := gstr.Trim(tableNameSnakeCase, "-_.") + if len(fileName) > 5 && fileName[len(fileName)-5:] == "_test" { + // Add suffix to avoid the table name which contains "_test", + // which would make the go file a testing file. + fileName += "_table" + } + + // dao - index + generateDaoIndex(generateDaoIndexInput{ + generateDaoSingleInput: in, + TableNameCamelCase: tableNameCamelCase, + TableNameCamelLowerCase: tableNameCamelLowerCase, + ImportPrefix: importPrefix, + FileName: fileName, + }) + + // dao - internal + generateDaoInternal(generateDaoInternalInput{ + generateDaoSingleInput: in, + TableNameCamelCase: tableNameCamelCase, + TableNameCamelLowerCase: tableNameCamelLowerCase, + ImportPrefix: importPrefix, + FileName: fileName, + FieldMap: fieldMap, + }) +} + +type generateDaoIndexInput struct { + generateDaoSingleInput + TableNameCamelCase string + TableNameCamelLowerCase string + ImportPrefix string + FileName string +} + +func generateDaoIndex(in generateDaoIndexInput) { + path := filepath.FromSlash(gfile.Join(in.DirPathDao, in.FileName+".go")) + // It should add path to result slice whenever it would generate the path file or not. + in.genItems.AppendGeneratedFilePath(path) + if in.OverwriteDao || !gfile.Exists(path) { + var ( + ctx = context.Background() + tplContent = getTemplateFromPathOrDefault( + in.TplDaoIndexPath, consts.TemplateGenDaoIndexContent, + ) + ) + tplView.ClearAssigns() + tplView.Assigns(gview.Params{ + tplVarTableSharding: in.IsSharding, + tplVarTableShardingPrefix: in.NewTableName + "_", + tplVarImportPrefix: in.ImportPrefix, + tplVarTableName: in.TableName, + tplVarTableNameCamelCase: in.TableNameCamelCase, + tplVarTableNameCamelLowerCase: in.TableNameCamelLowerCase, + tplVarPackageName: filepath.Base(in.DaoPath), + }) + indexContent, err := tplView.ParseContent(ctx, tplContent) + if err != nil { + mlog.Fatalf("parsing template content failed: %v", err) + } + if err = gfile.PutContents(path, strings.TrimSpace(indexContent)); err != nil { + mlog.Fatalf("writing content to '%s' failed: %v", path, err) + } else { + utils.GoFmt(path) + mlog.Print("generated:", gfile.RealPath(path)) + } + } +} + +type generateDaoInternalInput struct { + generateDaoSingleInput + TableNameCamelCase string + TableNameCamelLowerCase string + ImportPrefix string + FileName string + FieldMap map[string]*gdb.TableField +} + +func generateDaoInternal(in generateDaoInternalInput) { + var ( + ctx = context.Background() + removeFieldPrefixArray = gstr.SplitAndTrim(in.RemoveFieldPrefix, ",") + tplContent = getTemplateFromPathOrDefault( + in.TplDaoInternalPath, consts.TemplateGenDaoInternalContent, + ) + ) + tplView.ClearAssigns() + tplView.Assigns(gview.Params{ + tplVarImportPrefix: in.ImportPrefix, + tplVarTableName: in.TableName, + tplVarGroupName: in.Group, + tplVarTableNameCamelCase: in.TableNameCamelCase, + tplVarTableNameCamelLowerCase: in.TableNameCamelLowerCase, + tplVarColumnDefine: gstr.Trim(generateColumnDefinitionForDao(in.FieldMap, removeFieldPrefixArray)), + tplVarColumnNames: gstr.Trim(generateColumnNamesForDao(in.FieldMap, removeFieldPrefixArray)), + }) + assignDefaultVar(tplView, in.CGenDaoInternalInput) + modelContent, err := tplView.ParseContent(ctx, tplContent) + if err != nil { + mlog.Fatalf("parsing template content failed: %v", err) + } + path := filepath.FromSlash(gfile.Join(in.DirPathDaoInternal, in.FileName+".go")) + in.genItems.AppendGeneratedFilePath(path) + if err := gfile.PutContents(path, strings.TrimSpace(modelContent)); err != nil { + mlog.Fatalf("writing content to '%s' failed: %v", path, err) + } else { + utils.GoFmt(path) + mlog.Print("generated:", gfile.RealPath(path)) + } +} + +// generateColumnNamesForDao generates and returns the column names assignment content of column struct +// for specified table. +func generateColumnNamesForDao(fieldMap map[string]*gdb.TableField, removeFieldPrefixArray []string) string { + var ( + buffer = bytes.NewBuffer(nil) + array = make([][]string, len(fieldMap)) + names = sortFieldKeyForDao(fieldMap) + ) + + for index, name := range names { + field := fieldMap[name] + + newFiledName := field.Name + for _, v := range removeFieldPrefixArray { + newFiledName = gstr.TrimLeftStr(newFiledName, v, 1) + } + + array[index] = []string{ + " #" + formatFieldName(newFiledName, FieldNameCaseCamel) + ":", + fmt.Sprintf(` #"%s",`, field.Name), + } + } + table := tablewriter.NewTable(buffer, twRenderer, twConfig) + table.Bulk(array) + table.Render() + namesContent := buffer.String() + // Let's do this hack of table writer for indent! + namesContent = gstr.Replace(namesContent, " #", "") + buffer.Reset() + buffer.WriteString(namesContent) + return buffer.String() +} + +// generateColumnDefinitionForDao generates and returns the column names definition for specified table. +func generateColumnDefinitionForDao(fieldMap map[string]*gdb.TableField, removeFieldPrefixArray []string) string { + var ( + buffer = bytes.NewBuffer(nil) + array = make([][]string, len(fieldMap)) + names = sortFieldKeyForDao(fieldMap) + ) + + for index, name := range names { + var ( + field = fieldMap[name] + comment = gstr.Trim(gstr.ReplaceByArray(field.Comment, g.SliceStr{ + "\n", " ", + "\r", " ", + })) + ) + newFiledName := field.Name + for _, v := range removeFieldPrefixArray { + newFiledName = gstr.TrimLeftStr(newFiledName, v, 1) + } + array[index] = []string{ + " #" + formatFieldName(newFiledName, FieldNameCaseCamel), + " # " + "string", + " #" + fmt.Sprintf(`// %s`, comment), + } + } + table := tablewriter.NewTable(buffer, twRenderer, twConfig) + table.Bulk(array) + table.Render() + defineContent := buffer.String() + // Let's do this hack of table writer for indent! + defineContent = gstr.Replace(defineContent, " #", "") + buffer.Reset() + buffer.WriteString(defineContent) + return buffer.String() +} diff --git a/server/internal/library/hggen/internal/cmd/gendao/gendao_do.go b/server/internal/library/hggen/internal/cmd/gendao/gendao_do.go new file mode 100644 index 0000000..fd296cf --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/gendao/gendao_do.go @@ -0,0 +1,100 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package gendao + +import ( + "context" + "fmt" + "path/filepath" + "strings" + + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gview" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/consts" + "hotgo/internal/library/hggen/internal/utility/mlog" + "hotgo/internal/library/hggen/internal/utility/utils" +) + +func generateDo(ctx context.Context, in CGenDaoInternalInput) { + var dirPathDo = filepath.FromSlash(gfile.Join(in.Path, in.DoPath)) + in.genItems.AppendDirPath(dirPathDo) + in.NoJsonTag = true + in.DescriptionTag = false + in.NoModelComment = false + // Model content. + for i, tableName := range in.TableNames { + fieldMap, err := in.DB.TableFields(ctx, tableName) + if err != nil { + mlog.Fatalf("fetching tables fields failed for table '%s':\n%v", tableName, err) + } + var ( + newTableName = in.NewTableNames[i] + doFilePath = gfile.Join(dirPathDo, gstr.CaseSnake(newTableName)+".go") + structDefinition, _ = generateStructDefinition(ctx, generateStructDefinitionInput{ + CGenDaoInternalInput: in, + TableName: tableName, + StructName: formatFieldName(newTableName, FieldNameCaseCamel), + FieldMap: fieldMap, + IsDo: true, + }) + ) + // replace all types to any. + structDefinition, _ = gregex.ReplaceStringFuncMatch( + "([A-Z]\\w*?)\\s+([\\w\\*\\.]+?)\\s+(//)", + structDefinition, + func(match []string) string { + // If the type is already a pointer/slice/map, it does nothing. + if !gstr.HasPrefix(match[2], "*") && !gstr.HasPrefix(match[2], "[]") && !gstr.HasPrefix(match[2], "map") { + return fmt.Sprintf(`%s any %s`, match[1], match[3]) + } + return match[0] + }, + ) + modelContent := generateDoContent( + ctx, + in, + tableName, + formatFieldName(newTableName, FieldNameCaseCamel), + structDefinition, + ) + in.genItems.AppendGeneratedFilePath(doFilePath) + err = gfile.PutContents(doFilePath, strings.TrimSpace(modelContent)) + if err != nil { + mlog.Fatalf(`writing content to "%s" failed: %v`, doFilePath, err) + } else { + utils.GoFmt(doFilePath) + mlog.Print("generated:", gfile.RealPath(doFilePath)) + } + } +} + +func generateDoContent( + ctx context.Context, in CGenDaoInternalInput, tableName, tableNameCamelCase, structDefine string, +) string { + var ( + tplContent = getTemplateFromPathOrDefault( + in.TplDaoDoPath, consts.TemplateGenDaoDoContent, + ) + ) + tplView.ClearAssigns() + tplView.Assigns(gview.Params{ + tplVarTableName: tableName, + tplVarPackageImports: getImportPartContent(ctx, structDefine, true, nil), + tplVarTableNameCamelCase: tableNameCamelCase, + tplVarStructDefine: structDefine, + tplVarPackageName: filepath.Base(in.DoPath), + }) + assignDefaultVar(tplView, in) + doContent, err := tplView.ParseContent(ctx, tplContent) + if err != nil { + mlog.Fatalf("parsing template content failed: %v", err) + } + return doContent +} diff --git a/server/internal/library/hggen/internal/cmd/gendao/gendao_entity.go b/server/internal/library/hggen/internal/cmd/gendao/gendao_entity.go new file mode 100644 index 0000000..5eeafe7 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/gendao/gendao_entity.go @@ -0,0 +1,85 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package gendao + +import ( + "context" + "path/filepath" + "strings" + + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gview" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/consts" + "hotgo/internal/library/hggen/internal/utility/mlog" + "hotgo/internal/library/hggen/internal/utility/utils" +) + +func generateEntity(ctx context.Context, in CGenDaoInternalInput) { + var dirPathEntity = gfile.Join(in.Path, in.EntityPath) + in.genItems.AppendDirPath(dirPathEntity) + // Model content. + for i, tableName := range in.TableNames { + fieldMap, err := in.DB.TableFields(ctx, tableName) + if err != nil { + mlog.Fatalf("fetching tables fields failed for table '%s':\n%v", tableName, err) + } + + var ( + newTableName = in.NewTableNames[i] + entityFilePath = filepath.FromSlash(gfile.Join(dirPathEntity, gstr.CaseSnake(newTableName)+".go")) + structDefinition, appendImports = generateStructDefinition(ctx, generateStructDefinitionInput{ + CGenDaoInternalInput: in, + TableName: tableName, + StructName: formatFieldName(newTableName, FieldNameCaseCamel), + FieldMap: fieldMap, + IsDo: false, + }) + entityContent = generateEntityContent( + ctx, + in, + newTableName, + formatFieldName(newTableName, FieldNameCaseCamel), + structDefinition, + appendImports, + ) + ) + in.genItems.AppendGeneratedFilePath(entityFilePath) + err = gfile.PutContents(entityFilePath, strings.TrimSpace(entityContent)) + if err != nil { + mlog.Fatalf("writing content to '%s' failed: %v", entityFilePath, err) + } else { + utils.GoFmt(entityFilePath) + mlog.Print("generated:", gfile.RealPath(entityFilePath)) + } + } +} + +func generateEntityContent( + ctx context.Context, in CGenDaoInternalInput, tableName, tableNameCamelCase, structDefine string, appendImports []string, +) string { + var ( + tplContent = getTemplateFromPathOrDefault( + in.TplDaoEntityPath, consts.TemplateGenDaoEntityContent, + ) + ) + tplView.ClearAssigns() + tplView.Assigns(gview.Params{ + tplVarTableName: tableName, + tplVarPackageImports: getImportPartContent(ctx, structDefine, false, appendImports), + tplVarTableNameCamelCase: tableNameCamelCase, + tplVarStructDefine: structDefine, + tplVarPackageName: filepath.Base(in.EntityPath), + }) + assignDefaultVar(tplView, in) + entityContent, err := tplView.ParseContent(ctx, tplContent) + if err != nil { + mlog.Fatalf("parsing template content failed: %v", err) + } + return entityContent +} diff --git a/server/internal/library/hggen/internal/cmd/gendao/gendao_gen_item.go b/server/internal/library/hggen/internal/cmd/gendao/gendao_gen_item.go new file mode 100644 index 0000000..fcb7bf9 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/gendao/gendao_gen_item.go @@ -0,0 +1,53 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package gendao + +type ( + CGenDaoInternalGenItems struct { + index int + Items []CGenDaoInternalGenItem + } + CGenDaoInternalGenItem struct { + Clear bool + StorageDirPaths []string + GeneratedFilePaths []string + } +) + +func newCGenDaoInternalGenItems() *CGenDaoInternalGenItems { + return &CGenDaoInternalGenItems{ + index: -1, + Items: make([]CGenDaoInternalGenItem, 0), + } +} + +func (i *CGenDaoInternalGenItems) Scale() { + i.Items = append(i.Items, CGenDaoInternalGenItem{ + StorageDirPaths: make([]string, 0), + GeneratedFilePaths: make([]string, 0), + Clear: false, + }) + i.index++ +} + +func (i *CGenDaoInternalGenItems) SetClear(clear bool) { + i.Items[i.index].Clear = clear +} + +func (i *CGenDaoInternalGenItems) AppendDirPath(storageDirPath string) { + i.Items[i.index].StorageDirPaths = append( + i.Items[i.index].StorageDirPaths, + storageDirPath, + ) +} + +func (i *CGenDaoInternalGenItems) AppendGeneratedFilePath(generatedFilePath string) { + i.Items[i.index].GeneratedFilePaths = append( + i.Items[i.index].GeneratedFilePaths, + generatedFilePath, + ) +} diff --git a/server/internal/library/hggen/internal/cmd/gendao/gendao_structure.go b/server/internal/library/hggen/internal/cmd/gendao/gendao_structure.go new file mode 100644 index 0000000..9508489 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/gendao/gendao_structure.go @@ -0,0 +1,229 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package gendao + +import ( + "bytes" + "context" + "fmt" + "strings" + + "github.com/olekukonko/tablewriter" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" +) + +type generateStructDefinitionInput struct { + CGenDaoInternalInput + TableName string // Table name. + StructName string // Struct name. + FieldMap map[string]*gdb.TableField // Table field map. + IsDo bool // Is generating DTO struct. +} + +func generateStructDefinition(ctx context.Context, in generateStructDefinitionInput) (string, []string) { + var appendImports []string + buffer := bytes.NewBuffer(nil) + array := make([][]string, len(in.FieldMap)) + names := sortFieldKeyForDao(in.FieldMap) + for index, name := range names { + var imports string + field := in.FieldMap[name] + array[index], imports = generateStructFieldDefinition(ctx, field, in) + if imports != "" { + appendImports = append(appendImports, imports) + } + } + table := tablewriter.NewTable(buffer, twRenderer, twConfig) + table.Bulk(array) + table.Render() + stContent := buffer.String() + // Let's do this hack of table writer for indent! + stContent = gstr.Replace(stContent, " #", "") + stContent = gstr.Replace(stContent, "` ", "`") + stContent = gstr.Replace(stContent, "``", "") + buffer.Reset() + fmt.Fprintf(buffer, "type %s struct {\n", in.StructName) + if in.IsDo { + fmt.Fprintf(buffer, "g.Meta `orm:\"table:%s, do:true\"`\n", in.TableName) + } + buffer.WriteString(stContent) + buffer.WriteString("}") + return buffer.String(), appendImports +} + +func getTypeMappingInfo( + ctx context.Context, fieldType string, inTypeMapping map[DBFieldTypeName]CustomAttributeType, +) (typeNameStr, importStr string) { + if typeMapping, ok := inTypeMapping[strings.ToLower(fieldType)]; ok { + typeNameStr = typeMapping.Type + importStr = typeMapping.Import + return + } + tryTypeMatch, _ := gregex.MatchString(`(.+?)\(([^\(\)]+)\)([\s\)]*)`, fieldType) + var ( + tryTypeName string + moreTry bool + ) + if len(tryTypeMatch) == 4 { + tryTypeMatch3, _ := gregex.ReplaceString(`\s+`, "", tryTypeMatch[3]) + tryTypeName = gstr.Trim(tryTypeMatch[1]) + tryTypeMatch3 + moreTry = tryTypeMatch3 != "" + } else { + tryTypeName = gstr.Split(fieldType, " ")[0] + } + if tryTypeName != "" { + if typeMapping, ok := inTypeMapping[strings.ToLower(tryTypeName)]; ok { + typeNameStr = typeMapping.Type + importStr = typeMapping.Import + } else if moreTry { + typeNameStr, importStr = getTypeMappingInfo(ctx, tryTypeName, inTypeMapping) + } + } + return +} + +// generateStructFieldDefinition generates and returns the attribute definition for specified field. +func generateStructFieldDefinition( + ctx context.Context, field *gdb.TableField, in generateStructDefinitionInput, +) (attrLines []string, appendImport string) { + var ( + err error + localTypeName gdb.LocalType + localTypeNameStr string + jsonTag = gstr.CaseConvert(field.Name, gstr.CaseTypeMatch(in.JsonCase)) + ) + + if in.TypeMapping != nil && len(in.TypeMapping) > 0 { + localTypeNameStr, appendImport = getTypeMappingInfo(ctx, field.Type, in.TypeMapping) + } + + if localTypeNameStr == "" { + localTypeName, err = in.DB.CheckLocalTypeForField(ctx, field.Type, nil) + if err != nil { + panic(err) + } + localTypeNameStr = string(localTypeName) + switch localTypeName { + case gdb.LocalTypeDate, gdb.LocalTypeTime, gdb.LocalTypeDatetime: + if in.StdTime { + localTypeNameStr = "time.Time" + } else { + localTypeNameStr = "*gtime.Time" + } + + case gdb.LocalTypeInt64Bytes: + localTypeNameStr = "int64" + + case gdb.LocalTypeUint64Bytes: + localTypeNameStr = "uint64" + + // Special type handle. + case gdb.LocalTypeJson, gdb.LocalTypeJsonb: + if in.GJsonSupport { + localTypeNameStr = "*gjson.Json" + } else { + localTypeNameStr = "string" + } + } + } + + var ( + tagKey = "`" + descriptionTag = gstr.Replace(formatComment(field.Comment), `"`, `\"`) + ) + removeFieldPrefixArray := gstr.SplitAndTrim(in.RemoveFieldPrefix, ",") + newFiledName := field.Name + for _, v := range removeFieldPrefixArray { + newFiledName = gstr.TrimLeftStr(newFiledName, v, 1) + } + + if in.FieldMapping != nil && len(in.FieldMapping) > 0 { + if typeMapping, ok := in.FieldMapping[fmt.Sprintf("%s.%s", in.TableName, newFiledName)]; ok { + localTypeNameStr = typeMapping.Type + appendImport = typeMapping.Import + } + } + + attrLines = []string{ + " #" + formatFieldName(newFiledName, FieldNameCaseCamel), + " #" + localTypeNameStr, + } + attrLines = append(attrLines, fmt.Sprintf(` #%sjson:"%s"`, tagKey, jsonTag)) + // orm tag + if !in.IsDo { + // entity + attrLines = append(attrLines, fmt.Sprintf(` #orm:"%s"`, field.Name)) + } + attrLines = append(attrLines, fmt.Sprintf(` #description:"%s"%s`, descriptionTag, tagKey)) + attrLines = append(attrLines, fmt.Sprintf(` #// %s`, formatComment(field.Comment))) + + for k, v := range attrLines { + if in.NoJsonTag { + v, _ = gregex.ReplaceString(`json:".+"`, ``, v) + } + if !in.DescriptionTag { + v, _ = gregex.ReplaceString(`description:".*"`, ``, v) + } + if in.NoModelComment { + v, _ = gregex.ReplaceString(`//.+`, ``, v) + } + attrLines[k] = v + } + return attrLines, appendImport +} + +type FieldNameCase string + +const ( + FieldNameCaseCamel FieldNameCase = "CaseCamel" + FieldNameCaseCamelLower FieldNameCase = "CaseCamelLower" +) + +// formatFieldName formats and returns a new field name that is used for golang codes generating. +func formatFieldName(fieldName string, nameCase FieldNameCase) string { + // For normal databases like mysql, pgsql, sqlite, + // field/table names of that are in normal case. + var newFieldName = fieldName + if isAllUpper(fieldName) { + // For special databases like dm, oracle, + // field/table names of that are in upper case. + newFieldName = strings.ToLower(fieldName) + } + switch nameCase { + case FieldNameCaseCamel: + return gstr.CaseCamel(newFieldName) + case FieldNameCaseCamelLower: + return gstr.CaseCamelLower(newFieldName) + default: + return "" + } +} + +// isAllUpper checks and returns whether given `fieldName` all letters are upper case. +func isAllUpper(fieldName string) bool { + for _, b := range fieldName { + if b >= 'a' && b <= 'z' { + return false + } + } + return true +} + +// formatComment formats the comment string to fit the golang code without any lines. +func formatComment(comment string) string { + comment = gstr.ReplaceByArray(comment, g.SliceStr{ + "\n", " ", + "\r", " ", + }) + comment = gstr.Replace(comment, `\n`, " ") + comment = gstr.Trim(comment) + return comment +} diff --git a/server/internal/library/hggen/internal/cmd/gendao/gendao_table.go b/server/internal/library/hggen/internal/cmd/gendao/gendao_table.go new file mode 100644 index 0000000..f6587b0 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/gendao/gendao_table.go @@ -0,0 +1,147 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package gendao + +import ( + "bytes" + "context" + "path/filepath" + "sort" + "strconv" + "strings" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gview" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gconv" + + "hotgo/internal/library/hggen/internal/consts" + "hotgo/internal/library/hggen/internal/utility/mlog" + "hotgo/internal/library/hggen/internal/utility/utils" +) + +// generateTable generates dao files for given tables. +func generateTable(ctx context.Context, in CGenDaoInternalInput) { + dirPathTable := gfile.Join(in.Path, in.TablePath) + if !in.GenTable { + if gfile.Exists(dirPathTable) { + in.genItems.AppendDirPath(dirPathTable) + } + return + } + in.genItems.AppendDirPath(dirPathTable) + for i := 0; i < len(in.TableNames); i++ { + var ( + realTableName = in.TableNames[i] + newTableName = in.NewTableNames[i] + ) + generateTableSingle(ctx, generateTableSingleInput{ + CGenDaoInternalInput: in, + TableName: realTableName, + NewTableName: newTableName, + DirPathTable: dirPathTable, + }) + } +} + +// generateTableSingleInput is the input parameter for generateTableSingle. +type generateTableSingleInput struct { + CGenDaoInternalInput + // TableName specifies the table name of the table. + TableName string + // NewTableName specifies the prefix-stripped or custom edited name of the table. + NewTableName string + DirPathTable string +} + +// generateTableSingle generates dao files for a single table. +func generateTableSingle(ctx context.Context, in generateTableSingleInput) { + // Generating table data preparing. + fieldMap, err := in.DB.TableFields(ctx, in.TableName) + if err != nil { + mlog.Fatalf(`fetching tables fields failed for table "%s": %+v`, in.TableName, err) + } + + tableNameSnakeCase := gstr.CaseSnake(in.NewTableName) + fileName := gstr.Trim(tableNameSnakeCase, "-_.") + if len(fileName) > 5 && fileName[len(fileName)-5:] == "_test" { + // Add suffix to avoid the table name which contains "_test", + // which would make the go file a testing file. + fileName += "_table" + } + path := filepath.FromSlash(gfile.Join(in.DirPathTable, fileName+".go")) + in.genItems.AppendGeneratedFilePath(path) + if in.OverwriteDao || !gfile.Exists(path) { + var ( + ctx = context.Background() + tplContent = getTemplateFromPathOrDefault( + in.TplDaoTablePath, consts.TemplateGenTableContent, + ) + ) + tplView.ClearAssigns() + tplView.Assigns(gview.Params{ + tplVarGroupName: in.Group, + tplVarTableName: in.TableName, + tplVarTableNameCamelCase: formatFieldName(in.NewTableName, FieldNameCaseCamel), + tplVarPackageName: filepath.Base(in.TablePath), + tplVarTableFields: generateTableFields(fieldMap), + }) + indexContent, err := tplView.ParseContent(ctx, tplContent) + if err != nil { + mlog.Fatalf("parsing template content failed: %v", err) + } + if err = gfile.PutContents(path, strings.TrimSpace(indexContent)); err != nil { + mlog.Fatalf("writing content to '%s' failed: %v", path, err) + } else { + utils.GoFmt(path) + mlog.Print("generated:", gfile.RealPath(path)) + } + } +} + +// generateTableFields generates and returns the field definition content for specified table. +func generateTableFields(fields map[string]*gdb.TableField) string { + var buf bytes.Buffer + fieldNames := make([]string, 0, len(fields)) + for fieldName := range fields { + fieldNames = append(fieldNames, fieldName) + } + sort.Slice(fieldNames, func(i, j int) bool { + return fields[fieldNames[i]].Index < fields[fieldNames[j]].Index // asc + }) + for index, fieldName := range fieldNames { + field := fields[fieldName] + buf.WriteString(" " + strconv.Quote(field.Name) + ": {\n") + buf.WriteString(" Index: " + gconv.String(field.Index) + ",\n") + buf.WriteString(" Name: " + strconv.Quote(field.Name) + ",\n") + buf.WriteString(" Type: " + strconv.Quote(field.Type) + ",\n") + buf.WriteString(" Null: " + gconv.String(field.Null) + ",\n") + buf.WriteString(" Key: " + strconv.Quote(field.Key) + ",\n") + buf.WriteString(" Default: " + generateDefaultValue(field.Default) + ",\n") + buf.WriteString(" Extra: " + strconv.Quote(field.Extra) + ",\n") + buf.WriteString(" Comment: " + strconv.Quote(field.Comment) + ",\n") + buf.WriteString(" },") + if index != len(fieldNames)-1 { + buf.WriteString("\n") + } + } + return buf.String() +} + +// generateDefaultValue generates and returns the default value definition for specified field. +func generateDefaultValue(value interface{}) string { + if value == nil { + return "nil" + } + switch v := value.(type) { + case string: + return strconv.Quote(v) + default: + return gconv.String(v) + } +} diff --git a/server/internal/library/hggen/internal/cmd/gendao/gendao_tag.go b/server/internal/library/hggen/internal/cmd/gendao/gendao_tag.go new file mode 100644 index 0000000..25bc842 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/gendao/gendao_tag.go @@ -0,0 +1,155 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package gendao + +import ( + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/util/gtag" +) + +const ( + CGenDaoConfig = `gfcli.gen.dao` + CGenDaoUsage = `gf gen dao [OPTION]` + CGenDaoBrief = `automatically generate go files for dao/do/entity` + CGenDaoEg = ` +gf gen dao +gf gen dao -l "mysql:root:12345678@tcp(127.0.0.1:3306)/test" +gf gen dao -p ./model -g user-center -t user,user_detail,user_login +gf gen dao -r user_ +` + + CGenDaoAd = ` +CONFIGURATION SUPPORT + Options are also supported by configuration file. + It's suggested using configuration file instead of command line arguments making producing. + The configuration node name is "gfcli.gen.dao", which also supports multiple databases, for example(config.yaml): + gfcli: + gen: + dao: + - link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test" + tables: "order,products" + jsonCase: "CamelLower" + - link: "mysql:root:12345678@tcp(127.0.0.1:3306)/primary" + path: "./my-app" + prefix: "primary_" + tables: "user, userDetail" + typeMapping: + decimal: + type: decimal.Decimal + import: github.com/shopspring/decimal + numeric: + type: string + fieldMapping: + table_name.field_name: + type: decimal.Decimal + import: github.com/shopspring/decimal +` + CGenDaoBriefPath = `directory path for generated files` + CGenDaoBriefLink = `database configuration, the same as the ORM configuration of GoFrame` + CGenDaoBriefTables = `generate models only for given tables, multiple table names separated with ','` + CGenDaoBriefTablesEx = `generate models excluding given tables, multiple table names separated with ','` + CGenDaoBriefPrefix = `add prefix for all table of specified link/database tables` + CGenDaoBriefRemovePrefix = `remove specified prefix of the table, multiple prefix separated with ','` + CGenDaoBriefRemoveFieldPrefix = `remove specified prefix of the field, multiple prefix separated with ','` + CGenDaoBriefStdTime = `use time.Time from stdlib instead of gtime.Time for generated time/date fields of tables` + CGenDaoBriefWithTime = `add created time for auto produced go files` + CGenDaoBriefGJsonSupport = `use gJsonSupport to use *gjson.Json instead of string for generated json fields of tables` + CGenDaoBriefImportPrefix = `custom import prefix for generated go files` + CGenDaoBriefDaoPath = `directory path for storing generated dao files under path` + CGenDaoBriefTablePath = `directory path for storing generated table files under path` + CGenDaoBriefDoPath = `directory path for storing generated do files under path` + CGenDaoBriefEntityPath = `directory path for storing generated entity files under path` + CGenDaoBriefOverwriteDao = `overwrite all dao files both inside/outside internal folder` + CGenDaoBriefModelFile = `custom file name for storing generated model content` + CGenDaoBriefModelFileForDao = `custom file name generating model for DAO operations like Where/Data. It's empty in default` + CGenDaoBriefDescriptionTag = `add comment to description tag for each field` + CGenDaoBriefNoJsonTag = `no json tag will be added for each field` + CGenDaoBriefNoModelComment = `no model comment will be added for each field` + CGenDaoBriefClear = `delete all generated go files that do not exist in database` + CGenDaoBriefGenTable = `generate table files` + CGenDaoBriefTypeMapping = `custom local type mapping for generated struct attributes relevant to fields of table` + CGenDaoBriefFieldMapping = `custom local type mapping for generated struct attributes relevant to specific fields of table` + CGenDaoBriefShardingPattern = `sharding pattern for table name, e.g. "users_?" will be replace tables "users_001,users_002,..." to "users" dao` + CGenDaoBriefGroup = ` +specifying the configuration group name of database for generated ORM instance, +it's not necessary and the default value is "default" +` + CGenDaoBriefJsonCase = ` +generated json tag case for model struct, cases are as follows: +| Case | Example | +|---------------- |--------------------| +| Camel | AnyKindOfString | +| CamelLower | anyKindOfString | default +| Snake | any_kind_of_string | +| SnakeScreaming | ANY_KIND_OF_STRING | +| SnakeFirstUpper | rgb_code_md5 | +| Kebab | any-kind-of-string | +| KebabScreaming | ANY-KIND-OF-STRING | +` + CGenDaoBriefTplDaoIndexPath = `template file path for dao index file` + CGenDaoBriefTplDaoInternalPath = `template file path for dao internal file` + CGenDaoBriefTplDaoDoPathPath = `template file path for dao do file` + CGenDaoBriefTplDaoEntityPath = `template file path for dao entity file` + + tplVarTableName = `TplTableName` + tplVarTableNameCamelCase = `TplTableNameCamelCase` + tplVarTableNameCamelLowerCase = `TplTableNameCamelLowerCase` + tplVarTableSharding = `TplTableSharding` + tplVarTableShardingPrefix = `TplTableShardingPrefix` + tplVarTableFields = `TplTableFields` + tplVarPackageImports = `TplPackageImports` + tplVarImportPrefix = `TplImportPrefix` + tplVarStructDefine = `TplStructDefine` + tplVarColumnDefine = `TplColumnDefine` + tplVarColumnNames = `TplColumnNames` + tplVarGroupName = `TplGroupName` + tplVarDatetimeStr = `TplDatetimeStr` + tplVarCreatedAtDatetimeStr = `TplCreatedAtDatetimeStr` + tplVarPackageName = `TplPackageName` +) + +func init() { + gtag.Sets(g.MapStrStr{ + `CGenDaoConfig`: CGenDaoConfig, + `CGenDaoUsage`: CGenDaoUsage, + `CGenDaoBrief`: CGenDaoBrief, + `CGenDaoEg`: CGenDaoEg, + `CGenDaoAd`: CGenDaoAd, + `CGenDaoBriefPath`: CGenDaoBriefPath, + `CGenDaoBriefLink`: CGenDaoBriefLink, + `CGenDaoBriefTables`: CGenDaoBriefTables, + `CGenDaoBriefTablesEx`: CGenDaoBriefTablesEx, + `CGenDaoBriefPrefix`: CGenDaoBriefPrefix, + `CGenDaoBriefRemovePrefix`: CGenDaoBriefRemovePrefix, + `CGenDaoBriefRemoveFieldPrefix`: CGenDaoBriefRemoveFieldPrefix, + `CGenDaoBriefStdTime`: CGenDaoBriefStdTime, + `CGenDaoBriefWithTime`: CGenDaoBriefWithTime, + `CGenDaoBriefDaoPath`: CGenDaoBriefDaoPath, + `CGenDaoBriefTablePath`: CGenDaoBriefTablePath, + `CGenDaoBriefDoPath`: CGenDaoBriefDoPath, + `CGenDaoBriefEntityPath`: CGenDaoBriefEntityPath, + `CGenDaoBriefGJsonSupport`: CGenDaoBriefGJsonSupport, + `CGenDaoBriefImportPrefix`: CGenDaoBriefImportPrefix, + `CGenDaoBriefOverwriteDao`: CGenDaoBriefOverwriteDao, + `CGenDaoBriefModelFile`: CGenDaoBriefModelFile, + `CGenDaoBriefModelFileForDao`: CGenDaoBriefModelFileForDao, + `CGenDaoBriefDescriptionTag`: CGenDaoBriefDescriptionTag, + `CGenDaoBriefNoJsonTag`: CGenDaoBriefNoJsonTag, + `CGenDaoBriefNoModelComment`: CGenDaoBriefNoModelComment, + `CGenDaoBriefClear`: CGenDaoBriefClear, + `CGenDaoBriefGenTable`: CGenDaoBriefGenTable, + `CGenDaoBriefTypeMapping`: CGenDaoBriefTypeMapping, + `CGenDaoBriefFieldMapping`: CGenDaoBriefFieldMapping, + `CGenDaoBriefShardingPattern`: CGenDaoBriefShardingPattern, + `CGenDaoBriefGroup`: CGenDaoBriefGroup, + `CGenDaoBriefJsonCase`: CGenDaoBriefJsonCase, + `CGenDaoBriefTplDaoIndexPath`: CGenDaoBriefTplDaoIndexPath, + `CGenDaoBriefTplDaoInternalPath`: CGenDaoBriefTplDaoInternalPath, + `CGenDaoBriefTplDaoDoPathPath`: CGenDaoBriefTplDaoDoPathPath, + `CGenDaoBriefTplDaoEntityPath`: CGenDaoBriefTplDaoEntityPath, + }) +} diff --git a/server/internal/library/hggen/internal/cmd/genenums/genenums.go b/server/internal/library/hggen/internal/cmd/genenums/genenums.go new file mode 100644 index 0000000..18a34cd --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genenums/genenums.go @@ -0,0 +1,85 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genenums + +import ( + "context" + + "golang.org/x/tools/go/packages" + + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gtag" + + "hotgo/internal/library/hggen/internal/consts" + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +type ( + CGenEnums struct{} + CGenEnumsInput struct { + g.Meta `name:"enums" config:"{CGenEnumsConfig}" brief:"{CGenEnumsBrief}" eg:"{CGenEnumsEg}"` + Src string `name:"src" short:"s" dc:"source folder path to be parsed" d:"api"` + Path string `name:"path" short:"p" dc:"output go file path storing enums content" d:"internal/packed/packed_enums.go"` + Prefixes []string `name:"prefixes" short:"x" dc:"only exports packages that starts with specified prefixes"` + } + CGenEnumsOutput struct{} +) + +const ( + CGenEnumsConfig = `gfcli.gen.enums` + CGenEnumsBrief = `parse go files in current project and generate enums go file` + CGenEnumsEg = ` +gf gen enums +gf gen enums -p internal/packed/packed_enums.go +gf gen enums -p internal/packed/packed_enums.go -s . +gf gen enums -x github.com/gogf +` +) + +func init() { + gtag.Sets(g.MapStrStr{ + `CGenEnumsEg`: CGenEnumsEg, + `CGenEnumsBrief`: CGenEnumsBrief, + `CGenEnumsConfig`: CGenEnumsConfig, + }) +} + +func (c CGenEnums) Enums(ctx context.Context, in CGenEnumsInput) (out *CGenEnumsOutput, err error) { + realPath := gfile.RealPath(in.Src) + if realPath == "" { + mlog.Fatalf(`source folder path "%s" does not exist`, in.Src) + } + err = gfile.Chdir(realPath) + if err != nil { + mlog.Fatal(err) + } + mlog.Printf(`scanning for enums: %s`, realPath) + cfg := &packages.Config{ + Dir: realPath, + Mode: pkgLoadMode, + Tests: false, + } + pkgs, err := packages.Load(cfg) + if err != nil { + mlog.Fatal(err) + } + p := NewEnumsParser(in.Prefixes) + p.ParsePackages(pkgs) + var enumsContent = gstr.ReplaceByMap(consts.TemplateGenEnums, g.MapStrStr{ + "{PackageName}": gfile.Basename(gfile.Dir(in.Path)), + "{EnumsJson}": "`" + p.Export() + "`", + }) + enumsContent = gstr.Trim(enumsContent) + if err = gfile.PutContents(in.Path, enumsContent); err != nil { + return + } + mlog.Printf(`generated enums go file: %s`, in.Path) + mlog.Print("done!") + return +} diff --git a/server/internal/library/hggen/internal/cmd/genenums/genenums_parser.go b/server/internal/library/hggen/internal/cmd/genenums/genenums_parser.go new file mode 100644 index 0000000..e0ab942 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genenums/genenums_parser.go @@ -0,0 +1,149 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genenums + +import ( + "go/constant" + "go/types" + + "golang.org/x/tools/go/packages" + + "github.com/gogf/gf/v2/encoding/gjson" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gconv" +) + +const pkgLoadMode = 0xffffff + +type EnumsParser struct { + enums []EnumItem + parsedPkg map[string]struct{} + prefixes []string + standardPackages map[string]struct{} +} + +type EnumItem struct { + Name string + Value string + Kind constant.Kind // String/Int/Bool/Float/Complex/Unknown + Type string // Pkg.ID + TypeName +} + +func NewEnumsParser(prefixes []string) *EnumsParser { + return &EnumsParser{ + enums: make([]EnumItem, 0), + parsedPkg: make(map[string]struct{}), + prefixes: prefixes, + standardPackages: getStandardPackages(), + } +} + +func (p *EnumsParser) ParsePackages(pkgs []*packages.Package) { + for _, pkg := range pkgs { + p.ParsePackage(pkg) + } +} + +func (p *EnumsParser) ParsePackage(pkg *packages.Package) { + // Ignore std packages. + if _, ok := p.standardPackages[pkg.ID]; ok { + return + } + // Ignore pared packages. + if _, ok := p.parsedPkg[pkg.ID]; ok { + return + } + p.parsedPkg[pkg.ID] = struct{}{} + + // Only parse specified prefixes. + if len(p.prefixes) > 0 { + var hasPrefix bool + for _, prefix := range p.prefixes { + if hasPrefix = gstr.HasPrefix(pkg.ID, prefix); hasPrefix { + break + } + } + if !hasPrefix { + return + } + } + + var ( + scope = pkg.Types.Scope() + names = scope.Names() + ) + for _, name := range names { + con, ok := scope.Lookup(name).(*types.Const) + if !ok { + // Only constants can be enums. + continue + } + if !con.Exported() { + // Ignore unexported values. + continue + } + + var enumType = con.Type().String() + if !gstr.Contains(enumType, "/") { + // Ignore std types. + continue + } + var ( + enumName = con.Name() + enumValue = con.Val().ExactString() + enumKind = con.Val().Kind() + ) + if con.Val().Kind() == constant.String { + enumValue = constant.StringVal(con.Val()) + } + p.enums = append(p.enums, EnumItem{ + Name: enumName, + Value: enumValue, + Type: enumType, + Kind: enumKind, + }) + } + for _, im := range pkg.Imports { + p.ParsePackage(im) + } +} + +func (p *EnumsParser) Export() string { + var typeEnumMap = make(map[string][]any) + for _, enum := range p.enums { + if typeEnumMap[enum.Type] == nil { + typeEnumMap[enum.Type] = make([]any, 0) + } + var value any + switch enum.Kind { + case constant.Int: + value = gconv.Int64(enum.Value) + case constant.String: + value = enum.Value + case constant.Float: + value = gconv.Float64(enum.Value) + case constant.Bool: + value = gconv.Bool(enum.Value) + default: + value = enum.Value + } + typeEnumMap[enum.Type] = append(typeEnumMap[enum.Type], value) + } + return gjson.MustEncodeString(typeEnumMap) +} + +func getStandardPackages() map[string]struct{} { + standardPackages := make(map[string]struct{}) + stdPackages, err := packages.Load(nil, "std") + if err != nil { + panic(err) + } + for _, p := range stdPackages { + standardPackages[p.ID] = struct{}{} + } + return standardPackages +} diff --git a/server/internal/library/hggen/internal/cmd/genpb/genpb.go b/server/internal/library/hggen/internal/cmd/genpb/genpb.go new file mode 100644 index 0000000..da4da07 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genpb/genpb.go @@ -0,0 +1,132 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genpb + +import ( + "context" + + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gproc" + "github.com/gogf/gf/v2/util/gtag" + + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +type ( + CGenPb struct{} + CGenPbInput struct { + g.Meta `name:"pb" config:"{CGenPbConfig}" brief:"{CGenPbBrief}" eg:"{CGenPbEg}"` + Path string `name:"path" short:"p" dc:"protobuf file folder path" d:"manifest/protobuf"` + OutputApi string `name:"api" short:"a" dc:"output folder path storing generated go files of api" d:"api"` + OutputCtrl string `name:"ctrl" short:"c" dc:"output folder path storing generated go files of controller" d:"internal/controller"` + } + CGenPbOutput struct{} +) + +const ( + CGenPbConfig = `gfcli.gen.pb` + CGenPbBrief = `parse proto files and generate protobuf go files` + CGenPbEg = ` +gf gen pb +gf gen pb -p . -a . -p . +` +) + +func init() { + gtag.Sets(g.MapStrStr{ + `CGenPbEg`: CGenPbEg, + `CGenPbBrief`: CGenPbBrief, + `CGenPbConfig`: CGenPbConfig, + }) +} + +func (c CGenPb) Pb(ctx context.Context, in CGenPbInput) (out *CGenPbOutput, err error) { + // Necessary check. + protoc := gproc.SearchBinary("protoc") + if protoc == "" { + mlog.Fatalf(`command "protoc" not found in your environment, please install protoc first: https://grpc.io/docs/languages/go/quickstart/`) + } + + // protocol fold checks. + var ( + protoPath = gfile.RealPath(in.Path) + isParsingPWD bool + ) + if protoPath == "" { + // Use current working directory as protoPath if there are proto files under. + currentPath := gfile.Pwd() + currentFiles, _ := gfile.ScanDirFile(currentPath, "*.proto") + if len(currentFiles) > 0 { + protoPath = currentPath + isParsingPWD = true + } else { + mlog.Fatalf(`proto files folder "%s" does not exist`, in.Path) + } + } + // output path checks. + outputApiPath := gfile.RealPath(in.OutputApi) + if outputApiPath == "" { + if isParsingPWD { + outputApiPath = protoPath + } else { + mlog.Fatalf(`output api folder "%s" does not exist`, in.OutputApi) + } + } + outputCtrlPath := gfile.RealPath(in.OutputCtrl) + if outputCtrlPath == "" { + if isParsingPWD { + outputCtrlPath = "" + } else { + mlog.Fatalf(`output controller folder "%s" does not exist`, in.OutputCtrl) + } + } + + // folder scanning. + files, err := gfile.ScanDirFile(protoPath, "*.proto", true) + if err != nil { + mlog.Fatal(err) + } + if len(files) == 0 { + mlog.Fatalf(`no proto files found in folder "%s"`, in.Path) + } + + var originPwd = gfile.Pwd() + defer gfile.Chdir(originPwd) + + if err = gfile.Chdir(protoPath); err != nil { + mlog.Fatal(err) + } + for _, file := range files { + var command = gproc.NewProcess(protoc, nil) + command.Args = append(command.Args, "--proto_path="+gfile.Pwd()) + command.Args = append(command.Args, "--go_out=paths=source_relative:"+outputApiPath) + command.Args = append(command.Args, "--go-grpc_out=paths=source_relative:"+outputApiPath) + command.Args = append(command.Args, file) + mlog.Print(command.String()) + if err = command.Run(ctx); err != nil { + mlog.Fatal(err) + } + } + // Generate struct tag according comment rules. + err = c.generateStructTag(ctx, generateStructTagInput{OutputApiPath: outputApiPath}) + if err != nil { + return + } + // Generate controllers according comment rules. + if outputCtrlPath != "" { + err = c.generateController(ctx, generateControllerInput{ + OutputApiPath: outputApiPath, + OutputCtrlPath: outputCtrlPath, + }) + if err != nil { + return + } + } + mlog.Print("done!") + return +} diff --git a/server/internal/library/hggen/internal/cmd/genpb/genpb_controller.go b/server/internal/library/hggen/internal/cmd/genpb/genpb_controller.go new file mode 100644 index 0000000..205e0c4 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genpb/genpb_controller.go @@ -0,0 +1,197 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genpb + +import ( + "context" + "fmt" + "strings" + + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/utility/utils" +) + +type generateControllerInput struct { + OutputApiPath string + OutputCtrlPath string +} + +type generateCtrl struct { + Name string + Package string + Version string + Methods []generateCtrlMethod +} + +type generateCtrlMethod struct { + Name string + Definition string +} + +const ( + controllerTemplate = ` +package {Package} + +type Controller struct { + {Version}.Unimplemented{Name}Server +} + +func Register(s *grpcx.GrpcServer) { + {Version}.Register{Name}Server(s.Server, &Controller{}) +} +` + controllerMethodTemplate = ` +func (*Controller) {Definition} { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +} +` +) + +func (c CGenPb) generateController(ctx context.Context, in generateControllerInput) (err error) { + files, err := gfile.ScanDirFile(in.OutputApiPath, "*_grpc.pb.go", true) + if err != nil { + return err + } + var controllers []generateCtrl + for _, file := range files { + fileControllers, err := c.parseControllers(file) + if err != nil { + return err + } + controllers = append(controllers, fileControllers...) + } + if len(controllers) == 0 { + return nil + } + // Generate controller files. + err = c.doGenerateControllers(in, controllers) + return +} + +func (c CGenPb) parseControllers(filePath string) ([]generateCtrl, error) { + var ( + controllers []generateCtrl + content = gfile.GetContents(filePath) + ) + _, err := gregex.ReplaceStringFuncMatch( + `type (\w+)Server interface {([\s\S]+?)}`, + content, + func(match []string) string { + ctrl := generateCtrl{ + Name: match[1], + Package: strings.ReplaceAll(gfile.Basename(gfile.Dir(gfile.Dir(filePath))), "-", "_"), + Version: gfile.Basename(gfile.Dir(filePath)), + Methods: make([]generateCtrlMethod, 0), + } + lines := gstr.Split(match[2], "\n") + for _, line := range lines { + line = gstr.Trim(line) + if line == "" || !gstr.IsLetterUpper(line[0]) { + continue + } + // Comment. + if gregex.IsMatchString(`^//.+`, line) { + continue + } + line, _ = gregex.ReplaceStringFuncMatch( + `^(\w+)\(context\.Context, \*(\w+)\) \(\*(\w+), error\)$`, + line, + func(match []string) string { + return fmt.Sprintf( + `%s(ctx context.Context, req *%s.%s) (res *%s.%s, err error)`, + match[1], ctrl.Version, match[2], ctrl.Version, match[3], + ) + }, + ) + ctrl.Methods = append(ctrl.Methods, generateCtrlMethod{ + Name: gstr.Split(line, "(")[0], + Definition: line, + }) + } + if len(ctrl.Methods) > 0 { + controllers = append(controllers, ctrl) + } + return match[0] + }, + ) + return controllers, err +} + +func (c CGenPb) doGenerateControllers(in generateControllerInput, controllers []generateCtrl) (err error) { + for _, controller := range controllers { + err = c.doGenerateController(in, controller) + if err != nil { + return err + } + } + err = utils.ReplaceGeneratedContentGFV2(in.OutputCtrlPath) + return nil +} + +func (c CGenPb) doGenerateController(in generateControllerInput, controller generateCtrl) (err error) { + var ( + folderPath = gfile.Join(in.OutputCtrlPath, controller.Package) + filePath = gfile.Join(folderPath, controller.Package+".go") + isDirty bool + ) + if !gfile.Exists(folderPath) { + if err = gfile.Mkdir(folderPath); err != nil { + return err + } + } + if !gfile.Exists(filePath) { + templateContent := gstr.ReplaceByMap(controllerTemplate, g.MapStrStr{ + "{Name}": controller.Name, + "{Version}": controller.Version, + "{Package}": controller.Package, + }) + if err = gfile.PutContents(filePath, templateContent); err != nil { + return err + } + isDirty = true + } + // Exist controller content. + var ctrlContent string + files, err := gfile.ScanDirFile(folderPath, "*.go", false) + if err != nil { + return err + } + for _, file := range files { + if ctrlContent != "" { + ctrlContent += "\n" + } + ctrlContent += gfile.GetContents(file) + } + // Generate method content. + var generatedContent string + for _, method := range controller.Methods { + if gstr.Contains(ctrlContent, fmt.Sprintf(`%s(`, method.Name)) { + continue + } + if generatedContent != "" { + generatedContent += "\n" + } + generatedContent += gstr.ReplaceByMap(controllerMethodTemplate, g.MapStrStr{ + "{Definition}": method.Definition, + }) + } + if generatedContent != "" { + err = gfile.PutContentsAppend(filePath, generatedContent) + if err != nil { + return err + } + isDirty = true + } + if isDirty { + utils.GoFmt(filePath) + } + return nil +} diff --git a/server/internal/library/hggen/internal/cmd/genpb/genpb_tag.go b/server/internal/library/hggen/internal/cmd/genpb/genpb_tag.go new file mode 100644 index 0000000..3dd9481 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genpb/genpb_tag.go @@ -0,0 +1,123 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genpb + +import ( + "context" + "fmt" + + "github.com/gogf/gf/v2/container/gmap" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gconv" + + "hotgo/internal/library/hggen/internal/utility/utils" +) + +type generateStructTagInput struct { + OutputApiPath string +} + +func (c CGenPb) generateStructTag(ctx context.Context, in generateStructTagInput) (err error) { + files, err := gfile.ScanDirFile(in.OutputApiPath, "*.pb.go", true) + if err != nil { + return err + } + var content string + for _, file := range files { + content = gfile.GetContents(file) + content, err = c.doTagReplacement(ctx, content) + if err != nil { + return err + } + if err = gfile.PutContents(file, content); err != nil { + return err + } + utils.GoFmt(file) + } + return +} + +func (c CGenPb) doTagReplacement(ctx context.Context, content string) (string, error) { + content, err := gregex.ReplaceStringFuncMatch(`type (\w+) struct {([\s\S]+?)}`, content, func(match []string) string { + var ( + topCommentMatch []string + tailCommentMatch []string + lines = gstr.Split(match[2], "\n") + lineTagMap = gmap.NewListMap() + ) + for index, line := range lines { + line = gstr.Trim(line) + if line == "" { + continue + } + // Top comment. + topCommentMatch, _ = gregex.MatchString(`^/[/|\*](.+)`, line) + if len(topCommentMatch) > 1 { + c.tagCommentIntoListMap(gstr.Trim(topCommentMatch[1]), lineTagMap) + continue + } + // Tail comment. + tailCommentMatch, _ = gregex.MatchString(".+?`.+?`.+?//(.+)", line) + if len(tailCommentMatch) > 1 { + c.tagCommentIntoListMap(gstr.Trim(tailCommentMatch[1]), lineTagMap) + } + // Tag injection. + if !lineTagMap.IsEmpty() { + tagContent := c.listMapToStructTag(lineTagMap) + lineTagMap.Clear() + // If already have it, don't add it anymore + if gstr.Contains(gstr.StrTill(line, "` //"), tagContent) { + continue + } + line, _ = gregex.ReplaceString("`(.+)`", fmt.Sprintf("`$1 %s`", tagContent), line) + } + lines[index] = line + } + match[2] = gstr.Join(lines, "\n") + return fmt.Sprintf("type %s struct {%s}", match[1], match[2]) + }) + return content, err +} + +func (c CGenPb) tagCommentIntoListMap(comment string, lineTagMap *gmap.ListMap) { + tagCommentMatch, _ := gregex.MatchString(`^(\w+):(.+)`, comment) + if len(tagCommentMatch) > 1 { + var ( + tagName = gstr.Trim(tagCommentMatch[1]) + tagContent = gstr.Trim(tagCommentMatch[2]) + ) + lineTagMap.Set(tagName, lineTagMap.GetVar(tagName).String()+tagContent) + } else { + var ( + tagName = "dc" + // Convert backticks and double quotes to single quotes. + tagContent = gstr.ReplaceByMap(comment, g.MapStrStr{ + "`": `'`, + `"`: `'`, + }) + ) + lineTagMap.Set(tagName, lineTagMap.GetVar(tagName).String()+tagContent) + } +} + +func (c CGenPb) listMapToStructTag(lineTagMap *gmap.ListMap) string { + var tag string + lineTagMap.Iterator(func(key, value any) bool { + if tag != "" { + tag += " " + } + tag += fmt.Sprintf( + `%s:"%s"`, + key, gstr.Replace(gconv.String(value), `"`, `\"`), + ) + return true + }) + return tag +} diff --git a/server/internal/library/hggen/internal/cmd/genpbentity/genpbentity.go b/server/internal/library/hggen/internal/cmd/genpbentity/genpbentity.go new file mode 100644 index 0000000..a80ec17 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genpbentity/genpbentity.go @@ -0,0 +1,591 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genpbentity + +import ( + "bytes" + "context" + "fmt" + "path/filepath" + "regexp" + "strings" + + "github.com/olekukonko/tablewriter" + "github.com/olekukonko/tablewriter/renderer" + "github.com/olekukonko/tablewriter/tw" + + "github.com/gogf/gf/v2/container/garray" + "github.com/gogf/gf/v2/container/gset" + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gctx" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gtime" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gconv" + "github.com/gogf/gf/v2/util/gtag" + + "hotgo/internal/library/hggen/internal/consts" + "hotgo/internal/library/hggen/internal/utility/mlog" + "hotgo/internal/library/hggen/internal/utility/utils" +) + +type ( + CGenPbEntity struct{} + CGenPbEntityInput struct { + g.Meta `name:"pbentity" config:"{CGenPbEntityConfig}" brief:"{CGenPbEntityBrief}" eg:"{CGenPbEntityEg}" ad:"{CGenPbEntityAd}"` + Path string `name:"path" short:"p" brief:"{CGenPbEntityBriefPath}" d:"manifest/protobuf/pbentity"` + Package string `name:"package" short:"k" brief:"{CGenPbEntityBriefPackage}"` + GoPackage string `name:"goPackage" short:"g" brief:"{CGenPbEntityBriefGoPackage}"` + Link string `name:"link" short:"l" brief:"{CGenPbEntityBriefLink}"` + Tables string `name:"tables" short:"t" brief:"{CGenPbEntityBriefTables}"` + Prefix string `name:"prefix" short:"f" brief:"{CGenPbEntityBriefPrefix}"` + RemovePrefix string `name:"removePrefix" short:"r" brief:"{CGenPbEntityBriefRemovePrefix}"` + RemoveFieldPrefix string `name:"removeFieldPrefix" short:"rf" brief:"{CGenPbEntityBriefRemoveFieldPrefix}"` + TablesEx string `name:"tablesEx" short:"x" brief:"{CGenDaoBriefTablesEx}"` + NameCase string `name:"nameCase" short:"n" brief:"{CGenPbEntityBriefNameCase}" d:"Camel"` + JsonCase string `name:"jsonCase" short:"j" brief:"{CGenPbEntityBriefJsonCase}" d:"none"` + Option string `name:"option" short:"o" brief:"{CGenPbEntityBriefOption}"` + ShardingPattern []string `name:"shardingPattern" short:"sp" brief:"{CGenDaoBriefShardingPattern}"` + + TypeMapping map[DBFieldTypeName]CustomAttributeType `name:"typeMapping" short:"y" brief:"{CGenPbEntityBriefTypeMapping}" orphan:"true"` + FieldMapping map[DBTableFieldName]CustomAttributeType `name:"fieldMapping" short:"fm" brief:"{CGenPbEntityBriefFieldMapping}" orphan:"true"` + } + CGenPbEntityOutput struct{} + + CGenPbEntityInternalInput struct { + CGenPbEntityInput + DB gdb.DB + TableName string // TableName specifies the table name of the table. + NewTableName string // NewTableName specifies the prefix-stripped name of the table. + } + + DBTableFieldName = string + DBFieldTypeName = string + CustomAttributeType struct { + Type string `brief:"custom attribute type name"` + Import string `brief:"custom import for this type"` + } +) + +const ( + defaultPackageSuffix = `api/pbentity` + CGenPbEntityConfig = `gfcli.gen.pbentity` + CGenPbEntityBrief = `generate entity message files in protobuf3 format` + CGenPbEntityEg = ` +gf gen pbentity +gf gen pbentity -l "mysql:root:12345678@tcp(127.0.0.1:3306)/test" +gf gen pbentity -p ./protocol/demos/entity -t user,user_detail,user_login +gf gen pbentity -r user_ -k github.com/gogf/gf/example/protobuf +gf gen pbentity -r user_ +` + + CGenPbEntityAd = ` +CONFIGURATION SUPPORT + Options are also supported by configuration file. + It's suggested using configuration file instead of command line arguments making producing. + The configuration node name is "gf.gen.pbentity", which also supports multiple databases, for example(config.yaml): + gfcli: + gen: + - pbentity: + link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test" + path: "protocol/demos/entity" + tables: "order,products" + package: "demos" + - pbentity: + link: "mysql:root:12345678@tcp(127.0.0.1:3306)/primary" + path: "protocol/demos/entity" + prefix: "primary_" + tables: "user, userDetail" + package: "demos" + option: | + option go_package = "protobuf/demos"; + option java_package = "protobuf/demos"; + option php_namespace = "protobuf/demos"; + typeMapping: + json: + type: google.protobuf.Value + import: google/protobuf/struct.proto + jsonb: + type: google.protobuf.Value + import: google/protobuf/struct.proto +` + CGenPbEntityBriefPath = `directory path for generated files storing` + CGenPbEntityBriefPackage = `package path for all entity proto files` + CGenPbEntityBriefGoPackage = `go package path for all entity proto files` + CGenPbEntityBriefLink = `database configuration, the same as the ORM configuration of GoFrame` + CGenPbEntityBriefTables = `generate models only for given tables, multiple table names separated with ','` + CGenPbEntityBriefPrefix = `add specified prefix for all entity names and entity proto files` + CGenPbEntityBriefRemovePrefix = `remove specified prefix of the table, multiple prefix separated with ','` + CGenPbEntityBriefTablesEx = `generate all models exclude the specified tables, multiple prefix separated with ','` + CGenPbEntityBriefRemoveFieldPrefix = `remove specified prefix of the field, multiple prefix separated with ','` + CGenPbEntityBriefOption = `extra protobuf options` + CGenPbEntityBriefShardingPattern = `sharding pattern for table name, e.g. "users_?" will replace tables "users_001,users_002,..." to "users" pbentity` + CGenPbEntityBriefGroup = ` +specifying the configuration group name of database for generated ORM instance, +it's not necessary and the default value is "default" +` + + CGenPbEntityBriefNameCase = ` +case for message attribute names, default is "Camel": +| Case | Example | +|---------------- |--------------------| +| Camel | AnyKindOfString | +| CamelLower | anyKindOfString | default +| Snake | any_kind_of_string | +| SnakeScreaming | ANY_KIND_OF_STRING | +| SnakeFirstUpper | rgb_code_md5 | +| Kebab | any-kind-of-string | +| KebabScreaming | ANY-KIND-OF-STRING | +` + + CGenPbEntityBriefJsonCase = ` +case for message json tag, cases are the same as "nameCase", default "CamelLower". +set it to "none" to ignore json tag generating. +` + + CGenPbEntityBriefTypeMapping = `custom local type mapping for generated struct attributes relevant to fields of table` + CGenPbEntityBriefFieldMapping = `custom local type mapping for generated struct attributes relevant to specific fields of table` +) + +var defaultTypeMapping = map[DBFieldTypeName]CustomAttributeType{ + // gdb.LocalTypeString + "string": { + Type: "string", + }, + // gdb.LocalTypeTime + // "time": { + // Type: "google.protobuf.Duration", + // Import: "google/protobuf/duration.proto", + // }, + // gdb.LocalTypeDate + "date": { + Type: "google.protobuf.Timestamp", + Import: "google/protobuf/timestamp.proto", + }, + // gdb.LocalTypeDatetime + "datetime": { + Type: "google.protobuf.Timestamp", + Import: "google/protobuf/timestamp.proto", + }, + // gdb.LocalTypeInt + "int": { + Type: "int32", + }, + // gdb.LocalTypeUint + "uint": { + Type: "uint32", + }, + // gdb.LocalTypeInt64 + "int64": { + Type: "int64", + }, + // gdb.LocalTypeUint64 + "uint64": { + Type: "uint64", + }, + // gdb.LocalTypeIntSlice + "[]int": { + Type: "repeated int32", + }, + // gdb.LocalTypeInt64Slice + "[]int64": { + Type: "repeated int64", + }, + // gdb.LocalTypeUint64Slice + "[]uint64": { + Type: "repeated uint64", + }, + // gdb.LocalTypeInt64Bytes + "int64-bytes": { + Type: "repeated int64", + }, + // gdb.LocalTypeUint64Bytes + "uint64-bytes": { + Type: "repeated uint64", + }, + // gdb.LocalTypeFloat32 + "float32": { + Type: "float", + }, + // gdb.LocalTypeFloat64 + "float64": { + Type: "double", + }, + // gdb.LocalTypeBytes + "[]byte": { + Type: "bytes", + }, + // gdb.LocalTypeBool + "bool": { + Type: "bool", + }, + // gdb.LocalTypeJson + // "json": { + // Type: "google.protobuf.Value", + // Import: "google/protobuf/struct.proto", + // }, + // gdb.LocalTypeJsonb + // "jsonb": { + // Type: "google.protobuf.Value", + // Import: "google/protobuf/struct.proto", + // }, +} + +func init() { + gtag.Sets(g.MapStrStr{ + `CGenPbEntityConfig`: CGenPbEntityConfig, + `CGenPbEntityBrief`: CGenPbEntityBrief, + `CGenPbEntityEg`: CGenPbEntityEg, + `CGenPbEntityAd`: CGenPbEntityAd, + `CGenPbEntityBriefPath`: CGenPbEntityBriefPath, + `CGenPbEntityBriefPackage`: CGenPbEntityBriefPackage, + `CGenPbEntityBriefGoPackage`: CGenPbEntityBriefGoPackage, + `CGenPbEntityBriefLink`: CGenPbEntityBriefLink, + `CGenPbEntityBriefTables`: CGenPbEntityBriefTables, + `CGenPbEntityBriefPrefix`: CGenPbEntityBriefPrefix, + `CGenPbEntityBriefRemovePrefix`: CGenPbEntityBriefRemovePrefix, + `CGenPbEntityBriefTablesEx`: CGenPbEntityBriefTablesEx, + `CGenPbEntityBriefRemoveFieldPrefix`: CGenPbEntityBriefRemoveFieldPrefix, + `CGenPbEntityBriefGroup`: CGenPbEntityBriefGroup, + `CGenPbEntityBriefNameCase`: CGenPbEntityBriefNameCase, + `CGenPbEntityBriefJsonCase`: CGenPbEntityBriefJsonCase, + `CGenPbEntityBriefOption`: CGenPbEntityBriefOption, + `CGenPbEntityBriefShardingPattern`: CGenPbEntityBriefShardingPattern, + `CGenPbEntityBriefTypeMapping`: CGenPbEntityBriefTypeMapping, + `CGenPbEntityBriefFieldMapping`: CGenPbEntityBriefFieldMapping, + }) +} + +func (c CGenPbEntity) PbEntity(ctx context.Context, in CGenPbEntityInput) (out *CGenPbEntityOutput, err error) { + var ( + config = g.Cfg() + ) + if config.Available(ctx) { + v := config.MustGet(ctx, CGenPbEntityConfig) + if v.IsSlice() { + for i := 0; i < len(v.Interfaces()); i++ { + doGenPbEntityForArray(ctx, i, in) + } + } else { + doGenPbEntityForArray(ctx, -1, in) + } + } else { + doGenPbEntityForArray(ctx, -1, in) + } + mlog.Print("done!") + return +} + +func doGenPbEntityForArray(ctx context.Context, index int, in CGenPbEntityInput) { + var ( + err error + db gdb.DB + ) + if index >= 0 { + err = g.Cfg().MustGet( + ctx, + fmt.Sprintf(`%s.%d`, CGenPbEntityConfig, index), + ).Scan(&in) + if err != nil { + mlog.Fatalf(`invalid configuration of "%s": %+v`, CGenPbEntityConfig, err) + } + } + if in.Package == "" { + mlog.Debug(`package parameter is empty, trying calculating the package path using go.mod`) + modName := utils.GetImportPath(gfile.Pwd()) + in.Package = modName + "/" + defaultPackageSuffix + } + removePrefixArray := gstr.SplitAndTrim(in.RemovePrefix, ",") + + excludeTables := gset.NewStrSetFrom(gstr.SplitAndTrim(in.TablesEx, ",")) + + // It uses user passed database configuration. + if in.Link != "" { + var ( + tempGroup = gtime.TimestampNanoStr() + match, _ = gregex.MatchString(`([a-z]+):(.+)`, in.Link) + ) + if len(match) == 3 { + gdb.AddConfigNode(tempGroup, gdb.ConfigNode{ + Type: gstr.Trim(match[1]), + Link: in.Link, + }) + db, _ = gdb.Instance(tempGroup) + } + } else { + db = g.DB() + } + if db == nil { + mlog.Fatal("database initialization failed") + } + + tableNames := ([]string)(nil) + shardingNewTableSet := gset.NewStrSet() + if in.Tables != "" { + tableNames = gstr.SplitAndTrim(in.Tables, ",") + } else { + tableNames, err = db.Tables(context.TODO()) + if err != nil { + mlog.Fatalf("fetching tables failed: \n %v", err) + } + } + // merge default typeMapping to input typeMapping. + if in.TypeMapping == nil { + in.TypeMapping = defaultTypeMapping + } else { + for key, typeMapping := range defaultTypeMapping { + if _, ok := in.TypeMapping[key]; !ok { + in.TypeMapping[key] = typeMapping + } + } + } + + for _, tableName := range tableNames { + if excludeTables.Contains(tableName) { + continue + } + newTableName := tableName + for _, v := range removePrefixArray { + newTableName = gstr.TrimLeftStr(newTableName, v, 1) + } + var shardingTableName string + if len(in.ShardingPattern) > 0 { + for _, pattern := range in.ShardingPattern { + var ( + match []string + regPattern = gstr.Replace(pattern, "?", `(.+)`) + ) + match, err = gregex.MatchString(regPattern, newTableName) + if err != nil { + mlog.Fatalf(`invalid sharding pattern "%s": %+v`, pattern, err) + } + if len(match) < 2 { + continue + } + shardingTableName = gstr.Replace(pattern, "?", "") + shardingTableName = gstr.Trim(shardingTableName, `_.-`) + } + } + if shardingTableName != "" { + if shardingNewTableSet.Contains(shardingTableName) { + continue + } + shardingNewTableSet.Add(shardingTableName) + newTableName = shardingTableName + } + generatePbEntityContentFile(ctx, CGenPbEntityInternalInput{ + CGenPbEntityInput: in, + DB: db, + TableName: tableName, + NewTableName: newTableName, + }) + } +} + +// generatePbEntityContentFile generates the protobuf files for given table. +func generatePbEntityContentFile(ctx context.Context, in CGenPbEntityInternalInput) { + fieldMap, err := in.DB.TableFields(ctx, in.TableName) + if err != nil { + mlog.Fatalf("fetching tables fields failed for table '%s':\n%v", in.TableName, err) + } + // Change the `newTableName` if `Prefix` is given. + newTableName := in.Prefix + in.NewTableName + var ( + tableNameCamelCase = gstr.CaseCamel(newTableName) + tableNameSnakeCase = gstr.CaseSnake(newTableName) + entityMessageDefine, appendImports = generateEntityMessageDefinition(tableNameCamelCase, fieldMap, in) + fileName = gstr.Trim(tableNameSnakeCase, "-_.") + path = filepath.FromSlash(gfile.Join(in.Path, fileName+".proto")) + ) + packageImportStr := "" + var packageImportsArray = garray.NewStrArray() + if len(appendImports) > 0 { + for _, appendImport := range appendImports { + packageImportStr = fmt.Sprintf(`import "%s";`, appendImport) + if packageImportsArray.Search(packageImportStr) == -1 { + packageImportsArray.Append(packageImportStr) + } + } + } + if in.GoPackage == "" { + in.GoPackage = in.Package + } + entityContent := gstr.ReplaceByMap(getTplPbEntityContent(""), g.MapStrStr{ + "{Imports}": packageImportsArray.Join("\n"), + "{PackageName}": gfile.Basename(in.Package), + "{GoPackage}": in.GoPackage, + "{OptionContent}": in.Option, + "{EntityMessage}": entityMessageDefine, + }) + if err := gfile.PutContents(path, strings.TrimSpace(entityContent)); err != nil { + mlog.Fatalf("writing content to '%s' failed: %v", path, err) + } else { + mlog.Print("generated:", gfile.RealPath(path)) + } +} + +// generateEntityMessageDefinition generates and returns the message definition for specified table. +func generateEntityMessageDefinition(entityName string, fieldMap map[string]*gdb.TableField, in CGenPbEntityInternalInput) (string, []string) { + var ( + appendImports []string + buffer = bytes.NewBuffer(nil) + array = make([][]string, len(fieldMap)) + names = sortFieldKeyForPbEntity(fieldMap) + ) + for index, name := range names { + var imports string + array[index], imports = generateMessageFieldForPbEntity(index+1, fieldMap[name], in) + if imports != "" { + appendImports = append(appendImports, imports) + } + } + table := tablewriter.NewTable(buffer, + tablewriter.WithRenderer(renderer.NewBlueprint(tw.Rendition{ + Borders: tw.Border{Top: tw.Off, Bottom: tw.Off, Left: tw.On, Right: tw.Off}, + Settings: tw.Settings{ + Separators: tw.Separators{BetweenRows: tw.Off, BetweenColumns: tw.Off}, + }, + Symbols: tw.NewSymbolCustom("Proto").WithColumn(" "), + })), + tablewriter.WithConfig(tablewriter.Config{ + Row: tw.CellConfig{ + Formatting: tw.CellFormatting{AutoWrap: tw.WrapNone}, + }, + }), + ) + table.Bulk(array) + table.Render() + stContent := buffer.String() + // Let's do this hack of table writer for indent! + stContent = regexp.MustCompile(`\s+\n`).ReplaceAllString(gstr.Replace(stContent, " #", ""), "\n") + buffer.Reset() + buffer.WriteString(fmt.Sprintf("message %s {\n", entityName)) + buffer.WriteString(stContent) + buffer.WriteString("}") + return buffer.String(), appendImports +} + +// generateMessageFieldForPbEntity generates and returns the message definition for specified field. +func generateMessageFieldForPbEntity(index int, field *gdb.TableField, in CGenPbEntityInternalInput) (attrLines []string, appendImport string) { + var ( + localTypeNameStr string + localTypeName gdb.LocalType + comment string + jsonTagStr string + err error + ctx = gctx.GetInitCtx() + ) + if in.TypeMapping != nil && len(in.TypeMapping) > 0 { + // match typeMapping after local type transform. + // eg: double => string, varchar => string etc. + localTypeName, err = in.DB.CheckLocalTypeForField(ctx, field.Type, nil) + if err != nil { + panic(err) + } + if localTypeName != "" { + if typeMappingLocal, localOk := in.TypeMapping[strings.ToLower(string(localTypeName))]; localOk { + localTypeNameStr = typeMappingLocal.Type + appendImport = typeMappingLocal.Import + } + } + // Try match unknown / string localTypeName with db type. + if localTypeName == "" || localTypeName == gdb.LocalTypeString { + formattedFieldType, _ := in.DB.GetFormattedDBTypeNameForField(field.Type) + if typeMapping, ok := in.TypeMapping[strings.ToLower(formattedFieldType)]; ok { + localTypeNameStr = typeMapping.Type + appendImport = typeMapping.Import + } + } + } + + if localTypeNameStr == "" { + localTypeNameStr = "string" + } + + comment = gstr.ReplaceByArray(field.Comment, g.SliceStr{ + "\n", " ", + "\r", " ", + }) + comment = gstr.Trim(comment) + comment = gstr.Replace(comment, `\n`, " ") + comment, _ = gregex.ReplaceString(`\s{2,}`, ` `, comment) + if jsonTagName := formatCase(field.Name, in.JsonCase); jsonTagName != "" { + jsonTagStr = fmt.Sprintf(`[json_name = "%s"]`, jsonTagName) + // beautiful indent. + if index < 10 { + // 3 spaces + jsonTagStr = " " + jsonTagStr + } else if index < 100 { + // 2 spaces + jsonTagStr = " " + jsonTagStr + } else { + // 1 spaces + jsonTagStr = " " + jsonTagStr + } + } + + removeFieldPrefixArray := gstr.SplitAndTrim(in.RemoveFieldPrefix, ",") + newFiledName := field.Name + for _, v := range removeFieldPrefixArray { + newFiledName = gstr.TrimLeftStr(newFiledName, v, 1) + } + + if in.FieldMapping != nil && len(in.FieldMapping) > 0 { + if typeMapping, ok := in.FieldMapping[fmt.Sprintf("%s.%s", in.TableName, newFiledName)]; ok { + localTypeNameStr = typeMapping.Type + appendImport = typeMapping.Import + } + } + + return []string{ + " #" + localTypeNameStr, + " #" + formatCase(newFiledName, in.NameCase), + " #= " + gconv.String(index) + jsonTagStr + ";", + " #" + fmt.Sprintf(`// %s`, comment), + }, appendImport +} + +func getTplPbEntityContent(tplEntityPath string) string { + if tplEntityPath != "" { + return gfile.GetContents(tplEntityPath) + } + return consts.TemplatePbEntityMessageContent +} + +// formatCase call gstr.Case* function to convert the s to specified case. +func formatCase(str, caseStr string) string { + if caseStr == "none" { + return "" + } + return gstr.CaseConvert(str, gstr.CaseTypeMatch(caseStr)) +} + +func sortFieldKeyForPbEntity(fieldMap map[string]*gdb.TableField) []string { + names := make(map[int]string) + for _, field := range fieldMap { + names[field.Index] = field.Name + } + var ( + result = make([]string, len(names)) + i = 0 + j = 0 + ) + for { + if len(names) == 0 { + break + } + if val, ok := names[i]; ok { + result[j] = val + j++ + delete(names, i) + } + i++ + } + return result +} diff --git a/server/internal/library/hggen/internal/cmd/genservice/genservice.go b/server/internal/library/hggen/internal/cmd/genservice/genservice.go new file mode 100644 index 0000000..79f66ab --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genservice/genservice.go @@ -0,0 +1,391 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genservice + +import ( + "context" + "fmt" + "path/filepath" + "sync" + "sync/atomic" + + "github.com/gogf/gf/v2/container/garray" + "github.com/gogf/gf/v2/container/gmap" + "github.com/gogf/gf/v2/container/gset" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gtime" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gconv" + "github.com/gogf/gf/v2/util/gtag" + + "hotgo/internal/library/hggen/internal/utility/mlog" + "hotgo/internal/library/hggen/internal/utility/utils" +) + +const ( + CGenServiceConfig = `gfcli.gen.service` + CGenServiceUsage = `gf gen service [OPTION]` + CGenServiceBrief = `parse struct and associated functions from packages to generate service go file` + CGenServiceEg = ` +gf gen service +gf gen service -f Snake +` + CGenServiceBriefSrcFolder = `source folder path to be parsed. default: internal/logic` + CGenServiceBriefDstFolder = `destination folder path storing automatically generated go files. default: internal/service` + CGenServiceBriefFileNameCase = ` +destination file name storing automatically generated go files, cases are as follows: +| Case | Example | +|---------------- |--------------------| +| Lower | anykindofstring | +| Camel | AnyKindOfString | +| CamelLower | anyKindOfString | +| Snake | any_kind_of_string | default +| SnakeScreaming | ANY_KIND_OF_STRING | +| SnakeFirstUpper | rgb_code_md5 | +| Kebab | any-kind-of-string | +| KebabScreaming | ANY-KIND-OF-STRING | +` + CGenServiceBriefWatchFile = `used in file watcher, it re-generates all service go files only if given file is under srcFolder` + CGenServiceBriefStPattern = `regular expression matching struct name for generating service. default: ^s([A-Z]\\\\w+)$` + CGenServiceBriefPackages = `produce go files only for given source packages(source folders)` + CGenServiceBriefImportPrefix = `custom import prefix to calculate import path for generated importing go file of logic` + CGenServiceBriefClear = `delete all generated go files that are not used any further` +) + +func init() { + gtag.Sets(g.MapStrStr{ + `CGenServiceConfig`: CGenServiceConfig, + `CGenServiceUsage`: CGenServiceUsage, + `CGenServiceBrief`: CGenServiceBrief, + `CGenServiceEg`: CGenServiceEg, + `CGenServiceBriefSrcFolder`: CGenServiceBriefSrcFolder, + `CGenServiceBriefDstFolder`: CGenServiceBriefDstFolder, + `CGenServiceBriefFileNameCase`: CGenServiceBriefFileNameCase, + `CGenServiceBriefWatchFile`: CGenServiceBriefWatchFile, + `CGenServiceBriefStPattern`: CGenServiceBriefStPattern, + `CGenServiceBriefPackages`: CGenServiceBriefPackages, + `CGenServiceBriefImportPrefix`: CGenServiceBriefImportPrefix, + `CGenServiceBriefClear`: CGenServiceBriefClear, + }) +} + +type ( + CGenService struct{} + CGenServiceInput struct { + g.Meta `name:"service" config:"{CGenServiceConfig}" usage:"{CGenServiceUsage}" brief:"{CGenServiceBrief}" eg:"{CGenServiceEg}"` + SrcFolder string `short:"s" name:"srcFolder" brief:"{CGenServiceBriefSrcFolder}" d:"internal/logic"` + DstFolder string `short:"d" name:"dstFolder" brief:"{CGenServiceBriefDstFolder}" d:"internal/service"` + DstFileNameCase string `short:"f" name:"dstFileNameCase" brief:"{CGenServiceBriefFileNameCase}" d:"Snake"` + WatchFile string `short:"w" name:"watchFile" brief:"{CGenServiceBriefWatchFile}"` + StPattern string `short:"a" name:"stPattern" brief:"{CGenServiceBriefStPattern}" d:"^s([A-Z]\\w+)$"` + Packages []string `short:"p" name:"packages" brief:"{CGenServiceBriefPackages}"` + ImportPrefix string `short:"i" name:"importPrefix" brief:"{CGenServiceBriefImportPrefix}"` + Clear bool `short:"l" name:"clear" brief:"{CGenServiceBriefClear}" orphan:"true"` + } + CGenServiceOutput struct{} +) + +const ( + genServiceFileLockSeconds = 10 +) + +type fileInfo struct { + PkgItems []pkgItem + FuncItems []funcItem +} + +type folderInfo struct { + SrcPackageName string + SrcImportedPackages *garray.SortedStrArray + SrcStructFunctions *gmap.ListMap + DstFilePath string + + FileInfos []*fileInfo +} + +func (c CGenService) Service(ctx context.Context, in CGenServiceInput) (out *CGenServiceOutput, err error) { + in.SrcFolder = filepath.ToSlash(in.SrcFolder) + in.SrcFolder = gstr.TrimRight(in.SrcFolder, `/`) + in.WatchFile = filepath.ToSlash(in.WatchFile) + in.WatchFile = gstr.TrimRight(in.WatchFile, `/`) + + // Watch file handling. + if in.WatchFile != "" { + // File lock to avoid multiple processes. + var ( + flockFilePath = gfile.Temp("gf.cli.gen.service.lock") + flockContent = gfile.GetContents(flockFilePath) + ) + if flockContent != "" { + if gtime.Timestamp()-gconv.Int64(flockContent) < genServiceFileLockSeconds { + // If another "gen service" process is running, it just exits. + mlog.Debug(`another "gen service" process is running, exit`) + return + } + } + defer gfile.RemoveFile(flockFilePath) + _ = gfile.PutContents(flockFilePath, gtime.TimestampStr()) + + // It works only if given WatchFile is in SrcFolder. + var ( + watchFileDir = gfile.Dir(in.WatchFile) + srcFolderDir = gfile.Dir(watchFileDir) + ) + mlog.Debug("watchFileDir:", watchFileDir) + mlog.Debug("logicFolderDir:", srcFolderDir) + if !gstr.HasSuffix(gstr.Replace(srcFolderDir, `\`, `/`), in.SrcFolder) { + mlog.Printf(`ignore watch file "%s", not in source path "%s"`, in.WatchFile, in.SrcFolder) + return + } + var newWorkingDir = gfile.Dir(gfile.Dir(srcFolderDir)) + if err = gfile.Chdir(newWorkingDir); err != nil { + mlog.Fatalf(`%+v`, err) + } + mlog.Debug("Chdir:", newWorkingDir) + + in.WatchFile = "" + in.Packages = []string{gfile.Basename(watchFileDir)} + return c.Service(ctx, in) + } + + if !gfile.Exists(in.SrcFolder) { + mlog.Fatalf(`source folder path "%s" does not exist`, in.SrcFolder) + } + + if in.ImportPrefix == "" { + in.ImportPrefix = utils.GetImportPath(in.SrcFolder) + } + + var ( + isDirty atomic.Value // Temp boolean. + files []string // Temp file array. + initImportSrcPackages []string // Used for generating logic.go. + inputPackages = in.Packages // Custom packages. + dstPackageName = gstr.ToLower(gfile.Basename(in.DstFolder)) // Package name for generated go files. + generatedDstFilePathSet = gset.NewStrSet() // All generated file path set. + ) + isDirty.Store(false) + + // The first level folders. + srcFolderPaths, err := gfile.ScanDir(in.SrcFolder, "*", false) + if err != nil { + return nil, err + } + // it will use goroutine to generate service files for each package. + var ( + folderInfos []folderInfo + wg = sync.WaitGroup{} + allStructItems = make(map[string][]string) + ) + + for _, srcFolderPath := range srcFolderPaths { + if !gfile.IsDir(srcFolderPath) { + continue + } + // Only retrieve sub files, no recursively. + if files, err = gfile.ScanDir(srcFolderPath, "*.go", false); err != nil { + return nil, err + } + if len(files) == 0 { + continue + } + + var ( + srcPackageName = gfile.Basename(srcFolderPath) + srcImportedPackages = garray.NewSortedStrArray().SetUnique(true) + srcStructFunctions = gmap.NewListMap() + dstFilePath = gfile.Join(in.DstFolder, + c.getDstFileNameCase(srcPackageName, in.DstFileNameCase)+".go", + ) + ) + + folder := folderInfo{ + SrcPackageName: srcPackageName, + SrcImportedPackages: srcImportedPackages, + SrcStructFunctions: srcStructFunctions, + DstFilePath: dstFilePath, + } + + for _, file := range files { + pkgItems, structItems, funcItems, err := c.parseItemsInSrc(file) + if err != nil { + return nil, err + } + for k, v := range structItems { + allStructItems[k] = v + } + folder.FileInfos = append(folder.FileInfos, &fileInfo{ + PkgItems: pkgItems, + FuncItems: funcItems, + }) + } + + folderInfos = append(folderInfos, folder) + } + + folderInfos = c.calculateStructEmbeddedFuncInfos(folderInfos, allStructItems) + + for _, folder := range folderInfos { + // Parse single logic package folder. + var ( + srcPackageName = folder.SrcPackageName + srcImportedPackages = folder.SrcImportedPackages + srcStructFunctions = folder.SrcStructFunctions + dstFilePath = folder.DstFilePath + ) + generatedDstFilePathSet.Add(dstFilePath) + // if it were to use goroutine, + // it would cause the order of the generated functions in the file to be disordered. + for _, file := range folder.FileInfos { + pkgItems, funcItems := file.PkgItems, file.FuncItems + + // Calculate imported packages for service generating. + err = c.calculateImportedItems(in, pkgItems, funcItems, srcImportedPackages) + if err != nil { + return nil, err + } + + // Calculate functions and interfaces for service generating. + err = c.calculateFuncItems(in, funcItems, srcStructFunctions) + if err != nil { + return nil, err + } + } + + initImportSrcPackages = append( + initImportSrcPackages, + fmt.Sprintf(`%s/%s`, in.ImportPrefix, srcPackageName), + ) + // Ignore source packages if input packages given. + if len(inputPackages) > 0 && !gstr.InArray(inputPackages, srcPackageName) { + mlog.Debugf( + `ignore source package "%s" as it is not in desired packages: %+v`, + srcPackageName, inputPackages, + ) + continue + } + + // Generating service go file for single logic package. + wg.Add(1) + go func(generateServiceFilesInput generateServiceFilesInput) { + defer wg.Done() + ok, err := c.generateServiceFile(generateServiceFilesInput) + if err != nil { + mlog.Printf(`error generating service file "%s": %v`, generateServiceFilesInput.DstFilePath, err) + } + if !isDirty.Load().(bool) && ok { + isDirty.Store(true) + } + }(generateServiceFilesInput{ + CGenServiceInput: in, + SrcPackageName: srcPackageName, + SrcImportedPackages: srcImportedPackages.Slice(), + SrcStructFunctions: srcStructFunctions, + DstPackageName: dstPackageName, + DstFilePath: dstFilePath, + }) + } + wg.Wait() + + if in.Clear { + files, err = gfile.ScanDirFile(in.DstFolder, "*.go", false) + if err != nil { + return nil, err + } + var relativeFilePath string + for _, file := range files { + relativeFilePath = gstr.SubStrFromR(file, in.DstFolder) + if !generatedDstFilePathSet.Contains(relativeFilePath) && + utils.IsFileDoNotEdit(relativeFilePath) { + + mlog.Printf(`remove no longer used service file: %s`, relativeFilePath) + if err = gfile.RemoveFile(file); err != nil { + return nil, err + } + } + } + } + + if isDirty.Load().(bool) { + // Generate initialization go file. + if len(initImportSrcPackages) > 0 { + if err = c.generateInitializationFile(in, initImportSrcPackages); err != nil { + return + } + } + + // Replace v1 to v2 for GoFrame. + if err = utils.ReplaceGeneratedContentGFV2(in.DstFolder); err != nil { + return nil, err + } + mlog.Printf(`gofmt go files in "%s"`, in.DstFolder) + utils.GoFmt(in.DstFolder) + } + + // auto update main.go. + if err = c.checkAndUpdateMain(in.SrcFolder); err != nil { + return nil, err + } + + mlog.Print(`done!`) + return +} + +func (c CGenService) checkAndUpdateMain(srcFolder string) (err error) { + var ( + logicPackageName = gstr.ToLower(gfile.Basename(srcFolder)) + logicFilePath = gfile.Join(srcFolder, logicPackageName+".go") + importPath = utils.GetImportPath(srcFolder) + importStr = fmt.Sprintf(`_ "%s"`, importPath) + mainFilePath = gfile.Join(gfile.Dir(gfile.Dir(gfile.Dir(logicFilePath))), "main.go") + mainFileContent = gfile.GetContents(mainFilePath) + ) + // No main content found. + if mainFileContent == "" { + return nil + } + if gstr.Contains(mainFileContent, importStr) { + return nil + } + match, err := gregex.MatchString(`import \(([\s\S]+?)\)`, mainFileContent) + if err != nil { + return err + } + // No match. + if len(match) < 2 { + return nil + } + lines := garray.NewStrArrayFrom(gstr.Split(match[1], "\n")) + for i, line := range lines.Slice() { + line = gstr.Trim(line) + if len(line) == 0 { + continue + } + if line[0] == '_' { + continue + } + // Insert the logic import into imports. + if err = lines.InsertBefore(i, fmt.Sprintf("\t%s\n\n", importStr)); err != nil { + return err + } + break + } + mainFileContent, err = gregex.ReplaceString( + `import \(([\s\S]+?)\)`, + fmt.Sprintf(`import (%s)`, lines.Join("\n")), + mainFileContent, + ) + if err != nil { + return err + } + mlog.Print(`update main.go`) + err = gfile.PutContents(mainFilePath, mainFileContent) + utils.GoFmt(mainFilePath) + return +} diff --git a/server/internal/library/hggen/internal/cmd/genservice/genservice_ast_parse.go b/server/internal/library/hggen/internal/cmd/genservice/genservice_ast_parse.go new file mode 100644 index 0000000..974ec7e --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genservice/genservice_ast_parse.go @@ -0,0 +1,319 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genservice + +import ( + "go/ast" + "go/parser" + "go/token" + "strings" + + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gstructs" + "github.com/gogf/gf/v2/text/gstr" +) + +type pkgItem struct { + Alias string `eg:"gdbas"` + Path string `eg:"github.com/gogf/gf/v2/database/gdb"` + RawImport string `eg:"gdbas github.com/gogf/gf/v2/database/gdb"` +} + +type funcItem struct { + Receiver string `eg:"sUser"` + MethodName string `eg:"GetList"` + Params []map[string]string `eg:"ctx: context.Context, cond: *SearchInput"` + Results []map[string]string `eg:"list: []*User, err: error"` + Comment string `eg:"Get user list"` +} + +// parseItemsInSrc parses the pkgItem and funcItem from the specified file. +// It can't skip the private methods. +// It can't skip the imported packages of import alias equal to `_`. +func (c CGenService) parseItemsInSrc(filePath string) (pkgItems []pkgItem, structItems map[string][]string, funcItems []funcItem, err error) { + var ( + fileContent = gfile.GetContents(filePath) + fileSet = token.NewFileSet() + ) + + node, err := parser.ParseFile(fileSet, "", fileContent, parser.ParseComments) + if err != nil { + return + } + + structItems = make(map[string][]string) + pkg := node.Name.Name + pkgAliasMap := make(map[string]string) + ast.Inspect(node, func(n ast.Node) bool { + switch x := n.(type) { + case *ast.ImportSpec: + // parse the imported packages. + pkgItem := c.parseImportPackages(x) + pkgItems = append(pkgItems, pkgItem) + pkgPath := strings.Trim(pkgItem.Path, "\"") + pkgPath = strings.ReplaceAll(pkgPath, "\\", "/") + tmp := strings.Split(pkgPath, "/") + srcPkg := tmp[len(tmp)-1] + if srcPkg != pkgItem.Alias { + pkgAliasMap[pkgItem.Alias] = srcPkg + } + case *ast.TypeSpec: // type define + switch xType := x.Type.(type) { + case *ast.StructType: // define struct + // parse the struct declaration. + var structName = pkg + "." + x.Name.Name + var structEmbeddedStruct []string + for _, field := range xType.Fields.List { + if len(field.Names) > 0 || field.Tag == nil { // not anonymous field + continue + } + + tagValue := strings.Trim(field.Tag.Value, "`") + tagValue = strings.TrimSpace(tagValue) + if len(tagValue) == 0 { // not set tag + continue + } + tags := gstructs.ParseTag(tagValue) + + if v, ok := tags["gen"]; !ok || v != "extend" { + continue + } + + var embeddedStruct string + switch v := field.Type.(type) { + case *ast.Ident: + if embeddedStruct, err = c.astExprToString(v); err != nil { + embeddedStruct = "" + break + } + embeddedStruct = pkg + "." + embeddedStruct + case *ast.StarExpr: + if embeddedStruct, err = c.astExprToString(v.X); err != nil { + embeddedStruct = "" + break + } + embeddedStruct = pkg + "." + embeddedStruct + case *ast.SelectorExpr: + var pkg string + if pkg, err = c.astExprToString(v.X); err != nil { + embeddedStruct = "" + break + } + if v, ok := pkgAliasMap[pkg]; ok { + pkg = v + } + if embeddedStruct, err = c.astExprToString(v.Sel); err != nil { + embeddedStruct = "" + break + } + embeddedStruct = pkg + "." + embeddedStruct + } + + if embeddedStruct == "" { + continue + } + structEmbeddedStruct = append(structEmbeddedStruct, embeddedStruct) + + } + if len(structEmbeddedStruct) > 0 { + structItems[structName] = structEmbeddedStruct + } + case *ast.Ident: // define ident + var ( + structName = pkg + "." + x.Name.Name + typeName = pkg + "." + xType.Name + ) + structItems[structName] = []string{typeName} + case *ast.SelectorExpr: // define selector + var ( + structName = pkg + "." + x.Name.Name + selecotrPkg string + typeName string + ) + if selecotrPkg, err = c.astExprToString(xType.X); err != nil { + break + } + if v, ok := pkgAliasMap[selecotrPkg]; ok { + selecotrPkg = v + } + if typeName, err = c.astExprToString(xType.Sel); err != nil { + break + } + typeName = selecotrPkg + "." + typeName + structItems[structName] = []string{typeName} + } + + case *ast.FuncDecl: + // parse the function items. + if x.Recv == nil { + return true + } + + var funcName = x.Name.Name + funcItems = append(funcItems, funcItem{ + Receiver: c.parseFuncReceiverTypeName(x), + MethodName: funcName, + Params: c.parseFuncParams(x), + Results: c.parseFuncResults(x), + Comment: c.parseFuncComment(x), + }) + } + return true + }) + return +} + +// parseImportPackages retrieves the imported packages from the specified ast.ImportSpec. +func (c CGenService) parseImportPackages(node *ast.ImportSpec) (packages pkgItem) { + if node.Path == nil { + return + } + var ( + alias string + path = node.Path.Value + rawImport string + ) + + if node.Name != nil { + alias = node.Name.Name + rawImport = node.Name.Name + " " + path + } else { + rawImport = path + } + + // if the alias is empty, it will further retrieve the real alias. + if alias == "" { + alias = c.getRealAlias(path) + } + + return pkgItem{ + Alias: alias, + Path: path, + RawImport: rawImport, + } +} + +// getRealAlias retrieves the real alias of the package. +// If package is "github.com/gogf/gf", the alias is "gf". +// If package is "github.com/gogf/gf/v2", the alias is "gf" instead of "v2". +func (c CGenService) getRealAlias(importPath string) (pkgName string) { + importPath = gstr.Trim(importPath, `"`) + parts := gstr.Split(importPath, "/") + if len(parts) == 0 { + return + } + + pkgName = parts[len(parts)-1] + + if !gstr.HasPrefix(pkgName, "v") { + return pkgName + } + + if len(parts) < 2 { + return pkgName + } + + if gstr.IsNumeric(gstr.SubStr(pkgName, 1)) { + pkgName = parts[len(parts)-2] + } + + return pkgName +} + +// parseFuncReceiverTypeName retrieves the receiver type of the function. +// For example: +// +// func(s *sArticle) -> *sArticle +// func(s sArticle) -> sArticle +func (c CGenService) parseFuncReceiverTypeName(node *ast.FuncDecl) (receiverType string) { + if node.Recv == nil { + return "" + } + receiverType, err := c.astExprToString(node.Recv.List[0].Type) + if err != nil { + return "" + } + return +} + +// parseFuncParams retrieves the input parameters of the function. +// It returns the name and type of the input parameters. +// For example: +// +// []map[string]string{paramName:ctx paramType:context.Context, paramName:info paramType:struct{}} +func (c CGenService) parseFuncParams(node *ast.FuncDecl) (params []map[string]string) { + if node.Type.Params == nil { + return + } + for _, param := range node.Type.Params.List { + if param.Names == nil { + // No name for the return value. + resultType, err := c.astExprToString(param.Type) + if err != nil { + continue + } + params = append(params, map[string]string{ + "paramName": "", + "paramType": resultType, + }) + continue + } + for _, name := range param.Names { + paramType, err := c.astExprToString(param.Type) + if err != nil { + continue + } + params = append(params, map[string]string{ + "paramName": name.Name, + "paramType": paramType, + }) + } + } + return +} + +// parseFuncResults retrieves the output parameters of the function. +// It returns the name and type of the output parameters. +// For example: +// +// []map[string]string{resultName:list resultType:[]*User, resultName:err resultType:error} +// []map[string]string{resultName: "", resultType: error} +func (c CGenService) parseFuncResults(node *ast.FuncDecl) (results []map[string]string) { + if node.Type.Results == nil { + return + } + for _, result := range node.Type.Results.List { + if result.Names == nil { + // No name for the return value. + resultType, err := c.astExprToString(result.Type) + if err != nil { + continue + } + results = append(results, map[string]string{ + "resultName": "", + "resultType": resultType, + }) + continue + } + for _, name := range result.Names { + resultType, err := c.astExprToString(result.Type) + if err != nil { + continue + } + results = append(results, map[string]string{ + "resultName": name.Name, + "resultType": resultType, + }) + } + } + return +} + +// parseFuncComment retrieves the comment of the function. +func (c CGenService) parseFuncComment(node *ast.FuncDecl) string { + return c.astCommentToString(node.Doc) +} diff --git a/server/internal/library/hggen/internal/cmd/genservice/genservice_ast_utils.go b/server/internal/library/hggen/internal/cmd/genservice/genservice_ast_utils.go new file mode 100644 index 0000000..8fc12e2 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genservice/genservice_ast_utils.go @@ -0,0 +1,48 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genservice + +import ( + "bytes" + "go/ast" + "go/format" + "go/token" + "strings" +) + +// exprToString converts ast.Expr to string. +// For example: +// +// ast.Expr -> "context.Context" +// ast.Expr -> "*v1.XxxReq" +// ast.Expr -> "error" +// ast.Expr -> "int" +func (c CGenService) astExprToString(expr ast.Expr) (string, error) { + var ( + buf bytes.Buffer + err error + ) + err = format.Node(&buf, token.NewFileSet(), expr) + if err != nil { + return "", err + } + return buf.String(), nil +} + +// astCommentToString returns the raw (original) text of the comment. +// It includes the comment markers (//, /*, and */). +// It adds a newline at the end of the comment. +func (c CGenService) astCommentToString(node *ast.CommentGroup) string { + if node == nil { + return "" + } + var b strings.Builder + for _, c := range node.List { + b.WriteString(c.Text + "\n") + } + return b.String() +} diff --git a/server/internal/library/hggen/internal/cmd/genservice/genservice_calculate.go b/server/internal/library/hggen/internal/cmd/genservice/genservice_calculate.go new file mode 100644 index 0000000..4225fd9 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genservice/genservice_calculate.go @@ -0,0 +1,228 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genservice + +import ( + "fmt" + "strings" + + "github.com/gogf/gf/v2/container/garray" + "github.com/gogf/gf/v2/container/gmap" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +func (c CGenService) calculateImportedItems( + in CGenServiceInput, + pkgItems []pkgItem, funcItems []funcItem, + srcImportedPackages *garray.SortedStrArray, +) (err error) { + // allFuncParamType saves all the param and result types of the functions. + var allFuncParamType strings.Builder + + for _, item := range funcItems { + for _, param := range item.Params { + allFuncParamType.WriteString(param["paramType"] + ",") + } + for _, result := range item.Results { + allFuncParamType.WriteString(result["resultType"] + ",") + } + } + + for _, item := range pkgItems { + alias := item.Alias + + // If the alias is _, it means that the package is not generated. + if alias == "_" { + mlog.Debugf(`ignore anonymous package: %s`, item.RawImport) + continue + } + // If the alias is empty, it will use the package name as the alias. + if alias == "" { + alias = gfile.Basename(gstr.Trim(item.Path, `"`)) + } + if !gstr.Contains(allFuncParamType.String(), alias) { + mlog.Debugf(`ignore unused package: %s`, item.RawImport) + continue + } + srcImportedPackages.Add(item.RawImport) + } + return nil +} + +func (c CGenService) calculateFuncItems( + in CGenServiceInput, + funcItems []funcItem, + srcPkgInterfaceMap *gmap.ListMap, +) (err error) { + var srcPkgInterfaceFunc []map[string]string + + for _, item := range funcItems { + var ( + // eg: "sArticle" + receiverName string + receiverMatch []string + + // eg: "GetList(ctx context.Context, req *v1.ArticleListReq) (list []*v1.Article, err error)" + funcHead string + ) + + // handle the receiver name. + if item.Receiver == "" { + continue + } + receiverName = item.Receiver + receiverName = gstr.Trim(receiverName, "*") + // Match and pick the struct name from receiver. + if receiverMatch, err = gregex.MatchString(in.StPattern, receiverName); err != nil { + return err + } + if len(receiverMatch) < 1 { + continue + } + receiverName = gstr.CaseCamel(receiverMatch[1]) + + // check if the func name is public. + if !gstr.IsLetterUpper(item.MethodName[0]) { + continue + } + + if !srcPkgInterfaceMap.Contains(receiverName) { + srcPkgInterfaceFunc = make([]map[string]string, 0) + srcPkgInterfaceMap.Set(receiverName, srcPkgInterfaceFunc) + } else { + srcPkgInterfaceFunc = srcPkgInterfaceMap.Get(receiverName).([]map[string]string) + } + + // make the func head. + paramsStr := c.tidyParam(item.Params) + resultsStr := c.tidyResult(item.Results) + funcHead = fmt.Sprintf("%s(%s) (%s)", item.MethodName, paramsStr, resultsStr) + + srcPkgInterfaceFunc = append(srcPkgInterfaceFunc, map[string]string{ + "funcHead": funcHead, + "funcComment": item.Comment, + }) + srcPkgInterfaceMap.Set(receiverName, srcPkgInterfaceFunc) + } + return nil +} + +// tidyParam tidies the input parameters. +// For example: +// +// []map[string]string{paramName:ctx paramType:context.Context, paramName:info paramType:struct{}} +// -> ctx context.Context, info struct{} +func (c CGenService) tidyParam(paramSlice []map[string]string) (paramStr string) { + for i, param := range paramSlice { + if i > 0 { + paramStr += ", " + } + paramStr += fmt.Sprintf("%s %s", param["paramName"], param["paramType"]) + } + return +} + +// tidyResult tidies the output parameters. +// For example: +// +// []map[string]string{resultName:list resultType:[]*User, resultName:err resultType:error} +// -> list []*User, err error +// +// []map[string]string{resultName: "", resultType: error} +// -> error +func (c CGenService) tidyResult(resultSlice []map[string]string) (resultStr string) { + for i, result := range resultSlice { + if i > 0 { + resultStr += ", " + } + if result["resultName"] != "" { + resultStr += fmt.Sprintf("%s %s", result["resultName"], result["resultType"]) + } else { + resultStr += result["resultType"] + } + } + return +} + +func (c CGenService) getStructFuncItems(structName string, allStructItems map[string][]string, funcItemsWithoutEmbed map[string][]*funcItem) (funcItems []*funcItem) { + funcItemNameSet := map[string]struct{}{} + + if items, ok := funcItemsWithoutEmbed[structName]; ok { + funcItems = append(funcItems, items...) + for _, item := range items { + funcItemNameSet[item.MethodName] = struct{}{} + } + } + + embeddedStructNames, ok := allStructItems[structName] + if !ok { + return + } + + for _, embeddedStructName := range embeddedStructNames { + items := c.getStructFuncItems(embeddedStructName, allStructItems, funcItemsWithoutEmbed) + + for _, item := range items { + if _, ok := funcItemNameSet[item.MethodName]; ok { + continue + } + funcItemNameSet[item.MethodName] = struct{}{} + funcItems = append(funcItems, item) + } + } + + return +} + +func (c CGenService) calculateStructEmbeddedFuncInfos(folderInfos []folderInfo, allStructItems map[string][]string) (newFolerInfos []folderInfo) { + funcItemsWithoutEmbed := make(map[string][]*funcItem) + funcItemMap := make(map[string]*([]funcItem)) + funcItemsWithoutEmbedMap := make(map[string]*funcItem) + + newFolerInfos = append(newFolerInfos, folderInfos...) + + for _, folder := range newFolerInfos { + for k := range folder.FileInfos { + fi := folder.FileInfos[k] + for k := range fi.FuncItems { + item := &fi.FuncItems[k] + receiver := folder.SrcPackageName + "." + strings.ReplaceAll(item.Receiver, "*", "") + funcItemMap[receiver] = &fi.FuncItems + funcItemsWithoutEmbed[receiver] = append(funcItemsWithoutEmbed[receiver], item) + funcItemsWithoutEmbedMap[fmt.Sprintf("%s:%s", receiver, item.MethodName)] = item + } + } + } + + for receiver, structItems := range allStructItems { + receiverName := strings.ReplaceAll(receiver, "*", "") + for _, structName := range structItems { + // Get the list of methods for the corresponding structName. + for _, funcItem := range c.getStructFuncItems(structName, allStructItems, funcItemsWithoutEmbed) { + if _, ok := funcItemsWithoutEmbedMap[fmt.Sprintf("%s:%s", receiverName, funcItem.MethodName)]; ok { + continue + } + if funcItemsPtr, ok := funcItemMap[receiverName]; ok { + newFuncItem := *funcItem + newFuncItem.Receiver = getReceiverName(receiver) + (*funcItemsPtr) = append((*funcItemsPtr), newFuncItem) + } + } + } + } + + return +} + +func getReceiverName(receiver string) string { + ss := strings.Split(receiver, ".") + return ss[len(ss)-1] +} diff --git a/server/internal/library/hggen/internal/cmd/genservice/genservice_generate.go b/server/internal/library/hggen/internal/cmd/genservice/genservice_generate.go new file mode 100644 index 0000000..c18249a --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genservice/genservice_generate.go @@ -0,0 +1,87 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genservice + +import ( + "bytes" + "fmt" + + "github.com/gogf/gf/v2/container/gmap" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/consts" + "hotgo/internal/library/hggen/internal/utility/mlog" + "hotgo/internal/library/hggen/internal/utility/utils" +) + +type generateServiceFilesInput struct { + CGenServiceInput + SrcPackageName string + SrcImportedPackages []string + SrcStructFunctions *gmap.ListMap + DstPackageName string + DstFilePath string // Absolute file path for generated service go file. +} + +func (c CGenService) generateServiceFile(in generateServiceFilesInput) (ok bool, err error) { + var generatedContent bytes.Buffer + + c.generatePackageImports(&generatedContent, in.DstPackageName, in.SrcImportedPackages) + c.generateType(&generatedContent, in.SrcStructFunctions, in.DstPackageName) + c.generateVar(&generatedContent, in.SrcStructFunctions) + c.generateFunc(&generatedContent, in.SrcStructFunctions) + + // Write file content to disk. + if gfile.Exists(in.DstFilePath) { + if !utils.IsFileDoNotEdit(in.DstFilePath) { + mlog.Printf(`ignore file as it is manually maintained: %s`, in.DstFilePath) + return false, nil + } + } + mlog.Printf(`generating service go file: %s`, in.DstFilePath) + if err = gfile.PutBytes(in.DstFilePath, generatedContent.Bytes()); err != nil { + return true, err + } + return true, nil +} + +// generateInitializationFile generates `logic.go`. +func (c CGenService) generateInitializationFile(in CGenServiceInput, importSrcPackages []string) (err error) { + var ( + logicPackageName = gstr.ToLower(gfile.Basename(in.SrcFolder)) + logicFilePath = gfile.Join(in.SrcFolder, logicPackageName+".go") + logicImports string + generatedContent string + ) + if !utils.IsFileDoNotEdit(logicFilePath) { + mlog.Debugf(`ignore file as it is manually maintained: %s`, logicFilePath) + return nil + } + for _, importSrcPackage := range importSrcPackages { + logicImports += fmt.Sprintf(`%s_ "%s"%s`, "\t", importSrcPackage, "\n") + } + generatedContent = gstr.ReplaceByMap(consts.TemplateGenServiceLogicContent, g.MapStrStr{ + "{PackageName}": logicPackageName, + "{Imports}": logicImports, + }) + mlog.Printf(`generating init go file: %s`, logicFilePath) + if err = gfile.PutContents(logicFilePath, generatedContent); err != nil { + return err + } + utils.GoFmt(logicFilePath) + return nil +} + +// getDstFileNameCase call gstr.Case* function to convert the s to specified case. +func (c CGenService) getDstFileNameCase(str, caseStr string) (newStr string) { + if newStr := gstr.CaseConvert(str, gstr.CaseTypeMatch(caseStr)); newStr != str { + return newStr + } + return gstr.CaseSnake(str) +} diff --git a/server/internal/library/hggen/internal/cmd/genservice/genservice_generate_template.go b/server/internal/library/hggen/internal/cmd/genservice/genservice_generate_template.go new file mode 100644 index 0000000..21ecac4 --- /dev/null +++ b/server/internal/library/hggen/internal/cmd/genservice/genservice_generate_template.go @@ -0,0 +1,105 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package genservice + +import ( + "bytes" + "fmt" + + "github.com/gogf/gf/v2/container/gmap" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/consts" +) + +func (c CGenService) generatePackageImports(generatedContent *bytes.Buffer, packageName string, imports []string) { + generatedContent.WriteString(gstr.ReplaceByMap(consts.TemplateGenServiceContentHead, g.MapStrStr{ + "{PackageName}": packageName, + "{Imports}": fmt.Sprintf( + "import (\n%s\n)", gstr.Join(imports, "\n"), + ), + })) +} + +// generateType type definitions. +// See: const.TemplateGenServiceContentInterface +func (c CGenService) generateType(generatedContent *bytes.Buffer, srcStructFunctions *gmap.ListMap, dstPackageName string) { + generatedContent.WriteString("type(") + generatedContent.WriteString("\n") + + srcStructFunctions.Iterator(func(key, value any) bool { + var ( + funcContents = make([]string, 0) + funcContent string + ) + structName, funcSlice := key.(string), value.([]map[string]string) + // Generating interface content. + for _, funcInfo := range funcSlice { + // Remove package name calls of `dstPackageName` in produced codes. + funcHead, _ := gregex.ReplaceString( + fmt.Sprintf(`\*{0,1}%s\.`, dstPackageName), + ``, funcInfo["funcHead"], + ) + funcContent = funcInfo["funcComment"] + funcHead + funcContents = append(funcContents, funcContent) + } + + // funcContents to string. + generatedContent.WriteString( + gstr.Trim(gstr.ReplaceByMap(consts.TemplateGenServiceContentInterface, g.MapStrStr{ + "{InterfaceName}": "I" + structName, + "{FuncDefinition}": gstr.Join(funcContents, "\n\t"), + })), + ) + generatedContent.WriteString("\n") + return true + }) + + generatedContent.WriteString(")") + generatedContent.WriteString("\n") +} + +// generateVar variable definitions. +// See: const.TemplateGenServiceContentVariable +func (c CGenService) generateVar(generatedContent *bytes.Buffer, srcStructFunctions *gmap.ListMap) { + // Generating variable and register definitions. + var variableContent string + + srcStructFunctions.Iterator(func(key, value any) bool { + structName := key.(string) + variableContent += gstr.Trim(gstr.ReplaceByMap(consts.TemplateGenServiceContentVariable, g.MapStrStr{ + "{StructName}": structName, + "{InterfaceName}": "I" + structName, + })) + variableContent += "\n" + return true + }) + if variableContent != "" { + generatedContent.WriteString("var(") + generatedContent.WriteString("\n") + generatedContent.WriteString(variableContent) + generatedContent.WriteString(")") + generatedContent.WriteString("\n") + } +} + +// generateFunc function definitions. +// See: const.TemplateGenServiceContentRegister +func (c CGenService) generateFunc(generatedContent *bytes.Buffer, srcStructFunctions *gmap.ListMap) { + // Variable register function definitions. + srcStructFunctions.Iterator(func(key, value any) bool { + structName := key.(string) + generatedContent.WriteString(gstr.Trim(gstr.ReplaceByMap(consts.TemplateGenServiceContentRegister, g.MapStrStr{ + "{StructName}": structName, + "{InterfaceName}": "I" + structName, + }))) + generatedContent.WriteString("\n\n") + return true + }) +} diff --git a/server/internal/library/hggen/internal/consts/consts.go b/server/internal/library/hggen/internal/consts/consts.go new file mode 100644 index 0000000..cece25d --- /dev/null +++ b/server/internal/library/hggen/internal/consts/consts.go @@ -0,0 +1,13 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package consts + +const ( + // DoNotEditKey is used in generated files, + // which marks the files will be overwritten by CLI tool. + DoNotEditKey = `DO NOT EDIT` +) diff --git a/server/internal/library/hggen/internal/consts/consts_gen_ctrl_template.go b/server/internal/library/hggen/internal/consts/consts_gen_ctrl_template.go new file mode 100644 index 0000000..ac6ee7d --- /dev/null +++ b/server/internal/library/hggen/internal/consts/consts_gen_ctrl_template.go @@ -0,0 +1,87 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package consts + +const TemplateGenCtrlControllerEmpty = ` +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package {Module} +` + +const TemplateGenCtrlControllerNewEmpty = ` +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package {Module} + +import ( + {ImportPath} +) +` + +const TemplateGenCtrlControllerNewFunc = ` +type {CtrlName} struct{} + +func {NewFuncName}() {InterfaceName} { + return &{CtrlName}{} +} +` + +const TemplateGenCtrlControllerMethodFunc = ` +package {Module} + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + "{ImportPath}" +) +{MethodComment} +func (c *{CtrlName}) {MethodName}(ctx context.Context, req *{Version}.{MethodName}Req) (res *{Version}.{MethodName}Res, err error) { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +} +` + +const TemplateGenCtrlControllerHeader = ` +package {Module} + +import ( + "context" + + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + + "{ImportPath}" +) + +` + +const TemplateGenCtrlControllerMethodFuncMerge = ` +{MethodComment} +func (c *{CtrlName}) {MethodName}(ctx context.Context, req *{Version}.{MethodName}Req) (res *{Version}.{MethodName}Res, err error) { + return nil, gerror.NewCode(gcode.CodeNotImplemented) +} +` + +const TemplateGenCtrlApiInterface = ` +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package {Module} + +import ( +{ImportPaths} +) + +{Interfaces} +` diff --git a/server/internal/library/hggen/internal/consts/consts_gen_ctrl_template_sdk.go b/server/internal/library/hggen/internal/consts/consts_gen_ctrl_template_sdk.go new file mode 100644 index 0000000..f2c4670 --- /dev/null +++ b/server/internal/library/hggen/internal/consts/consts_gen_ctrl_template_sdk.go @@ -0,0 +1,89 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package consts + +const TemplateGenCtrlSdkPkgNew = ` +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package {PkgName} + +import ( + "fmt" + + "github.com/gogf/gf/contrib/sdk/httpclient/v2" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/text/gstr" +) + +type implementer struct { + config httpclient.Config +} + +func New(config httpclient.Config) IClient { + return &implementer{ + config: config, + } +} + +` + +const TemplateGenCtrlSdkIClient = ` +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package {PkgName} + +import ( +) + +type IClient interface { +} +` + +const TemplateGenCtrlSdkImplementer = ` +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================= + +package {PkgName} + +import ( + "context" + + "github.com/gogf/gf/contrib/sdk/httpclient/v2" + "github.com/gogf/gf/v2/text/gstr" + +{ImportPaths} +) + +type implementer{ImplementerName} struct { + *httpclient.Client +} + +` + +const TemplateGenCtrlSdkImplementerNew = ` +func (i *implementer) {ImplementerName}() {Module}.I{ImplementerName} { + var ( + client = httpclient.New(i.config) + prefix = gstr.TrimRight(i.config.URL, "/") + "{VersionPrefix}" + ) + client.Client = client.Prefix(prefix) + return &implementer{ImplementerName}{client} +} + +` + +const TemplateGenCtrlSdkImplementerFunc = `{MethodComment} +func (i *implementer{ImplementerName}) {MethodName}(ctx context.Context, req *{Version}.{MethodName}Req) (res *{Version}.{MethodName}Res, err error) { + err = i.Request(ctx, req, &res) + return +} +` diff --git a/server/internal/library/hggen/internal/consts/consts_gen_dao_template_dao.go b/server/internal/library/hggen/internal/consts/consts_gen_dao_template_dao.go new file mode 100644 index 0000000..cffa30e --- /dev/null +++ b/server/internal/library/hggen/internal/consts/consts_gen_dao_template_dao.go @@ -0,0 +1,139 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package consts + +const TemplateGenDaoIndexContent = ` +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package {{.TplPackageName}} + +import ( + "{{.TplImportPrefix}}/internal" +) + +// {{.TplTableNameCamelLowerCase}}Dao is the data access object for the table {{.TplTableName}}. +// You can define custom methods on it to extend its functionality as needed. +type {{.TplTableNameCamelLowerCase}}Dao struct { + *internal.{{.TplTableNameCamelCase}}Dao +} + +var ( + // {{.TplTableNameCamelCase}} is a globally accessible object for table {{.TplTableName}} operations. + {{.TplTableNameCamelCase}} = {{.TplTableNameCamelLowerCase}}Dao{ +{{- if .TplTableSharding -}} + internal.New{{.TplTableNameCamelCase}}Dao({{.TplTableNameCamelLowerCase}}ShardingHandler), +{{- else -}} + internal.New{{.TplTableNameCamelCase}}Dao(), +{{- end -}} + } +) + +{{if .TplTableSharding -}} +// {{.TplTableNameCamelLowerCase}}ShardingHandler is the handler for sharding operations. +// You can fill this sharding handler with your custom implementation. +func {{.TplTableNameCamelLowerCase}}ShardingHandler(m *gdb.Model) *gdb.Model { + m = m.Sharding(gdb.ShardingConfig{ + Table: gdb.ShardingTableConfig{ + Enable: true, + Prefix: "{{.TplTableShardingPrefix}}", + // Replace Rule field with your custom sharding rule. + // Or you can use "&gdb.DefaultShardingRule{}" for default sharding rule. + Rule: nil, + }, + Schema: gdb.ShardingSchemaConfig{}, + }) + return m +} +{{- end}} + +// Add your custom methods and functionality below. + +` + +const TemplateGenDaoInternalContent = ` +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. {{.TplCreatedAtDatetimeStr}} +// ========================================================================== + +package internal + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// {{.TplTableNameCamelCase}}Dao is the data access object for the table {{.TplTableName}}. +type {{.TplTableNameCamelCase}}Dao struct { + table string // table is the underlying table name of the DAO. + group string // group is the database configuration group name of the current DAO. + columns {{.TplTableNameCamelCase}}Columns // columns contains all the column names of Table for convenient usage. + handlers []gdb.ModelHandler // handlers for customized model modification. +} + +// {{.TplTableNameCamelCase}}Columns defines and stores column names for the table {{.TplTableName}}. +type {{.TplTableNameCamelCase}}Columns struct { + {{.TplColumnDefine}} +} + +// {{.TplTableNameCamelLowerCase}}Columns holds the columns for the table {{.TplTableName}}. +var {{.TplTableNameCamelLowerCase}}Columns = {{.TplTableNameCamelCase}}Columns{ + {{.TplColumnNames}} +} + +// New{{.TplTableNameCamelCase}}Dao creates and returns a new DAO object for table data access. +func New{{.TplTableNameCamelCase}}Dao(handlers ...gdb.ModelHandler) *{{.TplTableNameCamelCase}}Dao { + return &{{.TplTableNameCamelCase}}Dao{ + group: "{{.TplGroupName}}", + table: "{{.TplTableName}}", + columns: {{.TplTableNameCamelLowerCase}}Columns, + handlers: handlers, + } +} + +// DB retrieves and returns the underlying raw database management object of the current DAO. +func (dao *{{.TplTableNameCamelCase}}Dao) DB() gdb.DB { + return g.DB(dao.group) +} + +// Table returns the table name of the current DAO. +func (dao *{{.TplTableNameCamelCase}}Dao) Table() string { + return dao.table +} + +// Columns returns all column names of the current DAO. +func (dao *{{.TplTableNameCamelCase}}Dao) Columns() {{.TplTableNameCamelCase}}Columns { + return dao.columns +} + +// Group returns the database configuration group name of the current DAO. +func (dao *{{.TplTableNameCamelCase}}Dao) Group() string { + return dao.group +} + +// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. +func (dao *{{.TplTableNameCamelCase}}Dao) Ctx(ctx context.Context) *gdb.Model { + model := dao.DB().Model(dao.table) + for _, handler := range dao.handlers { + model = handler(model) + } + return model.Safe().Ctx(ctx) +} + +// Transaction wraps the transaction logic using function f. +// It rolls back the transaction and returns the error if function f returns a non-nil error. +// It commits the transaction and returns nil if function f returns nil. +// +// Note: Do not commit or roll back the transaction in function f, +// as it is automatically handled by this function. +func (dao *{{.TplTableNameCamelCase}}Dao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) { + return dao.Ctx(ctx).Transaction(ctx, f) +} +` diff --git a/server/internal/library/hggen/internal/consts/consts_gen_dao_template_do.go b/server/internal/library/hggen/internal/consts/consts_gen_dao_template_do.go new file mode 100644 index 0000000..97a404e --- /dev/null +++ b/server/internal/library/hggen/internal/consts/consts_gen_dao_template_do.go @@ -0,0 +1,20 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package consts + +const TemplateGenDaoDoContent = ` +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. {{.TplCreatedAtDatetimeStr}} +// ================================================================================= + +package {{.TplPackageName}} + +{{.TplPackageImports}} + +// {{.TplTableNameCamelCase}} is the golang structure of table {{.TplTableName}} for DAO operations like Where/Data. +{{.TplStructDefine}} +` diff --git a/server/internal/library/hggen/internal/consts/consts_gen_dao_template_entity.go b/server/internal/library/hggen/internal/consts/consts_gen_dao_template_entity.go new file mode 100644 index 0000000..c54713a --- /dev/null +++ b/server/internal/library/hggen/internal/consts/consts_gen_dao_template_entity.go @@ -0,0 +1,20 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package consts + +const TemplateGenDaoEntityContent = ` +// ================================================================================= +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. {{.TplCreatedAtDatetimeStr}} +// ================================================================================= + +package {{.TplPackageName}} + +{{.TplPackageImports}} + +// {{.TplTableNameCamelCase}} is the golang structure for table {{.TplTableName}}. +{{.TplStructDefine}} +` diff --git a/server/internal/library/hggen/internal/consts/consts_gen_dao_template_table.go b/server/internal/library/hggen/internal/consts/consts_gen_dao_template_table.go new file mode 100644 index 0000000..a60c92d --- /dev/null +++ b/server/internal/library/hggen/internal/consts/consts_gen_dao_template_table.go @@ -0,0 +1,35 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package consts + +const TemplateGenTableContent = ` +// ================================================================================= +// This file is auto-generated by the GoFrame CLI tool. You may modify it as needed. +// ================================================================================= + +package {{.TplPackageName}} + +import ( + "context" + + "github.com/gogf/gf/v2/database/gdb" +) + +// {{.TplTableNameCamelCase}} defines the fields of table "{{.TplTableName}}" with their properties. +// This map is used internally by GoFrame ORM to understand table structure. +var {{.TplTableNameCamelCase}} = map[string]*gdb.TableField{ +{{.TplTableFields}} +} + +// Set{{.TplTableNameCamelCase}}TableFields registers the table fields definition to the database instance. +// db: database instance that implements gdb.DB interface. +// schema: optional schema/namespace name, especially for databases that support schemas. +func Set{{.TplTableNameCamelCase}}TableFields(ctx context.Context, db gdb.DB, schema ...string) error { + return db.GetCore().SetTableFields(ctx, "{{.TplTableName}}", {{.TplTableNameCamelCase}}, schema...) +} + +` diff --git a/server/internal/library/hggen/internal/consts/consts_gen_enums_template.go b/server/internal/library/hggen/internal/consts/consts_gen_enums_template.go new file mode 100644 index 0000000..9477787 --- /dev/null +++ b/server/internal/library/hggen/internal/consts/consts_gen_enums_template.go @@ -0,0 +1,23 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package consts + +const TemplateGenEnums = ` +// ================================================================================ +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ================================================================================ + +package {PackageName} + +import ( + "github.com/gogf/gf/v2/util/gtag" +) + +func init() { + gtag.SetGlobalEnums({EnumsJson}) +} +` diff --git a/server/internal/library/hggen/internal/consts/consts_gen_pbentity_template.go b/server/internal/library/hggen/internal/consts/consts_gen_pbentity_template.go new file mode 100644 index 0000000..73b693e --- /dev/null +++ b/server/internal/library/hggen/internal/consts/consts_gen_pbentity_template.go @@ -0,0 +1,23 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package consts + +const TemplatePbEntityMessageContent = ` +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +syntax = "proto3"; + +package {PackageName}; + +option go_package = "{GoPackage}"; +{OptionContent} +{Imports} + +{EntityMessage} +` diff --git a/server/internal/library/hggen/internal/consts/consts_gen_service_template.go b/server/internal/library/hggen/internal/consts/consts_gen_service_template.go new file mode 100644 index 0000000..f5c4f5a --- /dev/null +++ b/server/internal/library/hggen/internal/consts/consts_gen_service_template.go @@ -0,0 +1,41 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package consts + +const TemplateGenServiceContentHead = ` +// ================================================================================ +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// You can delete these comments if you wish manually maintain this interface file. +// ================================================================================ + +package {PackageName} + +{Imports} +` + +const TemplateGenServiceContentInterface = ` +{InterfaceName} interface { + {FuncDefinition} +} +` + +const TemplateGenServiceContentVariable = ` +local{StructName} {InterfaceName} +` + +const TemplateGenServiceContentRegister = ` +func {StructName}() {InterfaceName} { + if local{StructName} == nil { + panic("implement not found for interface {InterfaceName}, forgot register?") + } + return local{StructName} +} + +func Register{StructName}(i {InterfaceName}) { + local{StructName} = i +} +` diff --git a/server/internal/library/hggen/internal/consts/consts_gen_service_template_logic.go b/server/internal/library/hggen/internal/consts/consts_gen_service_template_logic.go new file mode 100644 index 0000000..eb43a03 --- /dev/null +++ b/server/internal/library/hggen/internal/consts/consts_gen_service_template_logic.go @@ -0,0 +1,19 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package consts + +const TemplateGenServiceLogicContent = ` +// ========================================================================== +// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. +// ========================================================================== + +package {PackageName} + +import( + {Imports} +) +` diff --git a/server/internal/library/hggen/internal/service/install.go b/server/internal/library/hggen/internal/service/install.go new file mode 100644 index 0000000..0c901b1 --- /dev/null +++ b/server/internal/library/hggen/internal/service/install.go @@ -0,0 +1,246 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package service + +import ( + "context" + "runtime" + "strings" + + "github.com/gogf/gf/v2/container/garray" + "github.com/gogf/gf/v2/container/gset" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gcmd" + "github.com/gogf/gf/v2/os/genv" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gconv" + + "hotgo/internal/library/hggen/internal/utility/allyes" + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +var ( + Install = serviceInstall{} +) + +type serviceInstall struct{} + +type serviceInstallAvailablePath struct { + dirPath string + filePath string + writable bool + installed bool + IsSelf bool +} + +func (s serviceInstall) Run(ctx context.Context) (err error) { + // Ask where to install. + paths := s.getAvailablePaths() + if len(paths) <= 0 { + mlog.Printf("no path detected, you can manually install gf by copying the binary to path folder.") + return + } + mlog.Printf("I found some installable paths for you(from $PATH): ") + mlog.Printf(" %2s | %8s | %9s | %s", "Id", "Writable", "Installed", "Path") + + // Print all paths status and determine the default selectedID value. + var ( + selectedID = -1 + newPaths []serviceInstallAvailablePath + pathSet = gset.NewStrSet() // Used for repeated items filtering. + ) + for _, path := range paths { + if !pathSet.AddIfNotExist(path.dirPath) { + continue + } + newPaths = append(newPaths, path) + } + paths = newPaths + for id, path := range paths { + mlog.Printf(" %2d | %8t | %9t | %s", id, path.writable, path.installed, path.dirPath) + if selectedID == -1 { + // Use the previously installed path as the most priority choice. + if path.installed { + selectedID = id + } + } + } + // If there's no previously installed path, use the first writable path. + if selectedID == -1 { + // Order by choosing priority. + commonPaths := garray.NewStrArrayFrom(g.SliceStr{ + s.getGoPathBin(), + `/usr/local/bin`, + `/usr/bin`, + `/usr/sbin`, + `C:\Windows`, + `C:\Windows\system32`, + `C:\Go\bin`, + `C:\Program Files`, + `C:\Program Files (x86)`, + }) + // Check the common installation directories. + commonPaths.Iterator(func(k int, v string) bool { + for id, aPath := range paths { + if strings.EqualFold(aPath.dirPath, v) { + selectedID = id + return false + } + } + return true + }) + if selectedID == -1 { + selectedID = 0 + } + } + + if allyes.Check() { + // Use the default selectedID. + mlog.Printf("please choose one installation destination [default %d]: %d", selectedID, selectedID) + } else { + for { + // Get input and update selectedID. + var ( + inputID int + input = gcmd.Scanf("please choose one installation destination [default %d]: ", selectedID) + ) + if input != "" { + inputID = gconv.Int(input) + } else { + break + } + // Check if out of range. + if inputID >= len(paths) || inputID < 0 { + mlog.Printf("invalid install destination Id: %d", inputID) + continue + } + selectedID = inputID + break + } + } + + // Get selected destination path. + dstPath := paths[selectedID] + + // Install the new binary. + mlog.Debugf(`copy file from "%s" to "%s"`, gfile.SelfPath(), dstPath.filePath) + err = gfile.CopyFile(gfile.SelfPath(), dstPath.filePath) + if err != nil { + mlog.Printf("install gf binary to '%s' failed: %v", dstPath.dirPath, err) + mlog.Printf("you can manually install gf by copying the binary to folder: %s", dstPath.dirPath) + } else { + mlog.Printf("gf binary is successfully installed to: %s", dstPath.filePath) + } + return +} + +// IsInstalled checks and returns whether the binary is installed. +func (s serviceInstall) IsInstalled() (*serviceInstallAvailablePath, bool) { + paths := s.getAvailablePaths() + for _, aPath := range paths { + if aPath.installed { + return &aPath, true + } + } + return nil, false +} + +// getGoPathBin retrieves ad returns the GOPATH/bin path for binary. +func (s serviceInstall) getGoPathBin() string { + if goPath := genv.Get(`GOPATH`).String(); goPath != "" { + return gfile.Join(goPath, "bin") + } + return "" +} + +// getAvailablePaths returns the installation paths data for the binary. +func (s serviceInstall) getAvailablePaths() []serviceInstallAvailablePath { + var ( + folderPaths []serviceInstallAvailablePath + binaryFileName = "gf" + ) + + // Windows binary file name suffix. + if runtime.GOOS == "windows" { + binaryFileName += ".exe" + } + + // $GOPATH/bin + if goPathBin := s.getGoPathBin(); goPathBin != "" { + folderPaths = s.checkAndAppendToAvailablePath( + folderPaths, goPathBin, binaryFileName, + ) + } + switch runtime.GOOS { + case "darwin": + darwinInstallationCheckPaths := []string{"/usr/local/bin"} + for _, v := range darwinInstallationCheckPaths { + folderPaths = s.checkAndAppendToAvailablePath( + folderPaths, v, binaryFileName, + ) + } + fallthrough + + default: + // Search and find the writable directory path. + envPath := genv.Get("PATH", genv.Get("Path").String()).String() + if gstr.Contains(envPath, ";") { + // windows. + for _, v := range gstr.SplitAndTrim(envPath, ";") { + if v == "." { + continue + } + folderPaths = s.checkAndAppendToAvailablePath( + folderPaths, v, binaryFileName, + ) + } + } else if gstr.Contains(envPath, ":") { + // *nix. + for _, v := range gstr.SplitAndTrim(envPath, ":") { + if v == "." { + continue + } + folderPaths = s.checkAndAppendToAvailablePath( + folderPaths, v, binaryFileName, + ) + } + } else if envPath != "" { + folderPaths = s.checkAndAppendToAvailablePath( + folderPaths, envPath, binaryFileName, + ) + } else { + folderPaths = s.checkAndAppendToAvailablePath( + folderPaths, "/usr/local/bin", binaryFileName, + ) + } + } + return folderPaths +} + +// checkAndAppendToAvailablePath checks if `path` is writable and already installed. +// It adds the `path` to `folderPaths` if it is writable or already installed, or else it ignores the `path`. +func (s serviceInstall) checkAndAppendToAvailablePath(folderPaths []serviceInstallAvailablePath, dirPath string, binaryFileName string) []serviceInstallAvailablePath { + var ( + filePath = gfile.Join(dirPath, binaryFileName) + writable = gfile.IsWritable(dirPath) + installed = gfile.Exists(filePath) + self = gfile.SelfPath() == filePath + ) + if !writable && !installed { + return folderPaths + } + return append( + folderPaths, + serviceInstallAvailablePath{ + dirPath: dirPath, + writable: writable, + filePath: filePath, + installed: installed, + IsSelf: self, + }) +} diff --git a/server/internal/library/hggen/internal/utility/allyes/allyes.go b/server/internal/library/hggen/internal/utility/allyes/allyes.go new file mode 100644 index 0000000..f8f7d1e --- /dev/null +++ b/server/internal/library/hggen/internal/utility/allyes/allyes.go @@ -0,0 +1,28 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package allyes + +import ( + "github.com/gogf/gf/v2/os/gcmd" + "github.com/gogf/gf/v2/os/genv" +) + +const ( + EnvName = "GF_CLI_ALL_YES" +) + +// Init initializes the package manually. +func Init() { + if gcmd.GetOpt("y") != nil { + genv.MustSet(EnvName, "1") + } +} + +// Check checks whether option allow all yes for command. +func Check() bool { + return genv.Get(EnvName).String() == "1" +} diff --git a/server/internal/library/hggen/internal/utility/mlog/mlog.go b/server/internal/library/hggen/internal/utility/mlog/mlog.go new file mode 100644 index 0000000..2181501 --- /dev/null +++ b/server/internal/library/hggen/internal/utility/mlog/mlog.go @@ -0,0 +1,76 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package mlog + +import ( + "context" + + "github.com/gogf/gf/v2/os/gcmd" + "github.com/gogf/gf/v2/os/genv" + "github.com/gogf/gf/v2/os/glog" +) + +const ( + headerPrintEnvName = "GF_CLI_MLOG_HEADER" +) + +var ( + ctx = context.TODO() + logger = glog.New() +) + +func init() { + if genv.Get(headerPrintEnvName).String() == "1" { + logger.SetHeaderPrint(true) + } else { + logger.SetHeaderPrint(false) + } + + if gcmd.GetOpt("debug") != nil || gcmd.GetOpt("gf.debug") != nil { + logger.SetHeaderPrint(true) + logger.SetStackSkip(4) + logger.SetFlags(logger.GetFlags() | glog.F_FILE_LONG) + logger.SetDebug(true) + } else { + logger.SetStack(false) + logger.SetDebug(false) + } +} + +// SetHeaderPrint enables/disables header printing to stdout. +func SetHeaderPrint(enabled bool) { + logger.SetHeaderPrint(enabled) + if enabled { + _ = genv.Set(headerPrintEnvName, "1") + } else { + _ = genv.Set(headerPrintEnvName, "0") + } +} + +func Print(v ...any) { + logger.Print(ctx, v...) +} + +func Printf(format string, v ...any) { + logger.Printf(ctx, format, v...) +} + +func Fatal(v ...any) { + logger.Fatal(ctx, v...) +} + +func Fatalf(format string, v ...any) { + logger.Fatalf(ctx, format, v...) +} + +func Debug(v ...any) { + logger.Debug(ctx, v...) +} + +func Debugf(format string, v ...any) { + logger.Debugf(ctx, format, v...) +} diff --git a/server/internal/library/hggen/internal/utility/utils/utils.go b/server/internal/library/hggen/internal/utility/utils/utils.go new file mode 100644 index 0000000..05361fd --- /dev/null +++ b/server/internal/library/hggen/internal/utility/utils/utils.go @@ -0,0 +1,135 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package utils + +import ( + "context" + "fmt" + + "golang.org/x/tools/imports" + + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gproc" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + + "hotgo/internal/library/hggen/internal/consts" + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +// GoFmt formats the source file and adds or removes import statements as necessary. +func GoFmt(path string) { + replaceFunc := func(path, content string) string { + res, err := imports.Process(path, []byte(content), nil) + if err != nil { + mlog.Printf(`error format "%s" go files: %v`, path, err) + return content + } + return string(res) + } + + var err error + if gfile.IsFile(path) { + // File format. + if gfile.ExtName(path) != "go" { + return + } + err = gfile.ReplaceFileFunc(replaceFunc, path) + } else { + // Folder format. + err = gfile.ReplaceDirFunc(replaceFunc, path, "*.go", true) + } + if err != nil { + mlog.Printf(`error format "%s" go files: %v`, path, err) + } +} + +// GoModTidy executes `go mod tidy` at specified directory `dirPath`. +func GoModTidy(ctx context.Context, dirPath string) error { + command := fmt.Sprintf(`cd %s && go mod tidy`, dirPath) + err := gproc.ShellRun(ctx, command) + return err +} + +// IsFileDoNotEdit checks and returns whether file contains `do not edit` key. +func IsFileDoNotEdit(filePath string) bool { + if !gfile.Exists(filePath) { + return true + } + return gstr.Contains(gfile.GetContents(filePath), consts.DoNotEditKey) +} + +// ReplaceGeneratedContentGFV2 replaces generated go content from goframe v1 to v2. +func ReplaceGeneratedContentGFV2(folderPath string) (err error) { + return gfile.ReplaceDirFunc(func(path, content string) string { + if gstr.Contains(content, `"github.com/gogf/gf`) && !gstr.Contains(content, `"github.com/gogf/gf/v2`) { + content = gstr.Replace(content, `"github.com/gogf/gf"`, `"github.com/gogf/gf/v2"`) + content = gstr.Replace(content, `"github.com/gogf/gf/`, `"github.com/gogf/gf/v2/`) + content = gstr.Replace(content, `"github.com/gogf/gf/v2/contrib/`, `"github.com/gogf/gf/contrib/`) + return content + } + return content + }, folderPath, "*.go", true) +} + +// GetImportPath calculates and returns the golang import path for given `dirPath`. +// Note that it needs a `go.mod` in current working directory or parent directories to detect the path. +func GetImportPath(dirPath string) string { + // If `filePath` does not exist, create it firstly to find the import path. + var realPath = gfile.RealPath(dirPath) + if realPath == "" { + _ = gfile.Mkdir(dirPath) + realPath = gfile.RealPath(dirPath) + } + + var ( + newDir = gfile.Dir(realPath) + oldDir string + suffix = gfile.Basename(dirPath) + goModName = "go.mod" + goModPath string + importPath string + ) + for { + goModPath = gfile.Join(newDir, goModName) + if gfile.Exists(goModPath) { + match, _ := gregex.MatchString(`^module\s+(.+)\s*`, gfile.GetContents(goModPath)) + importPath = gstr.Trim(match[1]) + "/" + suffix + importPath = gstr.Replace(importPath, `\`, `/`) + importPath = gstr.TrimRight(importPath, `/`) + return importPath + } + oldDir = newDir + newDir = gfile.Dir(oldDir) + if newDir == oldDir { + return "" + } + suffix = gfile.Basename(oldDir) + "/" + suffix + } +} + +// GetModPath retrieves and returns the file path of go.mod for current project. +func GetModPath() string { + var ( + oldDir = gfile.Pwd() + newDir = oldDir + goModName = "go.mod" + goModPath string + ) + for { + goModPath = gfile.Join(newDir, goModName) + if gfile.Exists(goModPath) { + return goModPath + } + newDir = gfile.Dir(oldDir) + if newDir == oldDir { + break + } + oldDir = newDir + } + return "" +} diff --git a/server/internal/library/hggen/internal/utility/utils/utils_http_download.go b/server/internal/library/hggen/internal/utility/utils/utils_http_download.go new file mode 100644 index 0000000..ecedc00 --- /dev/null +++ b/server/internal/library/hggen/internal/utility/utils/utils_http_download.go @@ -0,0 +1,55 @@ +// Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. +// +// This Source Code Form is subject to the terms of the MIT License. +// If a copy of the MIT was not distributed with this file, +// You can obtain one at https://github.com/gogf/gf. + +package utils + +import ( + "io" + "net/http" + "os" + "time" + + "github.com/schollz/progressbar/v3" + + "github.com/gogf/gf/v2/errors/gerror" + + "hotgo/internal/library/hggen/internal/utility/mlog" +) + +// HTTPDownloadFileWithPercent downloads target url file to local path with percent process printing. +func HTTPDownloadFileWithPercent(url string, localSaveFilePath string) error { + start := time.Now() + out, err := os.Create(localSaveFilePath) + if err != nil { + return gerror.Wrapf(err, `download "%s" to "%s" failed`, url, localSaveFilePath) + } + defer out.Close() + + headResp, err := http.Head(url) + if err != nil { + return gerror.Wrapf(err, `download "%s" to "%s" failed`, url, localSaveFilePath) + } + defer headResp.Body.Close() + + resp, err := http.Get(url) + if err != nil { + return gerror.Wrapf(err, `download "%s" to "%s" failed`, url, localSaveFilePath) + } + defer resp.Body.Close() + + bar := progressbar.NewOptions(int(resp.ContentLength), progressbar.OptionShowBytes(true), progressbar.OptionShowCount()) + writer := io.MultiWriter(out, bar) + _, err = io.Copy(writer, resp.Body) + + elapsed := time.Since(start) + if elapsed > time.Minute { + mlog.Printf(`download completed in %.0fm`, float64(elapsed)/float64(time.Minute)) + } else { + mlog.Printf(`download completed in %.0fs`, elapsed.Seconds()) + } + + return nil +} diff --git a/server/internal/library/hggen/views/column.go b/server/internal/library/hggen/views/column.go new file mode 100644 index 0000000..761f848 --- /dev/null +++ b/server/internal/library/hggen/views/column.go @@ -0,0 +1,305 @@ +// Package views +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package views + +import ( + "context" + "fmt" + "strings" + + "hotgo/internal/consts" + "hotgo/internal/library/hggen/internal/cmd/gendao" + "hotgo/internal/model/input/sysin" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/text/gregex" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gconv" +) + +// DoTableColumns 获取指定表生成字段列表 +func DoTableColumns(ctx context.Context, in *sysin.GenCodesColumnListInp, config gendao.CGenDaoInput) (fields []*sysin.GenCodesColumnListModel, err error) { + var ( + sql string + conf = g.DB(in.Name).GetConfig() + ) + + // 根据数据库类型使用不同的SQL + if conf.Type == consts.DBPgsql { + // PostgreSQL: 使用pg_catalog查询列详细信息 + sql = ` + SELECT + a.attnum as id, + a.attname as name, + COALESCE(col_description(a.attrelid, a.attnum), '') as dc, + t.typname as dataType, + CASE + WHEN a.atttypmod > 0 THEN t.typname || '(' || (a.atttypmod - 4) || ')' + ELSE t.typname + END as sqlType, + CASE + WHEN a.atttypmod > 0 THEN a.atttypmod - 4 + ELSE NULL + END as length, + CASE WHEN a.attnotnull THEN 'NO' ELSE 'YES' END as isAllowNull, + pg_get_expr(ad.adbin, ad.adrelid) as defaultValue, + CASE + WHEN pk.contype = 'p' THEN 'PRI' + WHEN uk.contype = 'u' THEN 'UNI' + ELSE '' + END as "index", + CASE + WHEN ad.adbin IS NOT NULL AND ad.adbin LIKE '%nextval%' THEN 'auto_increment' + ELSE '' + END as extra + FROM pg_attribute a + JOIN pg_class c ON a.attrelid = c.oid + JOIN pg_namespace n ON c.relnamespace = n.oid + JOIN pg_type t ON a.atttypid = t.oid + LEFT JOIN pg_attrdef ad ON a.attrelid = ad.adrelid AND a.attnum = ad.adnum + LEFT JOIN pg_constraint pk ON pk.conrelid = c.oid AND pk.contype = 'p' AND a.attnum = ANY(pk.conkey) + LEFT JOIN pg_constraint uk ON uk.conrelid = c.oid AND uk.contype = 'u' AND a.attnum = ANY(uk.conkey) + WHERE n.nspname = 'public' + AND c.relname = '` + in.Table + `' + AND a.attnum > 0 + AND NOT a.attisdropped + ORDER BY a.attnum` + } else { + // MySQL: 使用information_schema.COLUMNS + sql = fmt.Sprintf("SELECT ORDINAL_POSITION as id, COLUMN_NAME as name, COLUMN_COMMENT as dc, DATA_TYPE as dataType, COLUMN_TYPE as sqlType, CHARACTER_MAXIMUM_LENGTH as length, IS_NULLABLE as isAllowNull, COLUMN_DEFAULT as defaultValue, COLUMN_KEY as `index`, EXTRA as extra FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '%s' AND TABLE_NAME = '%s' ORDER BY id ASC", conf.Name, in.Table) + } + + err = g.DB(in.Name).Ctx(ctx).Raw(sql).Scan(&fields) + if err != nil { + return nil, err + } + + if len(fields) == 0 { + return + } + + for _, field := range fields { + if in.IsLink == 1 { + CustomLinkAttributes(ctx, in.Alias, field, config) + } else { + CustomAttributes(ctx, field, config) + } + } + return +} + +// CustomLinkAttributes 可自定义关联表的字段属性 +func CustomLinkAttributes(ctx context.Context, alias string, field *sysin.GenCodesColumnListModel, in gendao.CGenDaoInput) { + field.GoName, field.GoType, field.TsName, field.TsType = GenGotype(ctx, field, in) + + field.GoName = gstr.UcFirst(alias + field.GoName) + field.TsName = gstr.LcFirst(field.GoName) + + setDefaultQueryWhere(field) + setDefaultValue(field) +} + +// CustomAttributes 可自定义的字段属性 +func CustomAttributes(ctx context.Context, field *sysin.GenCodesColumnListModel, in gendao.CGenDaoInput) { + field.GoName, field.GoType, field.TsName, field.TsType = GenGotype(ctx, field, in) + setDefault(field) +} + +// GenGotype 生成字段的go类型 +func GenGotype(ctx context.Context, field *sysin.GenCodesColumnListModel, in gendao.CGenDaoInput) (goName, typeName, tsName string, tsType string) { + var err error + tsName = getJsonTagFromCase(field.Name, in.JsonCase) + goName = gstr.CaseCamel(field.Name) + + typeName, err = CheckLocalTypeForField(ctx, field.DataType, nil) + if err != nil { + panic(err) + } + + switch gdb.LocalType(typeName) { + case gdb.LocalTypeDate, gdb.LocalTypeDatetime: + if in.StdTime { + typeName = "time.Time" + } else { + typeName = "*gtime.Time" + } + + case gdb.LocalTypeInt64Bytes: + typeName = "int64" + + case gdb.LocalTypeUint64Bytes: + typeName = "uint64" + + // Special type handle. + case gdb.LocalTypeJson, gdb.LocalTypeJsonb: + if in.GJsonSupport { + typeName = "*gjson.Json" + } else { + typeName = "string" + } + } + + tsType = ShiftMap[typeName] + return +} + +// CheckLocalTypeForField checks and returns corresponding type for given db type. +func CheckLocalTypeForField(ctx context.Context, fieldType string, fieldValue interface{}) (string, error) { + var ( + typeName string + typePattern string + ) + match, _ := gregex.MatchString(`(.+?)\((.+)\)`, fieldType) + if len(match) == 3 { + typeName = gstr.Trim(match[1]) + typePattern = gstr.Trim(match[2]) + } else { + typeName = gstr.Split(fieldType, " ")[0] + } + typeName = strings.ToLower(typeName) + switch typeName { + case + "binary", + "varbinary", + "blob", + "tinyblob", + "mediumblob", + "longblob": + return string(gdb.LocalTypeBytes), nil + + case + "int", + "tinyint", + "small_int", + "smallint", + "medium_int", + "mediumint", + "serial": + if gstr.ContainsI(fieldType, "unsigned") { + return string(gdb.LocalTypeUint), nil + } + return string(gdb.LocalTypeInt), nil + + case + "big_int", + "bigint", + "bigserial": + if gstr.ContainsI(fieldType, "unsigned") { + return string(gdb.LocalTypeUint64), nil + } + return string(gdb.LocalTypeInt64), nil + + case + "real": + return string(gdb.LocalTypeFloat32), nil + + case + "float", + "double", + "decimal", + "money", + "numeric", + "smallmoney": + return string(gdb.LocalTypeFloat64), nil + + case + "bit": + // It is suggested using bit(1) as boolean. + if typePattern == "1" { + return string(gdb.LocalTypeBool), nil + } + s := gconv.String(fieldValue) + // mssql is true|false string. + if strings.EqualFold(s, "true") || strings.EqualFold(s, "false") { + return string(gdb.LocalTypeBool), nil + } + if gstr.ContainsI(fieldType, "unsigned") { + return string(gdb.LocalTypeUint64Bytes), nil + } + return string(gdb.LocalTypeInt64Bytes), nil + + case + "bool": + return string(gdb.LocalTypeBool), nil + + case + "date": + return string(gdb.LocalTypeDate), nil + + case + "datetime", + "timestamp", + "timestamptz": + return string(gdb.LocalTypeDatetime), nil + + case + "json": + return string(gdb.LocalTypeJson), nil + + case + "jsonb": + return string(gdb.LocalTypeJsonb), nil + + default: + // Auto-detect field type, using key match. + switch { + case strings.Contains(typeName, "text") || strings.Contains(typeName, "char") || strings.Contains(typeName, "character"): + return string(gdb.LocalTypeString), nil + + case strings.Contains(typeName, "float") || strings.Contains(typeName, "double") || strings.Contains(typeName, "numeric"): + return string(gdb.LocalTypeFloat64), nil + + case strings.Contains(typeName, "bool"): + return string(gdb.LocalTypeBool), nil + + case strings.Contains(typeName, "binary") || strings.Contains(typeName, "blob"): + return string(gdb.LocalTypeBytes), nil + + case strings.Contains(typeName, "int"): + if gstr.ContainsI(fieldType, "unsigned") { + return string(gdb.LocalTypeUint), nil + } + return string(gdb.LocalTypeInt), nil + + case strings.Contains(typeName, "time"): + return string(gdb.LocalTypeDatetime), nil + + case strings.Contains(typeName, "date"): + return string(gdb.LocalTypeDatetime), nil + + default: + return string(gdb.LocalTypeString), nil + } + } +} + +// getJsonTagFromCase call gstr.Case* function to convert the s to specified case. +func getJsonTagFromCase(str, caseStr string) string { + switch gstr.ToLower(caseStr) { + case gstr.ToLower("Camel"): + return gstr.CaseCamel(str) + + case gstr.ToLower("CamelLower"): + return gstr.CaseCamelLower(str) + + case gstr.ToLower("Kebab"): + return gstr.CaseKebab(str) + + case gstr.ToLower("KebabScreaming"): + return gstr.CaseKebabScreaming(str) + + case gstr.ToLower("Snake"): + return gstr.CaseSnake(str) + + case gstr.ToLower("SnakeFirstUpper"): + return gstr.CaseSnakeFirstUpper(str) + + case gstr.ToLower("SnakeScreaming"): + return gstr.CaseSnakeScreaming(str) + } + return str +} diff --git a/server/internal/library/hggen/views/column_default.go b/server/internal/library/hggen/views/column_default.go new file mode 100644 index 0000000..ca44e60 --- /dev/null +++ b/server/internal/library/hggen/views/column_default.go @@ -0,0 +1,326 @@ +// Package views +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package views + +import ( + "github.com/gogf/gf/v2/text/gstr" + "hotgo/internal/consts" + "hotgo/internal/model/input/sysin" +) + +// 默认表单组件映射 Ts -> 表单组件 +var defaultFormModeMap = map[string]string{ + TsTypeString: FormModeInput, + TsTypeNumber: FormModeInputNumber, + TsTypeBoolean: FormModeInputNumber, + TsTypeArray: FormModeInputDynamic, + TsTypeTuple: FormModeInputDynamic, + TsTypeAny: FormModeInput, +} + +var defaultEditFields = map[string]bool{ + "id": false, + "created_at": false, + "updated_at": false, + "deleted_at": false, +} + +var defaultEditSwitch = map[string]bool{ + "id": false, + "level": false, + "tree": false, + "created_by": false, + "updated_by": false, + "deleted_by": false, + "created_at": false, + "updated_at": false, + "deleted_at": false, +} + +var defaultListSwitch = map[string]bool{ + "level": false, + "tree": false, + "deleted_at": false, +} + +var defaultExportSwitch = map[string]bool{ + "level": false, + "tree": false, + "deleted_at": false, +} + +var defaultQuerySwitch = map[string]bool{ + "level": false, + "tree": false, + "deleted_at": false, +} + +var defaultSort = map[string]bool{ + "id": true, + "sort": true, +} + +var defaultTreeFields = []string{"pid", "level", "tree"} + +// 默认表单验证映射 物理类型命名识别 +var defaultFormRoleMap = map[string]string{ + "mobile": FormRolePhone, + "qq": FormRoleQq, + "email": FormRoleEmail, + "id_card": FormRoleIdCard, + "bank_card": FormRoleBankCard, + "password": FormRolePassword, + "pass": FormRolePassword, + "price": FormRoleAmount, +} + +// 默认查询条件映射 go类型识别 +var defaultWhereModeMap = map[string]string{ + GoTypeString: WhereModeLike, + GoTypeDate: WhereModeEq, + GoTypeDatetime: WhereModeEq, + GoTypeInt: WhereModeEq, + GoTypeUint: WhereModeEq, + GoTypeInt64: WhereModeEq, + GoTypeUint64: WhereModeEq, + GoTypeIntSlice: WhereModeIn, + GoTypeInt64Slice: WhereModeIn, + GoTypeUint64Slice: WhereModeIn, + GoTypeFloat32: WhereModeEq, + GoTypeFloat64: WhereModeEq, + GoTypeBytes: WhereModeEq, + GoTypeTime: WhereModeEq, + GoTypeGTime: WhereModeEq, + GoTypeJson: WhereModeJsonContains, +} + +// setDefault 设置默认属性 +func setDefault(field *sysin.GenCodesColumnListModel) { + setDefaultEdit(field) + + setDefaultFormMode(field) + + setDefaultFormRole(field) + + setDefaultDictType(field) + + setDefaultList(field) + + setDefaultExport(field) + + setDefaultQuery(field) + + setDefaultQueryWhere(field) + + setDefaultValue(field) + + if field.IsAllowNull == "NO" { + field.Required = true + } + + if IsIndexUNI(field.Index) { + field.Unique = true + } + + if df, ok := defaultSort[field.Name]; ok { + field.IsSort = df + } + + if field.Dc == "" { + field.Dc = field.Name + } +} + +// setDefaultEdit 设置默认编辑 +func setDefaultEdit(field *sysin.GenCodesColumnListModel) { + field.IsEdit = true + + if IsIndexPK(field.Index) { + field.IsEdit = false + return + } + + if df, ok := defaultEditFields[field.Name]; ok { + field.IsEdit = df + } + + if df, ok := defaultEditSwitch[field.Name]; ok { + field.IsEdit = df + } +} + +// setDefaultFormMode 设置默认表单组件 +func setDefaultFormMode(field *sysin.GenCodesColumnListModel) { + field.FormMode = FormModeInput + if df, ok := defaultFormModeMap[field.TsType]; ok { + field.FormMode = df + } + + if gstr.HasSuffix(field.GoName, "Status") && IsNumberType(field.GoType) { + field.FormMode = FormModeSelect + return + } + + if field.GoName == "CreatedAt" { + field.FormMode = FormModeTimeRange + return + } + + if (field.GoName == "ProvinceId" || field.GoName == "CityId") && IsNumberType(field.GoType) { + field.FormMode = FormModeCitySelector + return + } + + if field.DataType == "datetime" || field.DataType == "timestamp" || field.DataType == "timestamptz" { + field.FormMode = FormModeTime + return + } + + if field.DataType == "date" { + field.FormMode = FormModeDate + return + } + + if field.GoType == GoTypeString && field.Length >= 256 && field.Length <= 512 { + field.FormMode = FormModeInputTextarea + return + } + + if field.GoType == GoTypeString && field.Length > 512 { + field.FormMode = FormModeInputEditor + return + } +} + +// setDefaultFormRole 设置默认表单验证 +func setDefaultFormRole(field *sysin.GenCodesColumnListModel) { + field.FormRole = FormRoleNone + + switch field.GoType { + case GoTypeUint, GoTypeUint64: + field.FormRole = FormRoleNum + return + } + + if df, ok := defaultFormRoleMap[field.Name]; ok { + field.FormRole = df + } +} + +// setDefaultDictType 设置默认字典类型 +func setDefaultDictType(field *sysin.GenCodesColumnListModel) { + if gstr.HasSuffix(field.GoName, "Status") && IsNumberType(field.GoType) { + field.DictType = 3 // 默认系统状态ID + return + } +} + +// setDefaultList 设置默认列表 +func setDefaultList(field *sysin.GenCodesColumnListModel) { + field.IsList = true + switch field.GoType { + case GoTypeIntSlice, GoTypeInt64Slice, GoTypeUint64Slice, GoTypeBytes, GoTypeJson: + field.IsList = false + return + } + + if field.Length >= 500 { + field.IsList = false + return + } + + if df, ok := defaultListSwitch[field.Name]; ok { + field.IsList = df + } +} + +// setDefaultExport 设置默认导出 +func setDefaultExport(field *sysin.GenCodesColumnListModel) { + field.IsExport = true + switch field.GoType { + case GoTypeIntSlice, GoTypeInt64Slice, GoTypeUint64Slice, GoTypeBytes, GoTypeJson: + field.IsExport = false + return + } + + if field.Length >= 500 { + field.IsExport = false + return + } + + if df, ok := defaultExportSwitch[field.Name]; ok { + field.IsExport = df + } +} + +// setDefaultQuery 设置默认查询 +func setDefaultQuery(field *sysin.GenCodesColumnListModel) { + field.IsQuery = false + + if IsIndexPK(field.Index) { + field.IsQuery = true + return + } + + if gstr.HasSuffix(field.GoName, "Status") && IsNumberType(field.GoType) { + field.IsQuery = true + return + } + + if field.GoName == "CreatedAt" { + field.IsQuery = true + return + } + + if df, ok := defaultQuerySwitch[field.Name]; ok { + field.IsQuery = df + } +} + +// setDefaultQueryWhere 设置默认查询条件 +func setDefaultQueryWhere(field *sysin.GenCodesColumnListModel) { + field.QueryWhere = WhereModeEq + + if field.GoName == "CreatedAt" { + field.QueryWhere = WhereModeBetween + return + } + + if field.Length >= 500 { + field.QueryWhere = WhereModeLikeAll + return + } + + if df, ok := defaultWhereModeMap[field.GoType]; ok { + field.QueryWhere = df + } +} + +// setDefaultValue 设置默认value +func setDefaultValue(field *sysin.GenCodesColumnListModel) { + var value interface{} + if field.DefaultValue == nil { + switch field.GoType { + case GoTypeString, GoTypeBytes, GoTypeDate, GoTypeDatetime, GoTypeTime, GoTypeGTime: + value = "" + case GoTypeIntSlice, GoTypeInt64Slice, GoTypeUint64Slice, GoTypeJson: + value = nil + case GoTypeInt, GoTypeUint, GoTypeInt64, GoTypeUint64: + value = 0 + case GoTypeBool: + value = false + } + } else { + value = consts.ConvType(field.DefaultValue, field.GoType) + } + + // 时间类型不做默认值处理 + if field.GoType == GoTypeGTime { + value = "" + } + + field.DefaultValue = value +} diff --git a/server/internal/library/hggen/views/column_map.go b/server/internal/library/hggen/views/column_map.go new file mode 100644 index 0000000..1cbdfda --- /dev/null +++ b/server/internal/library/hggen/views/column_map.go @@ -0,0 +1,343 @@ +// Package views +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package views + +import ( + "github.com/gogf/gf/v2/text/gstr" + "hotgo/internal/model/input/sysin" + "hotgo/utility/validate" +) + +// 字段映射关系 + +// go类型 +const ( + GoTypeString = "string" + GoTypeDate = "date" + GoTypeDatetime = "datetime" + GoTypeInt = "int" + GoTypeUint = "uint" + GoTypeInt64 = "int64" + GoTypeUint64 = "uint64" + GoTypeIntSlice = "[]int" + GoTypeInt64Slice = "[]int64" + GoTypeUint64Slice = "[]uint64" + GoTypeFloat32 = "float32" + GoTypeFloat64 = "float64" + GoTypeBytes = "[]byte" + GoTypeBool = "bool" + GoTypeTime = "time.Time" + GoTypeGTime = "*gtime.Time" + GoTypeJson = "*gjson.Json" +) + +var GoTypeNameMap = map[string]string{ + GoTypeString: GoTypeString, + GoTypeDate: GoTypeDate, + GoTypeDatetime: GoTypeDatetime, + GoTypeInt: GoTypeInt, + GoTypeUint: GoTypeUint, + GoTypeInt64: GoTypeInt64, + GoTypeUint64: GoTypeUint64, + GoTypeIntSlice: GoTypeIntSlice, + GoTypeInt64Slice: GoTypeInt64Slice, + GoTypeUint64Slice: GoTypeUint64Slice, + GoTypeFloat32: GoTypeFloat32, + GoTypeFloat64: GoTypeFloat64, + GoTypeBytes: GoTypeBytes, + GoTypeBool: GoTypeBool, + GoTypeTime: GoTypeTime, + GoTypeGTime: GoTypeGTime, + GoTypeJson: GoTypeJson, +} + +// ts类型 +const ( + TsTypeString = "string" + TsTypeNumber = "number" + TsTypeBoolean = "boolean" + TsTypeArray = "array" + TsTypeTuple = "tuple" + TsTypeAny = "any" +) + +var TsTypeNameMap = map[string]string{ + TsTypeString: TsTypeString, + TsTypeNumber: TsTypeNumber, + TsTypeBoolean: TsTypeBoolean, + TsTypeArray: TsTypeArray, + TsTypeTuple: TsTypeTuple, + TsTypeAny: TsTypeAny, +} + +// ShiftMap Go -> Ts 类型转换 +var ShiftMap = map[string]string{ + GoTypeString: TsTypeString, + GoTypeDate: TsTypeString, + GoTypeDatetime: TsTypeString, + GoTypeInt: TsTypeNumber, + GoTypeUint: TsTypeNumber, + GoTypeInt64: TsTypeNumber, + GoTypeUint64: TsTypeNumber, + GoTypeIntSlice: TsTypeArray, + GoTypeInt64Slice: TsTypeArray, + GoTypeUint64Slice: TsTypeArray, + GoTypeFloat32: TsTypeNumber, + GoTypeFloat64: TsTypeNumber, + GoTypeBytes: TsTypeString, + GoTypeBool: TsTypeBoolean, + GoTypeTime: TsTypeString, + GoTypeGTime: TsTypeString, + GoTypeJson: TsTypeAny, +} + +// 表单组件 +const ( + FormModeInput = "Input" // 文本输入 + FormModeInputNumber = "InputNumber" // 数字输入 + FormModeInputTextarea = "InputTextarea" // 文本域 + FormModeInputEditor = "InputEditor" // 富文本 + FormModeInputYaml = "InputYaml" // YAML配置 + FormModeInputDynamic = "InputDynamic" // 动态键值对 + FormModeDate = "Date" // 日期选择(Y-M-D) + FormModeDateRange = "DateRange" // 日期范围选择 + FormModeTime = "Time" // 时间选择(Y-M-D H:i:s) + FormModeTimeRange = "TimeRange" // 时间范围选择 + FormModeRadio = "Radio" // 单选按钮 + FormModeCheckbox = "Checkbox" // 复选按钮 + FormModeSelect = "Select" // 单选下拉框 + FormModeSelectMultiple = "SelectMultiple" // 多选下拉框 + FormModeTreeSelect = "TreeSelect" // 树型选择 + FormModeCascader = "Cascader" // 级联选择 + FormModeUploadImage = "UploadImage" // 单图上传 + FormModeUploadImages = "UploadImages" // 多图上传 + FormModeUploadFile = "UploadFile" // 单文件上传 + FormModeUploadFiles = "UploadFiles" // 多文件上传 + FormModeSwitch = "Switch" // 开关 + FormModeRate = "Rate" // 评分 + FormModeCitySelector = "CitySelector" // 省市区选择 + FormModePidTreeSelect = "PidTreeSelect" // 树型上级选择,树表生成专用 +) + +var FormModes = []string{ + FormModeInput, FormModeInputNumber, FormModeInputTextarea, FormModeInputEditor, FormModeInputYaml, FormModeInputDynamic, + FormModeDate, FormModeDateRange, FormModeTime, FormModeTimeRange, + FormModeRadio, FormModeCheckbox, FormModeSelect, FormModeSelectMultiple, FormModeTreeSelect, FormModeCascader, + FormModeUploadImage, FormModeUploadImages, FormModeUploadFile, FormModeUploadFiles, + FormModeSwitch, + FormModeRate, + FormModeCitySelector, +} + +var FormModeMap = map[string]string{ + FormModeInput: "文本输入", + FormModeInputNumber: "数字输入", + FormModeInputTextarea: "文本域", + FormModeInputEditor: "富文本", + FormModeInputYaml: "YAML配置", + FormModeInputDynamic: "动态键值对", + FormModeDate: "日期选择(Y-M-D)", + FormModeDateRange: "日期范围选择", + FormModeTime: "时间选择(Y-M-D H:i:s)", + FormModeTimeRange: "时间范围选择", + FormModeRadio: "单选按钮", + FormModeCheckbox: "复选按钮", + FormModeSelect: "单选下拉框", + FormModeSelectMultiple: "多选下拉框", + FormModeTreeSelect: "树型选择", + FormModeCascader: "级联选择", + FormModeUploadImage: "单图上传", + FormModeUploadImages: "多图上传", + FormModeUploadFile: "单文件上传", + FormModeUploadFiles: "多文件上传", + FormModeSwitch: "开关", + FormModeRate: "评分", + FormModeCitySelector: "省市区选择", +} + +// 表单验证 +const ( + FormRoleNone = "none" + FormRoleIp = "ip" + FormRolePercentage = "percentage" + FormRoleTel = "tel" + FormRolePhone = "phone" + FormRoleQq = "qq" + FormRoleEmail = "email" + FormRoleIdCard = "idCard" + FormRoleNum = "num" + FormRoleBankCard = "bankCard" + FormRoleWeibo = "weibo" + FormRoleUserName = "userName" + FormRoleAccount = "account" + FormRolePassword = "password" + FormRoleAmount = "amount" + FormRoleYaml = "yaml" +) + +var FormRoleMap = map[string]string{ + FormRoleNone: "不验证", + FormRoleIp: "Ipv4或Ipv6", + FormRolePercentage: "0-100百分比", + FormRoleTel: "固话格式", + FormRolePhone: "手机号", + FormRoleQq: "QQ号码", + FormRoleEmail: "邮箱", + FormRoleIdCard: "身份证", + FormRoleNum: "非零正整数", + FormRoleBankCard: "银行卡", + FormRoleWeibo: "微博号", + FormRoleUserName: "用户名", + FormRoleAccount: "账号", + FormRolePassword: "密码", + FormRoleAmount: "金额", + FormRoleYaml: "YAML格式", +} + +// 查询条件 +const ( + WhereModeEq = "=" // = + WhereModeNeq = "!=" // != + WhereModeGt = ">" // > + WhereModeGte = ">=" // >= + WhereModeLt = "<" // < + WhereModeLte = "<=" // <= + WhereModeIn = "IN" // IN (...) + WhereModeNotIn = "NOT IN" // NOT IN (...) + WhereModeBetween = "BETWEEN" // BETWEEN + WhereModeNotBetween = "NOT BETWEEN" // NOT BETWEEN + WhereModeLike = "LIKE" // LIKE + WhereModeLikeAll = "LIKE %...%" // LIKE %...% + WhereModeNotLike = "NOT LIKE" // NOT LIKE + WhereModeJsonContains = "JSON_CONTAINS(doc, val)" // JSON_CONTAINS(json_doc, val[, path]) // 判断是否包含某个json值 +) + +var WhereModes = []string{WhereModeEq, + WhereModeNeq, WhereModeGt, WhereModeGte, WhereModeLt, WhereModeLte, + WhereModeIn, WhereModeNotIn, + WhereModeBetween, WhereModeNotBetween, + WhereModeLike, WhereModeLikeAll, WhereModeNotLike, + WhereModeJsonContains, +} + +// 表格列的排序方式 +const ( + TableAlignLeft = "left" + TableAlignRight = "right" + TableAlignCenter = "center" +) + +var TableAligns = []string{TableAlignLeft, TableAlignRight, TableAlignCenter} + +var TableAlignMap = map[string]string{ + TableAlignLeft: "居左", + TableAlignRight: "居右", + TableAlignCenter: "居中", +} + +// IsNumberType 是否是数字类型 +func IsNumberType(goType string) bool { + switch goType { + case GoTypeInt, GoTypeUint, GoTypeInt64, GoTypeUint64: + return true + case GoTypeFloat32, GoTypeFloat64: + return true + } + return false +} + +// IsSelectFormMode 是否是选择器组件 +func IsSelectFormMode(formMode string) bool { + switch formMode { + case FormModeRadio, FormModeCheckbox, FormModeSelect, FormModeSelectMultiple, FormModeCitySelector, FormModeTreeSelect, FormModeCascader: + return true + } + return false +} + +func HasColumn(fields []*sysin.GenCodesColumnListModel, column string) bool { + for _, field := range fields { + if field.Name == column { + return true + } + } + return false +} + +func HasColumnWithFormMode(fields []*sysin.GenCodesColumnListModel, formMode string) bool { + for _, field := range fields { + if field.FormMode == formMode { + return true + } + } + return false +} + +func HasMaxSort(fields []*sysin.GenCodesColumnListModel) bool { + return HasColumn(fields, "sort") +} + +func HasStatus(headOps []string, fields []*sysin.GenCodesColumnListModel) bool { + if !gstr.InArray(headOps, "status") { + return false + } + return HasColumn(fields, "status") +} + +func HasSwitch(fields []*sysin.GenCodesColumnListModel) bool { + return HasColumnWithFormMode(fields, FormModeSwitch) +} + +func HasHookMemberSummary(fields []*sysin.GenCodesColumnListModel) bool { + for _, field := range fields { + if IsMemberSummaryField(field.Name) { + if field.IsList { + return true + } + } + } + return false +} + +func HasQueryMemberSummary(fields []*sysin.GenCodesColumnListModel) bool { + for _, field := range fields { + if IsMemberSummaryField(field.Name) { + if field.IsQuery { + return true + } + } + } + return false +} + +func IsMemberSummaryField(name string) bool { + switch name { + case "created_by", "updated_by", "deleted_by": + return true + } + return false +} + +// ReviseFields 校正字段值,兼容版本升级前的老数据格式 +func ReviseFields(fields []*sysin.GenCodesColumnListModel) []*sysin.GenCodesColumnListModel { + for _, field := range fields { + if !validate.InSlice(TableAligns, field.Align) { + field.Align = TableAlignLeft + } + + if field.Width < 1 { + field.Width = -1 + } + if field.Width > 2000 { + field.Width = 2000 + } + + if field.FormGridSpan < 1 { + field.FormGridSpan = 1 + } + } + return fields +} diff --git a/server/internal/library/hggen/views/curd.go b/server/internal/library/hggen/views/curd.go new file mode 100644 index 0000000..c0e31b8 --- /dev/null +++ b/server/internal/library/hggen/views/curd.go @@ -0,0 +1,1009 @@ +// Package views +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package views + +import ( + "context" + "hotgo/internal/consts" + "hotgo/internal/dao" + "hotgo/internal/library/hggen/internal/cmd/gendao" + "hotgo/internal/library/hgorm" + "hotgo/internal/model" + "hotgo/internal/model/input/sysin" + "hotgo/internal/service" + "hotgo/utility/convert" + "hotgo/utility/file" + "hotgo/utility/tree" + "runtime" + "strings" + + "github.com/gogf/gf/v2/container/gvar" + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/gtime" + "github.com/gogf/gf/v2/os/gview" + "github.com/gogf/gf/v2/text/gstr" +) + +var Curd = gCurd{} + +type gCurd struct{} + +type CurdStep struct { + HasMaxSort bool // 最大排序 + HasAdd bool // 表单添加 + HasBatchDel bool // 批量删除 + HasExport bool // 表格导出 + HasNotFilterAuth bool // 不过滤认证权限 + HasEdit bool // 表单编辑 + HasDel bool // 删除 + HasView bool // 查看详情 + HasStatus bool // 修改状态 + HasSwitch bool // 数值开关 + HasCheck bool // 勾选列 + HasMenu bool // 菜单权限 + IsTreeTable bool // 树型列表 + IsOptionTreeTable bool // 选项式树型列表 + HasRules bool // 表单验证规则 + HasRulesValidator bool // 表单验证器 + HasSearchForm bool // 列表搜索 + HasDict bool // 字典 + HasFuncDict bool // 注册方法字典 + HasQueryMemberSummary bool // 查询用户摘要 + HasHookMemberSummary bool // hook用户摘要 + ImportModel ImportModel // 公用导包 - model.ts + ActionColumnWidth int64 // 列表操作栏宽度 + IsAddon bool // 是否是插件 +} + +// ImportModel 导包 - model.ts +type ImportModel struct { + NaiveUI []string + UtilsIs []string + UtilsUrl []string + UtilsDate []string + UtilsValidate []string + UtilsHotGo []string + UtilsIndex []string +} + +type CurdOptionsJoin struct { + Uuid string `json:"uuid"` + LinkTable string `json:"linkTable"` + Alias string `json:"alias"` + LinkMode int `json:"linkMode"` + Field string `json:"field"` + MasterField string `json:"masterField"` + DaoName string `json:"daoName"` + Columns []*sysin.GenCodesColumnListModel `json:"columns"` +} + +type CurdOptionsMenu struct { + Icon string `json:"icon"` + Pid int `json:"pid"` + Sort int `json:"sort"` +} + +type OptionsTree struct { + TitleColumn string `json:"titleColumn"` + StyleType int `json:"styleType"` + TitleField *sysin.GenCodesColumnListModel +} + +// PresetStep 预设生成流程参数 +type PresetStep struct { + FormGridCols int `json:"formGridCols" dc:"表单显示的栅格数量"` +} + +type CurdOptions struct { + AutoOps []string `json:"autoOps"` + ColumnOps []string `json:"columnOps"` + HeadOps []string `json:"headOps"` + Join []*CurdOptionsJoin `json:"join"` + Menu *CurdOptionsMenu `json:"menu"` + Tree *OptionsTree `json:"tree"` + TemplateGroup string `json:"templateGroup"` + ApiPrefix string `json:"apiPrefix"` + ImportWebApi string `json:"importWebApi"` + FuncDict *FuncDict `json:"funcDict"` + PresetStep *PresetStep `json:"presetStep"` + Step *CurdStep // 转换后的流程控制条件 + DictOps CurdOptionsDict // 字典选项 + dictMap g.Map // 字典选项 -> 字段映射关系 +} + +type FuncDict struct { + ValueColumn string // 选项值 + LabelColumn string // 选项名称 + Value *sysin.GenCodesColumnListModel + Label *sysin.GenCodesColumnListModel +} + +type CurdOptionsDict struct { + Has bool + Types []string + Schemas []*OptionsSchemasField +} + +type OptionsSchemasField struct { + Field string + Type string +} + +type CurdPreviewInput struct { + In *sysin.GenCodesPreviewInp // 提交参数 + DaoConfig gendao.CGenDaoInput // 生成dao配置 + Config *model.GenerateConfig // 生成配置 + view *gview.View // 视图模板 + content *sysin.GenCodesPreviewModel // 页面代码 + masterFields []*sysin.GenCodesColumnListModel // 主表字段属性 + pk *sysin.GenCodesColumnListModel // 主键属性 + options *CurdOptions // 生成选项 +} + +type CurdBuildEvent map[string]func(ctx context.Context) (err error) + +type CurdBuildInput struct { + PreviewIn *CurdPreviewInput // 预览参数 + BeforeEvent CurdBuildEvent // 前置事件 + AfterEvent CurdBuildEvent // 后置事件 +} + +func (l *gCurd) initInput(ctx context.Context, in *CurdPreviewInput) (err error) { + in.content = new(sysin.GenCodesPreviewModel) + in.content.Views = make(map[string]*sysin.GenFile) + + // 初始化生成选项 + if err = initOptions(in); err != nil { + return err + } + + // 初始化表字段配置 + if err = initTableField(ctx, in); err != nil { + return err + } + + // 初始化树表 + if err = initTableTree(in); err != nil { + return err + } + + initStep(in) + + // 初始化方法字典 + if err = initFuncDict(in); err != nil { + return err + } + + // 初始化生成模板 + if err = initTemplate(in); err != nil { + return err + } + return +} + +func initOptions(in *CurdPreviewInput) (err error) { + if err = in.In.Options.Scan(&in.options); err != nil { + return + } + in.options.dictMap = make(g.Map) + return +} + +func initTemplate(in *CurdPreviewInput) (err error) { + if len(in.Config.Application.Crud.Templates)-1 < in.In.GenTemplate { + return gerror.New("没有找到生成模板的配置,请检查!") + } + + // api前缀 + apiPrefix := gstr.LcFirst(in.In.VarName) + if in.Config.Application.Crud.Templates[in.In.GenTemplate].IsAddon { + apiPrefix = in.In.AddonName + "/" + apiPrefix + } + in.options.ApiPrefix = apiPrefix + + if err = checkCurdPath(in.Config.Application.Crud.Templates[in.In.GenTemplate], in.In.AddonName); err != nil { + return + } + in.options.TemplateGroup = in.Config.Application.Crud.Templates[in.In.GenTemplate].MasterPackage + return +} + +func initFuncDict(in *CurdPreviewInput) (err error) { + if !in.options.Step.HasFuncDict || in.options.FuncDict == nil { + return + } + + if len(in.options.FuncDict.LabelColumn) == 0 || len(in.options.FuncDict.ValueColumn) == 0 { + err = gerror.New("生成字典选项必须设置选项值和选项名称") + return err + } + + for _, field := range in.masterFields { + if field.Name == in.options.FuncDict.ValueColumn { + in.options.FuncDict.Value = field + } + + if field.Name == in.options.FuncDict.LabelColumn { + in.options.FuncDict.Label = field + } + } + return +} + +func initTableField(ctx context.Context, in *CurdPreviewInput) (err error) { + // 加载主表配置 + if err = in.In.MasterColumns.Scan(&in.masterFields); err != nil { + return + } + + if len(in.masterFields) == 0 { + if in.masterFields, err = DoTableColumns(ctx, &sysin.GenCodesColumnListInp{Name: in.In.DbName, Table: in.In.TableName}, in.DaoConfig); err != nil { + return + } + } + + // 主键属性 + in.pk = getPkField(in) + if in.pk == nil { + return gerror.New("initInput no primary key is set in the table!") + } + + in.masterFields = ReviseFields(in.masterFields) + + // 检查表命名 + var names = []string{in.In.DaoName} + for _, v := range in.options.Join { + v.Columns = ReviseFields(v.Columns) + names = append(names, v.DaoName) + } + if err = CheckIllegalName("数据库表名", names...); err != nil { + return + } + + if err = CheckIllegalName("实体命名", in.In.VarName); err != nil { + return + } + return +} + +func initTableTree(in *CurdPreviewInput) (err error) { + // 检查树表字段 + if in.In.GenType == consts.GenCodesTypeTree { + if err = CheckTreeTableFields(in.masterFields); err != nil { + return err + } + + // 解析选项树名称字段 + has := false + for _, field := range in.masterFields { + if in.options.Tree.TitleColumn == field.Name { + in.options.Tree.TitleField = field + has = true + break + } + } + if !has { + err = gerror.New("请选择一个有效的树名称字段") + return + } + } + return err +} + +func initStep(in *CurdPreviewInput) { + in.options.Step = new(CurdStep) + in.options.Step.HasMaxSort = HasMaxSort(in.masterFields) + in.options.Step.HasAdd = gstr.InArray(in.options.HeadOps, "add") + in.options.Step.HasBatchDel = gstr.InArray(in.options.HeadOps, "batchDel") && gstr.InArray(in.options.ColumnOps, "check") + in.options.Step.HasExport = gstr.InArray(in.options.HeadOps, "export") + in.options.Step.HasNotFilterAuth = gstr.InArray(in.options.ColumnOps, "notFilterAuth") + in.options.Step.HasEdit = gstr.InArray(in.options.ColumnOps, "edit") + in.options.Step.HasDel = gstr.InArray(in.options.ColumnOps, "del") + in.options.Step.HasView = gstr.InArray(in.options.ColumnOps, "view") + in.options.Step.HasStatus = HasStatus(in.options.ColumnOps, in.masterFields) + in.options.Step.HasSwitch = HasSwitch(in.masterFields) + in.options.Step.HasCheck = gstr.InArray(in.options.ColumnOps, "check") + in.options.Step.HasMenu = gstr.InArray(in.options.AutoOps, "genMenuPermissions") + in.options.Step.HasQueryMemberSummary = HasQueryMemberSummary(in.masterFields) + in.options.Step.HasHookMemberSummary = HasHookMemberSummary(in.masterFields) + in.options.Step.IsTreeTable = in.In.GenType == consts.GenCodesTypeTree + if in.options.Step.IsTreeTable { + in.options.Step.IsOptionTreeTable = in.options.Tree.StyleType == consts.GenCodesTreeStyleTypeOption + } + in.options.Step.HasFuncDict = gstr.InArray(in.options.AutoOps, "genFuncDict") + in.options.Step.IsAddon = in.Config.Application.Crud.Templates[in.In.GenTemplate].IsAddon + if in.options.PresetStep.FormGridCols < 1 { + in.options.PresetStep.FormGridCols = 1 + } +} + +// getPkField 获取主键 +func getPkField(in *CurdPreviewInput) *sysin.GenCodesColumnListModel { + if len(in.masterFields) == 0 { + panic("getPkField masterFields uninitialized.") + } + for _, field := range in.masterFields { + if IsIndexPK(field.Index) { + return field + } + } + return nil +} + +func (l *gCurd) loadView(ctx context.Context, in *CurdPreviewInput) (err error) { + temp := in.Config.Application.Crud.Templates[in.In.GenTemplate] + view := gview.New() + err = view.SetConfigWithMap(g.Map{ + "Paths": temp.TemplatePath, + "Delimiters": in.Config.Delimiters, + }) + if err != nil { + return + } + + now := gtime.Now() + view.BindFuncMap(g.Map{ + "NowYear": now.Year, // 当前年 + "ToLower": strings.ToLower, // 全部小写 + "LcFirst": gstr.LcFirst, // 首字母小写 + "UcFirst": gstr.UcFirst, // 首字母大写 + "ToTSArray": ToTSArray, // 转为ts数组格式 + }) + + if err = l.generateWebModelDictOptions(ctx, in); err != nil { + return + } + + modName, err := GetModName(ctx) + if err != nil { + return + } + importApi := gstr.Replace(temp.ApiPath, "./", modName+"/") + "/" + strings.ToLower(in.In.VarName) + importInput := gstr.Replace(temp.InputPath, "./", modName+"/") + importController := gstr.Replace(temp.ControllerPath, "./", modName+"/") + importService := "hotgo/internal/service" + if temp.IsAddon { + importService = "hotgo/addons/" + in.In.AddonName + "/service" + } + + in.options.ImportWebApi = "@/api/" + gstr.LcFirst(in.In.VarName) + if temp.IsAddon { + in.options.ImportWebApi = "@/api/addons/" + in.In.AddonName + "/" + gstr.LcFirst(in.In.VarName) + } + + componentPrefix := gstr.LcFirst(in.In.VarName) + if temp.IsAddon { + componentPrefix = "addons/" + in.In.AddonName + "/" + componentPrefix + } + + nowTime := now.Format("Y-m-d H:i:s") + view.Assigns(gview.Params{ + "templateGroup": in.options.TemplateGroup, // 生成模板分组名称 + "servFunName": l.parseServFunName(in.options.TemplateGroup, in.In.VarName), // 业务服务名称 + "nowTime": nowTime, // 当前时间 + "version": runtime.Version(), // GO 版本 + "hgVersion": consts.VersionApp, // HG 版本 + "varName": in.In.VarName, // 实体名称 + "tableComment": in.In.TableComment, // 对外名称 + "daoName": in.In.DaoName, // ORM模型 + "masterFields": in.masterFields, // 主表字段 + "pk": in.pk, // 主键属性 + "options": in.options, // 提交选项 + "dictOptions": in.options.DictOps, // web字典选项 + "importApi": importApi, // 导入goApi包 + "importInput": importInput, // 导入input包 + "importController": importController, // 导入控制器包 + "importService": importService, // 导入业务服务 + "importWebApi": in.options.ImportWebApi, // 导入webApi + "apiPrefix": in.options.ApiPrefix, // api前缀 + "componentPrefix": componentPrefix, // vue子组件前缀 + "in": in.In, // 在模版中使用`in`参数,如:插件目录名称 + }) + + in.view = view + return +} + +func (l *gCurd) DoBuild(ctx context.Context, in *CurdBuildInput) (err error) { + st := gtime.Now() + preview, err := l.DoPreview(ctx, in.PreviewIn) + if err != nil { + return + } + + db, err := g.DB().Open(ParseDBConfigNodeLink(&gdb.ConfigNode{Link: in.PreviewIn.DaoConfig.Link})) + if err != nil { + err = gerror.Newf("连接数据库失败,请检查配置文件[server/hack/config.yaml]数据库配置是否正确!err:%v", err.Error()) + return err + } + + defer db.Close() + if err = db.Ping(); err != nil { + err = gerror.Newf("数据库访问异常,请检查配置文件[server/hack/config.yaml]数据库配置是否正确!err:%v", err.Error()) + return + } + + // 前置操作 + if len(in.BeforeEvent) > 0 { + for name, f := range in.BeforeEvent { + if gstr.InArray(in.PreviewIn.options.AutoOps, name) { + if err = f(ctx); err != nil { + return gerror.Newf("in doBuild operation beforeEvent to '%s' failed:%v", name, err) + } + } + } + } + + // 处理sql文件 + handleSqlFile := func(vi *sysin.GenFile) (err error) { + // 无需生成 + if vi.Meth != consts.GenCodesBuildMethCreate && vi.Meth != consts.GenCodesBuildMethCover { + return + } + + if err = gfile.PutContents(vi.Path, strings.TrimSpace(vi.Content)); err != nil { + return gerror.Newf("writing content to '%s' failed: %v", vi.Path, err) + } + + // 导入失败,将sql文件删除 + if err = ImportSql(ctx, vi.Path); err != nil { + _ = gfile.RemoveAll(vi.Path) + } + return + } + + // 将sql文件提取出来优先处理 + // sql执行过程出错是高概率事件,后期在执行前要进行预效验,尽量减少在执行过程中出错的可能性 + sqlGenFile, ok := preview.Views["source.sql"] + if ok { + delete(preview.Views, "source.sql") + if err = handleSqlFile(sqlGenFile); err != nil { + return + } + } + + for _, vi := range preview.Views { + // 无需生成 + if vi.Meth != consts.GenCodesBuildMethCreate && vi.Meth != consts.GenCodesBuildMethCover { + continue + } + + if err = gfile.PutContents(vi.Path, strings.TrimSpace(vi.Content)); err != nil { + return gerror.Newf("writing content to '%s' failed: %v", vi.Path, err) + } + } + + // 后置操作 + if len(in.AfterEvent) > 0 { + for name, f := range in.AfterEvent { + if gstr.InArray(in.PreviewIn.options.AutoOps, name) { + if err = f(ctx); err != nil { + return gerror.Newf("in doBuild operation afterEvent to '%s' failed:%v", name, err) + } + } + } + } + g.Log().Debugf(ctx, "generate code operation completed, %vms", gtime.Now().Sub(st).Milliseconds()) + return +} + +func (l *gCurd) DoPreview(ctx context.Context, in *CurdPreviewInput) (res *sysin.GenCodesPreviewModel, err error) { + // 初始化 + if err = l.initInput(ctx, in); err != nil { + return nil, err + } + + // 加载模板 + if err = l.loadView(ctx, in); err != nil { + return nil, err + } + + if err = l.generateApiContent(ctx, in); err != nil { + return nil, err + } + + if err = l.generateInputContent(ctx, in); err != nil { + return nil, err + } + + if err = l.generateControllerContent(ctx, in); err != nil { + return nil, err + } + + if err = l.generateLogicContent(ctx, in); err != nil { + return nil, err + } + + if err = l.generateRouterContent(ctx, in); err != nil { + return nil, err + } + + if err = l.generateWebApiContent(ctx, in); err != nil { + return nil, err + } + + if err = l.generateWebModelContent(ctx, in); err != nil { + return nil, err + } + + if err = l.generateWebIndexContent(ctx, in); err != nil { + return nil, err + } + + if err = l.generateWebEditContent(ctx, in); err != nil { + return nil, err + } + + if err = l.generateWebViewContent(ctx, in); err != nil { + return nil, err + } + + if err = l.generateSqlContent(ctx, in); err != nil { + return nil, err + } + + in.content.Config = in.Config + res = in.content + return +} + +func (l *gCurd) generateApiContent(ctx context.Context, in *CurdPreviewInput) (err error) { + var ( + name = "api.go" + tplData = g.Map{} + genFile = new(sysin.GenFile) + ) + genFile.Content, err = in.view.Parse(ctx, name+".template", tplData) + if err != nil { + return err + } + + genFile.Content, err = FormatGo(ctx, name, genFile.Content) + if err != nil { + return err + } + + genFile.Path = file.MergeAbs(in.Config.Application.Crud.Templates[in.In.GenTemplate].ApiPath, strings.ToLower(in.In.VarName), strings.ToLower(in.In.VarName)+".go") + genFile.Meth = consts.GenCodesBuildMethCreate + if gfile.Exists(genFile.Path) { + genFile.Meth = consts.GenCodesBuildMethSkip + } + + genFile.Required = true + + if genFile.Meth == consts.GenCodesBuildMethSkip && gstr.InArray(in.options.AutoOps, "forcedCover") { + genFile.Meth = consts.GenCodesBuildMethCover + } + + in.content.Views[name] = genFile + return +} + +func (l *gCurd) generateInputContent(ctx context.Context, in *CurdPreviewInput) (err error) { + var ( + name = "input.go" + genFile = new(sysin.GenFile) + ) + + tplData, err := l.inputTplData(ctx, in) + if err != nil { + return err + } + + genFile.Content, err = in.view.Parse(ctx, name+".template", tplData) + if err != nil { + return err + } + + genFile.Content, err = FormatGo(ctx, name, genFile.Content) + if err != nil { + return err + } + + genFile.Path = file.MergeAbs(in.Config.Application.Crud.Templates[in.In.GenTemplate].InputPath, convert.CamelCaseToUnderline(in.In.VarName)+".go") + genFile.Meth = consts.GenCodesBuildMethCreate + if gfile.Exists(genFile.Path) { + genFile.Meth = consts.GenCodesBuildMethSkip + } + genFile.Required = true + + if genFile.Meth == consts.GenCodesBuildMethSkip && gstr.InArray(in.options.AutoOps, "forcedCover") { + genFile.Meth = consts.GenCodesBuildMethCover + } + + in.content.Views[name] = genFile + return +} + +func (l *gCurd) generateControllerContent(ctx context.Context, in *CurdPreviewInput) (err error) { + var ( + name = "controller.go" + tplData = g.Map{} + genFile = new(sysin.GenFile) + ) + + genFile.Content, err = in.view.Parse(ctx, name+".template", tplData) + if err != nil { + return err + } + + genFile.Content, err = FormatGo(ctx, name, genFile.Content) + if err != nil { + return err + } + + genFile.Path = file.MergeAbs(in.Config.Application.Crud.Templates[in.In.GenTemplate].ControllerPath, convert.CamelCaseToUnderline(in.In.VarName)+".go") + genFile.Meth = consts.GenCodesBuildMethCreate + if gfile.Exists(genFile.Path) { + genFile.Meth = consts.GenCodesBuildMethSkip + } + genFile.Required = true + + if genFile.Meth == consts.GenCodesBuildMethSkip && gstr.InArray(in.options.AutoOps, "forcedCover") { + genFile.Meth = consts.GenCodesBuildMethCover + } + + in.content.Views[name] = genFile + return +} + +func (l *gCurd) generateLogicContent(ctx context.Context, in *CurdPreviewInput) (err error) { + var ( + name = "logic.go" + genFile = new(sysin.GenFile) + ) + + tplData, err := l.logicTplData(ctx, in) + if err != nil { + return err + } + + genFile.Content, err = in.view.Parse(ctx, name+".template", tplData) + if err != nil { + return err + } + + genFile.Content, err = FormatGo(ctx, name, genFile.Content) + if err != nil { + return err + } + + genFile.Path = file.MergeAbs(in.Config.Application.Crud.Templates[in.In.GenTemplate].LogicPath, convert.CamelCaseToUnderline(in.In.VarName)+".go") + genFile.Meth = consts.GenCodesBuildMethCreate + if gfile.Exists(genFile.Path) { + genFile.Meth = consts.GenCodesBuildMethSkip + } + genFile.Required = true + + if genFile.Meth == consts.GenCodesBuildMethSkip && gstr.InArray(in.options.AutoOps, "forcedCover") { + genFile.Meth = consts.GenCodesBuildMethCover + } + + in.content.Views[name] = genFile + return +} + +func (l *gCurd) generateRouterContent(ctx context.Context, in *CurdPreviewInput) (err error) { + var ( + name = "router.go" + tplData = g.Map{} + genFile = new(sysin.GenFile) + ) + genFile.Content, err = in.view.Parse(ctx, name+".template", tplData) + if err != nil { + return err + } + + genFile.Content, err = FormatGo(ctx, name, genFile.Content) + if err != nil { + return err + } + + genFile.Path = file.MergeAbs(in.Config.Application.Crud.Templates[in.In.GenTemplate].RouterPath, convert.CamelCaseToUnderline(in.In.VarName)+".go") + genFile.Meth = consts.GenCodesBuildMethCreate + if gfile.Exists(genFile.Path) { + genFile.Meth = consts.GenCodesBuildMethSkip + } + genFile.Required = true + + if genFile.Meth == consts.GenCodesBuildMethSkip && gstr.InArray(in.options.AutoOps, "forcedCover") { + genFile.Meth = consts.GenCodesBuildMethCover + } + + in.content.Views[name] = genFile + return +} + +func (l *gCurd) generateWebApiContent(ctx context.Context, in *CurdPreviewInput) (err error) { + var ( + name = "web.api.ts" + tplData = g.Map{} + genFile = new(sysin.GenFile) + ) + genFile.Content, err = in.view.Parse(ctx, name+".template", tplData) + if err != nil { + return err + } + + genFile.Content = FormatTs(genFile.Content) + + genFile.Path = file.MergeAbs(in.Config.Application.Crud.Templates[in.In.GenTemplate].WebApiPath, gstr.LcFirst(in.In.VarName), "index.ts") + genFile.Meth = consts.GenCodesBuildMethCreate + if gfile.Exists(genFile.Path) { + genFile.Meth = consts.GenCodesBuildMethSkip + } + genFile.Required = true + + if genFile.Meth == consts.GenCodesBuildMethSkip && gstr.InArray(in.options.AutoOps, "forcedCover") { + genFile.Meth = consts.GenCodesBuildMethCover + } + + in.content.Views[name] = genFile + return +} + +func (l *gCurd) generateWebModelContent(ctx context.Context, in *CurdPreviewInput) (err error) { + var ( + name = "web.model.ts" + genFile = new(sysin.GenFile) + ) + + tplData, err := l.webModelTplData(ctx, in) + if err != nil { + return + } + + genFile.Content, err = in.view.Parse(ctx, name+".template", tplData) + if err != nil { + return + } + + genFile.Content = FormatTs(genFile.Content) + + genFile.Path = file.MergeAbs(in.Config.Application.Crud.Templates[in.In.GenTemplate].WebViewsPath, gstr.LcFirst(in.In.VarName), "model.ts") + genFile.Meth = consts.GenCodesBuildMethCreate + if gfile.Exists(genFile.Path) { + genFile.Meth = consts.GenCodesBuildMethSkip + } + genFile.Required = true + + if genFile.Meth == consts.GenCodesBuildMethSkip && gstr.InArray(in.options.AutoOps, "forcedCover") { + genFile.Meth = consts.GenCodesBuildMethCover + } + in.content.Views[name] = genFile + return +} + +func (l *gCurd) generateWebIndexContent(ctx context.Context, in *CurdPreviewInput) (err error) { + var ( + name = "web.index.vue" + genFile = new(sysin.GenFile) + ) + + tplData, err := l.webIndexTplData(ctx, in) + if err != nil { + return err + } + + genFile.Content, err = in.view.Parse(ctx, name+".template", tplData) + if err != nil { + return err + } + + genFile.Content = FormatVue(genFile.Content) + + genFile.Path = file.MergeAbs(in.Config.Application.Crud.Templates[in.In.GenTemplate].WebViewsPath, gstr.LcFirst(in.In.VarName), "index.vue") + genFile.Meth = consts.GenCodesBuildMethCreate + if gfile.Exists(genFile.Path) { + genFile.Meth = consts.GenCodesBuildMethSkip + } + genFile.Required = true + + if genFile.Meth == consts.GenCodesBuildMethSkip && gstr.InArray(in.options.AutoOps, "forcedCover") { + genFile.Meth = consts.GenCodesBuildMethCover + } + in.content.Views[name] = genFile + return +} + +func (l *gCurd) generateWebEditContent(ctx context.Context, in *CurdPreviewInput) (err error) { + var ( + name = "web.edit.vue" + genFile = new(sysin.GenFile) + ) + + tplData, err := l.webEditTplData(ctx, in) + if err != nil { + return err + } + + genFile.Content, err = in.view.Parse(ctx, name+".template", tplData) + if err != nil { + return err + } + + genFile.Content = FormatVue(genFile.Content) + + genFile.Path = file.MergeAbs(in.Config.Application.Crud.Templates[in.In.GenTemplate].WebViewsPath, gstr.LcFirst(in.In.VarName), "edit.vue") + genFile.Meth = consts.GenCodesBuildMethCreate + if gfile.Exists(genFile.Path) { + genFile.Meth = consts.GenCodesBuildMethSkip + } + genFile.Required = true + if genFile.Meth == consts.GenCodesBuildMethSkip && gstr.InArray(in.options.AutoOps, "forcedCover") { + genFile.Meth = consts.GenCodesBuildMethCover + } + + if !in.options.Step.HasEdit { + genFile.Meth = consts.GenCodesBuildIgnore + genFile.Required = false + } + + in.content.Views[name] = genFile + return +} + +func (l *gCurd) generateWebViewContent(ctx context.Context, in *CurdPreviewInput) (err error) { + var ( + name = "web.view.vue" + genFile = new(sysin.GenFile) + ) + + tplData, err := l.webViewTplData(ctx, in) + if err != nil { + return err + } + + genFile.Content, err = in.view.Parse(ctx, name+".template", tplData) + if err != nil { + return err + } + + genFile.Content = FormatVue(genFile.Content) + + genFile.Path = file.MergeAbs(in.Config.Application.Crud.Templates[in.In.GenTemplate].WebViewsPath, gstr.LcFirst(in.In.VarName), "view.vue") + genFile.Meth = consts.GenCodesBuildMethCreate + if gfile.Exists(genFile.Path) { + genFile.Meth = consts.GenCodesBuildMethSkip + } + genFile.Required = true + + if genFile.Meth == consts.GenCodesBuildMethSkip && gstr.InArray(in.options.AutoOps, "forcedCover") { + genFile.Meth = consts.GenCodesBuildMethCover + } + + if !in.options.Step.HasView { + genFile.Meth = consts.GenCodesBuildIgnore + genFile.Required = false + } + + in.content.Views[name] = genFile + return +} + +func (l *gCurd) generateSqlContent(ctx context.Context, in *CurdPreviewInput) (err error) { + var ( + name = "source.sql" + config = g.DB("default").GetConfig() + tplData = g.Map{ + "dbName": config.Name, + "menuTable": config.Prefix + "admin_menu", + "mainComponent": "LAYOUT", + } + genFile = new(sysin.GenFile) + templateName = "source.sql.template" + ) + + // 根据数据库类型选择不同的模板 + if config.Type == consts.DBPgsql { + templateName = "source_pgsql.sql.template" + } + + menus, err := service.AdminMenu().GetFastList(ctx) + if err != nil { + return err + } + + tplData["dirPid"], tplData["dirLevel"], tplData["dirTree"], err = hgorm.AutoUpdateTree(ctx, &dao.AdminMenu, 0, int64(in.options.Menu.Pid)) + if err != nil { + return err + } + + tplData["listLevel"] = tplData["dirLevel"].(int) + 1 + tplData["btnLevel"] = tplData["dirLevel"].(int) + 2 + tplData["sortLevel"] = tplData["dirLevel"].(int) + 3 + + pageRedirect := "" + if in.options.Menu.Pid > 0 { + tplData["mainComponent"] = "ParentLayout" + menu, ok := menus[int64(in.options.Menu.Pid)] + if !ok { + err = gerror.New("选择的上级菜单不存在") + return + } + for _, id := range tree.GetIds(menu.Tree) { + if v, ok2 := menus[id]; ok2 { + if !gstr.HasSuffix(pageRedirect, "/") && !gstr.HasPrefix(v.Path, "/") { + pageRedirect += "/" + } + pageRedirect += v.Path + } + } + + if !gstr.HasSuffix(pageRedirect, "/") && !gstr.HasPrefix(menu.Path, "/") { + pageRedirect += "/" + } + pageRedirect += menu.Path + } + pageRedirect += "/" + gstr.LcFirst(in.In.VarName) + "/index" + tplData["pageRedirect"] = pageRedirect + + genFile.Path = file.MergeAbs(in.Config.Application.Crud.Templates[in.In.GenTemplate].SqlPath, convert.CamelCaseToUnderline(in.In.VarName)+"_menu.sql") + genFile.Meth = consts.GenCodesBuildMethCreate + if gfile.Exists(genFile.Path) { + genFile.Meth = consts.GenCodesBuildMethSkip + } + genFile.Required = true + + if !in.options.Step.HasMenu { + genFile.Meth = consts.GenCodesBuildIgnore + genFile.Required = false + } + + // 需要生成时,检查菜单命名是否存在 + if genFile.Meth == consts.GenCodesBuildMethCreate { + menuNamePrefix := gstr.LcFirst(in.In.VarName) + menuNames := []string{menuNamePrefix, menuNamePrefix + "Index"} + if in.options.Step.HasEdit { + menuNames = append(menuNames, menuNamePrefix+"Edit") + menuNames = append(menuNames, menuNamePrefix+"View") + } + if in.options.Step.HasView { + menuNames = append(menuNames, menuNamePrefix+"View") + } + if in.options.Step.HasMaxSort { + menuNames = append(menuNames, menuNamePrefix+"MaxSort") + } + if in.options.Step.HasDel { + menuNames = append(menuNames, menuNamePrefix+"Delete") + } + if in.options.Step.HasStatus { + menuNames = append(menuNames, menuNamePrefix+"Status") + } + if in.options.Step.HasSwitch { + menuNames = append(menuNames, menuNamePrefix+"Switch") + } + if in.options.Step.HasExport { + menuNames = append(menuNames, menuNamePrefix+"Export") + } + if in.options.Step.IsTreeTable { + menuNames = append(menuNames, menuNamePrefix+"TreeOption") + } + + menuNames = convert.UniqueSlice(menuNames) + hasMenus, err := service.AdminMenu().Model(ctx).Fields(dao.AdminMenu.Columns().Name).WhereIn(dao.AdminMenu.Columns().Name, menuNames).Array() + if err != nil { + return err + } + + if len(hasMenus) > 0 { + err = gerror.Newf("要生成的菜单中有已存在的路由别名,请检查并删除:%v", strings.Join(gvar.New(hasMenus).Strings(), `、`)) + return err + } + } + + tplData["generatePath"] = genFile.Path + genFile.Content, err = in.view.Parse(ctx, templateName, tplData) + if err != nil { + return err + } + + in.content.Views[name] = genFile + return +} diff --git a/server/internal/library/hggen/views/curd_generate_input.go b/server/internal/library/hggen/views/curd_generate_input.go new file mode 100644 index 0000000..8b4669c --- /dev/null +++ b/server/internal/library/hggen/views/curd_generate_input.go @@ -0,0 +1,354 @@ +// Package views +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package views + +import ( + "bytes" + "context" + "fmt" + "github.com/olekukonko/tablewriter/renderer" + "github.com/olekukonko/tablewriter/tw" + "strings" + + "hotgo/internal/dao" + "hotgo/internal/model/input/sysin" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/text/gstr" + "github.com/olekukonko/tablewriter" +) + +const ( + InputTypeListInp = 1 // 列表输入 + InputTypeListModel = 2 // 列表输出 + InputTypeExportModel = 3 // 列表导出 + InputTypeEditInpValidator = 4 // 添加&编辑验证器 + InputTypeUpdateFields = 5 // 编辑修改过滤字段 + InputTypeInsertFields = 6 // 编辑新增过滤字段 + InputTypeTreeOptionFields = 7 // 关系树查询字段 + EditInpValidatorGenerally = "if err := g.Validator().Rules(\"%s\").Data(in.%s).Messages(\"%s\").Run(ctx); err != nil {\n\t\treturn err.Current()\n\t}\n" + EditInpValidatorYaml = "if err := validate.ValidateYAML(in.%s); err != nil {\n\t\treturn gerror.Newf(\"%s必须为有效的YAML格式: %%s\", err.Error())\n\t}\n" +) + +var ( + // tablewriter Options + twRenderer = tablewriter.WithRenderer(renderer.NewBlueprint(tw.Rendition{ + Borders: tw.Border{Top: tw.Off, Bottom: tw.Off, Left: tw.Off, Right: tw.Off}, + Settings: tw.Settings{ + Separators: tw.Separators{BetweenRows: tw.Off, BetweenColumns: tw.Off}, + }, + Symbols: tw.NewSymbols(tw.StyleASCII), + })) + twConfig = tablewriter.WithConfig(tablewriter.Config{ + Row: tw.CellConfig{ + Formatting: tw.CellFormatting{AutoWrap: tw.WrapNone}, + }, + }) +) + +func (l *gCurd) inputTplData(ctx context.Context, in *CurdPreviewInput) (data g.Map, err error) { + data = make(g.Map) + data["listInpColumns"] = l.generateInputListColumns(ctx, in, InputTypeListInp) + data["listModelColumns"] = l.generateInputListColumns(ctx, in, InputTypeListModel) + data["exportModelColumns"] = l.generateInputListColumns(ctx, in, InputTypeExportModel) + data["editInpValidator"] = l.generateInputListColumns(ctx, in, InputTypeEditInpValidator) + data["updateFieldsColumns"] = l.generateInputListColumns(ctx, in, InputTypeUpdateFields) + data["insertFieldsColumns"] = l.generateInputListColumns(ctx, in, InputTypeInsertFields) + data["viewModelColumns"] = l.generateInputViewColumns(ctx, in) + if in.options.Step.IsTreeTable { + data["treeOptionFields"] = l.generateInputListColumns(ctx, in, InputTypeTreeOptionFields) + } + return +} + +func (l *gCurd) generateInputViewColumns(ctx context.Context, in *CurdPreviewInput) string { + buffer := bytes.NewBuffer(nil) + + index := 0 + array := make([][]string, 1000) + // 主表 + for _, field := range in.masterFields { + // 查询用户摘要 + if field.IsList && in.options.Step.HasHookMemberSummary && IsMemberSummaryField(field.Name) { + tagKey := "`" + descriptionTag := gstr.Replace(formatComment(field.Dc)+"摘要信息", `"`, `\"`) + result := []string{" #" + field.GoName + "Summa"} + result = append(result, " #*hook.MemberSumma") + result = append(result, " #"+fmt.Sprintf(tagKey+`json:"%s"`, field.TsName+"Summa")) + result = append(result, " #"+fmt.Sprintf(`dc:"%s"`+tagKey, descriptionTag)) + array[index] = result + index++ + } + } + + table := tablewriter.NewTable(buffer, twRenderer, twConfig) + table.Bulk(array) + table.Render() + stContent := buffer.String() + // Let's do this hack of table writer for indent! + stContent = gstr.Replace(stContent, " #", "") + stContent = gstr.Replace(stContent, "` ", "`") + stContent = gstr.Replace(stContent, "``", "") + stContent = removeEndWrap(stContent) + + buffer.Reset() + buffer.WriteString(stContent) + return "\tentity." + in.In.DaoName + "\n" + buffer.String() +} + +func (l *gCurd) generateInputListColumns(ctx context.Context, in *CurdPreviewInput, inputType int) string { + buffer := bytes.NewBuffer(nil) + index := 0 + array := make([][]string, 1000) + // 主表 + for _, field := range in.masterFields { + row := l.generateStructFieldDefinition(in, field, inputType, true) + if row == nil { + continue + } + array[index] = row + index++ + + switch inputType { + case InputTypeListModel: + // 查询用户摘要 + if field.IsList && in.options.Step.HasHookMemberSummary && IsMemberSummaryField(field.Name) { + tagKey := "`" + descriptionTag := gstr.Replace(formatComment(field.Dc)+"摘要信息", `"`, `\"`) + result := []string{" #" + field.GoName + "Summa"} + result = append(result, " #*hook.MemberSumma") + result = append(result, " #"+fmt.Sprintf(tagKey+`json:"%s"`, field.TsName+"Summa")) + result = append(result, " #"+fmt.Sprintf(`dc:"%s"`+tagKey, descriptionTag)) + array[index] = result + index++ + } + } + } + + // 关联表 + if len(in.options.Join) > 0 { + for _, v := range in.options.Join { + if !isEffectiveJoin(v) { + continue + } + for _, field := range v.Columns { + row := l.generateStructFieldDefinition(in, field, inputType, false) + if row != nil { + array[index] = row + index++ + } + } + } + } + + table := tablewriter.NewTable(buffer, twRenderer, twConfig) + table.Bulk(array) + table.Render() + stContent := buffer.String() + // Let's do this hack of table writer for indent! + stContent = gstr.Replace(stContent, " #", "") + stContent = gstr.Replace(stContent, "` ", "`") + stContent = gstr.Replace(stContent, "``", "") + stContent = removeEndWrap(stContent) + + buffer.Reset() + buffer.WriteString(stContent) + return buffer.String() +} + +// generateStructFieldForModel generates and returns the attribute definition for specified field. +func (l *gCurd) generateStructFieldDefinition(in *CurdPreviewInput, field *sysin.GenCodesColumnListModel, inputType int, isMaster bool) []string { + var ( + tagKey = "`" + result = []string{" #" + field.GoName} + descriptionTag = gstr.Replace(formatComment(field.Dc), `"`, `\"`) + ) + + addResult := func() []string { + result = append(result, " #"+field.GoType) + result = append(result, " #"+fmt.Sprintf(tagKey+`json:"%s"`, field.TsName)) + result = append(result, " #"+fmt.Sprintf(`dc:"%s"`+tagKey, descriptionTag)) + return result + } + + isUpdateOrInsertInputFields := func() bool { + if !isMaster { + return field.IsEdit + } + + if field.IsEdit { + return true + } + + // 树表内部维护字段 + if in.options.Step.IsTreeTable && gstr.InArray(defaultTreeFields, field.Name) { + return true + } + + // 修改人 + if inputType == InputTypeUpdateFields && field.GoName == "UpdatedBy" { + return true + } + + // 创建人 + if inputType == InputTypeInsertFields && field.GoName == "CreatedBy" { + return true + } + return false + } + + isQuery := false + + switch inputType { + case InputTypeListInp: + if in.options.Step.IsTreeTable && IsPidName(field.Name) { + isQuery = true + field.QueryWhere = WhereModeEq + } + if !field.IsQuery && !isQuery { + return nil + } + + if field.QueryWhere == WhereModeBetween { + result = append(result, " #[]"+field.GoType) + } else { + // 查询用户摘要时,固定接收字符串类型 + if field.IsQuery && in.options.Step.HasQueryMemberSummary && IsMemberSummaryField(field.Name) { + result = append(result, " #string") + } else { + result = append(result, " #"+field.GoType) + } + } + result = append(result, " #"+fmt.Sprintf(tagKey+`json:"%s"`, field.TsName)) + result = append(result, " #"+fmt.Sprintf(`dc:"%s"`+tagKey, descriptionTag)) + + case InputTypeListModel: + // 主表的主键 + if IsIndexPK(field.Index) && isMaster { + addResult() + // 树表的pid字段 + } else if in.options.Step.IsTreeTable && IsPidName(field.Name) { + addResult() + } else if field.IsList { + addResult() + } else { + return nil + } + case InputTypeExportModel: + if !field.IsExport { + return nil + } + addResult() + case InputTypeEditInpValidator: + if !field.IsEdit { + return nil + } + if !field.Required && (field.FormRole == "none" || field.FormRole == "") { + return nil + } + rule := "// 验证" + field.Dc + "\n" + if field.Required && (field.FormRole == FormRoleNone || field.FormRole == "") { + field.FormRole = "required" + } + if err, s := makeValidatorFunc(field); err != nil { + return nil + } else { + rule += s + } + result = []string{rule} + case InputTypeUpdateFields: + if !isUpdateOrInsertInputFields() { + return nil + } + addResult() + case InputTypeInsertFields: + if !isUpdateOrInsertInputFields() { + return nil + } + addResult() + case InputTypeTreeOptionFields: + if IsIndexPK(field.Index) { + return addResult() + } + if IsPidName(field.Name) { + return addResult() + } + if in.options.Tree.TitleColumn == field.Name { + return addResult() + } + return nil + default: + panic("inputType is invalid") + } + return result +} + +func makeValidatorFunc(field *sysin.GenCodesColumnListModel) (err error, rule string) { + if field.FormRole == "required" { + rule = fmt.Sprintf(EditInpValidatorGenerally, "required", field.GoName, field.Dc+"不能为空") + } else if field.FormRole == FormRoleIp { + rule = fmt.Sprintf(EditInpValidatorGenerally, "ip", field.GoName, field.Dc+"必须为IPV4或IPV6") + } else if field.FormRole == FormRolePercentage { + rule = fmt.Sprintf(EditInpValidatorGenerally, "min:0|max:100", field.GoName, field.Dc+"必须0-100之间") + } else if field.FormRole == FormRoleTel { + rule = fmt.Sprintf(EditInpValidatorGenerally, "telephone", field.GoName, field.Dc+"不是座机号码") + } else if field.FormRole == FormRolePhone { + rule = fmt.Sprintf(EditInpValidatorGenerally, "phone", field.GoName, field.Dc+"不是手机号码") + } else if field.FormRole == FormRoleQq { + rule = fmt.Sprintf(EditInpValidatorGenerally, "qq", field.GoName, field.Dc+"不是QQ号码") + } else if field.FormRole == FormRoleEmail { + rule = fmt.Sprintf(EditInpValidatorGenerally, "email", field.GoName, field.Dc+"不是邮箱地址") + } else if field.FormRole == FormRoleIdCard { + rule = fmt.Sprintf(EditInpValidatorGenerally, "resident-id", field.GoName, field.Dc+"不是身份证号码") + } else if field.FormRole == FormRoleNum { + rule = fmt.Sprintf(EditInpValidatorGenerally, "min:1", field.GoName, field.Dc+"必须大于0") + } else if field.FormRole == FormRoleBankCard { + rule = fmt.Sprintf(EditInpValidatorGenerally, "bank-card", field.GoName, field.Dc+"不是银行卡号") + } else if field.FormRole == FormRoleWeibo { + rule = fmt.Sprintf(EditInpValidatorGenerally, "regex:^[0-9a-zA-Z\\u4e00-\\u9fa5_-]*$", field.GoName, field.Dc+"不是微博号") + } else if field.FormRole == FormRoleUserName { + rule = fmt.Sprintf(EditInpValidatorGenerally, "regex:^[0-9a-zA-Z]{6,16}$", field.GoName, field.Dc+"必须为6-16位由字母和数字组成") + } else if field.FormRole == FormRoleAccount { + rule = fmt.Sprintf(EditInpValidatorGenerally, "regex:^[\\w_\\d]{6,16}$", field.GoName, field.Dc+"必须为6-16位由字母、数字或下划线组成") + } else if field.FormRole == FormRolePassword { + rule = fmt.Sprintf(EditInpValidatorGenerally, "regex:^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,18}$", field.GoName, field.Dc+"必须包含6-18为字母和数字") + } else if field.FormRole == FormRoleAmount { + rule = fmt.Sprintf(EditInpValidatorGenerally, "regex:(^[0-9]{1,10}$)|(^[0-9]{1,10}[\\\\.]{1}[0-9]{1,2}$)", field.GoName, field.Dc+"最多允许输入10位整数及2位小数") + } else if field.FormRole == FormRoleYaml { + rule = fmt.Sprintf(EditInpValidatorYaml, field.GoName, field.Dc) + } else { + err = gerror.New("not support") + } + + // 生成验证字典 + if field.DictType > 0 { + var ( + ctx = context.Background() + valueType gdb.Value + resultValue gdb.Result + ) + valueType, err = dao.SysDictType.Ctx(ctx).Fields(dao.SysDictType.Columns().Type).Where(dao.SysDictType.Columns().Id, field.DictType).Value() + if err != nil { + return + } + resultValue, err = dao.SysDictData.Ctx(context.Background()).Fields(dao.SysDictData.Columns().Value).Where(dao.SysDictData.Columns().Type, valueType.String()).All() + if err != nil { + return + } + if resultValue.Len() > 0 { + names := make([]string, 0) + for _, item := range resultValue { + names = append(names, item["value"].String()) + } + dictRule := "in:" + strings.Join(names, ",") + rule += fmt.Sprintf(EditInpValidatorGenerally, dictRule, field.GoName, field.Dc+"值不正确") + err = nil + } + } + return +} diff --git a/server/internal/library/hggen/views/curd_generate_logic.go b/server/internal/library/hggen/views/curd_generate_logic.go new file mode 100644 index 0000000..78bc993 --- /dev/null +++ b/server/internal/library/hggen/views/curd_generate_logic.go @@ -0,0 +1,318 @@ +// Package views +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package views + +import ( + "bytes" + "context" + "fmt" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/text/gstr" + "hotgo/internal/consts" + "hotgo/internal/model/input/sysin" +) + +const ( + LogicWhereComments = "\n\t// 查询%s\n" + LogicWhereNoSupport = "\t// TODO 暂不支持生成[ %s ]查询方式,请自行补充此处代码!" + LogicEditUpdate = "\tif _, err = s.Model(ctx%s).\n\t\t\tFields(%sin.%sUpdateFields{}).\n\t\t\tWherePri(in.%s).Data(in).Update(); err != nil {\n\t\t\terr = gerror.Wrap(err, \"修改%s失败,请稍后重试!\")\n\t\t}\n\t\treturn" + LogicEditInsert = "\tif _, err = s.Model(ctx, &handler.Option{FilterAuth: false}).\n\t\tFields(%sin.%sInsertFields{}).\n\t\tData(in).OmitEmptyData().Insert(); err != nil {\n\t\terr = gerror.Wrap(err, \"新增%s失败,请稍后重试!\")\n\t}" + LogicEditUnique = "\t// 验证'%s'唯一\n\tif err = hgorm.IsUnique(ctx, &dao.%s, g.Map{dao.%s.Columns().%s: in.%s}, \"%s已存在\", in.%s); err != nil {\n\t\treturn\n\t}\n" + LogicSwitchUpdate = "g.Map{\n\t\tin.Key: in.Value,\n%s}" + LogicStatusUpdate = "g.Map{\n\t\tdao.%s.Columns().Status: in.Status,\n%s}" + LogicDeletedUpdate = "g.Map{\n%s}" +) + +func (l *gCurd) logicTplData(ctx context.Context, in *CurdPreviewInput) (data g.Map, err error) { + data = make(g.Map) + data["listWhere"] = l.generateLogicListWhere(ctx, in) + data["listJoin"] = l.generateLogicListJoin(ctx, in) + data["listFields"] = l.generateLogicListFields(ctx, in) + data["listOrder"] = l.generateLogicListOrder(ctx, in) + data["edit"] = l.generateLogicEdit(ctx, in) + data["switchFields"] = l.generateLogicSwitchFields(ctx, in) + data["switchUpdate"] = l.generateLogicSwitchUpdate(ctx, in) + data["statusUpdate"] = l.generateLogicStatusUpdate(ctx, in) + data["deletedUpdate"] = l.generateLogicDeletedUpdate(ctx, in) + return +} + +func (l *gCurd) generateLogicDeletedUpdate(ctx context.Context, in *CurdPreviewInput) string { + isDestroy := false + var update string + for _, field := range in.masterFields { + if field.GoName == "DeletedBy" { + update += "\t\tdao." + in.In.DaoName + ".Columns().DeletedBy: contexts.GetUserId(ctx),\n" + isDestroy = true + } + if field.GoName == "DeletedAt" { + update += "\t\tdao." + in.In.DaoName + ".Columns().DeletedAt: gtime.Now(),\n" + } + } + + if !isDestroy { + return "" + } + + update += "\t" + return fmt.Sprintf(LogicDeletedUpdate, update) +} + +func (l *gCurd) generateLogicStatusUpdate(ctx context.Context, in *CurdPreviewInput) string { + var update string + for _, field := range in.masterFields { + if field.GoName == "UpdatedBy" { + update += "\t\tdao." + in.In.DaoName + ".Columns().UpdatedBy: contexts.GetUserId(ctx),\n" + } + } + + update += "\t" + return fmt.Sprintf(LogicStatusUpdate, in.In.DaoName, update) +} + +func (l *gCurd) generateLogicSwitchUpdate(ctx context.Context, in *CurdPreviewInput) string { + var update string + for _, field := range in.masterFields { + if field.GoName == "UpdatedBy" { + update += "\t\tdao." + in.In.DaoName + ".Columns().UpdatedBy: contexts.GetUserId(ctx),\n" + } + } + + update += "\t" + return fmt.Sprintf(LogicSwitchUpdate, update) +} + +func (l *gCurd) generateLogicSwitchFields(ctx context.Context, in *CurdPreviewInput) string { + buffer := bytes.NewBuffer(nil) + if in.options.Step.HasSwitch { + for _, field := range in.masterFields { + if field.FormMode == "Switch" { + buffer.WriteString("\t\tdao." + in.In.DaoName + ".Columns()." + field.GoName + ",\n") + } + } + } + return buffer.String() +} + +func (l *gCurd) generateLogicEdit(ctx context.Context, in *CurdPreviewInput) g.Map { + var ( + data = make(g.Map) + updateBuffer = bytes.NewBuffer(nil) + insertBuffer = bytes.NewBuffer(nil) + uniqueBuffer = bytes.NewBuffer(nil) + validationBuffer = bytes.NewBuffer(nil) + ) + + for _, field := range in.masterFields { + if field.GoName == "UpdatedBy" { + updateBuffer.WriteString("\t\tin.UpdatedBy = contexts.GetUserId(ctx)\n") + } + + if field.GoName == "CreatedBy" { + insertBuffer.WriteString("\tin.CreatedBy = contexts.GetUserId(ctx)\n") + } + + if field.Unique { + uniqueBuffer.WriteString(fmt.Sprintf(LogicEditUnique, field.GoName, in.In.DaoName, in.In.DaoName, field.GoName, field.GoName, field.Dc, in.pk.GoName)) + } + + // 添加 YAML 格式验证 + if field.IsEdit && field.FormRole == FormRoleYaml { + validationBuffer.WriteString(fmt.Sprintf(EditInpValidatorYaml, field.GoName, field.Dc)) + } + } + + notFilterAuth := "" + if gstr.InArray(in.options.ColumnOps, "notFilterAuth") { + notFilterAuth = ", &handler.Option{FilterAuth: false}" + } + + updateBuffer.WriteString(fmt.Sprintf(LogicEditUpdate, notFilterAuth, in.options.TemplateGroup, in.In.VarName, in.pk.GoName, in.In.TableComment)) + insertBuffer.WriteString(fmt.Sprintf(LogicEditInsert, in.options.TemplateGroup, in.In.VarName, in.In.TableComment)) + + data["update"] = updateBuffer.String() + data["insert"] = insertBuffer.String() + data["unique"] = uniqueBuffer.String() + data["validation"] = validationBuffer.String() + return data +} + +func (l *gCurd) generateLogicListOrder(ctx context.Context, in *CurdPreviewInput) string { + statement := "" + if hasEffectiveJoins(in.options.Join) { + statement = "dao." + in.In.DaoName + ".Table() + \".\" +" + } + buffer := bytes.NewBuffer(nil) + if in.options.Step.HasMaxSort { + buffer.WriteString("OrderAsc(" + statement + "dao." + in.In.DaoName + ".Columns().Sort).") + } + buffer.WriteString("OrderDesc(" + statement + "dao." + in.In.DaoName + ".Columns()." + in.pk.GoName + ")") + return buffer.String() +} + +func (l *gCurd) generateLogicListJoin(ctx context.Context, in *CurdPreviewInput) (link string) { + connector := `"="` + if hasEffectiveJoins(in.options.Join) { + linkBuffer := bytes.NewBuffer(nil) + for _, join := range in.options.Join { + if isEffectiveJoin(join) { + linkBuffer.WriteString("\tmod = mod." + consts.GenCodesJoinLinkMap[join.LinkMode] + "OnFields(dao." + join.DaoName + ".Table(), dao." + in.In.DaoName + ".Columns()." + gstr.CaseCamel(join.MasterField) + "," + connector + ", dao." + join.DaoName + ".Columns()." + gstr.CaseCamel(join.Field) + ")\n") + } + } + link = linkBuffer.String() + } + return +} + +func (l *gCurd) generateLogicListFields(ctx context.Context, in *CurdPreviewInput) (fields string) { + selectBuffer := bytes.NewBuffer(nil) + if hasEffectiveJoins(in.options.Join) { + selectBuffer.WriteString("mod = mod.FieldsPrefix(dao." + in.In.DaoName + ".Table(), " + in.options.TemplateGroup + "in." + in.In.VarName + "ListModel{})\n") + for _, join := range in.options.Join { + if isEffectiveJoin(join) { + selectBuffer.WriteString("mod = mod.Fields(hgorm.JoinFields(ctx, " + in.options.TemplateGroup + "in." + in.In.VarName + "ListModel{}, &dao." + join.DaoName + ", \"" + join.Alias + "\"))\n") + } + } + fields = selectBuffer.String() + } else { + fields = fmt.Sprintf("mod = mod.Fields(%sin.%sListModel{})", in.options.TemplateGroup, in.In.VarName) + } + return +} + +func (l *gCurd) generateLogicListWhere(ctx context.Context, in *CurdPreviewInput) string { + buffer := bytes.NewBuffer(nil) + + // 主表 + l.generateLogicListWhereEach(buffer, in, in.masterFields, in.In.DaoName, "") + + // 关联表 + if hasEffectiveJoins(in.options.Join) { + for _, v := range in.options.Join { + if isEffectiveJoin(v) { + l.generateLogicListWhereEach(buffer, in, v.Columns, v.DaoName, v.Alias) + } + } + } + return buffer.String() +} + +func (l *gCurd) generateLogicListWhereEach(buffer *bytes.Buffer, in *CurdPreviewInput, fields []*sysin.GenCodesColumnListModel, daoName string, alias string) { + isLink := false + if alias != "" { + alias = `"` + alias + `."+` + isLink = true + } + + tablePrefix := "" + wherePrefix := "Where" + if isLink { + wherePrefix = "WherePrefix" + tablePrefix = "dao." + daoName + ".Table(), " + } + + for _, field := range fields { + isQuery := false + // 树表查询上级 + if in.options.Step.IsTreeTable && IsPidName(field.Name) { + isQuery = true + field.QueryWhere = WhereModeEq + } + + if (!field.IsQuery && !isQuery) || field.QueryWhere == "" { + continue + } + + buffer.WriteString(fmt.Sprintf(LogicWhereComments, field.Dc)) + + var ( + linkMode string + whereTag string + columnName string + ) + + // 查询用户摘要 + if field.IsQuery && in.options.Step.HasQueryMemberSummary && IsMemberSummaryField(field.Name) { + servicePackName := "service" + if in.options.Step.IsAddon { + servicePackName = "isc" + } + buffer.WriteString(fmt.Sprintf("if in.%v != \"\" {\n\t\t\t\tids, err := %v.AdminMember().GetIdsByKeyword(ctx, in.%v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, 0, err\n\t\t\t\t}\n\t\t\t\tmod = mod.WhereIn(dao.%v.Columns().%v, ids)\n\t\t\t}\n", field.GoName, servicePackName, field.GoName, in.In.DaoName, field.GoName)) + continue + } + + if IsNumberType(field.GoType) { + linkMode = `in.` + field.GoName + ` > 0` + } else if field.GoType == GoTypeBool { + linkMode = `true` // bool 类型始终可以查询 + } else if field.GoType == GoTypeGTime { + linkMode = `in.` + field.GoName + ` != nil` + } else if field.GoType == GoTypeJson { + linkMode = `!in.` + field.GoName + `.IsNil()` + } else { + linkMode = `in.` + field.GoName + ` != ""` + } + + if field.QueryWhere == WhereModeBetween || field.QueryWhere == WhereModeNotBetween { + linkMode = `len(in.` + field.GoName + `) == 2` + } + + // 如果是关联表重新转换字段 + columnName = field.GoName + if isLink { + columnName = gstr.CaseCamel(field.Name) + } + + switch field.QueryWhere { + case WhereModeEq: + whereTag = "\tif " + linkMode + " {\n\t\tmod = mod." + wherePrefix + "(" + tablePrefix + "dao." + daoName + ".Columns()." + columnName + ", in." + field.GoName + ")\n\t}" + case WhereModeNeq: + whereTag = "\tif " + linkMode + " {\n\t\tmod = mod." + wherePrefix + "Not(" + tablePrefix + "dao." + daoName + ".Columns()." + columnName + ", in." + field.GoName + ")\n\t}" + case WhereModeGt: + whereTag = "\tif " + linkMode + " {\n\t\tmod = mod." + wherePrefix + "GT(" + tablePrefix + "dao." + daoName + ".Columns()." + columnName + ", in." + field.GoName + ")\n\t}" + case WhereModeGte: + whereTag = "\tif " + linkMode + " {\n\t\tmod = mod." + wherePrefix + "GTE(" + tablePrefix + "dao." + daoName + ".Columns()." + columnName + ", in." + field.GoName + ")\n\t}" + case WhereModeLt: + whereTag = "\tif " + linkMode + " {\n\t\tmod = mod." + wherePrefix + "LT(" + tablePrefix + "dao." + daoName + ".Columns()." + columnName + ", in." + field.GoName + ")\n\t}" + case WhereModeLte: + whereTag = "\tif " + linkMode + " {\n\t\tmod = mod." + wherePrefix + "LTE(" + tablePrefix + "dao." + daoName + ".Columns()." + columnName + ", in." + field.GoName + ")\n\t}" + case WhereModeIn: + whereTag = "\tif " + linkMode + " {\n\t\tmod = mod." + wherePrefix + "In(" + tablePrefix + "dao." + daoName + ".Columns()." + columnName + ", in." + field.GoName + ")\n\t}" + case WhereModeNotIn: + whereTag = "\tif " + linkMode + " {\n\t\tmod = mod." + wherePrefix + "NotIn(" + tablePrefix + "dao." + daoName + ".Columns()." + columnName + ", in." + field.GoName + ")\n\t}" + case WhereModeBetween: + whereTag = "\tif " + linkMode + " {\n\t\tmod = mod." + wherePrefix + "Between(" + tablePrefix + "dao." + daoName + ".Columns()." + columnName + ", in." + field.GoName + "[0], in." + field.GoName + "[1])\n\t}" + case WhereModeNotBetween: + whereTag = "\tif " + linkMode + " {\n\t\tmod = mod." + wherePrefix + "NotBetween(" + tablePrefix + "dao." + daoName + ".Columns()." + columnName + ", in." + field.GoName + "[0], in." + field.GoName + "[1])\n\t}" + case WhereModeLike: + fieldValue := "in." + field.GoName + if field.GoType != GoTypeString && field.GoType != GoTypeBytes { + fieldValue = "gconv.String(in." + field.GoName + ")" + } + whereTag = "\tif " + linkMode + " {\n\t\tmod = mod." + wherePrefix + "Like(" + tablePrefix + "dao." + daoName + ".Columns()." + columnName + ", " + fieldValue + ")\n\t}" + case WhereModeLikeAll: + val := `"%"+in.` + field.GoName + `+"%"` + if field.GoType != GoTypeString && field.GoType != GoTypeBytes { + val = `"%"+gconv.String(in.` + field.GoName + `)+"%"` + } + whereTag = "\tif " + linkMode + " {\n\t\tmod = mod." + wherePrefix + "Like(" + tablePrefix + "dao." + daoName + ".Columns()." + columnName + ", " + val + ")\n\t}" + case WhereModeNotLike: + fieldValue := "in." + field.GoName + if field.GoType != GoTypeString && field.GoType != GoTypeBytes { + fieldValue = "gconv.String(in." + field.GoName + ")" + } + whereTag = "\tif " + linkMode + " {\n\t\tmod = mod." + wherePrefix + "NotLike(" + tablePrefix + "dao." + daoName + ".Columns()." + columnName + ", " + fieldValue + ")\n\t}" + case WhereModeJsonContains: + val := tablePrefix + `"JSON_CONTAINS("+dao.` + daoName + `.Columns().` + columnName + `+",?)", in.` + field.GoName + whereTag = "\tif " + linkMode + " {\n\t\tmod = mod." + wherePrefix + "(" + val + ")\n\t}" + + default: + buffer.WriteString(fmt.Sprintf(LogicWhereNoSupport, field.QueryWhere)) + } + + buffer.WriteString(whereTag + "\n") + } +} diff --git a/server/internal/library/hggen/views/curd_generate_web_edit.go b/server/internal/library/hggen/views/curd_generate_web_edit.go new file mode 100644 index 0000000..25aeb10 --- /dev/null +++ b/server/internal/library/hggen/views/curd_generate_web_edit.go @@ -0,0 +1,232 @@ +// Package views +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package views + +import ( + "bytes" + "context" + "fmt" + + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/text/gstr" +) + +func (l *gCurd) webEditTplData(ctx context.Context, in *CurdPreviewInput) (data g.Map, err error) { + data = make(g.Map) + data["formItem"] = l.generateWebEditFormItem(ctx, in) + data["script"] = l.generateWebEditScript(ctx, in) + return +} + +func (l *gCurd) generateWebEditFormItem(ctx context.Context, in *CurdPreviewInput) string { + buffer := bytes.NewBuffer(nil) + for _, field := range in.masterFields { + if !field.IsEdit { + continue + } + + if IsIndexPK(field.Index) { + continue + } + + var ( + defaultComponent = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.Dc, field.TsName) + component string + ) + + if in.options.Step.IsTreeTable && IsPidName(field.Name) { + field.FormMode = FormModePidTreeSelect + } + + switch field.FormMode { + case FormModeInput: + component = defaultComponent + + case FormModeInputNumber: + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.Dc, field.TsName) + + case FormModeInputTextarea: + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.Dc, field.TsName) + + case FormModeInputEditor: + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.TsName, field.TsName) + + case FormModeInputYaml: + component = fmt.Sprintf(" \n handleYamlValidationChange(isValid, '%s')\"\n />\n ", field.Dc, field.TsName, field.TsName, field.TsName, field.Dc, field.TsName) + + case FormModeInputDynamic: + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.TsName) + + case FormModeDate: + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.TsName) + + // case FormModeDateRange: // 必须要有两个字段,后面优化下 + + case FormModeTime: + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.TsName) + + // case FormModeTimeRange: // 必须要有两个字段,后面优化下 + + case FormModeRadio: + component = fmt.Sprintf(" \n \n \n \n ", field.Dc, field.TsName, field.TsName, field.TsName, field.TsName, in.options.dictMap[field.TsName], field.TsName, field.TsName, field.TsName) + + case FormModeCheckbox: + component = fmt.Sprintf(" \n \n \n \n \n \n ", field.Dc, field.TsName, field.TsName, in.options.dictMap[field.TsName]) + + case FormModeSelect: + if in.options.dictMap[field.TsName] != nil { + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.TsName, in.options.dictMap[field.TsName]) + } else { + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.TsName) + } + + case FormModeSelectMultiple: + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.TsName, in.options.dictMap[field.TsName]) + + case FormModeUploadImage: + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.TsName) + + case FormModeUploadImages: + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.TsName) + + case FormModeUploadFile: + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.TsName) + + case FormModeUploadFiles: + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.TsName) + + case FormModeSwitch: + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.TsName) + + case FormModeRate: + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.TsName, field.GoName) + + case FormModeCitySelector: + component = fmt.Sprintf(" \n \n ", field.Dc, field.TsName, field.TsName) + + case FormModePidTreeSelect: + component = fmt.Sprintf(` + + `, field.Dc, in.pk.TsName, in.options.Tree.TitleField.TsName) + + case FormModeTreeSelect: + component = fmt.Sprintf(` + + `, field.Dc, field.TsName, field.Dc, field.TsName) + + case FormModeCascader: + component = fmt.Sprintf(` + + `, field.Dc, field.TsName, field.Dc, field.TsName) + + default: + component = defaultComponent + } + + buffer.WriteString(fmt.Sprintf("\n%v\n \n\n", field.FormGridSpan, component)) + } + return buffer.String() +} + +func (l *gCurd) generateWebEditScript(ctx context.Context, in *CurdPreviewInput) g.Map { + var ( + data = make(g.Map) + importBuffer = bytes.NewBuffer(nil) + setupBuffer = bytes.NewBuffer(nil) + hasYamlField = false + ) + + // 导入字典 + if in.options.DictOps.Has { + importBuffer.WriteString(" import { useDictStore } from '@/store/modules/dict';\n") + } + + // 导入api + var importApiMethod = []string{"Edit", "View"} + if in.options.Step.HasMaxSort { + importApiMethod = append(importApiMethod, "MaxSort") + } + importBuffer.WriteString(" import " + ImportWebMethod(importApiMethod) + " from '" + in.options.ImportWebApi + "';\n") + + // 导入model + var importModelMethod = []string{"State", "newState"} + if in.options.Step.IsTreeTable { + importModelMethod = append(importModelMethod, []string{"treeOption", "loadTreeOption"}...) + } + + if in.options.Step.HasRules { + importModelMethod = append(importModelMethod, "rules") + } + importBuffer.WriteString(" import " + ImportWebMethod(importModelMethod) + " from './model';\n") + + for _, field := range in.masterFields { + if !field.IsEdit { + continue + } + switch field.FormMode { + case FormModeDate, FormModeDateRange, FormModeTime, FormModeTimeRange: + if !gstr.Contains(importBuffer.String(), `import DatePicker`) { + importBuffer.WriteString(" import DatePicker from '@/components/DatePicker/datePicker.vue';\n") + } + case FormModeInputEditor: + if !gstr.Contains(importBuffer.String(), `import Editor`) { + importBuffer.WriteString(" import Editor from '@/components/Editor/editor.vue';\n") + } + case FormModeInputYaml: + if !gstr.Contains(importBuffer.String(), `import YamlEditor`) { + importBuffer.WriteString(" import YamlEditor from '@/components/YamlEditor/index.vue';\n") + } + hasYamlField = true + case FormModeUploadImage, FormModeUploadImages: + if !gstr.Contains(importBuffer.String(), `import UploadImage`) { + importBuffer.WriteString(" import UploadImage from '@/components/Upload/uploadImage.vue';\n") + } + case FormModeUploadFile, FormModeUploadFiles: + if !gstr.Contains(importBuffer.String(), `import UploadFile`) { + importBuffer.WriteString(" import UploadFile from '@/components/Upload/uploadFile.vue';\n") + } + case FormModeRate: + setupBuffer.WriteString(fmt.Sprintf(" function update%s(num) {\n formValue.value.%s = num;\n }\n", field.GoName, field.TsName)) + case FormModeCitySelector: + if !gstr.Contains(importBuffer.String(), `import CitySelector`) { + importBuffer.WriteString(" import CitySelector from '@/components/CitySelector/citySelector.vue';\n") + } + } + } + + // 根据是否有 YAML 字段添加相应的验证逻辑 + if hasYamlField { + setupBuffer.WriteString(" const yamlValidationStates = ref(new Map());\n const isFormValid = computed(() => {\n for (const [fieldName, isValid] of yamlValidationStates.value) {\n if (!isValid) return false;\n }\n return true;\n });\n const handleYamlError = (error) => {\n console.error('YAML 验证错误:', error);\n };\n const handleYamlValid = (content) => {\n console.log('YAML 验证通过:', content);\n };\n const handleYamlValidationChange = (isValid, fieldName) => {\n yamlValidationStates.value.set(fieldName, isValid);\n };\n") + } else { + setupBuffer.WriteString(" const isFormValid = ref(true);\n") + } + + data["import"] = importBuffer.String() + data["setup"] = setupBuffer.String() + return data +} diff --git a/server/internal/library/hggen/views/curd_generate_web_index.go b/server/internal/library/hggen/views/curd_generate_web_index.go new file mode 100644 index 0000000..2193b21 --- /dev/null +++ b/server/internal/library/hggen/views/curd_generate_web_index.go @@ -0,0 +1,167 @@ +// Package views +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package views + +import ( + "bytes" + "context" + + "github.com/gogf/gf/v2/frame/g" +) + +func (l *gCurd) webIndexTplData(ctx context.Context, in *CurdPreviewInput) (g.Map, error) { + var ( + data = make(g.Map) + importBuffer = bytes.NewBuffer(nil) + importVueMethod = []string{"h", "reactive", "ref", "computed"} + importApiMethod = []string{"List"} + importModelMethod = []string{"columns", "schemas", "State"} + importUtilsMethod = []string{"adaTableScrollX"} + importIcons []string + actionWidth int64 = 72 + ) + + // 添加 + if in.options.Step.HasAdd { + importIcons = append(importIcons, "PlusOutlined") + } + + // 编辑 + if in.options.Step.HasEdit { + in.options.Step.ActionColumnWidth += actionWidth + if in.options.Step.IsTreeTable && !in.options.Step.IsOptionTreeTable { + in.options.Step.ActionColumnWidth += actionWidth + } + if in.options.Step.IsOptionTreeTable { + importIcons = append(importIcons, "EditOutlined") + } + } + + // 导出 + if in.options.Step.HasExport { + importIcons = append(importIcons, "ExportOutlined") + importApiMethod = append(importApiMethod, "Export") + } + + // 删除 + if in.options.Step.HasDel { + importApiMethod = append(importApiMethod, "Delete") + in.options.Step.ActionColumnWidth += actionWidth + } + + // 批量删除 + if in.options.Step.HasBatchDel { + importIcons = append(importIcons, "DeleteOutlined") + importApiMethod = append(importApiMethod, "Delete") + } + + // 修改状态 + if in.options.Step.HasStatus { + importApiMethod = append(importApiMethod, "Status") + in.options.Step.ActionColumnWidth += actionWidth + } + + // 更多 + // 查看详情 + if in.options.Step.HasView { + in.options.Step.ActionColumnWidth += actionWidth + } + + // 展开树 + if in.options.Step.IsTreeTable { + importIcons = append(importIcons, "AlignLeftOutlined") + } + + // 存在字典数据选项 + if in.options.DictOps.Has { + importVueMethod = append(importVueMethod, "onMounted") + importModelMethod = append(importModelMethod, "loadOptions") + } + + // 普通树表 + if in.options.Step.IsTreeTable && !in.options.Step.IsOptionTreeTable { + importUtilsMethod = append(importUtilsMethod, "convertListToTree") + } + + // 选项式树表 + if in.options.Step.IsOptionTreeTable { + importVueMethod = append(importVueMethod, []string{"onMounted", "unref"}...) + importIcons = append(importIcons, []string{"FormOutlined", "SearchOutlined"}...) + importApiMethod = append(importApiMethod, "TreeOption") + importUtilsMethod = append(importUtilsMethod, "getTreeKeys") + importModelMethod = append(importModelMethod, []string{"loadTreeOption", "treeOption", "State"}...) + } + + // 操作按钮宽度最小值 + if in.options.Step.ActionColumnWidth > 0 && in.options.Step.ActionColumnWidth < actionWidth*2 { + in.options.Step.ActionColumnWidth = 100 + } + + // 导入基础包 + importBuffer.WriteString(" import { useDialog, useMessage } from 'naive-ui';\n") + importBuffer.WriteString(" import { BasicTable, TableAction } from '@/components/Table';\n") + importBuffer.WriteString(" import { BasicForm, useForm } from '@/components/Form/index';\n") + importBuffer.WriteString(" import { usePermission } from '@/hooks/web/usePermission';\n") + + // 导入字典 + if in.options.DictOps.Has { + importBuffer.WriteString(" import { useDictStore } from '@/store/modules/dict';\n") + } + + // 导入api + importBuffer.WriteString(" import " + ImportWebMethod(importApiMethod) + " from '" + in.options.ImportWebApi + "';\n") + + // 导入icons + if len(importIcons) > 0 { + importBuffer.WriteString(" import " + ImportWebMethod(importIcons) + " from '@vicons/antd';\n") + } + + // 导入model + if in.options.Step.IsTreeTable { + importModelMethod = append(importModelMethod, "newState") + } + importBuffer.WriteString(" import " + ImportWebMethod(importModelMethod) + " from './model';\n") + + // 导入utils + if len(importUtilsMethod) > 0 { + importBuffer.WriteString(" import " + ImportWebMethod(importUtilsMethod) + " from '@/utils/hotgo';\n") + } + + // 导入edit组件 + if in.options.Step.HasEdit { + importBuffer.WriteString(" import Edit from './edit.vue';\n") + } + + // 导入view组件 + if in.options.Step.HasView { + importBuffer.WriteString(" import View from './view.vue';\n") + } + + // 没有需要查询的字段则隐藏搜索表单 + isSearchForm := false + for _, field := range in.masterFields { + if field.IsQuery { + isSearchForm = true + break + } + } + if !isSearchForm { + if len(in.options.Join) > 0 { + LoopOut: + for _, v := range in.options.Join { + for _, column := range v.Columns { + if column.IsQuery { + isSearchForm = true + break LoopOut + } + } + } + } + } + data["isSearchForm"] = isSearchForm + data["import"] = importBuffer.String() + return data, nil +} diff --git a/server/internal/library/hggen/views/curd_generate_web_model.go b/server/internal/library/hggen/views/curd_generate_web_model.go new file mode 100644 index 0000000..5ba4dd1 --- /dev/null +++ b/server/internal/library/hggen/views/curd_generate_web_model.go @@ -0,0 +1,493 @@ +// Package views +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package views + +import ( + "bytes" + "context" + "errors" + "fmt" + "hotgo/internal/dao" + "hotgo/internal/library/dict" + "hotgo/internal/model/input/sysin" + "hotgo/utility/convert" + "strings" + + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/util/gconv" +) + +type StateItem struct { + Name string + DefaultValue interface{} + Dc string + DataType string // 新增字段:存储字段类型信息 +} + +func (l *gCurd) webModelTplData(ctx context.Context, in *CurdPreviewInput) (data g.Map, err error) { + data = make(g.Map) + data["stateItems"] = l.generateWebModelStateItems(ctx, in) + data["rules"] = l.generateWebModelRules(ctx, in) + data["formSchema"] = l.generateWebModelFormSchema(ctx, in) + if data["columns"], err = l.generateWebModelColumns(ctx, in); err != nil { + return nil, err + } + + // 根据表单生成情况,按需导包 + data["import"], data["const"] = l.generateWebModelImport(ctx, in) + return +} + +func (l *gCurd) generateWebModelImport(ctx context.Context, in *CurdPreviewInput) (string, string) { + importBuffer := bytes.NewBuffer(nil) + constBuffer := bytes.NewBuffer(nil) + + // 导入基础组件 + if len(in.options.Step.ImportModel.NaiveUI) > 0 { + importBuffer.WriteString("import " + ImportWebMethod(in.options.Step.ImportModel.NaiveUI) + " from 'naive-ui';\n") + } + + importBuffer.WriteString("import { cloneDeep } from 'lodash-es';\n") + + // 导入表单搜索 + if in.options.Step.HasSearchForm { + importBuffer.WriteString("import { FormSchema } from '@/components/Form';\n") + } + + // 导入工具类 + if len(in.options.Step.ImportModel.UtilsIs) > 0 { + importBuffer.WriteString("import " + ImportWebMethod(in.options.Step.ImportModel.UtilsIs) + " from '@/utils/is';\n") + } + + if len(in.options.Step.ImportModel.UtilsUrl) > 0 { + importBuffer.WriteString("import " + ImportWebMethod(in.options.Step.ImportModel.UtilsUrl) + " from '@/utils/urlUtils';\n") + } + + if len(in.options.Step.ImportModel.UtilsDate) > 0 { + importBuffer.WriteString("import " + ImportWebMethod(in.options.Step.ImportModel.UtilsDate) + " from '@/utils/dateUtil';\n") + } + + if in.options.Step.HasRulesValidator { + importBuffer.WriteString("import { validate } from '@/utils/validateUtil';\n") + } + + if len(in.options.Step.ImportModel.UtilsHotGo) > 0 { + importBuffer.WriteString("import " + ImportWebMethod(in.options.Step.ImportModel.UtilsHotGo) + " from '@/utils/hotgo';\n") + } + + if len(in.options.Step.ImportModel.UtilsIndex) > 0 { + importBuffer.WriteString("import " + ImportWebMethod(in.options.Step.ImportModel.UtilsIndex) + " from '@/utils';\n") + } + + // 导入api + var importApiMethod []string + if in.options.Step.HasSwitch { + importApiMethod = append(importApiMethod, "Switch") + } + if in.options.Step.IsTreeTable { + importApiMethod = append(importApiMethod, "TreeOption") + } + if len(importApiMethod) > 0 { + importBuffer.WriteString("import " + ImportWebMethod(importApiMethod) + " from '" + in.options.ImportWebApi + "';\n") + } + + // 导入字典选项 + if in.options.DictOps.Has { + importBuffer.WriteString("import { useDictStore } from '@/store/modules/dict';\n") + constBuffer.WriteString("const dict = useDictStore();\n") + } + + if in.options.Step.HasSwitch { + importBuffer.WriteString("import { usePermission } from '@/hooks/web/usePermission';\n") + constBuffer.WriteString("const { hasPermission } = usePermission();\n") + constBuffer.WriteString("const $message = window['$message'];\n") + } + + return importBuffer.String(), constBuffer.String() +} + +func (l *gCurd) generateWebModelStateItems(ctx context.Context, in *CurdPreviewInput) (items []*StateItem) { + for _, field := range in.masterFields { + dataType := field.DataType + if dataType == "" && field.SqlType != "" { + if parts := strings.SplitN(field.SqlType, "(", 2); len(parts) > 0 { + dataType = parts[0] + } + } + + isStr := isStringType(field.TsType, dataType) + isArray := strings.HasPrefix(dataType, "_") || strings.Contains(field.SqlType, "[]") + + var value = field.DefaultValue + if value == nil { + if isArray { + value = "null" + } else if isStr { + value = "" + } else { + value = "null" + } + } + if value == "" { + if isArray || !isStr { + value = "null" + } + } else if valueStr, ok := value.(string); ok && isStr { + value = valueStr + } + + // 选项组件默认值调整 + if gconv.Int(value) == 0 && IsSelectFormMode(field.FormMode) { + value = "null" + } + + if field.Name == "status" { + value = 1 + } + if field.FormMode == FormModeSwitch { + value = 2 + } + if field.FormMode == FormModeInputDynamic { + value = "[]" + } + items = append(items, &StateItem{ + Name: field.TsName, + DefaultValue: value, + DataType: dataType, + Dc: field.Dc, + }) + + // 查询用户摘要 + if field.IsList && in.options.Step.HasHookMemberSummary && IsMemberSummaryField(field.Name) { + items = append(items, &StateItem{ + Name: field.TsName + "Summa?: null | MemberSumma", + DefaultValue: "null", + DataType: dataType, + Dc: field.Dc + "摘要信息", + }) + } + } + return +} + +func (l *gCurd) generateWebModelDictOptions(ctx context.Context, in *CurdPreviewInput) error { + type DictType struct { + Id int64 `json:"id"` + Type string `json:"type"` + } + + var ( + dictTypeIds []int64 + dictTypeList []*DictType + builtinDictTypeIds []int64 + builtinDictTypeList []*DictType + ) + + for _, field := range in.masterFields { + if field.DictType > 0 { + dictTypeIds = append(dictTypeIds, field.DictType) + } + + if field.DictType < 0 { + builtinDictTypeIds = append(builtinDictTypeIds, field.DictType) + } + } + + dictTypeIds = convert.UniqueSlice(dictTypeIds) + builtinDictTypeIds = convert.UniqueSlice(builtinDictTypeIds) + + if len(dictTypeIds) == 0 && len(builtinDictTypeIds) == 0 { + return nil + } + + if len(dictTypeIds) > 0 { + err := dao.SysDictType.Ctx(ctx). + Fields(dao.SysDictType.Columns().Id, dao.SysDictType.Columns().Type). + WhereIn(dao.SysDictType.Columns().Id, dictTypeIds). + Scan(&dictTypeList) + if err != nil { + return err + } + } + + if len(builtinDictTypeIds) > 0 { + for _, id := range builtinDictTypeIds { + typ, err := dict.GetTypeById(ctx, id) + if err != nil && !errors.Is(err, dict.NotExistKeyError) { + return err + } + if len(typ) > 0 { + row := new(DictType) + row.Id = id + row.Type = typ + builtinDictTypeList = append(builtinDictTypeList, row) + } + } + } + + if len(dictTypeList) == 0 && len(builtinDictTypeList) == 0 { + return nil + } + + if len(builtinDictTypeList) > 0 { + dictTypeList = append(dictTypeList, builtinDictTypeList...) + } + + in.options.DictOps.Has = true + + for _, v := range dictTypeList { + // 字段映射字典 + for _, field := range in.masterFields { + if field.DictType != 0 && v.Id == field.DictType { + in.options.dictMap[field.TsName] = v.Type + in.options.DictOps.Schemas = append(in.options.DictOps.Schemas, &OptionsSchemasField{ + Field: field.TsName, + Type: v.Type, + }) + } + } + in.options.DictOps.Types = append(in.options.DictOps.Types, v.Type) + } + return nil +} + +func (l *gCurd) generateWebModelRules(ctx context.Context, in *CurdPreviewInput) string { + buffer := bytes.NewBuffer(nil) + buffer.WriteString("export const rules = {\n") + for _, field := range in.masterFields { + if !field.IsEdit || (!field.Required && (field.FormRole == "" || field.FormRole == FormRoleNone)) { + continue + } + + in.options.Step.HasRules = true + if field.FormRole == "" || field.FormRole == FormRoleNone || field.FormRole == "required" { + buffer.WriteString(fmt.Sprintf(" %s: {\n required: %v,\n trigger: ['blur', 'input'],\n type: '%s',\n message: '请输入%s',\n },\n", field.TsName, field.Required, field.TsType, field.Dc)) + } else { + in.options.Step.HasRulesValidator = true + buffer.WriteString(fmt.Sprintf(" %s: {\n required: %v,\n trigger: ['blur', 'input'],\n type: '%s',\n validator: validate.%v,\n },\n", field.TsName, field.Required, field.TsType, field.FormRole)) + } + } + buffer.WriteString("};\n") + return buffer.String() +} + +func (l *gCurd) generateWebModelFormSchema(ctx context.Context, in *CurdPreviewInput) string { + buffer := bytes.NewBuffer(nil) + buffer.WriteString("export const schemas = ref([\n") + + // 主表 + l.generateWebModelFormSchemaEach(buffer, in.masterFields, in) + + // 关联表 + if len(in.options.Join) > 0 { + for _, v := range in.options.Join { + if !isEffectiveJoin(v) { + continue + } + l.generateWebModelFormSchemaEach(buffer, v.Columns, in) + } + } + + buffer.WriteString("]);\n") + return buffer.String() +} + +// generateWebDictOption 生产字典选项 +func (l *gCurd) generateWebDictOption(typ any) string { + return fmt.Sprintf(`dict.getOption('%v')`, typ) +} + +func (l *gCurd) generateWebModelFormSchemaEach(buffer *bytes.Buffer, fields []*sysin.GenCodesColumnListModel, in *CurdPreviewInput) { + for _, field := range fields { + if !field.IsQuery { + continue + } + in.options.Step.HasSearchForm = true + + // 查询用户摘要 + if field.IsQuery && in.options.Step.HasQueryMemberSummary && IsMemberSummaryField(field.Name) { + buffer.WriteString(fmt.Sprintf(" {\n field: '%s',\n component: '%s',\n label: '%s',\n componentProps: {\n placeholder: '请输入ID|用户名|姓名|手机号',\n onUpdateValue: (e: any) => {\n console.log(e);\n },\n },\n },\n", field.TsName, "NInput", field.Dc)) + continue + } + + var ( + defaultComponent = fmt.Sprintf(" {\n field: '%s',\n component: '%s',\n label: '%s',\n componentProps: {\n placeholder: '请输入%s',\n onUpdateValue: (e: any) => {\n console.log(e);\n },\n },\n },\n", field.TsName, "NInput", field.Dc, field.Dc) + component string + ) + + // 这里根据编辑表单组件来进行推断,如果没有则使用默认input,这可能会导致和查询条件所需参数不符的情况 + switch field.FormMode { + case FormModeInput, FormModeInputTextarea, FormModeInputEditor, FormModeInputYaml: + component = defaultComponent + + case FormModeInputNumber: + component = fmt.Sprintf(" {\n field: '%s',\n component: '%s',\n label: '%s',\n componentProps: {\n placeholder: '请输入%s',\n onUpdateValue: (e: any) => {\n console.log(e);\n },\n },\n },\n", field.TsName, "NInputNumber", field.Dc, field.Dc) + + case FormModeDate: + component = fmt.Sprintf(" {\n field: '%s',\n component: '%s',\n label: '%s',\n componentProps: {\n type: '%s',\n clearable: true,\n shortcuts: %s,\n onUpdateValue: (e: any) => {\n console.log(e);\n },\n },\n },\n", field.TsName, "NDatePicker", field.Dc, "date", "defShortcuts()") + in.options.Step.ImportModel.UtilsDate = append(in.options.Step.ImportModel.UtilsDate, "defShortcuts") + + case FormModeDateRange: + component = fmt.Sprintf(" {\n field: '%s',\n component: '%s',\n label: '%s',\n componentProps: {\n type: '%s',\n clearable: true,\n shortcuts: %s,\n onUpdateValue: (e: any) => {\n console.log(e);\n },\n },\n },\n", field.TsName, "NDatePicker", field.Dc, "daterange", "defRangeShortcuts()") + in.options.Step.ImportModel.UtilsDate = append(in.options.Step.ImportModel.UtilsDate, "defRangeShortcuts") + + case FormModeTime: + component = fmt.Sprintf(" {\n field: '%s',\n component: '%s',\n label: '%s',\n componentProps: {\n type: '%s',\n clearable: true,\n shortcuts: %s,\n onUpdateValue: (e: any) => {\n console.log(e);\n },\n },\n },\n", field.TsName, "NDatePicker", field.Dc, "datetime", "defShortcuts()") + in.options.Step.ImportModel.UtilsDate = append(in.options.Step.ImportModel.UtilsDate, "defShortcuts") + + case FormModeTimeRange: + component = fmt.Sprintf(" {\n field: '%s',\n component: '%s',\n label: '%s',\n componentProps: {\n type: '%s',\n clearable: true,\n shortcuts: %s,\n onUpdateValue: (e: any) => {\n console.log(e);\n },\n },\n },\n", field.TsName, "NDatePicker", field.Dc, "datetimerange", "defRangeShortcuts()") + in.options.Step.ImportModel.UtilsDate = append(in.options.Step.ImportModel.UtilsDate, "defRangeShortcuts") + + case FormModeSwitch: + fallthrough + case FormModeRadio: + component = fmt.Sprintf(" {\n field: '%s',\n component: '%s',\n label: '%s',\n giProps: {\n //span: 24,\n },\n componentProps: {\n options: %v,\n onUpdateChecked: (e: any) => {\n console.log(e);\n },\n },\n },\n", field.TsName, "NRadioGroup", field.Dc, l.generateWebDictOption(in.options.dictMap[field.TsName])) + + case FormModeCheckbox: + component = fmt.Sprintf(" {\n field: '%s',\n component: '%s',\n label: '%s',\n giProps: {\n span: 1,\n },\n componentProps: {\n placeholder: '请选择%s',\n options: %v,\n onUpdateChecked: (e: any) => {\n console.log(e);\n },\n },\n },\n", field.TsName, "NCheckbox", field.Dc, field.Dc, l.generateWebDictOption(in.options.dictMap[field.TsName])) + + case FormModeSelect: + component = fmt.Sprintf(" {\n field: '%s',\n component: '%s',\n label: '%s',\n defaultValue: null,\n componentProps: {\n placeholder: '请选择%s',\n options: %v,\n onUpdateValue: (e: any) => {\n console.log(e);\n },\n },\n },\n", field.TsName, "NSelect", field.Dc, field.Dc, l.generateWebDictOption(in.options.dictMap[field.TsName])) + + case FormModeSelectMultiple: + component = fmt.Sprintf(" {\n field: '%s',\n component: '%s',\n label: '%s',\n defaultValue: null,\n componentProps: {\n multiple: true,\n placeholder: '请选择%s',\n options: %v,\n onUpdateValue: (e: any) => {\n console.log(e);\n },\n },\n },\n", field.TsName, "NSelect", field.Dc, field.Dc, l.generateWebDictOption(in.options.dictMap[field.TsName])) + + default: + component = defaultComponent + } + + buffer.WriteString(component) + } +} + +func (l *gCurd) generateWebModelColumns(ctx context.Context, in *CurdPreviewInput) (string, error) { + buffer := bytes.NewBuffer(nil) + buffer.WriteString("export const columns = [\n") + + // 主表 + if err := l.generateWebModelColumnsEach(buffer, in, in.masterFields); err != nil { + return "", err + } + + // 关联表 + if len(in.options.Join) > 0 { + for _, v := range in.options.Join { + if !isEffectiveJoin(v) { + continue + } + if err := l.generateWebModelColumnsEach(buffer, in, v.Columns); err != nil { + return "", err + } + } + } + + buffer.WriteString("];\n") + return buffer.String(), nil +} + +func (l *gCurd) generateWebModelColumnsEach(buffer *bytes.Buffer, in *CurdPreviewInput, fields []*sysin.GenCodesColumnListModel) (err error) { + for _, field := range fields { + if !field.IsList { + continue + } + var ( + defaultComponent = fmt.Sprintf(" {\n title: '%s',\n key: '%s',\n align: '%v',\n width: %v,\n },\n", field.Dc, field.TsName, field.Align, field.Width) + component string + ) + + // 查询用户摘要 + if in.options.Step.HasHookMemberSummary && IsMemberSummaryField(field.Name) { + buffer.WriteString(fmt.Sprintf(" {\n title: '%v',\n key: '%v',\n align: '%v',\n width: %v,\n render(row: State) {\n return renderPopoverMemberSumma(row.%vSumma);\n },\n },\n", field.Dc, field.TsName, field.Align, field.Width, field.TsName)) + in.options.Step.ImportModel.UtilsIndex = append(in.options.Step.ImportModel.UtilsIndex, []string{"renderPopoverMemberSumma", "MemberSumma"}...) + continue + } + + // 这里根据编辑表单组件来进行推断,如果没有则使用默认input,这可能会导致和查询条件所需参数不符的情况 + switch field.FormMode { + case FormModeDate: + component = fmt.Sprintf(" {\n title: '%s',\n key: '%s',\n align: '%v',\n width: %v,\n render(row: State) {\n return formatToDate(row.%s);\n },\n },\n", field.Dc, field.TsName, field.Align, field.Width, field.TsName) + in.options.Step.ImportModel.UtilsDate = append(in.options.Step.ImportModel.UtilsDate, "formatToDate") + + case FormModeRadio: + fallthrough + case FormModeSelect: + if g.IsEmpty(in.options.dictMap[field.TsName]) { + err = gerror.Newf("设置单选下拉框选项时,必须选择字典类型,字段名称:%v", field.Name) + return + } + component = fmt.Sprintf(" {\n title: '%s',\n key: '%s',\n align: '%v',\n width: %v,\n render(row: State) {\n return renderOptionTag('%v', row.%v);\n },\n },\n", field.Dc, field.TsName, field.Align, field.Width, in.options.dictMap[field.TsName], field.TsName) + in.options.Step.ImportModel.UtilsIndex = append(in.options.Step.ImportModel.UtilsIndex, "renderOptionTag") + + case FormModeSelectMultiple: + if g.IsEmpty(in.options.dictMap[field.TsName]) { + err = gerror.Newf("设置多选下拉框选项时,必须选择字典类型,字段名称:%v", field.Name) + return + } + component = fmt.Sprintf(" {\n title: '%s',\n key: '%s',\n align: '%v',\n width: %v,\n render(row: State) {\n if (isNullObject(row.%s) || !Array.isArray(row.%s)) {\n return ``;\n }\n return row.%s.map((tagKey) => {\n return renderOptionTag('%s', tagKey)\n });\n },\n },\n", field.Dc, field.TsName, field.Align, field.Width, field.TsName, field.TsName, field.TsName, in.options.dictMap[field.TsName]) + in.options.Step.ImportModel.NaiveUI = append(in.options.Step.ImportModel.NaiveUI, "NTag") + in.options.Step.ImportModel.UtilsIs = append(in.options.Step.ImportModel.UtilsIs, "isNullObject") + + case FormModeUploadImage: + component = fmt.Sprintf(" {\n title: '%s',\n key: '%s',\n align: '%v',\n width: %v,\n render(row: State) {\n return renderImage(row.%v);\n },\n },\n", field.Dc, field.TsName, field.Align, field.Width, field.TsName) + in.options.Step.ImportModel.UtilsIndex = append(in.options.Step.ImportModel.UtilsIndex, "renderImage") + + case FormModeUploadImages: + component = fmt.Sprintf(" {\n title: '%s',\n key: '%s',\n align: '%v',\n width: %v,\n render(row: State) {\n return renderImageGroup(row.%v);\n },\n },\n", field.Dc, field.TsName, field.Align, field.Width, field.TsName) + in.options.Step.ImportModel.UtilsIndex = append(in.options.Step.ImportModel.UtilsIndex, "renderImageGroup") + + case FormModeUploadFile: + component = fmt.Sprintf(" {\n title: '%s',\n key: '%s',\n align: '%v',\n width: %v,\n render(row: State) {\n return renderFile(row.%v);\n },\n },\n", field.Dc, field.TsName, field.Align, field.Width, field.TsName) + in.options.Step.ImportModel.UtilsIndex = append(in.options.Step.ImportModel.UtilsIndex, "renderFile") + + case FormModeUploadFiles: + component = fmt.Sprintf(" {\n title: '%s',\n key: '%s',\n align: '%v',\n width: %v,\n render(row: State) {\n return renderFileGroup(row.%v);\n },\n },\n", field.Dc, field.TsName, field.Align, field.Width, field.TsName) + in.options.Step.ImportModel.UtilsIndex = append(in.options.Step.ImportModel.UtilsIndex, "renderFileGroup") + + case FormModeSwitch: + component = fmt.Sprintf(" {\n title: '%s',\n key: '%s',\n align: '%v',\n width: %v,\n render(row: State) {\n return h(%s, {\n value: row.%s === 1,\n checked: '开启',\n unchecked: '关闭',\n disabled: !hasPermission(['%s']),\n onUpdateValue: function (e) {\n console.log('onUpdateValue e:' + JSON.stringify(e));\n row.%s = e ? 1 : 2;\n Switch({ %s: row.%s, key: '%s', value: row.%s }).then((_res) => {\n $message.success('操作成功');\n });\n },\n });\n },\n },\n", field.Dc, field.TsName, field.Align, field.Width, "NSwitch", field.TsName, "/"+in.options.ApiPrefix+"/switch", field.TsName, in.pk.TsName, in.pk.TsName, convert.CamelCaseToUnderline(field.TsName), field.TsName) + in.options.Step.ImportModel.NaiveUI = append(in.options.Step.ImportModel.NaiveUI, "NSwitch") + + case FormModeRate: + component = fmt.Sprintf(" {\n title: '%s',\n key: '%s',\n align: '%v',\n width: %v,\n render(row: State) {\n return h(%s, {\n allowHalf: true,\n readonly: true,\n defaultValue: row.%s,\n });\n },\n },\n", field.Dc, field.TsName, field.Align, field.Width, "NRate", field.TsName) + in.options.Step.ImportModel.NaiveUI = append(in.options.Step.ImportModel.NaiveUI, "NRate") + + default: + component = defaultComponent + } + + buffer.WriteString(component) + } + return +} + +// isStringType 判断字段是否为字符串类型 +func isStringType(tsType, dataType string) bool { + // 根据 TypeScript 类型判断 + if tsType == "string" { + return true + } + + // 根据数据库数据类型判断 + stringTypes := []string{ + // mysql + "varchar", "char", "text", "longtext", "mediumtext", "tinytext", + "nvarchar", "nchar", "ntext", + "string", "enum", "set", + // pgsql + "bpchar", "date", "time", "timetz", "timestamp", "timestamptz", "interval", + "uuid", "bytea", "inet", "cidr", "macaddr", "macaddr8", "bit", "varbit", "json", "jsonb", + "point", "line", "lseg", "box", "path", "polygon", "circle", "money", + } + + for _, t := range stringTypes { + if strings.EqualFold(dataType, t) { + return true + } + } + return false +} diff --git a/server/internal/library/hggen/views/curd_generate_web_view.go b/server/internal/library/hggen/views/curd_generate_web_view.go new file mode 100644 index 0000000..dc932fd --- /dev/null +++ b/server/internal/library/hggen/views/curd_generate_web_view.go @@ -0,0 +1,90 @@ +// Package views +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package views + +import ( + "bytes" + "context" + "fmt" + + "github.com/gogf/gf/v2/frame/g" +) + +func (l *gCurd) webViewTplData(ctx context.Context, in *CurdPreviewInput) (data g.Map, err error) { + data = make(g.Map) + item, hasUpload := l.generateWebViewItem(ctx, in) + data["item"] = item + data["hasUploadFile"] = hasUpload + return +} + +func (l *gCurd) generateWebViewItem(ctx context.Context, in *CurdPreviewInput) (string, bool) { + buffer := bytes.NewBuffer(nil) + hasUploadFile := false + + for _, field := range in.masterFields { + if !field.IsEdit { + continue + } + + // 检测是否使用了文件上传相关的组件 + if field.FormMode == FormModeUploadFile || field.FormMode == FormModeUploadFiles { + hasUploadFile = true + } + + var ( + defaultComponent = fmt.Sprintf("\n \n {{ formValue.%s }}\n ", field.Dc, field.TsName) + component string + ) + + switch field.FormMode { + case FormModeInputTextarea, FormModeInputEditor: + component = fmt.Sprintf("\n \n \n ", field.Dc, field.TsName) + + case FormModeInputYaml: + component = fmt.Sprintf("\n \n
{{ formValue.%s }}
\n
", field.Dc, field.TsName) + + case FormModeInputDynamic: + component = defaultComponent + + case FormModeDate: + component = defaultComponent + + case FormModeTime: + component = defaultComponent + + case FormModeRadio, FormModeSelect: + component = fmt.Sprintf("\n \n {{ dict.getLabel('%s', formValue.%s) }}\n \n ", field.Dc, in.options.dictMap[field.TsName], field.TsName, in.options.dictMap[field.TsName], field.TsName) + + case FormModeCheckbox, FormModeSelectMultiple: + component = fmt.Sprintf("\n \n ", field.Dc, field.TsName, in.options.dictMap[field.TsName], in.options.dictMap[field.TsName]) + + case FormModeUploadImage: + component = fmt.Sprintf("\n \n \n ", field.Dc, field.TsName) + + case FormModeUploadImages: + component = fmt.Sprintf("\n \n \n \n \n \n \n \n \n ", field.Dc, field.TsName) + + case FormModeUploadFile: + component = fmt.Sprintf("\n \n
\n
\n
\n
\n {{ getFileExt(formValue.%s) }}\n
\n
\n
\n
\n
", field.Dc, field.TsName, field.TsName, field.TsName) + + case FormModeUploadFiles: + component = fmt.Sprintf("\n \n
\n \n \n
\n
\n \n {{ getFileExt(item) }}\n \n
\n
\n
\n \n \n
", field.Dc, field.TsName) + + case FormModeSwitch: + component = fmt.Sprintf("\n \n ", field.Dc, field.TsName) + + case FormModeRate: + component = fmt.Sprintf("\n \n ", field.Dc, field.TsName) + + default: + component = defaultComponent + } + + buffer.WriteString(" " + component + "\n\n") + } + return buffer.String(), hasUploadFile +} diff --git a/server/internal/library/hggen/views/gohtml/consts.go b/server/internal/library/hggen/views/gohtml/consts.go new file mode 100644 index 0000000..625118c --- /dev/null +++ b/server/internal/library/hggen/views/gohtml/consts.go @@ -0,0 +1,7 @@ +package gohtml + +const ( + defaultIndentString = " " + startIndent = 0 + defaultLastElement = "" +) diff --git a/server/internal/library/hggen/views/gohtml/doc.go b/server/internal/library/hggen/views/gohtml/doc.go new file mode 100644 index 0000000..f787ed3 --- /dev/null +++ b/server/internal/library/hggen/views/gohtml/doc.go @@ -0,0 +1,2 @@ +// Package gohtml provides an HTML formatting function. +package gohtml diff --git a/server/internal/library/hggen/views/gohtml/element.go b/server/internal/library/hggen/views/gohtml/element.go new file mode 100644 index 0000000..a41be68 --- /dev/null +++ b/server/internal/library/hggen/views/gohtml/element.go @@ -0,0 +1,7 @@ +package gohtml + +// An element represents an HTML element. +type element interface { + isInline() bool + write(*formattedBuffer, bool) bool +} diff --git a/server/internal/library/hggen/views/gohtml/formatter.go b/server/internal/library/hggen/views/gohtml/formatter.go new file mode 100644 index 0000000..0f1e1f6 --- /dev/null +++ b/server/internal/library/hggen/views/gohtml/formatter.go @@ -0,0 +1,36 @@ +package gohtml + +import ( + "bytes" + "strconv" + "strings" +) + +// Format parses the input HTML string, formats it and returns the result. +func Format(s string) string { + return parse(strings.NewReader(s)).html() +} + +// FormatBytes parses input HTML as bytes, formats it and returns the result. +func FormatBytes(b []byte) []byte { + return parse(bytes.NewReader(b)).bytes() +} + +// Format parses the input HTML string, formats it and returns the result with line no. +func FormatWithLineNo(s string) string { + return AddLineNo(Format(s)) +} + +func AddLineNo(s string) string { + lines := strings.Split(s, "\n") + maxLineNoStrLen := len(strconv.Itoa(len(lines))) + bf := &bytes.Buffer{} + for i, line := range lines { + lineNoStr := strconv.Itoa(i + 1) + if i > 0 { + bf.WriteString("\n") + } + bf.WriteString(strings.Repeat(" ", maxLineNoStrLen-len(lineNoStr)) + lineNoStr + " " + line) + } + return bf.String() +} diff --git a/server/internal/library/hggen/views/gohtml/html_document.go b/server/internal/library/hggen/views/gohtml/html_document.go new file mode 100644 index 0000000..3d9e6ea --- /dev/null +++ b/server/internal/library/hggen/views/gohtml/html_document.go @@ -0,0 +1,54 @@ +package gohtml + +import ( + "bytes" + "regexp" +) + +// Column to wrap lines to (disabled by default) +var LineWrapColumn = 0 + +// Maxmimum characters a long word can extend past LineWrapColumn without wrapping +var LineWrapMaxSpillover = 5 + +// An htmlDocument represents an HTML document. +type htmlDocument struct { + elements []element +} + +// html generates an HTML source code and returns it. +func (htmlDoc *htmlDocument) html() string { + str := string(htmlDoc.bytes()) + str = replaceMultipleNewlinesWithSpaceAndTabs(str) + return str +} + +func replaceMultipleNewlinesWithSpaceAndTabs(input string) string { + re := regexp.MustCompile(`\n\s*\n+`) + formattedString := re.ReplaceAllString(input, "\n") + return formattedString +} + +// bytes reads from htmlDocument's internal array of elements and returns HTML source code +func (htmlDoc *htmlDocument) bytes() []byte { + bf := &formattedBuffer{ + buffer: &bytes.Buffer{}, + + lineWrapColumn: LineWrapColumn, + lineWrapMaxSpillover: LineWrapMaxSpillover, + + indentString: defaultIndentString, + indentLevel: startIndent, + } + + isPreviousNodeInline := true + for _, child := range htmlDoc.elements { + isPreviousNodeInline = child.write(bf, isPreviousNodeInline) + } + return bf.buffer.Bytes() +} + +// append appends an element to the htmlDocument. +func (htmlDoc *htmlDocument) append(e element) { + htmlDoc.elements = append(htmlDoc.elements, e) +} diff --git a/server/internal/library/hggen/views/gohtml/parser.go b/server/internal/library/hggen/views/gohtml/parser.go new file mode 100644 index 0000000..2ca7444 --- /dev/null +++ b/server/internal/library/hggen/views/gohtml/parser.go @@ -0,0 +1,128 @@ +package gohtml + +import ( + "io" + "regexp" + "strings" + + "golang.org/x/net/html" +) + +// parse parses a stirng and converts it into an html. +func parse(r io.Reader) *htmlDocument { + htmlDoc := &htmlDocument{} + tokenizer := html.NewTokenizer(r) + for { + if errorToken, _, _ := parseToken(tokenizer, htmlDoc, nil); errorToken { + break + } + } + return htmlDoc +} + +// Function that identifies which tags will be treated as containing preformatted +// content. Such tags will have the formatting of all its contents preserved +// unchanged. +// The opening tag html.Token is passed to this function. +// By default, only
 and ",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 + + + + + + + 验证码邮件 + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ logo +
+

+ 这是你发送的验证码吗? +

+
+

+ @{.os}
+ @{.cityLabel} (estimated)
+ IP 地址: @{.ip} +

+
+

+ 如果是,请输入验证码: +

+
+

+ @{.code} +

+
+

+ 该验证码@{.expires}分钟内有效,请不要告诉于他人! +

+
+ +
+
+ + \ No newline at end of file diff --git a/server/resource/template/email/resetPwd.html b/server/resource/template/email/resetPwd.html new file mode 100644 index 0000000..a192e68 --- /dev/null +++ b/server/resource/template/email/resetPwd.html @@ -0,0 +1,301 @@ + + + + + + + + 密码重置邮件 + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ logo +
+

+ Hi, @{.username}! +

+

+ 忘记密码请求 +

+
+

+ 你好像忘记了你的账户密码。你可以通过点击下面的按钮更改密码: +

+
+ + + + + + +
+ + 重置密码 + +
+
+

+ Ms and the @{.name} Team. +

+
+

+ 如果你在点击密码重置按钮时遇到麻烦,请将下面的URL复制并粘贴到你的浏览器中: +

+
+

+ @{.passwordResetLink} +

+
+ +
+
+ + \ No newline at end of file diff --git a/server/resource/template/email/text.html b/server/resource/template/email/text.html new file mode 100644 index 0000000..5e1563d --- /dev/null +++ b/server/resource/template/email/text.html @@ -0,0 +1,12 @@ + + + + + + + + + +@{.content} + + \ No newline at end of file diff --git a/server/resource/template/error/default.html b/server/resource/template/error/default.html new file mode 100644 index 0000000..f21f4f2 --- /dev/null +++ b/server/resource/template/error/default.html @@ -0,0 +1,94 @@ + + + + + + 错误页面 + + + +@{ if eq .code 404 } +
+

@{.code} 页面未找到

+

抱歉,我们无法找到要求的页面。

+ 返回 +
+@{ else if eq .code 403 } +
+

@{.code} 禁止访问

+

抱歉,您无权访问此页面。

+ 返回 +
+@{ else if eq .code 500 } +
+

@{.code} 内部服务器错误

+

哎呀,服务器出了点问题。

+ 返回 +
+@{else} +
+

错误码 [ @{.code} ]

+

@{.message}

+ @{ if ne .stack "" } +
@{.stack}
+ @{end} + 返回 +
+@{end} + + \ No newline at end of file diff --git a/server/resource/template/home/index.html b/server/resource/template/home/index.html new file mode 100644 index 0000000..59ec6db --- /dev/null +++ b/server/resource/template/home/index.html @@ -0,0 +1,29 @@ + + + + + + + + + @{.Title} + + + + +
+

Hello,@{.Data.name}!!

+

当前版本:@{.Data.version}

+
+ + + \ No newline at end of file diff --git a/server/storage/cert/.gitkeep b/server/storage/cert/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/server/storage/cert/pay/.gitkeep b/server/storage/cert/pay/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/server/storage/cert/ssl/.gitkeep b/server/storage/cert/ssl/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/server/storage/data/.gitkeep b/server/storage/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/server/storage/data/generate/.gitkeep b/server/storage/data/generate/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/server/storage/data/generate/addons/.gitkeep b/server/storage/data/generate/addons/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/server/storage/data/generate/addons/tenant_order_menu.sql b/server/storage/data/generate/addons/tenant_order_menu.sql new file mode 100644 index 0000000..2a2389e --- /dev/null +++ b/server/storage/data/generate/addons/tenant_order_menu.sql @@ -0,0 +1,62 @@ +-- hotgo自动生成菜单权限SQL 通常情况下只在首次生成代码时自动执行一次 +-- 如需再次执行请先手动删除生成的菜单权限和SQL文件:/Users/mengshuai/Desktop/gosrc/hotgo_dev/server/storage/data/generate/addons/tenant_order_menu.sql +-- Version: 2.13.1 +-- Date: 2024-04-13 23:37:27 +-- Link https://github.com/bufanyun/hotgo + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; + +-- +-- 数据库: `hotgo` +-- + +-- -------------------------------------------------------- + +-- +-- 插入表中的数据 `hg_admin_menu` +-- + + +SET @now := now(); + + +-- 菜单目录 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, '2228', '多租户功能演示', 'tenantOrder', '/tenantOrder', '', '1', '/addons/hgexample/tenantOrder/index', '', '', 'ParentLayout', '1', '', '0', '0', '', '0', '0', '0', '3', 'tr_2227 tr_2228 ', '200', '', '1', @now, @now); + + +SET @dirId = LAST_INSERT_ID(); + + +-- 菜单页面 +-- 列表 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @dirId, '多租户功能演示列表', 'tenantOrderIndex', 'index', '', '2', '', '/hgexample/tenantOrder/list', '', '/addons/hgexample/tenantOrder/index', '1', 'tenantOrder', '0', '0', '', '0', '1', '0', '4', CONCAT('tr_2227 tr_2228 tr_', @dirId,' '), '10', '', '1', @now, @now); + + +SET @listId = LAST_INSERT_ID(); + +-- 详情 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '多租户功能演示详情', 'tenantOrderView', '', '', '3', '', '/hgexample/tenantOrder/view', '', '', '1', '', '0', '0', '', '0', '1', '0', '5', CONCAT('tr_2227 tr_2228 tr_', @dirId, ' tr_', @listId,' '), '10', '', '1', @now, @now); + + +-- 菜单按钮 + +-- 编辑 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '编辑/新增多租户功能演示', 'tenantOrderEdit', '', '', '3', '', '/hgexample/tenantOrder/edit', '', '', '1', '', '0', '0', '', '0', '1', '0', '5', CONCAT('tr_2227 tr_2228 tr_', @dirId, ' tr_', @listId,' '), '20', '', '1', @now, @now); + + +SET @editId = LAST_INSERT_ID(); + + +-- 删除 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '删除多租户功能演示', 'tenantOrderDelete', '', '', '3', '', '/hgexample/tenantOrder/delete', '', '', '1', '', '0', '0', '', '0', '0', '0', '5', CONCAT('tr_2227 tr_2228 tr_', @dirId, ' tr_', @listId,' '), '40', '', '1', @now, @now); + + + + +-- 导出 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '导出多租户功能演示', 'tenantOrderExport', '', '', '3', '', '/hgexample/tenantOrder/export', '', '', '1', '', '0', '0', '', '0', '0', '0', '5', CONCAT('tr_2227 tr_2228 tr_', @dirId, ' tr_', @listId,' '), '70', '', '1', @now, @now); + + +COMMIT; \ No newline at end of file diff --git a/server/storage/data/generate/curd_demo_menu.sql b/server/storage/data/generate/curd_demo_menu.sql new file mode 100644 index 0000000..9429e4d --- /dev/null +++ b/server/storage/data/generate/curd_demo_menu.sql @@ -0,0 +1,71 @@ +-- hotgo自动生成菜单权限SQL 通常情况下只在首次生成代码时自动执行一次 +-- 如需再次执行请先手动删除生成的菜单权限和SQL文件:C:\Users\Administrator\Desktop\gosrc\hotgo_dev\server\storage\data\generate\curd_demo_menu.sql +-- Version: 2.13.1 +-- Date: 2024-04-08 10:13:25 +-- Link https://github.com/bufanyun/hotgo + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; + +-- +-- 数据库: `hotgo` +-- + +-- -------------------------------------------------------- + +-- +-- 插入表中的数据 `hg_admin_menu` +-- + + +SET @now := now(); + + +-- 菜单目录 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, '2366', 'CURD列表', 'curdDemo', '/curdDemo', '', '1', '/develop/generateDemo/curdDemo/index', '', '', 'ParentLayout', '1', '', '0', '0', '', '0', '0', '0', '3', 'tr_2097 tr_2366 ', '10', '', '1', @now, @now); + + +SET @dirId = LAST_INSERT_ID(); + + +-- 菜单页面 +-- 列表 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @dirId, 'CURD列表列表', 'curdDemoIndex', 'index', '', '2', '', '/curdDemo/list', '', '/curdDemo/index', '1', 'curdDemo', '0', '0', '', '0', '1', '0', '4', CONCAT('tr_2097 tr_2366 tr_', @dirId,' '), '10', '', '1', @now, @now); + + +SET @listId = LAST_INSERT_ID(); + +-- 详情 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, 'CURD列表详情', 'curdDemoView', '', '', '3', '', '/curdDemo/view', '', '', '1', '', '0', '0', '', '0', '1', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '10', '', '1', @now, @now); + + +-- 菜单按钮 + +-- 编辑 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '编辑/新增CURD列表', 'curdDemoEdit', '', '', '3', '', '/curdDemo/edit', '', '', '1', '', '0', '0', '', '0', '1', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '20', '', '1', @now, @now); + + +SET @editId = LAST_INSERT_ID(); + +-- 获取最大排序 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @editId, '获取CURD列表最大排序', 'curdDemoMaxSort', '', '', '3', '', '/curdDemo/maxSort', '', '', '1', '', '0', '0', '', '0', '0', '0', '6', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId, ' tr_', @editId,' '), '30', '', '1', @now, @now); + + +-- 删除 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '删除CURD列表', 'curdDemoDelete', '', '', '3', '', '/curdDemo/delete', '', '', '1', '', '0', '0', '', '0', '0', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '40', '', '1', @now, @now); + + +-- 更新状态 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '修改CURD列表状态', 'curdDemoStatus', '', '', '3', '', '/curdDemo/status', '', '', '1', '', '0', '0', '', '0', '0', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '50', '', '1', @now, @now); + + +-- 操作开关 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '操作CURD列表开关', 'curdDemoSwitch', '', '', '3', '', '/curdDemo/switch', '', '', '1', '', '0', '0', '', '0', '0', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '60', '', '1', @now, @now); + + +-- 导出 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '导出CURD列表', 'curdDemoExport', '', '', '3', '', '/curdDemo/export', '', '', '1', '', '0', '0', '', '0', '0', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '70', '', '1', @now, @now); + + +COMMIT; \ No newline at end of file diff --git a/server/storage/data/generate/normal_tree_demo_menu.sql b/server/storage/data/generate/normal_tree_demo_menu.sql new file mode 100644 index 0000000..3f97ddf --- /dev/null +++ b/server/storage/data/generate/normal_tree_demo_menu.sql @@ -0,0 +1,71 @@ +-- hotgo自动生成菜单权限SQL 通常情况下只在首次生成代码时自动执行一次 +-- 如需再次执行请先手动删除生成的菜单权限和SQL文件:C:\Users\Administrator\Desktop\gosrc\hotgo_dev\server\storage\data\generate\normal_tree_demo_menu.sql +-- Version: 2.13.1 +-- Date: 2024-04-09 17:05:12 +-- Link https://github.com/bufanyun/hotgo + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; + +-- +-- 数据库: `hotgo` +-- + +-- -------------------------------------------------------- + +-- +-- 插入表中的数据 `hg_admin_menu` +-- + + +SET @now := now(); + + +-- 菜单目录 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, '2366', '普通树表', 'normalTreeDemo', '/normalTreeDemo', '', '1', '/develop/generateDemo/normalTreeDemo/index', '', '', 'ParentLayout', '1', '', '0', '0', '', '0', '0', '0', '3', 'tr_2097 tr_2366 ', '200', '', '1', @now, @now); + + +SET @dirId = LAST_INSERT_ID(); + + +-- 菜单页面 +-- 列表 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @dirId, '普通树表列表', 'normalTreeDemoIndex', 'index', '', '2', '', '/normalTreeDemo/list', '', '/normalTreeDemo/index', '1', 'normalTreeDemo', '0', '0', '', '0', '1', '0', '4', CONCAT('tr_2097 tr_2366 tr_', @dirId,' '), '10', '', '1', @now, @now); + + +SET @listId = LAST_INSERT_ID(); + +-- 详情 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '普通树表详情', 'normalTreeDemoView', '', '', '3', '', '/normalTreeDemo/view', '', '', '1', '', '0', '0', '', '0', '1', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '10', '', '1', @now, @now); + + +-- 菜单按钮 + +-- 编辑 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '编辑/新增普通树表', 'normalTreeDemoEdit', '', '', '3', '', '/normalTreeDemo/edit', '', '', '1', '', '0', '0', '', '0', '1', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '20', '', '1', @now, @now); + + +SET @editId = LAST_INSERT_ID(); + +-- 获取最大排序 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @editId, '获取普通树表最大排序', 'normalTreeDemoMaxSort', '', '', '3', '', '/normalTreeDemo/maxSort', '', '', '1', '', '0', '0', '', '0', '0', '0', '6', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId, ' tr_', @editId,' '), '30', '', '1', @now, @now); + + +-- 删除 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '删除普通树表', 'normalTreeDemoDelete', '', '', '3', '', '/normalTreeDemo/delete', '', '', '1', '', '0', '0', '', '0', '0', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '40', '', '1', @now, @now); + + +-- 更新状态 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '修改普通树表状态', 'normalTreeDemoStatus', '', '', '3', '', '/normalTreeDemo/status', '', '', '1', '', '0', '0', '', '0', '0', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '50', '', '1', @now, @now); + + + +-- 导出 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '导出普通树表', 'normalTreeDemoExport', '', '', '3', '', '/normalTreeDemo/export', '', '', '1', '', '0', '0', '', '0', '0', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '70', '', '1', @now, @now); + + +-- 关系树选项 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '获取普通树表关系树选项', 'normalTreeDemoTreeOption', '', '', '3', '', '/normalTreeDemo/treeOption', '', '', '1', '', '0', '0', '', '0', '0', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '70', '', '1', @now, @now); + +COMMIT; \ No newline at end of file diff --git a/server/storage/data/generate/option_tree_demo_menu.sql b/server/storage/data/generate/option_tree_demo_menu.sql new file mode 100644 index 0000000..2ad40c8 --- /dev/null +++ b/server/storage/data/generate/option_tree_demo_menu.sql @@ -0,0 +1,71 @@ +-- hotgo自动生成菜单权限SQL 通常情况下只在首次生成代码时自动执行一次 +-- 如需再次执行请先手动删除生成的菜单权限和SQL文件:C:\Users\Administrator\Desktop\gosrc\hotgo_dev\server\storage\data\generate\option_tree_demo_menu.sql +-- Version: 2.13.1 +-- Date: 2024-04-09 17:22:28 +-- Link https://github.com/bufanyun/hotgo + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; + +-- +-- 数据库: `hotgo` +-- + +-- -------------------------------------------------------- + +-- +-- 插入表中的数据 `hg_admin_menu` +-- + + +SET @now := now(); + + +-- 菜单目录 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, '2366', '选项树表', 'optionTreeDemo', '/optionTreeDemo', '', '1', '/develop/generateDemo/optionTreeDemo/index', '', '', 'ParentLayout', '1', '', '0', '0', '', '0', '0', '0', '3', 'tr_2097 tr_2366 ', '300', '', '1', @now, @now); + + +SET @dirId = LAST_INSERT_ID(); + + +-- 菜单页面 +-- 列表 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @dirId, '选项树表列表', 'optionTreeDemoIndex', 'index', '', '2', '', '/optionTreeDemo/list', '', '/optionTreeDemo/index', '1', 'optionTreeDemo', '0', '0', '', '0', '1', '0', '4', CONCAT('tr_2097 tr_2366 tr_', @dirId,' '), '10', '', '1', @now, @now); + + +SET @listId = LAST_INSERT_ID(); + +-- 详情 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '选项树表详情', 'optionTreeDemoView', '', '', '3', '', '/optionTreeDemo/view', '', '', '1', '', '0', '0', '', '0', '1', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '10', '', '1', @now, @now); + + +-- 菜单按钮 + +-- 编辑 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '编辑/新增选项树表', 'optionTreeDemoEdit', '', '', '3', '', '/optionTreeDemo/edit', '', '', '1', '', '0', '0', '', '0', '1', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '20', '', '1', @now, @now); + + +SET @editId = LAST_INSERT_ID(); + +-- 获取最大排序 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @editId, '获取选项树表最大排序', 'optionTreeDemoMaxSort', '', '', '3', '', '/optionTreeDemo/maxSort', '', '', '1', '', '0', '0', '', '0', '0', '0', '6', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId, ' tr_', @editId,' '), '30', '', '1', @now, @now); + + +-- 删除 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '删除选项树表', 'optionTreeDemoDelete', '', '', '3', '', '/optionTreeDemo/delete', '', '', '1', '', '0', '0', '', '0', '0', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '40', '', '1', @now, @now); + + +-- 更新状态 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '修改选项树表状态', 'optionTreeDemoStatus', '', '', '3', '', '/optionTreeDemo/status', '', '', '1', '', '0', '0', '', '0', '0', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '50', '', '1', @now, @now); + + + +-- 导出 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '导出选项树表', 'optionTreeDemoExport', '', '', '3', '', '/optionTreeDemo/export', '', '', '1', '', '0', '0', '', '0', '0', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '70', '', '1', @now, @now); + + +-- 关系树选项 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '获取选项树表关系树选项', 'optionTreeDemoTreeOption', '', '', '3', '', '/optionTreeDemo/treeOption', '', '', '1', '', '0', '0', '', '0', '0', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '70', '', '1', @now, @now); + +COMMIT; \ No newline at end of file diff --git a/server/storage/data/generate/test_category_menu.sql b/server/storage/data/generate/test_category_menu.sql new file mode 100644 index 0000000..53e13c4 --- /dev/null +++ b/server/storage/data/generate/test_category_menu.sql @@ -0,0 +1,62 @@ +-- hotgo自动生成菜单权限SQL 通常情况下只在首次生成代码时自动执行一次 +-- 如需再次执行请先手动删除生成的菜单权限和SQL文件:C:\Users\Administrator\Desktop\gosrc\hotgo_dev\server\storage\data\generate\test_category_menu.sql +-- Version: 2.13.1 +-- Date: 2024-04-08 23:26:32 +-- Link https://github.com/bufanyun/hotgo + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; + +-- +-- 数据库: `hotgo` +-- + +-- -------------------------------------------------------- + +-- +-- 插入表中的数据 `hg_admin_menu` +-- + + +SET @now := now(); + + +-- 菜单目录 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, '2366', '测试分类', 'testCategory', '/testCategory', '', '1', '/develop/generateDemo/testCategory/index', '', '', 'ParentLayout', '1', '', '0', '0', '', '0', '0', '0', '3', 'tr_2097 tr_2366 ', '1000', '', '1', @now, @now); + + +SET @dirId = LAST_INSERT_ID(); + + +-- 菜单页面 +-- 列表 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @dirId, '测试分类列表', 'testCategoryIndex', 'index', '', '2', '', '/testCategory/list', '', '/testCategory/index', '1', 'testCategory', '0', '0', '', '0', '1', '0', '4', CONCAT('tr_2097 tr_2366 tr_', @dirId,' '), '10', '', '1', @now, @now); + + +SET @listId = LAST_INSERT_ID(); + +-- 详情 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '测试分类详情', 'testCategoryView', '', '', '3', '', '/testCategory/view', '', '', '1', '', '0', '0', '', '0', '1', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '10', '', '1', @now, @now); + + +-- 菜单按钮 + +-- 编辑 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '编辑/新增测试分类', 'testCategoryEdit', '', '', '3', '', '/testCategory/edit', '', '', '1', '', '0', '0', '', '0', '1', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '20', '', '1', @now, @now); + + +SET @editId = LAST_INSERT_ID(); + +-- 获取最大排序 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @editId, '获取测试分类最大排序', 'testCategoryMaxSort', '', '', '3', '', '/testCategory/maxSort', '', '', '1', '', '0', '0', '', '0', '0', '0', '6', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId, ' tr_', @editId,' '), '30', '', '1', @now, @now); + + +-- 删除 +INSERT INTO `hg_admin_menu` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '删除测试分类', 'testCategoryDelete', '', '', '3', '', '/testCategory/delete', '', '', '1', '', '0', '0', '', '0', '0', '0', '5', CONCAT('tr_2097 tr_2366 tr_', @dirId, ' tr_', @listId,' '), '40', '', '1', @now, @now); + + + + + +COMMIT; \ No newline at end of file diff --git a/server/storage/data/hotgo-pg.sql b/server/storage/data/hotgo-pg.sql new file mode 100644 index 0000000..bf34441 --- /dev/null +++ b/server/storage/data/hotgo-pg.sql @@ -0,0 +1,7066 @@ +-- ========================================== +-- HotGo PostgreSQL 18 Database Schema +-- ========================================== + + +-- 设置时区 +SET TIMEZONE = 'UTC'; + +-- 创建扩展 +CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; +CREATE EXTENSION IF NOT EXISTS "pgcrypto"; + +-- hg_addon_hgexample_table + +CREATE TABLE IF NOT EXISTS hg_addon_hgexample_table ( + id BIGSERIAL PRIMARY KEY, + pid BIGINT NOT NULL DEFAULT 0, + level INTEGER NOT NULL DEFAULT 1, + tree TEXT, + category_id BIGINT, + flag JSONB, + title VARCHAR(255) NOT NULL, + description VARCHAR(255), + content TEXT, + image VARCHAR(255), + images JSONB, + attachfile VARCHAR(255), + attachfiles JSONB, + map JSONB, + star NUMERIC(5,1) DEFAULT 0.0, + price NUMERIC(10,2) NOT NULL DEFAULT 0.00, + views BIGINT, + activity_at DATE, + start_at TIMESTAMP, + end_at TIMESTAMP, + switch SMALLINT, + sort INTEGER, + avatar VARCHAR(255) DEFAULT '', + sex SMALLINT, + qq VARCHAR(20) DEFAULT '', + email VARCHAR(60) DEFAULT '', + mobile VARCHAR(20) DEFAULT '', + hobby JSONB, + channel INTEGER DEFAULT 1, + city_id BIGINT DEFAULT 0, + remark VARCHAR(255), + status SMALLINT DEFAULT 1, + created_by BIGINT DEFAULT 0, + updated_by BIGINT DEFAULT 0, + created_at TIMESTAMP, + updated_at TIMESTAMP, + deleted_at TIMESTAMP +); + +COMMENT ON TABLE hg_addon_hgexample_table IS '插件_案例_表格'; +COMMENT ON COLUMN hg_addon_hgexample_table.id IS 'ID'; +COMMENT ON COLUMN hg_addon_hgexample_table.pid IS '上级ID'; +COMMENT ON COLUMN hg_addon_hgexample_table.level IS '树等级'; +COMMENT ON COLUMN hg_addon_hgexample_table.tree IS '关系树'; +COMMENT ON COLUMN hg_addon_hgexample_table.category_id IS '分类ID'; +COMMENT ON COLUMN hg_addon_hgexample_table.flag IS '标签'; +COMMENT ON COLUMN hg_addon_hgexample_table.title IS '标题'; +COMMENT ON COLUMN hg_addon_hgexample_table.description IS '描述'; +COMMENT ON COLUMN hg_addon_hgexample_table.content IS '内容'; +COMMENT ON COLUMN hg_addon_hgexample_table.image IS '单图'; +COMMENT ON COLUMN hg_addon_hgexample_table.images IS '多图'; +COMMENT ON COLUMN hg_addon_hgexample_table.attachfile IS '附件'; +COMMENT ON COLUMN hg_addon_hgexample_table.attachfiles IS '多附件'; +COMMENT ON COLUMN hg_addon_hgexample_table.map IS '动态键值对'; +COMMENT ON COLUMN hg_addon_hgexample_table.star IS '推荐星'; +COMMENT ON COLUMN hg_addon_hgexample_table.price IS '价格'; +COMMENT ON COLUMN hg_addon_hgexample_table.views IS '浏览次数'; +COMMENT ON COLUMN hg_addon_hgexample_table.activity_at IS '活动时间'; +COMMENT ON COLUMN hg_addon_hgexample_table.start_at IS '开启时间'; +COMMENT ON COLUMN hg_addon_hgexample_table.end_at IS '结束时间'; +COMMENT ON COLUMN hg_addon_hgexample_table.switch IS '开关'; +COMMENT ON COLUMN hg_addon_hgexample_table.sort IS '排序'; +COMMENT ON COLUMN hg_addon_hgexample_table.avatar IS '头像'; +COMMENT ON COLUMN hg_addon_hgexample_table.sex IS '性别'; +COMMENT ON COLUMN hg_addon_hgexample_table.qq IS 'qq'; +COMMENT ON COLUMN hg_addon_hgexample_table.email IS '邮箱'; +COMMENT ON COLUMN hg_addon_hgexample_table.mobile IS '手机号码'; +COMMENT ON COLUMN hg_addon_hgexample_table.hobby IS '爱好'; +COMMENT ON COLUMN hg_addon_hgexample_table.channel IS '渠道'; +COMMENT ON COLUMN hg_addon_hgexample_table.city_id IS '所在城市'; +COMMENT ON COLUMN hg_addon_hgexample_table.remark IS '备注'; +COMMENT ON COLUMN hg_addon_hgexample_table.status IS '状态'; +COMMENT ON COLUMN hg_addon_hgexample_table.created_by IS '创建者'; +COMMENT ON COLUMN hg_addon_hgexample_table.updated_by IS '更新者'; +COMMENT ON COLUMN hg_addon_hgexample_table.created_at IS '创建时间'; +COMMENT ON COLUMN hg_addon_hgexample_table.updated_at IS '修改时间'; +COMMENT ON COLUMN hg_addon_hgexample_table.deleted_at IS '删除时间'; + +-- 创建 hg_addon_hgexample_tenant_order 表 + +CREATE TABLE IF NOT EXISTS hg_addon_hgexample_tenant_order ( + id BIGSERIAL PRIMARY KEY, + tenant_id BIGINT, + merchant_id BIGINT NOT NULL, + user_id BIGINT NOT NULL, + product_name VARCHAR(255), + order_sn VARCHAR(64), + money NUMERIC(10,2) NOT NULL, + remark VARCHAR(255), + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_addon_hgexample_tenant_order IS '多租户_充值订单'; +COMMENT ON COLUMN hg_addon_hgexample_tenant_order.id IS '主键'; +COMMENT ON COLUMN hg_addon_hgexample_tenant_order.tenant_id IS '租户ID'; +COMMENT ON COLUMN hg_addon_hgexample_tenant_order.merchant_id IS '商户ID'; +COMMENT ON COLUMN hg_addon_hgexample_tenant_order.user_id IS '用户ID'; +COMMENT ON COLUMN hg_addon_hgexample_tenant_order.product_name IS '购买产品'; +COMMENT ON COLUMN hg_addon_hgexample_tenant_order.order_sn IS '订单号'; +COMMENT ON COLUMN hg_addon_hgexample_tenant_order.money IS '充值金额'; +COMMENT ON COLUMN hg_addon_hgexample_tenant_order.remark IS '备注'; +COMMENT ON COLUMN hg_addon_hgexample_tenant_order.status IS '订单状态'; +COMMENT ON COLUMN hg_addon_hgexample_tenant_order.created_at IS '创建时间'; +COMMENT ON COLUMN hg_addon_hgexample_tenant_order.updated_at IS '修改时间'; + +-- hg_admin_cash + +CREATE TABLE IF NOT EXISTS hg_admin_cash ( + id BIGSERIAL PRIMARY KEY, + member_id BIGINT NOT NULL, + money NUMERIC(10,2) NOT NULL, + fee NUMERIC(10,2) NOT NULL, + last_money NUMERIC(10,2) NOT NULL, + ip VARCHAR(128) NOT NULL, + status BIGINT NOT NULL, + msg VARCHAR(128) NOT NULL, + handle_at TIMESTAMP, + created_at TIMESTAMP NOT NULL +); + +COMMENT ON TABLE hg_admin_cash IS '管理员_提现记录表'; +COMMENT ON COLUMN hg_admin_cash.id IS 'ID'; +COMMENT ON COLUMN hg_admin_cash.member_id IS '管理员ID'; +COMMENT ON COLUMN hg_admin_cash.money IS '提现金额'; +COMMENT ON COLUMN hg_admin_cash.fee IS '手续费'; +COMMENT ON COLUMN hg_admin_cash.last_money IS '最终到账金额'; +COMMENT ON COLUMN hg_admin_cash.ip IS '申请人IP'; +COMMENT ON COLUMN hg_admin_cash.status IS '状态码'; +COMMENT ON COLUMN hg_admin_cash.msg IS '处理结果'; +COMMENT ON COLUMN hg_admin_cash.handle_at IS '处理时间'; +COMMENT ON COLUMN hg_admin_cash.created_at IS '申请时间'; + +-- hg_admin_credits_log + +CREATE TABLE IF NOT EXISTS hg_admin_credits_log ( + id BIGSERIAL PRIMARY KEY, + member_id BIGINT DEFAULT 0, + app_id VARCHAR(64), + addons_name VARCHAR(100) DEFAULT '', + credit_type VARCHAR(32) NOT NULL DEFAULT '', + credit_group VARCHAR(32), + before_num NUMERIC(10,2) DEFAULT 0.00, + num NUMERIC(10,2) DEFAULT 0.00, + after_num NUMERIC(10,2) DEFAULT 0.00, + remark VARCHAR(255), + ip VARCHAR(20), + map_id BIGINT DEFAULT 0, + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_admin_credits_log IS '管理员_资产变动表'; +COMMENT ON COLUMN hg_admin_credits_log.id IS '变动ID'; +COMMENT ON COLUMN hg_admin_credits_log.member_id IS '管理员ID'; +COMMENT ON COLUMN hg_admin_credits_log.app_id IS '应用id'; +COMMENT ON COLUMN hg_admin_credits_log.addons_name IS '插件名称'; +COMMENT ON COLUMN hg_admin_credits_log.credit_type IS '变动类型'; +COMMENT ON COLUMN hg_admin_credits_log.credit_group IS '变动组别'; +COMMENT ON COLUMN hg_admin_credits_log.before_num IS '变动前'; +COMMENT ON COLUMN hg_admin_credits_log.num IS '变动数据'; +COMMENT ON COLUMN hg_admin_credits_log.after_num IS '变动后'; +COMMENT ON COLUMN hg_admin_credits_log.remark IS '备注'; +COMMENT ON COLUMN hg_admin_credits_log.ip IS '操作人IP'; +COMMENT ON COLUMN hg_admin_credits_log.map_id IS '关联ID'; +COMMENT ON COLUMN hg_admin_credits_log.status IS '状态'; +COMMENT ON COLUMN hg_admin_credits_log.created_at IS '创建时间'; +COMMENT ON COLUMN hg_admin_credits_log.updated_at IS '修改时间'; + +-- hg_admin_dept + +CREATE TABLE IF NOT EXISTS hg_admin_dept ( + id BIGSERIAL PRIMARY KEY, + pid BIGINT DEFAULT 0, + name VARCHAR(32), + code VARCHAR(255), + type VARCHAR(10), + leader VARCHAR(32), + phone VARCHAR(11), + email VARCHAR(64), + level INTEGER NOT NULL, + tree TEXT, + sort INTEGER DEFAULT 0, + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_admin_dept IS '管理员_部门'; +COMMENT ON COLUMN hg_admin_dept.id IS '部门ID'; +COMMENT ON COLUMN hg_admin_dept.pid IS '父部门ID'; +COMMENT ON COLUMN hg_admin_dept.name IS '部门名称'; +COMMENT ON COLUMN hg_admin_dept.code IS '部门编码'; +COMMENT ON COLUMN hg_admin_dept.type IS '部门类型'; +COMMENT ON COLUMN hg_admin_dept.leader IS '负责人'; +COMMENT ON COLUMN hg_admin_dept.phone IS '联系电话'; +COMMENT ON COLUMN hg_admin_dept.email IS '邮箱'; +COMMENT ON COLUMN hg_admin_dept.level IS '关系树等级'; +COMMENT ON COLUMN hg_admin_dept.tree IS '关系树'; +COMMENT ON COLUMN hg_admin_dept.sort IS '排序'; +COMMENT ON COLUMN hg_admin_dept.status IS '部门状态'; +COMMENT ON COLUMN hg_admin_dept.created_at IS '创建时间'; +COMMENT ON COLUMN hg_admin_dept.updated_at IS '更新时间'; + +-- hg_admin_member + +CREATE TABLE IF NOT EXISTS hg_admin_member ( + id BIGSERIAL PRIMARY KEY, + dept_id BIGINT DEFAULT 0, + role_id BIGINT DEFAULT 10, + real_name VARCHAR(32) DEFAULT '', + username VARCHAR(20) NOT NULL DEFAULT '', + password_hash VARCHAR(32) NOT NULL DEFAULT '', + salt VARCHAR(16) NOT NULL, + password_reset_token VARCHAR(150) DEFAULT '', + integral NUMERIC(10,2) DEFAULT 0.00, + balance NUMERIC(10,2) DEFAULT 0.00, + avatar VARCHAR(150) DEFAULT '', + sex SMALLINT DEFAULT 1, + qq VARCHAR(20) DEFAULT '', + email VARCHAR(60) DEFAULT '', + mobile VARCHAR(20) DEFAULT '', + birthday DATE, + city_id BIGINT DEFAULT 0, + address VARCHAR(100) DEFAULT '', + pid BIGINT NOT NULL, + level INTEGER DEFAULT 1, + tree TEXT, + invite_code VARCHAR(12), + cash JSONB, + last_active_at TIMESTAMP, + remark VARCHAR(255), + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_admin_member IS '管理员_用户表'; +COMMENT ON COLUMN hg_admin_member.id IS '管理员ID'; +COMMENT ON COLUMN hg_admin_member.dept_id IS '部门ID'; +COMMENT ON COLUMN hg_admin_member.role_id IS '角色ID'; +COMMENT ON COLUMN hg_admin_member.real_name IS '真实姓名'; +COMMENT ON COLUMN hg_admin_member.username IS '帐号'; +COMMENT ON COLUMN hg_admin_member.password_hash IS '密码'; +COMMENT ON COLUMN hg_admin_member.salt IS '密码盐'; +COMMENT ON COLUMN hg_admin_member.password_reset_token IS '密码重置令牌'; +COMMENT ON COLUMN hg_admin_member.integral IS '积分'; +COMMENT ON COLUMN hg_admin_member.balance IS '余额'; +COMMENT ON COLUMN hg_admin_member.avatar IS '头像'; +COMMENT ON COLUMN hg_admin_member.sex IS '性别'; +COMMENT ON COLUMN hg_admin_member.qq IS 'qq'; +COMMENT ON COLUMN hg_admin_member.email IS '邮箱'; +COMMENT ON COLUMN hg_admin_member.mobile IS '手机号码'; +COMMENT ON COLUMN hg_admin_member.birthday IS '生日'; +COMMENT ON COLUMN hg_admin_member.city_id IS '城市编码'; +COMMENT ON COLUMN hg_admin_member.address IS '联系地址'; +COMMENT ON COLUMN hg_admin_member.pid IS '上级管理员ID'; +COMMENT ON COLUMN hg_admin_member.level IS '关系树等级'; +COMMENT ON COLUMN hg_admin_member.tree IS '关系树'; +COMMENT ON COLUMN hg_admin_member.invite_code IS '邀请码'; +COMMENT ON COLUMN hg_admin_member.cash IS '提现配置'; +COMMENT ON COLUMN hg_admin_member.last_active_at IS '最后活跃时间'; +COMMENT ON COLUMN hg_admin_member.remark IS '备注'; +COMMENT ON COLUMN hg_admin_member.status IS '状态'; +COMMENT ON COLUMN hg_admin_member.created_at IS '创建时间'; +COMMENT ON COLUMN hg_admin_member.updated_at IS '修改时间'; + +-- hg_admin_member_post + +CREATE TABLE IF NOT EXISTS hg_admin_member_post ( + member_id BIGINT NOT NULL, + post_id BIGINT NOT NULL, + PRIMARY KEY (member_id, post_id) +); + +COMMENT ON TABLE hg_admin_member_post IS '管理员_用户岗位关联'; +COMMENT ON COLUMN hg_admin_member_post.member_id IS '管理员ID'; +COMMENT ON COLUMN hg_admin_member_post.post_id IS '岗位ID'; + +-- hg_admin_member_role + +CREATE TABLE IF NOT EXISTS hg_admin_member_role ( + member_id BIGINT NOT NULL, + role_id BIGINT NOT NULL, + PRIMARY KEY (member_id, role_id) +); + +COMMENT ON TABLE hg_admin_member_role IS '管理员_用户角色关联'; +COMMENT ON COLUMN hg_admin_member_role.member_id IS '管理员ID'; +COMMENT ON COLUMN hg_admin_member_role.role_id IS '角色ID'; + +-- hg_admin_menu + +CREATE TABLE IF NOT EXISTS hg_admin_menu ( + id BIGSERIAL PRIMARY KEY, + pid BIGINT DEFAULT 0, + level INTEGER NOT NULL DEFAULT 1, + tree TEXT, + title VARCHAR(64) NOT NULL, + name VARCHAR(128) NOT NULL, + path VARCHAR(200), + icon VARCHAR(128), + type SMALLINT NOT NULL DEFAULT 1, + redirect VARCHAR(255), + permissions VARCHAR(512), + permission_name VARCHAR(64), + component VARCHAR(255), + always_show SMALLINT DEFAULT 0, + active_menu VARCHAR(255), + is_root SMALLINT DEFAULT 0, + is_frame SMALLINT DEFAULT 1, + frame_src VARCHAR(512), + keep_alive SMALLINT DEFAULT 0, + hidden SMALLINT DEFAULT 0, + affix SMALLINT DEFAULT 0, + sort INTEGER DEFAULT 0, + remark VARCHAR(255), + status SMALLINT DEFAULT 1, + updated_at TIMESTAMP, + created_at TIMESTAMP +); + +COMMENT ON TABLE hg_admin_menu IS '管理员_菜单权限'; +COMMENT ON COLUMN hg_admin_menu.id IS '菜单ID'; +COMMENT ON COLUMN hg_admin_menu.pid IS '父菜单ID'; +COMMENT ON COLUMN hg_admin_menu.level IS '关系树等级'; +COMMENT ON COLUMN hg_admin_menu.tree IS '关系树'; +COMMENT ON COLUMN hg_admin_menu.title IS '菜单名称'; +COMMENT ON COLUMN hg_admin_menu.name IS '名称编码'; +COMMENT ON COLUMN hg_admin_menu.path IS '路由地址'; +COMMENT ON COLUMN hg_admin_menu.icon IS '菜单图标'; +COMMENT ON COLUMN hg_admin_menu.type IS '菜单类型(1目录 2菜单 3按钮)'; +COMMENT ON COLUMN hg_admin_menu.redirect IS '重定向地址'; +COMMENT ON COLUMN hg_admin_menu.permissions IS '菜单包含权限集合'; +COMMENT ON COLUMN hg_admin_menu.permission_name IS '权限名称'; +COMMENT ON COLUMN hg_admin_menu.component IS '组件路径'; +COMMENT ON COLUMN hg_admin_menu.always_show IS '取消自动计算根路由模式'; +COMMENT ON COLUMN hg_admin_menu.active_menu IS '高亮菜单编码'; +COMMENT ON COLUMN hg_admin_menu.is_root IS '是否跟路由'; +COMMENT ON COLUMN hg_admin_menu.is_frame IS '是否内嵌'; +COMMENT ON COLUMN hg_admin_menu.frame_src IS '内联外部地址'; +COMMENT ON COLUMN hg_admin_menu.keep_alive IS '缓存该路由'; +COMMENT ON COLUMN hg_admin_menu.hidden IS '是否隐藏'; +COMMENT ON COLUMN hg_admin_menu.affix IS '是否固定'; +COMMENT ON COLUMN hg_admin_menu.sort IS '排序'; +COMMENT ON COLUMN hg_admin_menu.remark IS '备注'; +COMMENT ON COLUMN hg_admin_menu.status IS '菜单状态'; +COMMENT ON COLUMN hg_admin_menu.updated_at IS '更新时间'; +COMMENT ON COLUMN hg_admin_menu.created_at IS '创建时间'; + +-- hg_admin_notice + +CREATE TABLE IF NOT EXISTS hg_admin_notice ( + id BIGSERIAL PRIMARY KEY, + title VARCHAR(64) NOT NULL, + type BIGINT NOT NULL, + tag INTEGER, + content TEXT NOT NULL, + receiver JSONB, + remark VARCHAR(255), + sort INTEGER NOT NULL DEFAULT 0, + status SMALLINT DEFAULT 1, + created_by BIGINT, + updated_by BIGINT DEFAULT 0, + created_at TIMESTAMP, + updated_at TIMESTAMP, + deleted_at TIMESTAMP +); + +COMMENT ON TABLE hg_admin_notice IS '管理员_通知公告'; +COMMENT ON COLUMN hg_admin_notice.id IS '公告ID'; +COMMENT ON COLUMN hg_admin_notice.title IS '公告标题'; +COMMENT ON COLUMN hg_admin_notice.type IS '公告类型'; +COMMENT ON COLUMN hg_admin_notice.tag IS '标签'; +COMMENT ON COLUMN hg_admin_notice.content IS '公告内容'; +COMMENT ON COLUMN hg_admin_notice.receiver IS '接收者'; +COMMENT ON COLUMN hg_admin_notice.remark IS '备注'; +COMMENT ON COLUMN hg_admin_notice.sort IS '排序'; +COMMENT ON COLUMN hg_admin_notice.status IS '公告状态'; +COMMENT ON COLUMN hg_admin_notice.created_by IS '发送人'; +COMMENT ON COLUMN hg_admin_notice.updated_by IS '修改人'; +COMMENT ON COLUMN hg_admin_notice.created_at IS '创建时间'; +COMMENT ON COLUMN hg_admin_notice.updated_at IS '更新时间'; +COMMENT ON COLUMN hg_admin_notice.deleted_at IS '删除时间'; + +-- hg_admin_notice_read + +CREATE TABLE IF NOT EXISTS hg_admin_notice_read ( + id BIGSERIAL PRIMARY KEY, + notice_id BIGINT NOT NULL, + member_id BIGINT NOT NULL, + clicks INTEGER DEFAULT 1, + updated_at TIMESTAMP, + created_at TIMESTAMP +); + +COMMENT ON TABLE hg_admin_notice_read IS '管理员_公告已读记录'; +COMMENT ON COLUMN hg_admin_notice_read.id IS '记录ID'; +COMMENT ON COLUMN hg_admin_notice_read.notice_id IS '公告ID'; +COMMENT ON COLUMN hg_admin_notice_read.member_id IS '会员ID'; +COMMENT ON COLUMN hg_admin_notice_read.clicks IS '已读次数'; +COMMENT ON COLUMN hg_admin_notice_read.updated_at IS '更新时间'; +COMMENT ON COLUMN hg_admin_notice_read.created_at IS '阅读时间'; + +-- hg_admin_oauth + +CREATE TABLE IF NOT EXISTS hg_admin_oauth ( + id BIGSERIAL PRIMARY KEY, + member_id BIGINT DEFAULT 0, + unionid VARCHAR(64) DEFAULT '', + oauth_client VARCHAR(32), + oauth_openid VARCHAR(128), + sex SMALLINT DEFAULT 1, + nickname VARCHAR(255), + head_portrait VARCHAR(512), + birthday DATE, + country VARCHAR(100) DEFAULT '', + province VARCHAR(100) DEFAULT '', + city VARCHAR(100) DEFAULT '', + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_admin_oauth IS '管理员_第三方登录'; +COMMENT ON COLUMN hg_admin_oauth.id IS '主键'; +COMMENT ON COLUMN hg_admin_oauth.member_id IS '用户ID'; +COMMENT ON COLUMN hg_admin_oauth.unionid IS '唯一ID'; +COMMENT ON COLUMN hg_admin_oauth.oauth_client IS '授权组别'; +COMMENT ON COLUMN hg_admin_oauth.oauth_openid IS '授权开放ID'; +COMMENT ON COLUMN hg_admin_oauth.sex IS '性别'; +COMMENT ON COLUMN hg_admin_oauth.nickname IS '昵称'; +COMMENT ON COLUMN hg_admin_oauth.head_portrait IS '头像'; +COMMENT ON COLUMN hg_admin_oauth.birthday IS '生日'; +COMMENT ON COLUMN hg_admin_oauth.country IS '国家'; +COMMENT ON COLUMN hg_admin_oauth.province IS '省'; +COMMENT ON COLUMN hg_admin_oauth.city IS '市'; +COMMENT ON COLUMN hg_admin_oauth.status IS '状态'; +COMMENT ON COLUMN hg_admin_oauth.created_at IS '创建时间'; +COMMENT ON COLUMN hg_admin_oauth.updated_at IS '修改时间'; + +-- hg_admin_order + +CREATE TABLE IF NOT EXISTS hg_admin_order ( + id BIGSERIAL PRIMARY KEY, + member_id BIGINT DEFAULT 0, + order_type VARCHAR(32) NOT NULL, + product_id BIGINT, + order_sn VARCHAR(64) DEFAULT '', + money NUMERIC(10,2) NOT NULL, + remark VARCHAR(255), + refund_reason VARCHAR(255), + reject_refund_reason VARCHAR(255), + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_admin_order IS '管理员_充值订单'; +COMMENT ON COLUMN hg_admin_order.id IS '主键'; +COMMENT ON COLUMN hg_admin_order.member_id IS '管理员id'; +COMMENT ON COLUMN hg_admin_order.order_type IS '订单类型'; +COMMENT ON COLUMN hg_admin_order.product_id IS '产品id'; +COMMENT ON COLUMN hg_admin_order.order_sn IS '关联订单号'; +COMMENT ON COLUMN hg_admin_order.money IS '充值金额'; +COMMENT ON COLUMN hg_admin_order.remark IS '备注'; +COMMENT ON COLUMN hg_admin_order.refund_reason IS '退款原因'; +COMMENT ON COLUMN hg_admin_order.reject_refund_reason IS '拒绝退款原因'; +COMMENT ON COLUMN hg_admin_order.status IS '状态'; +COMMENT ON COLUMN hg_admin_order.created_at IS '创建时间'; +COMMENT ON COLUMN hg_admin_order.updated_at IS '修改时间'; + +-- hg_admin_post + +CREATE TABLE IF NOT EXISTS hg_admin_post ( + id BIGSERIAL PRIMARY KEY, + code VARCHAR(64) NOT NULL, + name VARCHAR(50) NOT NULL, + remark VARCHAR(500), + sort INTEGER NOT NULL, + status SMALLINT NOT NULL, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_admin_post IS '管理员_岗位'; +COMMENT ON COLUMN hg_admin_post.id IS '岗位ID'; +COMMENT ON COLUMN hg_admin_post.code IS '岗位编码'; +COMMENT ON COLUMN hg_admin_post.name IS '岗位名称'; +COMMENT ON COLUMN hg_admin_post.remark IS '备注'; +COMMENT ON COLUMN hg_admin_post.sort IS '排序'; +COMMENT ON COLUMN hg_admin_post.status IS '状态'; +COMMENT ON COLUMN hg_admin_post.created_at IS '创建时间'; +COMMENT ON COLUMN hg_admin_post.updated_at IS '更新时间'; + +-- hg_admin_role + +CREATE TABLE IF NOT EXISTS hg_admin_role ( + id BIGSERIAL PRIMARY KEY, + name VARCHAR(32) NOT NULL, + key VARCHAR(128) NOT NULL, + data_scope SMALLINT DEFAULT 1, + custom_dept JSONB, + pid BIGINT DEFAULT 0, + level INTEGER NOT NULL DEFAULT 1, + tree TEXT, + remark VARCHAR(255), + sort INTEGER NOT NULL DEFAULT 0, + status SMALLINT NOT NULL DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_admin_role IS '管理员_角色信息'; +COMMENT ON COLUMN hg_admin_role.id IS '角色ID'; +COMMENT ON COLUMN hg_admin_role.name IS '角色名称'; +COMMENT ON COLUMN hg_admin_role.key IS '角色权限字符串'; +COMMENT ON COLUMN hg_admin_role.data_scope IS '数据范围'; +COMMENT ON COLUMN hg_admin_role.custom_dept IS '自定义部门权限'; +COMMENT ON COLUMN hg_admin_role.pid IS '上级角色ID'; +COMMENT ON COLUMN hg_admin_role.level IS '关系树等级'; +COMMENT ON COLUMN hg_admin_role.tree IS '关系树'; +COMMENT ON COLUMN hg_admin_role.remark IS '备注'; +COMMENT ON COLUMN hg_admin_role.sort IS '排序'; +COMMENT ON COLUMN hg_admin_role.status IS '角色状态'; +COMMENT ON COLUMN hg_admin_role.created_at IS '创建时间'; +COMMENT ON COLUMN hg_admin_role.updated_at IS '更新时间'; + +-- hg_admin_role_casbin + +CREATE TABLE IF NOT EXISTS hg_admin_role_casbin ( + id BIGSERIAL PRIMARY KEY, + p_type VARCHAR(64), + v0 VARCHAR(256), + v1 VARCHAR(256), + v2 VARCHAR(256), + v3 VARCHAR(256), + v4 VARCHAR(256), + v5 VARCHAR(256) +); + +COMMENT ON TABLE hg_admin_role_casbin IS '管理员_casbin权限表'; + +-- hg_admin_role_menu + +CREATE TABLE IF NOT EXISTS hg_admin_role_menu ( + role_id BIGINT NOT NULL, + menu_id BIGINT NOT NULL, + PRIMARY KEY (role_id, menu_id) +); + +COMMENT ON TABLE hg_admin_role_menu IS '管理员_角色菜单关联'; +COMMENT ON COLUMN hg_admin_role_menu.role_id IS '角色ID'; +COMMENT ON COLUMN hg_admin_role_menu.menu_id IS '菜单ID'; + +-- hg_pay_log + +CREATE TABLE IF NOT EXISTS hg_pay_log ( + id BIGSERIAL PRIMARY KEY, + member_id BIGINT DEFAULT 0, + app_id VARCHAR(50), + addons_name VARCHAR(100) DEFAULT '', + order_sn VARCHAR(64) DEFAULT '', + order_group VARCHAR(32) DEFAULT '', + openid VARCHAR(50) DEFAULT '', + mch_id VARCHAR(20) DEFAULT '', + subject VARCHAR(255), + detail JSONB, + auth_code VARCHAR(50) DEFAULT '', + out_trade_no VARCHAR(128) DEFAULT '', + transaction_id VARCHAR(128), + pay_type VARCHAR(32) NOT NULL, + pay_amount NUMERIC(10,2) NOT NULL DEFAULT 0.00, + actual_amount NUMERIC(10,2), + pay_status SMALLINT DEFAULT 0, + pay_at TIMESTAMP, + trade_type VARCHAR(16) DEFAULT '', + refund_sn VARCHAR(128), + is_refund SMALLINT DEFAULT 0, + custom TEXT, + create_ip VARCHAR(128), + pay_ip VARCHAR(128), + notify_url VARCHAR(255), + return_url VARCHAR(255), + trace_ids JSONB, + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_pay_log IS '支付_支付日志'; +COMMENT ON COLUMN hg_pay_log.id IS '主键'; +COMMENT ON COLUMN hg_pay_log.member_id IS '会员ID'; +COMMENT ON COLUMN hg_pay_log.app_id IS '应用ID'; +COMMENT ON COLUMN hg_pay_log.addons_name IS '插件名称'; +COMMENT ON COLUMN hg_pay_log.order_sn IS '关联订单号'; +COMMENT ON COLUMN hg_pay_log.order_group IS '组别[默认统一支付类型]'; +COMMENT ON COLUMN hg_pay_log.openid IS 'openid'; +COMMENT ON COLUMN hg_pay_log.mch_id IS '商户支付账户'; +COMMENT ON COLUMN hg_pay_log.subject IS '订单标题'; +COMMENT ON COLUMN hg_pay_log.detail IS '支付商品详情'; +COMMENT ON COLUMN hg_pay_log.auth_code IS '刷卡码'; +COMMENT ON COLUMN hg_pay_log.out_trade_no IS '商户订单号'; +COMMENT ON COLUMN hg_pay_log.transaction_id IS '交易号'; +COMMENT ON COLUMN hg_pay_log.pay_type IS '支付类型'; +COMMENT ON COLUMN hg_pay_log.pay_amount IS '支付金额'; +COMMENT ON COLUMN hg_pay_log.actual_amount IS '实付金额'; +COMMENT ON COLUMN hg_pay_log.pay_status IS '支付状态'; +COMMENT ON COLUMN hg_pay_log.pay_at IS '支付时间'; +COMMENT ON COLUMN hg_pay_log.trade_type IS '交易类型'; +COMMENT ON COLUMN hg_pay_log.refund_sn IS '退款单号'; +COMMENT ON COLUMN hg_pay_log.is_refund IS '是否退款'; +COMMENT ON COLUMN hg_pay_log.custom IS '自定义参数'; +COMMENT ON COLUMN hg_pay_log.create_ip IS '创建者IP'; +COMMENT ON COLUMN hg_pay_log.pay_ip IS '支付者IP'; +COMMENT ON COLUMN hg_pay_log.notify_url IS '支付通知回调地址'; +COMMENT ON COLUMN hg_pay_log.return_url IS '买家付款成功跳转地址'; +COMMENT ON COLUMN hg_pay_log.trace_ids IS '链路ID集合'; +COMMENT ON COLUMN hg_pay_log.status IS '状态'; +COMMENT ON COLUMN hg_pay_log.created_at IS '创建时间'; +COMMENT ON COLUMN hg_pay_log.updated_at IS '修改时间'; + +-- hg_pay_refund + +CREATE TABLE IF NOT EXISTS hg_pay_refund ( + id BIGSERIAL PRIMARY KEY, + member_id BIGINT DEFAULT 0, + app_id VARCHAR(32), + order_sn VARCHAR(64), + refund_trade_no VARCHAR(128), + refund_money NUMERIC(10,2), + refund_way SMALLINT DEFAULT 1, + ip VARCHAR(30), + reason VARCHAR(255), + remark VARCHAR(255), + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_pay_refund IS '支付_退款记录'; +COMMENT ON COLUMN hg_pay_refund.id IS '主键ID'; +COMMENT ON COLUMN hg_pay_refund.member_id IS '会员ID'; +COMMENT ON COLUMN hg_pay_refund.app_id IS '应用ID'; +COMMENT ON COLUMN hg_pay_refund.order_sn IS '业务订单号'; +COMMENT ON COLUMN hg_pay_refund.refund_trade_no IS '退款交易号'; +COMMENT ON COLUMN hg_pay_refund.refund_money IS '退款金额'; +COMMENT ON COLUMN hg_pay_refund.refund_way IS '退款方式'; +COMMENT ON COLUMN hg_pay_refund.ip IS '申请者IP'; +COMMENT ON COLUMN hg_pay_refund.reason IS '申请退款原因'; +COMMENT ON COLUMN hg_pay_refund.remark IS '退款备注'; +COMMENT ON COLUMN hg_pay_refund.status IS '退款状态'; +COMMENT ON COLUMN hg_pay_refund.created_at IS '申请时间'; +COMMENT ON COLUMN hg_pay_refund.updated_at IS '更新时间'; + +-- hg_sys_addons_config + +CREATE TABLE IF NOT EXISTS hg_sys_addons_config ( + id BIGSERIAL PRIMARY KEY, + addon_name VARCHAR(128) NOT NULL, + "group" VARCHAR(128) NOT NULL, + name VARCHAR(100) DEFAULT '', + type VARCHAR(32) NOT NULL, + key VARCHAR(100) DEFAULT '', + value VARCHAR(500) DEFAULT '', + default_value VARCHAR(500) NOT NULL, + sort INTEGER NOT NULL DEFAULT 0, + tip VARCHAR(500), + is_default SMALLINT DEFAULT 0, + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_addons_config IS '系统_插件配置'; +COMMENT ON COLUMN hg_sys_addons_config.id IS '配置ID'; +COMMENT ON COLUMN hg_sys_addons_config.addon_name IS '插件名称'; +COMMENT ON COLUMN hg_sys_addons_config.group IS '分组'; +COMMENT ON COLUMN hg_sys_addons_config.name IS '参数名称'; +COMMENT ON COLUMN hg_sys_addons_config.type IS '键值类型:string,int,uint,bool,TIMESTAMP,date'; +COMMENT ON COLUMN hg_sys_addons_config.key IS '参数键名'; +COMMENT ON COLUMN hg_sys_addons_config.value IS '参数键值'; +COMMENT ON COLUMN hg_sys_addons_config.default_value IS '默认值'; +COMMENT ON COLUMN hg_sys_addons_config.sort IS '排序'; +COMMENT ON COLUMN hg_sys_addons_config.tip IS '变量描述'; +COMMENT ON COLUMN hg_sys_addons_config.is_default IS '是否为系统默认'; +COMMENT ON COLUMN hg_sys_addons_config.status IS '状态'; +COMMENT ON COLUMN hg_sys_addons_config.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_addons_config.updated_at IS '更新时间'; + +-- hg_sys_addons_install + +CREATE TABLE IF NOT EXISTS hg_sys_addons_install ( + id BIGSERIAL PRIMARY KEY, + name VARCHAR(255) NOT NULL, + version VARCHAR(128) NOT NULL DEFAULT '', + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_addons_install IS '系统_插件安装记录'; +COMMENT ON COLUMN hg_sys_addons_install.id IS '主键'; +COMMENT ON COLUMN hg_sys_addons_install.name IS '插件名称'; +COMMENT ON COLUMN hg_sys_addons_install.version IS '版本号'; +COMMENT ON COLUMN hg_sys_addons_install.status IS '状态'; +COMMENT ON COLUMN hg_sys_addons_install.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_addons_install.updated_at IS '更新时间'; + +-- hg_sys_attachment + +CREATE TABLE IF NOT EXISTS hg_sys_attachment ( + id BIGSERIAL PRIMARY KEY, + app_id VARCHAR(64) NOT NULL, + member_id BIGINT DEFAULT 0, + cate_id BIGINT DEFAULT 0, + drive VARCHAR(64), + name VARCHAR(1000), + kind VARCHAR(16), + mime_type VARCHAR(128) NOT NULL DEFAULT '', + naive_type VARCHAR(32), + path VARCHAR(1000), + file_url VARCHAR(1000), + size BIGINT DEFAULT 0, + ext VARCHAR(50), + md5 VARCHAR(32), + status SMALLINT NOT NULL DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_attachment IS '系统_附件管理'; +COMMENT ON COLUMN hg_sys_attachment.id IS '文件ID'; +COMMENT ON COLUMN hg_sys_attachment.app_id IS '应用ID'; +COMMENT ON COLUMN hg_sys_attachment.member_id IS '管理员ID'; +COMMENT ON COLUMN hg_sys_attachment.cate_id IS '上传分类'; +COMMENT ON COLUMN hg_sys_attachment.drive IS '上传驱动'; +COMMENT ON COLUMN hg_sys_attachment.name IS '文件原始名'; +COMMENT ON COLUMN hg_sys_attachment.kind IS '上传类型'; +COMMENT ON COLUMN hg_sys_attachment.mime_type IS '扩展类型'; +COMMENT ON COLUMN hg_sys_attachment.naive_type IS 'NaiveUI类型'; +COMMENT ON COLUMN hg_sys_attachment.path IS '本地路径'; +COMMENT ON COLUMN hg_sys_attachment.file_url IS 'url'; +COMMENT ON COLUMN hg_sys_attachment.size IS '文件大小'; +COMMENT ON COLUMN hg_sys_attachment.ext IS '扩展名'; +COMMENT ON COLUMN hg_sys_attachment.md5 IS 'md5校验码'; +COMMENT ON COLUMN hg_sys_attachment.status IS '状态'; +COMMENT ON COLUMN hg_sys_attachment.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_attachment.updated_at IS '修改时间'; + +-- hg_sys_blacklist + +CREATE TABLE IF NOT EXISTS hg_sys_blacklist ( + id BIGSERIAL PRIMARY KEY, + ip VARCHAR(100) DEFAULT '', + remark VARCHAR(500), + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_blacklist IS '系统_访问黑名单'; +COMMENT ON COLUMN hg_sys_blacklist.id IS '黑名单ID'; +COMMENT ON COLUMN hg_sys_blacklist.ip IS 'IP地址'; +COMMENT ON COLUMN hg_sys_blacklist.remark IS '备注'; +COMMENT ON COLUMN hg_sys_blacklist.status IS '状态'; +COMMENT ON COLUMN hg_sys_blacklist.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_blacklist.updated_at IS '更新时间'; + +-- hg_sys_config + +CREATE TABLE IF NOT EXISTS hg_sys_config ( + id BIGSERIAL PRIMARY KEY, + "group" VARCHAR(128) NOT NULL, + name VARCHAR(100) DEFAULT '', + type VARCHAR(32) NOT NULL, + key VARCHAR(100) DEFAULT '', + value TEXT, + default_value VARCHAR(500) NOT NULL, + sort INTEGER NOT NULL DEFAULT 0, + tip VARCHAR(500), + is_default SMALLINT DEFAULT 0, + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_config IS '系统_配置'; +COMMENT ON COLUMN hg_sys_config.id IS '配置ID'; +COMMENT ON COLUMN hg_sys_config.group IS '配置分组'; +COMMENT ON COLUMN hg_sys_config.name IS '参数名称'; +COMMENT ON COLUMN hg_sys_config.type IS '键值类型:string,int,uint,bool,TIMESTAMP,date'; +COMMENT ON COLUMN hg_sys_config.key IS '参数键名'; +COMMENT ON COLUMN hg_sys_config.value IS '参数键值'; +COMMENT ON COLUMN hg_sys_config.default_value IS '默认值'; +COMMENT ON COLUMN hg_sys_config.sort IS '排序'; +COMMENT ON COLUMN hg_sys_config.tip IS '变量描述'; +COMMENT ON COLUMN hg_sys_config.is_default IS '是否为系统默认'; +COMMENT ON COLUMN hg_sys_config.status IS '状态'; +COMMENT ON COLUMN hg_sys_config.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_config.updated_at IS '更新时间'; + +-- hg_sys_cron + +CREATE TABLE IF NOT EXISTS hg_sys_cron ( + id BIGSERIAL PRIMARY KEY, + "group_id" BIGINT NOT NULL, + title VARCHAR(128) NOT NULL, + name VARCHAR(100), + params VARCHAR(255), + pattern VARCHAR(64) NOT NULL, + policy BIGINT NOT NULL DEFAULT 1, + count BIGINT NOT NULL DEFAULT 0, + sort INTEGER DEFAULT 0, + remark VARCHAR(500), + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_cron IS '系统_定时任务'; +COMMENT ON COLUMN hg_sys_cron.id IS '任务ID'; +COMMENT ON COLUMN hg_sys_cron.group_id IS '分组ID'; +COMMENT ON COLUMN hg_sys_cron.title IS '任务标题'; +COMMENT ON COLUMN hg_sys_cron.name IS '任务方法'; +COMMENT ON COLUMN hg_sys_cron.params IS '函数参数'; +COMMENT ON COLUMN hg_sys_cron.pattern IS '表达式'; +COMMENT ON COLUMN hg_sys_cron.policy IS '策略'; +COMMENT ON COLUMN hg_sys_cron.count IS '执行次数'; +COMMENT ON COLUMN hg_sys_cron.sort IS '排序'; +COMMENT ON COLUMN hg_sys_cron.remark IS '备注'; +COMMENT ON COLUMN hg_sys_cron.status IS '任务状态'; +COMMENT ON COLUMN hg_sys_cron.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_cron.updated_at IS '更新时间'; + +-- hg_sys_cron_group + +CREATE TABLE IF NOT EXISTS hg_sys_cron_group ( + id BIGSERIAL PRIMARY KEY, + pid BIGINT NOT NULL DEFAULT 0, + name VARCHAR(100) DEFAULT '', + is_default SMALLINT DEFAULT 0, + sort INTEGER DEFAULT 0, + remark VARCHAR(500), + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_cron_group IS '系统_定时任务分组'; +COMMENT ON COLUMN hg_sys_cron_group.id IS '任务分组ID'; +COMMENT ON COLUMN hg_sys_cron_group.pid IS '父类任务分组ID'; +COMMENT ON COLUMN hg_sys_cron_group.name IS '分组名称'; +COMMENT ON COLUMN hg_sys_cron_group.is_default IS '是否默认'; +COMMENT ON COLUMN hg_sys_cron_group.sort IS '排序'; +COMMENT ON COLUMN hg_sys_cron_group.remark IS '备注'; +COMMENT ON COLUMN hg_sys_cron_group.status IS '分组状态'; +COMMENT ON COLUMN hg_sys_cron_group.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_cron_group.updated_at IS '更新时间'; + +-- hg_sys_dict_data + +CREATE TABLE IF NOT EXISTS hg_sys_dict_data ( + id BIGSERIAL PRIMARY KEY, + label VARCHAR(100), + value VARCHAR(100), + value_type VARCHAR(255) NOT NULL DEFAULT 'string', + type VARCHAR(100), + list_class VARCHAR(100), + is_default SMALLINT DEFAULT 2, + sort INTEGER DEFAULT 0, + remark VARCHAR(500), + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_dict_data IS '系统_字典数据'; +COMMENT ON COLUMN hg_sys_dict_data.id IS '字典数据ID'; +COMMENT ON COLUMN hg_sys_dict_data.label IS '字典标签'; +COMMENT ON COLUMN hg_sys_dict_data.value IS '字典键值'; +COMMENT ON COLUMN hg_sys_dict_data.value_type IS '键值数据类型:string,int,uint,bool,TIMESTAMP,date'; +COMMENT ON COLUMN hg_sys_dict_data.type IS '字典类型'; +COMMENT ON COLUMN hg_sys_dict_data.list_class IS '表格回显样式'; +COMMENT ON COLUMN hg_sys_dict_data.is_default IS '是否为系统默认'; +COMMENT ON COLUMN hg_sys_dict_data.sort IS '字典排序'; +COMMENT ON COLUMN hg_sys_dict_data.remark IS '备注'; +COMMENT ON COLUMN hg_sys_dict_data.status IS '状态'; +COMMENT ON COLUMN hg_sys_dict_data.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_dict_data.updated_at IS '更新时间'; + +-- hg_sys_dict_type + +CREATE TABLE IF NOT EXISTS hg_sys_dict_type ( + id BIGSERIAL PRIMARY KEY, + pid BIGINT NOT NULL DEFAULT 0, + name VARCHAR(100) DEFAULT '', + type VARCHAR(100) DEFAULT '', + sort INTEGER DEFAULT 0, + remark VARCHAR(500), + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_dict_type IS '系统_字典类型'; +COMMENT ON COLUMN hg_sys_dict_type.id IS '字典类型ID'; +COMMENT ON COLUMN hg_sys_dict_type.pid IS '父类字典类型ID'; +COMMENT ON COLUMN hg_sys_dict_type.name IS '字典类型名称'; +COMMENT ON COLUMN hg_sys_dict_type.type IS '字典类型'; +COMMENT ON COLUMN hg_sys_dict_type.sort IS '排序'; +COMMENT ON COLUMN hg_sys_dict_type.remark IS '备注'; +COMMENT ON COLUMN hg_sys_dict_type.status IS '字典类型状态'; +COMMENT ON COLUMN hg_sys_dict_type.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_dict_type.updated_at IS '更新时间'; + +-- hg_sys_ems_log + +CREATE TABLE IF NOT EXISTS hg_sys_ems_log ( + id BIGSERIAL PRIMARY KEY, + event VARCHAR(64) NOT NULL, + email VARCHAR(512) NOT NULL, + code VARCHAR(256) DEFAULT '', + times BIGINT NOT NULL, + content TEXT, + ip VARCHAR(128), + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_ems_log IS '系统_邮件发送记录'; +COMMENT ON COLUMN hg_sys_ems_log.id IS '主键'; +COMMENT ON COLUMN hg_sys_ems_log.event IS '事件'; +COMMENT ON COLUMN hg_sys_ems_log.email IS '邮箱地址,多个用;隔开'; +COMMENT ON COLUMN hg_sys_ems_log.code IS '验证码'; +COMMENT ON COLUMN hg_sys_ems_log.times IS '验证次数'; +COMMENT ON COLUMN hg_sys_ems_log.content IS '邮件内容'; +COMMENT ON COLUMN hg_sys_ems_log.ip IS 'ip地址'; +COMMENT ON COLUMN hg_sys_ems_log.status IS '状态(1未验证,2已验证)'; +COMMENT ON COLUMN hg_sys_ems_log.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_ems_log.updated_at IS '更新时间'; + +-- hg_sys_gen_codes + +CREATE TABLE IF NOT EXISTS hg_sys_gen_codes ( + id BIGSERIAL PRIMARY KEY, + gen_type INTEGER NOT NULL, + gen_template INTEGER DEFAULT 0, + var_name VARCHAR(255) NOT NULL, + options JSONB, + db_name VARCHAR(128), + table_name VARCHAR(255) NOT NULL, + table_comment VARCHAR(255), + dao_name VARCHAR(255), + master_columns JSONB, + addon_name VARCHAR(128), + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_gen_codes IS '系统_代码生成记录'; +COMMENT ON COLUMN hg_sys_gen_codes.id IS '生成ID'; +COMMENT ON COLUMN hg_sys_gen_codes.gen_type IS '生成类型'; +COMMENT ON COLUMN hg_sys_gen_codes.gen_template IS '生成模板'; +COMMENT ON COLUMN hg_sys_gen_codes.var_name IS '实体命名'; +COMMENT ON COLUMN hg_sys_gen_codes.options IS '配置选项'; +COMMENT ON COLUMN hg_sys_gen_codes.db_name IS '数据库名称'; +COMMENT ON COLUMN hg_sys_gen_codes.table_name IS '主表名称'; +COMMENT ON COLUMN hg_sys_gen_codes.table_comment IS '主表注释'; +COMMENT ON COLUMN hg_sys_gen_codes.dao_name IS '主表dao模型'; +COMMENT ON COLUMN hg_sys_gen_codes.master_columns IS '主表字段'; +COMMENT ON COLUMN hg_sys_gen_codes.addon_name IS '插件名称'; +COMMENT ON COLUMN hg_sys_gen_codes.status IS '生成状态'; +COMMENT ON COLUMN hg_sys_gen_codes.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_gen_codes.updated_at IS '更新时间'; + +-- hg_sys_gen_curd_demo + +CREATE TABLE IF NOT EXISTS hg_sys_gen_curd_demo ( + id BIGSERIAL PRIMARY KEY, + category_id BIGINT DEFAULT 0, + title VARCHAR(64) NOT NULL, + description VARCHAR(255) DEFAULT '', + content TEXT, + image VARCHAR(255), + attachfile VARCHAR(255), + city_id BIGINT DEFAULT 0, + switch SMALLINT DEFAULT 1, + sort INTEGER, + status SMALLINT DEFAULT 1, + created_by BIGINT DEFAULT 0, + updated_by BIGINT DEFAULT 0, + deleted_by BIGINT DEFAULT 0, + created_at TIMESTAMP, + updated_at TIMESTAMP, + deleted_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_gen_curd_demo IS '系统_生成curd演示'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.id IS 'ID'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.category_id IS '分类ID'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.title IS '标题'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.description IS '描述'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.content IS '内容'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.image IS '单图'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.attachfile IS '附件'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.city_id IS '所在城市'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.switch IS '显示开关'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.sort IS '排序'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.status IS '状态'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.created_by IS '创建者'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.updated_by IS '更新者'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.deleted_by IS '删除者'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.updated_at IS '修改时间'; +COMMENT ON COLUMN hg_sys_gen_curd_demo.deleted_at IS '删除时间'; + +-- hg_sys_gen_tree_demo + +CREATE TABLE IF NOT EXISTS hg_sys_gen_tree_demo ( + id BIGSERIAL PRIMARY KEY, + pid BIGINT, + level INTEGER DEFAULT 1, + tree VARCHAR(512), + category_id BIGINT DEFAULT 0, + title VARCHAR(64) NOT NULL, + description VARCHAR(255), + sort INTEGER, + status SMALLINT DEFAULT 1, + created_by BIGINT DEFAULT 0, + updated_by BIGINT DEFAULT 0, + created_at TIMESTAMP, + updated_at TIMESTAMP, + deleted_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_gen_tree_demo IS '系统_生成树表演示'; +COMMENT ON COLUMN hg_sys_gen_tree_demo.id IS 'ID'; +COMMENT ON COLUMN hg_sys_gen_tree_demo.pid IS '上级ID'; +COMMENT ON COLUMN hg_sys_gen_tree_demo.level IS '关系树级别'; +COMMENT ON COLUMN hg_sys_gen_tree_demo.tree IS '关系树'; +COMMENT ON COLUMN hg_sys_gen_tree_demo.category_id IS '分类ID'; +COMMENT ON COLUMN hg_sys_gen_tree_demo.title IS '标题'; +COMMENT ON COLUMN hg_sys_gen_tree_demo.description IS '描述'; +COMMENT ON COLUMN hg_sys_gen_tree_demo.sort IS '排序'; +COMMENT ON COLUMN hg_sys_gen_tree_demo.status IS '状态'; +COMMENT ON COLUMN hg_sys_gen_tree_demo.created_by IS '创建者'; +COMMENT ON COLUMN hg_sys_gen_tree_demo.updated_by IS '更新者'; +COMMENT ON COLUMN hg_sys_gen_tree_demo.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_gen_tree_demo.updated_at IS '修改时间'; +COMMENT ON COLUMN hg_sys_gen_tree_demo.deleted_at IS '删除时间'; + +-- hg_sys_log + +CREATE TABLE IF NOT EXISTS hg_sys_log ( + id BIGSERIAL PRIMARY KEY, + req_id VARCHAR(50), + app_id VARCHAR(50) DEFAULT '', + merchant_id BIGINT DEFAULT 0, + member_id BIGINT DEFAULT 0, + method VARCHAR(20), + module VARCHAR(50), + url VARCHAR(1000), + get_data JSONB, + post_data JSONB, + header_data JSONB, + ip VARCHAR(128), + province_id BIGINT NOT NULL DEFAULT 0, + city_id BIGINT NOT NULL DEFAULT 0, + error_code INTEGER DEFAULT 0, + error_msg TEXT, + error_data JSONB, + user_agent VARCHAR(512), + take_up_time BIGINT DEFAULT 0, + timestamp BIGINT DEFAULT 0, + status SMALLINT NOT NULL DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_log IS '系统_全局日志'; +COMMENT ON COLUMN hg_sys_log.id IS '日志ID'; +COMMENT ON COLUMN hg_sys_log.req_id IS '对外ID'; +COMMENT ON COLUMN hg_sys_log.app_id IS '应用ID'; +COMMENT ON COLUMN hg_sys_log.merchant_id IS '商户ID'; +COMMENT ON COLUMN hg_sys_log.member_id IS '用户ID'; +COMMENT ON COLUMN hg_sys_log.method IS '提交类型'; +COMMENT ON COLUMN hg_sys_log.module IS '访问模块'; +COMMENT ON COLUMN hg_sys_log.url IS '提交url'; +COMMENT ON COLUMN hg_sys_log.get_data IS 'get数据'; +COMMENT ON COLUMN hg_sys_log.post_data IS 'post数据'; +COMMENT ON COLUMN hg_sys_log.header_data IS 'header数据'; +COMMENT ON COLUMN hg_sys_log.ip IS 'IP地址'; +COMMENT ON COLUMN hg_sys_log.province_id IS '省编码'; +COMMENT ON COLUMN hg_sys_log.city_id IS '市编码'; +COMMENT ON COLUMN hg_sys_log.error_code IS '报错code'; +COMMENT ON COLUMN hg_sys_log.error_msg IS '对外错误提示'; +COMMENT ON COLUMN hg_sys_log.error_data IS '报错日志'; +COMMENT ON COLUMN hg_sys_log.user_agent IS 'UA信息'; +COMMENT ON COLUMN hg_sys_log.take_up_time IS '请求耗时'; +COMMENT ON COLUMN hg_sys_log.timestamp IS '响应时间'; +COMMENT ON COLUMN hg_sys_log.status IS '状态'; +COMMENT ON COLUMN hg_sys_log.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_log.updated_at IS '修改时间'; + +-- hg_sys_login_log + +CREATE TABLE IF NOT EXISTS hg_sys_login_log ( + id BIGSERIAL PRIMARY KEY, + req_id VARCHAR(50), + member_id BIGINT DEFAULT 0, + username VARCHAR(64), + response JSONB, + login_at TIMESTAMP, + login_ip VARCHAR(128), + province_id BIGINT, + city_id BIGINT, + user_agent VARCHAR(512), + err_msg VARCHAR(1000), + status SMALLINT NOT NULL DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_login_log IS '系统_登录日志'; +COMMENT ON COLUMN hg_sys_login_log.id IS '日志ID'; +COMMENT ON COLUMN hg_sys_login_log.req_id IS '请求ID'; +COMMENT ON COLUMN hg_sys_login_log.member_id IS '用户ID'; +COMMENT ON COLUMN hg_sys_login_log.username IS '用户名'; +COMMENT ON COLUMN hg_sys_login_log.response IS '响应数据'; +COMMENT ON COLUMN hg_sys_login_log.login_at IS '登录时间'; +COMMENT ON COLUMN hg_sys_login_log.login_ip IS '登录IP'; +COMMENT ON COLUMN hg_sys_login_log.province_id IS '省编码'; +COMMENT ON COLUMN hg_sys_login_log.city_id IS '市编码'; +COMMENT ON COLUMN hg_sys_login_log.user_agent IS 'UA信息'; +COMMENT ON COLUMN hg_sys_login_log.err_msg IS '错误提示'; +COMMENT ON COLUMN hg_sys_login_log.status IS '状态'; +COMMENT ON COLUMN hg_sys_login_log.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_login_log.updated_at IS '修改时间'; + +-- hg_sys_provinces + +CREATE TABLE IF NOT EXISTS hg_sys_provinces ( + id BIGSERIAL PRIMARY KEY, + title VARCHAR(50) NOT NULL DEFAULT '', + pinyin VARCHAR(100) DEFAULT '', + lng VARCHAR(20) DEFAULT '', + lat VARCHAR(20) DEFAULT '', + pid BIGINT NOT NULL DEFAULT 0, + level INTEGER NOT NULL DEFAULT 1, + tree TEXT, + sort INTEGER DEFAULT 0, + status SMALLINT NOT NULL DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_provinces IS '系统_省市区编码'; +COMMENT ON COLUMN hg_sys_provinces.id IS '省市区ID'; +COMMENT ON COLUMN hg_sys_provinces.title IS '栏目名称'; +COMMENT ON COLUMN hg_sys_provinces.pinyin IS '拼音'; +COMMENT ON COLUMN hg_sys_provinces.lng IS '经度'; +COMMENT ON COLUMN hg_sys_provinces.lat IS '纬度'; +COMMENT ON COLUMN hg_sys_provinces.pid IS '父栏目'; +COMMENT ON COLUMN hg_sys_provinces.level IS '关系树等级'; +COMMENT ON COLUMN hg_sys_provinces.tree IS '关系'; +COMMENT ON COLUMN hg_sys_provinces.sort IS '排序'; +COMMENT ON COLUMN hg_sys_provinces.status IS '状态'; +COMMENT ON COLUMN hg_sys_provinces.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_provinces.updated_at IS '更新时间'; + +CREATE TABLE IF NOT EXISTS hg_sys_serve_license ( + id BIGSERIAL PRIMARY KEY, + "group" VARCHAR(50) NOT NULL, + name VARCHAR(128) NOT NULL, + appid VARCHAR(64) NOT NULL, + secret_key VARCHAR(255), + remote_addr VARCHAR(64), + online_limit INTEGER DEFAULT 1, + login_times BIGINT, + last_login_at TIMESTAMP, + last_active_at TIMESTAMP, + routes JSONB, + allowed_ips VARCHAR(512), + end_at TIMESTAMP NOT NULL, + remark VARCHAR(512), + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_serve_license IS '系统_服务许可证'; +COMMENT ON COLUMN hg_sys_serve_license.id IS '许可ID'; +COMMENT ON COLUMN hg_sys_serve_license."group" IS '分组'; +COMMENT ON COLUMN hg_sys_serve_license.name IS '许可名称'; +COMMENT ON COLUMN hg_sys_serve_license.appid IS '应用ID'; +COMMENT ON COLUMN hg_sys_serve_license.secret_key IS '应用秘钥'; +COMMENT ON COLUMN hg_sys_serve_license.remote_addr IS '最后连接地址'; +COMMENT ON COLUMN hg_sys_serve_license.online_limit IS '在线限制'; +COMMENT ON COLUMN hg_sys_serve_license.login_times IS '登录次数'; +COMMENT ON COLUMN hg_sys_serve_license.last_login_at IS '最后登录时间'; +COMMENT ON COLUMN hg_sys_serve_license.last_active_at IS '最后心跳'; +COMMENT ON COLUMN hg_sys_serve_license.routes IS '路由表,空使用默认分组路由'; +COMMENT ON COLUMN hg_sys_serve_license.allowed_ips IS 'IP白名单'; +COMMENT ON COLUMN hg_sys_serve_license.end_at IS '授权有效期'; +COMMENT ON COLUMN hg_sys_serve_license.remark IS '备注'; +COMMENT ON COLUMN hg_sys_serve_license.status IS '状态'; +COMMENT ON COLUMN hg_sys_serve_license.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_serve_license.updated_at IS '修改时间'; + +CREATE TABLE IF NOT EXISTS hg_sys_serve_log ( + id BIGSERIAL PRIMARY KEY, + trace_id VARCHAR(50), + level_format VARCHAR(32), + content TEXT, + stack JSONB, + line VARCHAR(255) NOT NULL, + trigger_ns BIGINT, + status SMALLINT NOT NULL DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_serve_log IS '系统_服务日志'; +COMMENT ON COLUMN hg_sys_serve_log.id IS '日志ID'; +COMMENT ON COLUMN hg_sys_serve_log.trace_id IS '链路ID'; +COMMENT ON COLUMN hg_sys_serve_log.level_format IS '日志级别'; +COMMENT ON COLUMN hg_sys_serve_log.content IS '日志内容'; +COMMENT ON COLUMN hg_sys_serve_log.stack IS '打印堆栈'; +COMMENT ON COLUMN hg_sys_serve_log.line IS '调用行'; +COMMENT ON COLUMN hg_sys_serve_log.trigger_ns IS '触发时间(ns)'; +COMMENT ON COLUMN hg_sys_serve_log.status IS '状态'; +COMMENT ON COLUMN hg_sys_serve_log.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_serve_log.updated_at IS '修改时间'; + +CREATE TABLE IF NOT EXISTS hg_sys_sms_log ( + id BIGSERIAL PRIMARY KEY, + event VARCHAR(64) NOT NULL, + mobile VARCHAR(20) NOT NULL DEFAULT '', + code VARCHAR(256) DEFAULT '', + times BIGINT NOT NULL, + ip VARCHAR(128), + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP +); + +COMMENT ON TABLE hg_sys_sms_log IS '系统_短信发送记录'; +COMMENT ON COLUMN hg_sys_sms_log.id IS '主键'; +COMMENT ON COLUMN hg_sys_sms_log.event IS '事件'; +COMMENT ON COLUMN hg_sys_sms_log.mobile IS '手机号'; +COMMENT ON COLUMN hg_sys_sms_log.code IS '验证码或短信内容'; +COMMENT ON COLUMN hg_sys_sms_log.times IS '验证次数'; +COMMENT ON COLUMN hg_sys_sms_log.ip IS 'ip地址'; +COMMENT ON COLUMN hg_sys_sms_log.status IS '状态(1未验证,2已验证)'; +COMMENT ON COLUMN hg_sys_sms_log.created_at IS '创建时间'; +COMMENT ON COLUMN hg_sys_sms_log.updated_at IS '更新时间'; + +-- 设置自增序列起始值 +ALTER SEQUENCE hg_sys_sms_log_id_seq RESTART WITH 2; + +CREATE TABLE IF NOT EXISTS hg_test_category ( + id BIGSERIAL PRIMARY KEY, + name VARCHAR(255) NOT NULL, + short_name VARCHAR(128), + description VARCHAR(255), + sort INTEGER NOT NULL, + remark VARCHAR(255), + status SMALLINT DEFAULT 1, + created_at TIMESTAMP, + updated_at TIMESTAMP, + deleted_at TIMESTAMP +); + +COMMENT ON TABLE hg_test_category IS '测试分类'; +COMMENT ON COLUMN hg_test_category.id IS '分类ID'; +COMMENT ON COLUMN hg_test_category.name IS '分类名称'; +COMMENT ON COLUMN hg_test_category.short_name IS '简称'; +COMMENT ON COLUMN hg_test_category.description IS '描述'; +COMMENT ON COLUMN hg_test_category.sort IS '排序'; +COMMENT ON COLUMN hg_test_category.remark IS '备注'; +COMMENT ON COLUMN hg_test_category.status IS '状态'; +COMMENT ON COLUMN hg_test_category.created_at IS '创建时间'; +COMMENT ON COLUMN hg_test_category.updated_at IS '修改时间'; +COMMENT ON COLUMN hg_test_category.deleted_at IS '删除时间'; + +-- 设置自增序列起始值 +ALTER SEQUENCE hg_test_category_id_seq RESTART WITH 5; + +INSERT INTO hg_addon_hgexample_table ( + id, pid, level, tree, category_id, flag, title, description, content, + image, images, attachfile, attachfiles, map, star, price, views, + activity_at, start_at, end_at, switch, sort, avatar, sex, qq, email, + mobile, hobby, channel, city_id, remark, status, created_by, updated_by, + created_at, updated_at, deleted_at +) VALUES + (1, 0, 1, NULL, 1, '[1, 2]', '测试标题', '描述', '

这是内容............

', + 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqamvhlq4w3ki6bl.webp', + '["https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqap5l9brk2lkavu.jpg", "https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqaqua7fw8ukbbp5.jpg"]', + 'http://localhost:8000/attachment/2023-07-18/cu54ama4z54oejf5xx.mp3', + '["https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqawg96ba4cuezvv.xlsx", "https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqaup19k9oznyixz.doc"]', + '{"key": "qwe", "value": "123"}', 3.0, 88.00, 10, + '2022-12-23', '2022-12-01 00:00:00', '2022-12-31 23:59:59', + 1, 20, '', 15, '133814250', '133814250@qq.com', + '15303830571', '[3, 2, 1]', 1, 140406, '备注!', 1, 1, 1, + '2022-12-15 19:30:14', '2023-07-18 20:05:45', NULL), + (2, 0, 1, NULL, 0, '[1]', '测试2', '描述', '

不知道写点啥!


', + 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqbmxmtaq06gbnqa.jpeg', + '["https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqborf529kf4cxbm.jpeg"]', + 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqawg96ba4cuezvv.xlsx', + '["https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqaup19k9oznyixz.doc"]', + '{}', 2.5, 10.00, 0, + '2023-02-18', NULL, NULL, + 0, 30, '', 0, '', '1561561@qq.com', + '15303830571', '[2, 1]', 3, 140214, '', 1, 1, 1, + '2023-02-06 14:17:11', '2023-11-13 17:18:18', NULL), + (3, 1, 2, 'tr_1 ', 0, '[1]', 'AAA', '', '', + 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqamvhlq4w3ki6bl.webp', + '["https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqborf529kf4cxbm.jpeg"]', + '', '{}', '{}', 1.0, 10.00, 0, + '2023-11-13', NULL, NULL, + 1, 40, '', 0, '13311', '1331@qq.cc', + '15303830571', '{}', 0, 0, '', 1, 1, 1, + '2023-11-13 17:34:42', '2023-11-13 17:55:26', NULL), + (4, 1, 2, 'tr_1 ', 0, '[1]', 'BBB', '', '', + 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqamvhlq4w3ki6bl.webp', + '["https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqborf529kf4cxbm.jpeg"]', + '', '{}', '{}', 2.5, 10.00, 0, + '2023-11-13', NULL, NULL, + 0, 50, '', 0, '12212', '165165@q.cc', + '15303830561', '{}', 0, 0, '', 1, 1, 1, + '2023-11-13 17:43:58', '2023-11-13 17:43:58', NULL), + (5, 3, 3, 'tr_1 tr_3', 0, '[1]', 'A1', '', '', + 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqamvhlq4w3ki6bl.webp', + '["https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqborf529kf4cxbm.jpeg"]', + '', '{}', '{}', 1.0, 10.00, 0, + '2023-11-13', NULL, NULL, + 1, 60, '', 0, '10121212', '122112@qq.cc', + '15303830571', '{}', 3, 0, '', 1, 1, 1, + '2023-11-13 17:45:22', '2024-07-21 21:55:01', NULL); + +-- 插入 hg_addon_hgexample_tenant_order 表数据 +INSERT INTO hg_addon_hgexample_tenant_order ( + id, tenant_id, merchant_id, user_id, product_name, order_sn, money, remark, status, created_at, updated_at +) VALUES + (1, 8, 11, 12, '羊毛混纺大衣', '20230502074731zsv1Vh', 99.90, '', 1, '2024-04-10 00:00:00', '2024-04-19 00:00:00'); + +-- 插入 hg_admin_cash 表数据 +INSERT INTO hg_admin_cash ( + id, member_id, money, fee, last_money, ip, status, msg, handle_at, created_at +) VALUES + (1, 1, 100.00, 3.00, 97.00, '127.0.0.1', 2, '', '2023-05-29 14:17:17', '2023-05-29 14:16:57'); + +-- 插入 hg_admin_credits_log 表数据 +INSERT INTO hg_admin_credits_log ( + id, member_id, app_id, addons_name, credit_type, credit_group, + before_num, num, after_num, remark, ip, map_id, status, + created_at, updated_at +) VALUES + (1, 1, 'admin', '', 'balance', 'apply_cash', + 99391.78, -100.00, 99291.78, '后台申请提现', '127.0.0.1', 1, 0, + '2023-05-29 14:16:57', '2023-05-29 14:16:57'), + (2, 1, 'admin', '', 'balance', 'op_incr', + 99291.78, -1.00, 99290.78, '为后台用户:8 操作增加余额:1', '127.0.0.1', 0, 0, + '2023-07-06 17:17:39', '2023-07-06 17:17:39'), + (3, 8, 'admin', '', 'balance', 'incr', + 3.22, 1.00, 4.22, '后台用户:1 为你操作增加余额:1', '127.0.0.1', 0, 0, + '2023-07-06 17:17:39', '2023-07-06 17:17:39'), + (4, 1, 'admin', '', 'balance', 'op_incr', + 99290.78, -1.00, 99289.78, '为后台用户:13 操作增加余额:1', '::1', 0, 1, + '2024-07-21 21:49:40', '2024-07-21 21:49:40'), + (5, 13, 'admin', '', 'balance', 'incr', + 0.00, 1.00, 1.00, '后台用户:1 为你操作增加余额:1', '::1', 0, 1, + '2024-07-21 21:49:40', '2024-07-21 21:49:40'), + (6, 1, 'admin', '', 'integral', 'op_incr', + 89.00, -1.00, 88.00, '为后台用户:12 操作增加积分:1', '::1', 0, 1, + '2024-07-21 21:49:46', '2024-07-21 21:49:46'), + (7, 12, 'admin', '', 'integral', 'incr', + 0.00, 1.00, 1.00, '后台用户:1 为你操作增加积分:1', '::1', 0, 1, + '2024-07-21 21:49:46', '2024-07-21 21:49:46'); + +-- 插入 hg_admin_dept 表数据 +INSERT INTO hg_admin_dept ( + id, pid, name, code, type, leader, phone, email, level, tree, sort, status, created_at, updated_at +) VALUES + (100, 0, 'hotgo', 'hotgo', 'company', 'mengshuai', '15303830571', '133814250@qq.com', 1, '', 10, 1, '2022-01-04 09:54:52', '2024-04-24 23:14:24'), + (101, 100, '深圳总公司', 'shenzhen', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 2, 'tr_100 ', 20, 1, '2022-01-04 17:54:52', '2023-08-02 14:03:23'), + (102, 100, '租户', 'tenant', 'tenant', 'hotgo', '15888888888', 'hotgo@qq.com', 2, 'tr_100 ', 1000, 1, '2022-01-04 01:54:52', '2024-04-13 22:24:58'), + (103, 101, '研发部门', 'science', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 40, 1, '2022-01-04 17:54:52', '2024-04-12 09:29:37'), + (105, 101, '测试部门', 'test', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 50, 1, '2022-01-04 17:54:52', '2024-04-12 09:29:41'), + (106, 101, '财务部门', 'finance', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 60, 1, '2022-01-04 17:54:52', '2024-04-12 09:29:45'), + (107, 101, '运维部门', 'maintain', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 70, 1, '2022-01-04 09:54:52', '2024-04-12 09:29:49'), + (110, 111, '用户', 'user', 'user', 'hotgo', '15888888888', 'hotgo@qq.com', 4, 'tr_100 tr_102 tr_111 ', 10, 1, '2024-04-12 09:18:44', '2024-04-13 22:25:07'), + (111, 102, '商户', 'merchant', 'merchant', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_102 ', 2000, 1, '2024-04-12 09:31:58', '2024-04-14 22:00:20'); + +-- 插入 hg_admin_member 表数据 +INSERT INTO hg_admin_member ( + id, dept_id, role_id, real_name, username, password_hash, salt, password_reset_token, + integral, balance, avatar, sex, qq, email, mobile, birthday, city_id, address, + pid, level, tree, invite_code, cash, last_active_at, remark, status, + created_at, updated_at +) VALUES + (1, 100, 1, '孟帅', 'admin', 'a7c588fffeb2c1d99b29879d7fe97c78', '6541561', '', + 88.00, 99289.78, 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', + 1, '133814250', '133814250@qq.com', '15303830571', '2016-04-16', 410172, '莲花街001号', + 0, 1, '', '111', + '{"name": "孟帅", "account": "15303830571", "payeeCode": "https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8mqal5isvcb58g.jpg"}', + '2024-08-27 19:02:49', NULL, 1, + '2021-02-12 17:59:45', '2024-08-27 19:02:49'), + + (3, 100, 2, '测试管理员', 'test', 'a7c588fffeb2c1d99b29879d7fe97c78', '6541561', '', + 0.00, 4.00, '', 1, '', 'c@qq.cc', '15303888888', '2016-04-13', 371100, '大潮街道666号', + 1, 2, 'tr_1 ', '222', NULL, + '2024-04-24 11:47:48', '', 1, + '2022-02-11 17:59:45', '2024-04-24 11:47:48'), + + (8, 102, 200, '阿萌', 'ameng', '382df3b083a27886edb94e669a857c33', 'hfuUEb', '', + 11.00, 4.22, '', 2, '', '', '', NULL, 0, '', + 1, 2, 'tr_1 ', '333', NULL, + '2024-04-16 18:56:00', '', 1, + '2023-02-03 17:34:31', '2024-04-16 18:56:00'), + + (9, 100, 206, '黄敏', 'test_finance', '151f5f6bb8b223fc7b589a32effb6f91', 'FhShzw', '', + 0.00, 0.00, 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', + 1, '', '', '', NULL, 0, '', + 1, 2, 'tr_1 ', '5jZUI3uWLfcj', NULL, + NULL, '', 1, + '2023-08-02 11:30:45', '2023-08-02 11:31:09'), + + (11, 111, 209, '刘芳', 'abai', '5787c7a121190011fac8376b1d3e0396', 'puUFvx', '', + 0.00, 0.00, 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', + 1, '', '', '', NULL, 0, '', + 8, 3, 'tr_1 tr_8 ', 'SH5akjqInb2p', NULL, + '2024-04-16 18:56:02', '', 1, + '2023-08-02 14:24:50', '2024-04-16 18:56:02'), + + (12, 110, 210, '李明', 'asong', '18d1e667e2e756c03186ff6d33b18fd4', 'ONYhgf', '', + 1.00, 0.00, 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', + 1, '', '', '', NULL, 0, '', + 11, 4, 'tr_1 tr_8 tr_11 ', 'pHffclXhgeg9', NULL, + '2024-04-23 18:05:03', '', 1, + '2023-08-02 14:50:49', '2024-07-21 21:49:46'), + + (13, 110, 210, '', 'user123', 'a67ec13a65125a6b2566c4229c6c496a', 'auQwMY', '', + 0.00, 1.00, 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', + 1, '', '', '', NULL, 0, '', + 1, 2, 'tr_1 ', 'bpZPxskFMBra', NULL, + '2024-04-12 11:52:31', '', 1, + '2024-04-12 10:50:46', '2024-07-21 21:49:40'); + +-- +-- 转存表中的数据 `hg_admin_member_post` +-- + +INSERT INTO hg_admin_member_post (member_id, post_id) VALUES + (3, 4), + (8, 2), + (9, 4), + (10, 4), + (11, 4); + +-- +-- 转存表中的数据 `hg_admin_member_role` +-- + +INSERT INTO hg_admin_member_role (member_id, role_id) VALUES + (1, 1), + (2, 2); + +-- 插入 hg_admin_menu 表数据 +INSERT INTO hg_admin_menu ( + id, pid, level, tree, title, name, path, icon, type, redirect, + permissions, permission_name, component, always_show, active_menu, + is_root, is_frame, frame_src, keep_alive, hidden, affix, sort, + remark, status, updated_at, created_at +) VALUES + (2047, 0, 1, '', 'Dashboard', 'Dashboard', '/dashboard', 'DashboardOutlined', 1, '/dashboard/console', + 'dashboard', '控制台', 'LAYOUT', 0, '', + 0, 1, '', 0, 0, 0, 10, + '这是一个备注..', 1, '2023-11-13 15:16:58', '2022-07-17 11:40:03'), + + (2048, 2047, 2, 'tr_2047 ', '主控台', 'dashboard_console', 'console', '', 2, '', + '/console/stat', '主控台', '/dashboard/console/console', 0, '', + 0, 1, '', 0, 0, 0, 20, + '', 1, '2023-11-13 15:16:58', '2022-07-17 11:45:09'), + + (2050, 2047, 2, 'tr_2047 ', '工作台', 'dashboard_workplace', 'workplace', '', 2, '', + 'dashboard_workplace', '工作台', '/dashboard/workplace/workplace', 0, '', + 0, 1, '', 0, 0, 0, 40, + '', 1, '2023-11-13 15:16:58', '2022-07-17 11:45:09'), + + (2061, 0, 1, '', '组织管理', 'Org', '/org', 'AppstoreOutlined', 1, '/org/user', + '', '', 'LAYOUT', 1, '', + 0, 0, '', 0, 0, 0, 20, + '', 1, '2023-11-13 15:16:58', '2022-09-16 06:08:19'), + + (2062, 2061, 2, 'tr_2061 ', '后台用户', 'user', 'user', '', 2, '', + '/dept/list,/post/list,/role/list,/member/list,/dept/option', '', '/org/user/user', 0, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-09-16 06:09:25'), + + (2063, 2061, 2, 'tr_2061 ', '部门管理', 'org_dept', 'dept', '', 2, '', + '', '', '/org/dept/dept', 0, '', + 0, 0, '', 1, 0, 0, 20, + '', 1, '2023-11-13 15:16:58', '2022-09-16 14:10:12'), + + (2064, 2061, 2, 'tr_2061 ', '岗位管理', 'org_post', 'post', '', 2, '', + '/post/list', '', '/org/post/post', 0, '', + 0, 0, '', 1, 0, 0, 30, + '', 1, '2023-11-13 15:16:58', '2022-09-16 14:11:05'), + + (2065, 0, 1, '', '权限管理', 'Permission', '/permission', 'SafetyCertificateOutlined', 1, '/permission/menu', + '', '', 'LAYOUT', 1, '', + 0, 0, '', 0, 0, 0, 40, + '', 1, '2023-11-13 15:16:58', '2022-09-15 22:08:19'), + + (2066, 2065, 2, 'tr_2065 ', '菜单权限', 'permission_menu', 'menu', '', 2, '', + '/menu/list', '', '/permission/menu/menu', 0, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-09-16 06:09:25'), + + (2067, 2065, 2, 'tr_2065 ', '角色权限', 'permission_role', 'role', '', 2, '', + '/role/list,/role/dataScope/select,/role/getPermissions', '', '/permission/role/role', 0, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-09-15 22:09:25'), + + (2068, 0, 1, '', '系统设置', 'System', '/system', 'SettingOutlined', 1, '/system/config', + '', '', 'LAYOUT', 1, '', + 0, 0, '', 0, 0, 0, 120, + '', 1, '2023-11-17 15:53:10', '2022-09-15 09:17:57'), + + (2069, 2068, 2, 'tr_2068 ', '配置管理', 'system_config', 'config', '', 2, '', + '', '', '/system/config/system', 0, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-09-16 01:19:01'), + + (2070, 2068, 2, 'tr_2068 ', '字典管理', 'system_dict', 'dict', '', 2, '', + '', '', '/system/dict/index', 1, '', + 0, 0, '', 0, 0, 0, 20, + '', 1, '2023-11-13 15:16:58', '2022-09-16 17:33:05'), + + (2071, 2068, 2, 'tr_2068 ', '定时任务', 'system_cron', 'cron', '', 2, '', + '', '', '/system/cron/index', 1, '', + 0, 0, '', 0, 0, 0, 30, + '', 1, '2023-11-13 15:16:58', '2022-09-16 17:33:34'), + + (2072, 2068, 2, 'tr_2068 ', '黑名单', 'system_blacklist', 'blacklist', '', 2, '', + '', '', '/system/blacklist/index', 1, '', + 0, 0, '', 0, 0, 0, 40, + '', 1, '2023-11-13 15:16:58', '2022-09-16 17:34:01'), + + (2073, 2219, 3, 'tr_2093 tr_2219 ', '个人设置', 'home_account', 'account', '', 2, '', + '', '', '/home/account/account', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-17 15:27:49', '2022-09-16 17:34:35'), + + (2074, 2093, 2, 'tr_2093 ', '日志管理', 'Logs', '/log', '', 1, '/apply/log/log', + '', '', 'ParentLayout', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2024-04-12 13:41:45', '2022-09-16 01:38:32'), + + (2075, 2074, 3, 'tr_2093 tr_2074 ', '全局日志', 'log', 'log', '', 2, '', + '/log/list', '', '/log/log/index', 2, '', + 2, 2, '', 1, 2, 2, 10, + '', 1, '2024-04-24 11:03:39', '2022-09-09 17:39:16'), + + (2076, 2074, 3, 'tr_2093 tr_2074 ', '登录日志', 'login_log', 'login-log', '', 2, '', + '', '', '/log/login-log/index', 2, '', + 2, 2, '', 1, 2, 2, 20, + '', 1, '2024-04-24 11:03:42', '2022-09-15 20:04:20'), + + (2077, 2074, 3, 'tr_2093 tr_2074 ', '全局日志详情', 'log_view', 'view/:id?', '', 2, '', + '/log/view', '', '/log/log/view', 0, 'log', + 0, 0, '', 0, 1, 0, 15, + '', 1, '2023-11-17 15:27:32', '2022-09-14 20:07:04'), + + (2082, 2076, 4, 'tr_2093 tr_2074 tr_2076 ', '登录日志详情', 'loginLogView', 'view/:id?', '', 3, '', + '/loginLog/view', '', '/log/login-log/view', 0, 'login_log', + 0, 0, '', 0, 1, 0, 62, + '', 1, '2023-11-17 15:27:32', '2022-09-14 20:07:04'), + + (2083, 2076, 4, 'tr_2093 tr_2074 tr_2076 ', '登录日志列表', 'login_log_index', 'index', '', 3, '', + '/loginLog/list', '', '/log/login-log/index', 0, 'login_log', + 0, 0, '', 0, 1, 0, 61, + '', 1, '2023-11-17 15:27:32', '2022-09-15 04:38:33'), + + (2084, 2074, 3, 'tr_2093 tr_2074 ', '短信记录', 'sms_log', 'sms', '', 1, '', + '/smsLog/list', '', '/log/sms-log/index', 0, '', + 0, 0, '', 0, 0, 0, 70, + '', 1, '2023-11-17 15:27:32', '2022-09-17 19:13:51'), + + (2087, 2074, 3, 'tr_2093 tr_2074 ', '服务日志', 'monitor_serve_log', 'serve_log', '', 2, '', + '', '', '/monitor/serve-log/index', 1, '', + 0, 0, '', 0, 0, 0, 30, + '', 1, '2023-11-17 15:27:32', '2022-09-18 20:59:28'), + + (2088, 2087, 4, 'tr_2093 tr_2074 tr_2087 ', '服务日志详情', 'monitor_serve_log_view', 'view/:id?', '', 3, '', + '/serveLog/view', '', '/monitor/serve-log/view', 0, 'monitor_serve_log', + 0, 0, '', 0, 1, 0, 62, + '', 1, '2023-11-17 15:27:32', '2022-09-14 20:07:04'), + + (2089, 2087, 4, 'tr_2093 tr_2074 tr_2087 ', '服务日志列表', 'monitor_serve_log_index', 'index', '', 3, '', + '/serveLog/list', '', '/monitor/serve-log/index', 0, 'monitor_serve_log', + 0, 0, '', 0, 1, 0, 61, + '', 1, '2023-11-17 15:27:32', '2022-09-15 04:38:33'), + + (2090, 0, 1, '', '系统监控', 'Monitors', '/monitor', 'FundProjectionScreenOutlined', 1, '', + '', '', 'LAYOUT', 1, '', + 0, 0, '', 0, 0, 0, 110, + '', 1, '2023-11-17 15:34:42', '2022-09-15 17:38:32'), + + (2091, 2090, 2, 'tr_2090 ', '在线用户', 'monitor_online', 'online', '', 2, '', + '/monitor/userOnlineList', '', '/monitor/online/index', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-09-18 21:23:36'), + + (2092, 2090, 2, 'tr_2090 ', '服务监控', 'monitor_serve_monitor', 'serve_monitor', '', 2, '', + '', '', '/monitor/serve-monitor/index', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-09-18 21:23:36'), + + (2093, 0, 1, '', '系统应用', 'Applys', '/apply', 'CodeSandboxOutlined', 1, '/apply/log/log', + '', '', 'LAYOUT', 1, '', + 0, 0, '', 0, 0, 0, 100, + '', 1, '2024-04-12 15:39:05', '2022-09-18 21:29:53'), + + (2094, 2093, 2, 'tr_2093 ', '通知公告', 'apply_notice', 'notice', '', 2, '', + '/notice/list', '', '/apply/notice/index', 1, '', + 0, 0, '', 0, 0, 0, 300, + '', 1, '2023-11-17 15:28:00', '2022-09-18 21:30:19'), + + (2095, 2093, 2, 'tr_2093 ', '附件管理', 'apply_attachment', 'attachment', '', 2, '', + '/attachment/list', '', '/apply/attachment/index', 1, '', + 0, 0, '', 0, 0, 0, 200, + '', 1, '2023-11-17 15:27:58', '2022-09-18 21:30:40'), + + (2096, 2093, 2, 'tr_2093 ', '地区编码', 'apply_provinces', 'provinces', '', 2, '', + '/provinces/list,/provinces/tree,/provinces/childrenList,/provinces/uniqueId', '', '/apply/provinces/index', 1, '', + 0, 0, '', 0, 0, 0, 100, + '', 1, '2023-11-17 15:27:55', '2022-09-18 21:31:01'), + + (2097, 0, 1, '', '开发工具', 'Develops', '/develop', 'CodeOutlined', 1, '/develop/code', + '', '', 'LAYOUT', 1, '', + 0, 0, '', 0, 0, 0, 210, + '', 1, '2023-11-17 15:39:06', '2022-09-18 21:32:27'), + + (2098, 2097, 2, 'tr_2097 ', '代码生成', 'develop_code', 'code', '', 2, '', + '/genCodes/list,/genCodes/selects,/genCodes/tableSelect', '', '/develop/code/index', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-09-18 21:32:46'), + + (2099, 2120, 2, 'tr_2120 ', 'API文档', 'apidocs', 'apidocs', '', 2, '', + '', '', 'IFRAME', 2, '', + 2, 1, 'https://hotgo.facms.cn/swagger', 2, 2, 2, 1000, + '', 1, '2024-04-16 12:44:58', '2022-09-18 21:34:09'), + + (2100, 2120, 2, 'tr_2120 ', '使用文档', 'https://github.com/bufanyun/hotgo/tree/v2.0/docs/guide-zh-CN', '/hotgo', '', 1, '', + '', '', 'LAYOUT', 0, '', + 2, 2, '', 2, 2, 2, 1100, + '', 1, '2024-04-16 12:45:11', '2022-09-18 21:35:17'), + + (2102, 0, 1, '', '关于', 'about', '/about', 'ProjectOutlined', 1, '/about/index', + '', '', 'LAYOUT', 1, '', + 1, 0, '', 0, 0, 0, 9000, + '', 1, '2023-12-29 17:59:18', '2022-09-18 13:37:04'), + + (2103, 2102, 2, 'tr_2102 ', '关于详情', 'about_index', 'index', '', 2, '', + '', '', '/about/index', 1, 'about', + 0, 0, '', 0, 1, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-09-18 13:38:00'), + + (2109, 2062, 3, 'tr_2061 tr_2062 ', '编辑用户', 'org_user_edit', '', '', 3, '', + '/member/edit,/member/view', '', '/', 1, '', + 0, 0, '', 0, 1, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-11-22 23:49:17'), + + (2110, 2062, 3, 'tr_2061 tr_2062 ', '删除用户', 'org_user_delete', 'user', '', 3, '', + '/member/delete', '', '/', 1, '', + 0, 0, '', 0, 1, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-11-23 21:34:51'), + + (2111, 2062, 3, 'tr_2061 tr_2062 ', '修改用户状态', 'org_user_status', 'user', '', 3, '', + '/member/status', '', '/', 1, '', + 0, 0, '', 0, 1, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-11-23 21:35:48'), + + (2112, 2063, 3, 'tr_2061 tr_2063 ', '编辑部门', 'dept_edit', 'dept', '', 3, '', + '/dept/edit', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-11-23 21:57:15'), + + (2113, 2063, 3, 'tr_2061 tr_2063 ', '删除部门', 'dept_delete', 'dept', '', 3, '', + '/dept/delete', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-11-23 21:57:51'), + + (2114, 2063, 3, 'tr_2061 tr_2063 ', '修改部门状态', 'dept_status', 'dept', '', 3, '', + '/dept/status', '', '/', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-11-23 21:58:40'), + + (2115, 2064, 3, 'tr_2061 tr_2064 ', '编辑岗位', 'post_edit', 'post', '', 3, '', + '/post/edit', '', '/', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-11-23 21:59:30'), + + (2116, 2064, 3, 'tr_2061 tr_2064 ', '删除岗位', 'post_delete', 'post', '', 3, '', + '/post/delete', '', '/', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-11-23 22:00:13'), + + (2117, 2064, 3, 'tr_2061 tr_2064 ', '修改岗位状态', 'post_status', 'post', '', 3, '', + '/post/status', '', '/', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-11-23 22:00:54'), + + (2118, 2095, 3, 'tr_2093 tr_2095 ', '上传附件', 'uploadFile', 'attachment', '', 3, '', + '/upload/file', '', '/', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2022-11-23 22:14:19'), + + (2120, 0, 1, '', '文档中心', 'doc', 'doc', 'FileTextOutlined', 1, '/doc/apidocs', + '', '', 'LAYOUT', 0, '', + 2, 2, '', 2, 2, 2, 300, + '', 1, '2024-04-16 12:45:41', '2022-11-24 00:08:19'), + + (2122, 2228, 3, 'tr_2227 tr_2228 ', '表格例子', 'hgexample_table_index', 'hgexample_table', '', 2, '', + '/hgexample/table/list', '', '/addons/hgexample/table/index', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2024-04-13 23:54:36', '2022-12-23 15:07:28'), + + (2124, 2228, 3, 'tr_2227 tr_2228 ', '表格详情', 'table_view', 'view/:id?', '', 2, '', + '/hgexample/table/view', '', '/addons/hgexample/table/view', 0, 'table_index', + 0, 0, '', 0, 1, 0, 11, + '', 1, '2024-04-13 10:23:05', '2022-09-14 20:07:04'), + + (2125, 2097, 2, 'tr_2097 ', '生成配置', 'develop_code_deploy', 'deploy/:id?', '', 2, '', + '', '', '/develop/code/deploy', 0, 'develop_code', + 0, 0, '', 0, 1, 0, 20, + '', 1, '2023-11-13 15:16:58', '2022-12-31 17:16:26'), + + (2207, 2076, 4, 'tr_2093 tr_2074 tr_2076 ', '删除登录日志', 'loginLogDelete', '', '', 3, '', + '/loginLog/delete', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-17 15:27:32', '2023-01-19 21:06:45'), + + (2208, 2076, 4, 'tr_2093 tr_2074 tr_2076 ', '导出登录日志', 'loginLogExport', '', '', 3, '', + '/loginLog/export', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-17 15:27:32', '2023-01-19 21:06:45'), + + (2209, 2087, 4, 'tr_2093 tr_2074 tr_2087 ', '删除服务日志', 'serveLogDelete', '', '', 3, '', + '/serveLog/delete', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-17 15:27:32', '2023-01-20 18:37:50'), + + (2210, 2087, 4, 'tr_2093 tr_2074 tr_2087 ', '导出服务日志', 'serveLogExport', '', '', 3, '', + '/serveLog/export', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-17 15:27:32', '2023-01-20 18:37:50'), + + (2211, 2094, 3, 'tr_2093 tr_2094 ', '获取公告最大排序', 'noticeMaxSort', '', '', 3, '', + '/notice/maxSort', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), + + (2212, 2094, 3, 'tr_2093 tr_2094 ', '删除公告', 'noticeDelete', '', '', 3, '', + '/notice/delete', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), + + (2213, 2094, 3, 'tr_2093 tr_2094 ', '修改公告状态', 'noticeStatus', '', '', 3, '', + '/notice/status', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), + + (2214, 2094, 3, 'tr_2093 tr_2094 ', '操作公告开关', 'noticeSwitch', '', '', 3, '', + '/notice/switch', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), + + (2215, 2094, 3, 'tr_2093 tr_2094 ', '发送/编辑通知', 'noticeEditNotify', '', '', 3, '', + '/notice/editNotify', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), + + (2216, 2094, 3, 'tr_2093 tr_2094 ', '发送/编辑公告', 'noticeEditNotice', '', '', 3, '', + '/notice/editNotice', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), + + (2217, 2094, 3, 'tr_2093 tr_2094 ', '发送/编辑私信', 'noticeEditLetter', '', '', 3, '', + '/notice/editLetter', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), + + (2218, 2094, 3, 'tr_2093 tr_2094 ', '编辑公告', 'noticeEdit', '', '', 3, '', + '/notice/edit', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), + + (2219, 2093, 2, 'tr_2093 ', '个人中心', 'home', '/home', 'UserOutlined', 1, '', + '', '', 'ParentLayout', 1, '', + 0, 2, '', 0, 1, 0, 3000, + '', 1, '2023-11-17 15:33:52', '2023-02-01 14:59:40'), + + (2220, 2219, 3, 'tr_2093 tr_2219 ', '我的消息', 'home_message', 'message', '', 2, '', + '/notice/messageList', '', '/home/message/message', 1, '', + 0, 2, '', 0, 0, 0, 20, + '', 1, '2023-11-17 15:27:49', '2023-02-01 15:05:17'), + + (2221, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '获取最大排序', 'testMaxSort', '/test/maxSort', '', 3, '', + '/hgexample/table/maxSort', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2024-04-13 23:54:11', '2023-02-06 14:29:42'), + + (2222, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '导出测试', 'testExport', '', '', 3, '', + '/hgexample/table/export', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2024-04-13 23:54:16', '2023-01-20 18:37:50'), + + (2223, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '删除测试', 'testDelete', '', '', 3, '', + '/hgexample/table/delete', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2024-04-13 23:54:20', '2023-01-18 15:19:43'), + + (2224, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '修改测试状态', 'testStatus', '', '', 3, '', + '/hgexample/table/status', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2024-04-13 23:54:23', '2023-01-18 15:19:43'), + + (2225, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '操作测试开关', 'testSwitch', '', '', 3, '', + '/hgexample/table/switch', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2024-04-13 23:54:26', '2023-01-18 15:19:43'), + + (2226, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '编辑测试', 'testEdit', '', '', 3, '', + '/hgexample/table/edit', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2024-04-13 23:54:30', '2023-01-18 15:19:43'), + + (2227, 0, 1, '', '插件应用', 'addons', '/addons', 'AppstoreOutlined', 1, '/addons/hgexample/hgexample_portal', + '', '', 'LAYOUT', 1, '', + 0, 2, '', 0, 0, 0, 130, + '', 1, '2023-11-13 15:16:58', '2023-02-17 13:44:27'), + + (2228, 2227, 2, 'tr_2227 ', '功能案例', 'hgexample', '/hgexample', '', 1, '', + '', '', '/hgexample', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-02-17 13:44:27'), + + (2229, 2097, 2, 'tr_2097 ', '插件管理', 'develop_addons', 'addons', '', 2, '', + '/addons/selects,/addons/list', '', '/develop/addons/index', 1, '', + 0, 0, '', 0, 0, 0, 20, + '', 1, '2023-11-13 15:16:58', '2022-09-18 21:32:46'), + + (2230, 2228, 3, 'tr_2227 tr_2228 ', '应用入口', 'hgexample_portal', 'hgexample_portal', '', 2, '', + '', '', '/addons/hgexample/portal/index', 1, '', + 0, 0, '', 0, 0, 0, 5, + '', 1, '2023-11-13 15:16:58', '2022-09-14 20:07:04'), + + (2231, 2228, 3, 'tr_2227 tr_2228 ', '插件配置', 'hgexample_config', 'hgexample_config', '', 2, '', + '/hgexample/config/get,/hgexample/config/update', '', '/addons/hgexample/config/system', 1, '', + 0, 0, '', 0, 0, 0, 8, + '', 1, '2024-04-13 23:53:06', '2022-09-14 20:07:04'), + + (2232, 2237, 3, 'tr_2093 tr_2237 ', '在线充值', 'asset_recharge', 'recharge', '', 2, '', + '/order/create,/order/option', '', '/asset/recharge/recharge', 1, '', + 0, 2, '', 0, 0, 0, 20, + '', 1, '2024-04-12 13:53:42', '2023-02-01 15:05:17'), + + (2235, 2236, 4, 'tr_2093 tr_2237 tr_2236 ', '资金变动导出', 'creditsLogExport', '', '', 3, '', + '/creditsLog/export', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2024-04-12 13:52:59', '2023-04-15 15:59:58'), + + (2236, 2237, 3, 'tr_2093 tr_2237 ', '资金变动', 'creditsLogIndex', 'creditsLogIndex', '', 2, '', + '/creditsLog/list,/creditsLog/option', '', '/asset/creditsLog/index', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2024-04-12 13:53:36', NULL), + + (2237, 2093, 2, 'tr_2093 ', '资金管理', 'asset', '/asset', '', 1, '/apply/asset/creditsLogIndex', + '', '', 'ParentLayout', 1, '', + 0, 2, '', 0, 0, 0, 20, + '', 1, '2024-04-12 13:53:54', '2023-04-18 22:16:20'), + + (2240, 2232, 4, 'tr_2093 tr_2237 tr_2232 ', '充值记录', 'asset_recharge_log', '', '', 3, '', + '/order/list', '', '', 1, '', + 0, 2, '', 0, 0, 0, 40, + '', 1, '2023-11-17 15:28:23', '2023-04-18 23:26:01'), + + (2241, 2232, 4, 'tr_2093 tr_2237 tr_2232 ', '受理退款', 'asset_recharge_accept_refund', '', '', 3, '', + '/order/acceptRefund', '', '', 1, '', + 0, 2, '', 0, 0, 0, 40, + '', 1, '2023-11-17 15:28:23', '2023-04-18 23:26:01'), + + (2242, 2232, 4, 'tr_2093 tr_2237 tr_2232 ', '申请退款', 'asset_recharge_apply_refund', '', '', 3, '', + '/order/applyRefund', '', '', 1, '', + 0, 2, '', 0, 0, 0, 40, + '', 1, '2023-11-17 15:28:23', '2023-04-18 23:26:01'), + + (2243, 2232, 4, 'tr_2093 tr_2237 tr_2232 ', '删除关闭订单', 'asset_recharge_order_delete', '', '', 3, '', + '/order/delete', '', '', 1, '', + 0, 2, '', 0, 0, 0, 40, + '', 1, '2023-11-17 15:28:23', '2023-04-18 23:26:01'), + + (2244, 2237, 3, 'tr_2093 tr_2237 ', '提现管理', 'asset_cash', '/cash', '', 2, '', + '/cash/list,/cash/apply,/config/getCash', '', '/asset/cash/index', 1, '', + 0, 0, '', 0, 0, 0, 30, + '', 1, '2024-04-12 13:53:45', '2022-11-29 12:30:00'), + + (2245, 2244, 4, 'tr_2093 tr_2237 tr_2244 ', '申请提现', 'cash_apply', '', '', 3, '', + '/cash/apply', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-17 15:28:23', '2023-04-26 21:37:56'), + + (2246, 2244, 4, 'tr_2093 tr_2237 tr_2244 ', '提现打款处理', 'cash_payment', '', '', 3, '', + '/cash/payment,/cash/view', '', '', 1, '', + 0, 2, '', 0, 0, 0, 20, + '', 1, '2023-11-17 15:28:23', '2023-04-26 21:38:25'), + + (2247, 2062, 3, 'tr_2061 tr_2062 ', '变更余额', 'org_user_add_balance', '', '', 3, '', + '/member/addBalance', '', '', 1, '', + 0, 2, '', 0, 0, 0, 40, + '', 1, '2023-11-13 15:16:58', '2023-04-27 22:31:02'), + + (2248, 2062, 3, 'tr_2061 tr_2062 ', '变更积分', 'org_user_add_integral', '', '', 3, '', + '/member/addIntegral', '', '', 1, '', + 0, 2, '', 0, 0, 0, 50, + '', 1, '2023-11-13 15:16:58', '2023-04-27 22:31:43'), + + (2249, 2062, 3, 'tr_2061 tr_2062 ', '重置登录密码', 'member_reset_pwd', '', '', 3, '', + '/member/resetPwd', '', '', 1, '', + 0, 2, '', 0, 0, 0, 60, + '', 1, '2023-11-13 15:16:58', '2023-04-27 22:50:27'), + + (2250, 2062, 3, 'tr_2061 tr_2062 ', '用户列表', 'member_list', '', '', 3, '', + '/dept/list,/post/list,/role/list,/member/list,/dept/option', '', '', 1, '', + 0, 2, '', 0, 0, 0, 0, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:06:17'), + + (2251, 2069, 3, 'tr_2068 tr_2069 ', '查看配置', 'config_get', '', '', 3, '', + '/config/get', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:18:44'), + + (2252, 2069, 3, 'tr_2068 tr_2069 ', '更新配置', 'config_update', '', '', 3, '', + '/config/update', '', '', 1, '', + 0, 2, '', 0, 0, 0, 20, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:19:14'), + + (2253, 2070, 3, 'tr_2068 tr_2070 ', '查看字典列表', 'dict_data_list', '', '', 3, '', + '/dictType/tree,/dictData/list,/config/typeSelect', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:21:47'), + + (2254, 2070, 3, 'tr_2068 tr_2070 ', '编辑字典', 'dict_data_edit', '', '', 3, '', + '/dictData/edit', '', '', 1, '', + 0, 2, '', 0, 0, 0, 20, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:22:15'), + + (2255, 2070, 3, 'tr_2068 tr_2070 ', '删除字典', 'dict_data_delete', '', '', 3, '', + '/dictData/delete', '', '', 1, '', + 0, 2, '', 0, 0, 0, 30, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:22:15'), + + (2256, 2070, 3, 'tr_2068 tr_2070 ', '编辑字典类型', 'dict_type_edit', '', '', 3, '', + '/dictType/edit', '', '', 1, '', + 0, 2, '', 0, 0, 0, 40, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:22:15'), + + (2257, 2070, 3, 'tr_2068 tr_2070 ', '删除字典类型', 'dict_type_delete', '', '', 3, '', + '/dictType/delete', '', '', 1, '', + 0, 2, '', 0, 0, 0, 60, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:22:15'), + + (2258, 2071, 3, 'tr_2068 tr_2071 ', '任务列表', '/cron/list', '', '', 3, '', + '/cron/list', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:25:46'), + + (2259, 2071, 3, 'tr_2068 tr_2071 ', '任务分组列表', '/cronGroup/list', '', '', 3, '', + '/cronGroup/select,/cronGroup/list', '', '', 1, '', + 0, 2, '', 0, 0, 0, 20, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:26:40'), + + (2260, 2071, 3, 'tr_2068 tr_2071 ', '编辑任务', '/cron/edit', '', '', 3, '', + '/cron/edit', '', '', 1, '', + 0, 2, '', 0, 0, 0, 30, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:27:07'), + + (2261, 2071, 3, 'tr_2068 tr_2071 ', '删除任务', '/cron/delete', '', '', 3, '', + '/cron/delete', '', '', 1, '', + 0, 2, '', 0, 0, 0, 40, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:27:59'), + + (2262, 2071, 3, 'tr_2068 tr_2071 ', '修改任务状态', '/cron/status', '', '', 3, '', + '/cron/status', '', '', 1, '', + 0, 2, '', 0, 0, 0, 60, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:28:16'), + + (2263, 2071, 3, 'tr_2068 tr_2071 ', '在线执行', '/cron/onlineExec', '', '', 3, '', + '/cron/onlineExec', '', '', 1, '', + 0, 2, '', 0, 0, 0, 70, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:28:32'), + + (2264, 2071, 3, 'tr_2068 tr_2071 ', '编辑任务分组', '/cronGroup/edit', '', '', 3, '', + '/cronGroup/edit', '', '', 1, '', + 0, 2, '', 0, 0, 0, 80, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:28:55'), + + (2265, 2071, 3, 'tr_2068 tr_2071 ', '删除任务分组', '/cronGroup/delete', '', '', 3, '', + '/cronGroup/delete', '', '', 1, '', + 0, 2, '', 0, 0, 0, 90, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:29:14'), + + (2266, 2072, 3, 'tr_2068 tr_2072 ', '黑名单列表', '/blacklist/list', '', '', 3, '', + '/blacklist/list', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:29:59'), + + (2267, 2072, 3, 'tr_2068 tr_2072 ', '编辑黑名单策略', '/blacklist/edit', '', '', 3, '', + '/blacklist/edit', '', '', 1, '', + 0, 2, '', 0, 0, 0, 20, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:30:25'), + + (2268, 2072, 3, 'tr_2068 tr_2072 ', '修改策略状态', '/blacklist/status', '', '', 3, '', + '/blacklist/status', '', '', 1, '', + 0, 2, '', 0, 0, 0, 30, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:31:07'), + + (2269, 2072, 3, 'tr_2068 tr_2072 ', '删除策略', '/blacklist/delete', '', '', 3, '', + '/blacklist/delete', '', '', 1, '', + 0, 2, '', 0, 0, 0, 40, + '', 1, '2023-11-13 15:16:58', '2023-04-27 23:31:21'), + + (2270, 2073, 4, 'tr_2093 tr_2219 tr_2073 ', '修改登录密码', '/member/updatePwd', '', '', 3, '', + '/member/updatePwd', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-17 15:27:49', '2023-04-28 16:40:34'), + + (2271, 2073, 4, 'tr_2093 tr_2219 tr_2073 ', '换绑手机号', '/member/updateMobile', '', '', 3, '', + '/member/updateMobile', '', '', 1, '', + 0, 2, '', 0, 0, 0, 20, + '', 1, '2023-11-17 15:27:49', '2023-04-28 16:40:52'), + + (2272, 2073, 4, 'tr_2093 tr_2219 tr_2073 ', '换绑邮箱', '/member/updateEmail', '', '', 3, '', + '/member/updateEmail', '', '', 1, '', + 0, 2, '', 0, 0, 0, 30, + '', 1, '2023-11-17 15:27:49', '2023-04-28 16:41:11'), + + (2273, 2090, 2, 'tr_2090 ', '在线服务', 'monitor_netconn', 'netconn', '', 1, '', + '', '', '/monitor/netconn/index', 1, '', + 0, 0, '', 0, 0, 0, 20, + '', 1, '2023-11-13 15:16:58', '2022-09-18 21:23:36'), + + (2275, 2273, 3, 'tr_2090 tr_2273 ', '服务许可证列表', 'serveLicenseIndex', 'serveLicenseIndex', '', 3, '', + '/serveLicense/list', '', '/serveLicense/index', 1, 'monitor_netconn', + 0, 0, '', 0, 1, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), + + (2277, 2275, 4, 'tr_2090 tr_2273 tr_2275 ', '编辑/新增服务许可证', 'serveLicenseEdit', '', '', 3, '', + '/serveLicense/edit', '', '', 1, '', + 0, 0, '', 0, 1, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), + + (2278, 2275, 4, 'tr_2090 tr_2273 tr_2275 ', '删除服务许可证', 'serveLicenseDelete', '', '', 3, '', + '/serveLicense/delete', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), + + (2279, 2275, 4, 'tr_2090 tr_2273 tr_2275 ', '修改服务许可证状态', 'serveLicenseStatus', '', '', 3, '', + '/serveLicense/status', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), + + (2280, 2275, 4, 'tr_2090 tr_2273 tr_2275 ', '导出服务许可证', 'serveLicenseExport', '', '', 3, '', + '/serveLicense/export', '', '', 1, '', + 0, 0, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), + + (2281, 2275, 4, 'tr_2090 tr_2273 tr_2275 ', '分配许可证路由', 'serveLicenseAssignRouter', '', '', 3, '', + '/serveLicense/assignRouter', '', '', 1, '', + 0, 0, '', 0, 1, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), + + (2282, 2073, 4, 'tr_2093 tr_2219 tr_2073 ', '更新基本设置', 'memberUpdateProfile', '', '', 3, '', + '/member/updateProfile', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-17 15:27:49', '2023-08-02 14:52:48'), + + (2283, 2073, 4, 'tr_2093 tr_2219 tr_2073 ', '更新提现设置', 'memberUpdateCash', '', '', 3, '', + '/member/updateCash', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-17 15:27:49', '2023-08-02 14:53:34'), + + (2292, 2067, 3, 'tr_2065 tr_2067 ', '更新菜单权限', 'updatePermissions', '', '', 3, '', + '/role/updatePermissions', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-08-11 14:45:56'), + + (2293, 2067, 3, 'tr_2065 tr_2067 ', '更新数据权限', 'dataScopeEdit', '', '', 3, '', + '/role/dataScope/edit', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-08-11 14:51:29'), + + (2294, 2067, 3, 'tr_2065 tr_2067 ', '添加/编辑角色', 'roleEdit', '', '', 3, '', + '/role/edit', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-08-11 14:52:08'), + + (2295, 2067, 3, 'tr_2065 tr_2067 ', '删除角色', 'roleDelete', '', '', 3, '', + '/role/delete', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-08-11 14:52:34'), + + (2296, 2066, 3, 'tr_2065 tr_2066 ', '添加/编辑菜单', 'menuEdit', '', '', 3, '', + '/menu/edit', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-08-11 14:53:24'), + + (2297, 2066, 3, 'tr_2065 tr_2066 ', '删除菜单', 'menuDelete', '', '', 3, '', + '/menu/delete', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-08-11 14:53:52'), + + (2298, 2075, 4, 'tr_2093 tr_2074 tr_2075 ', '删除全局日志', 'logDelete', '', '', 3, '', + '/log/delete', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-17 15:27:32', '2023-08-11 14:54:37'), + + (2299, 2084, 4, 'tr_2093 tr_2074 tr_2084 ', '删除短信记录', 'smsLogDelete', '', '', 3, '', + '/smsLog/delete', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-17 15:27:32', '2023-08-11 14:56:47'), + + (2300, 2091, 3, 'tr_2090 tr_2091 ', '强制退出用户', 'monitorUserOffline', '', '', 3, '', + '/monitor/userOffline', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-08-11 14:57:52'), + + (2301, 2096, 3, 'tr_2093 tr_2096 ', '添加/编辑省市区', 'provincesEdit', '', '', 3, '', + '/provinces/edit', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-08-11 15:00:13'), + + (2302, 2096, 3, 'tr_2093 tr_2096 ', '删除省市区', 'provincesDelete', '', '', 3, '', + '/provinces/delete', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-08-11 15:00:45'), + + (2305, 2098, 3, 'tr_2097 tr_2098 ', '查看生成配置', 'genCodesView', '', '', 3, '', + '/genCodes/view', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-08-11 15:21:28'), + + (2306, 2098, 3, 'tr_2097 tr_2098 ', '预览代码', 'genCodesPreview', '', '', 3, '', + '/genCodes/preview', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-08-11 15:22:18'), + + (2307, 2098, 3, 'tr_2097 tr_2098 ', '提交生成', 'genCodesBuild', '', '', 3, '', + '/genCodes/build', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-08-11 15:22:48'), + + (2308, 2098, 3, 'tr_2097 tr_2098 ', '保存生成配置', 'genCodesEdit', '', '', 3, '', + '/genCodes/edit', '', '', 1, '', + 0, 2, '', 0, 0, 0, 10, + '', 1, '2023-11-13 15:16:58', '2023-08-11 15:23:16'), + (2309, 2229, 3, 'tr_2097 tr_2229 ', '更新插件配置', 'addonsUpgrade', '', '', 3, '', '/addons/upgrade', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:24:11'), + (2310, 2229, 3, 'tr_2097 tr_2229 ', '卸载插件', 'addonsUninstall', '', '', 3, '', '/addons/uninstall', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:24:32'), + (2319, 2228, 3, 'tr_2227 tr_2228 ', '树表例子', '/addons/hgexample/table/tree', '/addons/hgexample/table/tree', '', 2, '', '/hgexample/table/tree,/hgexample/treeTable/select', '', '/addons/hgexample/treeTable/index', 1, '', 0, 2, '', 0, 0, 0, 15, '', 1, '2024-04-13 23:55:01', '2023-11-13 16:46:58'), + (2338, 2228, 3, 'tr_2227 tr_2228 ', '组件示例', 'hgexample_comp', 'hgexample_comp', '', 2, '', '/hgexample/comp/importExcel', '', '/addons/hgexample/comp/index', 1, '', 0, 0, '', 0, 0, 0, 1000, '', 1, '2024-04-13 23:55:45', '2022-09-14 20:07:04'), + (2366, 2097, 2, 'tr_2097 ', '生成演示', 'generateDemo', 'generateDemo', '', 2, '', '', '', 'ParentLayout', 1, '', 0, 2, '', 0, 0, 0, 1000, '', 1, '2024-04-08 10:10:51', '2024-04-08 10:10:51'), + (2367, 2366, 3, 'tr_2097 tr_2366 ', 'CURD列表', 'curdDemo', '/curdDemo', '', 1, '/develop/generateDemo/curdDemo/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), + (2368, 2367, 4, 'tr_2097 tr_2366 tr_2367 ', 'CUDR列表列表', 'curdDemoIndex', 'index', '', 2, '', '/curdDemo/list', '', '/curdDemo/index', 1, 'curdDemo', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), + (2369, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', 'CUDR列表详情', 'curdDemoView', '', '', 3, '', '/curdDemo/view', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), + (2370, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', '编辑/新增CUDR列表', 'curdDemoEdit', '', '', 3, '', '/curdDemo/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 20, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), + (2371, 2370, 6, 'tr_2097 tr_2366 tr_2367 tr_2368 tr_2370 ', '获取CUDR列表最大排序', 'curdDemoMaxSort', '', '', 3, '', '/curdDemo/maxSort', '', '', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), + (2372, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', '删除CUDR列表', 'curdDemoDelete', '', '', 3, '', '/curdDemo/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), + (2373, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', '修改CUDR列表状态', 'curdDemoStatus', '', '', 3, '', '/curdDemo/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 50, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), + (2374, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', '操作CUDR列表开关', 'curdDemoSwitch', '', '', 3, '', '/curdDemo/switch', '', '', 1, '', 0, 0, '', 0, 0, 0, 60, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), + (2375, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', '导出CUDR列表', 'curdDemoExport', '', '', 3, '', '/curdDemo/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), + (2376, 2366, 3, 'tr_2097 tr_2366 ', '测试分类', 'testCategory', '/testCategory', '', 1, '/develop/generateDemo/testCategory/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 1000, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), + (2377, 2376, 4, 'tr_2097 tr_2366 tr_2376 ', '测试分类列表', 'testCategoryIndex', 'index', '', 2, '', '/testCategory/list', '', '/testCategory/index', 1, 'testCategory', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), + (2378, 2377, 5, 'tr_2097 tr_2366 tr_2376 tr_2377 ', '测试分类详情', 'testCategoryView', '', '', 3, '', '/testCategory/view', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), + (2379, 2377, 5, 'tr_2097 tr_2366 tr_2376 tr_2377 ', '编辑/新增测试分类', 'testCategoryEdit', '', '', 3, '', '/testCategory/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 20, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), + (2380, 2379, 6, 'tr_2097 tr_2366 tr_2376 tr_2377 tr_2379 ', '获取测试分类最大排序', 'testCategoryMaxSort', '', '', 3, '', '/testCategory/maxSort', '', '', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), + (2381, 2377, 5, 'tr_2097 tr_2366 tr_2376 tr_2377 ', '删除测试分类', 'testCategoryDelete', '', '', 3, '', '/testCategory/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), + (2382, 2377, 5, 'tr_2097 tr_2366 tr_2376 tr_2377 ', '修改测试分类状态', 'testCategoryStatus', '', '', 3, '', '/testCategory/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), + (2383, 2366, 3, 'tr_2097 tr_2366 ', '普通树表', 'normalTreeDemo', '/normalTreeDemo', '', 1, '/develop/generateDemo/normalTreeDemo/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 200, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), + (2384, 2383, 4, 'tr_2097 tr_2366 tr_2383 ', '普通树表列表', 'normalTreeDemoIndex', 'index', '', 2, '', '/normalTreeDemo/list', '', '/normalTreeDemo/index', 1, 'normalTreeDemo', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), + (2385, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '普通树表详情', 'normalTreeDemoView', '', '', 3, '', '/normalTreeDemo/view', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), + (2386, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '编辑/新增普通树表', 'normalTreeDemoEdit', '', '', 3, '', '/normalTreeDemo/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 20, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), + (2387, 2386, 6, 'tr_2097 tr_2366 tr_2383 tr_2384 tr_2386 ', '获取普通树表最大排序', 'normalTreeDemoMaxSort', '', '', 3, '', '/normalTreeDemo/maxSort', '', '', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), + (2388, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '删除普通树表', 'normalTreeDemoDelete', '', '', 3, '', '/normalTreeDemo/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), + (2389, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '修改普通树表状态', 'normalTreeDemoStatus', '', '', 3, '', '/normalTreeDemo/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 50, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), + (2390, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '导出普通树表', 'normalTreeDemoExport', '', '', 3, '', '/normalTreeDemo/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), + (2391, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '获取普通树表关系树选项', 'normalTreeDemoTreeOption', '', '', 3, '', '/normalTreeDemo/treeOption', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), + (2401, 2366, 3, 'tr_2097 tr_2366 ', '选项树表', 'optionTreeDemo', '/optionTreeDemo', '', 1, '/develop/generateDemo/optionTreeDemo/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 300, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), + (2402, 2401, 4, 'tr_2097 tr_2366 tr_2401 ', '选项树表列表', 'optionTreeDemoIndex', 'index', '', 2, '', '/optionTreeDemo/list', '', '/optionTreeDemo/index', 1, 'optionTreeDemo', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), + (2403, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '选项树表详情', 'optionTreeDemoView', '', '', 3, '', '/optionTreeDemo/view', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), + (2404, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '编辑/新增选项树表', 'optionTreeDemoEdit', '', '', 3, '', '/optionTreeDemo/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 20, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), + (2405, 2404, 6, 'tr_2097 tr_2366 tr_2401 tr_2402 tr_2404 ', '获取选项树表最大排序', 'optionTreeDemoMaxSort', '', '', 3, '', '/optionTreeDemo/maxSort', '', '', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), + (2406, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '删除选项树表', 'optionTreeDemoDelete', '', '', 3, '', '/optionTreeDemo/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), + (2407, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '修改选项树表状态', 'optionTreeDemoStatus', '', '', 3, '', '/optionTreeDemo/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 50, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), + (2408, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '导出选项树表', 'optionTreeDemoExport', '', '', 3, '', '/optionTreeDemo/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), + (2409, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '获取选项树表关系树选项', 'optionTreeDemoTreeOption', '', '', 3, '', '/optionTreeDemo/treeOption', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), + (2417, 2228, 3, 'tr_2227 tr_2228 ', '多租户功能演示', 'tenantOrder', '/tenantOrder', '', 1, '/addons/hgexample/tenantOrder/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 200, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'), + (2418, 2417, 4, 'tr_2227 tr_2228 tr_2417 ', '多租户功能演示列表', 'tenantOrderIndex', 'index', '', 2, '', '/hgexample/tenantOrder/list', '', '/addons/hgexample/tenantOrder/index', 1, 'tenantOrder', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'), + (2419, 2418, 5, 'tr_2227 tr_2228 tr_2417 tr_2418 ', '多租户功能演示详情', 'tenantOrderView', '', '', 3, '', '/hgexample/tenantOrder/view', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'), + (2420, 2418, 5, 'tr_2227 tr_2228 tr_2417 tr_2418 ', '编辑/新增多租户功能演示', 'tenantOrderEdit', '', '', 3, '', '/hgexample/tenantOrder/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 20, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'), + (2421, 2418, 5, 'tr_2227 tr_2228 tr_2417 tr_2418 ', '删除多租户功能演示', 'tenantOrderDelete', '', '', 3, '', '/hgexample/tenantOrder/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'), + (2422, 2418, 5, 'tr_2227 tr_2228 tr_2417 tr_2418 ', '导出多租户功能演示', 'tenantOrderExport', '', '', 3, '', '/hgexample/tenantOrder/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'); + +-- -------------------------------------------------------- + +-- 插入 hg_admin_notice 表数据 +INSERT INTO hg_admin_notice ( + id, title, type, tag, content, receiver, remark, sort, status, + created_by, updated_by, created_at, updated_at, deleted_at +) VALUES + (29, '2023年春季学期开学工作通知!', 1, 1, + '1.学生:2月11日、2月12日报到,2月13日起安排考试。\n\n2.教职工:2月10日(周五)起正式上班(2月11日、2月12日正常上班)。\n\n3.校内进行的各类社会服务项目,主办部门、单位须关注参与人员的健康状况,如有异常第一时间报告。感染后仍在康复期内的师生,不参加剧烈活动。开学后两周内,原则上不组织各类竞技性较强的体育比赛等活动。\n\n4.全校师生员工要牢固树立健康第一的观念,切实增强个人责任感和防护意识,掌握防护技能,坚持戴口罩、勤洗手等良好卫生习惯,加强身体锻炼,保持健康生活方式,提升健康素养和自我防护能力,当好自身健康第一责任人。符合条件的师生,积极有序接种第二剂次加强针疫苗。', + NULL, '', 10, 1, 1, 1, '2023-02-09 12:25:39', '2023-02-09 12:48:08', NULL), + + (30, '国务院办公厅关于2023年部分节假日安排的通知', 1, 3, + '新华社北京12月8日电 国务院办公厅关于2023年部分节假日安排的通知,全文如下:\n\n  各省、自治区、直辖市人民政府,国务院\n\n  各部委、各直属机构:\n\n  经国务院批准,现将2023年元旦、春节、清明节、劳动节、端午节、中秋节和国庆节放假调休日期的具体安排通知如下。\n\n  一、元旦:2022年12月31日至2023年1月2日放假调休,共3天。\n\n  二、春节:1月21日至27日放假调休,共7天。1月28日(星期六)、1月29日(星期日)上班。\n\n  三、清明节:4月5日放假,共1天。\n\n  四、劳动节:4月29日至5月3日放假调休,共5天。4月23日(星期日)、5月6日(星期六)上班。\n\n  五、端午节:6月22日至24日放假调休,共3天。6月25日(星期日)上班。\n\n  六、中秋节、国庆节:9月29日至10月6日放假调休,共8天。10月7日(星期六)、10月8日(星期日)上班。\n\n  节假日期间,各地区、各部门要妥善安排好值班和安全、保卫、疫情防控等工作,遇有重大突发事件,要按规定及时报告并妥善处置,确保人民群众祥和平安度过节日假期。', + NULL, '', 20, 1, 1, 1, '2023-02-09 12:32:32', '2023-02-09 12:48:28', NULL), + + (31, 'hotgo新版本发布啦!', 2, 4, + '


本次更新内容如下:

1. 优化角色权限

2. 优化代码生成

3. ....

', + NULL, '', 30, 1, 1, 0, '2023-02-09 12:45:17', '2023-02-09 12:45:17', '2023-06-09 18:04:30'), + + (32, '新的好友', 3, 5, + '

哈喽,你好呀!

', + '[1, 3, 8]', '', 40, 1, 1, 3, '2023-02-09 12:45:54', '2023-08-11 15:19:04', NULL); + +-- +-- 转存表中的数据 `hg_admin_notice_read` +-- + +INSERT INTO hg_admin_notice_read (id, notice_id, member_id, clicks, updated_at, created_at) VALUES + (1, 31, 1, 2, '2023-04-26 22:44:51', '2023-04-25 22:59:16'), + (2, 30, 1, 23, '2024-07-21 10:34:04', '2023-04-25 23:01:27'), + (3, 32, 3, 0, '2023-04-28 16:48:41', '2023-04-28 16:48:41'), + (4, 29, 3, 4, '2023-08-11 14:42:22', '2023-04-28 16:48:47'), + (5, 30, 3, 3, '2023-08-11 15:24:45', '2023-04-28 16:48:47'), + (6, 29, 1, 1, '2023-08-11 16:07:58', '2023-06-09 20:26:43'), + (7, 29, 11, 7, '2023-08-02 14:54:26', '2023-08-02 14:54:16'), + (8, 30, 8, 0, '2023-08-02 14:59:21', '2023-08-02 14:59:21'); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 `hg_admin_post` +-- + +INSERT INTO hg_admin_post (id, code, name, remark, sort, status, created_at, updated_at) VALUES + (1, 'ceo', '董事长', '', 1, 1, '2022-01-04 17:54:52', '2023-07-06 15:17:48'), + (2, 'se', '项目经理', '', 2, 1, '2022-01-04 17:54:52', '2023-01-18 00:00:00'), + (3, 'hr', '人力资源', '', 3, 1, '2022-01-04 17:54:52', '2023-02-26 00:32:40'), + (4, 'user', '普通员工', '', 4, 1, '2022-01-04 17:54:52', '2022-05-15 22:33:09'), + (6, 'test', '测试', '测试..', 5, 1, '2022-08-14 11:41:22', '2023-04-27 23:17:27'); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 `hg_admin_role` +-- + +INSERT INTO hg_admin_role (id, name, key, data_scope, custom_dept, pid, level, tree, remark, sort, status, created_at, updated_at) VALUES + (1, '超级管理员', 'super', 1, '[]', 0, 1, NULL, '超级管理员,拥有全部权限', 100, 1, '2022-01-04 17:54:52', '2023-01-12 00:00:00'), + (2, '管理员', 'manage', 3, '[]', 1, 2, 'tr_1 ', '普通管理员,拥有常规的后台管理权限', 200, 1, '2022-01-04 17:54:52', '2023-04-27 00:00:00'), + (200, '租户', 'tenant', 7, '[]', 2, 3, 'tr_1 tr_2 ', '多租户系统中顶层实体客户、组织或实体', 1000, 1, '2023-01-12 00:00:00', '2023-08-11 15:55:46'), + (206, '财务部', 'finance', 2, '[]', 2, 3, 'tr_1 tr_2 ', '', 300, 1, '2023-01-24 20:22:10', '2023-08-11 15:55:46'), + (207, '商务部', 'business', 2, '[]', 2, 3, 'tr_1 tr_2 ', '', 400, 1, '2023-01-24 20:23:27', '2023-08-11 15:55:46'), + (208, '技术部', 'science', 2, '[]', 2, 3, 'tr_1 tr_2 ', '', 500, 1, '2023-01-24 20:23:54', '2023-08-11 15:55:46'), + (209, '商家', 'merchant', 7, '[]', 200, 4, 'tr_1 tr_2 tr_200 ', '租户内部实体,可独立经营但受租户的监管和管理', 2000, 1, '2024-04-12 10:14:21', '2024-04-13 22:24:31'), + (210, '用户', 'user', 5, '[]', 209, 5, 'tr_1 tr_2 tr_200 tr_209 ', '真正使用系统产品的终端用户', 10, 1, '2024-04-12 10:18:45', '2024-04-13 22:24:40'); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 `hg_admin_role_menu` +-- + +INSERT INTO hg_admin_role_menu (role_id, menu_id) VALUES + (1, 2051), + (1, 2052), + (1, 2053), + (2, 2047), + (2, 2048), + (2, 2049), + (2, 2050), + (2, 2061), + (2, 2062), + (2, 2063), + (2, 2064), + (2, 2065), + (2, 2066), + (2, 2067), + (2, 2068), + (2, 2069), + (2, 2070), + (2, 2071), + (2, 2072), + (2, 2073), + (2, 2074), + (2, 2075), + (2, 2076), + (2, 2077), + (2, 2078), + (2, 2082), + (2, 2083), + (2, 2084), + (2, 2085), + (2, 2086), + (2, 2087), + (2, 2088), + (2, 2089), + (2, 2090), + (2, 2091), + (2, 2092), + (2, 2093), + (2, 2094), + (2, 2095), + (2, 2096), + (2, 2099), + (2, 2100), + (2, 2101), + (2, 2102), + (2, 2103), + (2, 2109), + (2, 2110), + (2, 2111), + (2, 2112), + (2, 2113), + (2, 2114), + (2, 2115), + (2, 2116), + (2, 2117), + (2, 2118), + (2, 2120), + (2, 2121), + (2, 2122), + (2, 2124), + (2, 2198), + (2, 2199), + (2, 2200), + (2, 2201), + (2, 2202), + (2, 2203), + (2, 2204), + (2, 2205), + (2, 2206), + (2, 2207), + (2, 2208), + (2, 2209), + (2, 2210), + (2, 2211), + (2, 2212), + (2, 2213), + (2, 2214), + (2, 2215), + (2, 2216), + (2, 2217), + (2, 2218), + (2, 2219), + (2, 2220), + (2, 2221), + (2, 2222), + (2, 2223), + (2, 2224), + (2, 2225), + (2, 2226), + (2, 2227), + (2, 2228), + (2, 2230), + (2, 2231), + (2, 2232), + (2, 2235), + (2, 2236), + (2, 2237), + (2, 2240), + (2, 2241), + (2, 2242), + (2, 2243), + (2, 2244), + (2, 2245), + (2, 2246), + (2, 2247), + (2, 2248), + (2, 2249), + (2, 2250), + (2, 2251), + (2, 2252), + (2, 2253), + (2, 2254), + (2, 2255), + (2, 2256), + (2, 2257), + (2, 2258), + (2, 2259), + (2, 2260), + (2, 2261), + (2, 2262), + (2, 2263), + (2, 2264), + (2, 2265), + (2, 2266), + (2, 2267), + (2, 2268), + (2, 2269), + (2, 2270), + (2, 2271), + (2, 2272), + (2, 2273), + (2, 2275), + (2, 2277), + (2, 2278), + (2, 2279), + (2, 2280), + (2, 2281), + (2, 2282), + (2, 2283), + (2, 2292), + (2, 2293), + (2, 2294), + (2, 2295), + (2, 2296), + (2, 2297), + (2, 2298), + (2, 2299), + (2, 2300), + (2, 2301), + (2, 2302), + (2, 2319), + (2, 2338), + (2, 2417), + (2, 2418), + (2, 2419), + (2, 2420), + (2, 2421), + (2, 2422), + (100, 2047), + (100, 2048), + (100, 2049), + (100, 2050), + (100, 2061), + (100, 2062), + (100, 2063), + (100, 2064), + (100, 2068), + (100, 2069), + (100, 2070), + (100, 2071), + (100, 2072), + (100, 2073), + (100, 2109), + (100, 2110), + (100, 2111), + (100, 2112), + (100, 2113), + (100, 2114), + (100, 2115), + (100, 2116), + (100, 2117), + (100, 2121), + (100, 2122), + (100, 2124), + (200, 2047), + (200, 2048), + (200, 2050), + (200, 2073), + (200, 2074), + (200, 2075), + (200, 2076), + (200, 2077), + (200, 2082), + (200, 2083), + (200, 2093), + (200, 2095), + (200, 2099), + (200, 2100), + (200, 2102), + (200, 2103), + (200, 2118), + (200, 2120), + (200, 2122), + (200, 2124), + (200, 2207), + (200, 2208), + (200, 2219), + (200, 2220), + (200, 2221), + (200, 2222), + (200, 2223), + (200, 2224), + (200, 2225), + (200, 2226), + (200, 2227), + (200, 2228), + (200, 2230), + (200, 2231), + (200, 2232), + (200, 2235), + (200, 2236), + (200, 2237), + (200, 2240), + (200, 2241), + (200, 2242), + (200, 2243), + (200, 2244), + (200, 2245), + (200, 2270), + (200, 2271), + (200, 2272), + (200, 2282), + (200, 2283), + (200, 2298), + (200, 2319), + (200, 2338), + (200, 2417), + (200, 2418), + (200, 2419), + (200, 2420), + (200, 2421), + (200, 2422), + (201, 2047), + (201, 2048), + (201, 2050), + (201, 2073), + (201, 2074), + (201, 2075), + (201, 2076), + (201, 2077), + (201, 2082), + (201, 2083), + (201, 2093), + (201, 2095), + (201, 2099), + (201, 2100), + (201, 2102), + (201, 2103), + (201, 2118), + (201, 2120), + (201, 2207), + (201, 2208), + (201, 2219), + (201, 2220), + (201, 2232), + (201, 2235), + (201, 2236), + (201, 2237), + (201, 2240), + (201, 2241), + (201, 2242), + (201, 2243), + (201, 2244), + (201, 2245), + (201, 2270), + (201, 2271), + (201, 2272), + (201, 2282), + (201, 2283), + (201, 2298), + (202, 2047), + (202, 2048), + (202, 2049), + (202, 2050), + (202, 2073), + (202, 2074), + (202, 2075), + (202, 2076), + (202, 2077), + (202, 2082), + (202, 2083), + (202, 2099), + (202, 2100), + (202, 2102), + (202, 2103), + (202, 2120), + (202, 2207), + (202, 2208), + (202, 2219), + (202, 2220), + (202, 2270), + (202, 2271), + (202, 2272), + (202, 2282), + (202, 2283), + (206, 2047), + (206, 2048), + (206, 2049), + (206, 2050), + (206, 2061), + (206, 2062), + (206, 2063), + (206, 2064), + (206, 2065), + (206, 2066), + (206, 2067), + (206, 2068), + (206, 2069), + (206, 2070), + (206, 2071), + (206, 2072), + (206, 2074), + (206, 2075), + (206, 2076), + (206, 2077), + (206, 2078), + (206, 2082), + (206, 2083), + (206, 2084), + (206, 2086), + (206, 2087), + (206, 2088), + (206, 2089), + (206, 2090), + (206, 2091), + (206, 2092), + (206, 2093), + (206, 2094), + (206, 2095), + (206, 2096), + (206, 2109), + (206, 2110), + (206, 2111), + (206, 2112), + (206, 2113), + (206, 2114), + (206, 2115), + (206, 2116), + (206, 2117), + (206, 2118), + (206, 2121), + (206, 2122), + (206, 2124), + (206, 2207), + (206, 2208), + (206, 2209), + (206, 2210), + (206, 2211), + (206, 2212), + (206, 2213), + (206, 2214), + (206, 2215), + (206, 2216), + (206, 2217), + (206, 2218), + (206, 2221), + (206, 2222), + (206, 2223), + (206, 2224), + (206, 2225), + (206, 2226), + (207, 2047), + (207, 2048), + (207, 2049), + (207, 2050), + (208, 2047), + (208, 2048), + (208, 2049), + (208, 2050), + (208, 2062), + (208, 2109), + (208, 2110), + (208, 2111), + (208, 2247), + (208, 2250), + (209, 2047), + (209, 2048), + (209, 2050), + (209, 2073), + (209, 2074), + (209, 2075), + (209, 2076), + (209, 2077), + (209, 2082), + (209, 2083), + (209, 2093), + (209, 2095), + (209, 2099), + (209, 2100), + (209, 2102), + (209, 2103), + (209, 2118), + (209, 2120), + (209, 2122), + (209, 2124), + (209, 2207), + (209, 2208), + (209, 2219), + (209, 2220), + (209, 2221), + (209, 2222), + (209, 2223), + (209, 2224), + (209, 2225), + (209, 2226), + (209, 2227), + (209, 2228), + (209, 2230), + (209, 2231), + (209, 2232), + (209, 2235), + (209, 2236), + (209, 2237), + (209, 2240), + (209, 2241), + (209, 2242), + (209, 2243), + (209, 2244), + (209, 2245), + (209, 2270), + (209, 2271), + (209, 2272), + (209, 2282), + (209, 2283), + (209, 2298), + (209, 2319), + (209, 2338), + (209, 2417), + (209, 2418), + (209, 2419), + (209, 2420), + (209, 2421), + (209, 2422), + (210, 2047), + (210, 2048), + (210, 2050), + (210, 2073), + (210, 2074), + (210, 2075), + (210, 2076), + (210, 2077), + (210, 2082), + (210, 2083), + (210, 2093), + (210, 2095), + (210, 2099), + (210, 2100), + (210, 2102), + (210, 2103), + (210, 2118), + (210, 2120), + (210, 2122), + (210, 2124), + (210, 2207), + (210, 2208), + (210, 2219), + (210, 2220), + (210, 2221), + (210, 2222), + (210, 2223), + (210, 2224), + (210, 2225), + (210, 2226), + (210, 2227), + (210, 2228), + (210, 2230), + (210, 2231), + (210, 2232), + (210, 2235), + (210, 2236), + (210, 2237), + (210, 2240), + (210, 2241), + (210, 2242), + (210, 2243), + (210, 2244), + (210, 2245), + (210, 2270), + (210, 2271), + (210, 2272), + (210, 2282), + (210, 2283), + (210, 2298), + (210, 2319), + (210, 2338), + (210, 2417), + (210, 2418), + (210, 2419), + (210, 2420), + (210, 2421), + (210, 2422); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 `hg_sys_addons_config` +-- + +INSERT INTO hg_sys_addons_config (id, addon_name, "group", name, type, key, value, default_value, sort, tip, is_default, status, created_at, updated_at) VALUES + (1, 'hgexample', 'basic', '测试参数', 'string', 'basicTest', 'HotGo', 'HotGo', 10, '测试参数,可以按需添加配置自定义参数', 0, 1, '2023-02-14 10:56:01', '2024-07-21 21:54:49'); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 `hg_sys_blacklist` +-- + +INSERT INTO hg_sys_blacklist (id, ip, remark, status, created_at, updated_at) VALUES + (1, '39.162.138.4', '', 2, '2022-10-01 22:02:09', '2022-10-01 22:39:23'), + (2, '29.162.138.91', '', 2, '2022-10-01 22:02:09', '2022-10-01 22:39:23'), + (3, '19.162.138.94', '指定IP', 1, '2022-10-01 14:02:09', '2023-01-20 23:11:43'), + (5, '19.162.138.91,19.162.138.96', '多个IP', 1, '2022-10-01 14:02:09', '2023-01-20 23:11:36'), + (6, '19.160.138.0/24', 'IP段', 1, '2022-10-01 14:02:09', '2023-01-20 23:11:30'), + (7, '29.160.138.0-29.160.138.5', 'IP范围', 1, '2022-10-01 14:02:09', '2023-04-27 23:30:46'); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 `hg_sys_config` +-- + +INSERT INTO hg_sys_config (id, "group", name, type, key, value, default_value, sort, tip, is_default, status, created_at, updated_at) VALUES + (1, 'theme', '默认主题', 'string', 'themeDarkTheme', 'dark', 'dark', 50, '', 1, 1, '2021-01-30 13:27:43', '2022-09-05 20:29:05'), + (2, 'theme', '默认系统主题', 'string', 'themeAppTheme', '#2d8cf0', '#2d8cf0', 60, '', 1, 1, '2021-01-30 13:27:43', '2022-09-05 20:29:05'), + (3, 'theme', '默认侧边栏风格', 'string', 'themeNavTheme', 'light', 'dark', 70, '', 1, 1, '2021-01-30 13:27:43', '2022-09-05 20:29:05'), + (6, 'basic', '网站名称', 'string', 'basicName', 'HotGo', 'HotGo!', 10, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), + (7, 'basic', '网站logo', 'string', 'basicLogo', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', '', 20, '首页使用', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), + (8, 'basic', '网站备案号', 'string', 'basicIcpCode', '豫ICP备16035288号', '', 30, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), + (9, 'basic', '网站开启访问', 'bool', 'basicSystemOpen', '1', 'true', 50, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), + (10, 'basic', '网站关闭提示', 'string', 'basicCloseText', '网站维护中,暂时无法访问!本网站正在进行系统维护和技术升级,网站暂时无法访问,敬请谅解!', '网站维护中,暂时无法访问!本网站正在进行系统维护和技术升级,网站暂时无法访问,敬请谅解!', 60, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:29'), + (11, 'basic', '版权所有', 'string', 'basicCopyright', '© 2019 - 2023 HotGo All Rights Reserved.', '© 2021 - 2023 HotGo All Rights Reserved.', 40, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), + (12, 'smtp', 'SMTP服务器', 'string', 'smtpHost', 'smtpdm.aliyun.com', 'smtpdm.aliyun.com', 50, '错误的配置发送邮件会导致服务器超时', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), + (13, 'smtp', 'SMTP端口', 'int', 'smtpPort', '25', '25', 100, '(不加密默认25,SSL默认465,TLS默认587)', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), + (14, 'smtp', 'SMTP用户名', 'string', 'smtpUser', 'ali@mail.qvnidaye.com', '', 110, '填写完整用户名', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), + (15, 'smtp', 'SMTP密码', 'string', 'smtpPass', '', '', 120, '填写您的密码', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), + (16, 'smtp', '发件人名称', 'string', 'smtpSendName', 'HotGo', 'HotGo', 130, '', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), + (17, 'smtp', '管理员邮箱', 'string', 'smtpAdminMailbox', '133814250@qq.com', '133814250@qq.com', 140, '', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), + (28, 'upload', '上传驱动', 'string', 'uploadDrive', 'local', '', 300, 'local:本地;ucloud:ucloud;腾讯云:cos', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (29, 'upload', '上传图片大小限制', 'int', 'uploadImageSize', '1', '2', 310, '单位:MB', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (30, 'upload', '上传图片类型限制', 'string', 'uploadImageType', 'jpg,jpeg,gif,npm,png,svg', 'jpg,jpeg,gif,npm,png,svg', 320, '图片上传后缀类型限制', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (31, 'upload', '上传文件大小限制', 'int', 'uploadFileSize', '1000', '10', 330, '单位:MB', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (32, 'upload', '上传文件类型限制', 'string', 'uploadFileType', 'doc,docx,pdf,zip,tar,xls,xlsx,rar,jpg,jpeg,gif,npm,png,svg', 'doc,docx,zip,xls,xlsx,rar,jpg,jpeg,gif,npm,png,svg', 340, '文件上传后缀类型限制', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (33, 'upload', '本地存储路径', 'string', 'uploadLocalPath', 'attachment/', 'attachment/', 350, '对外访问的相对路径', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (34, 'upload', 'UCloud存储路径', 'string', 'uploadUCloudPath', 'hotgo/attachment/', 'hotgo/attachment/', 360, 'UC对象存储中的相对路径', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (35, 'upload', 'UCloud公钥', 'string', 'uploadUCloudPublicKey', '', '', 370, '获取地址:https://console.ucloud.cn/ufile/token', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (36, 'upload', 'UCloud私钥', 'string', 'uploadUCloudPrivateKey', '', '', 380, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (37, 'upload', 'UCloud地域API', 'string', 'uploadUCloudBucketHost', 'api.ucloud.cn', 'api.ucloud.cn', 390, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (38, 'upload', 'UCloud存储桶名称', 'string', 'uploadUCloudBucketName', 'bufanyun', '', 400, '存储空间名称', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (39, 'upload', 'UCloud存储桶地域host', 'string', 'uploadUCloudFileHost', 'cn-bj.ufileos.com', 'cn-bj.ufileos.com', 410, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (40, 'upload', 'UCloud访问域名', 'string', 'uploadUCloudEndpoint', 'https://gmycos.facms.cn', '', 420, '格式,http://abc.com 或 https://abc.com,不可为空', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (41, 'geo', '高德Web服务key', 'string', 'geoAmapWebKey', '', '', 500, '申请地址:https://console.amap.com/dev/key/app', 1, 1, '2021-01-30 13:27:43', '2022-12-07 15:48:43'), + (42, 'sms', '短信驱动,aliyun:阿里云;tencent:腾讯云', 'string', 'smsDrive', 'tencent', '', 600, '', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), + (43, 'sms', '阿里云AccessKeyID', 'string', 'smsAliYunAccessKeyID', '', '', 610, '应用key和密钥你可以通过 https://ram.console.aliyun.com/manage/ak 获取', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), + (44, 'sms', '阿里云AccessKeySecret', 'string', 'smsAliYunAccessKeySecret', '', '', 620, '', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), + (45, 'sms', '阿里云短信签名', 'string', 'smsAliYunSign', '', '', 630, '申请地址:https://dysms.console.aliyun.com/domestic/text/sign', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), + (46, 'sms', '阿里云短信模板', 'string', 'smsAliYunTemplate', '[{"key":"login","value":"SMS_198921686"},{"key":"register","value":"SMS_198921686"},{"key":"code","value":"SMS_198921686"},{"key":"resetPwd","value":"SMS_198921686"},{"key":"bind","value":"SMS_198921686"},{"key":"cash","value":"SMS_198921686"}]', '', 640, '', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), + (47, 'sms', '最小发送间隔', 'int', 'smsMinInterval', '60', '', 600, '同号码', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), + (48, 'sms', 'IP最大发送次数', 'int', 'smsMaxIpLimit', '10', '', 610, '同IP每天最大允许发送次数', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), + (49, 'sms', '验证码有效期', 'int', 'smsCodeExpire', '600', '', 610, '单位:秒', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), + (50, 'smtp', '邮件模板', 'string', 'smtpTemplate', '[{"key":"text","value":"./resource/template/email/text.html"},{"key":"login","value":"./resource/template/email/code.html"},{"key":"register","value":"./resource/template/email/code.html"},{"key":"code","value":"./resource/template/email/code.html"},{"key":"resetPwd","value":"./resource/template/email/resetPwd.html"},{"key":"bind","value":"./resource/template/email/code.html"},{"key":"cash","value":"./resource/template/email/code.html"}]', '', 190, '', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), + (51, 'smtp', '最小发送间隔', 'int', 'smtpMinInterval', '60', '', 150, '同地址', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), + (52, 'smtp', 'IP最大发送次数', 'int', 'smtpMaxIpLimit', '10', '', 160, '同IP每天最大允许发送次数', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), + (53, 'smtp', '验证码有效期', 'int', 'smtpCodeExpire', '600', '', 170, '单位:秒', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), + (54, 'basic', '网站域名', 'string', 'basicDomain', 'http://127.0.0.1:8000', 'http://127.0.0.1:8000', 45, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), + (55, 'basic', 'websocket地址', 'string', 'basicWsAddr', 'ws://127.0.0.1:8000/socket', 'ws://127.0.0.1:8000/socket', 48, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), + (56, 'upload', 'COS存储路径', 'string', 'uploadCosPath', 'hotgo/attachment/', 'hotgo/attachment/', 450, 'COS对象存储中的相对路径', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (57, 'upload', 'COS秘钥ID', 'string', 'uploadCosSecretId', '', '', 460, '子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (58, 'upload', 'COS秘钥', 'string', 'uploadCosSecretKey', '', '', 470, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (59, 'upload', 'COS访问域名', 'string', 'uploadCosBucketURL', '', 'https://xxx-1253625515.cos.ap-beijing.myqcloud.com', 480, '控制台查看地址:https://console.cloud.tencent.com/cos/bucket', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (60, 'upload', 'OSS存储路径', 'string', 'uploadOssPath', 'hotgo/attachment/', 'hotgo/attachment/', 500, 'OSS对象存储中的相对路径', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (61, 'upload', 'OSS秘钥ID', 'string', 'uploadOssSecretId', '', '', 510, '阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (62, 'upload', 'OSS秘钥', 'string', 'uploadOssSecretKey', '', '', 520, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (63, 'upload', 'Bucket 域名', 'string', 'uploadOssBucketURL', 'http://bufanyunoss.oss-cn-qingdao.aliyuncs.com', 'https://xxx.oss-cn-qingdao.aliyuncs.com', 530, 'Bucket 域名', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (64, 'upload', 'OSSEndpoint', 'string', 'uploadOssEndpoint', 'http://oss-cn-qingdao.aliyuncs.com', 'https://oss-cn-qingdao.aliyuncs.com', 540, 'Endpoint(地域节点)', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (65, 'upload', 'OSS存储空间名称', 'string', 'uploadOssBucket', '', '', 550, '存储空间名称,例如examplebucket', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (66, 'upload', '七牛云AccessKey', 'string', 'uploadQiNiuAccessKey', '', '', 600, '创建地址:https://portal.qiniu.com/user/key', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (67, 'upload', '七牛云SecretKey', 'string', 'uploadQiNiuSecretKey', '', '', 610, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (68, 'upload', '七牛云储存路径', 'string', 'uploadQiNiuPath', 'hotgo/attachment/', 'hotgo/attachment/', 620, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (69, 'upload', '七牛云存储空间名称', 'string', 'uploadQiNiuBucket', '', 'bufanyun', 630, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (70, 'upload', '七牛云访问域名', 'string', 'uploadQiNiuDomain', '', '', 640, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (78, 'sms', '腾讯云SecretId', 'string', 'smsTencentSecretId', '', '', 650, '获取地址:https://console.cloud.tencent.com/cam/capi', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), + (79, 'sms', '腾讯云SecretKey', 'string', 'smsTencentSecretKey', '', '', 660, '', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), + (80, 'sms', '腾讯云短信应用ID', 'string', 'smsTencentAppId', '', '', 670, '查看地址:https://console.cloud.tencent.com/smsv2/app-manage', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), + (81, 'sms', '腾讯云短信签名', 'string', 'smsTencentSign', '', '', 680, '查看地址:https://console.cloud.tencent.com/smsv2/csms-sign', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), + (82, 'sms', '腾讯云接入地域域名', 'string', 'smsTencentEndpoint', 'sms.tencentcloudapi.com', 'sms.tencentcloudapi.com', 690, '默认就近地域接入域名为 sms.tencentcloudapi.com ,也支持指定地域域名访问,例如广州地域的域名为 sms.ap-guangzhou.tencentcloudapi.com', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), + (83, 'sms', '腾讯云地域信息', 'string', 'smsTencentRegion', 'ap-guangzhou', 'ap-guangzhou', 695, '支持的地域列表参考 https://cloud.tencent.com/document/api/382/52071#.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), + (84, 'sms', '腾讯云短信模板', 'string', 'smsTencentTemplate', '[{"key":"login","value":"1758990"},{"key":"register","value":"1758990"},{"key":"code","value":"1758990"},{"key":"resetPwd","value":"1758990"},{"key":"bind","value":"1758990"},{"key":"cash","value":"1758990"}]', '', 698, '', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), + (85, 'pay', 'Debug开关', 'bool', 'payDebug', '1', 'true', 800, '输出请求日志', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), + (86, 'pay', '支付宝应用ID', 'string', 'payAliPayAppId', '', '', 810, '', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), + (87, 'pay', '支付宝PrivateKey', 'string', 'payAliPayPrivateKey', 'storage/cert/pay/alipay/alipayPrivateKey', '', 820, '应用私钥,支持PKCS1和PKCS8', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), + (88, 'pay', '支付宝AppCertPublicKey', 'string', 'payAliPayAppCertPublicKey', 'storage/cert/pay/alipay/appCertPublicKey.crt', '', 830, 'appCertPublicKey.crt证书内容', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), + (89, 'pay', '支付宝RootCert', 'string', 'payAliPayRootCert', 'storage/cert/pay/alipay/alipayRootCert.crt', '', 840, 'alipayRootCert.crt证书内容', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), + (90, 'pay', '支付宝PublicKeyRSA2', 'string', 'payAliPayCertPublicKeyRSA2', 'storage/cert/pay/alipay/alipayCertPublicKey_RSA2.crt', '', 850, 'alipayCertPublicKey_RSA2.crt证书内容', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), + (91, 'pay', '微信支付应用ID', 'string', 'payWxPayAppId', '', '', 860, '', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), + (92, 'pay', '微信支付商户ID', 'string', 'payWxPayMchId', '', '', 870, '商户ID 或者服务商模式的 sp_mchid', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), + (93, 'pay', '微信支付证书序列号', 'string', 'payWxPaySerialNo', '', '', 880, '商户证书的证书序列号', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), + (94, 'pay', '微信支付APIv3Key', 'string', 'payWxPayAPIv3Key', '', '', 890, '商户平台获取', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), + (95, 'pay', '微信支付私钥', 'string', 'payWxPayPrivateKey', '', '', 900, 'apiclient_key.pem 读取后的内容', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), + (96, 'pay', 'QQ支付应用ID', 'string', 'payQQPayAppId', '', '', 910, '', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), + (97, 'pay', 'QQ支付商户ID', 'string', 'payQQPayMchId', '', '', 920, '', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), + (98, 'pay', 'QQ支付ApiKey', 'string', 'payQQPayApiKey', '', '', 930, 'API秘钥值', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), + (99, 'cash', '提现开关', 'int', 'cashSwitch', '1', '1', 200, '', 1, 1, '2021-09-29 23:51:21', '2022-12-21 21:58:52'), + (100, 'cash', '提现最低手续费(元)', 'int', 'cashMinFee', '3', '3', 210, '', 1, 1, '2021-09-29 23:51:21', '2022-12-21 21:58:52'), + (101, 'cash', '提现最低手续费比率', 'string', 'cashMinFeeRatio', '0.03', '0.03', 220, '', 1, 1, '2021-01-30 13:27:43', '2022-12-21 21:58:52'), + (102, 'cash', '提现最低金额', 'int', 'cashMinMoney', '100', '', 230, '', 1, 1, '2021-01-30 13:27:43', '2022-12-21 21:58:52'), + (103, 'cash', '提现提示信息', 'string', 'cashTips', '

温馨提示:请保证支付宝信息姓名、账号、收款码信息一致且无误,否则导致不到账后果自负。

\n\n

提现条件:满100元后可申请提现。

\n

提现手续费:固定3元/次,提现金额超过100元按3%收取,封顶135元/次。

', '', 240, '', 1, 1, '2021-01-30 13:27:43', '2022-12-21 21:58:52'), + (104, 'wechat', '公众号AppId', 'string', 'officialAccountAppId', '', '', 1000, '请填写微信公众平台后台的AppId', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), + (105, 'wechat', '公众号AppSecret', 'string', 'officialAccountAppSecret', '', '', 1010, '请填写微信公众平台后台的AppSecret', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), + (106, 'wechat', '公众号token', 'string', 'officialAccountToken', '', '', 1020, '', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), + (107, 'wechat', '公众号EncodingAESKey', 'string', 'officialAccountEncodingAESKey', '', '', 1030, '与公众平台接入设置值一致,必须为英文或者数字,长度为43个字符. 请妥善保管,EncodingAESKey 泄露将可能被窃取或篡改平台的操作数据', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), + (108, 'wechat', '开放平台AppId', 'string', 'openPlatformAppId', '', '', 1040, '请填写微信开放平台平台后台的AppId', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), + (109, 'wechat', '开放平台AppSecret', 'string', 'openPlatformAppSecret', '', '', 1050, '请填写微信开放平台平台后台的AppSecret', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), + (110, 'wechat', '开放平台EncodingAESKey', 'string', 'openPlatformEncodingAESKey', '', '', 1060, '与开放平台接入设置值一致,必须为英文或者数字,长度为43个字符. 请妥善保管,EncodingAESKey 泄露将可能被窃取或篡改平台的操作数据', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), + (111, 'wechat', '开放平台token', 'string', 'openPlatformToken', '', '', 1070, '', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), + (112, 'login', '注册开关', 'int', 'loginRegisterSwitch', '1', '1', 1100, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), + (113, 'login', '验证码开关', 'int', 'loginCaptchaSwitch', '1', '1', 1110, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), + (114, 'login', '用户协议', 'string', 'loginProtocol', '

用户协议..

', '', 1120, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), + (115, 'login', '隐私权政策', 'string', 'loginPolicy', '

隐私权政策..

', '', 1130, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), + (116, 'login', '默认注册角色', 'int64', 'loginRoleId', '210', '', 1140, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:49'), + (117, 'login', '默认注册部门', 'int64', 'loginDeptId', '110', '', 1150, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), + (118, 'login', '默认注册岗位', '[]int64', 'loginPostIds', '[4]', '', 1160, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), + (119, 'login', '默认注册头像', 'string', 'loginAvatar', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', '', 1170, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), + (120, 'login', '强制邀请', 'int', 'loginForceInvite', '2', '1', 1190, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:49'), + (121, 'login', '自动获取openId', 'int', 'loginAutoOpenId', '2', '1', 1195, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), + (122, 'upload', 'minio AccessKey', 'string', 'uploadMinioAccessKey', '', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (123, 'upload', 'minio SecretKey', 'string', 'uploadMinioSecretKey', '', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (124, 'upload', 'minio地域节点', 'string', 'uploadMinioEndpoint', '', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (125, 'upload', 'minio是否启用SSL', 'int', 'uploadMinioUseSSL', '1', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (126, 'upload', 'minio存储路径', 'string', 'uploadMinioPath', 'hotgo/attachment/', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (127, 'upload', 'minio桶名称', 'string', 'uploadMinioBucket', '', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), + (128, 'upload', 'minio对外访问域名', 'string', 'uploadMinioDomain', '', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 `hg_sys_cron` +-- + +INSERT INTO hg_sys_cron (id, group_id, title, name, params, pattern, policy, count, sort, remark, status, created_at, updated_at) VALUES + (1, 1, '测试任务', 'test', '', '* * * * * *', 1, 3, 10, '测试无参数任务', 2, '2022-10-01 22:02:09', '2023-11-25 14:33:05'), + (2, 1, '测试带参数', 'test2', 'hotGo,3,欢迎使用hotGo!', '* * * * * *', 1, 0, 10, '测试有参数任务', 2, '2022-10-01 06:02:09', '2023-11-17 18:38:49'), + (3, 1, '测试带参数-多任务', 'test2', 'hotGo,3,这是同一个执行方法开多个定时任务的实例!', '* * * * * *', 1, 1, 10, '相同的执行方法,可以开启多个任务', 2, '2023-11-17 16:12:26', '2023-11-20 10:11:47'), + (4, 1, '测试带参数-错误', 'test2', '666', '* * * * * *', 1, 1, 10, '参入一个错误的参数格式,来模拟执行出错示例', 2, '2023-11-17 18:23:39', '2023-11-17 18:39:59'), + (10, 1, '关闭过期订单', 'close_order', '', '0 */10 * * * *', 1, 1, 100, '取消过期订单,10分钟运行一次', 2, '2023-04-22 21:58:47', '2023-11-18 11:54:07'); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 `hg_sys_cron_group` +-- + +INSERT INTO hg_sys_cron_group (id, pid, name, is_default, sort, remark, status, created_at, updated_at) VALUES + (1, 0, '系统默认', 1, 0, '这是系统默认的任务分组,无法删除!', 1, '2021-02-25 17:38:07', '2021-02-25 19:32:57'), + (2, 0, '测试', 0, 0, '这是测试任务分组', 1, NULL, '2023-05-29 14:59:39'); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 `hg_sys_dict_data` +-- + +INSERT INTO hg_sys_dict_data (id, label, value, value_type, type, list_class, is_default, sort, remark, status, created_at, updated_at) VALUES + (1, '男', '1', 'int', 'sys_user_sex', 'success', 1, 10, '性别男', 1, '2021-01-30 13:27:43', '2023-04-27 23:24:58'), + (2, '女', '2', 'int', 'sys_user_sex', 'warning', 1, 20, '性别女', 1, '2021-01-30 13:27:43', '2023-01-06 09:45:21'), + (3, '保密', '3', 'int', 'sys_user_sex', 'error', 1, 30, '性别保密', 1, '2021-01-30 13:27:43', '2023-01-06 09:45:18'), + (6, '正常', '1', 'int', 'sys_normal_disable', 'success', 1, 10, '正常状态', 1, '2021-01-30 13:27:43', '2023-01-18 09:52:44'), + (7, '停用', '2', 'int', 'sys_normal_disable', 'warning', 1, 20, '停用状态', 1, '2021-01-30 13:27:43', '2023-01-18 09:52:48'), + (8, '正常', '1', 'int', 'sys_job_status', 'primary', 1, 10, '正常状态', 1, '2021-01-30 13:27:43', '2023-01-18 09:53:48'), + (9, '暂停', '2', 'int', 'sys_job_status', 'error', 1, 20, '停用状态', 1, '2021-01-30 13:27:43', '2023-01-18 09:53:53'), + (10, '默认', 'DEFAULT', 'string', 'sys_job_group', '', 1, 10, '默认分组', 1, '2021-01-30 13:27:43', NULL), + (11, '系统', 'SYSTEM', 'string', 'sys_job_group', '', 1, 20, '系统分组', 1, '2021-01-30 13:27:43', NULL), + (14, '通知', '1', 'int', 'sys_notice_type', 'warning', 1, 10, '通知', 1, '2021-01-30 13:27:43', '2023-01-05 20:06:47'), + (15, '公告', '2', 'int', 'sys_notice_type', 'error', 1, 20, '公告', 1, '2021-01-30 13:27:43', '2023-01-26 12:08:52'), + (18, '新增', '1', 'int', 'sys_oper_type', 'info', 0, 10, '新增操作', 1, '2021-01-30 13:27:43', NULL), + (19, '修改', '2', 'int', 'sys_oper_type', 'info', 0, 20, '修改操作', 1, '2021-01-30 13:27:43', NULL), + (20, '删除', '3', 'int', 'sys_oper_type', 'error', 0, 30, '删除操作', 1, '2021-01-30 13:27:43', NULL), + (21, '授权', '4', 'int', 'sys_oper_type', 'primary', 0, 40, '授权操作', 1, '2021-01-30 13:27:43', NULL), + (22, '导出', '5', 'int', 'sys_oper_type', 'warning', 0, 50, '导出操作', 1, '2021-01-30 13:27:43', NULL), + (23, '导入', '6', 'int', 'sys_oper_type', 'warning', 0, 60, '导入操作', 1, '2021-01-30 13:27:43', NULL), + (24, '强退', '7', 'int', 'sys_oper_type', 'error', 0, 70, '强退操作', 1, '2021-01-30 13:27:43', NULL), + (25, '生成代码', '8', 'int', 'sys_oper_type', 'warning', 0, 80, '生成操作', 1, '2021-01-30 13:27:43', NULL), + (26, '清空数据', '9', 'int', 'sys_oper_type', 'error', 0, 90, '清空操作', 1, '2021-01-30 13:27:43', NULL), + (28, '校验', '11', 'int', 'sys_oper_type', NULL, 0, 110, '校验', 1, '2021-10-04 22:40:50', '2021-10-04 22:50:02'), + (80, '查询', '10', 'int', 'sys_oper_type', NULL, 0, 100, '查询', 1, '2021-10-04 22:37:38', '2021-10-04 22:49:32'), + (88, 'GET', 'GET', 'string', 'sys_oper_method', '', 0, 10, '', 1, '2022-01-25 10:16:46', '2022-01-25 10:16:46'), + (89, 'POST', 'POST', 'string', 'sys_oper_method', '', 0, 20, '', 1, '2022-01-25 10:16:54', '2022-01-25 10:16:54'), + (90, '请求失败', '-1', 'int', 'req_code', 'warning', 0, 20, '通用错误码', 1, '2022-01-25 10:23:34', '2023-01-06 09:58:17'), + (91, '请求成功', '0', 'int', 'req_code', 'success', 0, 10, '通用成功码', 1, '2022-01-25 10:23:54', '2023-01-06 09:58:14'), + (92, '内部发生错误', '50', 'int', 'req_code', 'error', 0, 30, '内部错误', 1, '2022-01-25 10:24:06', '2023-01-06 09:56:31'), + (95, '不允许的操作', '59', 'int', 'req_code', 'error', 0, 60, '当前操作的给定参数无效', 1, '2022-01-25 10:24:38', '2023-01-06 09:56:00'), + (103, '没有授权登录', '61', 'int', 'req_code', 'warning', 0, 140, '未授权', 1, '2022-01-25 10:26:12', '2023-01-06 09:55:50'), + (109, '业务验证失败', '300', 'int', 'req_code', 'warning', 0, 200, '业务验证失败', 1, '2022-01-25 10:27:51', '2023-01-06 09:56:51'), + (110, '大于50ms', '50', 'int64', 'req_take_up_time', 'success', 0, 10, '', 1, '2022-01-25 15:51:45', '2023-01-06 09:59:50'), + (111, '大于100ms', '100', 'int64', 'req_take_up_time', 'success', 0, 20, '', 1, '2022-01-25 15:51:57', '2023-01-06 09:59:53'), + (112, '大于200ms', '200', 'int64', 'req_take_up_time', 'info', 0, 30, '', 1, '2022-01-25 15:52:21', '2023-01-06 09:59:57'), + (113, '大于500ms', '500', 'int64', 'req_take_up_time', 'warning', 0, 40, '', 1, '2022-01-25 15:52:32', '2023-01-06 10:00:02'), + (114, '大于1000ms', '1000', 'int64', 'req_take_up_time', 'error', 0, 50, '', 1, '2022-01-25 15:52:57', '2023-01-06 10:00:06'), + (115, '大于5000ms', '5000', 'int64', 'req_take_up_time', 'error', 0, 60, '', 1, '2022-01-24 23:54:15', '2023-01-06 10:00:10'), + (116, '开启', '1', 'int', 'sys_switch', 'info', 1, 10, '系统开关开启', 1, '2021-01-30 13:27:43', '2022-12-27 00:00:00'), + (117, '关闭', '2', 'int', 'sys_switch', 'warning', 1, 20, '系统开关关闭', 1, '2021-01-30 13:27:43', '2022-12-27 00:00:00'), + (118, 'PC端', '1', 'int', 'sys_user_channel', 'info', 0, 80, '用户来源', 1, '2021-01-30 13:27:43', '2023-01-05 17:01:21'), + (119, '移动端', '2', 'int', 'sys_user_channel', 'success', 0, 80, '用户来源', 1, '2021-01-30 13:27:43', '2023-01-05 16:52:48'), + (120, '微信', '3', 'int', 'sys_user_channel', 'warning', 0, 80, '用户来源', 1, '2021-01-30 13:27:43', '2023-01-05 16:52:43'), + (121, '抖音', '4', 'int', 'sys_user_channel', 'error', 0, 80, '用户来源', 1, '2021-01-30 13:27:43', '2023-01-05 16:52:39'), + (122, '音乐', '1', 'int', 'sys_user_hobby', 'error', 0, 80, '爱好类型', 1, '2021-01-30 13:27:43', '2023-01-06 09:45:11'), + (123, '读书', '2', 'int', 'sys_user_hobby', 'info', 0, 80, '爱好类型', 1, '2021-01-30 13:27:43', '2023-01-06 09:45:08'), + (124, '游泳', '3', 'int', 'sys_user_hobby', 'warning', 0, 80, '爱好类型', 1, '2021-01-30 13:27:43', '2023-01-06 09:45:05'), + (125, '本地存储', 'local', 'string', 'config_upload_drive', 'info', 1, 10, '', 1, '2022-12-30 17:57:50', '2023-01-06 10:02:31'), + (126, 'ucloud', 'ucloud', 'string', 'config_upload_drive', 'success', 1, 20, '', 1, '2022-12-30 17:58:26', '2022-12-30 17:58:26'), + (127, 'DEBU', 'DEBU', 'string', 'sys_log_type', 'default', 0, 10, '', 1, '2023-01-20 16:56:23', '2023-01-20 16:56:23'), + (128, 'INFO', 'INFO', 'string', 'sys_log_type', 'info', 0, 20, '', 1, '2023-01-20 16:56:34', '2023-01-20 16:56:34'), + (129, 'WARN', 'WARN', 'string', 'sys_log_type', 'warning', 0, 30, '', 1, '2023-01-20 16:56:47', '2023-01-20 16:56:47'), + (130, 'ERRO', 'ERRO', 'string', 'sys_log_type', 'error', 0, 50, '', 1, '2023-01-20 16:57:01', '2023-01-20 16:57:01'), + (131, 'PANI', 'PANI', 'string', 'sys_log_type', 'error', 0, 60, '', 1, '2023-01-20 16:57:23', '2023-01-20 16:57:23'), + (132, 'FATA', 'FATA', 'string', 'sys_log_type', 'error', 0, 70, '', 1, '2023-01-20 16:57:37', '2023-01-20 16:57:37'), + (133, '阿里云', 'aliyun', 'string', 'config_sms_drive', 'success', 0, 10, '', 1, '2023-01-21 10:27:59', '2023-01-21 10:27:59'), + (134, '腾讯云', 'tencent', 'string', 'config_sms_drive', 'info', 0, 20, '', 1, '2023-01-21 10:28:23', '2023-01-21 10:28:23'), + (135, '通用验证码', 'code', 'string', 'config_sms_template', 'info', 0, 10, '', 1, '2023-01-21 10:28:39', '2023-01-21 20:40:09'), + (136, '登录', 'login', 'string', 'config_sms_template', 'success', 0, 20, '', 1, '2023-01-21 10:28:48', '2023-01-21 10:28:48'), + (137, '注册', 'register', 'string', 'config_sms_template', 'warning', 0, 30, '', 1, '2023-01-21 10:28:58', '2023-01-21 10:28:58'), + (138, '重置密码', 'resetPwd', 'string', 'config_sms_template', 'error', 0, 40, '', 1, '2023-01-21 10:29:10', '2023-01-21 10:29:10'), + (139, '绑定手机号', 'bind', 'string', 'config_sms_template', 'info', 0, 50, '', 1, '2023-01-21 10:29:22', '2023-01-21 10:29:22'), + (140, '申请提现', 'cash', 'string', 'config_sms_template', 'primary', 0, 60, '', 1, '2023-01-21 10:29:36', '2023-01-21 10:29:40'), + (141, '私信', '3', 'int', 'sys_notice_type', 'info', 0, 30, '', 1, '2023-01-26 12:08:42', '2023-01-26 12:08:42'), + (142, '一般', '1', 'int', 'sys_notice_tag', 'info', 0, 10, '', 1, '2023-01-26 12:13:04', '2023-01-26 12:16:07'), + (143, '重要', '2', 'int', 'sys_notice_tag', 'error', 0, 20, '', 1, '2023-01-26 12:13:36', '2023-01-26 12:13:36'), + (144, '提醒', '3', 'int', 'sys_notice_tag', 'warning', 0, 30, '', 1, '2023-01-26 12:13:52', '2023-01-26 12:13:52'), + (145, '注意', '4', 'int', 'sys_notice_tag', 'success', 0, 40, '', 1, '2023-01-26 12:14:12', '2023-01-26 12:14:12'), + (146, '调试', '5', 'int', 'sys_notice_tag', 'default', 0, 50, '', 1, '2023-01-26 12:15:59', '2023-01-26 12:15:59'), + (147, '通用验证码', 'code', 'string', 'config_ems_template', 'info', 0, 10, '', 1, '2023-01-21 10:28:39', '2023-01-21 20:40:09'), + (148, '登录', 'login', 'string', 'config_ems_template', 'success', 0, 20, '', 1, '2023-01-21 10:28:48', '2023-01-21 10:28:48'), + (149, '注册', 'register', 'string', 'config_ems_template', 'warning', 0, 30, '', 1, '2023-01-21 10:28:58', '2023-01-21 10:28:58'), + (150, '重置密码', 'resetPwd', 'string', 'config_ems_template', 'error', 0, 40, '', 1, '2023-01-21 10:29:10', '2023-01-21 10:29:10'), + (151, '绑定手机号', 'bind', 'string', 'config_ems_template', 'info', 0, 50, '', 1, '2023-01-21 10:29:22', '2023-01-21 10:29:22'), + (152, '申请提现', 'cash', 'string', 'config_ems_template', 'primary', 0, 60, '', 1, '2023-01-21 10:29:36', '2023-01-21 10:29:40'), + (153, '富文本', 'text', 'string', 'config_ems_template', 'default', 0, 0, '自定义编辑邮件内容时使用', 1, '2023-01-21 10:29:36', '2023-05-29 14:30:49'), + (154, '腾讯云', 'cos', 'string', 'config_upload_drive', 'info', 1, 30, '', 1, '2022-12-30 17:58:26', '2022-12-30 17:58:26'), + (155, '阿里云', 'oss', 'string', 'config_upload_drive', 'info', 1, 40, '', 1, '2022-12-30 17:58:26', '2022-12-30 17:58:26'), + (156, '七牛云', 'qiniu', 'string', 'config_upload_drive', 'success', 1, 50, '', 1, '2022-12-30 17:58:26', '2022-12-30 17:58:26'), + (157, 'minio', 'minio', 'string', 'config_upload_drive', 'default', 0, 60, '', 1, '2023-11-11 16:45:12', '2023-11-11 16:45:12'), + (158, '目录', '1', 'int', 'sys_menu_types', 'success', 1, 10, '', 1, '2021-01-30 13:27:43', '2023-04-27 23:24:58'), + (159, '菜单', '2', 'int', 'sys_menu_types', 'primary', 1, 20, '', 1, '2021-01-30 13:27:43', '2023-04-27 23:24:58'), + (160, '按钮', '3', 'int', 'sys_menu_types', 'info', 1, 30, '', 1, '2021-01-30 13:27:43', '2023-04-27 23:24:58'), + (161, '主目录', 'LAYOUT', 'string', 'sys_menu_component', 'default', 0, 10, '', 1, '2024-04-16 13:35:49', '2024-04-16 13:35:49'), + (162, '子目录', 'ParentLayout', 'string', 'sys_menu_component', 'default', 0, 20, '', 1, '2024-04-16 13:36:04', '2024-04-16 13:36:04'), + (163, '内嵌链接', 'IFRAME', 'string', 'sys_menu_component', 'default', 0, 30, '', 1, '2024-04-16 13:36:30', '2024-04-16 13:36:30'), + (164, '登录成功', '1', 'int', 'sys_login_status', 'success', 0, 10, '', 1, '2024-04-16 15:21:41', '2024-04-16 15:21:41'), + (165, '登录失败', '2', 'int', 'sys_login_status', 'warning', 0, 20, '', 1, '2024-04-16 15:22:02', '2024-04-16 15:22:02'); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 `hg_sys_dict_type` +-- + +INSERT INTO hg_sys_dict_type (id, pid, name, type, sort, remark, status, created_at, updated_at) VALUES + (1, 27, '用户性别', 'sys_user_sex', 0, '用户性别列表', 1, '2021-01-30 13:27:43', '2021-03-24 11:38:47'), + (2, 28, '菜单类型', 'sys_menu_types', 80, '', 1, '2021-01-30 13:27:43', '2023-02-26 00:46:18'), + (3, 28, '系统状态', 'sys_normal_disable', 10, '系统状态列表', 1, '2021-01-30 13:27:43', NULL), + (4, 26, '任务状态', 'sys_job_status', 0, '任务状态列表', 1, '2021-01-30 13:27:43', NULL), + (5, 26, '任务分组', 'sys_job_group', 0, '任务分组列表', 1, '2021-01-30 13:27:43', NULL), + (7, 29, '通知类型', 'sys_notice_type', 0, '通知类型列表', 1, '2021-01-30 13:27:43', NULL), + (9, 28, '操作类型', 'sys_oper_type', 100, '', 1, '2021-01-30 13:27:43', '2023-02-26 00:48:01'), + (22, 25, '请求方式', 'sys_oper_method', 0, '', 1, '2022-01-24 11:33:16', '2022-01-24 11:33:16'), + (23, 25, '请求状态码', 'req_code', 0, '', 1, '2022-01-25 10:22:40', '2022-01-25 10:22:40'), + (24, 25, '请求耗时', 'req_take_up_time', 0, '', 1, '2022-01-25 15:51:19', '2022-01-25 15:51:19'), + (25, 0, '请求枚举', 'req', 40, '', 1, '2022-01-24 11:33:16', '2022-01-24 11:33:16'), + (26, 0, '任务枚举', 'job', 30, '', 1, '2022-01-24 11:33:16', '2022-01-24 11:33:16'), + (27, 0, '组织枚举', 'org', 20, '', 1, '2022-01-24 11:33:16', '2023-04-27 23:24:53'), + (28, 0, '系统枚举', 'sys', 10, '', 1, '2022-01-24 11:33:16', '2023-02-26 00:33:13'), + (29, 0, '通知枚举', 'notice', 50, '', 1, '2022-01-24 11:33:16', '2022-01-24 11:33:16'), + (30, 27, '用户爱好', 'sys_user_hobby', 0, NULL, 1, '2021-03-01 11:41:07', '2021-03-01 11:41:07'), + (31, 27, '用户渠道', 'sys_user_channel', 0, NULL, 1, '2021-03-01 11:41:07', '2021-03-01 11:41:07'), + (32, 0, '配置枚举', 'config', 60, '', 1, '2022-12-30 17:55:42', '2023-05-29 14:47:01'), + (33, 32, '上传驱动', 'config_upload_drive', 10, '', 1, '2022-12-30 17:57:18', '2022-12-30 17:57:18'), + (34, 28, '日志类型', 'sys_log_type', 200, '', 1, '2023-01-20 16:39:52', '2023-02-24 17:40:45'), + (35, 32, '短信驱动', 'config_sms_drive', 20, '', 1, '2023-01-21 10:27:01', '2023-01-21 10:27:01'), + (36, 32, '短信模板', 'config_sms_template', 30, '', 1, '2023-01-21 10:27:41', '2023-01-21 10:27:41'), + (37, 29, '通知标签', 'sys_notice_tag', 20, '', 1, '2023-01-26 12:09:46', '2023-01-26 12:09:46'), + (38, 32, '邮件模板', 'config_ems_template', 40, '', 1, '2023-02-04 12:53:07', '2023-02-04 12:53:07'), + (40, 28, '系统开关', 'sys_switch', 20, '', 1, '2024-04-16 09:50:58', '2024-04-16 09:50:58'), + (41, 28, '菜单组件', 'sys_menu_component', 90, '', 1, '2024-04-16 13:35:29', '2024-04-16 13:35:29'), + (42, 28, '登录状态', 'sys_login_status', 300, '', 1, '2024-04-16 15:21:23', '2024-04-16 15:21:23'); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 `hg_sys_ems_log` +-- + +INSERT INTO hg_sys_ems_log (id, event, email, code, times, content, ip, status, created_at, updated_at) VALUES + (4, 'bind', '133814250@qq.com', '8793', 1, '\r\n\r\n\r\n \r\n \r\n \r\n \r\n 验证码邮件\r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 这是你发送的验证码吗?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Windows 10
\r\n 保留地址 (estimated)
\r\n IP 地址: 127**.0.1\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 如果是,请输入验证码:\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 8793\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 该验证码10分钟内有效,请不要告诉于他人!\r\n

\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n', '39.165.245.100', 2, '2023-02-04 16:49:39', '2023-02-04 16:56:24'); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 `hg_sys_gen_codes` +-- + +INSERT INTO hg_sys_gen_codes (id, gen_type, gen_template, var_name, options, db_name, table_name, table_comment, dao_name, master_columns, addon_name, status, created_at, updated_at) VALUES + (1, 10, 0, 'CurdDemo', '{"join": [{"uuid": "pgJsFoqfaGjqgKjy", "alias": "testCategory", "field": "id", "columns": [{"dc": "分类ID", "id": 1, "name": "id", "extra": "auto_increment", "index": "PRI", "goName": "TestCategoryId", "goType": "int64", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "testCategoryId", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0}, {"dc": "关联分类", "id": 2, "name": "name", "align": "left", "extra": "", "index": "", "width": 100, "goName": "TestCategoryName", "goType": "string", "isEdit": false, "isList": true, "isSort": false, "length": 255, "tsName": "testCategoryName", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": 0, "formMode": "", "formRole": "", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": ""}, {"dc": "分类简称", "id": 3, "name": "short_name", "align": "left", "extra": "", "index": "", "width": null, "goName": "TestCategoryShortName", "goType": "string", "isEdit": false, "isList": false, "isSort": false, "length": 128, "tsName": "testCategoryShortName", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(128)", "dataType": "varchar", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "LIKE %...%", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "描述", "id": 3, "name": "description", "extra": "", "index": "", "goName": "TestCategoryDescription", "goType": "string", "isEdit": false, "isList": false, "isSort": false, "length": 255, "tsName": "testCategoryDescription", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": ""}, {"dc": "排序", "id": 4, "name": "sort", "extra": "", "index": "", "goName": "TestCategorySort", "goType": "int", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "testCategorySort", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0}, {"dc": "备注", "id": 5, "name": "remark", "extra": "", "index": "", "goName": "TestCategoryRemark", "goType": "string", "isEdit": false, "isList": false, "isSort": false, "length": 255, "tsName": "testCategoryRemark", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": ""}, {"dc": "状态", "id": 6, "name": "status", "extra": "", "index": "", "goName": "TestCategoryStatus", "goType": "int", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "testCategoryStatus", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "SMALLINT(1)", "dataType": "SMALLINT", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1}, {"dc": "创建时间", "id": 7, "name": "created_at", "extra": "", "index": "", "goName": "TestCategoryCreatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "testCategoryCreatedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "TIMESTAMP", "dataType": "TIMESTAMP", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": ""}, {"dc": "修改时间", "id": 8, "name": "updated_at", "extra": "", "index": "", "goName": "TestCategoryUpdatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "testCategoryUpdatedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "TIMESTAMP", "dataType": "TIMESTAMP", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": ""}, {"dc": "删除时间", "id": 9, "name": "deleted_at", "extra": "", "index": "", "goName": "TestCategoryDeletedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "testCategoryDeletedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "TIMESTAMP", "dataType": "TIMESTAMP", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": ""}], "daoName": "TestCategory", "linkMode": 1, "linkTable": "hg_test_category", "masterField": "category_id"}], "menu": {"pid": 2366, "icon": "", "sort": 10}, "tree": {"styleType": 1, "titleColumn": null}, "autoOps": ["genMenuPermissions", "runDao", "runService", "forcedCover"], "headOps": ["add", "batchDel", "export"], "funcDict": {"labelColumn": "title", "valueColumn": "id"}, "columnOps": ["edit", "del", "switch", "check", "status"], "presetStep": {"formGridCols": 2}}', 'default', 'hg_sys_gen_curd_demo', 'CURD列表', 'SysGenCurdDemo', '[{"dc": "ID", "id": 1, "name": "id", "align": "left", "extra": "auto_increment", "index": "PRI", "width": 50, "goName": "Id", "goType": "int64", "isEdit": false, "isList": true, "isSort": true, "length": 0, "tsName": "id", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": true, "required": true, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0, "formGridSpan": 1}, {"dc": "测试分类", "id": 2, "name": "category_id", "align": "left", "extra": "", "index": "", "width": 100, "goName": "CategoryId", "goType": "int64", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "categoryId", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": -300004223237244, "formMode": "Select", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0, "formGridSpan": 1}, {"dc": "标题", "id": 3, "name": "title", "align": "left", "extra": "", "index": "", "width": 150, "goName": "Title", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 64, "tsName": "title", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "varchar(64)", "dataType": "varchar", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": true, "required": true, "queryWhere": "LIKE %...%", "isAllowNull": "NO", "defaultValue": "", "formGridSpan": 1}, {"dc": "描述", "id": 4, "name": "description", "align": "left", "extra": "", "index": "", "width": 300, "goName": "Description", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 255, "tsName": "description", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "InputTextarea", "formRole": "none", "isExport": true, "required": true, "queryWhere": "LIKE %...%", "isAllowNull": "NO", "defaultValue": "", "formGridSpan": 2}, {"dc": "内容", "id": 5, "name": "content", "align": "left", "extra": "", "index": "", "width": null, "goName": "Content", "goType": "string", "isEdit": true, "isList": false, "isSort": false, "length": 65535, "tsName": "content", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "text", "dataType": "text", "dictType": null, "formMode": "InputEditor", "formRole": "none", "isExport": false, "required": true, "queryWhere": "LIKE %...%", "isAllowNull": "NO", "defaultValue": "", "formGridSpan": 2}, {"dc": "单图", "id": 6, "name": "image", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Image", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 255, "tsName": "image", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "UploadImage", "formRole": "none", "isExport": true, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "附件", "id": 7, "name": "attachfile", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Attachfile", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 255, "tsName": "attachfile", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "UploadFile", "formRole": "none", "isExport": true, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "所在城市", "id": 8, "name": "city_id", "align": "left", "extra": "", "index": "", "width": null, "goName": "CityId", "goType": "int64", "isEdit": true, "isList": false, "isSort": false, "length": 0, "tsName": "cityId", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "CitySelector", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "显示开关", "id": 9, "name": "switch", "align": "left", "extra": "", "index": "", "width": 150, "goName": "Switch", "goType": "int", "isEdit": true, "isList": true, "isSort": false, "length": 0, "tsName": "switch", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": null, "formMode": "Switch", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1, "formGridSpan": 1}, {"dc": "排序", "id": 10, "name": "sort", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Sort", "goType": "int", "isEdit": true, "isList": true, "isSort": true, "length": 0, "tsName": "sort", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": true, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0, "formGridSpan": 1}, {"dc": "状态", "id": 11, "name": "status", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Status", "goType": "int", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "status", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "SMALLINT(1)", "dataType": "SMALLINT", "dictType": 3, "formMode": "Select", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1, "formGridSpan": 1}, {"dc": "创建者", "id": 12, "name": "created_by", "align": "left", "extra": "", "index": "", "width": 150, "goName": "CreatedBy", "goType": "int64", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "createdBy", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "更新者", "id": 13, "name": "updated_by", "align": "left", "extra": "", "index": "", "width": 150, "goName": "UpdatedBy", "goType": "int64", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "updatedBy", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "删除者", "id": 14, "name": "deleted_by", "align": "left", "extra": "", "index": "", "width": null, "goName": "DeletedBy", "goType": "int64", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "deletedBy", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "创建时间", "id": 14, "name": "created_at", "align": "left", "extra": "", "index": "", "width": 180, "goName": "CreatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "createdAt", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "TIMESTAMP", "dataType": "TIMESTAMP", "dictType": null, "formMode": "TimeRange", "formRole": "none", "isExport": true, "required": false, "queryWhere": "BETWEEN", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "修改时间", "id": 15, "name": "updated_at", "align": "left", "extra": "", "index": "", "width": 180, "goName": "UpdatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "updatedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "TIMESTAMP", "dataType": "TIMESTAMP", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "删除时间", "id": 16, "name": "deleted_at", "align": "left", "extra": "", "index": "", "width": null, "goName": "DeletedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "deletedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "TIMESTAMP", "dataType": "TIMESTAMP", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}]', '', 1, '2023-01-18 11:51:22', '2024-08-27 18:45:04'), + (8, 10, 0, 'TestCategory', '{"join": [], "menu": {"pid": 2366, "icon": "", "sort": 1000}, "tree": {"styleType": 1, "titleColumn": null}, "autoOps": ["genMenuPermissions", "runService", "genFuncDict", "forcedCover"], "headOps": ["add", "batchDel"], "funcDict": {"labelColumn": "name", "valueColumn": "id"}, "columnOps": ["edit", "del", "check", "status"], "presetStep": {"formGridCols": 2}}', 'default', 'hg_test_category', '测试分类', 'TestCategory', '[{"dc": "分类ID", "id": 1, "name": "id", "align": "left", "extra": "auto_increment", "index": "PRI", "width": 80, "goName": "Id", "goType": "int64", "isEdit": false, "isList": true, "isSort": true, "length": 0, "tsName": "id", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": true, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0, "formGridSpan": 2}, {"dc": "分类名称", "id": 2, "name": "name", "align": "left", "extra": "", "index": "", "width": null, "goName": "Name", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 255, "tsName": "name", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": true, "required": true, "queryWhere": "LIKE %...%", "isAllowNull": "NO", "defaultValue": "", "formGridSpan": 2}, {"dc": "简称", "id": 3, "name": "short_name", "align": "left", "extra": "", "index": "", "width": 80, "goName": "ShortName", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 128, "tsName": "shortName", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(128)", "dataType": "varchar", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": true, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 2}, {"dc": "描述", "id": 3, "name": "description", "align": "left", "extra": "", "index": "", "width": 300, "goName": "Description", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 255, "tsName": "description", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "InputTextarea", "formRole": "none", "isExport": true, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 2}, {"dc": "排序", "id": 4, "name": "sort", "align": "left", "extra": "", "index": "", "width": null, "goName": "Sort", "goType": "int", "isEdit": true, "isList": false, "isSort": true, "length": 0, "tsName": "sort", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": true, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0, "formGridSpan": 1}, {"dc": "状态", "id": 6, "name": "status", "align": "left", "extra": "", "index": "", "width": null, "goName": "Status", "goType": "int", "isEdit": true, "isList": true, "isSort": false, "length": 0, "tsName": "status", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "SMALLINT(1)", "dataType": "SMALLINT", "dictType": 3, "formMode": "Select", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1, "formGridSpan": 1}, {"dc": "备注", "id": 5, "name": "remark", "align": "left", "extra": "", "index": "", "width": null, "goName": "Remark", "goType": "string", "isEdit": true, "isList": false, "isSort": false, "length": 255, "tsName": "remark", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "InputTextarea", "formRole": "none", "isExport": true, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 2}, {"dc": "创建时间", "id": 7, "name": "created_at", "align": "left", "extra": "", "index": "", "width": 180, "goName": "CreatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "createdAt", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "TIMESTAMP", "dataType": "TIMESTAMP", "dictType": null, "formMode": "TimeRange", "formRole": "none", "isExport": true, "required": false, "queryWhere": "BETWEEN", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "修改时间", "id": 8, "name": "updated_at", "align": "left", "extra": "", "index": "", "width": null, "goName": "UpdatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "updatedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "TIMESTAMP", "dataType": "TIMESTAMP", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "删除时间", "id": 9, "name": "deleted_at", "align": "left", "extra": "", "index": "", "width": null, "goName": "DeletedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "deletedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "TIMESTAMP", "dataType": "TIMESTAMP", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}]', 'hgexample', 1, '2024-04-08 15:18:07', '2024-07-20 21:41:45'), + (9, 11, 0, 'NormalTreeDemo', '{"join": [], "menu": {"pid": 2366, "icon": "", "sort": 200}, "tree": {"styleType": 1, "titleColumn": "title"}, "autoOps": ["genMenuPermissions", "runDao", "runService", "forcedCover"], "headOps": ["add", "batchDel"], "funcDict": {"labelColumn": null, "valueColumn": null}, "columnOps": ["edit", "del", "check"], "presetStep": {"formGridCols": 2}}', 'default', 'hg_sys_gen_tree_demo', '普通树表', 'SysGenTreeDemo', '[{"dc": "标题", "id": 6, "name": "title", "align": "left", "extra": "", "index": "", "width": 200, "goName": "Title", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 64, "tsName": "title", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "varchar(64)", "dataType": "varchar", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": true, "required": true, "queryWhere": "LIKE %...%", "isAllowNull": "NO", "defaultValue": "", "formGridSpan": 2}, {"dc": "ID", "id": 1, "name": "id", "align": "left", "extra": "auto_increment", "index": "PRI", "width": 100, "goName": "Id", "goType": "int64", "isEdit": false, "isList": false, "isSort": true, "length": 0, "tsName": "id", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": true, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0, "formGridSpan": 1}, {"dc": "上级", "id": 2, "name": "pid", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Pid", "goType": "int64", "isEdit": true, "isList": false, "isSort": false, "length": 0, "tsName": "pid", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 2}, {"dc": "关系树级别", "id": 3, "name": "level", "align": "left", "extra": "", "index": "", "width": null, "goName": "Level", "goType": "int", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "level", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1, "formGridSpan": 1}, {"dc": "关系树", "id": 4, "name": "tree", "align": "left", "extra": "", "index": "", "width": null, "goName": "Tree", "goType": "string", "isEdit": false, "isList": false, "isSort": false, "length": 4294967295, "tsName": "tree", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "longtext", "dataType": "longtext", "dictType": null, "formMode": "InputEditor", "formRole": "none", "isExport": false, "required": false, "queryWhere": "LIKE %...%", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "测试分类", "id": 5, "name": "category_id", "align": "left", "extra": "", "index": "", "width": 100, "goName": "CategoryId", "goType": "int64", "isEdit": true, "isList": true, "isSort": false, "length": 0, "tsName": "categoryId", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": -300004223237244, "formMode": "Select", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 2}, {"dc": "描述", "id": 7, "name": "description", "align": "left", "extra": "", "index": "", "width": 300, "goName": "Description", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 255, "tsName": "description", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": true, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 2}, {"dc": "排序", "id": 8, "name": "sort", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Sort", "goType": "int", "isEdit": true, "isList": false, "isSort": true, "length": 0, "tsName": "sort", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "状态", "id": 9, "name": "status", "align": "left", "extra": "", "index": "", "width": 150, "goName": "Status", "goType": "int", "isEdit": true, "isList": true, "isSort": false, "length": 0, "tsName": "status", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "SMALLINT(1)", "dataType": "SMALLINT", "dictType": 3, "formMode": "Select", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1, "formGridSpan": 1}, {"dc": "创建者", "id": 10, "name": "created_by", "align": "left", "extra": "", "index": "", "width": 100, "goName": "CreatedBy", "goType": "int64", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "createdBy", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "更新者", "id": 11, "name": "updated_by", "align": "left", "extra": "", "index": "", "width": 100, "goName": "UpdatedBy", "goType": "int64", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "updatedBy", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "创建时间", "id": 12, "name": "created_at", "align": "left", "extra": "", "index": "", "width": 180, "goName": "CreatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "createdAt", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "TIMESTAMP", "dataType": "TIMESTAMP", "dictType": null, "formMode": "TimeRange", "formRole": "none", "isExport": true, "required": false, "queryWhere": "BETWEEN", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "修改时间", "id": 13, "name": "updated_at", "align": "left", "extra": "", "index": "", "width": 180, "goName": "UpdatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "updatedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "TIMESTAMP", "dataType": "TIMESTAMP", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "删除时间", "id": 14, "name": "deleted_at", "align": "left", "extra": "", "index": "", "width": null, "goName": "DeletedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "deletedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "TIMESTAMP", "dataType": "TIMESTAMP", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}]', '', 1, '2024-04-09 16:06:13', '2024-07-25 16:34:59'), + (10, 11, 0, 'OptionTreeDemo', '{"join": [], "menu": {"pid": 2366, "icon": "", "sort": 300}, "tree": {"styleType": 2, "titleColumn": "title"}, "autoOps": ["genMenuPermissions", "runDao", "runService", "forcedCover"], "headOps": ["add", "batchDel"], "funcDict": {"labelColumn": null, "valueColumn": null}, "columnOps": ["edit", "del", "check"], "presetStep": {"formGridCols": 2}}', 'default', 'hg_sys_gen_tree_demo', '选项树表', 'SysGenTreeDemo', '[{"dc": "标题", "id": 6, "name": "title", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Title", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 64, "tsName": "title", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "varchar(64)", "dataType": "varchar", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": true, "required": true, "queryWhere": "LIKE %...%", "isAllowNull": "NO", "defaultValue": "", "formGridSpan": 2}, {"dc": "ID", "id": 1, "name": "id", "align": "left", "extra": "auto_increment", "index": "PRI", "width": 100, "goName": "Id", "goType": "int64", "isEdit": false, "isList": false, "isSort": true, "length": 0, "tsName": "id", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": true, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0, "formGridSpan": 1}, {"dc": "上级", "id": 2, "name": "pid", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Pid", "goType": "int64", "isEdit": true, "isList": false, "isSort": false, "length": 0, "tsName": "pid", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 2}, {"dc": "关系树级别", "id": 3, "name": "level", "align": "left", "extra": "", "index": "", "width": null, "goName": "Level", "goType": "int", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "level", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1, "formGridSpan": 1}, {"dc": "关系树", "id": 4, "name": "tree", "align": "left", "extra": "", "index": "", "width": null, "goName": "Tree", "goType": "string", "isEdit": false, "isList": false, "isSort": false, "length": 4294967295, "tsName": "tree", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "longtext", "dataType": "longtext", "dictType": 3, "formMode": "SelectMultiple", "formRole": "none", "isExport": false, "required": false, "queryWhere": "LIKE %...%", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "测试分类", "id": 5, "name": "category_id", "align": "left", "extra": "", "index": "", "width": 100, "goName": "CategoryId", "goType": "int64", "isEdit": true, "isList": true, "isSort": false, "length": 0, "tsName": "categoryId", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": -300004223237244, "formMode": "Select", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 2}, {"dc": "描述", "id": 7, "name": "description", "align": "left", "extra": "", "index": "", "width": 300, "goName": "Description", "goType": "string", "isEdit": true, "isList": false, "isSort": false, "length": 255, "tsName": "description", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": false, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 2}, {"dc": "排序", "id": 8, "name": "sort", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Sort", "goType": "int", "isEdit": true, "isList": false, "isSort": true, "length": 0, "tsName": "sort", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "状态", "id": 9, "name": "status", "align": "left", "extra": "", "index": "", "width": 150, "goName": "Status", "goType": "int", "isEdit": true, "isList": true, "isSort": false, "length": 0, "tsName": "status", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "SMALLINT(1)", "dataType": "SMALLINT", "dictType": 3, "formMode": "Select", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1, "formGridSpan": 1}, {"dc": "创建者", "id": 10, "name": "created_by", "align": "left", "extra": "", "index": "", "width": 100, "goName": "CreatedBy", "goType": "int64", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "createdBy", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "更新者", "id": 11, "name": "updated_by", "align": "left", "extra": "", "index": "", "width": 100, "goName": "UpdatedBy", "goType": "int64", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "updatedBy", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "创建时间", "id": 12, "name": "created_at", "align": "left", "extra": "", "index": "", "width": 180, "goName": "CreatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "createdAt", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "TIMESTAMP", "dataType": "TIMESTAMP", "dictType": null, "formMode": "TimeRange", "formRole": "none", "isExport": true, "required": false, "queryWhere": "BETWEEN", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "修改时间", "id": 13, "name": "updated_at", "align": "left", "extra": "", "index": "", "width": 180, "goName": "UpdatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "updatedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "TIMESTAMP", "dataType": "TIMESTAMP", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "删除时间", "id": 14, "name": "deleted_at", "align": "left", "extra": "", "index": "", "width": null, "goName": "DeletedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "deletedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "TIMESTAMP", "dataType": "TIMESTAMP", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}]', '', 1, '2024-04-09 17:20:33', '2024-07-25 16:35:34'); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 `hg_sys_gen_curd_demo` +-- + +INSERT INTO hg_sys_gen_curd_demo (id, category_id, title, description, content, image, attachfile, city_id, switch, sort, status, created_by, updated_by, deleted_by, created_at, updated_at, deleted_at) VALUES + (1, 1, '测试标题', '这是一个CRUD生成演示,关联测试分类', '

不知道写点啥!



', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqamvhlq4w3ki6bl.webp', '["http://localhost:8000/attachment/2024-07-25/d2yh86z5wxgoyuuyv7.png","http://localhost:8000/attachment/2024-07-25/d2yh88mewqkovxgk0l.png"]', 120102, 1, 10, 1, 1, 1, NULL, '2022-12-15 19:30:14', '2024-07-25 16:28:31', NULL); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 `hg_sys_gen_tree_demo` +-- + +INSERT INTO hg_sys_gen_tree_demo (id, pid, level, tree, category_id, title, description, sort, status, created_by, updated_by, created_at, updated_at, deleted_at) VALUES + (1, 0, 1, NULL, 1, '道生一', '这是一个普通树形表格的生成演示。', 10, 1, 1, 1, '2022-12-15 19:30:14', '2024-07-20 23:38:07', NULL), + (14, 1, 2, 'tr_1 ', 1, '一生二', '', 20, 1, 1, 1, '2024-04-09 17:07:55', '2024-07-21 00:20:15', NULL), + (15, 14, 3, 'tr_1 tr_14 ', 2, '二生三', '', 30, 1, 1, 1, '2024-04-09 17:08:03', '2024-07-21 00:17:21', NULL), + (16, 15, 4, 'tr_1 tr_14 tr_15 ', 4, '三生万物', '', 40, 1, 1, 1, '2024-04-09 17:13:54', '2024-07-21 00:17:24', NULL), + (17, 0, 1, '', 1, '一帆风顺', '', 50, 1, 1, 1, '2024-04-09 17:24:58', '2024-07-21 00:18:13', NULL), + (19, 17, 2, 'tr_17 ', 1, '二龙戏珠', '', 60, 1, 1, 1, '2024-04-09 17:27:40', '2024-07-21 00:17:30', NULL), + (20, 19, 3, 'tr_17 tr_19 ', 1, '三心二意', '', 70, 1, 1, 1, '2024-04-09 17:27:44', '2024-07-21 00:17:33', NULL); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 `hg_sys_provinces` +-- + +INSERT INTO hg_sys_provinces (id, title, pinyin, lng, lat, pid, level, tree, sort, status, created_at, updated_at) VALUES + (810000, '香港特别行政区', 'X', '114.18612410257', '22.29358599328', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810100, '九龙', 'J', '101.51341566718', '29.006431902925', 810000, 2, 'tr_0 tr_810000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810101, '观塘区', 'G', '114.23743100142', '22.316803500017', 810100, 3, 'tr_0 tr_810000 tr_810100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810102, '黄大仙区', 'H', '114.2055528338', '22.344516581114', 810100, 3, 'tr_0 tr_810000 tr_810100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810103, '九龙城区', 'J', '114.19855413557', '22.325722838593', 810100, 3, 'tr_0 tr_810000 tr_810100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810104, '深水埗区', 'S', '114.17556515012', '22.334814518942', 810100, 3, 'tr_0 tr_810000 tr_810100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810105, '油尖旺区', 'Y', '114.17854456', '22.306583887776', 810100, 3, 'tr_0 tr_810000 tr_810100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810200, '香港岛', 'X', '114.1838696432', '22.272099587606', 810000, 2, 'tr_0 tr_810000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810201, '东区', 'D', '114.03675495515', '32.983906128946', 810200, 3, 'tr_0 tr_810000 tr_810200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810202, '南区', 'N', '114.18612410257', '22.29358599328', 810200, 3, 'tr_0 tr_810000 tr_810200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810203, '湾仔区', 'W', '114.1838696432', '22.272099587606', 810200, 3, 'tr_0 tr_810000 tr_810200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810204, '中西区', 'Z', '114.15949141031', '22.291342714292', 810200, 3, 'tr_0 tr_810000 tr_810200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810300, '新界', 'X', '114.18612410257', '22.29358599328', 810000, 2, 'tr_0 tr_810000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810301, '北区', 'B', '114.56208137457', '38.029818054403', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810302, '大埔区', 'D', '114.14670082713', '22.427434108219', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810303, '葵青区', 'K', '114.14347453324', '22.36661881253', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810304, '离岛区', 'L', '113.95154733906', '22.286066480198', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810305, '荃湾区', 'Q', '114.126440954', '22.378243962528', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810306, '沙田区', 'S', '114.19855144065', '22.388522255034', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810307, '屯门区', 'T', '113.98745602385', '22.393584799271', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810308, '西贡区', 'X', '114.28352485373', '22.385077305939', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (810309, '元朗区', 'Y', '114.03850969037', '22.448564780865', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (820000, '澳门特别行政区', 'A', '113.55751910182', '22.204117988443', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (820100, '离岛', 'L', '113.55751910182', '22.204117988443', 820000, 2, 'tr_0 tr_820000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (820101, '嘉模堂区', 'J', '113.56551473951', '22.163142309955', 820100, 3, 'tr_0 tr_820000 tr_820100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (820102, '路氹填海区', 'L', '113.95154733906', '22.286066480198', 820100, 3, 'tr_0 tr_820000 tr_820100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (820103, '圣方济各堂区', 'S', '113.95154733906', '22.286066480198', 820100, 3, 'tr_0 tr_820000 tr_820100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (820200, '澳门半岛', 'A', '113.56643233517', '22.195004159218', 820000, 2, 'tr_0 tr_820000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (820201, '大堂区', 'D', '113.55648488269', '22.18919700752', 820200, 3, 'tr_0 tr_820000 tr_820200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (820202, '风顺堂区', 'F', '113.54545108595', '22.192783044934', 820200, 3, 'tr_0 tr_820000 tr_820200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (820203, '花地玛堂区', 'H', '113.55751029843', '22.212783524768', 820200, 3, 'tr_0 tr_820000 tr_820200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (820204, '花王堂区', 'H', '113.5544936987', '22.206635725923', 820200, 3, 'tr_0 tr_820000 tr_820200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (820205, '望德堂区', 'W', '113.5615137766', '22.202511136588', 820200, 3, 'tr_0 tr_820000 tr_820200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830000, '台湾省', 'T', '121.97387097872', '24.086956718805', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830100, '台北市', 'T', '121.5201088108', '25.063029935612', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830101, '中正区', 'Z', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830102, '大同区', 'D', '124.81937675979', '46.045583951311', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830103, '中山区', 'Z', '121.65154739367', '38.924511115496', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830104, '万华区', 'W', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830105, '信义区', 'X', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830106, '松山区', 'S', '118.9394138505', '42.292481572694', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830107, '大安区', 'D', '104.78041635328', '29.369928541322', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830108, '南港区', 'N', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830109, '北投区', 'B', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830110, '内湖区', 'N', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830111, '士林区', 'S', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830112, '文山区', 'W', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830200, '新北市', 'X', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830201, '板桥区', 'B', '121.46374631322', '25.009264935203', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830202, '土城区', 'T', '121.45638215646', '24.969575575642', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830203, '新庄区', 'X', '121.44987794847', '25.035900513246', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830204, '新店区', 'X', '121.54851057293', '24.931579077246', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830205, '深坑区', 'S', '121.63248449446', '25.000182732355', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830206, '石碇区', 'S', '121.64666268478', '24.953083429509', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830207, '坪林区', 'P', '121.73478767877', '24.915696554977', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830208, '乌来区', 'W', '121.53050817209', '24.786532168822', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830209, '五股区', 'W', '121.44461965429', '25.100233770435', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830210, '八里区', 'B', '121.40465098523', '25.130119585774', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830211, '林口区', 'L', '121.35894397022', '25.103036147515', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830212, '淡水区', 'D', '121.47260573633', '25.187238161176', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830213, '中和区', 'Z', '119.97751429276', '31.836323947624', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830214, '永和区', 'Y', '121.52736966421', '25.010500528231', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830215, '三重区', 'S', '121.49687574316', '25.069790814298', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830216, '芦洲区', 'L', '121.47982274435', '25.091134839883', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830217, '泰山区', 'T', '117.14141108582', '36.199444601195', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830218, '树林区', 'S', '121.412622083', '24.984757647837', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830219, '莺歌区', 'Y', '121.35899891418', '24.958676651245', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830220, '三峡区', 'S', '121.42609502893', '24.87480469353', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830221, '汐止区', 'X', '121.66100298061', '25.086721897126', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830222, '金山区', 'J', '121.34848004512', '30.74785237657', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830223, '万里区', 'W', '121.66558782234', '25.179420721026', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830224, '三芝区', 'S', '121.53552324466', '25.233947831353', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830225, '石门区', 'S', '121.59364212175', '25.261063301582', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830226, '瑞芳区', 'R', '121.81592241951', '25.092372901641', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830227, '贡寮区', 'G', '121.92278316131', '25.044375645825', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830228, '双溪区', 'S', '121.8310510997', '25.001750367683', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830229, '平溪区', 'P', '121.75897792057', '25.028954662262', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830300, '桃园市', 'T', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830301, '桃园区', 'T', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830302, '中坜区', 'Z', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830303, '平镇区', 'P', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830304, '八德区', 'B', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830305, '杨梅区', 'Y', '110.86164512823', '21.447395667888', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830306, '芦竹区', 'L', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830307, '大溪区', 'D', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830308, '龙潭区', 'L', '126.56854459242', '43.91634255363', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830309, '龟山区', 'G', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830310, '大园区', 'D', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830311, '观音区', 'G', '120.42538525561', '36.169241550407', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830312, '新屋区', 'X', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830313, '复兴区', 'F', '114.44809470749', '36.610368592227', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830400, '台中市', 'T', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830401, '中区', 'Z', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830402, '东区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830403, '西区', 'X', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830404, '南区', 'N', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830405, '北区', 'B', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830406, '西屯区', 'X', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830407, '南屯区', 'N', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830408, '北屯区', 'B', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830409, '丰原区', 'F', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830410, '大里区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830411, '太平区', 'T', '121.68538413681', '42.016967854141', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830412, '东势区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830413, '大甲区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830414, '清水区', 'Q', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830415, '沙鹿区', 'S', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830416, '梧栖区', 'W', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830417, '后里区', 'H', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830418, '神冈区', 'S', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830419, '潭子区', 'T', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830420, '大雅区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830421, '新小区', 'X', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830422, '石冈区', 'S', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830423, '外埔区', 'W', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830424, '大安区', 'D', '104.78041635328', '29.369928541322', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830425, '乌日区', 'W', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830426, '大肚区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830427, '龙井区', 'L', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830428, '雾峰区', 'W', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830429, '和平区', 'H', '117.2214669949', '39.12339025328', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830500, '台南市', 'T', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830501, '中西区', 'Z', '114.15949141031', '22.291342714292', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830502, '东区', 'D', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830503, '南区', 'N', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830504, '北区', 'B', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830505, '安平区', 'A', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830506, '安南区', 'A', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830507, '永康区', 'Y', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830508, '归仁区', 'G', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830509, '新化区', 'X', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830510, '左镇区', 'Z', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830511, '玉井区', 'Y', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830512, '楠西区', 'N', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830513, '南化区', 'N', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830514, '仁德区', 'R', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830515, '关庙区', 'G', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830516, '龙崎区', 'L', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830517, '官田区', 'G', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830518, '麻豆区', 'M', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830519, '佳里区', 'J', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830520, '西港区', 'X', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830521, '七股区', 'Q', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830522, '将军区', 'J', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830523, '学甲区', 'X', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830524, '北门区', 'B', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830525, '新营区', 'X', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830526, '后壁区', 'H', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830527, '白河区', 'B', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830528, '东山区', 'D', '130.32336109407', '47.344987135573', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830529, '六甲区', 'L', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830530, '下营区', 'X', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830531, '柳营区', 'L', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830532, '盐水区', 'Y', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830533, '善化区', 'S', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830534, '大内区', 'D', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830535, '山上区', 'S', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830536, '新市区', 'X', '115.41224520287', '38.88118294749', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830537, '安定区', 'A', '104.61650040265', '35.585600016725', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830600, '高雄市', 'G', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830601, '楠梓区', 'N', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830602, '左营区', 'Z', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830603, '鼓山区', 'G', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830604, '三民区', 'S', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830605, '盐埕区', 'Y', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830606, '前金区', 'Q', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830607, '新兴区', 'X', '130.93837086995', '45.822310328543', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830608, '苓雅区', 'L', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830609, '前镇区', 'Q', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830610, '旗津区', 'Q', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830611, '小港区', 'X', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830612, '凤山区', 'F', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830613, '大寮区', 'D', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830614, '鸟松区', 'N', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830615, '林园区', 'L', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830616, '仁武区', 'R', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830617, '大树区', 'D', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830618, '大社区', 'D', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830619, '冈山区', 'G', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830620, '路竹区', 'L', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830621, '桥头区', 'Q', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830622, '梓官区', 'Z', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830623, '弥陀区', 'M', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830624, '永安区', 'Y', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830625, '燕巢区', 'Y', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830626, '阿莲区', 'A', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830627, '茄萣区', 'J', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830628, '湖内区', 'H', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830629, '旗山区', 'Q', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830630, '美浓区', 'M', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830631, '内门区', 'N', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830632, '杉林区', 'S', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830633, '甲仙区', 'J', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830634, '六龟区', 'L', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830635, '茂林区', 'M', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830636, '桃源区', 'T', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830637, '那玛夏区', 'N', '120.71415692906', '23.273513646073', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830700, '基隆市', 'J', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830701, '中正区', 'Z', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830702, '七堵区', 'Q', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830703, '暖暖区', 'N', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830704, '仁爱区', 'R', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830705, '中山区', 'Z', '121.65154739367', '38.924511115496', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830706, '安乐区', 'A', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830707, '信义区', 'X', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830800, '新竹市', 'X', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830801, '东区', 'D', '119.76701381388', '49.221741849328', 830800, 3, 'tr_0 tr_830000 tr_830800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830802, '北区', 'B', '119.76701381388', '49.221741849328', 830800, 3, 'tr_0 tr_830000 tr_830800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830803, '香山区', 'X', '119.76701381388', '49.221741849328', 830800, 3, 'tr_0 tr_830000 tr_830800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830900, '嘉义市', 'J', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830901, '东区', 'D', '114.2466374103', '22.728825804821', 830900, 3, 'tr_0 tr_830000 tr_830900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (830902, '西区', 'X', '114.2466374103', '22.728825804821', 830900, 3, 'tr_0 tr_830000 tr_830900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110000, '北京市', 'B', '116.41338369712', '39.9109245473', 0, 1, '', 0, 1, '2022-10-07 20:42:26', '2023-05-29 16:02:45'), + (120000, '天津市', 'T', '117.21081309155', '39.14392990331', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130000, '河北省', 'H', '114.53659630532', '38.0432016452', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140000, '山西省', 'S', '112.56937550968', '37.879829423856', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150000, '内蒙古自治区', 'N', '111.77260583082', '40.823156232446', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210000, '辽宁省', 'L', '123.43559785683', '41.841465251202', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220000, '吉林省', 'J', '125.33257987515', '43.901714435444', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230000, '黑龙江省', 'H', '126.66965282042', '45.747929837435', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310000, '上海市', 'S', '121.48053886018', '31.235929042252', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320000, '江苏省', 'J', '118.76955164467', '32.066776944293', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330000, '浙江省', 'Z', '120.15953308739', '30.271548393337', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340000, '安徽省', 'A', '117.33054041772', '31.734294156317', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350000, '福建省', 'F', '119.30244747704', '26.106339415901', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360000, '江西省', 'J', '115.91542320365', '28.681690516761', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370000, '山东省', 'S', '117.02744162848', '36.674856650405', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410000, '河南省', 'H', '113.75938408486', '34.771712921931', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420000, '湖北省', 'H', '114.34844073659', '30.551600064658', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430000, '湖南省', 'H', '112.98960254335', '28.118269998009', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440000, '广东省', 'G', '113.27242891273', '23.137948556539', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450000, '广西壮族自治区', 'G', '108.33452122944', '22.821268997909', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460000, '海南省', 'H', '110.35553651088', '20.025801964463', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500000, '重庆市', 'Z', '106.55843415538', '29.568996245339', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510000, '四川省', 'S', '104.07346654728', '30.577543147015', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520000, '贵州省', 'G', '106.71447593089', '26.604029544995', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530000, '云南省', 'Y', '102.71641607523', '25.051562267345', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540000, '西藏自治区', 'X', '91.124342128993', '29.652893647473', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610000, '陕西省', 'S', '108.96039314875', '34.275808006024', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620000, '甘肃省', 'G', '103.83247812812', '36.065464887368', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630000, '青海省', 'Q', '101.78646183587', '36.627158579235', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640000, '宁夏回族自治区', 'N', '106.26560480701', '38.476877967911', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650000, '新疆维吾尔自治区', 'X', '87.633473205738', '43.79923810129', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110100, '市辖区', 'S', '116.41338369712', '39.9109245473', 110000, 2, 'tr_0 tr_110000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120100, '市辖区', 'S', '117.21081309155', '39.14392990331', 120000, 2, 'tr_0 tr_120000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140100, '太原市', 'T', '112.55639149167', '37.876989028848', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140200, '大同市', 'D', '113.30643625859', '40.082468716161', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140300, '阳泉市', 'Y', '113.58761666288', '37.862360847859', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140400, '长治市', 'Z', '113.12255886985', '36.201268372155', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140500, '晋城市', 'J', '112.85857823133', '35.496284586473', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140600, '朔州市', 'S', '112.43937093967', '39.337108370542', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140700, '晋中市', 'J', '112.75959475566', '37.69283940976', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140800, '运城市', 'Y', '111.01338945448', '35.032706912909', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140900, '忻州市', 'X', '112.74062416024', '38.422383385178', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141000, '临汾市', 'L', '111.52553022403', '36.09374189542', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141100, '吕梁市', 'L', '111.15044967529', '37.524497749577', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150100, '呼和浩特市', 'H', '111.75550856171', '40.848422997113', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150200, '包头市', 'B', '109.84654350721', '40.662928788261', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150300, '乌海市', 'W', '106.80039105', '39.662006364891', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150400, '赤峰市', 'C', '118.89552039752', '42.261686103412', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150500, '通辽市', 'T', '122.25052178738', '43.657980083917', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150600, '鄂尔多斯市', 'E', '109.78744317924', '39.614482313949', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150700, '呼伦贝尔市', 'H', '119.77237049947', '49.218446475565', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150800, '巴彦淖尔市', 'B', '107.39439808372', '40.749359489573', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150900, '乌兰察布市', 'W', '113.13946767446', '41.000748327674', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152200, '兴安盟', 'X', '122.04436452583', '46.088463713219', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152500, '锡林郭勒盟', 'X', '116.05439144075', '43.939422665339', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152900, '阿拉善盟', 'A', '105.73537746449', '38.858275883057', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210100, '沈阳市', 'S', '123.45598993089', '41.720915668889', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210200, '大连市', 'D', '121.62163148459', '38.918953666786', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210300, '鞍山市', 'A', '123.00137251399', '41.115053596949', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210400, '抚顺市', 'F', '123.96437461561', '41.885969593057', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210500, '本溪市', 'B', '123.69250712421', '41.492916460553', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210600, '丹东市', 'D', '124.36154728159', '40.006408705594', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210700, '锦州市', 'J', '121.13259630056', '41.100931499462', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210800, '营口市', 'Y', '122.2415746645', '40.673136838267', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210900, '阜新市', 'F', '121.67640799866', '42.028021901318', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211000, '辽阳市', 'L', '123.24336640651', '41.274161290454', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211100, '盘锦市', 'P', '122.07322781023', '41.141248022956', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211200, '铁岭市', 'T', '123.73236520918', '42.229947997184', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211300, '朝阳市', 'C', '120.45749949793', '41.579820864756', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211400, '葫芦岛市', 'H', '120.84339833993', '40.717364436362', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220100, '长春市', 'Z', '125.33060207591', '43.821953501043', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220200, '吉林市', 'J', '126.55563450495', '43.843567834579', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220300, '四平市', 'S', '124.35648155716', '43.171993571561', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220400, '辽源市', 'L', '125.15042516689', '42.894055005746', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220500, '通化市', 'T', '125.94660627598', '41.733815801613', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220600, '白山市', 'B', '126.42963008938', '41.939627205329', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220700, '松原市', 'S', '124.83148187569', '45.147404193414', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220800, '白城市', 'B', '122.8455906085', '45.625504359996', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (222400, '延边朝鲜族自治州', 'Y', '129.47737632023', '42.915743033722', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230100, '哈尔滨市', 'H', '126.54161509032', '45.808825827952', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230200, '齐齐哈尔市', 'Q', '123.92457086842', '47.359977186015', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230300, '鸡西市', 'J', '130.97561865877', '45.300872317824', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230400, '鹤岗市', 'H', '130.30443289867', '47.356056157685', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230500, '双鸭山市', 'S', '131.16534168078', '46.653185895886', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230600, '大庆市', 'D', '125.10865763402', '46.593633176722', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230700, '伊春市', 'Y', '128.8475463802', '47.733318457231', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230800, '佳木斯市', 'J', '130.32735909257', '46.805689990858', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230900, '七台河市', 'Q', '131.01154459103', '45.776300321548', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231000, '牡丹江市', 'M', '129.63953977835', '44.556245708986', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231100, '黑河市', 'H', '127.53548988622', '50.25127231175', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231200, '绥化市', 'S', '126.9753568753', '46.660032179824', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (232700, '大兴安岭地区', 'D', '124.15292785448', '50.420025955028', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310100, '市辖区', 'S', '121.48053886018', '31.235929042252', 310000, 2, 'tr_0 tr_310000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320100, '南京市', 'N', '118.80242172125', '32.064652885618', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320200, '无锡市', 'W', '120.31858328811', '31.498809732686', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320300, '徐州市', 'X', '117.29057543439', '34.212666550113', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320400, '常州市', 'C', '119.98148471328', '31.815795653328', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320500, '苏州市', 'S', '120.59241222959', '31.303564074442', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320600, '南通市', 'N', '120.90159173866', '31.986549431201', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320700, '连云港市', 'L', '119.22862133317', '34.602249525267', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320800, '淮安市', 'H', '119.02148367071', '33.616295301033', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320900, '盐城市', 'Y', '120.16754426576', '33.355100917626', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321000, '扬州市', 'Y', '119.41941890823', '32.40067693609', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321100, '镇江市', 'Z', '119.43048944567', '32.194715920524', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321200, '泰州市', 'T', '119.92956633785', '32.460675049308', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321300, '宿迁市', 'S', '118.28157403571', '33.96774971569', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330100, '杭州市', 'H', '120.21551180372', '30.253082981693', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330200, '宁波市', 'N', '121.62857249434', '29.866033045866', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330300, '温州市', 'W', '120.70647689036', '28.001085404472', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330400, '嘉兴市', 'J', '120.76355182586', '30.75097483092', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330500, '湖州市', 'H', '120.09451660916', '30.898963937294', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330600, '绍兴市', 'S', '120.58547847885', '30.036369311307', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330700, '金华市', 'J', '119.65343619053', '29.084639385514', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330800, '衢州市', 'Q', '118.86659674036', '28.975545802265', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330900, '舟山市', 'Z', '122.21355631852', '29.99091168016', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331000, '台州市', 'T', '121.42743470428', '28.662194055996', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331100, '丽水市', 'L', '119.92957305844', '28.473278180563', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340100, '合肥市', 'H', '117.23344266498', '31.826577833687', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340200, '芜湖市', 'W', '118.43943137654', '31.358536655799', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340300, '蚌埠市', 'B', '117.39551332814', '32.921523704351', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340400, '淮南市', 'H', '117.00638885072', '32.631847399053', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340500, '马鞍山市', 'M', '118.51357957943', '31.676265597609', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340600, '淮北市', 'H', '116.80453726703', '33.961656300276', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340700, '铜陵市', 'T', '117.81847679446', '30.951233239913', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340800, '安庆市', 'A', '117.06360390492', '30.530956568043', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341000, '黄山市', 'H', '118.34543725315', '29.721889786592', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341100, '滁州市', 'C', '118.33940613597', '32.261270872041', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341200, '阜阳市', 'F', '115.82043612491', '32.896060994852', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341300, '宿州市', 'S', '116.97054394561', '33.652095326452', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341500, '六安市', 'L', '116.52640966419', '31.741450815323', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341600, '亳州市', 'B', '115.78446321127', '33.850642695789', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341700, '池州市', 'C', '117.4984209616', '30.670883790765', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341800, '宣城市', 'X', '118.76553424277', '30.946601545293', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); + +INSERT INTO hg_sys_provinces (id, title, pinyin, lng, lat, pid, level, tree, sort, status, created_at, updated_at) VALUES + (350100, '福州市', 'F', '119.30346983854', '26.080429420698', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350200, '厦门市', 'S', '118.09643549977', '24.485406605176', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350300, '莆田市', 'P', '119.01452097813', '25.459865455923', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350400, '三明市', 'S', '117.64552116782', '26.269736515992', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350500, '泉州市', 'Q', '118.6824462668', '24.879952330498', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350600, '漳州市', 'Z', '117.65357645299', '24.518929791171', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350700, '南平市', 'N', '118.18436954814', '26.647772874203', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350800, '龙岩市', 'L', '117.02344756678', '25.081219844872', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350900, '宁德市', 'N', '119.55451074543', '26.672241711409', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360100, '南昌市', 'N', '115.86458944232', '28.689455295061', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360200, '景德镇市', 'J', '117.18457644639', '29.274247711041', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360300, '萍乡市', 'P', '113.86149643375', '27.628392709397', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360400, '九江市', 'J', '116.00753491163', '29.711340559079', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360500, '新余市', 'X', '114.9235346514', '27.823578697789', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360600, '鹰潭市', 'Y', '117.07557542703', '28.265787063191', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360700, '赣州市', 'G', '114.94050337298', '25.835176103498', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360800, '吉安市', 'J', '115.00051072001', '27.11972682607', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360900, '宜春市', 'Y', '114.42356367591', '27.820856421848', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361000, '抚州市', 'F', '116.36453876864', '27.95489225342', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361100, '上饶市', 'S', '117.94945960312', '28.460625921852', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370100, '济南市', 'J', '117.12639941261', '36.656554201787', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370200, '青岛市', 'Q', '120.38945519115', '36.072227496663', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370300, '淄博市', 'Z', '118.0614525349', '36.819085683322', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370400, '枣庄市', 'Z', '117.33054194484', '34.815994048435', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370500, '东营市', 'D', '118.68138493514', '37.439641826323', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370600, '烟台市', 'Y', '121.4544154173', '37.470038383731', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370700, '潍坊市', 'W', '119.16837791143', '36.712651551268', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370800, '济宁市', 'J', '116.59361234854', '35.42017739453', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370900, '泰安市', 'T', '117.0944948348', '36.205858044885', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371000, '威海市', 'W', '122.12754097831', '37.516430548015', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371100, '日照市', 'R', '119.53341540457', '35.422838998438', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371200, '莱芜市', 'L', '117.68466691247', '36.233654133647', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371300, '临沂市', 'L', '118.36353300501', '35.110671242365', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371400, '德州市', 'D', '116.36555674397', '37.441308454576', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371500, '聊城市', 'L', '115.9915878483', '36.462758187694', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371600, '滨州市', 'B', '117.97740401715', '37.388196196077', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371700, '菏泽市', 'H', '115.48754503343', '35.239407424766', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410100, '郑州市', 'Z', '113.63141920734', '34.753438850454', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410200, '开封市', 'K', '114.31459258497', '34.802885811212', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410300, '洛阳市', 'L', '112.45942129831', '34.624262779219', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410400, '平顶山市', 'P', '113.19952856052', '33.772050748691', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410500, '安阳市', 'A', '114.39950042177', '36.105940984015', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410600, '鹤壁市', 'H', '114.30359364248', '35.7523574114', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410700, '新乡市', 'X', '113.93360046733', '35.309639930337', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410800, '焦作市', 'J', '113.24854783457', '35.220963254039', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410900, '濮阳市', 'P', '115.03559747034', '35.767593028906', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411000, '许昌市', 'X', '113.85847553686', '34.041431611619', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411100, '漯河市', 'L', '114.02342077765', '33.587710707102', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411200, '三门峡市', 'S', '111.20653322387', '34.77832724946', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411300, '南阳市', 'N', '112.53450131351', '32.996562204651', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411400, '商丘市', 'S', '115.66244933826', '34.420201665859', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411500, '信阳市', 'X', '114.09748283305', '32.153014547531', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411600, '周口市', 'Z', '114.70348251482', '33.631828875702', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411700, '驻马店市', 'Z', '114.02847078173', '33.017842416744', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (419000, '省直辖县级行政区划', 'S', '113.75938408486', '34.771712921931', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420100, '武汉市', 'W', '114.31158155473', '30.598466736401', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420200, '黄石市', 'H', '115.04553290894', '30.205207848942', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420300, '十堰市', 'S', '110.8045295607', '32.635061858401', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420500, '宜昌市', 'Y', '111.29254921035', '30.697446484492', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420600, '襄阳市', 'X', '112.128537201', '32.014796804669', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420700, '鄂州市', 'E', '114.90160738827', '30.396572173317', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420800, '荆门市', 'J', '112.20639298023', '31.04173257557', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420900, '孝感市', 'X', '113.92251007734', '30.930689227018', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421000, '荆州市', 'J', '112.24552262926', '30.340842107743', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421100, '黄冈市', 'H', '114.87849048411', '30.459358857618', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421200, '咸宁市', 'X', '114.32851909027', '29.847055947646', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421300, '随州市', 'S', '113.38945001822', '31.696516772328', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (422800, '恩施土家族苗族自治州', 'E', '109.49459261858', '30.277939575301', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (429000, '省直辖县级行政区划', 'S', '114.34844073659', '30.551600064658', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430100, '长沙市', 'Z', '112.94547319535', '28.234889399944', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430200, '株洲市', 'Z', '113.14047079776', '27.833567639016', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430300, '湘潭市', 'X', '112.95046418076', '27.835702227136', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430400, '衡阳市', 'H', '112.57844721326', '26.899576139189', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430500, '邵阳市', 'S', '111.47443288593', '27.245270272809', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430600, '岳阳市', 'Y', '113.13548942422', '29.363178293926', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430700, '常德市', 'C', '111.70545217996', '29.037749999407', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430800, '张家界市', 'Z', '110.48553254695', '29.122815562552', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430900, '益阳市', 'Y', '112.36151595471', '28.55971117849', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431000, '郴州市', 'C', '113.02146049909', '25.776683273602', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431100, '永州市', 'Y', '111.61945505792', '26.4258641179', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431200, '怀化市', 'H', '110.00851426537', '27.575160902979', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431300, '娄底市', 'L', '112.00150349288', '27.703208596992', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (433100, '湘西土家族苗族自治州', 'X', '109.74557664947', '28.317369104701', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440100, '广州市', 'G', '113.27143134446', '23.135336306695', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440200, '韶关市', 'S', '113.60352734562', '24.815881278583', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440300, '深圳市', 'S', '114.06455183659', '22.548456637984', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440400, '珠海市', 'Z', '113.58255478655', '22.276564654249', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440500, '汕头市', 'S', '116.68852864055', '23.359091717725', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440600, '佛山市', 'F', '113.1285121955', '23.027758750789', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440700, '江门市', 'J', '113.08855619524', '22.584603880965', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440800, '湛江市', 'Z', '110.36555441393', '21.276723439012', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440900, '茂名市', 'M', '110.93154257997', '21.669064031332', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441200, '肇庆市', 'Z', '112.47148894063', '23.052888771126', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441300, '惠州市', 'H', '114.42355801658', '23.116358854726', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441400, '梅州市', 'M', '116.12953737612', '24.294177532206', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441500, '汕尾市', 'S', '115.3729242894', '22.778730500164', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441600, '河源市', 'H', '114.70744627291', '23.74968437096', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441700, '阳江市', 'Y', '111.98848929181', '21.864339726139', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441800, '清远市', 'Q', '113.06246832527', '23.688230292088', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900, '东莞市', 'D', '113.75842045788', '23.027308411643', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000, '中山市', 'Z', '113.39942236263', '22.522314670791', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445100, '潮州市', 'C', '116.62947017363', '23.662623192616', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445200, '揭阳市', 'J', '116.37851218034', '23.555740488276', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445300, '云浮市', 'Y', '112.05151269959', '22.920911970343', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450100, '南宁市', 'N', '108.37345082582', '22.822606601187', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450200, '柳州市', 'L', '109.43442194635', '24.331961386852', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450300, '桂林市', 'G', '110.20354537458', '25.242885724873', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450400, '梧州市', 'W', '111.28551681182', '23.482745281135', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450500, '北海市', 'B', '109.12653321257', '21.486836495769', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450600, '防城港市', 'F', '108.3604188383', '21.693005289969', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450700, '钦州市', 'Q', '108.66058016842', '21.986593539484', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450800, '贵港市', 'G', '109.60552031033', '23.117448382038', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450900, '玉林市', 'Y', '110.18845312337', '22.659830509953', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451000, '百色市', 'B', '106.62458932565', '23.908185934296', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451100, '贺州市', 'H', '111.57352631416', '24.409450902865', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451200, '河池市', 'H', '108.09149994499', '24.698911731273', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451300, '来宾市', 'L', '109.2274581959', '23.756546762607', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451400, '崇左市', 'C', '107.3715202061', '22.383117234663', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460100, '海口市', 'H', '110.32552547126', '20.044049439257', 460000, 2, 'tr_0 tr_460000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460200, '三亚市', 'S', '109.5185567014', '18.258736291748', 460000, 2, 'tr_0 tr_460000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460300, '三沙市', 'S', '112.34048204137', '16.838953334409', 460000, 2, 'tr_0 tr_460000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400, '儋州市', 'D', '109.58745583569', '19.527146110044', 460000, 2, 'tr_0 tr_460000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469000, '省直辖县级行政区划', 'S', '110.35553651088', '20.025801964463', 460000, 2, 'tr_0 tr_460000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500100, '市辖区', 'S', '106.55843415538', '29.568996245339', 500000, 2, 'tr_0 tr_500000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500200, '县', 'X', '106.55843415538', '29.568996245339', 500000, 2, 'tr_0 tr_500000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510100, '成都市', 'C', '104.08153351042', '30.655821878416', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510300, '自贡市', 'Z', '104.78444884672', '29.345584921328', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510400, '攀枝花市', 'P', '101.72554117091', '26.588033173333', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510500, '泸州市', 'L', '105.44852406933', '28.877668303607', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510600, '德阳市', 'D', '104.40441936496', '31.133115003657', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510700, '绵阳市', 'M', '104.68556186076', '31.473663048746', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510800, '广元市', 'G', '105.85042318166', '32.441616305315', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510900, '遂宁市', 'S', '105.59942153064', '30.539097671109', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511000, '内江市', 'N', '105.064588025', '29.58588653832', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511100, '乐山市', 'L', '103.77253760363', '29.557940717458', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511300, '南充市', 'N', '106.11750261487', '30.843782508337', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511400, '眉山市', 'M', '103.85656331579', '30.082526119421', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511500, '宜宾市', 'Y', '104.64940370487', '28.758007028552', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511600, '广安市', 'G', '106.63955268233', '30.461746110679', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511700, '达州市', 'D', '107.47459385898', '31.214307723927', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511800, '雅安市', 'Y', '103.0495426236', '30.016792545706', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511900, '巴中市', 'B', '106.75158530316', '31.872888585957', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (512000, '资阳市', 'Z', '104.63443534164', '30.134956559253', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513200, '阿坝藏族羌族自治州', 'A', '102.23141546175', '31.905511577267', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513300, '甘孜藏族自治州', 'G', '101.96854674579', '30.055278843518', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513400, '凉山彝族自治州', 'L', '102.27350268097', '27.88775230037', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520100, '贵阳市', 'G', '106.63657676353', '26.65332482231', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520200, '六盘水市', 'L', '104.83755460235', '26.598833108257', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520300, '遵义市', 'Z', '106.93342774802', '27.731700878917', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520400, '安顺市', 'A', '105.95441712389', '26.259252378715', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520500, '毕节市', 'B', '105.33332337117', '27.408562131331', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520600, '铜仁市', 'T', '109.16855802826', '27.674902690624', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522300, '黔西南布依族苗族自治州', 'Q', '104.91249214627', '25.093967349417', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522600, '黔东南苗族侗族自治州', 'Q', '107.98944624078', '26.589702969826', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522700, '黔南布依族苗族自治州', 'Q', '107.52840270574', '26.260616196074', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530100, '昆明市', 'K', '102.852448365', '24.873998150044', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530300, '曲靖市', 'Q', '103.80243482795', '25.496406931544', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530400, '玉溪市', 'Y', '102.55356029311', '24.357710942446', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530500, '保山市', 'B', '99.177273285818', '25.139038793266', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530600, '昭通市', 'Z', '103.72351177197', '27.344083860247', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530700, '丽江市', 'L', '100.23246452903', '26.860657438065', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530800, '普洱市', 'P', '100.97256981473', '22.83097918601', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530900, '临沧市', 'L', '100.09544042015', '23.890468556279', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532300, '楚雄彝族自治州', 'C', '101.5344124805', '25.05177356534', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532500, '红河哈尼族彝族自治州', 'H', '103.38154905258', '23.369996247605', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532600, '文山壮族苗族自治州', 'W', '104.22256899109', '23.405994293612', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532800, '西双版纳傣族自治州', 'X', '100.80344682456', '22.013601254764', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532900, '大理白族自治州', 'D', '100.27458284048', '25.612128418193', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (533100, '德宏傣族景颇族自治州', 'D', '98.591359356114', '24.438010702758', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (533300, '怒江傈僳族自治州', 'N', '98.863288381358', '25.823707417658', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (533400, '迪庆藏族自治州', 'D', '99.70952999014', '27.825184683643', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540100, '拉萨市', 'L', '91.120823915464', '29.650040274768', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540200, '日喀则市', 'R', '88.893703034826', '29.275657822512', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540300, '昌都市', 'C', '97.179583594086', '31.147346549327', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540400, '林芝市', 'L', '94.368058287133', '29.654042176952', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540500, '山南市', 'S', '91.778675138519', '29.243026939249', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540600, '那曲市', 'N', '92.057338498175', '31.482438388455', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (542500, '阿里地区', 'A', '80.112776921926', '32.506866017633', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610100, '西安市', 'X', '108.94646555063', '34.347268816624', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610200, '铜川市', 'T', '108.95240424836', '34.902637080503', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610300, '宝鸡市', 'B', '107.24457536704', '34.36891564287', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610400, '咸阳市', 'X', '108.71542245143', '34.335476293369', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610500, '渭南市', 'W', '109.51658960526', '34.505715516753', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610600, '延安市', 'Y', '109.49658191613', '36.591111035218', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610700, '汉中市', 'H', '107.02943020926', '33.073799907834', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610800, '榆林市', 'Y', '109.74161603381', '38.290883835484', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610900, '安康市', 'A', '109.03560108266', '32.690512770574', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (611000, '商洛市', 'S', '109.92441788136', '33.878633852208', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620100, '兰州市', 'L', '103.84052119634', '36.067234693546', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620200, '嘉峪关市', 'J', '98.296203843001', '39.777960147391', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620300, '金昌市', 'J', '102.1946056867', '38.525820092093', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620400, '白银市', 'B', '104.14445082834', '36.550825330415', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620500, '天水市', 'T', '105.73141674567', '34.587411881651', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620600, '武威市', 'W', '102.64455434037', '37.934377808158', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620700, '张掖市', 'Z', '100.45641147406', '38.932066007005', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620800, '平凉市', 'P', '106.67144234828', '35.549232050464', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620900, '酒泉市', 'J', '98.500685216068', '39.738469080716', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621000, '庆阳市', 'Q', '107.64938569595', '35.715215983562', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621100, '定西市', 'D', '104.63242008306', '35.586832926562', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621200, '陇南市', 'L', '104.92857497071', '33.406620229951', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (622900, '临夏回族自治州', 'L', '103.2163905653', '35.607562183503', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (623000, '甘南藏族自治州', 'G', '102.91758468826', '34.989139909968', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630100, '西宁市', 'X', '101.78445017051', '36.623384696517', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630200, '海东市', 'H', '102.11044407228', '36.508511080941', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632200, '海北藏族自治州', 'H', '100.90743432146', '36.96066282413', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632300, '黄南藏族自治州', 'H', '102.02242827808', '35.525804586516', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632500, '海南藏族自治州', 'H', '100.62662114446', '36.292102479899', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632600, '果洛藏族自治州', 'G', '100.2515919788', '34.477193866471', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632700, '玉树藏族自治州', 'Y', '97.013180762773', '33.010979585143', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632800, '海西蒙古族藏族自治州', 'H', '97.376299116019', '37.382750462527', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640100, '银川市', 'Y', '106.2384935874', '38.49246005551', 640000, 2, 'tr_0 tr_640000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640200, '石嘴山市', 'S', '106.3906004255', '38.989682839915', 640000, 2, 'tr_0 tr_640000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640300, '吴忠市', 'W', '106.20537126664', '38.003712913453', 640000, 2, 'tr_0 tr_640000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640400, '固原市', 'G', '106.24857742607', '36.021617258011', 640000, 2, 'tr_0 tr_640000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640500, '中卫市', 'Z', '105.20357090089', '37.505701418703', 640000, 2, 'tr_0 tr_640000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650100, '乌鲁木齐市', 'W', '87.62443993536', '43.83076320429', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650200, '克拉玛依市', 'K', '84.895900538875', '45.585675237814', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650400, '吐鲁番市', 'T', '89.266025488642', '42.678924820794', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650500, '哈密市', 'H', '93.529373012389', '42.344467104552', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652300, '昌吉回族自治州', 'C', '87.315001624474', '44.01685415992', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652700, '博尔塔拉蒙古自治州', 'B', '82.072914758274', '44.912196413465', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652800, '巴音郭楞蒙古自治州', 'B', '86.151713865333', '41.77028733045', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652900, '阿克苏地区', 'A', '80.266943484735', '41.175029860077', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653000, '克孜勒苏柯尔克孜自治州', 'K', '76.174308676212', '39.720471204871', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653100, '喀什地区', 'K', '75.996390556397', '39.476096748645', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653200, '和田地区', 'H', '79.928507063512', '37.120446463042', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654000, '伊犁哈萨克自治州', 'Y', '81.330537747532', '43.922723137492', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654200, '塔城地区', 'T', '82.987235518406', '46.750948254373', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654300, '阿勒泰地区', 'A', '88.147926203735', '47.850727870102', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (659000, '自治区直辖县级行政区划', 'Z', '87.633473205738', '43.79923810129', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110101, '东城区', 'D', '116.42240097766', '39.934827272396', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110102, '西城区', 'X', '116.37251358117', '39.918123605841', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110105, '朝阳区', 'C', '112.85530302042', '35.520558754673', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110106, '丰台区', 'F', '116.29240188731', '39.864937197557', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110107, '石景山区', 'S', '116.22961266776', '39.911353808778', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110108, '海淀区', 'H', '116.3054340545', '39.965489841101', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110109, '门头沟区', 'M', '116.10760355577', '39.946146720034', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110111, '房山区', 'F', '116.14944375184', '39.754325839773', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110112, '通州区', 'T', '112.85530302042', '35.520558754673', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110113, '顺义区', 'S', '116.66142426369', '40.136350762231', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110114, '昌平区', 'C', '116.23761791731', '40.226413371594', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110115, '大兴区', 'D', '116.34862521223', '39.732555236554', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110116, '怀柔区', 'H', '116.63838587143', '40.322618404266', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110117, '平谷区', 'P', '117.1273791046', '40.146950735799', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110118, '密云区', 'M', '116.84954704427', '40.382175658138', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (110119, '延庆区', 'Y', '115.98163156902', '40.462168973754', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120101, '和平区', 'H', '112.85530302042', '35.520558754673', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120102, '河东区', 'H', '117.26169316527', '39.126625684666', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120103, '河西区', 'H', '117.22941628002', '39.115718082216', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120104, '南开区', 'N', '117.15651537432', '39.144105279768', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120105, '河北区', 'H', '117.20359278136', '39.153485144705', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120106, '红桥区', 'H', '117.15751788327', '39.173285646564', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120110, '东丽区', 'D', '117.32056850791', '39.092332342815', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120111, '西青区', 'X', '117.01441017994', '39.148726608967', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120112, '津南区', 'J', '117.36338677903', '38.944148568115', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120113, '北辰区', 'B', '117.14140273158', '39.230343909918', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120114, '武清区', 'W', '117.05059715978', '39.389871228788', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120115, '宝坻区', 'B', '117.31660069248', '39.723194482933', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120116, '滨海新区', 'B', '117.71739882966', '39.009415773647', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120117, '宁河区', 'N', '117.83239334342', '39.336956431227', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120118, '静海区', 'J', '116.98046860455', '38.953370689172', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (120119, '蓟州区', 'J', '117.41457869479', '40.051508786395', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140105, '小店区', 'X', '112.57239624162', '37.742322528645', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140106, '迎泽区', 'Y', '112.5693846724', '37.869532484225', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140107, '杏花岭区', 'X', '112.5763830113', '37.900186246845', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140108, '尖草坪区', 'J', '112.49360496704', '37.945943354548', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140109, '万柏林区', 'W', '112.52257675702', '37.864974410402', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140110, '晋源区', 'J', '112.48456424072', '37.721168857849', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140121, '清徐县', 'Q', '112.36455763137', '37.613066838238', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140122, '阳曲县', 'Y', '112.6794089516', '38.064620819448', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140123, '娄烦县', 'L', '111.80359063362', '38.073195368896', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140171, '山西转型综合改革示范区', 'S', '112.55639149167', '37.876989028848', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140181, '古交市', 'G', '112.1824528689', '37.912999960962', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140212, '新荣区', 'X', '113.14644373539', '40.261971219328', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140213, '平城区', 'P', '113.30442522204', '40.081998375025', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140214, '云冈区', 'Y', '113.16240150396', '39.996838811279', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140215, '云州区', 'Y', '113.61847103172', '40.046229886508', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140221, '阳高县', 'Y', '113.75541420332', '40.367391842472', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140222, '天镇县', 'T', '114.09747753304', '40.426412198691', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140223, '广灵县', 'G', '114.28858637097', '39.766004217139', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140224, '灵丘县', 'L', '114.24136819946', '39.448825128052', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140225, '浑源县', 'H', '113.70560028822', '39.698952969845', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140226, '左云县', 'Z', '112.70946328956', '40.019623449015', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140271, '山西大同经济开发区', 'S', '113.30643625859', '40.082468716161', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140302, '城区', 'C', '113.61283811719', '37.85786536147', 140300, 3, 'tr_0 tr_140000 tr_140300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140303, '矿区', 'K', '113.54077065934', '37.890804244519', 140300, 3, 'tr_0 tr_140000 tr_140300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140311, '郊区', 'J', '113.60060283682', '37.950352892943', 140300, 3, 'tr_0 tr_140000 tr_140300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140321, '平定县', 'P', '113.66442115516', '37.792796383591', 140300, 3, 'tr_0 tr_140000 tr_140300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140322, '盂县', 'Y', '113.41842046075', '38.091979630201', 140300, 3, 'tr_0 tr_140000 tr_140300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140403, '潞州区', 'L', '113.12952091721', '36.209472481338', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140404, '上党区', 'S', '113.05741608986', '36.059286479291', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140405, '屯留区', 'T', '112.89847476377', '36.321630843108', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140406, '潞城区', 'L', '113.23557845894', '36.339691267612', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140423, '襄垣县', 'X', '113.05741258647', '36.541685821155', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140425, '平顺县', 'P', '113.44251696707', '36.205989459384', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140426, '黎城县', 'L', '113.39343247604', '36.508669901441', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140427, '壶关县', 'H', '113.21357985531', '36.121334604237', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140428, '长子县', 'Z', '112.88456585041', '36.128001557794', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140429, '武乡县', 'W', '112.8706056438', '36.843167949301', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140430, '沁县', 'Q', '112.70545801478', '36.762189938552', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140431, '沁源县', 'Q', '112.34445202694', '36.506103350913', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140471, '山西长治高新技术产业园区', 'S', '113.12255886985', '36.201268372155', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140502, '城区', 'C', '112.85958379452', '35.507278924584', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140521, '沁水县', 'Q', '112.19342620969', '35.696364462457', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140522, '阳城县', 'Y', '112.42145378712', '35.492181320425', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140524, '陵川县', 'L', '113.28740655466', '35.781743639538', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140525, '泽州县', 'Z', '112.79440121959', '35.599769729488', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140581, '高平市', 'G', '112.93041239923', '35.804336798578', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140602, '朔城区', 'S', '112.43837642564', '39.325302712534', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140603, '平鲁区', 'P', '112.29552500886', '39.517389104237', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140621, '山阴县', 'S', '112.82243194473', '39.534030498011', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140622, '应县', 'Y', '113.19749353922', '39.560077852375', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140623, '右玉县', 'Y', '112.47350008125', '39.994859555431', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140671, '山西朔州经济开发区', 'S', '112.46306042376', '39.354781496121', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140681, '怀仁市', 'H', '113.10660846738', '39.833756889522', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140702, '榆次区', 'Y', '112.71450350211', '37.703940486801', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140721, '榆社县', 'Y', '112.98159856583', '37.0763696687', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140722, '左权县', 'Z', '113.38545184006', '37.088555147171', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140723, '和顺县', 'H', '113.57660568309', '37.334807738688', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140724, '昔阳县', 'X', '113.71361290387', '37.617884042996', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140725, '寿阳县', 'S', '113.18341017493', '37.901307606957', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140726, '太谷县', 'T', '112.55738411926', '37.427395577313', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140727, '祁县', 'Q', '112.34244242768', '37.364131283475', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140728, '平遥县', 'P', '112.18245556381', '37.195600690703', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140729, '灵石县', 'L', '111.78561787596', '36.85336750127', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140781, '介休市', 'J', '111.92356319719', '37.032686403603', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140802, '盐湖区', 'Y', '111.00437711462', '35.021425327829', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140821, '临猗县', 'L', '110.78040700351', '35.149542242622', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140822, '万荣县', 'W', '110.84457611016', '35.421108800536', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140823, '闻喜县', 'W', '111.23141035768', '35.362931196381', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140824, '稷山县', 'J', '110.98941457872', '35.610403569616', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140825, '新绛县', 'X', '111.23140649497', '35.622630103082', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140826, '绛县', 'J', '111.57548652056', '35.497276373896', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140827, '垣曲县', 'Y', '111.67660670572', '35.303014517418', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140828, '夏县', 'X', '111.2264314994', '35.147461779807', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140829, '平陆县', 'P', '111.22348047596', '34.842925154581', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140830, '芮城县', 'R', '110.7006115132', '34.699388110563', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140881, '永济市', 'Y', '110.45457767131', '34.872829714714', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140882, '河津市', 'H', '110.71857214373', '35.601926575322', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140902, '忻府区', 'X', '112.75261366422', '38.40987981762', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140921, '定襄县', 'D', '112.96352861152', '38.479974305847', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140922, '五台县', 'W', '113.26145109492', '38.734181590565', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140923, '代县', 'D', '112.96655194854', '39.072728346381', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140924, '繁峙县', 'F', '113.27140827251', '39.195237430734', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140925, '宁武县', 'N', '112.32639824212', '39.024342381431', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140926, '静乐县', 'J', '111.94543190585', '38.365147088438', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); + +INSERT INTO hg_sys_provinces (id, title, pinyin, lng, lat, pid, level, tree, sort, status, created_at, updated_at) VALUES + (140927, '神池县', 'S', '112.21738276001', '39.096875824863', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140928, '五寨县', 'W', '111.85340993856', '38.917019909692', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140929, '岢岚县', 'K', '111.57947778177', '38.710151038936', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140930, '河曲县', 'H', '111.14444863516', '39.390702488715', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140931, '保德县', 'B', '111.09254175805', '39.028336932396', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140932, '偏关县', 'P', '111.51447352049', '39.442230090387', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140971, '五台山风景名胜区', 'W', '113.602695497', '38.983546253607', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (140981, '原平市', 'Y', '112.71748713403', '38.736475897605', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141002, '尧都区', 'Y', '111.58643021727', '36.084562230192', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141021, '曲沃县', 'Q', '111.48239637819', '35.647327335982', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141022, '翼城县', 'Y', '111.72537553219', '35.744429075039', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141023, '襄汾县', 'X', '111.44854005199', '35.882062670676', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141024, '洪洞县', 'H', '111.68158942672', '36.259467079377', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141025, '古县', 'G', '111.92657314947', '36.272338064827', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141026, '安泽县', 'A', '112.2566128396', '36.153514380523', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141027, '浮山县', 'F', '111.85538495306', '35.974392753943', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141028, '吉县', 'J', '110.68854637189', '36.103999062021', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141029, '乡宁县', 'X', '110.85349790083', '35.976441665474', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141030, '大宁县', 'D', '110.75938440882', '36.471305687097', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141031, '隰县', 'X', '110.94759127079', '36.699061383227', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141032, '永和县', 'Y', '110.63841589393', '36.765908673933', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141033, '蒲县', 'P', '111.10247405258', '36.418005429177', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141034, '汾西县', 'F', '111.56954629571', '36.658782264232', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141081, '侯马市', 'H', '111.37839658489', '35.625364816258', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141082, '霍州市', 'H', '111.76150942218', '36.574606950709', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141102, '离石区', 'L', '111.15749077354', '37.523577475907', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141121, '文水县', 'W', '112.0355986926', '37.444300082651', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141122, '交城县', 'J', '112.16256770864', '37.557772236259', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141123, '兴县', 'X', '111.13439210498', '38.468803780991', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141124, '临县', 'L', '110.99841488129', '37.957210672321', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141125, '柳林县', 'L', '110.8953898393', '37.435492964934', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141126, '石楼县', 'S', '110.84159553248', '37.004470503012', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141127, '岚县', 'L', '111.67859223038', '38.28502878885', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141128, '方山县', 'F', '111.25037044293', '37.90102023916', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141129, '中阳县', 'Z', '111.18562956483', '37.36287279238', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141130, '交口县', 'J', '111.18762820476', '36.987872666553', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141181, '孝义市', 'X', '111.78560601833', '37.151063319102', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (141182, '汾阳市', 'F', '111.7945966192', '37.271291794518', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150102, '新城区', 'X', '111.671620122', '40.863877021183', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150103, '回民区', 'H', '111.63047018388', '40.814506362944', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150104, '玉泉区', 'Y', '111.68157514366', '40.758058968635', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150105, '赛罕区', 'S', '111.7084206445', '40.798394236975', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150121, '土默特左旗', 'T', '111.16958672672', '40.735293711759', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150122, '托克托县', 'T', '111.20057494309', '40.283146729007', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150123, '和林格尔县', 'H', '111.82843021826', '40.384797744251', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150124, '清水河县', 'Q', '111.65357648803', '39.926333854389', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150125, '武川县', 'W', '111.45749705623', '41.102418723793', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150171, '呼和浩特金海工业园区', 'H', '111.61859862741', '40.813484420815', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150172, '呼和浩特经济技术开发区', 'H', '111.75550856171', '40.848422997113', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150202, '东河区', 'D', '110.05039480879', '40.582228038324', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150203, '昆都仑区', 'K', '109.84553830335', '40.647644106921', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150204, '青山区', 'Q', '109.9074160123', '40.649473068783', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150205, '石拐区', 'S', '110.27838088451', '40.67829939834', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150206, '白云鄂博矿区', 'B', '109.97962576174', '41.774995234182', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150207, '九原区', 'J', '109.96958800614', '40.613396589444', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150221, '土默特右旗', 'T', '110.53038926652', '40.575127429108', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150222, '固阳县', 'G', '110.06643261639', '41.040162852726', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150223, '达尔罕茂明安联合旗', 'D', '110.43952090317', '41.704548551002', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150271, '包头稀土高新技术产业开发区', 'B', '109.84664914794', '40.637085021364', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150302, '海勃湾区', 'H', '106.82943856714', '39.696907993535', 150300, 3, 'tr_0 tr_150000 tr_150300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150303, '海南区', 'H', '106.89847100998', '39.446827515087', 150300, 3, 'tr_0 tr_150000 tr_150300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150304, '乌达区', 'W', '106.7326063535', '39.511468916129', 150300, 3, 'tr_0 tr_150000 tr_150300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150402, '红山区', 'H', '118.96356353651', '42.27047843525', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150403, '元宝山区', 'Y', '119.29540450885', '42.045124715638', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150404, '松山区', 'S', '118.9394138505', '42.292481572694', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150421, '阿鲁科尔沁旗', 'A', '120.07261385472', '43.877953412182', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150422, '巴林左旗', 'B', '119.38644328076', '43.97638259461', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150423, '巴林右旗', 'B', '118.67039425705', '43.540131553108', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150424, '林西县', 'L', '118.06246142182', '43.624210259291', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150425, '克什克腾旗', 'K', '117.55162041051', '43.270757591896', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150426, '翁牛特旗', 'W', '119.01250888002', '42.942019262236', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150428, '喀喇沁旗', 'K', '118.7104736845', '41.932214335643', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150429, '宁城县', 'N', '119.35060897566', '41.600245148269', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150430, '敖汉旗', 'A', '119.92757793861', '42.296507085243', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150502, '科尔沁区', 'K', '122.2624570337', '43.628712488829', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150521, '科尔沁左翼中旗', 'K', '123.31858853365', '44.132294228308', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150522, '科尔沁左翼后旗', 'K', '122.36356257648', '42.93956249402', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150523, '开鲁县', 'K', '121.32538568843', '43.606369431362', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150524, '库伦旗', 'K', '121.81740576201', '42.741211100235', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150525, '奈曼旗', 'N', '120.66464641294', '42.87184654666', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150526, '扎鲁特旗', 'Z', '120.91862585689', '44.562213133099', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150571, '通辽经济技术开发区', 'T', '122.22276854881', '43.676026521565', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150581, '霍林郭勒市', 'H', '119.67046591394', '45.53751332061', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130100, '石家庄市', 'S', '114.52153190157', '38.048311926873', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130200, '唐山市', 'T', '118.18645947204', '39.636583724147', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130300, '秦皇岛市', 'Q', '119.60853063334', '39.941748102378', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130400, '邯郸市', 'H', '114.54562822824', '36.631262731204', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130500, '邢台市', 'X', '114.51146225613', '37.076685950966', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130600, '保定市', 'B', '115.47146383769', '38.879987768455', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130700, '张家口市', 'Z', '114.89257223145', '40.773237202691', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130800, '承德市', 'C', '117.96939750997', '40.957856012338', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130900, '沧州市', 'C', '116.84558075595', '38.310215141107', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131000, '廊坊市', 'L', '116.69058173343', '39.543366662759', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131100, '衡水市', 'H', '115.67540613762', '37.745191408077', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150602, '东胜区', 'D', '109.96956006883', '39.827986984444', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150603, '康巴什区', 'K', '109.86962735373', '39.616378146766', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150621, '达拉特旗', 'D', '110.04036612608', '40.418907154391', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150622, '准格尔旗', 'Z', '111.24639840546', '39.870540265037', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150623, '鄂托克前旗', 'E', '107.48458472303', '38.188216741284', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150624, '鄂托克旗', 'E', '107.98244495023', '39.095293413608', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150625, '杭锦旗', 'H', '108.74241293879', '39.838815768815', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150626, '乌审旗', 'W', '108.82443496914', '38.610026521177', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150627, '伊金霍洛旗', 'Y', '109.78744317924', '39.614482313949', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150702, '海拉尔区', 'H', '119.74246537006', '49.218215799363', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150703, '扎赉诺尔区', 'Z', '117.69453227349', '49.467770183628', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150721, '阿荣旗', 'A', '123.46544000531', '48.131971245042', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150722, '莫力达瓦达斡尔族自治旗', 'M', '124.52557642071', '48.482896292115', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150723, '鄂伦春自治旗', 'E', '123.73234507742', '50.597947928064', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150724, '鄂温克族自治旗', 'E', '119.76135125527', '49.15304476395', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150725, '陈巴尔虎旗', 'C', '119.43046248677', '49.334914288885', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150726, '新巴尔虎左旗', 'X', '118.27660837276', '48.223786760037', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150727, '新巴尔虎右旗', 'X', '116.83063240352', '48.677053599089', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150781, '满洲里市', 'M', '117.38543585768', '49.604098854866', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150782, '牙克石市', 'Y', '120.7183468371', '49.292023693206', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150783, '扎兰屯市', 'Z', '122.74445371486', '48.01995552011', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150784, '额尔古纳市', 'E', '120.18663369726', '50.248131758636', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150785, '根河市', 'G', '121.52758526594', '50.786140434318', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150802, '临河区', 'L', '107.36953379568', '40.75668072584', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150821, '五原县', 'W', '108.2734913541', '41.094454821479', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150822, '磴口县', 'D', '107.01452247', '40.336470177103', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150823, '乌拉特前旗', 'W', '108.6586151381', '40.742103512928', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150824, '乌拉特中旗', 'W', '108.51951244005', '41.593346263746', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150825, '乌拉特后旗', 'W', '107.08154612207', '41.089422269258', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150826, '杭锦后旗', 'H', '107.15737244949', '40.892179419823', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150902, '集宁区', 'J', '113.12058699942', '41.041146171787', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150921, '卓资县', 'Z', '112.5844095507', '40.900291837834', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150922, '化德县', 'H', '114.0164087845', '41.909602587109', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150923, '商都县', 'S', '113.58463922926', '41.567566637224', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150924, '兴和县', 'X', '113.84057886567', '40.879341798933', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150925, '凉城县', 'L', '112.51060018864', '40.5371631252', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150926, '察哈尔右翼前旗', 'C', '113.22160531673', '40.791267302593', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150927, '察哈尔右翼中旗', 'C', '112.64258040196', '41.283272943291', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150928, '察哈尔右翼后旗', 'C', '113.19853090242', '41.441770999655', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150929, '四子王旗', 'S', '111.71241927182', '41.539353349915', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (150981, '丰镇市', 'F', '113.11660121788', '40.441804808844', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152201, '乌兰浩特市', 'W', '122.09962235198', '46.078654343582', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152202, '阿尔山市', 'A', '119.95065315166', '47.18305415375', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152221, '科尔沁右翼前旗', 'K', '121.9645531355', '46.082648853819', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152222, '科尔沁右翼中旗', 'K', '121.48354781458', '45.066470993428', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152223, '扎赉特旗', 'Z', '122.90644442883', '46.729189539358', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152224, '突泉县', 'T', '121.60054536997', '45.387830342585', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152501, '二连浩特市', 'E', '111.95836319333', '43.648800184052', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152502, '锡林浩特市', 'X', '116.09361388474', '43.93833380136', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152522, '阿巴嘎旗', 'A', '114.95736709772', '44.028101587023', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152523, '苏尼特左旗', 'S', '113.67347993742', '43.865553657792', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152524, '苏尼特右旗', 'S', '112.64856904548', '42.747368922463', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152525, '东乌珠穆沁旗', 'D', '116.97850435996', '45.515743305312', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152526, '西乌珠穆沁旗', 'X', '117.61637700896', '44.593802912007', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152527, '太仆寺旗', 'T', '115.29053531645', '41.882291746043', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152528, '镶黄旗', 'X', '113.85450538582', '42.237661285279', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152529, '正镶白旗', 'Z', '115.03662171828', '42.292605429249', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152530, '正蓝旗', 'Z', '115.99860388383', '42.247118844188', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152531, '多伦县', 'D', '116.49250878204', '42.208920864211', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152571, '乌拉盖管委会', 'W', '114.09790153324', '42.80523252057', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152921, '阿拉善左旗', 'A', '105.67259866528', '38.839094137436', 152900, 3, 'tr_0 tr_150000 tr_152900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152922, '阿拉善右旗', 'A', '101.67346389594', '39.222240969855', 152900, 3, 'tr_0 tr_150000 tr_152900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152923, '额济纳旗', 'E', '101.06240334058', '41.960297611813', 152900, 3, 'tr_0 tr_150000 tr_152900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (152971, '内蒙古阿拉善经济开发区', 'N', '105.77197191571', '40.314622117574', 152900, 3, 'tr_0 tr_150000 tr_152900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210102, '和平区', 'H', '123.42664426615', '41.795236052902', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210103, '沈河区', 'S', '123.46546103538', '41.802274138805', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210104, '大东区', 'D', '123.47640473208', '41.811425174494', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210105, '皇姑区', 'H', '123.43162078885', '41.826042120277', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210106, '铁西区', 'T', '123.38343595078', '41.809037832217', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210111, '苏家屯区', 'S', '123.35043463177', '41.671253644959', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210112, '浑南区', 'H', '123.45598993089', '41.720915668889', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210113, '沈北新区', 'S', '123.53360460492', '42.058914115763', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210114, '于洪区', 'Y', '123.31463302499', '41.799668255615', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210115, '辽中区', 'L', '122.77237835983', '41.523149081842', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210123, '康平县', 'K', '123.33751124938', '42.749925495719', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210124, '法库县', 'F', '123.41462107572', '42.509606549903', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210181, '新民市', 'X', '122.87539513741', '42.007109320665', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210202, '中山区', 'Z', '121.65154739367', '38.924511115496', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210203, '西岗区', 'X', '121.61862512554', '38.920472689273', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210204, '沙河口区', 'S', '121.59450670057', '38.913544290956', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210211, '甘井子区', 'G', '121.5315189555', '38.958002162932', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210212, '旅顺口区', 'L', '121.26859688019', '38.856832222859', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210213, '金州区', 'J', '121.78943558267', '39.056432991661', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210214, '普兰店区', 'P', '121.94645983497', '39.398089145183', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210224, '长海县', 'Z', '122.59462651637', '39.278270217167', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210281, '瓦房店市', 'W', '121.98563754334', '39.632740747388', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210283, '庄河市', 'Z', '122.97449548263', '39.686956078878', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210302, '铁东区', 'T', '122.99739966805', '41.096331870506', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210303, '铁西区', 'T', '122.97549026615', '41.125475259583', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210304, '立山区', 'L', '123.03548413862', '41.156116121102', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210311, '千山区', 'Q', '122.96757421833', '41.080938608935', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210321, '台安县', 'T', '122.44255004099', '41.418590371099', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210323, '岫岩满族自治县', 'X', '123.28754677827', '40.295892396362', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210381, '海城市', 'H', '122.69156940124', '40.887633947097', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210402, '新抚区', 'X', '123.91958231814', '41.867805858593', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210403, '东洲区', 'D', '124.04554972353', '41.859190936634', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210404, '望花区', 'W', '123.790604152', '41.859030362749', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210411, '顺城区', 'S', '123.95141404338', '41.889163788467', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210421, '抚顺县', 'F', '123.92159012079', '41.887037475382', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210422, '新宾满族自治县', 'X', '125.04635620406', '41.739968775071', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210423, '清原满族自治县', 'Q', '124.93036025933', '42.106760992634', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210502, '平山区', 'P', '123.77461422409', '41.301604181774', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210503, '溪湖区', 'X', '123.77461054104', '41.334802931364', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210504, '明山区', 'M', '123.82347449807', '41.314939368877', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210505, '南芬区', 'N', '123.75146713686', '41.10709572322', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210521, '本溪满族自治县', 'B', '124.12758486914', '41.307902881353', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210522, '桓仁满族自治县', 'H', '125.36754435102', '41.27292530103', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210602, '元宝区', 'Y', '124.40258403322', '40.142251463139', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210603, '振兴区', 'Z', '124.36657851109', '40.110719472216', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210604, '振安区', 'Z', '124.43438692285', '40.164697025661', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210624, '宽甸满族自治县', 'K', '124.79042662868', '40.73755320049', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210681, '东港市', 'D', '124.15961035888', '39.867716187286', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210682, '凤城市', 'F', '124.07242172439', '40.459180482456', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210702, '古塔区', 'G', '121.13458496929', '41.122900925898', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210703, '凌河区', 'L', '121.15759003442', '41.120690614472', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210711, '太和区', 'T', '121.1104532494', '41.115109307132', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210726, '黑山县', 'H', '122.13055703906', '41.671592983776', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210727, '义县', 'Y', '121.24556854895', '41.538938862271', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210781, '凌海市', 'L', '121.36253879584', '41.166487628588', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210782, '北镇市', 'B', '121.78344729848', '41.594428096803', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210802, '站前区', 'Z', '122.26543743173', '40.678764125936', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210803, '西市区', 'X', '122.21358238684', '40.672110926311', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210804, '鲅鱼圈区', 'B', '122.12757349697', '40.232339850773', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210811, '老边区', 'L', '122.38643918392', '40.686383619803', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210881, '盖州市', 'G', '122.35559128288', '40.406167457268', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210882, '大石桥市', 'D', '122.5153795314', '40.650802164815', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210902, '海州区', 'H', '121.66943571061', '42.023734789385', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210903, '新邱区', 'X', '121.79936338568', '42.093934514765', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210904, '太平区', 'T', '121.68538413681', '42.016967854141', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210905, '清河门区', 'Q', '121.42247894964', '41.789318551009', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210911, '细河区', 'X', '121.68639230508', '42.03187124588', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210921, '阜新蒙古族自治县', 'F', '121.76357399585', '42.071368153837', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (210922, '彰武县', 'Z', '122.54544932021', '42.392706534364', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211002, '白塔区', 'B', '123.18060844799', '41.275845361792', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211003, '文圣区', 'W', '123.19160469557', '41.268438007815', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211004, '宏伟区', 'H', '123.20358018598', '41.223368108445', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211005, '弓长岭区', 'G', '123.42661543055', '41.157327042722', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211011, '太子河区', 'T', '123.188604445', '41.259226178044', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211021, '辽阳县', 'L', '123.1124212208', '41.211678771808', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211081, '灯塔市', 'D', '123.34546215145', '41.432474125926', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211102, '双台子区', 'S', '122.04639299922', '41.206071617512', 211100, 3, 'tr_0 tr_210000 tr_211100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211103, '兴隆台区', 'X', '121.96962911034', '41.155830887559', 211100, 3, 'tr_0 tr_210000 tr_211100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211104, '大洼区', 'D', '122.08855478867', '41.00817878896', 211100, 3, 'tr_0 tr_210000 tr_211100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211122, '盘山县', 'P', '122.00356035522', '41.248263682582', 211100, 3, 'tr_0 tr_210000 tr_211100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211202, '银州区', 'Y', '123.8483863963', '42.292573681442', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211204, '清河区', 'Q', '124.16556298034', '42.552494793453', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211221, '铁岭县', 'T', '123.7353723767', '42.229225608048', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211223, '西丰县', 'X', '124.73361509331', '42.744014442436', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211224, '昌图县', 'C', '124.11750067115', '42.792178371844', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211281, '调兵山市', 'D', '123.57350868313', '42.473738012058', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211282, '开原市', 'K', '124.04456886375', '42.552079074779', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211302, '双塔区', 'S', '120.46048690274', '41.571779500856', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211303, '龙城区', 'L', '120.4435668693', '41.59846852305', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211321, '朝阳县', 'C', '120.25939061432', '41.241075720873', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211322, '建平县', 'J', '119.64938035777', '41.409455511027', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211324, '喀喇沁左翼蒙古族自治县', 'K', '119.74741405502', '41.133689119828', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211381, '北票市', 'B', '120.77762773422', '41.80648256895', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211382, '凌源市', 'L', '119.40735807879', '41.251651297148', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211402, '连山区', 'L', '120.87648167423', '40.780893808442', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211403, '龙港区', 'L', '120.90062076024', '40.741056601241', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211404, '南票区', 'N', '120.75649312082', '41.113097595823', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211421, '绥中县', 'S', '120.35042453538', '40.331843475397', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211422, '建昌县', 'J', '119.84359526665', '40.830379953809', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (211481, '兴城市', 'X', '120.76455846701', '40.616555664044', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220102, '南关区', 'N', '125.35660981703', '43.869873025193', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220103, '宽城区', 'K', '125.33462450832', '43.949502239804', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220104, '朝阳区', 'C', '125.29540125585', '43.840641474962', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220105, '二道区', 'E', '125.38046755375', '43.871276524271', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220106, '绿园区', 'L', '125.26244260635', '43.886810403937', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220112, '双阳区', 'S', '125.67144793217', '43.531091309119', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220113, '九台区', 'J', '125.84556442307', '44.157791853861', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220122, '农安县', 'N', '125.19148410666', '44.438903951261', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220171, '长春经济技术开发区', 'Z', '125.37014719124', '43.866004586928', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220172, '长春净月高新技术产业开发区', 'Z', '125.26127292275', '43.823034492758', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220173, '长春高新技术产业开发区', 'Z', '125.26127292275', '43.823034492758', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220174, '长春汽车经济技术开发区', 'Z', '125.33060207591', '43.821953501043', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220182, '榆树市', 'Y', '126.53960936347', '44.845439727693', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220183, '德惠市', 'D', '125.73451517728', '44.527161066608', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220202, '昌邑区', 'C', '126.58144866124', '43.887992474736', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220203, '龙潭区', 'L', '126.56854459242', '43.91634255363', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220204, '船营区', 'C', '126.54764973677', '43.83992740229', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220211, '丰满区', 'F', '126.56857046362', '43.827151576836', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220221, '永吉县', 'Y', '126.50441572986', '43.678720676989', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220271, '吉林经济开发区', 'J', '126.55563450495', '43.843567834579', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220272, '吉林高新技术产业开发区', 'J', '126.55091570611', '43.822448990547', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220273, '吉林中国新加坡食品区', 'J', '126.55563450495', '43.843567834579', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220281, '蛟河市', 'J', '127.35148018677', '43.730003870507', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220282, '桦甸市', 'H', '126.75248423373', '42.977982779881', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220283, '舒兰市', 'S', '126.97137703226', '44.412270028324', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220284, '磐石市', 'P', '126.06661629889', '42.951817500114', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220302, '铁西区', 'T', '124.35246676034', '43.152575391803', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220303, '铁东区', 'T', '124.4164827059', '43.167993993185', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220322, '梨树县', 'L', '124.3424012471', '43.313345515553', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220323, '伊通满族自治县', 'Y', '125.31148460754', '43.351103666821', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220381, '公主岭市', 'G', '124.82944866071', '43.510832663153', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220382, '双辽市', 'S', '123.50943776128', '43.524527382171', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220402, '龙山区', 'L', '125.14345242969', '42.907634012133', 220400, 3, 'tr_0 tr_220000 tr_220400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220403, '西安区', 'X', '125.15537330313', '42.933308420625', 220400, 3, 'tr_0 tr_220000 tr_220400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220421, '东丰县', 'D', '125.53737790091', '42.683310778553', 220400, 3, 'tr_0 tr_220000 tr_220400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220422, '东辽县', 'D', '124.99758944369', '42.931879101776', 220400, 3, 'tr_0 tr_220000 tr_220400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220502, '东昌区', 'D', '125.93359459016', '41.70840538484', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220503, '二道江区', 'E', '126.0495917027', '41.779966174493', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220521, '通化县', 'T', '125.76539191393', '41.685682238068', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220523, '辉南县', 'H', '126.05358125713', '42.690699881882', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220524, '柳河县', 'L', '125.75142398189', '42.290871215056', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220581, '梅河口市', 'M', '125.71760780995', '42.544883890284', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220582, '集安市', 'J', '126.199577372', '41.131299724033', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220602, '浑江区', 'H', '126.42361952721', '41.95042372822', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220605, '江源区', 'J', '126.59739097896', '42.062939372081', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220621, '抚松县', 'F', '127.45537119527', '42.227335272553', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220622, '靖宇县', 'J', '126.81949899257', '42.394765734578', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220623, '长白朝鲜族自治县', 'Z', '128.20758420219', '41.425895812594', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220681, '临江市', 'L', '126.9245815135', '41.817678643992', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220702, '宁江区', 'N', '124.82342254815', '45.178039438667', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220721, '前郭尔罗斯蒙古族自治县', 'Q', '124.83045556165', '45.123416092926', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220722, '长岭县', 'Z', '123.9743741034', '44.281638280052', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220723, '乾安县', 'G', '124.0475638046', '45.008434321605', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220771, '吉林松原经济开发区', 'J', '124.83148187569', '45.147404193414', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220781, '扶余市', 'F', '126.0566062111', '44.994168421151', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220802, '洮北区', 'T', '122.85750977516', '45.627524686514', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220821, '镇赉县', 'Z', '123.20657575565', '45.853116635389', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220822, '通榆县', 'T', '123.09452077673', '44.818963735882', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220871, '吉林白城经济开发区', 'J', '122.81641245977', '45.642168989302', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220881, '洮南市', 'T', '122.7944676826', '45.341131872567', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (220882, '大安市', 'D', '124.29850428102', '45.513045149628', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (222401, '延吉市', 'Y', '129.52052013726', '42.91271700988', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (222402, '图们市', 'T', '129.85038151375', '42.974283499075', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (222403, '敦化市', 'D', '128.23861239315', '43.378291274517', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (222404, '珲春市', 'H', '130.37261321858', '42.868515115192', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (222405, '龙井市', 'L', '129.43263477701', '42.771534868349', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (222406, '和龙市', 'H', '129.01738712621', '42.552322568432', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (222424, '汪清县', 'W', '129.77760879625', '43.318450833865', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (222426, '安图县', 'A', '128.90544846814', '43.117916954912', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230102, '道里区', 'D', '126.62343158837', '45.761844478815', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230103, '南岗区', 'N', '126.67563849952', '45.765866163758', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230104, '道外区', 'D', '126.65560404089', '45.797776220434', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230108, '平房区', 'P', '126.54161509032', '45.808825827952', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); + +INSERT INTO hg_sys_provinces (id, title, pinyin, lng, lat, pid, level, tree, sort, status, created_at, updated_at) VALUES + (230109, '松北区', 'S', '126.51648256825', '45.808592561429', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230110, '香坊区', 'X', '126.66962434413', '45.713619645389', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230111, '呼兰区', 'H', '126.5943989831', '45.895209780863', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230112, '阿城区', 'A', '126.96435649552', '45.554275304352', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230113, '双城区', 'S', '126.31962313777', '45.388111522394', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230123, '依兰县', 'Y', '129.57451969721', '46.331260289052', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230124, '方正县', 'F', '128.83563368134', '45.857758440062', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230125, '宾县', 'B', '127.4734970145', '45.752465386742', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230126, '巴彦县', 'B', '127.4105479864', '46.091282657815', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230127, '木兰县', 'M', '128.05035620452', '45.956871319448', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230128, '通河县', 'T', '128.75241627584', '45.996392590921', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230129, '延寿县', 'Y', '128.33860582402', '45.457641195714', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230183, '尚志市', 'S', '128.01548820666', '45.215473941867', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230184, '五常市', 'W', '127.17352882965', '44.937842855774', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230202, '龙沙区', 'L', '123.96437622285', '47.323576977429', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230203, '建华区', 'J', '123.96135010108', '47.360554871046', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230204, '铁锋区', 'T', '123.984415712', '47.347018863772', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230205, '昂昂溪区', 'A', '123.82940626913', '47.161332243626', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230206, '富拉尔基区', 'F', '123.63650980324', '47.215504082791', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230207, '碾子山区', 'N', '122.89436680108', '47.523236298133', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230208, '梅里斯达斡尔族区', 'M', '123.75954091741', '47.315549574077', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230221, '龙江县', 'L', '123.21153898342', '47.343605740151', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230223, '依安县', 'Y', '125.3124821661', '47.899483651368', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230224, '泰来县', 'T', '123.42362630925', '46.39782928518', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230225, '甘南县', 'G', '123.51248588182', '47.92688406951', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230227, '富裕县', 'F', '124.48054247906', '47.780228063275', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230229, '克山县', 'K', '125.88137832693', '48.043172360737', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230230, '克东县', 'K', '126.25538674804', '48.048244160483', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230231, '拜泉县', 'B', '126.10542147027', '47.601867301959', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230281, '讷河市', 'N', '124.8905490562', '48.490086593264', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230302, '鸡冠区', 'J', '130.98763160852', '45.309806344312', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230303, '恒山区', 'H', '130.91138523344', '45.216971883154', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230304, '滴道区', 'D', '130.85058046059', '45.354433617216', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230305, '梨树区', 'L', '130.70339606719', '45.098241780981', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230306, '城子河区', 'C', '131.02770429868', '45.379689760283', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230307, '麻山区', 'M', '130.48453641613', '45.217934996767', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230321, '鸡东县', 'J', '131.13055848296', '45.266184560826', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230381, '虎林市', 'H', '132.94346566318', '45.768946912884', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230382, '密山市', 'M', '131.85353110655', '45.535640809748', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230402, '向阳区', 'X', '130.30046804764', '47.348580889067', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230403, '工农区', 'G', '130.28161728617', '47.324430299458', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230404, '南山区', 'N', '130.29354031555', '47.321245938809', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230405, '兴安区', 'X', '130.24554573859', '47.258716269483', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230406, '东山区', 'D', '130.32336109407', '47.344987135573', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230407, '兴山区', 'X', '130.31736364716', '47.396045381282', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230421, '萝北县', 'L', '130.8354950365', '47.583422197029', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230422, '绥滨县', 'S', '131.85948651276', '47.295265458073', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230502, '尖山区', 'J', '131.16534177061', '46.652585923812', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230503, '岭东区', 'L', '131.164376721', '46.464596047853', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230505, '四方台区', 'S', '131.345657378', '46.602012285083', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230506, '宝山区', 'B', '131.40737518857', '46.583598340241', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230521, '集贤县', 'J', '131.14743449942', '46.734517788557', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230522, '友谊县', 'Y', '131.8145948627', '46.772973223022', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230523, '宝清县', 'B', '132.20359411633', '46.332651823572', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230524, '饶河县', 'R', '134.02046893233', '46.804182744162', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230602, '萨尔图区', 'S', '125.13351006443', '46.638936435554', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230603, '龙凤区', 'L', '125.14047256095', '46.567678067125', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230604, '让胡路区', 'R', '124.87759881447', '46.658078458609', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230605, '红岗区', 'H', '124.8974774171', '46.404313108628', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230606, '大同区', 'D', '124.81937675979', '46.045583951311', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230621, '肇州县', 'Z', '125.2753682248', '45.705107986871', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230622, '肇源县', 'Z', '125.08457262601', '45.524152914206', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230623, '林甸县', 'L', '124.86965042766', '47.177234395243', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230624, '杜尔伯特蒙古族自治县', 'D', '124.44935879141', '46.868767758452', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230671, '大庆高新技术产业开发区', 'D', '125.15778147083', '46.581298438495', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230702, '伊春区', 'Y', '128.91345891818', '47.733954439001', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230703, '南岔区', 'N', '129.28957179961', '47.143749913595', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230704, '友好区', 'Y', '128.84257946937', '47.846436100332', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230705, '西林区', 'X', '129.31959406806', '47.486393100686', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230706, '翠峦区', 'C', '128.67648152295', '47.732893980201', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230707, '新青区', 'X', '129.54064675236', '48.296134660851', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230708, '美溪区', 'M', '129.13536777746', '47.64134415168', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230709, '金山屯区', 'J', '129.43563861113', '47.418759014597', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230710, '五营区', 'W', '129.25134952898', '48.11427128362', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230711, '乌马河区', 'W', '128.80554637557', '47.73361851021', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230712, '汤旺河区', 'T', '129.57747422403', '48.460614389845', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230713, '带岭区', 'D', '129.02742523145', '47.034571951137', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230714, '乌伊岭区', 'W', '129.44457666112', '48.596169129772', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230715, '红星区', 'H', '129.39750706935', '48.245480405275', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230716, '上甘岭区', 'S', '129.03043733966', '47.980913793769', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230722, '嘉荫县', 'J', '130.41055547772', '48.894983469564', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230781, '铁力市', 'T', '128.03836490393', '46.992948620259', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230803, '向阳区', 'X', '130.37261186145', '46.813511816781', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230804, '前进区', 'Q', '130.3816482759', '46.819626508482', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230805, '东风区', 'D', '130.41056077772', '46.828385151991', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230811, '郊区', 'J', '130.32735909257', '46.805689990858', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230822, '桦南县', 'H', '130.56038502153', '46.24507747688', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230826, '桦川县', 'H', '130.72554944886', '47.028816852926', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230828, '汤原县', 'T', '129.91164504155', '46.735326720461', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230881, '同江市', 'T', '132.51750949205', '47.647980676666', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230882, '富锦市', 'F', '132.04453879528', '47.255932571848', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230883, '抚远市', 'F', '134.31448962575', '48.370944696273', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230902, '新兴区', 'X', '130.93837086995', '45.822310328543', 230900, 3, 'tr_0 tr_230000 tr_230900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230903, '桃山区', 'T', '131.02644424554', '45.771799915696', 230900, 3, 'tr_0 tr_230000 tr_230900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230904, '茄子河区', 'J', '131.0744805937', '45.791238180152', 230900, 3, 'tr_0 tr_230000 tr_230900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (230921, '勃利县', 'B', '130.59853255314', '45.760964313167', 230900, 3, 'tr_0 tr_230000 tr_230900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231002, '东安区', 'D', '129.63347765344', '44.587460377571', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231003, '阳明区', 'Y', '129.64252736281', '44.601775026515', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231004, '爱民区', 'A', '129.59836369953', '44.602350339442', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231005, '西安区', 'X', '129.62241286515', '44.583861081842', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231025, '林口县', 'L', '130.28757880086', '45.28412885062', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231071, '牡丹江经济技术开发区', 'M', '129.63953977835', '44.556245708986', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231081, '绥芬河市', 'S', '131.15739222567', '44.418154372388', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231083, '海林市', 'H', '129.38742683358', '44.599871973195', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231084, '宁安市', 'N', '129.48936798014', '44.3469835775', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231085, '穆棱市', 'M', '130.53055850352', '44.924784589588', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231086, '东宁市', 'D', '131.13154357445', '44.096101486248', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231102, '爱辉区', 'A', '127.50663227086', '50.257709616452', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231121, '嫩江县', 'N', '125.22763469543', '49.191320184756', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231123, '逊克县', 'X', '128.48558459529', '49.5694914357', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231124, '孙吴县', 'S', '127.34238770837', '49.431450606859', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231181, '北安市', 'B', '126.49737974226', '48.247419532219', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231182, '五大连池市', 'W', '126.21155518831', '48.522609551763', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231202, '北林区', 'B', '126.99144894055', '46.643492672111', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231221, '望奎县', 'W', '126.49238489413', '46.839167601749', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231222, '兰西县', 'L', '126.29461952255', '46.258095172245', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231223, '青冈县', 'Q', '126.10048887472', '46.71068498305', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231224, '庆安县', 'Q', '127.5146121882', '46.885744465245', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231225, '明水县', 'M', '125.91248269419', '47.179483374941', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231226, '绥棱县', 'S', '127.12051514063', '47.242515793854', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231281, '安达市', 'A', '125.34862234422', '46.425719232144', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231282, '肇东市', 'Z', '125.96853740717', '46.056938289303', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (231283, '海伦市', 'H', '126.93650857556', '47.456903841096', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (232701, '漠河市', 'M', '122.5454208342', '52.978303678377', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (232721, '呼玛县', 'H', '126.65964991907', '51.73094674724', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (232722, '塔河县', 'T', '124.71651251449', '52.340305081113', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (232761, '加格达奇区', 'J', '124.15292785448', '50.420025955028', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (232762, '松岭区', 'S', '124.15292785448', '50.420025955028', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (232763, '新林区', 'X', '124.53914092375', '51.801225110533', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (232764, '呼中区', 'H', '123.58143136869', '52.037468814622', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310101, '黄浦区', 'H', '121.49158559252', '31.237247152064', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310104, '徐汇区', 'X', '121.44339635276', '31.194556772823', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310105, '长宁区', 'Z', '121.43045437545', '31.226847968225', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310106, '静安区', 'J', '121.45343177277', '31.233844930402', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310107, '普陀区', 'P', '112.85530302042', '35.520558754673', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310109, '虹口区', 'H', '121.51158645453', '31.269746698931', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310110, '杨浦区', 'Y', '121.53251993733', '31.265524144657', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310112, '闵行区', 'M', '121.38861193361', '31.118842580087', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310113, '宝山区', 'B', '131.40737518857', '46.583598340241', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310114, '嘉定区', 'J', '121.27259505835', '31.380155339677', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310115, '浦东新区', 'P', '121.55045460683', '31.227348292436', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310116, '金山区', 'J', '121.34848004512', '30.74785237657', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310117, '松江区', 'S', '121.23447959624', '31.037135176464', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310118, '青浦区', 'Q', '121.13055310467', '31.155454317981', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310120, '奉贤区', 'F', '121.48050373643', '30.923720110285', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (310151, '崇明区', 'C', '121.40355686272', '31.628569984404', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320102, '玄武区', 'X', '118.80441263575', '32.054756682949', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320104, '秦淮区', 'Q', '118.80040736097', '32.045138606405', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320105, '建邺区', 'J', '118.73856944695', '32.009369695446', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320106, '鼓楼区', 'G', '118.77651899204', '32.072405160557', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320111, '浦口区', 'P', '118.63460405875', '32.064679277923', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320113, '栖霞区', 'Q', '118.91542298491', '32.10260020783', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320114, '雨花台区', 'Y', '118.78544536406', '31.997858805466', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320115, '江宁区', 'J', '118.84656705909', '31.958526869177', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320116, '六合区', 'L', '118.82747132971', '32.32866604102', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320117, '溧水区', 'L', '119.03440390903', '31.657283696314', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320118, '高淳区', 'G', '118.89849765147', '31.333639123905', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320205, '锡山区', 'X', '120.36342571103', '31.594761632814', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320206, '惠山区', 'H', '120.30459559335', '31.686741337275', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320211, '滨湖区', 'B', '120.29154752616', '31.534639699974', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320213, '梁溪区', 'L', '120.30959951436', '31.571645024135', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320214, '新吴区', 'X', '120.37039647195', '31.554850239842', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320281, '江阴市', 'J', '120.29156800752', '31.926044909769', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320282, '宜兴市', 'Y', '119.83160603216', '31.342956624268', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320302, '鼓楼区', 'G', '117.19257874733', '34.293760084221', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320303, '云龙区', 'Y', '117.2584239124', '34.259086691031', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320305, '贾汪区', 'J', '117.46943039703', '34.441620400617', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320311, '泉山区', 'Q', '117.20059046468', '34.249942871606', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320312, '铜山区', 'T', '117.17556960199', '34.186100449885', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320321, '丰县', 'F', '116.60258246804', '34.699769765634', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320322, '沛县', 'P', '116.9425856239', '34.765151955415', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320324, '睢宁县', 'S', '117.94743277245', '33.918789417818', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320371, '徐州经济技术开发区', 'X', '117.28574962221', '34.272904039312', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320381, '新沂市', 'X', '118.36153652102', '34.375610954637', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320382, '邳州市', 'P', '117.96341066307', '34.339753160807', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320402, '天宁区', 'T', '119.98046316025', '31.785570271253', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320404, '钟楼区', 'Z', '119.908462716', '31.807646657754', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320411, '新北区', 'X', '119.97751429276', '31.836323947624', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320412, '武进区', 'W', '119.94861167229', '31.706446611742', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320413, '金坛区', 'J', '119.60457090266', '31.72889303001', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320481, '溧阳市', 'L', '119.49150603896', '31.422102292159', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320505, '虎丘区', 'H', '120.57847178571', '31.301932876554', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320506, '吴中区', 'W', '120.63850751921', '31.268261445846', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320507, '相城区', 'X', '120.64856593584', '31.374689921493', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320508, '姑苏区', 'G', '120.6234549731', '31.341831300993', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320509, '吴江区', 'W', '120.65156717454', '31.144644190473', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320571, '苏州工业园区', 'S', '120.82848521083', '31.309610913062', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320581, '常熟市', 'C', '120.75949588665', '31.659538276741', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320582, '张家港市', 'Z', '120.56155363871', '31.88114053634', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320583, '昆山市', 'K', '120.98745249795', '31.390863425082', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320585, '太仓市', 'T', '121.1355952935', '31.464599352978', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320602, '崇川区', 'C', '120.86342022229', '32.015923029631', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320611, '港闸区', 'G', '120.82445235808', '32.037345124875', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320612, '通州区', 'T', '121.08142549498', '32.070355739676', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320623, '如东县', 'R', '121.19243791024', '32.335872886155', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320671, '南通经济技术开发区', 'N', '120.90159173866', '31.986549431201', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320681, '启东市', 'Q', '121.66347374677', '31.814232849643', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320682, '如皋市', 'R', '120.57946558109', '32.377851486109', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320684, '海门市', 'H', '121.18843649817', '31.87361172603', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320685, '海安市', 'H', '120.47443309578', '32.53919574424', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320703, '连云区', 'L', '119.46701669742', '34.638921829102', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320706, '海州区', 'H', '119.16940808819', '34.577456118597', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320707, '赣榆区', 'G', '119.17943461497', '34.847682460846', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320722, '东海县', 'D', '118.75956509248', '34.547918627364', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320723, '灌云县', 'G', '119.24653354504', '34.288616060258', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320724, '灌南县', 'G', '119.3225381861', '34.09259130777', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320771, '连云港经济技术开发区', 'L', '119.35457059279', '34.70740063931', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320772, '连云港高新技术产业开发区', 'L', '119.22862133317', '34.602249525267', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320803, '淮安区', 'H', '119.14746320322', '33.508999838208', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320804, '淮阴区', 'H', '119.04142174116', '33.638150424768', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320812, '清江浦区', 'Q', '119.03241362334', '33.558562240066', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320813, '洪泽区', 'H', '118.8795836493', '33.29962468147', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320826, '涟水县', 'L', '119.26644843921', '33.7870787079', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320830, '盱眙县', 'X', '118.55144127024', '33.01825474166', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320831, '金湖县', 'J', '119.02646908663', '33.031283826757', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320871, '淮安经济技术开发区', 'H', '119.13289044209', '33.610236869931', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320902, '亭湖区', 'T', '120.20457816804', '33.395893486907', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320903, '盐都区', 'Y', '120.16050325734', '33.344020315599', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320904, '大丰区', 'D', '120.50743881649', '33.20475984971', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320921, '响水县', 'X', '119.58460112202', '34.20474300276', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320922, '滨海县', 'B', '119.82762105909', '33.995646547467', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320923, '阜宁县', 'F', '119.80958074885', '33.765078727087', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320924, '射阳县', 'S', '120.26444564892', '33.78101359213', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320925, '建湖县', 'J', '119.80553127745', '33.469832978385', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320971, '盐城经济技术开发区', 'Y', '120.16754426576', '33.355100917626', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (320981, '东台市', 'D', '120.32653706475', '32.872716312488', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321002, '广陵区', 'G', '119.43850484608', '32.40066115972', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321003, '邗江区', 'H', '119.40438513671', '32.38275135526', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321012, '江都区', 'J', '119.57660296908', '32.440294506243', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321023, '宝应县', 'B', '119.36555570138', '33.247205461148', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321071, '扬州经济技术开发区', 'Y', '119.41941890823', '32.40067693609', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321081, '仪征市', 'Y', '119.19146705795', '32.278090483161', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321084, '高邮市', 'G', '119.46561561654', '32.787147020528', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321102, '京口区', 'J', '119.47560369584', '32.203785483528', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321111, '润州区', 'R', '119.41844047387', '32.201494843152', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321112, '丹徒区', 'D', '119.44050079109', '32.13792039565', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321171, '镇江新区', 'Z', '119.67618104484', '32.168646770866', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321181, '丹阳市', 'D', '119.61250060471', '32.01592027417', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321182, '扬中市', 'Y', '119.80351961209', '32.242967194122', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321183, '句容市', 'J', '119.1754332029', '31.950923490521', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321202, '海陵区', 'H', '119.9255249512', '32.496731549227', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321203, '高港区', 'G', '119.88842098109', '32.32486247444', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321204, '姜堰区', 'J', '120.13339832587', '32.515233674759', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321271, '泰州医药高新技术产业开发区', 'T', '119.91593203649', '32.502484457877', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321281, '兴化市', 'X', '119.85751406137', '32.917824213889', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321282, '靖江市', 'J', '120.28353203592', '31.988170075211', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321283, '泰兴市', 'T', '120.05859939046', '32.177474023712', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321302, '宿城区', 'S', '118.24956705107', '33.968677630731', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321311, '宿豫区', 'S', '118.33640094471', '33.954804396327', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321322, '沭阳县', 'S', '118.81041906571', '34.117454209479', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321323, '泗阳县', 'S', '118.70946596538', '33.728328313047', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321324, '泗洪县', 'S', '118.22241594669', '33.465732594595', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (321371, '宿迁经济技术开发区', 'S', '118.27387299732', '33.898354594037', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330102, '上城区', 'S', '120.17557880007', '30.248398420426', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330103, '下城区', 'X', '120.18760693119', '30.286744052562', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330104, '江干区', 'J', '120.21153877811', '30.263310567012', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330105, '拱墅区', 'G', '120.14844700926', '30.32464256663', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330106, '西湖区', 'X', '120.13643801205', '30.265916325589', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330108, '滨江区', 'B', '120.21847118139', '30.214332950144', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330109, '萧山区', 'X', '120.27047058397', '30.187511222214', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330110, '余杭区', 'Y', '120.30659216718', '30.424739268745', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330111, '富阳区', 'F', '119.96655568418', '30.054722967304', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330112, '临安区', 'L', '119.73151737122', '30.239805598054', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330122, '桐庐县', 'T', '119.69759877583', '29.798584790143', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330127, '淳安县', 'C', '119.04839230601', '29.614950366034', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330182, '建德市', 'J', '119.28739807501', '29.481154026968', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330203, '海曙区', 'H', '121.55740307254', '29.865720708366', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330205, '江北区', 'J', '121.56042128922', '29.892948379476', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330206, '北仑区', 'B', '121.85057621461', '29.904659359939', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330211, '镇海区', 'Z', '121.72251899132', '29.954884963349', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330212, '鄞州区', 'Y', '121.55542706991', '29.824206349996', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330213, '奉化区', 'F', '121.41352776719', '29.66114641278', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330225, '象山县', 'X', '121.87556392982', '29.482270653805', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330226, '宁海县', 'N', '121.43643177294', '29.294317441106', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330281, '余姚市', 'Y', '121.16058507482', '30.042734639571', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330282, '慈溪市', 'C', '121.27259613632', '30.17525661072', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330302, '鹿城区', 'L', '120.66158649793', '28.020351607763', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330303, '龙湾区', 'L', '120.81946755397', '27.938652244916', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330304, '瓯海区', 'O', '120.62144724335', '27.972857351643', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330305, '洞头区', 'D', '121.16354856759', '27.841870324587', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330324, '永嘉县', 'Y', '120.68852407508', '28.156450332206', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330326, '平阳县', 'P', '120.57251537444', '27.667724401093', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330327, '苍南县', 'C', '120.43359512229', '27.523066788447', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330328, '文成县', 'W', '120.09748845652', '27.79321715229', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330329, '泰顺县', 'T', '119.72353725759', '27.562170559597', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330371, '温州经济技术开发区', 'W', '120.82366240355', '27.878919129203', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330381, '瑞安市', 'R', '120.66158218607', '27.783950736232', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330382, '乐清市', 'L', '120.99250185617', '28.118179995228', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330402, '南湖区', 'N', '120.78961005175', '30.751546813315', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330411, '秀洲区', 'X', '120.71543705563', '30.770207214174', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330421, '嘉善县', 'J', '120.93251060584', '30.83712219382', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330424, '海盐县', 'H', '120.95244526273', '30.531872894538', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330481, '海宁市', 'H', '120.68656506738', '30.517923769776', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330482, '平湖市', 'P', '121.02257525525', '30.682240998058', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330483, '桐乡市', 'T', '120.57154315531', '30.63631118771', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330502, '吴兴区', 'W', '120.1916046602', '30.862955454986', 330500, 3, 'tr_0 tr_330000 tr_330500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330503, '南浔区', 'N', '120.42460139422', '30.855242982243', 330500, 3, 'tr_0 tr_330000 tr_330500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330521, '德清县', 'D', '119.98346466845', '30.548628239139', 330500, 3, 'tr_0 tr_330000 tr_330500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330522, '长兴县', 'Z', '119.91749832197', '31.032579326835', 330500, 3, 'tr_0 tr_330000 tr_330500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330523, '安吉县', 'A', '119.68656337876', '30.644424794114', 330500, 3, 'tr_0 tr_330000 tr_330500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330602, '越城区', 'Y', '120.58843667181', '29.995309962798', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330603, '柯桥区', 'K', '120.45151103408', '30.07900360495', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330604, '上虞区', 'S', '120.87450989364', '30.038242967062', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330624, '新昌县', 'X', '120.91056965639', '29.50554107531', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330681, '诸暨市', 'Z', '120.25340833197', '29.714934649195', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330683, '嵊州市', 'S', '120.83743725739', '29.567326991294', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330702, '婺城区', 'W', '119.57859260936', '29.091775438186', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330703, '金东区', 'J', '119.69958241405', '29.104765016118', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330723, '武义县', 'W', '119.82256555867', '28.89824378665', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330726, '浦江县', 'P', '119.8984360827', '29.458692851855', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330727, '磐安县', 'P', '120.45651305177', '29.060103175107', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330781, '兰溪市', 'L', '119.46659870554', '29.214044345079', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330782, '义乌市', 'Y', '120.08158099306', '29.31114987541', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330783, '东阳市', 'D', '120.24842192791', '29.295861065151', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330784, '永康市', 'Y', '120.05455071078', '28.894203967255', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330802, '柯城区', 'K', '118.87758391504', '28.974203651128', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330803, '衢江区', 'Q', '118.9655390736', '28.986237907969', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330822, '常山县', 'C', '118.51755663118', '28.906997949113', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330824, '开化县', 'K', '118.42145932131', '29.143187521187', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330825, '龙游县', 'L', '119.17841825566', '29.034486553295', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330881, '江山市', 'J', '118.63358329793', '28.742868480118', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330902, '定海区', 'D', '122.11360080392', '30.025462378363', 330900, 3, 'tr_0 tr_330000 tr_330900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330903, '普陀区', 'P', '122.33154416586', '29.976835696536', 330900, 3, 'tr_0 tr_330000 tr_330900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330921, '岱山县', 'D', '122.23260481449', '30.269655894035', 330900, 3, 'tr_0 tr_330000 tr_330900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (330922, '嵊泗县', 'S', '122.45758776506', '30.731273949024', 330900, 3, 'tr_0 tr_330000 tr_330900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331002, '椒江区', 'J', '121.44940797569', '28.679258224903', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331003, '黄岩区', 'H', '121.26856605116', '28.655333607551', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331004, '路桥区', 'L', '121.37157806769', '28.586946666726', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331022, '三门县', 'S', '121.40255379759', '29.110355206289', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331023, '天台县', 'T', '121.01355337629', '29.149514378149', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331024, '仙居县', 'X', '120.73543520575', '28.853225693258', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331081, '温岭市', 'W', '121.39258889458', '28.37765548985', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); + +INSERT INTO hg_sys_provinces (id, title, pinyin, lng, lat, pid, level, tree, sort, status, created_at, updated_at) VALUES + (331082, '临海市', 'L', '121.15158529413', '28.864049329083', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331083, '玉环市', 'Y', '121.23851297084', '28.141862986829', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331102, '莲都区', 'L', '119.91951913335', '28.451745135046', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331121, '青田县', 'Q', '120.296573349', '28.14548755633', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331122, '缙云县', 'J', '120.09747830566', '28.665214747164', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331123, '遂昌县', 'S', '119.28243538622', '28.59845467671', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331124, '松阳县', 'S', '119.48854377016', '28.455056404273', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331125, '云和县', 'Y', '119.57959736407', '28.121469507454', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331126, '庆元县', 'Q', '119.06948685498', '27.625431778354', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331127, '景宁畲族自治县', 'J', '119.64243033109', '27.979553966951', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (331181, '龙泉市', 'L', '119.14844476521', '28.080508725251', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340102, '瑶海区', 'Y', '117.31558704454', '31.863786941657', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340103, '庐阳区', 'L', '117.27145913382', '31.884886695554', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340104, '蜀山区', 'S', '117.2664607823', '31.857378217104', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340111, '包河区', 'B', '117.31657625857', '31.799293467782', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340121, '长丰县', 'Z', '117.17356009256', '32.483722623763', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340122, '肥东县', 'F', '117.47540062528', '31.893890354487', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340123, '肥西县', 'F', '117.16455781372', '31.712962132717', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340124, '庐江县', 'L', '117.29357730192', '31.261327637478', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340171, '合肥高新技术产业开发区', 'H', '117.1837943471', '31.838528178293', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340172, '合肥经济技术开发区', 'H', '117.21475703093', '31.784661076762', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340173, '合肥新站高新技术产业开发区', 'H', '117.38386824707', '31.946175260915', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340181, '巢湖市', 'C', '117.89557620045', '31.629002428816', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340202, '镜湖区', 'J', '118.39260630352', '31.345866595569', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340203, '弋江区', 'Y', '118.37957970583', '31.317566272497', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340207, '鸠江区', 'J', '118.39758848554', '31.375804519517', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340208, '三山区', 'S', '118.27460210698', '31.225280124269', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340221, '芜湖县', 'W', '118.58244251203', '31.141239223464', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340222, '繁昌县', 'F', '118.20542431831', '31.107958593586', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340223, '南陵县', 'N', '118.34041816695', '30.920260298683', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340225, '无为县', 'W', '117.90857854389', '31.308844155979', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340271, '芜湖经济技术开发区', 'W', '118.39582758127', '31.478017093937', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340272, '安徽芜湖长江大桥经济开发区', 'A', '118.37946121933', '31.391647770998', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340302, '龙子湖区', 'L', '117.39951276393', '32.948644262929', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340303, '蚌山区', 'B', '117.37944120527', '32.923378770395', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340304, '禹会区', 'Y', '117.3484523601', '32.935309988858', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340311, '淮上区', 'H', '117.36638271774', '32.970547011885', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340321, '怀远县', 'H', '117.21150631391', '32.976003726624', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340322, '五河县', 'W', '117.88756088987', '33.132709462866', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340323, '固镇县', 'G', '117.32354764831', '33.323274297744', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340371, '蚌埠市高新技术开发区', 'B', '117.27641494698', '32.834931868561', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340372, '蚌埠市经济开发区', 'B', '117.20923836199', '32.962369404949', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340402, '大通区', 'D', '117.05958317929', '32.637269959538', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340403, '田家庵区', 'T', '117.02344533676', '32.653323007096', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340404, '谢家集区', 'X', '116.86543887721', '32.606254588196', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340405, '八公山区', 'B', '116.84056434849', '32.637137318437', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340406, '潘集区', 'P', '116.84158096084', '32.777955491108', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340421, '凤台县', 'F', '116.71757320891', '32.715103905085', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340422, '寿县', 'S', '116.8055627726', '32.561546151201', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340503, '花山区', 'H', '118.49960562875', '31.725472572001', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340504, '雨山区', 'Y', '118.50559705701', '31.687745482904', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340506, '博望区', 'B', '118.85155804451', '31.556645467065', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340521, '当涂县', 'D', '118.50460469891', '31.576649154711', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340522, '含山县', 'H', '118.10746203634', '31.740862208736', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340523, '和县', 'H', '118.35951254887', '31.748243815854', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340602, '杜集区', 'D', '116.83461226601', '33.997285436391', 340600, 3, 'tr_0 tr_340000 tr_340600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340603, '相山区', 'X', '116.80052112276', '33.96582716177', 340600, 3, 'tr_0 tr_340000 tr_340600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340604, '烈山区', 'L', '116.9081817805', '33.84405351094', 340600, 3, 'tr_0 tr_340000 tr_340600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340621, '濉溪县', 'S', '116.77238942808', '33.921629194823', 340600, 3, 'tr_0 tr_340000 tr_340600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340705, '铜官区', 'T', '117.82145710265', '30.940386340633', 340700, 3, 'tr_0 tr_340000 tr_340700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340706, '义安区', 'Y', '117.79856800876', '30.958512099098', 340700, 3, 'tr_0 tr_340000 tr_340700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340711, '郊区', 'J', '117.80755007573', '30.897741483658', 340700, 3, 'tr_0 tr_340000 tr_340700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340722, '枞阳县', 'C', '117.22643695997', '30.705671267725', 340700, 3, 'tr_0 tr_340000 tr_340700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340802, '迎江区', 'Y', '117.09751448877', '30.517523291408', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340803, '大观区', 'D', '117.04053820417', '30.518231924651', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340811, '宜秀区', 'Y', '116.99344112425', '30.619675877796', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340822, '怀宁县', 'H', '116.83659258051', '30.739399674607', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340825, '太湖县', 'T', '116.31547630162', '30.460113290448', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340826, '宿松县', 'S', '116.13552369949', '30.159786861375', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340827, '望江县', 'W', '116.7005902941', '30.129968329229', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340828, '岳西县', 'Y', '116.36655539021', '30.855227714002', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340871, '安徽安庆经济开发区', 'A', '117.06360390492', '30.530956568043', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340881, '桐城市', 'T', '116.98046635878', '31.041969037674', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (340882, '潜山市', 'Q', '116.58761103892', '30.636755682399', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341002, '屯溪区', 'T', '118.32141818077', '29.702143908546', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341003, '黄山区', 'H', '118.14760982484', '30.278650980188', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341004, '徽州区', 'H', '118.34343582847', '29.834221385317', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341021, '歙县', 'S', '118.42146012979', '29.866287675757', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341022, '休宁县', 'X', '118.20543014116', '29.795459004963', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341023, '黟县', 'Y', '117.94447724144', '29.931047330704', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341024, '祁门县', 'Q', '117.72339257754', '29.86034394808', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341102, '琅琊区', 'L', '118.31244134015', '32.300867492599', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341103, '南谯区', 'N', '118.42348205204', '32.206131899264', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341122, '来安县', 'L', '118.4424124932', '32.458449762427', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341124, '全椒县', 'Q', '118.2805842827', '32.091939797603', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341125, '定远县', 'D', '117.70447068625', '32.537046613487', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341126, '凤阳县', 'F', '117.53858536874', '32.880976725258', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341171, '苏滁现代产业园', 'S', '118.42315086566', '32.314484916002', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341172, '滁州经济技术开发区', 'C', '118.37688910117', '32.299081918592', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341181, '天长市', 'T', '119.01138527949', '32.67341003277', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341182, '明光市', 'M', '117.99550981385', '32.783022823418', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341202, '颍州区', 'Y', '115.81341119616', '32.88962541655', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341203, '颍东区', 'Y', '115.86361668264', '32.917362240172', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341204, '颍泉区', 'Y', '115.81542555644', '32.931313576025', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341221, '临泉县', 'L', '115.26761550051', '33.045959528363', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341222, '太和县', 'T', '115.6286154697', '33.165959850096', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341225, '阜南县', 'F', '115.60254592516', '32.664097385125', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341226, '颍上县', 'Y', '116.26347689904', '32.659028468804', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341271, '阜阳合肥现代产业园区', 'F', '115.88456164757', '32.809466011566', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341272, '阜阳经济技术开发区', 'F', '115.86257063732', '32.867285704339', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341282, '界首市', 'J', '115.38060984722', '33.262775236231', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341302, '埇桥区', 'Y', '116.98348044326', '33.646130650445', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341321, '砀山县', 'D', '116.37252400151', '34.448428171397', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341322, '萧县', 'X', '116.95358492572', '34.194269344319', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341323, '灵璧县', 'L', '117.56455699799', '33.547892231948', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341324, '泗县', 'S', '117.91658999175', '33.488694630134', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341371, '宿州马鞍山现代产业园区', 'S', '116.97054394561', '33.652095326452', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341372, '宿州经济技术开发区', 'S', '116.97054394561', '33.652095326452', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341702, '贵池区', 'G', '117.57449037049', '30.693857943819', 341700, 3, 'tr_0 tr_340000 tr_341700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341721, '东至县', 'D', '117.03448128944', '30.116534528265', 341700, 3, 'tr_0 tr_340000 tr_341700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341722, '石台县', 'S', '117.49239440959', '30.216530337189', 341700, 3, 'tr_0 tr_340000 tr_341700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341723, '青阳县', 'Q', '117.85343129914', '30.645634346235', 341700, 3, 'tr_0 tr_340000 tr_341700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341802, '宣州区', 'X', '118.76254944305', '30.952158157984', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341821, '郎溪县', 'L', '119.18646592169', '31.132681870443', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341822, '广德县', 'G', '119.42747581035', '30.883667102643', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341823, '泾县', 'J', '118.42643469242', '30.694672488542', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341824, '绩溪县', 'J', '118.58544384057', '30.073292199533', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341825, '旌德县', 'J', '118.54646735263', '30.292481093722', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341871, '宣城市经济开发区', 'X', '118.76553424277', '30.946601545293', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341881, '宁国市', 'N', '118.98960981494', '30.639352229689', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350102, '鼓楼区', 'G', '119.31049162322', '26.088114037555', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350103, '台江区', 'T', '119.32052821102', '26.058528150645', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350104, '仓山区', 'C', '119.28043216493', '26.052841691927', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350105, '马尾区', 'M', '119.44551915828', '26.004533771063', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350111, '晋安区', 'J', '119.33457941597', '26.087213904434', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350112, '长乐区', 'Z', '119.52943832001', '25.969257448077', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350121, '闽侯县', 'M', '119.13848201812', '26.156035214577', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350122, '连江县', 'L', '119.54647881621', '26.203583291029', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350123, '罗源县', 'L', '119.55648045992', '26.495495660324', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350124, '闽清县', 'M', '118.86957650956', '26.226847540202', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350125, '永泰县', 'Y', '118.93843072857', '25.872787263196', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350128, '平潭县', 'P', '119.79650131414', '25.504700273945', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350181, '福清市', 'F', '119.39046524749', '25.726343299035', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350203, '思明区', 'S', '118.08840797224', '24.451948395671', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350205, '海沧区', 'H', '118.03956171185', '24.490325818598', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350206, '湖里区', 'H', '118.15358812172', '24.517573138112', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350211, '集美区', 'J', '118.10343491664', '24.58201906225', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350212, '同安区', 'T', '118.15856347661', '24.729113975347', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350213, '翔安区', 'X', '118.25457589661', '24.624216383593', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350302, '城厢区', 'C', '119.00153633131', '25.424343792482', 350300, 3, 'tr_0 tr_350000 tr_350300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350303, '涵江区', 'H', '119.12256736822', '25.464464388124', 350300, 3, 'tr_0 tr_350000 tr_350300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350304, '荔城区', 'L', '119.01948169064', '25.439754478806', 350300, 3, 'tr_0 tr_350000 tr_350300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350305, '秀屿区', 'X', '119.11157130031', '25.323654397561', 350300, 3, 'tr_0 tr_350000 tr_350300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350322, '仙游县', 'X', '118.69845425065', '25.368291498104', 350300, 3, 'tr_0 tr_350000 tr_350300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350402, '梅列区', 'M', '117.65255022877', '26.277335878355', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350403, '三元区', 'S', '117.61441509378', '26.240219374574', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350421, '明溪县', 'M', '117.20851763568', '26.361853685277', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350423, '清流县', 'Q', '116.8235931858', '26.18335735321', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350424, '宁化县', 'N', '116.660425512', '26.26795649054', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350425, '大田县', 'D', '117.85343999668', '25.698932641879', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350426, '尤溪县', 'Y', '118.19743971365', '26.17621803946', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350427, '沙县', 'S', '117.79856107581', '26.402813444346', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350428, '将乐县', 'J', '117.47740904084', '26.735209519833', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350429, '泰宁县', 'T', '117.1825958624', '26.905660032285', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350430, '建宁县', 'J', '116.85250622659', '26.836824655349', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350481, '永安市', 'Y', '117.37144258732', '25.948143989824', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350502, '鲤城区', 'L', '118.59348105353', '24.913354167054', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350503, '丰泽区', 'F', '118.61958015232', '24.894969993262', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350504, '洛江区', 'L', '118.67741629493', '24.94621365376', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350505, '泉港区', 'Q', '118.92243298541', '25.139650393954', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350521, '惠安县', 'H', '118.8034155003', '25.036949815039', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350524, '安溪县', 'A', '118.19242537229', '25.061759553382', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350525, '永春县', 'Y', '118.30048613527', '25.327974202083', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350526, '德化县', 'D', '118.24755006956', '25.497308594179', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350581, '石狮市', 'S', '118.65451902647', '24.737665160883', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350582, '晋江市', 'J', '118.55843052', '24.787824575145', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350583, '南安市', 'N', '118.39257197205', '24.966362350468', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350602, '芗城区', 'X', '117.6605895241', '24.516268416111', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350603, '龙文区', 'L', '117.7164546946', '24.509509680945', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350622, '云霄县', 'Y', '117.34644831448', '23.964072828248', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350623, '漳浦县', 'Z', '117.62044335257', '24.123461614812', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350624, '诏安县', 'Z', '117.18255858272', '23.717053963784', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350625, '长泰县', 'Z', '117.76555257036', '24.631243628383', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350626, '东山县', 'D', '117.43656030457', '23.706894688691', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350627, '南靖县', 'N', '117.36344641066', '24.52085173207', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350628, '平和县', 'P', '117.32255159131', '24.368365040126', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350629, '华安县', 'H', '117.54058560971', '25.010067731399', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350681, '龙海市', 'L', '117.82445086941', '24.452939738547', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350702, '延平区', 'Y', '118.18845055007', '26.643807791057', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350703, '建阳区', 'J', '118.12752522464', '27.337502466188', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350721, '顺昌县', 'S', '117.81651928091', '26.799104367214', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350722, '浦城县', 'P', '118.54743912328', '27.923390046145', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350723, '光泽县', 'G', '117.34048158963', '27.547272859205', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350724, '松溪县', 'S', '118.79145438278', '27.532554907167', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350725, '政和县', 'Z', '118.86358723724', '27.371749198234', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350781, '邵武市', 'S', '117.4994195021', '27.346469966261', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350782, '武夷山市', 'W', '118.04157715009', '27.762553910259', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350783, '建瓯市', 'J', '118.31146073369', '27.028955089429', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350802, '新罗区', 'X', '117.04354293052', '25.104077629635', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350803, '永定区', 'Y', '116.89244722515', '24.869137411287', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350821, '长汀县', 'Z', '116.36356796988', '25.83918461828', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350823, '上杭县', 'S', '116.42644288776', '25.055570401525', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350824, '武平县', 'W', '116.10758916743', '25.100855173343', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350825, '连城县', 'L', '116.76044617118', '25.716337381852', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350881, '漳平市', 'Z', '117.42655632526', '25.295743499252', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341502, '金安区', 'J', '116.54543837997', '31.756287719901', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341503, '裕安区', 'Y', '116.48654978261', '31.74362587083', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341504, '叶集区', 'Y', '115.94747592742', '31.83526314225', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341522, '霍邱县', 'H', '116.28439133776', '32.359343590922', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341523, '舒城县', 'S', '116.95560171142', '31.467692010556', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341524, '金寨县', 'J', '115.94044120714', '31.733461734381', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341525, '霍山县', 'H', '116.33957586218', '31.398570812489', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350902, '蕉城区', 'J', '119.53344242699', '26.666738555955', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350921, '霞浦县', 'X', '120.01142710564', '26.891348873767', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350922, '古田县', 'G', '118.75257823557', '26.583261752073', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350923, '屏南县', 'P', '118.99259621521', '26.914264918059', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350924, '寿宁县', 'S', '119.51142504878', '27.466649659969', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350925, '周宁县', 'Z', '119.34556712964', '27.110239280448', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350926, '柘荣县', 'Z', '119.90745668696', '27.239961876352', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350981, '福安市', 'F', '119.65440636048', '27.09432350806', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (350982, '福鼎市', 'F', '120.22345190932', '27.330524972528', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360102, '东湖区', 'D', '115.90546602606', '28.691259179775', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360103, '西湖区', 'X', '115.88353569365', '28.661976709901', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360104, '青云谱区', 'Q', '115.93141618579', '28.627235736484', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360105, '湾里区', 'W', '115.73759563309', '28.720195384308', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360111, '青山湖区', 'Q', '115.96855240505', '28.687596006173', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360112, '新建区', 'X', '115.8214509253', '28.698748625155', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360121, '南昌县', 'N', '115.95046017277', '28.551604186108', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360123, '安义县', 'A', '115.55544146387', '28.850794273751', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360124, '进贤县', 'J', '116.24853779343', '28.382758944474', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360202, '昌江区', 'C', '117.19057910346', '29.27885446447', 360200, 3, 'tr_0 tr_360000 tr_360200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360203, '珠山区', 'Z', '117.20954826159', '29.305778220374', 360200, 3, 'tr_0 tr_360000 tr_360200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360222, '浮梁县', 'F', '117.22146608079', '29.357788237529', 360200, 3, 'tr_0 tr_360000 tr_360200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360281, '乐平市', 'L', '117.15851067473', '28.984363669039', 360200, 3, 'tr_0 tr_360000 tr_360200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360302, '安源区', 'A', '113.87743991926', '27.621307703862', 360300, 3, 'tr_0 tr_360000 tr_360300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360313, '湘东区', 'X', '113.74049971211', '27.645875074875', 360300, 3, 'tr_0 tr_360000 tr_360300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360321, '莲花县', 'L', '113.96854067422', '27.133462711028', 360300, 3, 'tr_0 tr_360000 tr_360300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360322, '上栗县', 'S', '113.80153822404', '27.886415692068', 360300, 3, 'tr_0 tr_360000 tr_360300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360323, '芦溪县', 'L', '114.03651940468', '27.6366047187', 360300, 3, 'tr_0 tr_360000 tr_360300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360402, '濂溪区', 'L', '116.00753491163', '29.711340559079', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360403, '浔阳区', 'X', '115.99655806746', '29.733093751939', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360404, '柴桑区', 'C', '115.91740154188', '29.614804909379', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360423, '武宁县', 'W', '115.10744177399', '29.2623521507', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360424, '修水县', 'X', '114.55356797639', '29.031175867959', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360425, '永修县', 'Y', '115.81540658685', '29.028005616261', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360426, '德安县', 'D', '115.76257795847', '29.319172496312', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360428, '都昌县', 'D', '116.21055204665', '29.278965044767', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360429, '湖口县', 'H', '116.25847134559', '29.737131514562', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360430, '彭泽县', 'P', '116.55550980644', '29.902122004906', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360481, '瑞昌市', 'R', '115.68742967207', '29.681951286531', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360482, '共青城市', 'G', '115.82142002359', '29.248741173716', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360483, '庐山市', 'L', '116.05142593917', '29.454539165717', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360502, '渝水区', 'Y', '114.9514238934', '27.806839650444', 360500, 3, 'tr_0 tr_360000 tr_360500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360521, '分宜县', 'F', '114.69847247036', '27.820731344374', 360500, 3, 'tr_0 tr_360000 tr_360500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360602, '月湖区', 'Y', '117.04354760171', '28.245078331555', 360600, 3, 'tr_0 tr_360000 tr_360600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360603, '余江区', 'Y', '116.82459362864', '28.215353761359', 360600, 3, 'tr_0 tr_360000 tr_360600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360681, '贵溪市', 'G', '117.25139869833', '28.298735072105', 360600, 3, 'tr_0 tr_360000 tr_360600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360702, '章贡区', 'Z', '114.9275508855', '25.823747013882', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360703, '南康区', 'N', '114.77153821509', '25.66705293056', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360704, '赣县区', 'G', '115.01857016415', '25.866384616621', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360722, '信丰县', 'X', '114.92952113897', '25.391975120014', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360723, '大余县', 'D', '114.36840663965', '25.407637298367', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360724, '上犹县', 'S', '114.55854863129', '25.790518799476', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360725, '崇义县', 'C', '114.31457244808', '25.687687192664', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360726, '安远县', 'A', '115.40055913129', '25.142743431732', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360727, '龙南县', 'L', '114.79655413709', '24.916599461157', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360728, '定南县', 'D', '115.0345637751', '24.789783831846', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360729, '全南县', 'Q', '114.53658236666', '24.748206354967', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360730, '宁都县', 'N', '116.01549443743', '26.47597950334', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360731, '于都县', 'Y', '115.42149926153', '25.957893942751', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360732, '兴国县', 'X', '115.36955169119', '26.343882588243', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360733, '会昌县', 'H', '115.79245964209', '25.606661833811', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360734, '寻乌县', 'X', '115.65351531535', '24.96944654678', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360735, '石城县', 'S', '116.35259426977', '26.318972346784', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360781, '瑞金市', 'R', '116.03342066286', '25.891666273953', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360802, '吉州区', 'J', '115.00153936965', '27.149314993877', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360803, '青原区', 'Q', '115.02156071302', '27.087662535191', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360821, '吉安县', 'J', '114.9145913014', '27.044989078994', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360822, '吉水县', 'J', '115.14256983128', '27.235259745039', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360823, '峡江县', 'X', '115.32240322821', '27.588234617615', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360824, '新干县', 'X', '115.39359474833', '27.746080951713', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360825, '永丰县', 'Y', '115.44740243989', '27.324342103714', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360826, '泰和县', 'T', '114.91559111544', '26.795697341165', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360827, '遂川县', 'S', '114.52756212171', '26.319517284146', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360828, '万安县', 'W', '114.79257715894', '26.464072836341', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360829, '安福县', 'A', '114.62647813461', '27.399076477105', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360830, '永新县', 'Y', '114.2494149359', '26.951537256563', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360881, '井冈山市', 'J', '114.29555585942', '26.753709741566', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360902, '袁州区', 'Y', '114.43456118111', '27.802582705304', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360921, '奉新县', 'F', '115.40655109853', '28.694028951458', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360922, '万载县', 'W', '114.45253654385', '28.112133306116', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360923, '上高县', 'S', '114.93154115857', '28.238815490252', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360924, '宜丰县', 'Y', '114.80951713475', '28.400373307265', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360925, '靖安县', 'J', '115.36955312848', '28.867081916186', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360926, '铜鼓县', 'T', '114.37741107441', '28.52708345654', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360981, '丰城市', 'F', '115.77747842145', '28.166614024369', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360982, '樟树市', 'Z', '115.55241893533', '28.062153117648', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (360983, '高安市', 'G', '115.38256535328', '28.422857002119', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361002, '临川区', 'L', '116.31848983161', '27.940458992864', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361003, '东乡区', 'D', '116.60954171505', '28.253977397999', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361021, '南城县', 'N', '116.64339884971', '27.57624096656', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361022, '黎川县', 'L', '116.91450700338', '27.288340234831', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361023, '南丰县', 'N', '116.53140350859', '27.224733524876', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361024, '崇仁县', 'C', '116.08354898488', '27.759079756014', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361025, '乐安县', 'L', '115.83749627865', '27.434079864498', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361026, '宜黄县', 'Y', '116.24254169398', '27.5605634607', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361027, '金溪县', 'J', '116.76040404065', '27.925329188976', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361028, '资溪县', 'Z', '117.06657027361', '27.711845785732', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361030, '广昌县', 'G', '116.34256064638', '26.848454446681', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361102, '信州区', 'X', '117.97341184157', '28.437628311', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361103, '广丰区', 'G', '118.19742022042', '28.442615061205', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361121, '上饶县', 'S', '117.91558441252', '28.45418687477', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361123, '玉山县', 'Y', '118.2515628901', '28.687749687317', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361124, '铅山县', 'Q', '117.71642163695', '28.321504694791', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361125, '横峰县', 'H', '117.60239738302', '28.413440462384', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361126, '弋阳县', 'Y', '117.45550637624', '28.384082001231', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361127, '余干县', 'Y', '116.70160096199', '28.707866244419', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361128, '鄱阳县', 'P', '116.7105661408', '29.011452830922', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361129, '万年县', 'W', '117.06459894217', '28.700054054129', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361130, '婺源县', 'W', '117.86844502243', '29.254039048097', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (361181, '德兴市', 'D', '117.58547968518', '28.952564863028', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341602, '谯城区', 'Q', '115.78547191853', '33.882663087443', 341600, 3, 'tr_0 tr_340000 tr_341600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341621, '涡阳县', 'W', '116.22160903516', '33.498566835004', 341600, 3, 'tr_0 tr_340000 tr_341600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341622, '蒙城县', 'M', '116.57158940083', '33.271658239674', 341600, 3, 'tr_0 tr_340000 tr_341600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (341623, '利辛县', 'L', '116.1914935226', '33.155595841529', 341600, 3, 'tr_0 tr_340000 tr_341600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370102, '历下区', 'L', '117.0825673139', '36.672162950043', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370103, '市中区', 'S', '117.00439910401', '36.657551673642', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370104, '槐荫区', 'H', '116.90745837507', '36.657561734426', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370105, '天桥区', 'T', '116.99339917338', '36.684067874353', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370112, '历城区', 'L', '117.07158975107', '36.685655534711', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370113, '长清区', 'Z', '116.75838709095', '36.56021587991', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370114, '章丘区', 'Z', '117.53256537437', '36.68553275142', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370115, '济阳区', 'J', '117.18062113319', '36.983970518315', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370124, '平阴县', 'P', '116.46261667806', '36.294861321066', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370126, '商河县', 'S', '117.1635297929', '37.314970715556', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370171, '济南高新技术产业开发区', 'J', '117.12639941261', '36.656554201787', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370202, '市南区', 'S', '120.41858472358', '36.081465640234', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370203, '市北区', 'S', '120.38140448734', '36.09344959486', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370211, '黄岛区', 'H', '120.20454654768', '35.966382870945', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370212, '崂山区', 'L', '120.47539724708', '36.113499423971', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370213, '李沧区', 'L', '120.43960282675', '36.151024667784', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370214, '城阳区', 'C', '120.40252679394', '36.31288619735', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO hg_sys_provinces (id, title, pinyin, lng, lat, pid, level, tree, sort, status, created_at, updated_at) VALUES + (370215, '即墨区', 'J', '120.45353617402', '36.394749170322', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370271, '青岛高新技术产业开发区', 'Q', '120.44085344768', '36.124685571214', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370281, '胶州市', 'J', '120.03953537127', '36.270349088049', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370283, '平度市', 'P', '119.99441429398', '36.782692254089', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370285, '莱西市', 'L', '120.52455620764', '36.893956298026', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370302, '淄川区', 'Z', '117.97341185763', '36.649834806022', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370303, '张店区', 'Z', '118.02459110728', '36.811941952144', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370304, '博山区', 'B', '117.86846875372', '36.500847855131', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370305, '临淄区', 'L', '118.31539460935', '36.832293635152', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370306, '周村区', 'Z', '117.87648217785', '36.808994352212', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370321, '桓台县', 'H', '118.10443420779', '36.965607980118', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370322, '高青县', 'G', '117.83339432525', '37.177268654333', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370323, '沂源县', 'Y', '118.17748944237', '36.190916985848', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370402, '市中区', 'S', '117.56256581399', '34.86996272507', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370403, '薛城区', 'X', '117.26945761931', '34.801124568639', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370404, '峄城区', 'Y', '117.59639060967', '34.778599873011', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370405, '台儿庄区', 'T', '117.74042545412', '34.568763215633', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370406, '山亭区', 'S', '117.46744316558', '35.105691980765', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370481, '滕州市', 'T', '117.17256521921', '35.120034809574', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370502, '东营区', 'D', '118.58846268607', '37.454847320166', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370503, '河口区', 'H', '118.53250516975', '37.891120201056', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370505, '垦利区', 'K', '118.58143173867', '37.578555133809', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370522, '利津县', 'L', '118.26161799914', '37.495860299031', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370523, '广饶县', 'G', '118.41349864392', '37.059638498906', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370571, '东营经济技术开发区', 'D', '118.58846268607', '37.454847320166', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370572, '东营港经济开发区', 'D', '118.96520739607', '38.098236253355', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370602, '芝罘区', 'Z', '121.40654004549', '37.546312866891', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370611, '福山区', 'F', '121.27460474744', '37.503668228451', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370612, '牟平区', 'M', '121.60654911474', '37.392915451796', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370613, '莱山区', 'L', '121.4513806718', '37.517648584109', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370634, '长岛县', 'Z', '120.74342978244', '37.927628387579', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370671, '烟台高新技术产业开发区', 'Y', '121.4544154173', '37.470038383731', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370672, '烟台经济技术开发区', 'Y', '121.12513892753', '37.636399945094', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370681, '龙口市', 'L', '120.48536852807', '37.652555125496', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370682, '莱阳市', 'L', '120.71841430958', '36.984635568304', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370683, '莱州市', 'L', '119.94859307737', '37.182636609074', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370684, '蓬莱市', 'P', '120.76556151495', '37.816438725969', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370685, '招远市', 'Z', '120.44060165265', '37.361137142566', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370686, '栖霞市', 'Q', '120.85641658338', '37.3414181648', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370687, '海阳市', 'H', '121.18045819779', '36.693269738228', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370702, '潍城区', 'W', '119.03142854152', '36.73285441557', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370703, '寒亭区', 'H', '119.22661514747', '36.780743786201', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370704, '坊子区', 'F', '119.17240097265', '36.660741599701', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370705, '奎文区', 'K', '119.13947052995', '36.712752014046', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370724, '临朐县', 'L', '118.54944999641', '36.519129501828', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370725, '昌乐县', 'C', '118.83648798144', '36.712996190845', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370772, '潍坊滨海经济技术开发区', 'W', '119.16837791143', '36.712651551268', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370781, '青州市', 'Q', '118.48653672087', '36.690416508705', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370782, '诸城市', 'Z', '119.41640221867', '36.002008858076', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370783, '寿光市', 'S', '118.79741537481', '36.861921746471', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370784, '安丘市', 'A', '119.22560751818', '36.483842195596', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370785, '高密市', 'G', '119.76241099602', '36.388956706465', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370786, '昌邑市', 'C', '119.40440597739', '36.865161072622', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370811, '任城区', 'R', '116.55446985374', '35.49373064026', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370812, '兖州区', 'Y', '116.79011515173', '35.557952373283', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370826, '微山县', 'W', '117.13541381857', '34.813315104239', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370827, '鱼台县', 'Y', '116.65739284822', '35.017887717823', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370828, '金乡县', 'J', '116.31852982171', '35.072569118665', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370829, '嘉祥县', 'J', '116.34861308511', '35.413255044102', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370830, '汶上县', 'W', '116.50544105765', '35.717055392628', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370831, '泗水县', 'S', '117.25742858989', '35.670600481228', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370832, '梁山县', 'L', '116.10262029578', '35.808063886611', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370871, '济宁高新技术产业开发区', 'J', '116.59361234854', '35.42017739453', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370881, '曲阜市', 'Q', '116.99341597169', '35.587372286488', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370883, '邹城市', 'Z', '117.01440416129', '35.40752093245', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370902, '泰山区', 'T', '117.14141108582', '36.199444601195', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370911, '岱岳区', 'D', '117.04855647915', '36.193291242291', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370921, '宁阳县', 'N', '116.81257853863', '35.764539097344', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370923, '东平县', 'D', '116.47759421565', '35.941908015019', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370982, '新泰市', 'X', '117.77460624827', '35.914619866588', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (370983, '肥城市', 'F', '116.77540081764', '36.188811224315', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371002, '环翠区', 'H', '122.12953818095', '37.507968071219', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371003, '文登区', 'W', '122.06442836878', '37.200113328316', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371071, '威海火炬高技术产业开发区', 'W', '122.12754097831', '37.516430548015', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371072, '威海经济技术开发区', 'W', '122.18792776961', '37.412757933019', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371073, '威海临港经济技术开发区', 'W', '122.12754097831', '37.516430548015', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371082, '荣成市', 'R', '122.49250463074', '37.171317939253', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371083, '乳山市', 'R', '121.5464285812', '36.925177357878', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371102, '东港区', 'D', '119.46862431118', '35.431049003942', 371100, 3, 'tr_0 tr_370000 tr_371100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371103, '岚山区', 'L', '119.32553044175', '35.127432330052', 371100, 3, 'tr_0 tr_370000 tr_371100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371121, '五莲县', 'W', '119.21558036259', '35.755697104104', 371100, 3, 'tr_0 tr_370000 tr_371100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371122, '莒县', 'J', '118.8435382424', '35.585872122989', 371100, 3, 'tr_0 tr_370000 tr_371100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371171, '日照经济技术开发区', 'R', '119.53341540457', '35.422838998438', 371100, 3, 'tr_0 tr_370000 tr_371100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371202, '莱城区', 'L', '117.6459130158', '36.313394584932', 371200, 3, 'tr_0 tr_370000 tr_371200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371203, '钢城区', 'G', '117.8275371813', '36.092835887233', 371200, 3, 'tr_0 tr_370000 tr_371200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371302, '兰山区', 'L', '118.35449973464', '35.057340229806', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371311, '罗庄区', 'L', '118.29151252855', '35.002503733433', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371312, '河东区', 'H', '118.40954744713', '35.095675536824', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371321, '沂南县', 'Y', '118.47149154086', '35.55609766695', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371322, '郯城县', 'T', '118.37358710977', '34.619225932471', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371323, '沂水县', 'Y', '118.63461726385', '35.796180584718', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371324, '兰陵县', 'L', '118.07740949499', '34.86361638544', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371325, '费县', 'F', '117.98442508318', '35.272304128517', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371326, '平邑县', 'P', '117.64654058086', '35.51201963664', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371327, '莒南县', 'J', '118.84154077027', '35.180811631788', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371328, '蒙阴县', 'M', '117.95141460145', '35.716347166232', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371329, '临沭县', 'L', '118.6574945001', '34.926018591491', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371371, '临沂高新技术产业开发区', 'L', '118.27105074598', '34.991223857705', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371372, '临沂经济技术开发区', 'L', '118.41614315832', '35.028440855401', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371373, '临沂临港经济开发区', 'L', '119.09098821173', '35.192676079483', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371402, '德城区', 'D', '116.30544896637', '37.456993283021', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371403, '陵城区', 'L', '116.58940001434', '37.347132434581', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371422, '宁津县', 'N', '116.80653761374', '37.658018745855', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371423, '庆云县', 'Q', '117.39145244825', '37.781585318857', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371424, '临邑县', 'L', '116.87340370302', '37.196169366727', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371425, '齐河县', 'Q', '116.76938747073', '36.78994480667', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371426, '平原县', 'P', '116.44050470827', '37.171221463312', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371427, '夏津县', 'X', '116.00853411226', '36.954154863323', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371428, '武城县', 'W', '116.07550629142', '37.219222080288', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371471, '德州经济技术开发区', 'D', '116.36555674397', '37.441308454576', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371472, '德州运河经济开发区', 'D', '116.36555674397', '37.441308454576', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371481, '乐陵市', 'L', '117.23840643173', '37.73592450081', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371482, '禹城市', 'Y', '116.64437110138', '36.940242008766', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371502, '东昌府区', 'D', '115.99458657176', '36.440377840732', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371521, '阳谷县', 'Y', '115.79839557041', '36.120815514687', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371522, '莘县', 'S', '115.67739687246', '36.239907120546', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371523, '茌平县', 'C', '116.26145544215', '36.586785068842', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371524, '东阿县', 'D', '116.25449294564', '36.340957707761', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371525, '冠县', 'G', '115.44939579504', '36.490243225394', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371526, '高唐县', 'G', '116.23560427568', '36.851591084095', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371581, '临清市', 'L', '115.71146960045', '36.844289186694', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371702, '牡丹区', 'M', '115.42344303021', '35.257018176069', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371703, '定陶区', 'D', '115.57943737524', '35.077275179757', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371721, '曹县', 'C', '115.54845724362', '34.831809348415', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371722, '单县', 'D', '116.11158367799', '34.784658433692', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371723, '成武县', 'C', '115.89651900839', '34.95860565496', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371724, '巨野县', 'J', '116.10159901224', '35.402062380609', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371725, '郓城县', 'Y', '115.95045057629', '35.605902319687', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371726, '鄄城县', 'J', '115.51660692346', '35.569204259881', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371728, '东明县', 'D', '115.09641733473', '35.295701692411', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371771, '菏泽经济技术开发区', 'H', '115.48754503343', '35.239407424766', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371772, '菏泽高新技术开发区', 'H', '115.48754503343', '35.239407424766', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410102, '中原区', 'Z', '113.61947551694', '34.754450781329', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410103, '二七区', 'E', '113.63141920734', '34.753438850454', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410104, '管城回族区', 'G', '113.6835246998', '34.759673874699', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410105, '金水区', 'J', '113.6664477324', '34.806070445662', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410106, '上街区', 'S', '113.29818225705', '34.822088918243', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410108, '惠济区', 'H', '113.62345527984', '34.873519885776', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410122, '中牟县', 'Z', '113.98248490573', '34.725010848924', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410171, '郑州经济技术开发区', 'Z', '113.77162403642', '34.724610916832', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410172, '郑州高新技术产业开发区', 'Z', '113.63793722229', '34.742959870174', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410173, '郑州航空港经济综合实验区', 'Z', '113.97018898974', '34.719717969385', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410181, '巩义市', 'G', '113.02843100495', '34.754096888697', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410182, '荥阳市', 'X', '113.38942279956', '34.793810500346', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410183, '新密市', 'X', '113.3973909491', '34.545897983445', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410184, '新郑市', 'X', '113.74643447195', '34.401766379106', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410185, '登封市', 'D', '113.05642283346', '34.45969746172', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410202, '龙亭区', 'L', '114.36141316646', '34.822035612506', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410203, '顺河回族区', 'S', '114.36739165912', '34.802241355559', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410204, '鼓楼区', 'G', '114.35440485636', '34.794874251914', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410205, '禹王台区', 'Y', '114.35439775975', '34.783472105917', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410212, '祥符区', 'X', '114.4475325479', '34.762739572224', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410221, '杞县', 'Q', '114.78959210474', '34.554856780687', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410222, '通许县', 'T', '114.47343590593', '34.486771802655', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410223, '尉氏县', 'W', '114.19956115086', '34.417228010354', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410225, '兰考县', 'L', '114.82746071249', '34.828492897238', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410302, '老城区', 'L', '112.47650356572', '34.689601063497', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410303, '西工区', 'X', '112.43439953731', '34.666767847513', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410304, '瀍河回族区', 'C', '112.50660380709', '34.685462421335', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410305, '涧西区', 'J', '112.4025520019', '34.663468974309', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410306, '吉利区', 'J', '112.59547847119', '34.907012657115', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410311, '洛龙区', 'L', '112.47046928829', '34.624704713024', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410322, '孟津县', 'M', '112.45141766571', '34.831731570285', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410323, '新安县', 'X', '112.14060970841', '34.734383327344', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410324, '栾川县', 'L', '111.62242666651', '33.791822464323', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410325, '嵩县', 'S', '112.09240816187', '34.140721556406', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410326, '汝阳县', 'R', '112.47950327731', '34.159843364893', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410327, '宜阳县', 'Y', '112.17946537426', '34.541046942554', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410328, '洛宁县', 'L', '111.65958740952', '34.394984560215', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410329, '伊川县', 'Y', '112.43240745502', '34.427645796427', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410371, '洛阳高新技术产业开发区', 'L', '112.45942129831', '34.624262779219', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410381, '偃师市', 'Y', '112.79642141885', '34.733796624013', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410402, '新华区', 'X', '113.30043988965', '33.743657151646', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410403, '卫东区', 'W', '113.34161111761', '33.7403756514', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410404, '石龙区', 'S', '112.9054552264', '33.904754268397', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410411, '湛河区', 'Z', '113.25051467449', '33.685790171047', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410421, '宝丰县', 'B', '113.06144723584', '33.874745598631', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410422, '叶县', 'Y', '113.36358241276', '33.632491674058', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410423, '鲁山县', 'L', '112.91443396963', '33.744878863452', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410425, '郏县', 'J', '113.21960622765', '33.977486289177', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410471, '平顶山高新技术产业开发区', 'P', '113.40808986384', '33.737612151054', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410472, '平顶山市新城区', 'P', '113.19952856052', '33.772050748691', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410481, '舞钢市', 'W', '113.53141031593', '33.299431105301', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410482, '汝州市', 'R', '112.85054971566', '34.172767788551', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410502, '文峰区', 'W', '114.36337398772', '36.096832748136', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410503, '北关区', 'B', '114.36238189912', '36.113131607765', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410505, '殷都区', 'Y', '114.29712997501', '36.135573231517', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410506, '龙安区', 'L', '114.3075931681', '36.08275278362', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410522, '安阳县', 'A', '114.23838187262', '36.218906964196', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410523, '汤阴县', 'T', '114.36340938096', '35.927643740225', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410526, '滑县', 'H', '114.52555316619', '35.581045400558', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410527, '内黄县', 'N', '114.90758875551', '35.976949668061', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410571, '安阳高新技术产业开发区', 'A', '114.39950042177', '36.105940984015', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410581, '林州市', 'L', '113.82559018908', '36.088853208448', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410602, '鹤山区', 'H', '114.16955478242', '35.960280248227', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410603, '山城区', 'S', '114.19062058561', '35.903369613292', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410611, '淇滨区', 'Q', '114.30559120444', '35.746952546289', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410621, '浚县', 'J', '114.55760785086', '35.681917305913', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410622, '淇县', 'Q', '114.2154897245', '35.627277020336', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410671, '鹤壁经济技术开发区', 'H', '114.30359364248', '35.7523574114', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410702, '红旗区', 'H', '113.88141583415', '35.310135512691', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410703, '卫滨区', 'W', '113.8724387977', '35.308459209602', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410704, '凤泉区', 'F', '113.91245884715', '35.375665060578', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410711, '牧野区', 'M', '113.91551290623', '35.321023486499', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410721, '新乡县', 'X', '113.81159378076', '35.196564408993', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410724, '获嘉县', 'H', '113.66341666994', '35.265809284161', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410725, '原阳县', 'Y', '113.94662374129', '35.071163864469', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410726, '延津县', 'Y', '114.21151175821', '35.147806510509', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410727, '封丘县', 'F', '114.42560616803', '35.046857531651', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410728, '长垣县', 'Z', '114.67560989146', '35.207198224565', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410771, '新乡高新技术产业开发区', 'X', '113.89511589149', '35.288196248852', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410772, '新乡经济技术开发区', 'X', '113.93360046733', '35.309639930337', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410773, '新乡市平原城乡一体化示范区', 'X', '113.93360046733', '35.309639930337', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410781, '卫辉市', 'W', '114.07160094452', '35.404068882145', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410782, '辉县市', 'H', '113.81157302991', '35.467957818376', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410802, '解放区', 'J', '113.23757179887', '35.246309807633', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410803, '中站区', 'Z', '113.18944759643', '35.242617103591', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410804, '马村区', 'M', '113.32854400634', '35.261894441723', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410811, '山阳区', 'S', '113.26048370971', '35.220272352977', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410821, '修武县', 'X', '113.45458192871', '35.229323482594', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410822, '博爱县', 'B', '113.07047799096', '35.177308063756', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410823, '武陟县', 'W', '113.40839582041', '35.105838449217', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410825, '温县', 'W', '113.08656906807', '34.946135492247', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410871, '焦作城乡一体化示范区', 'J', '113.24854783457', '35.220963254039', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410882, '沁阳市', 'Q', '112.95751688155', '35.093785732346', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410883, '孟州市', 'M', '112.79739491254', '34.913597817886', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410902, '华龙区', 'H', '115.0804129441', '35.783632884536', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410922, '清丰县', 'Q', '115.11047186341', '35.891308168277', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410923, '南乐县', 'N', '115.21138615695', '36.076030832875', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410926, '范县', 'F', '115.51058621044', '35.857655087719', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410927, '台前县', 'T', '115.87856816938', '35.975012712521', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410928, '濮阳县', 'P', '115.03558408559', '35.717888889375', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410971, '河南濮阳工业园区', 'H', '115.03559747034', '35.767593028906', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (410972, '濮阳经济技术开发区', 'P', '115.03559747034', '35.767593028906', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411002, '魏都区', 'W', '113.82959564352', '34.030861228003', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411003, '建安区', 'J', '113.82961513675', '34.129966976383', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411024, '鄢陵县', 'Y', '114.18561980866', '34.107963250311', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411025, '襄城县', 'X', '113.51343127013', '33.856967773678', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411071, '许昌经济技术开发区', 'X', '113.81237629469', '34.009184251036', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411081, '禹州市', 'Y', '113.49550522436', '34.146082195029', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411082, '长葛市', 'Z', '113.77442091063', '34.223016266284', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411102, '源汇区', 'Y', '113.99041352982', '33.578423262447', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411103, '郾城区', 'Y', '114.01339389154', '33.593415880865', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411104, '召陵区', 'Z', '114.1004665548', '33.592467538561', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411121, '舞阳县', 'W', '113.61549000488', '33.443577799934', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411122, '临颍县', 'L', '113.93757834379', '33.83269194793', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411171, '漯河经济技术开发区', 'L', '114.02342077765', '33.587710707102', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411202, '湖滨区', 'H', '111.19557389665', '34.775996792444', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411203, '陕州区', 'S', '111.10945065249', '34.726914801527', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411221, '渑池县', 'M', '111.76854234585', '34.773197042986', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411224, '卢氏县', 'L', '111.05456400617', '34.059924845299', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411271, '河南三门峡经济开发区', 'H', '111.16756986287', '34.791595599754', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411281, '义马市', 'Y', '111.88051478021', '34.753028009473', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411282, '灵宝市', 'L', '110.90040831286', '34.523142624164', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411302, '宛城区', 'W', '112.54645416663', '33.009870040626', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411303, '卧龙区', 'W', '112.54146183376', '32.992483797527', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411321, '南召县', 'N', '112.43542522255', '33.496185804625', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411322, '方城县', 'F', '113.0185027528', '33.260539455832', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411323, '西峡县', 'X', '111.48039809758', '33.313316115292', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411324, '镇平县', 'Z', '112.24154448331', '33.039718529225', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411325, '内乡县', 'N', '111.85542528697', '33.051203105476', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411326, '淅川县', 'X', '111.49743203615', '33.144185260027', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411327, '社旗县', 'S', '112.9544934547', '33.062236685935', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411328, '唐河县', 'T', '112.81342436589', '32.687720660005', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411329, '新野县', 'X', '112.36654962384', '32.526631778818', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411330, '桐柏县', 'T', '113.43447273106', '32.385130754956', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411371, '南阳高新技术产业开发区', 'N', '112.53450131351', '32.996562204651', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411372, '南阳市城乡一体化示范区', 'N', '112.53450131351', '32.996562204651', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411381, '邓州市', 'D', '112.09342010302', '32.69391743997', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411402, '梁园区', 'L', '115.62060204557', '34.449471246294', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411403, '睢阳区', 'S', '115.65947594702', '34.394151920479', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411421, '民权县', 'M', '115.15457605887', '34.652478726537', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411422, '睢县', 'S', '115.07841089061', '34.451616965409', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411423, '宁陵县', 'N', '115.32041843737', '34.46663402766', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411424, '柘城县', 'Z', '115.31243456749', '34.097360212415', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411425, '虞城县', 'Y', '115.83447295698', '34.405331502097', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411426, '夏邑县', 'X', '116.13751236823', '34.243523472378', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411471, '豫东综合物流产业聚集区', 'Y', '115.66244933826', '34.420201665859', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411472, '河南商丘经济开发区', 'H', '115.69827951116', '34.407726159442', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411481, '永城市', 'Y', '116.4555661476', '33.934801475851', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411502, '浉河区', 'S', '114.06558130947', '32.122554156884', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411503, '平桥区', 'P', '114.13240742415', '32.10732538611', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411521, '罗山县', 'L', '114.51952993791', '32.209150451838', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411522, '光山县', 'G', '114.92553303688', '32.015906879568', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411523, '新县', 'X', '114.88552475523', '31.649738468475', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411524, '商城县', 'S', '115.41351334076', '31.804345366903', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411525, '固始县', 'G', '115.66048788818', '32.174174379622', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411526, '潢川县', 'H', '115.05847075405', '32.137530716414', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411527, '淮滨县', 'H', '115.42643896891', '32.479469756663', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411528, '息县', 'X', '114.74745313225', '32.348955511715', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411571, '信阳高新技术产业开发区', 'X', '114.09748283305', '32.153014547531', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411602, '川汇区', 'C', '114.65760174056', '33.652997102814', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411621, '扶沟县', 'F', '114.40150984137', '34.065906253969', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411622, '西华县', 'X', '114.53559667094', '33.773215334922', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411623, '商水县', 'S', '114.61841594744', '33.548877475353', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411624, '沈丘县', 'S', '115.10545545595', '33.415691094059', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411625, '郸城县', 'D', '115.18347760136', '33.650827955049', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411626, '淮阳县', 'H', '114.89258615519', '33.737347183458', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411627, '太康县', 'T', '114.84438389', '34.070038382248', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411628, '鹿邑县', 'L', '115.4905852586', '33.867173290317', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411671, '河南周口经济开发区', 'H', '114.70348251482', '33.631828875702', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411681, '项城市', 'X', '114.88151400079', '33.47300744143', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411702, '驿城区', 'Y', '114.00038696674', '32.979519871982', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411721, '西平县', 'X', '114.02747357279', '33.393860997525', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411722, '上蔡县', 'S', '114.2704868624', '33.268511215884', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411723, '平舆县', 'P', '114.62542865923', '32.967982400438', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411724, '正阳县', 'Z', '114.39949655906', '32.611641077273', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411725, '确山县', 'Q', '114.03249501076', '32.808175692984', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411726, '泌阳县', 'M', '113.33355798837', '32.729730650435', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411727, '汝南县', 'R', '114.36940889397', '33.013140881992', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411728, '遂平县', 'S', '114.0194414639', '33.151971399579', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411729, '新蔡县', 'X', '114.99246928382', '32.755268867306', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (411771, '河南驻马店经济开发区', 'H', '114.02847078173', '33.017842416744', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (419001, '济源市', 'J', '112.60858070621', '35.072907226847', 419000, 3, 'tr_0 tr_410000 tr_419000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420102, '江岸区', 'J', '114.31657918761', '30.605402797562', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420103, '江汉区', 'J', '114.27750613182', '30.607282276827', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420104, '硚口区', 'Q', '114.22146031207', '30.587584340776', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420105, '汉阳区', 'H', '114.22544555464', '30.560052027443', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420106, '武昌区', 'W', '114.35362228468', '30.564860292785', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420107, '青山区', 'Q', '114.39149265697', '30.646593075543', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420111, '洪山区', 'H', '114.35045554602', '30.506333956808', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420112, '东西湖区', 'D', '114.14345873786', '30.625919818109', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420113, '汉南区', 'H', '114.09151485056', '30.314809120145', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420114, '蔡甸区', 'C', '114.03547963081', '30.588113621855', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420115, '江夏区', 'J', '114.32855126446', '30.381564218182', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420116, '黄陂区', 'H', '114.38245399676', '30.887533767835', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420117, '新洲区', 'X', '114.8075433929', '30.847243870523', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420202, '黄石港区', 'H', '115.07241748608', '30.229052639992', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420203, '西塞山区', 'X', '115.11648143744', '30.210695184118', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420204, '下陆区', 'X', '114.96741590247', '30.180046155273', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO hg_sys_provinces (id, title, pinyin, lng, lat, pid, level, tree, sort, status, created_at, updated_at) VALUES + (420205, '铁山区', 'T', '114.90757141821', '30.212250832587', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420222, '阳新县', 'Y', '115.22142677197', '29.836541808086', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420281, '大冶市', 'D', '114.98643626402', '30.101667800103', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420302, '茅箭区', 'M', '110.81958031019', '32.597286519104', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420303, '张湾区', 'Z', '110.77542410285', '32.65839954548', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420304, '郧阳区', 'Y', '110.81857654362', '32.840592413038', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420322, '郧西县', 'Y', '110.43247261847', '32.999167007536', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420323, '竹山县', 'Z', '110.23558156764', '32.230304060376', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420324, '竹溪县', 'Z', '109.72154249889', '32.324120048853', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420325, '房县', 'F', '110.74746155911', '32.061684964544', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420381, '丹江口市', 'D', '111.51953205848', '32.546252688501', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420502, '西陵区', 'X', '111.29255972053', '30.716749346598', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420503, '伍家岗区', 'W', '111.36742225597', '30.65073733526', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420504, '点军区', 'D', '111.27447135095', '30.69932951388', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420505, '猇亭区', 'X', '111.44157378259', '30.536465982707', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420506, '夷陵区', 'Y', '111.33252973436', '30.774833327298', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420525, '远安县', 'Y', '111.64653035927', '31.066627841578', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420526, '兴山县', 'X', '110.75344607041', '31.354463517716', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420527, '秭归县', 'Z', '110.98444937468', '30.831931643216', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420528, '长阳土家族自治县', 'Z', '111.21350712887', '30.478645783056', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420529, '五峰土家族自治县', 'W', '111.05258063744', '30.171156151026', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420581, '宜都市', 'Y', '111.45651583712', '30.384404274314', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420582, '当阳市', 'D', '111.79456850223', '30.826989050281', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420583, '枝江市', 'Z', '111.76653975337', '30.431730676998', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420602, '襄城区', 'X', '112.14057206941', '32.016174618141', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420606, '樊城区', 'F', '112.14259891613', '32.050572374692', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420607, '襄州区', 'X', '112.21843413678', '32.093375783399', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420624, '南漳县', 'N', '111.84538618392', '31.781129706779', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420625, '谷城县', 'G', '111.65957564172', '32.268983068947', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420626, '保康县', 'B', '111.26744121203', '31.883847150262', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420682, '老河口市', 'L', '111.68155636908', '32.392459585271', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420683, '枣阳市', 'Z', '112.77847075951', '32.134729914319', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420684, '宜城市', 'Y', '112.26461144169', '31.725469730972', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420702, '梁子湖区', 'L', '114.69150657526', '30.105906774051', 420700, 3, 'tr_0 tr_420000 tr_420700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420703, '华容区', 'H', '114.73642634228', '30.540599527838', 420700, 3, 'tr_0 tr_420000 tr_420700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420704, '鄂城区', 'E', '114.89859968176', '30.406389456292', 420700, 3, 'tr_0 tr_420000 tr_420700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420802, '东宝区', 'D', '112.2083882066', '31.058429271365', 420800, 3, 'tr_0 tr_420000 tr_420800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420804, '掇刀区', 'D', '112.2144276942', '30.979910859804', 420800, 3, 'tr_0 tr_420000 tr_420800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420822, '沙洋县', 'S', '112.59548493899', '30.715314748831', 420800, 3, 'tr_0 tr_420000 tr_420800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420881, '钟祥市', 'Z', '112.59447102156', '31.174029854963', 420800, 3, 'tr_0 tr_420000 tr_420800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420882, '京山市', 'J', '113.12654806496', '31.024330601193', 420800, 3, 'tr_0 tr_420000 tr_420800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420902, '孝南区', 'X', '113.91748989699', '30.922977925049', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420921, '孝昌县', 'X', '114.00440859068', '31.264540493062', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420922, '大悟县', 'D', '114.13341253819', '31.567219806641', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420923, '云梦县', 'Y', '113.75941220183', '31.027218220752', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420981, '应城市', 'Y', '113.57956739635', '30.933976509913', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420982, '安陆市', 'A', '113.69558292415', '31.261414994286', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (420984, '汉川市', 'H', '113.8455490104', '30.666913578821', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421002, '沙市区', 'S', '112.26157741483', '30.316571904872', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421003, '荆州区', 'J', '112.19641397381', '30.358989490775', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421022, '公安县', 'G', '112.23650157584', '30.064400686806', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421023, '监利县', 'J', '112.91142023009', '29.845735162836', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421024, '江陵县', 'J', '112.43145201728', '30.048042984592', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421071, '荆州经济技术开发区', 'J', '112.19641397381', '30.358989490775', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421081, '石首市', 'S', '112.43141984371', '29.727033977407', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421083, '洪湖市', 'H', '113.48255290196', '29.83277032976', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421087, '松滋市', 'S', '111.77358031264', '30.175342235143', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421102, '黄州区', 'H', '114.88653238452', '30.440224145146', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421121, '团风县', 'T', '114.87852435023', '30.649367767215', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421122, '红安县', 'H', '114.6244256113', '31.294296714037', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421123, '罗田县', 'L', '115.4055471675', '30.788910495685', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421124, '英山县', 'Y', '115.68742160263', '30.741350084085', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421125, '浠水县', 'X', '115.27156903289', '30.457460842265', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421126, '蕲春县', 'Q', '115.4423985341', '30.232535499734', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421127, '黄梅县', 'H', '115.95046198477', '30.076605056821', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421171, '龙感湖管理区', 'L', '116.01030250647', '29.879697031911', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421181, '麻城市', 'M', '115.01656174777', '31.176995837411', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421182, '武穴市', 'W', '115.56739216105', '29.850441430483', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421202, '咸安区', 'X', '114.30456990606', '29.858153915154', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421221, '嘉鱼县', 'J', '113.94557046336', '29.976353520898', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421222, '通城县', 'T', '113.82356790903', '29.250857930222', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421223, '崇阳县', 'C', '114.04656290943', '29.561333782271', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421224, '通山县', 'T', '114.48939330027', '29.612634338058', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421281, '赤壁市', 'C', '113.90643686179', '29.730665997526', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421303, '曾都区', 'C', '113.3775133346', '31.722122861271', 421300, 3, 'tr_0 tr_420000 tr_421300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421321, '随县', 'S', '113.3064583569', '31.859971678258', 421300, 3, 'tr_0 tr_420000 tr_421300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (421381, '广水市', 'G', '113.83259337884', '31.622476038007', 421300, 3, 'tr_0 tr_420000 tr_421300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (422801, '恩施市', 'E', '109.48655026901', '30.301037143741', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (422802, '利川市', 'L', '108.94248057756', '30.29720344368', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (422822, '建始县', 'J', '109.72855610899', '30.607907026319', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (422823, '巴东县', 'B', '110.34757529184', '31.04806424896', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (422825, '宣恩县', 'X', '109.49756797283', '29.99260392208', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (422826, '咸丰县', 'X', '109.14660773562', '29.671077652358', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (422827, '来凤县', 'L', '109.41349484153', '29.499443572607', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (422828, '鹤峰县', 'H', '110.04042423301', '29.896116483403', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (429004, '仙桃市', 'X', '113.46159059813', '30.368271921725', 429000, 3, 'tr_0 tr_420000 tr_429000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (429005, '潜江市', 'Q', '112.90547409082', '30.408357932419', 429000, 3, 'tr_0 tr_420000 tr_429000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (429006, '天门市', 'T', '113.17240916633', '30.669621830099', 429000, 3, 'tr_0 tr_420000 tr_429000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (429021, '神农架林区', 'S', '110.6825248504', '31.750496011246', 429000, 3, 'tr_0 tr_420000 tr_429000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371602, '滨城区', 'B', '118.02660385061', '37.436843207744', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371603, '沾化区', 'Z', '118.10545441336', '37.705298106724', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371621, '惠民县', 'H', '117.5165096905', '37.49580310894', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371622, '阳信县', 'Y', '117.58443703791', '37.647338034957', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371623, '无棣县', 'W', '117.63245748606', '37.777567312086', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371625, '博兴县', 'B', '118.11749269533', '37.160477277651', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (371681, '邹平市', 'Z', '117.74947848722', '36.870032216697', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430202, '荷塘区', 'H', '113.18045222007', '27.862155809141', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430203, '芦淞区', 'L', '113.15841867236', '27.791508825947', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430204, '石峰区', 'S', '113.12456791567', '27.880705165595', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430211, '天元区', 'T', '113.08954055842', '27.833083519485', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430212, '渌口区', 'L', '113.15042671773', '27.704322804857', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430223, '攸县', 'Y', '113.35157834169', '27.005771565213', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430224, '茶陵县', 'C', '113.54547165714', '26.78358911036', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430225, '炎陵县', 'Y', '113.77941879832', '26.496060691599', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430271, '云龙示范区', 'Y', '113.17446420357', '27.934854931886', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430281, '醴陵市', 'L', '113.50348315084', '27.652325149951', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430302, '雨湖区', 'Y', '112.91344959207', '27.862466785111', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430304, '岳塘区', 'Y', '112.97558942655', '27.877720506364', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430321, '湘潭县', 'X', '112.95750536884', '27.784982534656', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430371, '湖南湘潭高新技术产业园区', 'H', '112.95046418076', '27.835702227136', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430372, '湘潭昭山示范区', 'X', '113.01812844052', '27.97161027839', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430373, '湘潭九华示范区', 'X', '112.94707945543', '27.916546191684', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430381, '湘乡市', 'X', '112.54149155341', '27.740190553344', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430382, '韶山市', 'S', '112.53349932929', '27.921043749631', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430405, '珠晖区', 'Z', '112.62659414282', '26.900265361946', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430406, '雁峰区', 'Y', '112.62358823292', '26.89436829036', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430407, '石鼓区', 'S', '112.60452969339', '26.948961867165', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430408, '蒸湘区', 'Z', '112.57344401089', '26.917719877877', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430412, '南岳区', 'N', '112.74557434825', '27.238360474562', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430421, '衡阳县', 'H', '112.37755268433', '26.975294950861', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430422, '衡南县', 'H', '112.68440252779', '26.744531956772', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430423, '衡山县', 'H', '112.87556328771', '27.235996029656', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430424, '衡东县', 'H', '112.95949529521', '27.087042820265', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430426, '祁东县', 'Q', '112.09644737847', '26.805995255191', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430471, '衡阳综合保税区', 'H', '112.57844721326', '26.899576139189', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430472, '湖南衡阳高新技术产业园区', 'H', '112.57844721326', '26.899576139189', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430473, '湖南衡阳松木经济开发区', 'H', '112.57844721326', '26.899576139189', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430481, '耒阳市', 'L', '112.86659721058', '26.428065593928', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430482, '常宁市', 'C', '112.40556050266', '26.426720432257', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430502, '双清区', 'S', '111.50344150643', '27.239108783297', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430503, '大祥区', 'D', '111.44552828921', '27.227013968694', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430511, '北塔区', 'B', '111.45849694619', '27.251536276174', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430521, '邵东县', 'S', '111.75049070296', '27.264507471566', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430522, '新邵县', 'X', '111.46444938799', '27.32713173916', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430523, '邵阳县', 'S', '111.28050768064', '26.996528332196', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430524, '隆回县', 'L', '111.03950668528', '27.119946440019', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430525, '洞口县', 'D', '110.58257909625', '27.065975437799', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430527, '绥宁县', 'S', '110.16241987038', '26.588422719333', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430528, '新宁县', 'X', '110.86349072744', '26.439723697954', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430529, '城步苗族自治县', 'C', '110.32853713032', '26.396203220078', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430581, '武冈市', 'W', '110.63840761588', '26.732898572992', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430602, '岳阳楼区', 'Y', '113.13648070435', '29.377995036881', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430603, '云溪区', 'Y', '113.27840659691', '29.479907141133', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430611, '君山区', 'J', '113.0125171491', '29.467129185832', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430621, '岳阳县', 'Y', '113.1225444825', '29.150269316045', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430623, '华容县', 'H', '112.54746151216', '29.536286434382', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430624, '湘阴县', 'X', '112.88952187736', '28.676676377581', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430626, '平江县', 'P', '113.58760362284', '28.707564248115', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430671, '岳阳市屈原管理区', 'Y', '112.92259003029', '28.866288191728', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430681, '汨罗市', 'M', '113.07349286947', '28.812454694812', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430682, '临湘市', 'L', '113.45656151', '29.482801373395', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430702, '武陵区', 'W', '111.68954489616', '29.060783476578', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430703, '鼎城区', 'D', '111.68752209182', '29.024443397066', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430721, '安乡县', 'A', '112.1775061558', '29.41732043222', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430722, '汉寿县', 'H', '111.97641193356', '28.912287603085', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430723, '澧县', 'L', '111.76553354736', '29.638946004609', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430724, '临澧县', 'L', '111.65358500797', '29.446543990119', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430725, '桃源县', 'T', '111.49540733145', '28.908694006999', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430726, '石门县', 'S', '111.38645140702', '29.59036596665', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430771, '常德市西洞庭管理区', 'C', '112.0093067782', '29.197804478833', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430781, '津市市', 'J', '111.88451734602', '29.611258543007', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430802, '永定区', 'Y', '110.54443192397', '29.126190558381', 430800, 3, 'tr_0 tr_430000 tr_430800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430811, '武陵源区', 'W', '110.5574989454', '29.351681136671', 430800, 3, 'tr_0 tr_430000 tr_430800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430821, '慈利县', 'C', '111.14547125235', '29.435986725969', 430800, 3, 'tr_0 tr_430000 tr_430800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430822, '桑植县', 'S', '110.17041335213', '29.405923219415', 430800, 3, 'tr_0 tr_430000 tr_430800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430902, '资阳区', 'Z', '112.33043548238', '28.597234549737', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430903, '赫山区', 'H', '112.38059794001', '28.584983567573', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430921, '南县', 'N', '112.40254156734', '29.367069853363', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430922, '桃江县', 'T', '112.16254146398', '28.523870869898', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430923, '安化县', 'A', '111.21949270432', '28.380053748765', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430971, '益阳市大通湖管理区', 'Y', '112.65023278281', '29.193681230112', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430972, '湖南益阳高新技术产业园区', 'H', '112.3715604476', '28.816150235875', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430981, '沅江市', 'Y', '112.36053222035', '28.850233588583', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431002, '北湖区', 'B', '113.01748199382', '25.79081459434', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431003, '苏仙区', 'S', '113.04842340846', '25.806737374104', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431021, '桂阳县', 'G', '112.74056036622', '25.759775327893', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431022, '宜章县', 'Y', '112.95547924076', '25.405713969356', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431023, '永兴县', 'Y', '113.12253316386', '26.132968478533', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431024, '嘉禾县', 'J', '112.37558377831', '25.593421718268', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431025, '临武县', 'L', '112.57041115183', '25.282527010969', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431026, '汝城县', 'R', '113.69154466692', '25.556056733978', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431027, '桂东县', 'G', '113.9515936018', '26.083173927327', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431028, '安仁县', 'A', '113.27542359381', '26.715682788508', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431081, '资兴市', 'Z', '113.24255612233', '25.981873602722', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431102, '零陵区', 'L', '111.63750237493', '26.227682089779', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431103, '冷水滩区', 'L', '111.59842608526', '26.467705510832', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431121, '祁阳县', 'Q', '111.84742029288', '26.586434994948', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431122, '东安县', 'D', '111.32354235354', '26.398288039365', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431123, '双牌县', 'S', '111.6675938129', '25.967169239803', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431124, '道县', 'D', '111.60740437934', '25.53252996283', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431125, '江永县', 'J', '111.35043663236', '25.279720667918', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431126, '宁远县', 'N', '111.95245340697', '25.57705193746', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431127, '蓝山县', 'L', '112.20343493586', '25.37593472464', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431128, '新田县', 'X', '112.21040920018', '25.909825802754', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431129, '江华瑶族自治县', 'J', '111.58545203845', '25.191348924015', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431171, '永州经济技术开发区', 'Y', '111.61945505792', '26.4258641179', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431172, '永州市金洞管理区', 'Y', '112.09909809837', '26.297256941493', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431173, '永州市回龙圩管理区', 'Y', '111.35307783022', '25.173038319623', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431202, '鹤城区', 'H', '110.04639994092', '27.585225763164', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431221, '中方县', 'Z', '109.95146189432', '27.44608117406', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431222, '沅陵县', 'Y', '110.40043076602', '28.459018102626', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431223, '辰溪县', 'C', '110.19048661755', '28.012605313813', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431224, '溆浦县', 'X', '110.60155112895', '27.913963373886', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431225, '会同县', 'H', '109.74158556792', '26.893383817274', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431226, '麻阳苗族自治县', 'M', '109.80943628984', '27.87193016295', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431227, '新晃侗族自治县', 'X', '109.18147151144', '27.358782968573', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431228, '芷江侗族自治县', 'Z', '109.6914022696', '27.449513277765', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431229, '靖州苗族侗族自治县', 'J', '109.70245160703', '26.581321351066', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431230, '通道侗族自治县', 'T', '109.79044548256', '26.164219864712', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431271, '怀化市洪江管理区', 'H', '109.8435098263', '27.215077093932', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431281, '洪江市', 'H', '109.8435098263', '27.215077093932', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431302, '娄星区', 'L', '112.00855842504', '27.735604842109', 431300, 3, 'tr_0 tr_430000 tr_431300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431321, '双峰县', 'S', '112.18146049666', '27.462982658573', 431300, 3, 'tr_0 tr_430000 tr_431300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431322, '新化县', 'X', '111.334515335', '27.732666751066', 431300, 3, 'tr_0 tr_430000 tr_431300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431381, '冷水江市', 'L', '111.44153972291', '27.692058848958', 431300, 3, 'tr_0 tr_430000 tr_431300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (431382, '涟源市', 'L', '111.67056199396', '27.698167532255', 431300, 3, 'tr_0 tr_430000 tr_431300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (433101, '吉首市', 'J', '109.70444880967', '28.267493127593', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (433122, '泸溪县', 'L', '110.22659921769', '28.221873097569', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (433123, '凤凰县', 'F', '109.6055266883', '27.953847809726', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (433124, '花垣县', 'H', '109.48856183128', '28.577909934397', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (433125, '保靖县', 'B', '109.66647357306', '28.705968872486', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (433126, '古丈县', 'G', '109.95750740057', '28.623083527843', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (433127, '永顺县', 'Y', '109.86358578665', '28.985774485682', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (433130, '龙山县', 'L', '109.45041573696', '29.464121765857', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (433172, '湖南吉首经济开发区', 'H', '109.70444880967', '28.267493127593', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (433173, '湖南永顺经济开发区', 'H', '109.86358578665', '28.985774485682', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440103, '荔湾区', 'L', '113.25050226337', '23.131791134975', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440104, '越秀区', 'Y', '113.273426481', '23.135260120148', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440105, '海珠区', 'H', '113.32353998097', '23.088981296648', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440106, '天河区', 'T', '113.36850942428', '23.130357835105', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440111, '白云区', 'B', '113.27943309062', '23.164316834456', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440112, '黄埔区', 'H', '113.48707083969', '23.187491541425', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440113, '番禺区', 'F', '113.39046958043', '22.943830731518', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440114, '花都区', 'H', '113.22657580629', '23.411161504876', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440115, '南沙区', 'N', '113.53143554372', '22.807929296528', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440117, '从化区', 'C', '113.59358543922', '23.553985922578', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440118, '增城区', 'Z', '113.8175456689', '23.266592400631', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440203, '武江区', 'W', '113.59455578884', '24.798486030733', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440204, '浈江区', 'Z', '113.61747740137', '24.810413749784', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440205, '曲江区', 'Q', '113.61150106465', '24.68840784638', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440222, '始兴县', 'S', '114.06856735205', '24.958558154346', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440224, '仁化县', 'R', '113.75544293443', '25.092287524428', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440229, '翁源县', 'W', '114.13642723669', '24.356594490867', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440232, '乳源瑶族自治县', 'R', '113.28243136492', '24.782333322942', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440233, '新丰县', 'X', '114.21351173078', '24.065546505164', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440281, '乐昌市', 'L', '113.3545786821', '25.135591561195', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440282, '南雄市', 'N', '114.31857889065', '25.123526537362', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440303, '罗湖区', 'L', '114.13743190157', '22.554484875856', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440304, '福田区', 'F', '114.06154700466', '22.528465912072', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440305, '南山区', 'N', '113.93653916925', '22.538500195784', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440306, '宝安区', 'B', '113.89042744066', '22.560032908925', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440307, '龙岗区', 'L', '114.25445487896', '22.726016550781', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440308, '盐田区', 'Y', '114.2434301551', '22.563437914836', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440309, '龙华区', 'L', '114.04852876121', '22.757596649222', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440310, '坪山区', 'P', '114.35047403625', '22.716233464749', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440311, '光明区', 'G', '113.94256006193', '22.754465883635', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440402, '香洲区', 'X', '113.55047243408', '22.273003861799', 440400, 3, 'tr_0 tr_440000 tr_440400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440403, '斗门区', 'D', '113.30346725453', '22.215515662229', 440400, 3, 'tr_0 tr_440000 tr_440400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440404, '金湾区', 'J', '113.36951705357', '22.152576780675', 440400, 3, 'tr_0 tr_440000 tr_440400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440507, '龙湖区', 'L', '116.72352464693', '23.377775780628', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440511, '金平区', 'J', '116.70955006744', '23.371750385773', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440512, '濠江区', 'H', '116.73351658895', '23.291546359757', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440513, '潮阳区', 'C', '116.6085145027', '23.270854956943', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440514, '潮南区', 'C', '116.43949131427', '23.256341432673', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440515, '澄海区', 'C', '116.76242504839', '23.472341401523', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440523, '南澳县', 'N', '117.03049603113', '23.427812045946', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440604, '禅城区', 'C', '113.12950518241', '23.015374368816', 440600, 3, 'tr_0 tr_440000 tr_440600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440605, '南海区', 'N', '113.14944567828', '23.035011446003', 440600, 3, 'tr_0 tr_440000 tr_440600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440606, '顺德区', 'S', '113.30045343954', '22.810453426795', 440600, 3, 'tr_0 tr_440000 tr_440600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440607, '三水区', 'S', '112.90347085515', '23.161920493984', 440600, 3, 'tr_0 tr_440000 tr_440600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440608, '高明区', 'G', '112.89947240749', '22.90634960163', 440600, 3, 'tr_0 tr_440000 tr_440600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440703, '蓬江区', 'P', '113.08454642894', '22.601065786023', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440704, '江海区', 'J', '113.11755718015', '22.566115451824', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440705, '新会区', 'X', '113.03845482239', '22.46511306052', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440781, '台山市', 'T', '112.80044482505', '22.257923470251', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440783, '开平市', 'K', '112.70446429491', '22.382499490201', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440784, '鹤山市', 'H', '112.97052666653', '22.771169431377', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440785, '恩平市', 'E', '112.31143757848', '22.189035201534', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440802, '赤坎区', 'C', '110.37253254096', '21.272134812703', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440803, '霞山区', 'X', '110.40442535096', '21.198227185303', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440804, '坡头区', 'P', '110.46256709711', '21.250376738599', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440811, '麻章区', 'M', '110.34057918516', '21.269188766567', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440823, '遂溪县', 'S', '110.25651530642', '21.383102962029', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440825, '徐闻县', 'X', '110.18247274427', '20.331723686702', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440881, '廉江市', 'L', '110.29244770646', '21.615816495305', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440882, '雷州市', 'L', '110.10258050648', '20.919880592716', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440883, '吴川市', 'W', '110.78645034015', '21.447262768557', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440902, '茂南区', 'M', '110.92554576188', '21.647152082304', 440900, 3, 'tr_0 tr_440000 tr_440900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440904, '电白区', 'D', '111.02047123221', '21.520351188198', 440900, 3, 'tr_0 tr_440000 tr_440900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440981, '高州市', 'G', '110.85947386452', '21.924048896771', 440900, 3, 'tr_0 tr_440000 tr_440900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440982, '化州市', 'H', '110.6464310112', '21.67023109387', 440900, 3, 'tr_0 tr_440000 tr_440900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (440983, '信宜市', 'X', '110.95358169717', '22.36009314173', 440900, 3, 'tr_0 tr_440000 tr_440900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441202, '端州区', 'D', '112.49156022979', '23.057563726176', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441203, '鼎湖区', 'D', '112.57443448255', '23.164308112716', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441204, '高要区', 'G', '112.46444604577', '23.031895546866', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441223, '广宁县', 'G', '112.44742387501', '23.641035726333', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441224, '怀集县', 'H', '112.19146878783', '23.917842129185', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441225, '封开县', 'F', '111.51852585255', '23.429768921261', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441226, '德庆县', 'D', '111.79155377493', '23.15137330611', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441284, '四会市', 'S', '112.7405791408', '23.332381005175', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441302, '惠城区', 'H', '114.38949004962', '23.089725972544', 441300, 3, 'tr_0 tr_440000 tr_441300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441303, '惠阳区', 'H', '114.46346443037', '22.794720878571', 441300, 3, 'tr_0 tr_440000 tr_441300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441322, '博罗县', 'B', '114.29657265143', '23.178805592433', 441300, 3, 'tr_0 tr_440000 tr_441300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441323, '惠东县', 'H', '114.72642585138', '22.991443112002', 441300, 3, 'tr_0 tr_440000 tr_441300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441324, '龙门县', 'L', '114.26143022124', '23.733838340062', 441300, 3, 'tr_0 tr_440000 tr_441300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441402, '梅江区', 'M', '116.12353597667', '24.315878769038', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441403, '梅县区', 'M', '116.08856170928', '24.270999314695', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441422, '大埔县', 'D', '116.70155892129', '24.353459468582', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441423, '丰顺县', 'F', '116.18845382094', '23.745738303255', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441424, '五华县', 'W', '115.78248548653', '23.938408899571', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441426, '平远县', 'P', '115.89747694601', '24.572414126137', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441427, '蕉岭县', 'J', '116.17743924793', '24.664992548662', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441481, '兴宁市', 'X', '115.73757946359', '24.142293779322', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441502, '城区', 'C', '115.37153074806', '22.784551839489', 441500, 3, 'tr_0 tr_440000 tr_441500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441521, '海丰县', 'H', '115.32944477561', '22.972744260966', 441500, 3, 'tr_0 tr_440000 tr_441500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441523, '陆河县', 'L', '115.66648271471', '23.30767707649', 441500, 3, 'tr_0 tr_440000 tr_441500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441581, '陆丰市', 'L', '115.78802975191', '22.967876723873', 441500, 3, 'tr_0 tr_440000 tr_441500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441602, '源城区', 'Y', '114.70843899033', '23.740298338347', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441621, '紫金县', 'Z', '115.19044771834', '23.641430253189', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441622, '龙川县', 'L', '115.26655548485', '24.105850721955', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441623, '连平县', 'L', '114.49544419635', '24.375808067414', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441624, '和平县', 'H', '114.9454488143', '24.448252767689', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441625, '东源县', 'D', '114.7535083252', '23.794257873114', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441702, '江城区', 'J', '111.96145451801', '21.868127886755', 441700, 3, 'tr_0 tr_440000 tr_441700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441704, '阳东区', 'Y', '112.01857947215', '21.873996844319', 441700, 3, 'tr_0 tr_440000 tr_441700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441721, '阳西县', 'Y', '111.62448107725', '21.758700627505', 441700, 3, 'tr_0 tr_440000 tr_441700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441781, '阳春市', 'Y', '111.7975361303', '22.17601480732', 441700, 3, 'tr_0 tr_440000 tr_441700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441802, '清城区', 'Q', '113.06947663537', '23.704022037925', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441803, '清新区', 'Q', '112.99155779512', '23.754270337093', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441821, '佛冈县', 'F', '113.53844124873', '23.885475421111', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441823, '阳山县', 'Y', '112.64751954085', '24.47094363588', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO hg_sys_provinces (id, title, pinyin, lng, lat, pid, level, tree, sort, status, created_at, updated_at) VALUES + (441825, '连山壮族瑶族自治县', 'L', '112.10042570409', '24.576845604093', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441826, '连南瑶族自治县', 'L', '112.29351728187', '24.73154858148', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441881, '英德市', 'Y', '113.42144297474', '24.191939355217', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441882, '连州市', 'L', '112.38357258887', '24.786466855047', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900003, '东城街道办事处', 'D', '113.78961542643', '23.033927867022', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900004, '南城街道办事处', 'N', '113.74972154669', '23.02491560037', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900005, '万江街道办事处', 'W', '113.70128466119', '23.044382337638', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900006, '莞城街道办事处', 'G', '113.7555643548', '23.04532373021', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900101, '石碣镇', 'S', '113.81395530616', '23.105172244651', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900102, '石龙镇', 'S', '113.84749077289', '23.115219876975', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900103, '茶山镇', 'C', '113.89350241139', '23.069002516534', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900104, '石排镇', 'S', '113.96394649371', '23.088334509001', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900105, '企石镇', 'Q', '114.04851828338', '23.070690716193', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900106, '横沥镇', 'H', '113.98801324096', '23.030051448767', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900107, '桥头镇', 'Q', '114.10677408198', '23.020458678747', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900108, '谢岗镇', 'X', '114.19511437465', '22.946513843008', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900109, '东坑镇', 'D', '113.95246820282', '23.002958656049', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900110, '常平镇', 'C', '114.02458867145', '22.979369177741', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900111, '寮步镇', 'L', '113.88349112257', '22.996428153649', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900112, '樟木头镇', 'Z', '114.11559876672', '22.912795269745', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900113, '大朗镇', 'D', '113.94820653279', '22.912348752542', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900114, '黄江镇', 'H', '114.00621531625', '22.872431801821', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900115, '清溪镇', 'Q', '114.18744982903', '22.841601621999', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900116, '塘厦镇', 'T', '114.08442795001', '22.811576132112', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900117, '凤岗镇', 'F', '114.17560299034', '22.722315801247', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900118, '大岭山镇', 'D', '113.83293372133', '22.903546239236', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900119, '长安镇', 'Z', '113.76998309965', '22.795308241444', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900121, '虎门镇', 'H', '113.68188667267', '22.818449805406', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900122, '厚街镇', 'H', '113.7081456375', '22.923357615893', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900123, '沙田镇', 'S', '113.60821459687', '22.907479676518', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900124, '道滘镇', 'D', '113.66267069882', '22.982801242639', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900125, '洪梅镇', 'H', '113.6125183112', '22.978946913376', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900126, '麻涌镇', 'M', '113.58837988097', '23.057083015858', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900127, '望牛墩镇', 'W', '113.64023583492', '23.047597838769', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900128, '中堂镇', 'Z', '113.65890566238', '23.096485679975', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900129, '高埗镇', 'G', '113.74213386638', '23.100270479205', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900401, '松山湖管委会', 'S', '113.90386183402', '22.928504587758', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900402, '东莞港', 'D', '113.75842045788', '23.027308411643', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (441900403, '东莞生态园', 'D', '113.93331900631', '23.069150651008', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000001, '石岐区街道办事处', 'S', '113.39476330111', '22.543405990677', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000002, '东区街道办事处', 'D', '113.39942236263', '22.522314670791', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000003, '火炬开发区街道办事处', 'H', '113.47638423802', '22.54191612433', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000004, '西区街道办事处', 'X', '113.34742851429', '22.557446683319', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000005, '南区街道办事处', 'N', '113.34166389111', '22.474593624741', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000006, '五桂山街道办事处', 'W', '113.40930659782', '22.451434375841', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000100, '小榄镇', 'X', '113.25710033351', '22.668653898989', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000101, '黄圃镇', 'H', '113.38940119784', '22.732151367196', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000102, '民众镇', 'M', '113.50030740281', '22.624234006676', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000103, '东凤镇', 'D', '113.26337563889', '22.696772350456', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000104, '东升镇', 'D', '113.31347763067', '22.605137527398', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000105, '古镇镇', 'G', '113.18899941194', '22.636034421686', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000106, '沙溪镇', 'S', '113.35710852331', '22.513668030794', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000107, '坦洲镇', 'T', '113.46831862593', '22.283731940242', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000108, '港口镇', 'G', '113.38354521878', '22.577121999043', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000109, '三角镇', 'S', '113.42740190231', '22.685663488493', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000110, '横栏镇', 'H', '113.24834255727', '22.574461443704', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000111, '南头镇', 'N', '113.29481042537', '22.721261074602', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000112, '阜沙镇', 'F', '113.34269477842', '22.666128002352', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000113, '南朗镇', 'N', '113.56057493505', '22.519486447352', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000114, '三乡镇', 'S', '113.42695556574', '22.371470122528', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000115, '板芙镇', 'B', '113.33339573359', '22.395149046719', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000116, '大涌镇', 'D', '113.29404791311', '22.483908949365', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (442000117, '神湾镇', 'S', '113.35331518036', '22.32576323421', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445102, '湘桥区', 'X', '116.63446160819', '23.680686981566', 445100, 3, 'tr_0 tr_440000 tr_445100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445103, '潮安区', 'C', '116.68452606069', '23.468357129831', 445100, 3, 'tr_0 tr_440000 tr_445100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445122, '饶平县', 'R', '117.01044917588', '23.670347111195', 445100, 3, 'tr_0 tr_440000 tr_445100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445202, '榕城区', 'R', '116.37351589492', '23.530746417966', 445200, 3, 'tr_0 tr_440000 tr_445200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445203, '揭东区', 'J', '116.41845578398', '23.572485187047', 445200, 3, 'tr_0 tr_440000 tr_445200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445222, '揭西县', 'J', '115.84856088728', '23.437299708209', 445200, 3, 'tr_0 tr_440000 tr_445200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445224, '惠来县', 'H', '116.30144448456', '23.039645374525', 445200, 3, 'tr_0 tr_440000 tr_445200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445281, '普宁市', 'P', '116.17244898117', '23.30363452186', 445200, 3, 'tr_0 tr_440000 tr_445200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430102, '芙蓉区', 'F', '113.03940774487', '28.191913247305', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430103, '天心区', 'T', '112.99659225852', '28.118211217441', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430104, '岳麓区', 'Y', '112.9374476441', '28.241488836473', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430105, '开福区', 'K', '112.99258491764', '28.261378687684', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430111, '雨花区', 'Y', '113.04242155986', '28.142232711654', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430112, '望城区', 'W', '112.8244661432', '28.367403020376', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430121, '长沙县', 'Z', '113.08755916596', '28.251818487944', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430181, '浏阳市', 'L', '113.64939823851', '28.169832216071', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (430182, '宁乡市', 'N', '112.55840691564', '28.284104536209', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445302, '云城区', 'Y', '112.05052923472', '22.933897802971', 445300, 3, 'tr_0 tr_440000 tr_445300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445303, '云安区', 'Y', '112.00956308992', '23.076892611911', 445300, 3, 'tr_0 tr_440000 tr_445300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445321, '新兴县', 'X', '112.23149683219', '22.701890082606', 445300, 3, 'tr_0 tr_440000 tr_445300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445322, '郁南县', 'Y', '111.54155382446', '23.240174042653', 445300, 3, 'tr_0 tr_440000 tr_445300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (445381, '罗定市', 'L', '111.57648048166', '22.774296060763', 445300, 3, 'tr_0 tr_440000 tr_445300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450102, '兴宁区', 'X', '108.37544497422', '22.860290951255', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450103, '青秀区', 'Q', '108.50143861009', '22.792227439631', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450105, '江南区', 'J', '108.27949435764', '22.787045753588', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450107, '西乡塘区', 'X', '108.31957243762', '22.839651509339', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450108, '良庆区', 'L', '108.32751579392', '22.76284928359', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450109, '邕宁区', 'Y', '108.49342024528', '22.76460044955', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450110, '武鸣区', 'W', '108.28151653318', '23.164515606911', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450123, '隆安县', 'L', '107.70257390338', '23.171585249828', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450124, '马山县', 'M', '108.18356215633', '23.71387772536', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450125, '上林县', 'S', '108.61145148078', '23.438518877663', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450126, '宾阳县', 'B', '108.81650237947', '23.223700543767', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450127, '横县', 'H', '109.2675678064', '22.685572608838', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450202, '城中区', 'C', '109.4174821502', '24.321314069891', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450203, '鱼峰区', 'Y', '109.44941628225', '24.318521699515', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450204, '柳南区', 'L', '109.39155193285', '24.341578870912', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450205, '柳北区', 'L', '109.40853179342', '24.367867017648', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450206, '柳江区', 'L', '109.33244423878', '24.26081496535', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450222, '柳城县', 'L', '109.25156152934', '24.656370391486', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450223, '鹿寨县', 'L', '109.75755447547', '24.478622266898', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450224, '融安县', 'R', '109.40456325934', '25.230511447128', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450225, '融水苗族自治县', 'R', '109.26256083115', '25.072076504109', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450226, '三江侗族自治县', 'S', '109.61454747223', '25.788830387788', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450302, '秀峰区', 'X', '110.27043670622', '25.27961848567', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450303, '叠彩区', 'D', '110.30846314624', '25.320233274843', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450304, '象山区', 'X', '110.28742267527', '25.267930010211', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450305, '七星区', 'Q', '110.32453805385', '25.2585670875', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450311, '雁山区', 'Y', '110.3154792716', '25.066213543917', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450312, '临桂区', 'L', '110.21858669186', '25.244301999271', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450321, '阳朔县', 'Y', '110.50347503171', '24.784519191433', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450323, '灵川县', 'L', '110.33253719492', '25.41554953076', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450324, '全州县', 'Q', '111.07956895508', '25.934343027361', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450325, '兴安县', 'X', '110.67851632807', '25.617567220037', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450326, '永福县', 'Y', '109.989590831', '24.985577973084', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450327, '灌阳县', 'G', '111.16755205093', '25.495120752051', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450328, '龙胜各族自治县', 'L', '110.01749399674', '25.804116784254', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450329, '资源县', 'Z', '110.6584391101', '26.048569077338', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450330, '平乐县', 'P', '110.64944626347', '24.63963212806', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450332, '恭城瑶族自治县', 'G', '110.8345596307', '24.837194365911', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450381, '荔浦市', 'L', '110.40143677836', '24.494121641923', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450403, '万秀区', 'W', '111.32751969101', '23.478845767296', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450405, '长洲区', 'Z', '111.28149914043', '23.491509584406', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450406, '龙圩区', 'L', '111.25344829326', '23.421414485718', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450421, '苍梧县', 'C', '111.55554663956', '23.845998205466', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450422, '藤县', 'T', '110.92149925488', '23.38100991555', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450423, '蒙山县', 'M', '110.53141700425', '24.200017445935', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450481, '岑溪市', 'C', '111.00143182659', '22.92462127872', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450502, '海城区', 'H', '109.12452136755', '21.481065838236', 450500, 3, 'tr_0 tr_450000 tr_450500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450503, '银海区', 'Y', '109.14654476441', '21.454768668895', 450500, 3, 'tr_0 tr_450000 tr_450500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450512, '铁山港区', 'T', '109.42847264862', '21.53529504285', 450500, 3, 'tr_0 tr_450000 tr_450500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450521, '合浦县', 'H', '109.2134386113', '21.667005735642', 450500, 3, 'tr_0 tr_450000 tr_450500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450602, '港口区', 'G', '108.38648254385', '21.649565586624', 450600, 3, 'tr_0 tr_450000 tr_450600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450603, '防城区', 'F', '108.36044848238', '21.775411305197', 450600, 3, 'tr_0 tr_450000 tr_450600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450621, '上思县', 'S', '107.99044264125', '22.15991408311', 450600, 3, 'tr_0 tr_450000 tr_450600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450681, '东兴市', 'D', '107.97748898597', '21.55361543358', 450600, 3, 'tr_0 tr_450000 tr_450600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450802, '港北区', 'G', '109.57843298566', '23.117563632764', 450800, 3, 'tr_0 tr_450000 tr_450800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450803, '港南区', 'G', '109.6065534515', '23.08123957836', 450800, 3, 'tr_0 tr_450000 tr_450800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450804, '覃塘区', 'T', '109.45942672936', '23.133251089213', 450800, 3, 'tr_0 tr_450000 tr_450800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450821, '平南县', 'P', '110.39845197864', '23.545506098828', 450800, 3, 'tr_0 tr_450000 tr_450800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450881, '桂平市', 'G', '110.08552599672', '23.400048883699', 450800, 3, 'tr_0 tr_450000 tr_450800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450902, '玉州区', 'Y', '110.15743140022', '22.634492736172', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450903, '福绵区', 'F', '110.08853765577', '22.563705412249', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450921, '容县', 'R', '110.56453016229', '22.863665599935', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450922, '陆川县', 'L', '110.27045619945', '22.327221527769', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450923, '博白县', 'B', '109.98255305648', '22.278674815493', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450924, '兴业县', 'X', '109.88155180701', '22.742267653423', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450981, '北流市', 'B', '110.36057016581', '22.713958021611', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451002, '右江区', 'Y', '106.62558913969', '23.907084503109', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451021, '田阳县', 'T', '106.9214125525', '23.742005722478', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451022, '田东县', 'T', '107.13249943541', '23.603129804015', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451023, '平果县', 'P', '107.59657106849', '23.334922742592', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451024, '德保县', 'D', '106.62158260728', '23.328994351286', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451026, '那坡县', 'N', '105.83942261017', '23.393793831292', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451027, '凌云县', 'L', '106.56841567705', '24.354015240604', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451028, '乐业县', 'L', '106.56342972215', '24.783216467053', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451029, '田林县', 'T', '106.23449791231', '24.300534611051', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451030, '西林县', 'X', '105.10049410469', '24.495667790362', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451031, '隆林各族自治县', 'L', '105.3504594704', '24.776813610296', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451081, '靖西市', 'J', '106.42445269708', '23.140125669019', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451102, '八步区', 'B', '111.55856737149', '24.417531040919', 451100, 3, 'tr_0 tr_450000 tr_451100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451103, '平桂区', 'P', '111.47841426578', '24.462001422773', 451100, 3, 'tr_0 tr_450000 tr_451100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451121, '昭平县', 'Z', '110.81757491928', '24.175106050636', 451100, 3, 'tr_0 tr_450000 tr_451100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451122, '钟山县', 'Z', '111.30958574015', '24.531673107939', 451100, 3, 'tr_0 tr_450000 tr_451100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451123, '富川瑶族自治县', 'F', '111.28451124863', '24.820159951323', 451100, 3, 'tr_0 tr_450000 tr_451100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451202, '金城江区', 'J', '108.04350707483', '24.695679382239', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451203, '宜州区', 'Y', '108.64353158748', '24.491084367739', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451221, '南丹县', 'N', '107.54748028934', '24.981849775485', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451222, '天峨县', 'T', '107.17845647579', '25.005664155232', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451223, '凤山县', 'F', '107.04841983631', '24.553217796777', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451224, '东兰县', 'D', '107.3805041595', '24.516871463381', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451225, '罗城仫佬族自治县', 'L', '108.91157445325', '24.783084996429', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451226, '环江毛南族自治县', 'H', '108.26444306917', '24.832087938551', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451227, '巴马瑶族自治县', 'B', '107.26648125302', '24.14726480427', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451228, '都安瑶族自治县', 'D', '108.11145804765', '23.937331261923', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451229, '大化瑶族自治县', 'D', '108.00441075294', '23.742818222963', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451302, '兴宾区', 'X', '109.24149907034', '23.733211038144', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451321, '忻城县', 'X', '108.67256239612', '24.071888636576', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451322, '象州县', 'X', '109.71146215028', '23.979680993271', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451323, '武宣县', 'W', '109.66944220328', '23.600404197633', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451324, '金秀瑶族自治县', 'J', '110.19550625891', '24.136319486486', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451381, '合山市', 'H', '108.89256576969', '23.81226007105', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451402, '江州区', 'J', '107.35953321738', '22.411245728018', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451421, '扶绥县', 'F', '107.91046515426', '22.641097136345', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451422, '宁明县', 'N', '107.08352381902', '22.145884844184', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451423, '龙州县', 'L', '106.86058190847', '22.348298905766', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451424, '大新县', 'D', '107.20755690312', '22.836229044406', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451425, '天等县', 'T', '107.14947264852', '23.08750581209', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (451481, '凭祥市', 'P', '106.77352361814', '22.100152592954', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460105, '秀英区', 'X', '110.30043588821', '20.013642385161', 460100, 3, 'tr_0 tr_460000 tr_460100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460106, '龙华区', 'L', '110.33554112854', '20.036320733521', 460100, 3, 'tr_0 tr_460000 tr_460100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460107, '琼山区', 'Q', '110.36052605901', '20.009150644491', 460100, 3, 'tr_0 tr_460000 tr_460100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460108, '美兰区', 'M', '110.37349839904', '20.034646217625', 460100, 3, 'tr_0 tr_460000 tr_460100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460202, '海棠区', 'H', '109.72350007292', '18.33787879371', 460200, 3, 'tr_0 tr_460000 tr_460200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460203, '吉阳区', 'J', '109.52055165827', '18.257057667262', 460200, 3, 'tr_0 tr_460000 tr_460200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460204, '天涯区', 'T', '109.46246255283', '18.306919633503', 460200, 3, 'tr_0 tr_460000 tr_460200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460205, '崖州区', 'Y', '109.22846124383', '18.44463053478', 460200, 3, 'tr_0 tr_460000 tr_460200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460321, '西沙群岛', 'X', '111.67308686126', '16.497085431044', 460300, 3, 'tr_0 tr_460000 tr_460300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460322, '南沙群岛', 'N', '112.66030170907', '4.9743661921368', 460300, 3, 'tr_0 tr_460000 tr_460300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460323, '中沙群岛的岛礁及其海域', 'Z', '112.34048204137', '16.838953334409', 460300, 3, 'tr_0 tr_460000 tr_460300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400100, '那大镇', 'N', '109.552961497', '19.52127763772', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400101, '和庆镇', 'H', '109.64738779153', '19.531275426074', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400102, '南丰镇', 'N', '109.6054369934', '19.346095790543', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400103, '大成镇', 'D', '109.42116531507', '19.548276240672', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400104, '雅星镇', 'Y', '109.19716320191', '19.517956948407', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400105, '兰洋镇', 'L', '109.67367138789', '19.466430878427', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400106, '光村镇', 'G', '109.50795789562', '19.809145677126', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400107, '木棠镇', 'M', '109.35673473687', '19.809926770596', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400108, '海头镇', 'H', '108.95966166166', '19.509695855917', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400109, '峨蔓镇', 'E', '109.30390924357', '19.863144800976', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400111, '王五镇', 'W', '109.33806829512', '19.645800769747', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400112, '白马井镇', 'B', '109.58745583569', '19.527146110044', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400113, '中和镇', 'Z', '109.35613533713', '19.749465537088', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400114, '排浦镇', 'P', '109.16975400269', '19.644673698003', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400115, '东成镇', 'D', '109.4680333127', '19.709924104042', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400116, '新州镇', 'X', '109.32260133284', '19.720234743232', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400499, '洋浦经济开发区', 'Y', '109.19229656623', '19.775218244804', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (460400500, '华南热作学院', 'H', '109.58745583569', '19.527146110044', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469001, '五指山市', 'W', '109.52354032071', '18.780994100706', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469002, '琼海市', 'Q', '110.48054452595', '19.264254019918', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469005, '文昌市', 'W', '110.80450870632', '19.549062083121', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469006, '万宁市', 'W', '110.39943436555', '18.800106988303', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469007, '东方市', 'D', '108.65856652679', '19.101104731289', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469021, '定安县', 'D', '104.36878601078', '31.589181642776', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469022, '屯昌县', 'T', '110.10857732457', '19.357374924278', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469023, '澄迈县', 'C', '110.01351091011', '19.744348671646', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469024, '临高县', 'L', '109.69744301483', '19.919474770278', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469025, '白沙黎族自治县', 'B', '109.45747066911', '19.231378733013', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469026, '昌江黎族自治县', 'C', '109.06246408734', '19.303997876684', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469027, '乐东黎族自治县', 'L', '109.18050798895', '18.755871493855', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469028, '陵水黎族自治县', 'L', '110.04446409255', '18.512331595699', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469029, '保亭黎族苗族自治县', 'B', '109.7034815143', '18.646909955376', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (469030, '琼中黎族苗族自治县', 'Q', '109.84451062847', '19.039163789181', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500101, '万州区', 'W', '108.4155583705', '30.813621636708', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500102, '涪陵区', 'F', '107.39641979754', '29.709278197979', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500103, '渝中区', 'Y', '106.57544006681', '29.559090182994', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500104, '大渡口区', 'D', '106.48853359011', '29.490107128556', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500105, '江北区', 'J', '112.85530302042', '35.520558754673', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500106, '沙坪坝区', 'S', '106.46446511093', '29.547192516541', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500107, '九龙坡区', 'J', '106.51755873943', '29.507927715553', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500108, '南岸区', 'N', '106.6684297786', '29.502683098835', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500109, '北碚区', 'B', '106.40356933975', '29.811602753904', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500110, '綦江区', 'Q', '106.65748419545', '29.034113748311', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500111, '大足区', 'D', '105.72840462545', '29.713113506077', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500112, '渝北区', 'Y', '106.6375590606', '29.723927343007', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500113, '巴南区', 'B', '106.54745425696', '29.40847473977', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500114, '黔江区', 'Q', '108.77759119835', '29.53881256766', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500115, '长寿区', 'Z', '107.08753107007', '29.863520067323', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500116, '江津区', 'J', '106.26559760838', '29.295884374465', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500117, '合川区', 'H', '106.28254108758', '29.978181239534', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500118, '永川区', 'Y', '105.93349936145', '29.362046335949', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500119, '南川区', 'N', '107.10558512437', '29.163478599606', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500120, '璧山区', 'B', '106.23347456267', '29.598346607316', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500151, '铜梁区', 'T', '106.06344949411', '29.850508778722', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500152, '潼南区', 'T', '105.84739903617', '30.197314239664', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500153, '荣昌区', 'R', '105.60141979928', '29.41130739669', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500154, '开州区', 'K', '108.39949765612', '31.166644113193', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500155, '梁平区', 'L', '107.77609725763', '30.660553255023', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500156, '武隆区', 'W', '112.85530302042', '35.520558754673', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500229, '城口县', 'C', '108.67161164256', '31.953390746293', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500230, '丰都县', 'F', '107.7374806182', '29.869412789214', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500231, '垫江县', 'D', '107.33956587472', '30.3332939685', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500233, '忠县', 'Z', '', '', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500235, '云阳县', 'Y', '108.7034475', '30.936611271975', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500236, '奉节县', 'F', '109.47047275631', '31.024601766549', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500237, '巫山县', 'W', '109.88554550703', '31.080518811736', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500238, '巫溪县', 'W', '109.576402559', '31.404880009858', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500240, '石柱土家族自治县', 'S', '108.12041416638', '30.006108697869', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500241, '秀山土家族苗族自治县', 'X', '109.01357389981', '28.453447864286', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500242, '酉阳土家族苗族自治县', 'Y', '108.7745860071', '28.847040258674', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (500243, '彭水苗族土家族自治县', 'P', '108.17257803588', '29.299462290443', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510104, '锦江区', 'J', '104.0895617566', '30.661904490317', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510105, '青羊区', 'Q', '104.06744547494', '30.680037807007', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510106, '金牛区', 'J', '104.05740358714', '30.697356042874', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510107, '武侯区', 'W', '104.04942447828', '30.648712685321', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510108, '成华区', 'C', '104.10859155035', '30.665589283983', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510112, '龙泉驿区', 'L', '104.28139696436', '30.562697841', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510113, '青白江区', 'Q', '104.25751245813', '30.884421372736', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510114, '新都区', 'X', '104.16539284504', '30.829407468191', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510115, '温江区', 'W', '103.86357306318', '30.688486836627', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510116, '双流区', 'S', '103.93039154227', '30.580399352821', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510117, '郫都区', 'P', '103.90544568809', '30.799537653573', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510121, '金堂县', 'J', '104.41844263262', '30.868358423946', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510129, '大邑县', 'D', '103.52752981767', '30.593155402402', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510131, '蒲江县', 'P', '103.51257132415', '30.202500428139', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510132, '新津县', 'X', '103.81743303795', '30.416363953297', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510181, '都江堰市', 'D', '103.65353360443', '30.994256893542', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510182, '彭州市', 'P', '103.96556137078', '30.995564002629', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510183, '邛崃市', 'Q', '103.47048112964', '30.416398600854', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510184, '崇州市', 'C', '103.67943336923', '30.636595891379', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510185, '简阳市', 'J', '104.55349406265', '30.417451491353', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510302, '自流井区', 'Z', '104.7834473259', '29.343498562348', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510303, '贡井区', 'G', '104.72155659154', '29.351476269522', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510304, '大安区', 'D', '104.78041635328', '29.369928541322', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510311, '沿滩区', 'Y', '104.88040907516', '29.278797205251', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510321, '荣县', 'R', '104.42345759121', '29.45180089858', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510322, '富顺县', 'F', '104.98149440603', '29.186886257831', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510402, '东区', 'D', '101.72554117091', '26.588033173333', 510400, 3, 'tr_0 tr_510000 tr_510400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510403, '西区', 'X', '101.72554117091', '26.588033173333', 510400, 3, 'tr_0 tr_510000 tr_510400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510411, '仁和区', 'R', '101.74444996291', '26.504019493295', 510400, 3, 'tr_0 tr_510000 tr_510400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510421, '米易县', 'M', '102.1164404304', '26.89696797612', 510400, 3, 'tr_0 tr_510000 tr_510400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510422, '盐边县', 'Y', '101.86049854831', '26.688767481964', 510400, 3, 'tr_0 tr_510000 tr_510400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510502, '江阳区', 'J', '105.44154513382', '28.884671972905', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510503, '纳溪区', 'N', '105.37740854586', '28.779359901658', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510504, '龙马潭区', 'L', '105.4445442166', '28.919012274486', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510521, '泸县', 'L', '105.38845608667', '29.157626295708', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510522, '合江县', 'H', '105.83843195885', '28.81779304284', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510524, '叙永县', 'X', '105.45150761142', '28.161714341911', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510525, '古蔺县', 'G', '105.81947079565', '28.044745368759', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510603, '旌阳区', 'J', '104.42343882821', '31.148596291553', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510604, '罗江区', 'L', '104.51741416083', '31.324178639826', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510623, '中江县', 'Z', '104.68553015058', '31.038953695302', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510681, '广汉市', 'G', '104.28842189311', '30.982415239743', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510682, '什邡市', 'S', '104.17442710355', '31.132889048238', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510683, '绵竹市', 'M', '104.227609305', '31.343592258211', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510703, '涪城区', 'F', '104.76342033491', '31.46131438858', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510704, '游仙区', 'Y', '104.77242899171', '31.479904474058', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510705, '安州区', 'A', '104.5735550213', '31.540750527876', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510722, '三台县', 'S', '105.10148979833', '31.101585571238', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510723, '盐亭县', 'Y', '105.39550321547', '31.214318764837', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510725, '梓潼县', 'Z', '105.17756684281', '31.648313467681', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510726, '北川羌族自治县', 'B', '104.36158555316', '31.963084103415', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510727, '平武县', 'P', '104.53542150325', '32.414681977696', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510781, '江油市', 'J', '104.75241160088', '31.784128193388', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510802, '利州区', 'L', '105.85242622329', '32.440207812726', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510811, '昭化区', 'Z', '105.96941892782', '32.329618490159', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510812, '朝天区', 'C', '105.8965888086', '32.649726240308', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO hg_sys_provinces (id, title, pinyin, lng, lat, pid, level, tree, sort, status, created_at, updated_at) VALUES + (510821, '旺苍县', 'W', '106.29649124536', '32.235097383079', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510822, '青川县', 'Q', '105.24540705459', '32.5816168573', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510823, '剑阁县', 'J', '105.53157601887', '32.293478516773', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510824, '苍溪县', 'C', '105.9414826146', '31.738684400617', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510903, '船山区', 'C', '105.5745228375', '30.531470607829', 510900, 3, 'tr_0 tr_510000 tr_510900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510904, '安居区', 'A', '105.46246730988', '30.361496469746', 510900, 3, 'tr_0 tr_510000 tr_510900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510921, '蓬溪县', 'P', '105.71344605411', '30.763751441791', 510900, 3, 'tr_0 tr_510000 tr_510900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510922, '射洪县', 'S', '105.39450950992', '30.877138522337', 510900, 3, 'tr_0 tr_510000 tr_510900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (510923, '大英县', 'D', '105.24340392313', '30.600810129921', 510900, 3, 'tr_0 tr_510000 tr_510900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511002, '市中区', 'S', '105.07457421786', '29.592710148736', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511011, '东兴区', 'D', '105.08254748773', '29.598485728583', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511024, '威远县', 'W', '104.6744982286', '29.533634931412', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511025, '资中县', 'Z', '104.85849482242', '29.770234032565', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511071, '内江经济开发区', 'N', '105.064588025', '29.58588653832', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511083, '隆昌市', 'L', '105.29457175243', '29.345244662083', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511102, '市中区', 'S', '103.76755865552', '29.561363941633', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511111, '沙湾区', 'S', '103.55643566073', '29.419272499245', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511112, '五通桥区', 'W', '103.82445508074', '29.413185014439', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511113, '金口河区', 'J', '103.08539389554', '29.250803570124', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511123, '犍为县', '', '', '', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511124, '井研县', 'J', '104.07651071353', '29.65730305908', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511126, '夹江县', 'J', '103.57841009994', '29.743846302985', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511129, '沐川县', 'M', '103.90846703743', '28.962888278216', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511132, '峨边彝族自治县', 'E', '103.26857725338', '29.236089109563', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511133, '马边彝族自治县', 'M', '103.55245419105', '28.841736014812', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511181, '峨眉山市', 'E', '103.4915455741', '29.606975527462', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511302, '顺庆区', 'S', '106.09841065838', '30.802753098595', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511303, '高坪区', 'G', '106.12554047291', '30.787254931592', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511304, '嘉陵区', 'J', '106.07843297265', '30.764895560139', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511321, '南部县', 'N', '106.04357826971', '31.353705301526', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511322, '营山县', 'Y', '106.57240802852', '31.083002970199', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511323, '蓬安县', 'P', '106.41848194209', '31.034630778271', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511324, '仪陇县', 'Y', '106.30943016844', '31.277597359981', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511325, '西充县', 'X', '105.90761137653', '31.000688020792', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511381, '阆中市', 'L', '106.01156526642', '31.56407455364', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511402, '东坡区', 'D', '103.83852480217', '30.048272134435', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511403, '彭山区', 'P', '103.87955823007', '30.19885441686', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511421, '仁寿县', 'R', '104.14047690443', '30.001663984301', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511423, '洪雅县', 'H', '103.37960224488', '29.910615837469', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511424, '丹棱县', 'D', '103.51958331729', '30.020362794872', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511425, '青神县', 'Q', '103.85355883179', '29.837054743717', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511502, '翠屏区', 'C', '104.62643798553', '28.772051773027', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511503, '南溪区', 'N', '104.97651330198', '28.851503648027', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511504, '叙州区', 'X', '104.53944275624', '28.696246394752', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511523, '江安县', 'J', '105.07359488519', '28.729609721855', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511524, '长宁县', 'Z', '104.92756445509', '28.588133452699', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511525, '高县', 'G', '104.52441132032', '28.442510804102', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511526, '珙县', 'G', '104.71557459549', '28.444319765248', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511527, '筠连县', 'Y', '104.51740642378', '28.170174457648', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511528, '兴文县', 'X', '105.24240230064', '28.309904884117', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511529, '屏山县', 'P', '104.35267533908', '28.834274966477', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511602, '广安区', 'G', '106.64853115608', '30.479768100142', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511603, '前锋区', 'Q', '106.90447959588', '30.506435157767', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511621, '岳池县', 'Y', '106.44641061972', '30.54411986458', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511622, '武胜县', 'W', '106.3024617431', '30.355495660378', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511623, '邻水县', 'L', '106.93640258896', '30.341072518332', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511681, '华蓥市', 'H', '106.78946181601', '30.396307084289', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511702, '通川区', 'T', '107.51144711201', '31.220931804105', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511703, '达川区', 'D', '107.51841059667', '31.202393360554', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511722, '宣汉县', 'X', '107.7335335663', '31.359754823662', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511723, '开江县', 'K', '107.87542487414', '31.089372149066', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511724, '大竹县', 'D', '107.21157970735', '30.74207661791', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511725, '渠县', 'Q', '106.97958296702', '30.842299283481', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511771, '达州经济开发区', 'D', '107.47459385898', '31.214307723927', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511781, '万源市', 'W', '108.04154069684', '32.087420847789', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511802, '雨城区', 'Y', '103.03957520533', '30.011061644393', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511803, '名山区', 'M', '103.1154857938', '30.075913663382', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511822, '荥经县', 'X', '102.85343551293', '29.799193512656', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511823, '汉源县', 'H', '102.65857589024', '29.350217385987', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511824, '石棉县', 'S', '102.36640453848', '29.23430487759', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511825, '天全县', 'T', '102.76453022767', '30.072472953275', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511826, '芦山县', 'L', '102.93452771831', '30.149873189563', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511827, '宝兴县', 'B', '102.82148423429', '30.374082112445', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511902, '巴州区', 'B', '106.77551310771', '31.857685602645', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511903, '恩阳区', 'E', '106.63558190249', '31.802614044176', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511921, '通江县', 'T', '107.25151684321', '31.917714346881', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511922, '南江县', 'N', '106.83448345088', '32.352531654165', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511923, '平昌县', 'P', '107.11059310023', '31.566185810095', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (511971, '巴中经济开发区', 'B', '106.75158530316', '31.872888585957', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (512002, '雁江区', 'Y', '104.65842441063', '30.123753456785', 512000, 3, 'tr_0 tr_510000 tr_512000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (512021, '安岳县', 'A', '105.34245423273', '30.103392734494', 512000, 3, 'tr_0 tr_510000 tr_512000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (512022, '乐至县', 'L', '105.02747697007', '30.282348346', 512000, 3, 'tr_0 tr_510000 tr_512000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513201, '马尔康市', 'M', '102.21350208208', '31.911747955648', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513221, '汶川县', 'W', '103.59651788422', '31.483005320468', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513222, '理县', 'L', '102.23141546175', '31.905511577267', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513223, '茂县', 'M', '102.23141546175', '31.905511577267', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513224, '松潘县', 'S', '103.61057968918', '32.661796559853', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513225, '九寨沟县', 'J', '104.24954673403', '33.257591509496', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513226, '金川县', 'J', '102.07061042122', '31.482005950337', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513227, '小金县', 'X', '102.36942635928', '31.002208697062', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513228, '黑水县', 'H', '102.99651735613', '32.067805449368', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513230, '壤塘县', 'R', '100.98558348726', '32.271093316269', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513231, '阿坝县', 'A', '101.71360970816', '32.908220918625', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513232, '若尔盖县', 'R', '102.97439065413', '33.584376654702', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513233, '红原县', 'H', '102.55061520946', '32.796605278762', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513301, '康定市', 'K', '101.96355522139', '30.004407384262', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513322, '泸定县', 'L', '102.24143209631', '29.920401664951', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513323, '丹巴县', 'D', '101.89643706759', '30.88476979933', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513324, '九龙县', 'J', '101.51341566718', '29.006431902925', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513325, '雅江县', 'Y', '101.02050035294', '30.037568967864', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513326, '道孚县', 'D', '101.13154034619', '30.985326277402', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513327, '炉霍县', 'L', '100.68239693357', '31.397991882882', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513328, '甘孜县', 'G', '99.999210350851', '31.628956694034', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513329, '新龙县', 'X', '100.31839824093', '30.945469525266', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513330, '德格县', 'D', '98.587401611354', '31.812106494713', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513331, '白玉县', 'B', '98.83110021824', '31.215314448788', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513332, '石渠县', 'S', '98.109480622408', '32.984003420478', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513333, '色达县', 'S', '100.33941364918', '32.274330413227', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513334, '理塘县', 'L', '100.27557457998', '30.000030621751', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513335, '巴塘县', 'B', '99.11672669582', '30.011661707376', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513336, '乡城县', 'X', '99.805059570922', '28.936733475224', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513337, '稻城县', 'D', '100.3044615597', '29.043121558126', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513338, '得荣县', 'D', '99.292984198181', '28.718780051461', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513401, '西昌市', 'X', '102.27148382917', '27.900580896264', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513422, '木里藏族自治县', 'M', '101.28639697674', '27.93459855924', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513423, '盐源县', 'Y', '101.51542912915', '27.428154867741', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513424, '德昌县', 'D', '102.18259551085', '27.408504192994', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513425, '会理县', 'H', '102.25143634511', '26.661199778427', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513426, '会东县', 'H', '102.5844621823', '26.640823775829', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513427, '宁南县', 'N', '102.76252636654', '27.064605070116', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513428, '普格县', 'P', '102.54659671863', '27.381996213807', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513429, '布拖县', 'B', '102.818478493', '27.7121287338', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513430, '金阳县', 'J', '103.25454895521', '27.702144511749', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513431, '昭觉县', 'Z', '102.84942278222', '28.020506268006', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513432, '喜德县', 'X', '102.41956715684', '28.312709832521', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513433, '冕宁县', 'M', '102.18357457402', '28.55529444536', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513434, '越西县', 'Y', '102.5144744814', '28.645827564326', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513435, '甘洛县', 'G', '102.77859651312', '28.9648231905', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513436, '美姑县', 'M', '103.13858579866', '28.33401962389', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (513437, '雷波县', 'L', '103.57842869486', '28.268950617624', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520102, '南明区', 'N', '106.72052763544', '26.574336181539', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520103, '云岩区', 'Y', '106.73053475882', '26.610381076426', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520111, '花溪区', 'H', '106.6764407773', '26.41587945643', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520112, '乌当区', 'W', '106.75755803432', '26.636529135598', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520113, '白云区', 'B', '106.62959683989', '26.683588499124', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520115, '观山湖区', 'G', '106.60953255751', '26.623894296899', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520121, '开阳县', 'K', '106.97155955928', '27.063673573951', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520122, '息烽县', 'X', '106.74756178044', '27.096475267062', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520123, '修文县', 'X', '106.59849220314', '26.844862447594', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520181, '清镇市', 'Q', '106.47752261032', '26.561987898479', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520201, '钟山区', 'Z', '104.85052981696', '26.580704079622', 520200, 3, 'tr_0 tr_520000 tr_520200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520203, '六枝特区', 'L', '105.48342934686', '26.219214290638', 520200, 3, 'tr_0 tr_520000 tr_520200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520221, '水城县', 'S', '104.96456610819', '26.553719763692', 520200, 3, 'tr_0 tr_520000 tr_520200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520281, '盘州市', 'P', '104.47858183932', '25.715651258076', 520200, 3, 'tr_0 tr_520000 tr_520200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520302, '红花岗区', 'H', '106.90049658668', '27.650870260732', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520303, '汇川区', 'H', '106.94045752761', '27.756343380087', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520304, '播州区', 'B', '106.83650354793', '27.542500878', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520322, '桐梓县', 'T', '106.83248902061', '28.139468384162', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520323, '绥阳县', 'S', '107.19749228819', '27.953080005876', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520324, '正安县', 'Z', '107.4605748906', '28.55909172878', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520325, '道真仡佬族苗族自治县', 'D', '107.61948378781', '28.86864981438', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520326, '务川仡佬族苗族自治县', 'W', '107.90545629257', '28.569077110562', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520327, '凤冈县', 'F', '107.72354763025', '27.960695338965', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520328, '湄潭县', 'M', '107.47259853019', '27.75449836496', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520329, '余庆县', 'Y', '107.91146020728', '27.221379027997', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520330, '习水县', 'X', '106.20342803999', '28.339117886481', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520381, '赤水市', 'C', '105.70348859502', '28.596118908733', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520382, '仁怀市', 'R', '106.40752655518', '27.797752158543', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450702, '钦南区', 'Q', '108.66454861267', '21.945972440989', 450700, 3, 'tr_0 tr_450000 tr_450700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450703, '钦北区', 'Q', '108.63851257493', '22.020367050196', 450700, 3, 'tr_0 tr_450000 tr_450700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450721, '灵山县', 'L', '109.29747796631', '22.422413326701', 450700, 3, 'tr_0 tr_450000 tr_450700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (450722, '浦北县', 'P', '109.5634229294', '22.277822326937', 450700, 3, 'tr_0 tr_450000 tr_450700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520402, '西秀区', 'X', '105.97240632053', '26.251497663244', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520403, '平坝区', 'P', '106.26358378709', '26.411186471257', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520422, '普定县', 'P', '105.74848570614', '26.308233451347', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520423, '镇宁布依族苗族自治县', 'Z', '105.77658344485', '26.063829083032', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520424, '关岭布依族苗族自治县', 'G', '105.62547597168', '25.949877045969', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520425, '紫云苗族布依族自治县', 'Z', '106.09041375093', '25.757408728958', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520502, '七星关区', 'Q', '105.31158071811', '27.304095223427', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520521, '大方县', 'D', '105.61845131242', '27.147060750626', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520522, '黔西县', 'Q', '106.03857397726', '27.014344747084', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520523, '金沙县', 'J', '106.22644163901', '27.465354872614', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520524, '织金县', 'Z', '105.77758954702', '26.669221885659', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520525, '纳雍县', 'N', '105.38948662276', '26.783717229132', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520526, '威宁彝族回族苗族自治县', 'W', '104.25948063398', '26.879247190553', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520527, '赫章县', 'H', '104.73351582262', '27.129051675142', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520602, '碧江区', 'B', '109.18743536171', '27.696773471802', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520603, '万山区', 'W', '109.22045617394', '27.524647851983', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520621, '江口县', 'J', '108.84540005924', '27.705921695043', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520622, '玉屏侗族自治县', 'Y', '108.920563527', '27.248557881456', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520623, '石阡县', 'S', '108.23046385479', '27.519722059758', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520624, '思南县', 'S', '108.25941731933', '27.944547877977', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520625, '印江土家族苗族自治县', 'Y', '108.41659167843', '27.999823251993', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520626, '德江县', 'D', '108.1264110615', '28.270423278494', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520627, '沿河土家族自治县', 'Y', '108.51047753979', '28.570101680095', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (520628, '松桃苗族自治县', 'S', '109.20940351278', '28.160420179011', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522301, '兴义市', 'X', '104.9024609483', '25.098113310297', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522302, '兴仁市', 'X', '105.19256772452', '25.440898753576', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522323, '普安县', 'P', '104.95954583802', '25.789951769129', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522324, '晴隆县', 'Q', '105.22548361467', '25.841047900453', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522325, '贞丰县', 'Z', '105.65655958807', '25.392123965341', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522326, '望谟县', 'W', '106.10644455174', '25.18435492392', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522327, '册亨县', 'C', '105.81851050706', '24.989637494252', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522328, '安龙县', 'A', '105.44954274777', '25.103990431232', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522601, '凯里市', 'K', '107.98944624078', '26.589702969826', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522622, '黄平县', 'H', '107.92354780622', '26.911288643101', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522623, '施秉县', 'S', '108.13043978205', '27.039822051733', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522624, '三穗县', 'S', '108.68154500207', '26.958666465246', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522625, '镇远县', 'Z', '108.43658077263', '27.054820913901', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522626, '岑巩县', 'C', '108.82248096196', '27.179902417394', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522627, '天柱县', 'T', '109.21444570161', '26.915804084012', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522628, '锦屏县', 'J', '109.20743846948', '26.682631631865', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522629, '剑河县', 'J', '108.44751710323', '26.734047558881', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522630, '台江县', 'T', '108.32855163', '26.672372539643', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522631, '黎平县', 'L', '109.14356697147', '26.236874050192', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522632, '榕江县', 'R', '108.52755369872', '25.93772537325', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522633, '从江县', 'C', '108.91156142782', '25.759881327892', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522634, '雷山县', 'L', '108.08452891457', '26.384205121689', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522635, '麻江县', 'M', '107.59555140191', '26.496807595584', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522636, '丹寨县', 'D', '107.79551348972', '26.204421169869', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522701, '都匀市', 'D', '107.52540443144', '26.266117957789', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522702, '福泉市', 'F', '107.52643281158', '26.692525700784', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522722, '荔波县', 'L', '107.89340938687', '25.417097566273', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522723, '贵定县', 'G', '107.2405543594', '26.590659655039', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522725, '瓮安县', 'W', '107.47755223592', '27.084125602602', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522726, '独山县', 'D', '107.55149778107', '25.828287807074', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522727, '平塘县', 'P', '107.32956664388', '25.828201706902', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522728, '罗甸县', 'L', '106.75854805682', '25.430837682972', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522729, '长顺县', 'Z', '106.45842122163', '26.028454545714', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522730, '龙里县', 'L', '106.98658596469', '26.459080630642', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522731, '惠水县', 'H', '106.66345262709', '26.138209889396', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (522732, '三都水族自治县', 'S', '107.84263500353', '26.096765617985', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530102, '五华区', 'W', '102.7134232806', '25.049834961981', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530103, '盘龙区', 'P', '102.7585262121', '25.12237227983', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530111, '官渡区', 'G', '102.7504817066', '25.021196423859', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530112, '西山区', 'X', '102.6715571235', '25.043198760947', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530113, '东川区', 'D', '103.19445186746', '26.089054237623', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530114, '呈贡区', 'C', '102.82747259726', '24.891871210947', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530115, '晋宁区', 'J', '102.60241805181', '24.676098812517', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530124, '富民县', 'F', '102.50447319701', '25.228085092195', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530125, '宜良县', 'Y', '103.14755798426', '24.925286989652', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530126, '石林彝族自治县', 'S', '103.29650817676', '24.77770196132', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530127, '嵩明县', 'S', '103.04356394016', '25.344409459135', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530128, '禄劝彝族苗族自治县', 'L', '102.47742324184', '25.55767180024', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530129, '寻甸回族彝族自治县', 'X', '103.26357387135', '25.563893580433', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530181, '安宁市', 'A', '102.48440918413', '24.925601726344', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530302, '麒麟区', 'Q', '103.81143036949', '25.502101828437', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530303, '沾益区', 'Z', '103.82848532841', '25.606630798868', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530304, '马龙区', 'M', '103.58544688632', '25.433966374816', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530322, '陆良县', 'L', '103.67343249743', '25.035639470439', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530323, '师宗县', 'S', '103.99155634453', '24.827994969501', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530324, '罗平县', 'L', '104.31551019438', '24.890519724895', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530325, '富源县', 'F', '104.2614742434', '25.680279502133', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530326, '会泽县', 'H', '103.30348729192', '26.424215045561', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530381, '宣威市', 'X', '104.1115760691', '26.225598378324', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530402, '红塔区', 'H', '102.55156461759', '24.359801443673', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530403, '江川区', 'J', '102.76052700796', '24.293438700984', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530422, '澄江县', 'C', '102.91455487235', '24.679414908816', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530423, '通海县', 'T', '102.73242289128', '24.117891201574', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530424, '华宁县', 'H', '102.93549185853', '24.198581027163', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530425, '易门县', 'Y', '102.1695354962', '24.677404477592', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530426, '峨山彝族自治县', 'E', '102.41256450607', '24.174774239093', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530427, '新平彝族傣族自治县', 'X', '101.99642771261', '24.076262705278', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530428, '元江哈尼族彝族傣族自治县', 'Y', '102.00441463673', '23.603000905475', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530502, '隆阳区', 'L', '99.172070839289', '25.12688832219', 530500, 3, 'tr_0 tr_530000 tr_530500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530521, '施甸县', 'S', '99.195469362222', '24.728835000146', 530500, 3, 'tr_0 tr_530000 tr_530500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530523, '龙陵县', 'L', '98.695749912275', '24.592546947017', 530500, 3, 'tr_0 tr_530000 tr_530500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530524, '昌宁县', 'C', '99.611616576026', '24.833984919853', 530500, 3, 'tr_0 tr_530000 tr_530500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530581, '腾冲市', 'T', '98.497595035489', '25.026616860346', 530500, 3, 'tr_0 tr_530000 tr_530500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530602, '昭阳区', 'Z', '103.71347042315', '27.326144206053', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530621, '鲁甸县', 'L', '103.5644121645', '27.193107219133', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530622, '巧家县', 'Q', '102.93651934037', '26.914705038577', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530623, '盐津县', 'Y', '104.24157884246', '28.114384038516', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530624, '大关县', 'D', '103.89751489665', '27.754021401911', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530625, '永善县', 'Y', '103.6445690431', '28.234722481383', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530626, '绥江县', 'S', '103.9645523826', '28.604277931727', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530627, '镇雄县', 'Z', '104.88040422431', '27.447794634649', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530628, '彝良县', 'Y', '104.05444303021', '27.631690165547', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530629, '威信县', 'W', '105.05557676311', '27.85253746404', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530681, '水富市', 'S', '104.42243298394', '28.636106975262', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530702, '古城区', 'G', '100.23248033921', '26.883161684001', 530700, 3, 'tr_0 tr_530000 tr_530700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530721, '玉龙纳西族自治县', 'Y', '100.24352734105', '26.827391803625', 530700, 3, 'tr_0 tr_530000 tr_530700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530722, '永胜县', 'Y', '100.75758141133', '26.689950245419', 530700, 3, 'tr_0 tr_530000 tr_530700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530723, '华坪县', 'H', '101.27243012268', '26.635223014622', 530700, 3, 'tr_0 tr_530000 tr_530700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530724, '宁蒗彝族自治县', 'N', '100.85859038623', '27.287727826052', 530700, 3, 'tr_0 tr_530000 tr_530700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530802, '思茅区', 'S', '100.98355510298', '22.79249798436', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530821, '宁洱哈尼族彝族自治县', 'N', '101.05244246946', '23.054590179481', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530822, '墨江哈尼族自治县', 'M', '101.69858356155', '23.437725772256', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530823, '景东彝族自治县', 'J', '100.83848864452', '24.451863775495', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530824, '景谷傣族彝族自治县', 'J', '100.7094565801', '23.503204071241', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530825, '镇沅彝族哈尼族拉祜族自治县', 'Z', '101.11556882305', '24.010330833613', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530826, '江城哈尼族彝族自治县', 'J', '101.86847918429', '22.59168385943', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530827, '孟连傣族拉祜族佤族自治县', 'M', '99.590962825578', '22.335307615556', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530828, '澜沧拉祜族自治县', 'L', '99.938588283239', '22.561831918087', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530829, '西盟佤族自治县', 'X', '99.596622150289', '22.650656010974', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530902, '临翔区', 'L', '100.0884425304', '23.901401938645', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530921, '凤庆县', 'F', '99.934989222215', '24.586472458274', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530922, '云县', 'Y', '100.12953102441', '24.442807275329', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530923, '永德县', 'Y', '99.265075642606', '24.024871282777', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530924, '镇康县', 'Z', '98.831871224123', '23.768315480096', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530925, '双江拉祜族佤族布朗族傣族自治县', 'S', '99.834130982979', '23.479836504614', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530926, '耿马傣族佤族自治县', 'G', '99.403942176092', '23.543490995101', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (530927, '沧源佤族自治县', 'C', '99.252721696084', '23.152878733913', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532301, '楚雄市', 'C', '101.55247228396', '25.038860388323', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532322, '双柏县', 'S', '101.64840700053', '24.694898530382', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532323, '牟定县', 'M', '101.55348099122', '25.318845903714', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532324, '南华县', 'N', '101.28042055018', '25.198587071156', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532325, '姚安县', 'Y', '101.2485272012', '25.509775443473', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532326, '大姚县', 'D', '101.33056746713', '25.727600600572', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532327, '永仁县', 'Y', '101.67249299667', '26.055565754521', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532328, '元谋县', 'Y', '101.8804452425', '25.710895319939', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532329, '武定县', 'W', '102.41053182037', '25.536089587807', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532331, '禄丰县', 'L', '102.08553135476', '25.155830804806', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532501, '个旧市', 'G', '103.16651860849', '23.364941534583', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532502, '开远市', 'K', '103.27355323709', '23.719907796912', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532503, '蒙自市', 'M', '103.37154588175', '23.402079885198', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532504, '弥勒市', 'M', '103.421489063', '24.417982225357', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532523, '屏边苗族自治县', 'P', '103.69343183232', '22.989989585513', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532524, '建水县', 'J', '102.83343959161', '23.640938563461', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532525, '石屏县', 'S', '102.50244661978', '23.712004452449', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532527, '泸西县', 'L', '103.77252314092', '24.53803716745', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532528, '元阳县', 'Y', '102.84143280386', '23.226198051926', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532529, '红河县', 'H', '102.42755057757', '23.374488738365', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532530, '金平苗族瑶族傣族自治县', 'J', '103.23246860579', '22.785560606183', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532531, '绿春县', 'L', '102.39849398755', '23.000164936586', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532532, '河口瑶族自治县', 'H', '103.9454436278', '22.535465602947', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532601, '文山市', 'W', '104.23854382746', '23.391944131908', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532622, '砚山县', 'Y', '104.3435508907', '23.6114865767', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532623, '西畴县', 'X', '104.67852542203', '23.443271275283', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532624, '麻栗坡县', 'M', '104.70954948078', '23.13158558356', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532625, '马关县', 'M', '104.40041497692', '23.018993577166', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532626, '丘北县', 'Q', '104.17344174074', '24.056993896218', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532627, '广南县', 'G', '105.06158238459', '24.052198510921', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532628, '富宁县', 'F', '105.63749017905', '23.63138040952', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532801, '景洪市', 'J', '100.80644312258', '22.017004423119', 532800, 3, 'tr_0 tr_530000 tr_532800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532822, '勐海县', 'M', '100.4594459398', '21.963433596681', 532800, 3, 'tr_0 tr_530000 tr_532800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532823, '勐腊县', 'M', '101.57152830823', '21.465280880862', 532800, 3, 'tr_0 tr_530000 tr_532800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532901, '大理市', 'D', '100.23651930044', '25.597604905452', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532922, '漾濞彝族自治县', 'Y', '99.964413758168', '25.676295762972', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532923, '祥云县', 'X', '100.55744657937', '25.489872506242', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532924, '宾川县', 'B', '100.57845668762', '25.835249028198', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO hg_sys_provinces (id, title, pinyin, lng, lat, pid, level, tree, sort, status, created_at, updated_at) VALUES + (532925, '弥渡县', 'M', '100.49758601546', '25.349336028746', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532926, '南涧彝族自治县', 'N', '100.51554862227', '25.049426762094', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532927, '巍山彝族回族自治县', 'W', '100.31346033515', '25.233438729799', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532928, '永平县', 'Y', '99.547494899931', '25.4702064833', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532929, '云龙县', 'Y', '99.377416022867', '25.891945073902', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532930, '洱源县', 'E', '99.969209721453', '26.120093341888', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532931, '剑川县', 'J', '99.912091235112', '26.542516534181', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (532932, '鹤庆县', 'H', '100.18249206302', '26.566197313345', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (533102, '瑞丽市', 'R', '97.862485584208', '24.022816893105', 533100, 3, 'tr_0 tr_530000 tr_533100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (533103, '芒市', 'M', '98.591359356114', '24.438010702758', 533100, 3, 'tr_0 tr_530000 tr_533100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (533122, '梁河县', 'L', '98.303133631636', '24.810784458257', 533100, 3, 'tr_0 tr_530000 tr_533100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (533123, '盈江县', 'Y', '97.938426535386', '24.711534266143', 533100, 3, 'tr_0 tr_530000 tr_533100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (533124, '陇川县', 'L', '97.798530364124', '24.189467890549', 533100, 3, 'tr_0 tr_530000 tr_533100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (533301, '泸水市', 'L', '98.864586163328', '25.829026769972', 533300, 3, 'tr_0 tr_530000 tr_533300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (533323, '福贡县', 'F', '98.875649424493', '26.908055208498', 533300, 3, 'tr_0 tr_530000 tr_533300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (533324, '贡山独龙族怒族自治县', 'G', '98.672399448687', '27.747067875272', 533300, 3, 'tr_0 tr_530000 tr_533300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (533325, '兰坪白族普米族自治县', 'L', '99.423284669988', '26.459207904688', 533300, 3, 'tr_0 tr_530000 tr_533300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (533401, '香格里拉市', 'X', '99.707444573899', '27.835760125321', 533400, 3, 'tr_0 tr_530000 tr_533400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (533422, '德钦县', 'D', '98.924452656054', '28.470086006822', 533400, 3, 'tr_0 tr_530000 tr_533400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (533423, '维西傈僳族自治县', 'W', '99.293465689934', '27.183170204022', 533400, 3, 'tr_0 tr_530000 tr_533400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540102, '城关区', 'C', '91.145100352371', '29.658331252915', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540103, '堆龙德庆区', 'D', '91.009963134209', '29.651625675009', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540104, '达孜区', 'D', '91.356318118388', '29.675409063815', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540121, '林周县', 'L', '91.26950057393', '29.898733205887', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540122, '当雄县', 'D', '91.107451746831', '30.479221726942', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540123, '尼木县', 'N', '90.171180066243', '29.437518981255', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540124, '曲水县', 'Q', '90.749958665453', '29.358987058337', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540127, '墨竹工卡县', 'M', '91.737266398592', '29.839752605055', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540171, '格尔木藏青工业园区', 'G', '91.120823915464', '29.650040274768', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540172, '拉萨经济技术开发区', 'L', '91.120823915464', '29.650040274768', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540173, '西藏文化旅游创意园区', 'X', '91.120823915464', '29.650040274768', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540174, '达孜工业园区', 'D', '91.356318118388', '29.675409063815', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540202, '桑珠孜区', 'S', '88.902951718862', '29.255582814198', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540221, '南木林县', 'N', '89.105704213077', '29.687938036552', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540222, '江孜县', 'J', '89.612012194954', '28.917634684239', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540223, '定日县', 'D', '87.129597739314', '28.663951983289', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540224, '萨迦县', 'S', '88.028269488152', '28.90493151262', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540225, '拉孜县', 'L', '87.643647318074', '29.087509679995', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540226, '昂仁县', 'A', '87.242427336755', '29.301060484014', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540227, '谢通门县', 'X', '88.268206799957', '29.438142414132', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540228, '白朗县', 'B', '89.268741991895', '29.111858951918', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540229, '仁布县', 'R', '89.848624967899', '29.236788327037', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540230, '康马县', 'K', '89.688244915761', '28.561443952501', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540231, '定结县', 'D', '87.772376743375', '28.369910769393', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540232, '仲巴县', 'Z', '84.038116876917', '29.775982232026', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540233, '亚东县', 'Y', '88.913440783145', '27.491108780091', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540234, '吉隆县', 'J', '85.304073768987', '28.858501664955', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540235, '聂拉木县', 'N', '85.988770403046', '28.160839360543', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540236, '萨嘎县', 'S', '85.239825701307', '29.334659688784', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540237, '岗巴县', 'G', '88.526529281476', '28.28036304226', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540302, '卡若区', 'K', '97.186654336416', '31.144248893947', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540321, '江达县', 'J', '98.224594520968', '31.50520701798', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540322, '贡觉县', 'G', '98.277334127289', '30.865966958412', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540323, '类乌齐县', 'L', '96.606717192399', '31.217793112281', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540324, '丁青县', 'D', '95.602643844218', '31.418402964614', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540325, '察雅县', 'C', '97.575123679628', '30.659864699371', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540326, '八宿县', 'B', '96.924360446152', '30.059028991399', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540327, '左贡县', 'Z', '97.847366832989', '29.676848537197', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540328, '芒康县', 'M', '98.599685480392', '29.685776117713', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540329, '洛隆县', 'L', '95.831306613477', '30.747126507478', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540330, '边坝县', 'B', '94.714371149159', '30.939624927347', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540402, '巴宜区', 'B', '94.36754427672', '29.641644546372', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540421, '工布江达县', 'G', '93.252419796678', '29.891367616241', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540422, '米林县', 'M', '94.219938578083', '29.220916541197', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540423, '墨脱县', 'M', '95.33949529751', '29.330937701878', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540424, '波密县', 'B', '95.773900121645', '29.865060090549', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540425, '察隅县', 'C', '97.473269749246', '28.667444137201', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540426, '朗县', 'L', '93.081368234407', '29.051902419086', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540602, '色尼区', 'S', '92.05984683665', '31.476117292678', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540621, '嘉黎县', 'J', '93.23873151504', '30.647062455597', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540622, '比如县', 'B', '93.685965938612', '31.48635726205', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540623, '聂荣县', 'N', '92.308654466293', '32.113707483115', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540624, '安多县', 'A', '91.688890677999', '32.271268023108', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540625, '申扎县', 'S', '88.716481108234', '30.936393285832', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540626, '索县', 'S', '93.792172958379', '31.892424309227', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540627, '班戈县', 'B', '90.016707727114', '31.398727622963', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540628, '巴青县', 'B', '94.059881564766', '31.924549424276', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540629, '尼玛县', 'N', '87.243292410868', '31.790953326638', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540630, '双湖县', 'S', '88.843427936123', '33.193503165809', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (542521, '普兰县', 'P', '81.183094731974', '30.300162591078', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (542522, '札达县', 'Z', '79.809323212178', '31.485343070014', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (542523, '噶尔县', 'G', '80.102877146054', '32.497156823602', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (542524, '日土县', 'R', '79.739109138263', '33.387186043872', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (542525, '革吉县', 'G', '81.151664369638', '32.393356020044', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (542526, '改则县', 'G', '84.06911336254', '32.308356643244', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (542527, '措勤县', 'C', '85.165952205481', '31.022666379273', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610102, '新城区', 'X', '108.9673910385', '34.272724469533', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610103, '碑林区', 'B', '108.94049774781', '34.236473940412', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610104, '莲湖区', 'L', '108.95042644912', '34.271017203053', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610111, '灞桥区', 'B', '109.07141535554', '34.279127674951', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610112, '未央区', 'W', '108.95340118781', '34.299148106589', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610113, '雁塔区', 'Y', '108.95144045638', '34.220635239986', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610114, '阎良区', 'Y', '109.23246311822', '34.668363274699', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610115, '临潼区', 'L', '109.22043579558', '34.372747432848', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610116, '长安区', 'Z', '108.91358047235', '34.163290267305', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610117, '高陵区', 'G', '109.09438691387', '34.541093106058', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610118, '鄠邑区', 'H', '108.61142023271', '34.115020711599', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610122, '蓝田县', 'L', '109.32938812681', '34.157620654732', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610124, '周至县', 'Z', '108.22842183954', '34.169385269616', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610202, '王益区', 'W', '109.08141735858', '35.075322096471', 610200, 3, 'tr_0 tr_610000 tr_610200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610203, '印台区', 'Y', '109.10643408907', '35.120859282945', 610200, 3, 'tr_0 tr_610000 tr_610200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610204, '耀州区', 'Y', '108.98643790006', '34.91596030911', 610200, 3, 'tr_0 tr_610000 tr_610200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610222, '宜君县', 'Y', '109.12353674801', '35.404582194219', 610200, 3, 'tr_0 tr_610000 tr_610200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610302, '渭滨区', 'W', '107.15641916768', '34.377481132682', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610303, '金台区', 'J', '107.15342367813', '34.382351084696', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610304, '陈仓区', 'C', '107.39343842395', '34.360756335457', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610322, '凤翔县', 'F', '107.40737949665', '34.527616279899', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610323, '岐山县', 'Q', '107.62744727879', '34.449776962387', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610324, '扶风县', 'F', '107.9064530651', '34.381463351226', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610326, '眉县', 'M', '107.75639813644', '34.280375863086', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610327, '陇县', 'L', '106.87058365441', '34.898780253107', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610328, '千阳县', 'Q', '107.13946616644', '34.648544600794', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610329, '麟游县', 'L', '107.799514106', '34.683748667164', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610330, '凤县', 'F', '106.52255782187', '33.916583016343', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610331, '太白县', 'T', '107.32552913248', '34.064248441153', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610402, '秦都区', 'Q', '108.71243199239', '34.3351451161', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610403, '杨陵区', 'Y', '108.09151531881', '34.278012507654', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610404, '渭城区', 'W', '108.74345057148', '34.368110229368', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610422, '三原县', 'S', '108.94744650025', '34.623078955252', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610423, '泾阳县', 'J', '108.84937884705', '34.533316532768', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610424, '乾县', 'G', '108.24537762554', '34.534018266142', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610425, '礼泉县', 'L', '108.43161549166', '34.487390768504', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610426, '永寿县', 'Y', '108.14846878644', '34.698035535617', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610428, '长武县', 'Z', '107.80556078005', '35.211657338715', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610429, '旬邑县', 'X', '108.34046703665', '35.117963919719', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610430, '淳化县', 'C', '108.58744176373', '34.804776911295', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610431, '武功县', 'W', '108.20655106479', '34.266137667633', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610481, '兴平市', 'X', '108.49639400877', '34.305476520292', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610482, '彬州市', 'B', '108.08456557823', '35.049610571828', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610502, '临渭区', 'L', '109.4985962764', '34.504000470428', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610503, '华州区', 'H', '109.7784773716', '34.5187307401', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610522, '潼关县', 'T', '110.25250761972', '34.550326848532', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610523, '大荔县', 'D', '109.94845330291', '34.801832760484', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610524, '合阳县', 'H', '110.15539621274', '35.243872196866', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610525, '澄城县', 'C', '109.93843360325', '35.196572815551', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610526, '蒲城县', 'P', '109.59249651068', '34.961274128783', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610527, '白水县', 'B', '109.59752055374', '35.183287514613', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610528, '富平县', 'F', '109.18643744728', '34.757260440256', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610581, '韩城市', 'H', '110.44955264012', '35.482086787313', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610582, '华阴市', 'H', '110.09860075704', '34.571800158753', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610602, '宝塔区', 'B', '109.49959402433', '36.596890441313', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610603, '安塞区', 'A', '109.33541943984', '36.870098259307', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610621, '延长县', 'Y', '110.01847172589', '36.585328801705', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610622, '延川县', 'Y', '110.20054028665', '36.884136960993', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610623, '子长县', 'Z', '109.68138985954', '37.148816918367', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610625, '志丹县', 'Z', '108.77557747991', '36.828021135864', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610626, '吴起县', 'W', '108.18258966361', '36.932576099483', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610627, '甘泉县', 'G', '109.35752350454', '36.282688619053', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610628, '富县', 'F', '109.38659653355', '35.993367977969', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610629, '洛川县', 'L', '109.43840396825', '35.768300429421', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610630, '宜川县', 'Y', '110.17541306458', '36.056397437854', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610631, '黄龙县', 'H', '109.84654907671', '35.590233768069', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610632, '黄陵县', 'H', '109.26960598495', '35.585076348969', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610702, '汉台区', 'H', '107.03840167622', '33.074191093099', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610703, '南郑区', 'N', '106.94243318334', '33.005614599734', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610722, '城固县', 'C', '107.3406125803', '33.162399385178', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610723, '洋县', 'Y', '107.55246428058', '33.228862589315', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610724, '西乡县', 'X', '107.77339281906', '32.989397441895', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610725, '勉县', 'M', '106.67942594867', '33.159804746955', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610726, '宁强县', 'N', '106.26458864382', '32.835380199209', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610727, '略阳县', 'L', '106.16354400616', '33.333193777733', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610728, '镇巴县', 'Z', '107.9014456407', '32.54283336567', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610729, '留坝县', 'L', '106.92741441352', '33.623825216737', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610730, '佛坪县', 'F', '107.99742428443', '33.530693101588', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610802, '榆阳区', 'Y', '109.72755916953', '38.28241962673', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610803, '横山区', 'H', '109.30049134534', '37.968573394166', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610822, '府谷县', 'F', '111.0736281152', '39.03379562985', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610824, '靖边县', 'J', '108.80060049853', '37.605063193955', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610825, '定边县', 'D', '107.60756957446', '37.600459865341', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610826, '绥德县', 'S', '110.26942648536', '37.508907288933', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610827, '米脂县', 'M', '110.19045141747', '37.761397514329', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610828, '佳县', 'J', '110.49747741874', '38.025611678572', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610829, '吴堡县', 'W', '110.74645500778', '37.458269874078', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610830, '清涧县', 'Q', '110.12755916227', '37.094852887828', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610831, '子洲县', 'Z', '110.04239845247', '37.617025887547', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610881, '神木市', 'S', '110.50542966826', '38.848544495221', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610902, '汉滨区', 'H', '109.03359606476', '32.701196105738', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610921, '汉阴县', 'H', '108.51550698561', '32.899120857292', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610922, '石泉县', 'S', '108.25442679592', '33.044602110263', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610923, '宁陕县', 'N', '108.32056400011', '33.316555486503', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610924, '紫阳县', 'Z', '108.54159431661', '32.525785619364', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610925, '岚皋县', 'L', '108.90861535814', '32.312880776501', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610926, '平利县', 'P', '109.36854670128', '32.394804123185', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610927, '镇坪县', 'Z', '109.53349679292', '31.889643295791', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610928, '旬阳县', 'X', '109.37155674338', '32.839864221772', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (610929, '白河县', 'B', '110.11958688053', '32.814846485284', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (611002, '商州区', 'S', '109.94747163465', '33.86885529308', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (611021, '洛南县', 'L', '110.15442748007', '34.097070538846', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (611022, '丹凤县', 'D', '110.3335602886', '33.701537322921', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (611023, '商南县', 'S', '110.88840847837', '33.537533476707', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (611024, '山阳县', 'S', '109.88854863218', '33.537968382769', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (611025, '镇安县', 'Z', '109.15957460914', '33.429044650147', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (611026, '柞水县', 'Z', '109.120502272', '33.692026241945', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620102, '城关区', 'C', '103.83147490053', '36.063181475369', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620103, '七里河区', 'Q', '103.79241388204', '36.07212925843', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620104, '西固区', 'X', '103.63458007682', '36.094109365757', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620105, '安宁区', 'A', '103.72553503682', '36.109753754973', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620111, '红古区', 'H', '102.86542781272', '36.351863423179', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620121, '永登县', 'Y', '103.26662443823', '36.74209521344', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620122, '皋兰县', 'G', '103.95346415997', '36.338142148673', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620123, '榆中县', 'Y', '104.11956587928', '35.848851048242', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620171, '兰州新区', 'L', '103.76383312444', '36.082833434467', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620201, '市辖区', 'S', '98.208045429791', '39.821463455258', 620200, 3, 'tr_0 tr_620000 tr_620200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620302, '金川区', 'J', '102.20058588614', '38.525772245594', 620300, 3, 'tr_0 tr_620000 tr_620300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620321, '永昌县', 'Y', '101.97946358316', '38.252940956889', 620300, 3, 'tr_0 tr_620000 tr_620300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620402, '白银区', 'B', '104.15541276065', '36.541463568069', 620400, 3, 'tr_0 tr_620000 tr_620400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620403, '平川区', 'P', '104.83161394007', '36.733498751869', 620400, 3, 'tr_0 tr_620000 tr_620400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620421, '靖远县', 'J', '104.68251507796', '36.577096288837', 620400, 3, 'tr_0 tr_620000 tr_620400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620422, '会宁县', 'H', '105.05960693274', '35.698508053094', 620400, 3, 'tr_0 tr_620000 tr_620400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620423, '景泰县', 'J', '104.06944438436', '37.187406260097', 620400, 3, 'tr_0 tr_620000 tr_620400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620502, '秦州区', 'Q', '105.73041549435', '34.587315743121', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620503, '麦积区', 'M', '105.89559698949', '34.576336861448', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620521, '清水县', 'Q', '106.14359506621', '34.753882906363', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620522, '秦安县', 'Q', '105.68157480343', '34.864876111568', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620523, '甘谷县', 'G', '105.34247534291', '34.738300137398', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620524, '武山县', 'W', '104.89742838309', '34.727669101635', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620525, '张家川回族自治县', 'Z', '106.21139036271', '34.99490501302', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620602, '凉州区', 'L', '102.64857479651', '37.934121948376', 620600, 3, 'tr_0 tr_620000 tr_620600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620621, '民勤县', 'M', '103.10040027988', '38.630624826433', 620600, 3, 'tr_0 tr_620000 tr_620600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620622, '古浪县', 'G', '102.90362978165', '37.475801906601', 620600, 3, 'tr_0 tr_620000 tr_620600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620623, '天祝藏族自治县', 'T', '103.14862131966', '36.97759617654', 620600, 3, 'tr_0 tr_620000 tr_620600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620702, '甘州区', 'G', '100.48455772128', '38.934781471785', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620721, '肃南裕固族自治县', 'S', '99.621905418008', '38.843100205023', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620722, '民乐县', 'M', '100.81942903742', '38.436842233981', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620723, '临泽县', 'L', '100.17055476077', '39.158514444726', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620724, '高台县', 'G', '99.825759504337', '39.383646046807', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620725, '山丹县', 'S', '101.09561558172', '38.790452663306', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620802, '崆峒区', 'K', '106.68141452757', '35.548814892232', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620821, '泾川县', 'J', '107.37451813364', '35.338668597821', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620822, '灵台县', 'L', '107.62746120252', '35.07158181696', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620823, '崇信县', 'C', '107.04141513189', '35.308615839828', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620825, '庄浪县', 'Z', '106.04258582178', '35.208192125804', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620826, '静宁县', 'J', '105.73841580322', '35.528257189136', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620881, '华亭市', 'H', '106.65948599177', '35.223550762897', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620902, '肃州区', 'S', '98.514321853032', '39.751245509963', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620921, '金塔县', 'J', '98.908368236172', '39.990029254093', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620922, '瓜州县', 'G', '95.788736364512', '40.52610597895', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620923, '肃北蒙古族自治县', 'S', '94.883692395412', '39.518329738436', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620924, '阿克塞哈萨克族自治县', 'A', '94.346760190396', '39.640045316917', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620981, '玉门市', 'Y', '97.051711691182', '40.297620020884', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (620982, '敦煌市', 'D', '94.668527025762', '40.147867484244', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621002, '西峰区', 'X', '107.65739112517', '35.736864475978', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621021, '庆城县', 'Q', '107.88840619724', '36.021726360644', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621022, '环县', 'H', '107.31446964419', '36.574427108907', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621023, '华池县', 'H', '107.99638952632', '36.467575129884', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621024, '合水县', 'H', '108.026447188', '35.8252622164', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621025, '正宁县', 'Z', '108.36637461671', '35.498218780898', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621026, '宁县', 'N', '107.93457092587', '35.507932974537', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621027, '镇原县', 'Z', '107.20757586986', '35.683230586316', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621102, '安定区', 'A', '104.61650040265', '35.585600016725', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621121, '通渭县', 'T', '105.24840362211', '35.217216821266', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621122, '陇西县', 'L', '104.64138059069', '35.010197162318', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621123, '渭源县', 'W', '104.22158401062', '35.142391958021', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621124, '临洮县', 'L', '103.8656010777', '35.400587040258', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621125, '漳县', 'Z', '104.4785953255', '34.854249981778', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621126, '岷县', 'M', '104.04339603983', '34.44440764065', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621202, '武都区', 'W', '104.93259336075', '33.398072188089', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621221, '成县', 'C', '105.7484779029', '33.756635187351', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621222, '文县', 'W', '104.68955842198', '32.949601280768', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621223, '宕昌县', 'D', '104.39938579987', '34.053486291359', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621224, '康县', 'K', '105.61539187549', '33.335376401996', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621225, '西和县', 'X', '105.30761048912', '34.016787358437', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621226, '礼县', 'L', '105.1835909694', '34.194685061207', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621227, '徽县', 'H', '106.09441787005', '33.77519418709', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (621228, '两当县', 'L', '106.31141946599', '33.915122835173', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (622901, '临夏市', 'L', '103.2495491776', '35.609898772689', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (622921, '临夏县', 'L', '103.00251408439', '35.497397958837', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (622922, '康乐县', 'K', '103.71547554223', '35.376109760702', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (622923, '永靖县', 'Y', '103.29250749455', '35.963330304471', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (622924, '广河县', 'G', '103.58240999619', '35.494101361696', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (622925, '和政县', 'H', '103.35752370329', '35.430589904166', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (622926, '东乡族自治县', 'D', '103.39561320437', '35.669329728624', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (622927, '积石山保安族东乡族撒拉族自治县', 'J', '102.88251807505', '35.72349932364', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (623001, '合作市', 'H', '102.917571573', '35.005935428196', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (623021, '临潭县', 'L', '103.36053329624', '34.698639411522', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (623022, '卓尼县', 'Z', '103.51361578396', '34.594916432804', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (623023, '舟曲县', 'Z', '104.37748996239', '33.790814973644', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (623024, '迭部县', 'D', '103.22844034558', '34.062020054097', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (623025, '玛曲县', 'M', '102.07860004026', '34.003358168342', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (623026, '碌曲县', 'L', '102.49442413371', '34.597087271566', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (623027, '夏河县', 'X', '102.52857708038', '35.208324325541', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630102, '城东区', 'C', '101.80956903833', '36.605707645661', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630103, '城中区', 'C', '101.79048354964', '36.628800570589', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630104, '城西区', 'C', '101.77241422413', '36.634496979524', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630105, '城北区', 'C', '101.77240488176', '36.656293630837', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630121, '大通回族土族自治县', 'D', '101.69256375752', '36.932666463407', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630122, '湟中县', 'H', '101.57861675782', '36.506627546281', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630123, '湟源县', 'H', '101.26244861154', '36.688587514903', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630202, '乐都区', 'L', '102.40856633883', '36.487820051522', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630203, '平安区', 'P', '102.11442787756', '36.506553573162', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630222, '民和回族土族自治县', 'M', '102.11044407228', '36.508511080941', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630223, '互助土族自治县', 'H', '101.96456904899', '36.850021613826', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630224, '化隆回族自治县', 'H', '102.27044827345', '36.100988250893', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (630225, '循化撒拉族自治县', 'X', '102.4953853206', '35.856667223862', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632221, '门源回族自治县', 'M', '101.62843803903', '37.382180626313', 632200, 3, 'tr_0 tr_630000 tr_632200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632222, '祁连县', 'Q', '100.25962157243', '38.182924871569', 632200, 3, 'tr_0 tr_630000 tr_632200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632223, '海晏县', 'H', '101.0005855486', '36.902376022515', 632200, 3, 'tr_0 tr_630000 tr_632200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632224, '刚察县', 'G', '100.15360607139', '37.327320072254', 632200, 3, 'tr_0 tr_630000 tr_632200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632321, '同仁县', 'T', '102.0254377812', '35.521865150524', 632300, 3, 'tr_0 tr_630000 tr_632300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632322, '尖扎县', 'J', '102.0375073242', '35.944284459868', 632300, 3, 'tr_0 tr_630000 tr_632300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632323, '泽库县', 'Z', '101.47359451319', '35.0420144951', 632300, 3, 'tr_0 tr_630000 tr_632300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632324, '河南蒙古族自治县', 'H', '101.62247338027', '34.740396071091', 632300, 3, 'tr_0 tr_630000 tr_632300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632521, '共和县', 'G', '100.62662348005', '36.288703317865', 632500, 3, 'tr_0 tr_630000 tr_632500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632522, '同德县', 'T', '100.58542386564', '35.259857775817', 632500, 3, 'tr_0 tr_630000 tr_632500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632523, '贵德县', 'G', '101.43953310384', '36.046158080751', 632500, 3, 'tr_0 tr_630000 tr_632500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632524, '兴海县', 'X', '99.994380072293', '35.594629879949', 632500, 3, 'tr_0 tr_630000 tr_632500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632525, '贵南县', 'G', '100.75359321473', '35.592415454611', 632500, 3, 'tr_0 tr_630000 tr_632500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632621, '玛沁县', 'M', '100.24556434882', '34.483569486002', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632622, '班玛县', 'B', '100.74360459645', '32.93850392747', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632623, '甘德县', 'G', '99.907510695578', '33.975003677602', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632624, '达日县', 'D', '99.658010113065', '33.754937373991', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632625, '久治县', 'J', '101.48853225585', '33.434773499408', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632626, '玛多县', 'M', '98.215883832099', '34.920748646186', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632701, '玉树市', 'Y', '97.015376401101', '32.999555650886', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632722, '杂多县', 'Z', '95.306964878828', '32.89924067586', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632723, '称多县', 'C', '97.115000009277', '33.374225698944', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632724, '治多县', 'Z', '95.61979357437', '33.857953267719', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632725, '囊谦县', 'N', '96.486918271283', '32.209194368698', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632726, '曲麻莱县', 'Q', '95.803750013992', '34.132298666997', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632801, '格尔木市', 'G', '94.933310210425', '36.412371046954', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632802, '德令哈市', 'D', '97.367470299975', '37.375345907463', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632803, '茫崖市', 'M', '90.87951750334', '38.261902814972', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632821, '乌兰县', 'W', '98.486735699295', '36.935747859032', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632822, '都兰县', 'D', '98.102704793777', '36.307611028682', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632823, '天峻县', 'T', '99.029242967967', '37.306903395111', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (632857, '大柴旦行政委员会', 'D', '95.371722465415', '37.857987655919', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640104, '兴庆区', 'X', '106.29549376692', '38.479578929456', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640105, '西夏区', 'X', '106.15658124015', '38.496817469604', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640106, '金凤区', 'J', '106.24956089094', '38.478695238722', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640121, '永宁县', 'Y', '106.25960457536', '38.283001541521', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640122, '贺兰县', 'H', '106.3565182653', '38.560406689579', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO hg_sys_provinces (id, title, pinyin, lng, lat, pid, level, tree, sort, status, created_at, updated_at) VALUES + (640181, '灵武市', 'L', '106.34644035545', '38.108658666793', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540502, '乃东区', 'N', '91.778681965641', '29.234229154985', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540521, '扎囊县', 'Z', '91.343627127639', '29.251164315795', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540522, '贡嘎县', 'G', '90.990582372498', '29.295585920341', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540523, '桑日县', 'S', '92.022157253696', '29.265175836421', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540524, '琼结县', 'Q', '91.690100777976', '29.030865581933', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540525, '曲松县', 'Q', '92.210174662975', '29.068424815624', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540526, '措美县', 'C', '91.439917573188', '28.444257990161', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540527, '洛扎县', 'L', '90.866452001915', '28.391634617398', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540528, '加查县', 'J', '92.600448881489', '29.146087474784', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540529, '隆子县', 'L', '92.468965520987', '28.414018998419', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540530, '错那县', 'C', '91.96375005827', '27.997004265923', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (540531, '浪卡子县', 'L', '90.404646883462', '28.973992017804', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640302, '利通区', 'L', '106.21940702074', '37.990746080857', 640300, 3, 'tr_0 tr_640000 tr_640300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640303, '红寺堡区', 'H', '106.06842117808', '37.431882454446', 640300, 3, 'tr_0 tr_640000 tr_640300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640323, '盐池县', 'Y', '107.41337954864', '37.789295649909', 640300, 3, 'tr_0 tr_640000 tr_640300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640324, '同心县', 'T', '105.9205990776', '36.986269629165', 640300, 3, 'tr_0 tr_640000 tr_640300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640381, '青铜峡市', 'Q', '106.08537031661', '38.027412223967', 640300, 3, 'tr_0 tr_640000 tr_640300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640402, '原州区', 'Y', '106.29451461392', '36.009367675763', 640400, 3, 'tr_0 tr_640000 tr_640400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640422, '西吉县', 'X', '105.73538590857', '35.97007642089', 640400, 3, 'tr_0 tr_640000 tr_640400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640423, '隆德县', 'L', '106.1184982967', '35.631762315094', 640400, 3, 'tr_0 tr_640000 tr_640400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640424, '泾源县', 'J', '106.33739343083', '35.504361637679', 640400, 3, 'tr_0 tr_640000 tr_640400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640425, '彭阳县', 'P', '106.64454429656', '35.85540546349', 640400, 3, 'tr_0 tr_640000 tr_640400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640502, '沙坡头区', 'S', '105.20357090089', '37.505701418703', 640500, 3, 'tr_0 tr_640000 tr_640500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640521, '中宁县', 'Z', '105.6915371912', '37.497420805579', 640500, 3, 'tr_0 tr_640000 tr_640500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640522, '海原县', 'H', '105.65055514638', '36.570781489719', 640500, 3, 'tr_0 tr_640000 tr_640500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650102, '天山区', 'T', '87.638407777566', '43.800271358313', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650103, '沙依巴克区', 'S', '87.604670027697', '43.807262352761', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650104, '新市区', 'X', '87.575908441201', '43.861394002748', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650105, '水磨沟区', 'S', '87.648896662192', '43.838251163831', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650106, '头屯河区', 'T', '87.434506709858', '43.882653022602', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650107, '达坂城区', 'D', '88.317397656607', '43.36994274634', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650109, '米东区', 'M', '87.662134271848', '43.979247426398', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650121, '乌鲁木齐县', 'W', '87.416028745179', '43.477086065793', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650171, '乌鲁木齐经济技术开发区', 'W', '87.523118529771', '43.868981036009', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650172, '乌鲁木齐高新技术产业开发区', 'W', '87.58408445863', '43.87767236981', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650202, '独山子区', 'D', '84.893613283343', '44.334407392365', 650200, 3, 'tr_0 tr_650000 tr_650200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650203, '克拉玛依区', 'K', '84.866221962114', '45.596624206981', 650200, 3, 'tr_0 tr_650000 tr_650200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650204, '白碱滩区', 'B', '85.139510123686', '45.693951629764', 650200, 3, 'tr_0 tr_650000 tr_650200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650205, '乌尔禾区', 'W', '85.700304826442', '46.095295184689', 650200, 3, 'tr_0 tr_650000 tr_650200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650402, '高昌区', 'G', '89.192458882701', '42.948548691684', 650400, 3, 'tr_0 tr_650000 tr_650400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650421, '鄯善县', 'S', '90.220093886103', '42.874759228479', 650400, 3, 'tr_0 tr_650000 tr_650400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650422, '托克逊县', 'T', '88.660164359541', '42.798545831023', 650400, 3, 'tr_0 tr_650000 tr_650400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650502, '伊州区', 'Y', '93.521320462369', '42.832824924721', 650500, 3, 'tr_0 tr_650000 tr_650500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650521, '巴里坤哈萨克自治县', 'B', '93.022930953564', '43.605688770787', 650500, 3, 'tr_0 tr_650000 tr_650500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (650522, '伊吾县', 'Y', '94.703825671285', '43.260676527466', 650500, 3, 'tr_0 tr_650000 tr_650500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652301, '昌吉市', 'C', '87.27386462195', '44.020126845939', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652302, '阜康市', 'F', '87.993677905062', '44.163137321346', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652323, '呼图壁县', 'H', '86.905143806731', '44.197654596132', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652324, '玛纳斯县', 'M', '86.220643452199', '44.3100628588', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652325, '奇台县', 'Q', '89.601080811724', '44.026897819018', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652327, '吉木萨尔县', 'J', '89.187122858141', '44.005717795203', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652328, '木垒哈萨克自治县', 'M', '90.292514737334', '43.840308302807', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652701, '博乐市', 'B', '82.057972254591', '44.860009784639', 652700, 3, 'tr_0 tr_650000 tr_652700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652702, '阿拉山口市', 'A', '82.560725272438', '45.179670079921', 652700, 3, 'tr_0 tr_650000 tr_652700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652722, '精河县', 'J', '82.900655316205', '44.606645943492', 652700, 3, 'tr_0 tr_650000 tr_652700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652723, '温泉县', 'W', '81.031145546486', '44.974856638705', 652700, 3, 'tr_0 tr_650000 tr_652700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652801, '库尔勒市', 'K', '86.181494309938', '41.732373221412', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652822, '轮台县', 'L', '84.258212152054', '41.783813000515', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652823, '尉犁县', 'W', '86.266036536399', '41.350122782054', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652824, '若羌县', 'R', '88.175324441896', '39.028991037175', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652825, '且末县', 'Q', '85.535990385731', '38.15138769413', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652826, '焉耆回族自治县', 'Y', '86.581222026277', '42.064850858728', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652827, '和静县', 'H', '86.390398220692', '42.329365035879', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652828, '和硕县', 'H', '86.883689037252', '42.288065062428', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652829, '博湖县', 'B', '86.638469149986', '41.986430356829', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652871, '库尔勒经济技术开发区', 'K', '86.229512961483', '41.71760888729', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652901, '阿克苏市', 'A', '80.269926757334', '41.173859926953', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652922, '温宿县', 'W', '80.245564352581', '41.282567249887', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652923, '库车县', 'K', '82.968458787284', '41.723447514833', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652924, '沙雅县', 'S', '82.788823736148', '41.227749329027', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652925, '新和县', 'X', '82.615823030526', '41.553999628477', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652926, '拜城县', 'B', '81.858516272038', '41.800706601984', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652927, '乌什县', 'W', '79.230868990897', '41.220871106999', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652928, '阿瓦提县', 'A', '80.381849245908', '40.649358802911', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (652929, '柯坪县', 'K', '79.053213535614', '40.514055520966', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653001, '阿图什市', 'A', '76.174906408698', '39.722079128589', 653000, 3, 'tr_0 tr_650000 tr_653000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653022, '阿克陶县', 'A', '75.953725266709', '39.153888517642', 653000, 3, 'tr_0 tr_650000 tr_653000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653023, '阿合奇县', 'A', '78.45253927839', '40.942958224222', 653000, 3, 'tr_0 tr_650000 tr_653000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653024, '乌恰县', 'W', '75.26533363237', '39.725123590953', 653000, 3, 'tr_0 tr_650000 tr_653000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653101, '喀什市', 'K', '76.000312737915', '39.473649532912', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653121, '疏附县', 'S', '75.869168667361', '39.381291555212', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653122, '疏勒县', 'S', '76.056614395075', '39.406709108732', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653123, '英吉沙县', 'Y', '76.182075425651', '38.935670863521', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653124, '泽普县', 'Z', '77.266559423761', '38.190725516333', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653125, '莎车县', 'S', '77.252436713686', '38.420156752419', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653126, '叶城县', 'Y', '77.420097621865', '37.889166844427', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653127, '麦盖提县', 'M', '77.658824287414', '38.911194315553', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653128, '岳普湖县', 'Y', '76.78414771574', '39.239387333945', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653129, '伽师县', 'J', '76.730385568257', '39.493851605868', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653130, '巴楚县', 'B', '78.5557014018', '39.79078837708', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653131, '塔什库尔干塔吉克自治县', 'T', '75.230804744838', '37.779045640763', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653201, '和田市', 'H', '79.920212469755', '37.118335544466', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653221, '和田县', 'H', '79.866215595042', '37.090362410221', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653222, '墨玉县', 'M', '79.735479265358', '37.282993446907', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653223, '皮山县', 'P', '78.289871062405', '37.627248714375', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653224, '洛浦县', 'L', '80.195387611879', '37.079611030988', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653225, '策勒县', 'C', '80.813201268742', '37.004122359371', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653226, '于田县', 'Y', '81.683782914748', '36.86295413611', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (653227, '民丰县', 'M', '82.702713427589', '37.070256968231', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654002, '伊宁市', 'Y', '81.284242405278', '43.915299436243', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654003, '奎屯市', 'K', '84.909449241687', '44.432057210004', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654004, '霍尔果斯市', 'H', '80.427129772427', '44.235308556093', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654021, '伊宁县', 'Y', '81.533906479394', '43.982909125124', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654022, '察布查尔锡伯自治县', 'C', '81.157924570907', '43.846690330452', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654023, '霍城县', 'H', '80.885281123201', '44.062249507399', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654024, '巩留县', 'G', '82.238225609409', '43.488485559536', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654025, '新源县', 'X', '83.267022301497', '43.435927002185', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654026, '昭苏县', 'Z', '81.137377539147', '43.163496741509', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654027, '特克斯县', 'T', '81.842587249244', '43.224248213467', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654028, '尼勒克县', 'N', '82.51800753168', '43.804594836238', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654201, '塔城市', 'T', '82.987235518406', '46.750948254373', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654202, '乌苏市', 'W', '84.720088146964', '44.424048034452', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654221, '额敏县', 'E', '83.633374454783', '46.531884861309', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654223, '沙湾县', 'S', '85.626144686035', '44.331949461741', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654224, '托里县', 'T', '83.612909438315', '45.94274280505', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654225, '裕民县', 'Y', '82.9894387025', '46.207453546928', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654226, '和布克赛尔蒙古自治县', 'H', '85.735008883548', '46.798685112637', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654301, '阿勒泰市', 'A', '88.139226564024', '47.832752648475', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654321, '布尔津县', 'B', '86.881360170273', '47.707951723888', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654322, '富蕴县', 'F', '89.531953408055', '46.999951053055', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654323, '福海县', 'F', '87.493157246325', '47.118140737535', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654324, '哈巴河县', 'H', '86.424817684664', '48.066148902458', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654325, '青河县', 'Q', '90.389444407193', '46.68019396705', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (654326, '吉木乃县', 'J', '85.880818240706', '47.449018413257', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (659001, '石河子市', 'S', '114.5163190347', '36.772534944449', 659000, 3, 'tr_0 tr_650000 tr_659000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (659002, '阿拉尔市', 'A', '81.287354225395', '40.553263894706', 659000, 3, 'tr_0 tr_650000 tr_659000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (659003, '图木舒克市', 'T', '79.075616286896', '39.871209077425', 659000, 3, 'tr_0 tr_650000 tr_659000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (659004, '五家渠市', 'W', '87.549936632296', '44.172444518901', 659000, 3, 'tr_0 tr_650000 tr_659000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (659006, '铁门关市', 'T', '85.686857831724', '41.863648697693', 659000, 3, 'tr_0 tr_650000 tr_659000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130102, '长安区', 'Z', '114.54561160958', '38.043256136498', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130104, '桥西区', 'Q', '114.46741977426', '38.010381080199', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130105, '新华区', 'X', '114.46943844641', '38.057119539196', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130107, '井陉矿区', 'J', '114.06863186515', '38.070565834517', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130108, '裕华区', 'Y', '114.53758291426', '38.012087686284', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130109, '藁城区', 'G', '114.85337790442', '38.027816555321', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130110, '鹿泉区', 'L', '114.32059757764', '38.09174945759', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130111, '栾城区', 'L', '114.65457561879', '37.905816364165', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130121, '井陉县', 'J', '114.15146299928', '38.038386214927', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130123, '正定县', 'Z', '114.57748106365', '38.151713727954', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130125, '行唐县', 'X', '114.55960676028', '38.444238747676', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130126, '灵寿县', 'L', '114.38947775771', '38.314629370046', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130127, '高邑县', 'G', '114.61841307286', '37.621879561553', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130128, '深泽县', 'S', '115.20740369913', '38.190451203069', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130129, '赞皇县', 'Z', '114.39246354556', '37.671667061291', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130130, '无极县', 'W', '114.98243934348', '38.18543617028', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130131, '平山县', 'P', '113.98543503085', '38.271951013311', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130132, '元氏县', 'Y', '114.53256551866', '37.772338553855', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130133, '赵县', 'Z', '114.78259655058', '37.761858522888', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130171, '石家庄高新技术产业开发区', 'S', '114.47561896798', '38.014375062684', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130172, '石家庄循环化工园区', 'S', '114.69991493042', '38.002797025837', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130181, '辛集市', 'X', '115.22445084279', '37.949309043173', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130183, '晋州市', 'J', '115.0505290147', '38.039491309736', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130184, '新乐市', 'X', '114.69053218327', '38.349292647959', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130202, '路南区', 'L', '118.20604028639', '39.612986996735', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130203, '路北区', 'L', '118.2239040796', '39.673985965975', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130204, '古冶区', 'G', '118.45340092552', '39.739735914766', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130205, '开平区', 'K', '118.26860762449', '39.677143635862', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130207, '丰南区', 'F', '118.0903655757', '39.581540485109', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130208, '丰润区', 'F', '118.16854133135', '39.838353430851', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130209, '曹妃甸区', 'C', '118.46645986221', '39.279283996335', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130224, '滦南县', 'L', '118.68040524315', '39.510044702469', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130225, '乐亭县', 'L', '118.91938406305', '39.431931320096', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130227, '迁西县', 'Q', '118.32038397781', '40.147837151362', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130229, '玉田县', 'Y', '117.74543440564', '39.906592348189', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130271, '唐山市芦台经济技术开发区', 'T', '117.83195389236', '39.334328330689', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130272, '唐山市汉沽管理区', 'T', '117.88832858176', '39.367125548614', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130273, '唐山高新技术产业开发区', 'T', '118.18645947204', '39.636583724147', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130274, '河北唐山海港经济开发区', 'H', '119.00992050252', '39.237818631017', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130281, '遵化市', 'Z', '117.97237521307', '40.195533204033', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130283, '迁安市', 'Q', '118.70645736056', '40.004183924931', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130284, '滦州市', 'L', '118.71048006247', '39.747115765489', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130302, '海港区', 'H', '119.61747524097', '39.940412688357', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130303, '山海关区', 'S', '119.78243521397', '39.984445641831', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130304, '北戴河区', 'B', '119.49152607118', '39.841005667936', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130306, '抚宁区', 'F', '119.25154914402', '39.88141356935', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130321, '青龙满族自治县', 'Q', '118.95648129587', '40.412793702313', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130322, '昌黎县', 'C', '119.16937521021', '39.71905083388', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130324, '卢龙县', 'L', '118.89948911126', '39.897958466103', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130371, '秦皇岛市经济技术开发区', 'Q', '119.48439783729', '39.943641230776', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130372, '北戴河新区', 'B', '119.47981001139', '39.831809170026', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130402, '邯山区', 'H', '114.49638868967', '36.586692191979', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130403, '丛台区', 'C', '114.49943259789', '36.642672565982', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130404, '复兴区', 'F', '114.44809470749', '36.610368592227', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130406, '峰峰矿区', 'F', '114.21948332131', '36.425653614399', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130407, '肥乡区', 'F', '114.80654708226', '36.55382525367', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130408, '永年区', 'Y', '114.55062514246', '36.747569389575', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130423, '临漳县', 'L', '114.62642694614', '36.340765980595', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130424, '成安县', 'C', '114.67657655802', '36.449796208953', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130425, '大名县', 'D', '115.15461253007', '36.291288466231', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130426, '涉县', 'S', '113.69758434883', '36.590691663211', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130427, '磁县', 'C', '114.38043173139', '36.380358940947', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130430, '邱县', 'Q', '115.19339516368', '36.817362417143', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130431, '鸡泽县', 'J', '114.89658577064', '36.916398206414', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130432, '广平县', 'G', '114.95441490649', '36.489779995612', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130433, '馆陶县', 'G', '115.28853676635', '36.553956728653', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130434, '魏县', 'W', '114.94545044631', '36.366156454371', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130435, '曲周县', 'Q', '114.96340442939', '36.771544831336', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130471, '邯郸经济技术开发区', 'H', '114.54562822824', '36.631262731204', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130473, '邯郸冀南新区', 'H', '114.54562822824', '36.631262731204', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130481, '武安市', 'W', '114.21051607638', '36.70248828628', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130502, '桥东区', 'Q', '114.51347113674', '37.073749959651', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130503, '桥西区', 'Q', '114.4743934996', '37.066172415704', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130521, '邢台县', 'X', '114.14341085818', '37.17710928752', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130522, '临城县', 'L', '114.50544333972', '37.450788548442', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130523, '内丘县', 'N', '114.51849293403', '37.292857912047', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130524, '柏乡县', 'B', '114.69949736209', '37.488758727152', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130525, '隆尧县', 'L', '114.77661608165', '37.355908006295', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130526, '任县', 'R', '114.67860600983', '37.126726783523', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130527, '南和县', 'N', '114.69054772395', '37.01099797056', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130528, '宁晋县', 'N', '114.92556169283', '37.625612279932', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130529, '巨鹿县', 'J', '115.04358735887', '37.227088328938', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130530, '新河县', 'X', '115.24854716945', '37.534590601536', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130531, '广宗县', 'G', '115.14960474634', '37.080457122162', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130532, '平乡县', 'P', '115.03658174369', '37.069096393044', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130533, '威县', 'W', '115.27361761861', '36.981581608663', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130534, '清河县', 'Q', '115.67439356765', '37.046375401617', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130535, '临西县', 'L', '115.50762943786', '36.87675996654', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130571, '河北邢台经济开发区', 'H', '114.51146225613', '37.076685950966', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130581, '南宫市', 'N', '115.4145290548', '37.364069402723', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130582, '沙河市', 'S', '114.50947385688', '36.861127341145', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130602, '竞秀区', 'J', '115.46543414161', '38.883787961691', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130606, '莲池区', 'L', '115.53548768833', '38.860675807041', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130607, '满城区', 'M', '115.3283750886', '38.955441208686', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130608, '清苑区', 'Q', '115.49660588179', '38.771001774749', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130609, '徐水区', 'X', '115.66247952133', '39.024712583834', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130623, '涞水县', 'L', '115.72054302508', '39.400334198489', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130624, '阜平县', 'F', '114.20156347384', '38.855351444796', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130626, '定兴县', 'D', '115.81441011189', '39.269423528527', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130627, '唐县', 'T', '114.9894471146', '38.754019925125', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130628, '高阳县', 'G', '115.78544721513', '38.706257734087', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130629, '容城县', 'R', '115.86863129349', '39.048559435416', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130630, '涞源县', 'L', '114.70047561679', '39.366271691524', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130631, '望都县', 'W', '115.16158760286', '38.700157645549', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130632, '安新县', 'A', '115.94242628266', '38.941734298593', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130633, '易县', 'Y', '115.50360664612', '39.355054469981', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130634, '曲阳县', 'Q', '114.7514548138', '38.628384104122', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130635, '蠡县', 'L', '115.59044548045', '38.494200963238', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130636, '顺平县', 'S', '115.14159743069', '38.843261370364', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130637, '博野县', 'B', '115.47046698806', '38.463408004952', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130638, '雄县', 'X', '116.11460144552', '39.000180119499', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130671, '保定高新技术产业开发区', 'B', '115.47146383769', '38.879987768455', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130672, '保定白沟新城', 'B', '116.06423983354', '39.145149134834', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130681, '涿州市', 'Z', '115.98161971138', '39.491065832', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130682, '定州市', 'D', '114.99649620776', '38.522198840134', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130683, '安国市', 'A', '115.33340802488', '38.424828318687', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130684, '高碑店市', 'G', '115.88056905507', '39.332335447462', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130702, '桥东区', 'Q', '114.90060577763', '40.794268437423', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130703, '桥西区', 'Q', '114.87651609843', '40.825605695041', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130705, '宣化区', 'X', '115.1054444068', '40.614591888266', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130706, '下花园区', 'X', '115.29351688226', '40.508145182672', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130708, '万全区', 'W', '114.74742582376', '40.773149648997', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130709, '崇礼区', 'C', '115.28954933632', '40.98047788587', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130722, '张北县', 'Z', '114.7263751121', '41.164943620015', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130723, '康保县', 'K', '114.60635583664', '41.858636884497', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130724, '沽源县', 'G', '115.69540744878', '41.676015876097', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130725, '尚义县', 'S', '113.97552438548', '41.081888482486', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130726, '蔚县', 'W', '114.5954005518', '39.847088636366', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130727, '阳原县', 'Y', '114.15752413604', '40.109588388731', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130728, '怀安县', 'H', '114.39246911506', '40.680369343116', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130730, '怀来县', 'H', '115.52455288485', '40.420289890382', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130731, '涿鹿县', 'Z', '115.21138346203', '40.385834075003', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130732, '赤城县', 'C', '115.83850589957', '40.918761216841', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130771, '张家口市高新技术产业开发区', 'Z', '114.89257223145', '40.773237202691', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130772, '张家口市察北管理区', 'Z', '115.13535097349', '41.463489368202', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130773, '张家口市塞北管理区', 'Z', '115.80931788745', '41.877919284073', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130802, '双桥区', 'S', '117.94942790899', '40.980824477401', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130803, '双滦区', 'S', '117.80657828883', '40.964729148178', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130804, '鹰手营子矿区', 'Y', '117.66560909159', '40.552043233623', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130821, '承德县', 'C', '118.18045573699', '40.774367194936', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130822, '兴隆县', 'X', '117.50742737264', '40.423454029635', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130824, '滦平县', 'L', '117.33949787111', '40.94756096291', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130825, '隆化县', 'L', '117.7454510243', '41.319898805021', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130826, '丰宁满族自治县', 'F', '116.65239270009', '41.215336380004', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130827, '宽城满族自治县', 'K', '118.49159436055', '40.617151507814', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130828, '围场满族蒙古族自治县', 'W', '117.76656434785', '41.944323773611', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130871, '承德高新技术产业开发区', 'C', '117.96939750997', '40.957856012338', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130881, '平泉市', 'P', '118.70742672204', '41.023755625929', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130902, '新华区', 'X', '116.87243317375', '38.320366719478', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130903, '运河区', 'Y', '116.8386119713', '38.316522737476', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130921, '沧县', 'C', '116.88439779466', '38.299452743407', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130922, '青县', 'Q', '116.81057477836', '38.58846475864', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130923, '东光县', 'D', '116.54340955698', '37.894513906653', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130924, '海兴县', 'H', '117.50441804918', '38.149402516518', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130925, '盐山县', 'Y', '117.23741362448', '38.064318399559', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130926, '肃宁县', 'S', '115.83651767998', '38.428905919718', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130927, '南皮县', 'N', '116.71560115883', '38.045187886965', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130928, '吴桥县', 'W', '116.39739206243', '37.633908755554', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130929, '献县', 'X', '116.12956002887', '38.195981438007', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130930, '孟村回族自治县', 'M', '117.11043607455', '38.059839127888', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130971, '河北沧州经济开发区', 'H', '116.84558075595', '38.310215141107', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130972, '沧州高新技术产业开发区', 'C', '116.81727200975', '38.34342368505', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130973, '沧州渤海新区', 'C', '117.7623777537', '38.282913560669', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130981, '泊头市', 'P', '116.58462803581', '38.089256915446', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130982, '任丘市', 'R', '116.1056050955', '38.717348630775', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130983, '黄骅市', 'H', '117.33648109172', '38.377493900735', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (130984, '河间市', 'H', '116.10562809212', '38.451356515106', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131002, '安次区', 'A', '116.70963326617', '39.526159764041', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131003, '广阳区', 'G', '116.71761426148', '39.528611447334', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131022, '固安县', 'G', '116.30542004093', '39.444484855304', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131023, '永清县', 'Y', '116.50542928985', '39.327852998574', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131024, '香河县', 'X', '117.0124021078', '39.767939188546', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131025, '大城县', 'D', '116.66040917846', '38.710858640026', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131026, '文安县', 'W', '116.464609479', '38.87895049307', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131028, '大厂回族自治县', 'D', '116.99640912565', '39.892208394086', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131071, '廊坊经济技术开发区', 'L', '116.76777922809', '39.587610159458', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131081, '霸州市', 'B', '116.3983972663', '39.130920596981', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131082, '三河市', 'S', '117.08458787248', '39.988099552443', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131102, '桃城区', 'T', '115.68139532011', '37.741636751694', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131103, '冀州区', 'J', '115.58542988146', '37.557086025833', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131121, '枣强县', 'Z', '115.7305629044', '37.519363689764', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131122, '武邑县', 'W', '115.89451363117', '37.807764276867', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131123, '武强县', 'W', '115.98961391178', '38.046856805237', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131124, '饶阳县', 'R', '115.73257160535', '38.241037525428', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131125, '安平县', 'A', '115.52554928532', '38.240506922191', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131126, '故城县', 'G', '115.97260216135', '37.353347552477', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131127, '景县', 'J', '116.2774107853', '37.698814551395', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131128, '阜城县', 'F', '116.18242153525', '37.868732457906', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131171, '河北衡水高新技术产业开发区', 'H', '115.73456139967', '37.807821775773', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131172, '衡水滨湖新区', 'H', '115.70627999969', '37.701616037093', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (131182, '深州市', 'S', '115.56636927583', '38.006941234922', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640202, '大武口区', '', '', '', 640200, 3, 'tr_0 tr_640000 tr_640200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640205, '惠农区', '', '', '', 640200, 3, 'tr_0 tr_640000 tr_640200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), + (640221, '平罗县', '', '', '', 640200, 3, 'tr_0 tr_640000 tr_640200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); + +-- -------------------------------------------------------- + +-- +-- 转存表中的数据 hg_sys_serve_license +-- + +INSERT INTO hg_sys_serve_license (id, "group", name, appid, secret_key, remote_addr, online_limit, login_times, last_login_at, last_active_at, routes, allowed_ips, end_at, remark, status, created_at, updated_at) VALUES + (1, 'cron', '定时任务', '1002', 'hotgo', '127.0.0.1:62082', 1, 193, '2024-07-21 21:46:36', '2024-07-21 21:59:08', NULL, '127.0.0.1', '2033-03-09 00:00:00', '这是默认的定时任务TCP客户端授权凭证。', 1, '2023-03-11 00:00:00', '2024-07-21 21:59:08'), + (2, 'auth', '授权服务', 'mengshuai', '123456', '127.0.0.1:50640', 1, 3, '2023-07-26 17:05:30', '2023-07-26 17:07:01', '["ExampleRPCHelloReq", "ExampleHelloReq", "AuthSummaryReq"]', '127.0.0.1', '2033-03-09 00:00:00', '这是一个测试的授权服务,可以为第三方平台提供授权支持。', 1, '2023-03-11 00:00:00', '2023-07-26 17:07:01'); + +-- -------------------------------------------------------- + +-- 插入 hg_sys_sms_log 表数据 +INSERT INTO hg_sys_sms_log ( + id, event, mobile, code, times, ip, status, created_at, updated_at +) VALUES + (1, 'code', '1530380571', '1234', 1, '39.165.245.100', 1, '2022-12-16 16:01:30', '2022-01-24 11:33:16'); + +-- 插入 hg_test_category 表数据 +INSERT INTO hg_test_category ( + id, name, short_name, description, sort, remark, status, + created_at, updated_at, deleted_at +) VALUES + (1, '官方新闻', 'G', '用于演示关联表和字典选项生成和使用。', 10, '', 1, + '2023-01-03 00:00:00', '2023-01-03 00:00:00', NULL), + (2, '移动应用', 'Y', '', 20, '', 1, + '2023-01-03 00:00:00', '2023-01-03 00:00:00', NULL), + (3, '微信公众号', 'W', '', 30, '', 1, + '2023-01-03 00:00:00', '2023-01-03 00:00:00', NULL), + (4, '系统搭建', 'X', '', 40, '', 1, + '2023-01-03 00:00:00', '2023-01-03 00:00:00', NULL); + +-- 更新序列值 +SELECT setval('hg_test_category_id_seq', (SELECT MAX(id) FROM hg_test_category)); + +-- hg_addon_hgexample_tenant_order +CREATE INDEX ON hg_addon_hgexample_tenant_order (order_sn); +CREATE INDEX ON hg_addon_hgexample_tenant_order (user_id); +CREATE INDEX ON hg_addon_hgexample_tenant_order (merchant_id); +CREATE INDEX ON hg_addon_hgexample_tenant_order (tenant_id); + +-- hg_admin_cash +CREATE INDEX ON hg_admin_cash (member_id); + +-- hg_admin_credits_log +CREATE INDEX ON hg_admin_credits_log (member_id); + +-- hg_admin_dept +CREATE INDEX ON hg_admin_dept (pid); + +-- hg_admin_member +CREATE UNIQUE INDEX ON hg_admin_member (invite_code); +CREATE INDEX ON hg_admin_member (dept_id); +CREATE INDEX ON hg_admin_member (pid); + +-- hg_admin_menu +CREATE UNIQUE INDEX ON hg_admin_menu (name); +CREATE INDEX ON hg_admin_menu (pid); +CREATE INDEX ON hg_admin_menu (status); +CREATE INDEX ON hg_admin_menu (type); + +-- hg_admin_notice_read +CREATE UNIQUE INDEX ON hg_admin_notice_read (notice_id, member_id); + +-- hg_admin_oauth +CREATE INDEX ON hg_admin_oauth (oauth_client, oauth_openid); +CREATE INDEX ON hg_admin_oauth (member_id); + +-- hg_admin_order +CREATE INDEX ON hg_admin_order (order_sn); +CREATE INDEX ON hg_admin_order (member_id); + +-- hg_pay_log +CREATE UNIQUE INDEX ON hg_pay_log (order_sn); +CREATE INDEX ON hg_pay_log (member_id); + +-- hg_pay_refund +CREATE INDEX ON hg_pay_refund (order_sn); + +-- hg_sys_addons_config +CREATE UNIQUE INDEX ON hg_sys_addons_config (addon_name, key); +CREATE INDEX ON hg_sys_addons_config (addon_name); +CREATE INDEX ON hg_sys_addons_config (addon_name, "group"); + +-- hg_sys_addons_install +CREATE UNIQUE INDEX ON hg_sys_addons_install (name); + +-- hg_sys_attachment +CREATE INDEX ON hg_sys_attachment (md5); + +-- hg_sys_blacklist +CREATE UNIQUE INDEX ON hg_sys_blacklist (ip); + +-- hg_sys_config +CREATE INDEX ON hg_sys_config ("group"); +CREATE INDEX ON hg_sys_config (key); + +-- +-- Indexes for table hg_sys_dict_data +-- +CREATE INDEX dict_data_idx ON hg_sys_dict_data (type); + +-- hg_sys_dict_type +CREATE UNIQUE INDEX dict_type_idx ON hg_sys_dict_type (type); + +-- hg_sys_ems_log +CREATE INDEX ems_log_email_idx ON hg_sys_ems_log (email); + +-- hg_sys_log +CREATE INDEX log_error_code_idx ON hg_sys_log (error_code); +CREATE INDEX log_req_id_idx ON hg_sys_log (req_id); +CREATE INDEX log_member_id_idx ON hg_sys_log (member_id); + +-- hg_sys_login_log +CREATE INDEX login_log_member_id_idx ON hg_sys_login_log (member_id); +CREATE INDEX login_log_req_id_idx ON hg_sys_login_log (req_id); + +-- hg_sys_provinces +CREATE INDEX provinces_pid_idx ON hg_sys_provinces (pid); + +-- hg_sys_serve_license +CREATE UNIQUE INDEX serve_license_appid_idx ON hg_sys_serve_license (appid); + +-- hg_sys_serve_log +CREATE INDEX serve_log_level_format_idx ON hg_sys_serve_log (level_format); +CREATE INDEX serve_log_trace_id_idx ON hg_sys_serve_log (trace_id); + +-- hg_sys_sms_log +CREATE INDEX sms_log_mobile_idx ON hg_sys_sms_log (mobile); + +-- hg_test_category +-- hg_addon_hgexample_table +ALTER SEQUENCE hg_addon_hgexample_table_id_seq RESTART WITH 7; + +-- hg_addon_hgexample_tenant_order +ALTER SEQUENCE hg_addon_hgexample_tenant_order_id_seq RESTART WITH 2; + +-- hg_admin_cash +ALTER SEQUENCE hg_admin_cash_id_seq RESTART WITH 2; + +-- hg_admin_credits_log +ALTER SEQUENCE hg_admin_credits_log_id_seq RESTART WITH 8; + +-- hg_admin_dept +ALTER SEQUENCE hg_admin_dept_id_seq RESTART WITH 113; + +-- hg_admin_member +ALTER SEQUENCE hg_admin_member_id_seq RESTART WITH 14; + +-- hg_admin_menu +ALTER SEQUENCE hg_admin_menu_id_seq RESTART WITH 2431; + +-- hg_admin_notice +ALTER SEQUENCE hg_admin_notice_id_seq RESTART WITH 33; + +-- hg_admin_notice_read +ALTER SEQUENCE hg_admin_notice_read_id_seq RESTART WITH 9; + +-- hg_admin_oauth +SELECT setval('hg_admin_oauth_id_seq', (SELECT COALESCE(MAX(id), 0) + 1 FROM hg_admin_oauth)); + +-- hg_admin_order +ALTER SEQUENCE hg_admin_order_id_seq RESTART WITH 2; + +-- hg_admin_post +ALTER SEQUENCE hg_admin_post_id_seq RESTART WITH 7; + +-- hg_admin_role +ALTER SEQUENCE hg_admin_role_id_seq RESTART WITH 211; + +-- hg_admin_role_casbin +SELECT setval('hg_admin_role_casbin_id_seq', (SELECT COALESCE(MAX(id), 0) + 1 FROM hg_admin_role_casbin)); + +-- hg_pay_log +ALTER SEQUENCE hg_pay_log_id_seq RESTART WITH 2; + +-- hg_pay_refund +SELECT setval('hg_pay_refund_id_seq', (SELECT COALESCE(MAX(id), 0) + 1 FROM hg_pay_refund)); + +-- hg_sys_addons_config +ALTER SEQUENCE hg_sys_addons_config_id_seq RESTART WITH 2; + +-- hg_sys_addons_install +ALTER SEQUENCE hg_sys_addons_install_id_seq RESTART WITH 2; + +-- hg_sys_attachment +ALTER SEQUENCE hg_sys_attachment_id_seq RESTART WITH 9; + +-- hg_sys_blacklist +ALTER SEQUENCE hg_sys_blacklist_id_seq RESTART WITH 8; + +-- hg_sys_config +ALTER SEQUENCE hg_sys_config_id_seq RESTART WITH 129; + +-- hg_sys_cron +ALTER SEQUENCE hg_sys_cron_id_seq RESTART WITH 11; + +-- hg_sys_cron_group +ALTER SEQUENCE hg_sys_cron_group_id_seq RESTART WITH 3; + +-- hg_sys_dict_data +ALTER SEQUENCE hg_sys_dict_data_id_seq RESTART WITH 171; + +-- hg_sys_dict_type +ALTER SEQUENCE hg_sys_dict_type_id_seq RESTART WITH 45; + +-- hg_sys_ems_log +ALTER SEQUENCE hg_sys_ems_log_id_seq RESTART WITH 5; + +-- hg_sys_gen_codes +ALTER SEQUENCE hg_sys_gen_codes_id_seq RESTART WITH 12; + +-- hg_sys_gen_curd_demo +ALTER SEQUENCE hg_sys_gen_curd_demo_id_seq RESTART WITH 16; + +-- hg_sys_gen_tree_demo +ALTER SEQUENCE hg_sys_gen_tree_demo_id_seq RESTART WITH 41; + +-- hg_sys_log +SELECT setval('hg_sys_log_id_seq', (SELECT COALESCE(MAX(id), 0) + 1 FROM hg_sys_log)); + +-- hg_sys_login_log +SELECT setval('hg_sys_login_log_id_seq', (SELECT COALESCE(MAX(id), 0) + 1 FROM hg_sys_login_log)); + +-- hg_sys_serve_license +ALTER SEQUENCE hg_sys_serve_license_id_seq RESTART WITH 3; + +-- hg_sys_serve_log +SELECT setval('hg_sys_serve_log_id_seq', (SELECT COALESCE(MAX(id), 0) + 1 FROM hg_sys_serve_log)); + +-- hg_sys_sms_log +ALTER SEQUENCE hg_sys_sms_log_id_seq RESTART WITH 2; + +-- hg_test_category +ALTER SEQUENCE hg_test_category_id_seq RESTART WITH 5; diff --git a/server/storage/data/hotgo.sql b/server/storage/data/hotgo.sql new file mode 100644 index 0000000..57bd4d4 --- /dev/null +++ b/server/storage/data/hotgo.sql @@ -0,0 +1,6207 @@ +-- phpMyAdmin SQL Dump +-- version 4.4.15.10 +-- https://www.phpmyadmin.net +-- +-- Host: localhost +-- Generation Time: 2024-08-27 19:04:42 +-- 服务器版本: 5.7.37-log +-- PHP Version: 5.6.40 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Database: `hotgo` +-- + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_addon_hgexample_table` +-- + +CREATE TABLE IF NOT EXISTS `hg_addon_hgexample_table` ( + `id` bigint(20) NOT NULL COMMENT 'ID', + `pid` bigint(20) DEFAULT '0' COMMENT '上级ID', + `level` int(11) DEFAULT '1' COMMENT '树等级', + `tree` varchar(512) DEFAULT NULL COMMENT '关系树', + `category_id` bigint(20) DEFAULT NULL COMMENT '分类ID', + `flag` json DEFAULT NULL COMMENT '标签', + `title` varchar(255) NOT NULL COMMENT '标题', + `description` varchar(255) DEFAULT NULL COMMENT '描述', + `content` longtext COMMENT '内容', + `image` varchar(255) DEFAULT NULL COMMENT '单图', + `images` json DEFAULT NULL COMMENT '多图', + `attachfile` varchar(255) DEFAULT NULL COMMENT '附件', + `attachfiles` json DEFAULT NULL COMMENT '多附件', + `map` json DEFAULT NULL COMMENT '动态键值对', + `star` decimal(5,1) DEFAULT '0.0' COMMENT '推荐星', + `price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '价格', + `views` bigint(20) DEFAULT NULL COMMENT '浏览次数', + `activity_at` date DEFAULT NULL COMMENT '活动时间', + `start_at` datetime DEFAULT NULL COMMENT '开启时间', + `end_at` datetime DEFAULT NULL COMMENT '结束时间', + `switch` tinyint(1) DEFAULT NULL COMMENT '开关', + `sort` int(11) DEFAULT NULL COMMENT '排序', + `avatar` varchar(255) DEFAULT '' COMMENT '头像', + `sex` tinyint(1) DEFAULT NULL COMMENT '性别', + `qq` varchar(20) DEFAULT '' COMMENT 'qq', + `email` varchar(60) DEFAULT '' COMMENT '邮箱', + `mobile` varchar(20) DEFAULT '' COMMENT '手机号码', + `hobby` json DEFAULT NULL COMMENT '爱好', + `channel` int(11) DEFAULT '1' COMMENT '渠道', + `city_id` bigint(20) DEFAULT '0' COMMENT '所在城市', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `status` tinyint(1) DEFAULT '1' COMMENT '状态', + `created_by` bigint(20) DEFAULT '0' COMMENT '创建者', + `updated_by` bigint(20) DEFAULT '0' COMMENT '更新者', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间', + `deleted_at` datetime DEFAULT NULL COMMENT '删除时间' +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COMMENT='插件_案例_表格'; + +-- +-- 转存表中的数据 `hg_addon_hgexample_table` +-- + +INSERT INTO `hg_addon_hgexample_table` (`id`, `pid`, `level`, `tree`, `category_id`, `flag`, `title`, `description`, `content`, `image`, `images`, `attachfile`, `attachfiles`, `map`, `star`, `price`, `views`, `activity_at`, `start_at`, `end_at`, `switch`, `sort`, `avatar`, `sex`, `qq`, `email`, `mobile`, `hobby`, `channel`, `city_id`, `remark`, `status`, `created_by`, `updated_by`, `created_at`, `updated_at`, `deleted_at`) VALUES +(1, 0, 1, '', 1, '[1, 2]', '测试标题', '描述', '

这是内容............

', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqamvhlq4w3ki6bl.webp', '["https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqap5l9brk2lkavu.jpg", "https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqaqua7fw8ukbbp5.jpg"]', 'http://localhost:8000/attachment/2023-07-18/cu54ama4z54oejf5xx.mp3', '["https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqawg96ba4cuezvv.xlsx", "https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqaup19k9oznyixz.doc"]', '[{"key": "qwe", "value": "123"}, {"key": "asd", "value": "456"}]', '3.0', '88.00', 10, '2022-12-23', '2022-12-01 00:00:00', '2022-12-31 23:59:59', 1, 20, '', 15, '133814250', '133814250@qq.com', '15303830571', '[3, 2, 1]', 1, 140406, '备注!', 1, 1, 1, '2022-12-15 19:30:14', '2023-07-18 20:05:45', NULL), +(2, 0, 1, '', 0, '[1]', '测试2', '描述', '

不知道写点啥!


', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqbmxmtaq06gbnqa.jpeg', '["https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqborf529kf4cxbm.jpeg"]', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqawg96ba4cuezvv.xlsx', '["https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqaup19k9oznyixz.doc"]', '{}', '2.5', '10.00', 0, '2023-02-18', NULL, NULL, 2, 30, '', 0, '', '1561561@qq.com', '15303830571', '[2, 1]', 3, 140214, '', 1, 1, 1, '2023-02-06 14:17:11', '2023-11-13 17:18:18', NULL), +(3, 1, 2, 'tr_1 ', 0, '[1]', 'AAA', '', '', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqamvhlq4w3ki6bl.webp', '["https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqborf529kf4cxbm.jpeg"]', '', '{}', '{}', '1.0', '10.00', 0, '2023-11-13', NULL, NULL, 1, 40, '', 0, '13311', '1331@qq.cc', '15303830571', '{}', 0, 0, '', 1, 1, 1, '2023-11-13 17:34:42', '2023-11-13 17:55:26', NULL), +(4, 1, 2, 'tr_1 ', 0, '[1]', 'BBB', '', '', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqamvhlq4w3ki6bl.webp', '["https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqborf529kf4cxbm.jpeg"]', '', '{}', '{}', '2.5', '10.00', 0, '2023-11-13', NULL, NULL, 0, 50, '', 0, '12212', '165165@q.cc', '15303830561', '{}', 0, 0, '', 1, 1, 1, '2023-11-13 17:43:58', '2023-11-13 17:43:58', NULL), +(5, 3, 3, 'tr_1 tr_3', 0, '[1]', 'A1', '', '', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqamvhlq4w3ki6bl.webp', '["https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqborf529kf4cxbm.jpeg"]', '', '{}', '{}', '1.0', '10.00', 0, '2023-11-13', NULL, NULL, 1, 60, '', 0, '10121212', '122112@qq.cc', '15303830571', '{}', 3, 0, '', 1, 1, 1, '2023-11-13 17:45:22', '2024-07-21 21:55:01', NULL); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_addon_hgexample_tenant_order` +-- + +CREATE TABLE IF NOT EXISTS `hg_addon_hgexample_tenant_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID', + `merchant_id` bigint(20) NOT NULL COMMENT '商户ID', + `user_id` bigint(20) NOT NULL COMMENT '用户ID', + `product_name` varchar(255) DEFAULT NULL COMMENT '购买产品', + `order_sn` varchar(64) DEFAULT NULL COMMENT '订单号', + `money` decimal(10,2) NOT NULL COMMENT '充值金额', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `status` tinyint(4) DEFAULT '1' COMMENT '订单状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间' +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='多租户_充值订单'; + +-- +-- 转存表中的数据 `hg_addon_hgexample_tenant_order` +-- + +INSERT INTO `hg_addon_hgexample_tenant_order` (`id`, `tenant_id`, `merchant_id`, `user_id`, `product_name`, `order_sn`, `money`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, 8, 11, 12, '羊毛混纺大衣', '20230502074731zsv1Vh', '99.90', '', 1, '2024-04-10 00:00:00', '2024-04-19 00:00:00'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_admin_cash` +-- + +CREATE TABLE IF NOT EXISTS `hg_admin_cash` ( + `id` bigint(20) NOT NULL COMMENT 'ID', + `member_id` bigint(20) NOT NULL COMMENT '管理员ID', + `money` decimal(10,2) NOT NULL COMMENT '提现金额', + `fee` decimal(10,2) NOT NULL COMMENT '手续费', + `last_money` decimal(10,2) NOT NULL COMMENT '最终到账金额', + `ip` varchar(128) NOT NULL COMMENT '申请人IP', + `status` bigint(20) NOT NULL COMMENT '状态码', + `msg` varchar(128) DEFAULT NULL COMMENT '处理结果', + `handle_at` datetime DEFAULT NULL COMMENT '处理时间', + `created_at` datetime NOT NULL COMMENT '申请时间' +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='管理员_提现记录表'; + +-- +-- 转存表中的数据 `hg_admin_cash` +-- + +INSERT INTO `hg_admin_cash` (`id`, `member_id`, `money`, `fee`, `last_money`, `ip`, `status`, `msg`, `handle_at`, `created_at`) VALUES +(1, 1, '100.00', '3.00', '97.00', '127.0.0.1', 2, '', '2023-05-29 14:17:17', '2023-05-29 14:16:57'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_admin_credits_log` +-- + +CREATE TABLE IF NOT EXISTS `hg_admin_credits_log` ( + `id` bigint(20) NOT NULL COMMENT '变动ID', + `member_id` bigint(20) DEFAULT '0' COMMENT '管理员ID', + `app_id` varchar(64) DEFAULT NULL COMMENT '应用id', + `addons_name` varchar(100) NOT NULL DEFAULT '' COMMENT '插件名称', + `credit_type` varchar(32) NOT NULL DEFAULT '' COMMENT '变动类型', + `credit_group` varchar(32) DEFAULT NULL COMMENT '变动组别', + `before_num` decimal(10,2) DEFAULT '0.00' COMMENT '变动前', + `num` decimal(10,2) DEFAULT '0.00' COMMENT '变动数据', + `after_num` decimal(10,2) DEFAULT '0.00' COMMENT '变动后', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `ip` varchar(20) DEFAULT NULL COMMENT '操作人IP', + `map_id` bigint(20) DEFAULT '0' COMMENT '关联ID', + `status` tinyint(1) DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间' +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='管理员_资产变动表'; + +-- +-- 转存表中的数据 `hg_admin_credits_log` +-- + +INSERT INTO `hg_admin_credits_log` (`id`, `member_id`, `app_id`, `addons_name`, `credit_type`, `credit_group`, `before_num`, `num`, `after_num`, `remark`, `ip`, `map_id`, `status`, `created_at`, `updated_at`) VALUES +(1, 1, 'admin', '', 'balance', 'apply_cash', '99391.78', '-100.00', '99291.78', '后台申请提现', '127.0.0.1', 1, 0, '2023-05-29 14:16:57', '2023-05-29 14:16:57'), +(2, 1, 'admin', '', 'balance', 'op_incr', '99291.78', '-1.00', '99290.78', '为后台用户:8 操作增加余额:1', '127.0.0.1', 0, 0, '2023-07-06 17:17:39', '2023-07-06 17:17:39'), +(3, 8, 'admin', '', 'balance', 'incr', '3.22', '1.00', '4.22', '后台用户:1 为你操作增加余额:1', '127.0.0.1', 0, 0, '2023-07-06 17:17:39', '2023-07-06 17:17:39'), +(4, 1, 'admin', '', 'balance', 'op_incr', '99290.78', '-1.00', '99289.78', '为后台用户:13 操作增加余额:1', '::1', 0, 1, '2024-07-21 21:49:40', '2024-07-21 21:49:40'), +(5, 13, 'admin', '', 'balance', 'incr', '0.00', '1.00', '1.00', '后台用户:1 为你操作增加余额:1', '::1', 0, 1, '2024-07-21 21:49:40', '2024-07-21 21:49:40'), +(6, 1, 'admin', '', 'integral', 'op_incr', '89.00', '-1.00', '88.00', '为后台用户:12 操作增加积分:1', '::1', 0, 1, '2024-07-21 21:49:46', '2024-07-21 21:49:46'), +(7, 12, 'admin', '', 'integral', 'incr', '0.00', '1.00', '1.00', '后台用户:1 为你操作增加积分:1', '::1', 0, 1, '2024-07-21 21:49:46', '2024-07-21 21:49:46'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_admin_dept` +-- + +CREATE TABLE IF NOT EXISTS `hg_admin_dept` ( + `id` bigint(20) NOT NULL COMMENT '部门ID', + `pid` bigint(20) DEFAULT '0' COMMENT '父部门ID', + `name` varchar(32) DEFAULT NULL COMMENT '部门名称', + `code` varchar(255) DEFAULT NULL COMMENT '部门编码', + `type` varchar(10) DEFAULT NULL COMMENT '部门类型', + `leader` varchar(32) DEFAULT NULL COMMENT '负责人', + `phone` varchar(11) DEFAULT NULL COMMENT '联系电话', + `email` varchar(64) DEFAULT NULL COMMENT '邮箱', + `level` int(11) NOT NULL COMMENT '关系树等级', + `tree` varchar(512) DEFAULT NULL COMMENT '关系树', + `sort` int(11) DEFAULT '0' COMMENT '排序', + `status` tinyint(1) DEFAULT '1' COMMENT '部门状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=InnoDB AUTO_INCREMENT=113 DEFAULT CHARSET=utf8mb4 COMMENT='管理员_部门'; + +-- +-- 转存表中的数据 `hg_admin_dept` +-- + +INSERT INTO `hg_admin_dept` (`id`, `pid`, `name`, `code`, `type`, `leader`, `phone`, `email`, `level`, `tree`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(100, 0, 'hotgo', 'hotgo', 'company', 'mengshuai', '15303830571', '133814250@qq.com', 1, '', 10, 1, '2022-01-04 09:54:52', '2024-04-24 23:14:24'), +(101, 100, '深圳总公司', 'shenzhen', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 2, 'tr_100 ', 20, 1, '2022-01-04 17:54:52', '2023-08-02 14:03:23'), +(102, 100, '租户', 'tenant', 'tenant', 'hotgo', '15888888888', 'hotgo@qq.com', 2, 'tr_100 ', 1000, 1, '2022-01-04 01:54:52', '2024-04-13 22:24:58'), +(103, 101, '研发部门', 'science', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 40, 1, '2022-01-04 17:54:52', '2024-04-12 09:29:37'), +(105, 101, '测试部门', 'test', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 50, 1, '2022-01-04 17:54:52', '2024-04-12 09:29:41'), +(106, 101, '财务部门', 'finance', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 60, 1, '2022-01-04 17:54:52', '2024-04-12 09:29:45'), +(107, 101, '运维部门', 'maintain', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 70, 1, '2022-01-04 09:54:52', '2024-04-12 09:29:49'), +(110, 111, '用户', 'user', 'user', 'hotgo', '15888888888', 'hotgo@qq.com', 4, 'tr_100 tr_102 tr_111 ', 10, 1, '2024-04-12 09:18:44', '2024-04-13 22:25:07'), +(111, 102, '商户', 'merchant', 'merchant', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_102 ', 2000, 1, '2024-04-12 09:31:58', '2024-04-14 22:00:20'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_admin_member` +-- + +CREATE TABLE IF NOT EXISTS `hg_admin_member` ( + `id` bigint(20) NOT NULL COMMENT '管理员ID', + `dept_id` bigint(20) DEFAULT '0' COMMENT '部门ID', + `role_id` bigint(20) DEFAULT '10' COMMENT '角色ID', + `real_name` varchar(32) DEFAULT '' COMMENT '真实姓名', + `username` varchar(20) NOT NULL DEFAULT '' COMMENT '帐号', + `password_hash` char(32) NOT NULL DEFAULT '' COMMENT '密码', + `salt` char(16) NOT NULL COMMENT '密码盐', + `password_reset_token` varchar(150) DEFAULT '' COMMENT '密码重置令牌', + `integral` decimal(10,2) unsigned DEFAULT '0.00' COMMENT '积分', + `balance` decimal(10,2) unsigned DEFAULT '0.00' COMMENT '余额', + `avatar` char(150) DEFAULT '' COMMENT '头像', + `sex` tinyint(1) DEFAULT '1' COMMENT '性别', + `qq` varchar(20) DEFAULT '' COMMENT 'qq', + `email` varchar(60) DEFAULT '' COMMENT '邮箱', + `mobile` varchar(20) DEFAULT '' COMMENT '手机号码', + `birthday` date DEFAULT NULL COMMENT '生日', + `city_id` bigint(20) DEFAULT '0' COMMENT '城市编码', + `address` varchar(100) DEFAULT '' COMMENT '联系地址', + `pid` bigint(20) NOT NULL COMMENT '上级管理员ID', + `level` int(11) DEFAULT '1' COMMENT '关系树等级', + `tree` varchar(512) NOT NULL COMMENT '关系树', + `invite_code` varchar(12) DEFAULT NULL COMMENT '邀请码', + `cash` json DEFAULT NULL COMMENT '提现配置', + `last_active_at` datetime DEFAULT NULL COMMENT '最后活跃时间', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `status` tinyint(1) DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间' +) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COMMENT='管理员_用户表'; + +-- +-- 转存表中的数据 `hg_admin_member` +-- + +INSERT INTO `hg_admin_member` (`id`, `dept_id`, `role_id`, `real_name`, `username`, `password_hash`, `salt`, `password_reset_token`, `integral`, `balance`, `avatar`, `sex`, `qq`, `email`, `mobile`, `birthday`, `city_id`, `address`, `pid`, `level`, `tree`, `invite_code`, `cash`, `last_active_at`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, 100, 1, '孟帅', 'admin', 'a7c588fffeb2c1d99b29879d7fe97c78', '6541561', '', '88.00', '99289.78', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', 1, '133814250', '133814250@qq.com', '15303830571', '2016-04-16', 410172, '莲花街001号', 0, 1, '', '111', '{"name": "孟帅", "account": "15303830571", "payeeCode": "https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8mqal5isvcb58g.jpg"}', '2024-08-27 19:02:49', NULL, 1, '2021-02-12 17:59:45', '2024-08-27 19:02:49'), +(3, 100, 2, '测试管理员', 'test', 'a7c588fffeb2c1d99b29879d7fe97c78', '6541561', '', '0.00', '4.00', '', 1, '', 'c@qq.cc', '15303888888', '2016-04-13', 371100, '大潮街道666号', 1, 2, 'tr_1 ', '222', NULL, '2024-04-24 11:47:48', '', 1, '2022-02-11 17:59:45', '2024-04-24 11:47:48'), +(8, 102, 200, '阿萌', 'ameng', '382df3b083a27886edb94e669a857c33', 'hfuUEb', '', '11.00', '4.22', '', 2, '', '', '', NULL, 0, '', 1, 2, 'tr_1 ', '333', NULL, '2024-04-16 18:56:00', '', 1, '2023-02-03 17:34:31', '2024-04-16 18:56:00'), +(9, 100, 206, '黄敏', 'test_finance', '151f5f6bb8b223fc7b589a32effb6f91', 'FhShzw', '', '0.00', '0.00', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', 1, '', '', '', NULL, 0, '', 1, 2, 'tr_1 ', '5jZUI3uWLfcj', NULL, NULL, '', 1, '2023-08-02 11:30:45', '2023-08-02 11:31:09'), +(11, 111, 209, '刘芳', 'abai', '5787c7a121190011fac8376b1d3e0396', 'puUFvx', '', '0.00', '0.00', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', 1, '', '', '', NULL, 0, '', 8, 3, 'tr_1 tr_8 ', 'SH5akjqInb2p', NULL, '2024-04-16 18:56:02', '', 1, '2023-08-02 14:24:50', '2024-04-16 18:56:02'), +(12, 110, 210, '李明', 'asong', '18d1e667e2e756c03186ff6d33b18fd4', 'ONYhgf', '', '1.00', '0.00', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', 1, '', '', '', NULL, 0, '', 11, 4, 'tr_1 tr_8 tr_11 ', 'pHffclXhgeg9', NULL, '2024-04-23 18:05:03', '', 1, '2023-08-02 14:50:49', '2024-07-21 21:49:46'), +(13, 110, 210, '', 'user123', 'a67ec13a65125a6b2566c4229c6c496a', 'auQwMY', '', '0.00', '1.00', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', 1, '', '', '', NULL, 0, '', 1, 2, 'tr_1 ', 'bpZPxskFMBra', NULL, '2024-04-12 11:52:31', '', 1, '2024-04-12 10:50:46', '2024-07-21 21:49:40'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_admin_member_post` +-- + +CREATE TABLE IF NOT EXISTS `hg_admin_member_post` ( + `member_id` bigint(20) NOT NULL COMMENT '管理员ID', + `post_id` bigint(20) NOT NULL COMMENT '岗位ID' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员_用户岗位关联'; + +-- +-- 转存表中的数据 `hg_admin_member_post` +-- + +INSERT INTO `hg_admin_member_post` (`member_id`, `post_id`) VALUES +(3, 4), +(8, 2), +(9, 4), +(10, 4), +(11, 4); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_admin_member_role` +-- + +CREATE TABLE IF NOT EXISTS `hg_admin_member_role` ( + `member_id` bigint(20) NOT NULL COMMENT '管理员ID', + `role_id` bigint(20) NOT NULL COMMENT '角色ID' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员_用户角色关联'; + +-- +-- 转存表中的数据 `hg_admin_member_role` +-- + +INSERT INTO `hg_admin_member_role` (`member_id`, `role_id`) VALUES +(1, 1), +(2, 2); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_admin_menu` +-- + +CREATE TABLE IF NOT EXISTS `hg_admin_menu` ( + `id` bigint(20) NOT NULL COMMENT '菜单ID', + `pid` bigint(20) DEFAULT '0' COMMENT '父菜单ID', + `level` int(11) NOT NULL DEFAULT '1' COMMENT '关系树等级', + `tree` varchar(255) DEFAULT NULL COMMENT '关系树', + `title` varchar(64) NOT NULL COMMENT '菜单名称', + `name` varchar(128) NOT NULL COMMENT '名称编码', + `path` varchar(200) DEFAULT NULL COMMENT '路由地址', + `icon` varchar(128) DEFAULT NULL COMMENT '菜单图标', + `type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '菜单类型(1目录 2菜单 3按钮)', + `redirect` varchar(255) DEFAULT NULL COMMENT '重定向地址', + `permissions` varchar(512) DEFAULT NULL COMMENT '菜单包含权限集合', + `permission_name` varchar(64) DEFAULT NULL COMMENT '权限名称', + `component` varchar(255) DEFAULT NULL COMMENT '组件路径', + `always_show` tinyint(1) DEFAULT '0' COMMENT '取消自动计算根路由模式', + `active_menu` varchar(255) DEFAULT NULL COMMENT '高亮菜单编码', + `is_root` tinyint(1) DEFAULT '0' COMMENT '是否跟路由', + `is_frame` tinyint(1) DEFAULT '1' COMMENT '是否内嵌', + `frame_src` varchar(512) DEFAULT NULL COMMENT '内联外部地址', + `keep_alive` tinyint(1) DEFAULT '0' COMMENT '缓存该路由', + `hidden` tinyint(1) DEFAULT '0' COMMENT '是否隐藏', + `affix` tinyint(1) DEFAULT '0' COMMENT '是否固定', + `sort` int(11) DEFAULT '0' COMMENT '排序', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `status` tinyint(1) DEFAULT '1' COMMENT '菜单状态', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间', + `created_at` datetime DEFAULT NULL COMMENT '创建时间' +) ENGINE=InnoDB AUTO_INCREMENT=2431 DEFAULT CHARSET=utf8mb4 COMMENT='管理员_菜单权限'; + +-- +-- 转存表中的数据 `hg_admin_menu` +-- + +INSERT INTO `hg_admin_menu` (`id`, `pid`, `level`, `tree`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `sort`, `remark`, `status`, `updated_at`, `created_at`) VALUES +(2047, 0, 1, '', 'Dashboard', 'Dashboard', '/dashboard', 'DashboardOutlined', 1, '/dashboard/console', 'dashboard', '控制台', 'LAYOUT', 0, '', 0, 1, '', 0, 0, 0, 10, '这是一个备注..', 1, '2023-11-13 15:16:58', '2022-07-17 11:40:03'), +(2048, 2047, 2, 'tr_2047 ', '主控台', 'dashboard_console', 'console', '', 2, '', '/console/stat', '主控台', '/dashboard/console/console', 0, '', 0, 1, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2022-07-17 11:45:09'), +(2050, 2047, 2, 'tr_2047 ', '工作台', 'dashboard_workplace', 'workplace', '', 2, '', 'dashboard_workplace', '工作台', '/dashboard/workplace/workplace', 0, '', 0, 1, '', 0, 0, 0, 40, '', 1, '2023-11-13 15:16:58', '2022-07-17 11:45:09'), +(2061, 0, 1, '', '组织管理', 'Org', '/org', 'AppstoreOutlined', 1, '/org/user', '', '', 'LAYOUT', 1, '', 0, 0, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2022-09-16 06:08:19'), +(2062, 2061, 2, 'tr_2061 ', '后台用户', 'user', 'user', '', 2, '', '/dept/list,/post/list,/role/list,/member/list,/dept/option', '', '/org/user/user', 0, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-16 06:09:25'), +(2063, 2061, 2, 'tr_2061 ', '部门管理', 'org_dept', 'dept', '', 2, '', '', '', '/org/dept/dept', 0, '', 0, 0, '', 1, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2022-09-16 14:10:12'), +(2064, 2061, 2, 'tr_2061 ', '岗位管理', 'org_post', 'post', '', 2, '', '/post/list', '', '/org/post/post', 0, '', 0, 0, '', 1, 0, 0, 30, '', 1, '2023-11-13 15:16:58', '2022-09-16 14:11:05'), +(2065, 0, 1, '', '权限管理', 'Permission', '/permission', 'SafetyCertificateOutlined', 1, '/permission/menu', '', '', 'LAYOUT', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2023-11-13 15:16:58', '2022-09-15 22:08:19'), +(2066, 2065, 2, 'tr_2065 ', '菜单权限', 'permission_menu', 'menu', '', 2, '', '/menu/list', '', '/permission/menu/menu', 0, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-16 06:09:25'), +(2067, 2065, 2, 'tr_2065 ', '角色权限', 'permission_role', 'role', '', 2, '', '/role/list,/role/dataScope/select,/role/getPermissions', '', '/permission/role/role', 0, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-15 22:09:25'), +(2068, 0, 1, '', '系统设置', 'System', '/system', 'SettingOutlined', 1, '/system/config', '', '', 'LAYOUT', 1, '', 0, 0, '', 0, 0, 0, 120, '', 1, '2023-11-17 15:53:10', '2022-09-15 09:17:57'), +(2069, 2068, 2, 'tr_2068 ', '配置管理', 'system_config', 'config', '', 2, '', '', '', '/system/config/system', 0, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-16 01:19:01'), +(2070, 2068, 2, 'tr_2068 ', '字典管理', 'system_dict', 'dict', '', 2, '', '', '', '/system/dict/index', 1, '', 0, 0, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2022-09-16 17:33:05'), +(2071, 2068, 2, 'tr_2068 ', '定时任务', 'system_cron', 'cron', '', 2, '', '', '', '/system/cron/index', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2023-11-13 15:16:58', '2022-09-16 17:33:34'), +(2072, 2068, 2, 'tr_2068 ', '黑名单', 'system_blacklist', 'blacklist', '', 2, '', '', '', '/system/blacklist/index', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2023-11-13 15:16:58', '2022-09-16 17:34:01'), +(2073, 2219, 3, 'tr_2093 tr_2219 ', '个人设置', 'home_account', 'account', '', 2, '', '', '', '/home/account/account', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:49', '2022-09-16 17:34:35'), +(2074, 2093, 2, 'tr_2093 ', '日志管理', 'Logs', '/log', '', 1, '/apply/log/log', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-12 13:41:45', '2022-09-16 01:38:32'), +(2075, 2074, 3, 'tr_2093 tr_2074 ', '全局日志', 'log', 'log', '', 2, '', '/log/list', '', '/log/log/index', 2, '', 2, 2, '', 1, 2, 2, 10, '', 1, '2024-04-24 11:03:39', '2022-09-09 17:39:16'), +(2076, 2074, 3, 'tr_2093 tr_2074 ', '登录日志', 'login_log', 'login-log', '', 2, '', '', '', '/log/login-log/index', 2, '', 2, 2, '', 1, 2, 2, 20, '', 1, '2024-04-24 11:03:42', '2022-09-15 20:04:20'), +(2077, 2074, 3, 'tr_2093 tr_2074 ', '全局日志详情', 'log_view', 'view/:id?', '', 2, '', '/log/view', '', '/log/log/view', 0, 'log', 0, 0, '', 0, 1, 0, 15, '', 1, '2023-11-17 15:27:32', '2022-09-14 20:07:04'), +(2082, 2076, 4, 'tr_2093 tr_2074 tr_2076 ', '登录日志详情', 'loginLogView', 'view/:id?', '', 3, '', '/loginLog/view', '', '/log/login-log/view', 0, 'login_log', 0, 0, '', 0, 1, 0, 62, '', 1, '2023-11-17 15:27:32', '2022-09-14 20:07:04'), +(2083, 2076, 4, 'tr_2093 tr_2074 tr_2076 ', '登录日志列表', 'login_log_index', 'index', '', 3, '', '/loginLog/list', '', '/log/login-log/index', 0, 'login_log', 0, 0, '', 0, 1, 0, 61, '', 1, '2023-11-17 15:27:32', '2022-09-15 04:38:33'), +(2084, 2074, 3, 'tr_2093 tr_2074 ', '短信记录', 'sms_log', 'sms', '', 1, '', '/smsLog/list', '', '/log/sms-log/index', 0, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2023-11-17 15:27:32', '2022-09-17 19:13:51'), +(2087, 2074, 3, 'tr_2093 tr_2074 ', '服务日志', 'monitor_serve_log', 'serve_log', '', 2, '', '', '', '/monitor/serve-log/index', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2023-11-17 15:27:32', '2022-09-18 20:59:28'), +(2088, 2087, 4, 'tr_2093 tr_2074 tr_2087 ', '服务日志详情', 'monitor_serve_log_view', 'view/:id?', '', 3, '', '/serveLog/view', '', '/monitor/serve-log/view', 0, 'monitor_serve_log', 0, 0, '', 0, 1, 0, 62, '', 1, '2023-11-17 15:27:32', '2022-09-14 20:07:04'), +(2089, 2087, 4, 'tr_2093 tr_2074 tr_2087 ', '服务日志列表', 'monitor_serve_log_index', 'index', '', 3, '', '/serveLog/list', '', '/monitor/serve-log/index', 0, 'monitor_serve_log', 0, 0, '', 0, 1, 0, 61, '', 1, '2023-11-17 15:27:32', '2022-09-15 04:38:33'), +(2090, 0, 1, '', '系统监控', 'Monitors', '/monitor', 'FundProjectionScreenOutlined', 1, '', '', '', 'LAYOUT', 1, '', 0, 0, '', 0, 0, 0, 110, '', 1, '2023-11-17 15:34:42', '2022-09-15 17:38:32'), +(2091, 2090, 2, 'tr_2090 ', '在线用户', 'monitor_online', 'online', '', 2, '', '/monitor/userOnlineList', '', '/monitor/online/index', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-18 21:23:36'), +(2092, 2090, 2, 'tr_2090 ', '服务监控', 'monitor_serve_monitor', 'serve_monitor', '', 2, '', '', '', '/monitor/serve-monitor/index', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-18 21:23:36'), +(2093, 0, 1, '', '系统应用', 'Applys', '/apply', 'CodeSandboxOutlined', 1, '/apply/log/log', '', '', 'LAYOUT', 1, '', 0, 0, '', 0, 0, 0, 100, '', 1, '2024-04-12 15:39:05', '2022-09-18 21:29:53'), +(2094, 2093, 2, 'tr_2093 ', '通知公告', 'apply_notice', 'notice', '', 2, '', '/notice/list', '', '/apply/notice/index', 1, '', 0, 0, '', 0, 0, 0, 300, '', 1, '2023-11-17 15:28:00', '2022-09-18 21:30:19'), +(2095, 2093, 2, 'tr_2093 ', '附件管理', 'apply_attachment', 'attachment', '', 2, '', '/attachment/list', '', '/apply/attachment/index', 1, '', 0, 0, '', 0, 0, 0, 200, '', 1, '2023-11-17 15:27:58', '2022-09-18 21:30:40'), +(2096, 2093, 2, 'tr_2093 ', '地区编码', 'apply_provinces', 'provinces', '', 2, '', '/provinces/list,/provinces/tree,/provinces/childrenList,/provinces/uniqueId', '', '/apply/provinces/index', 1, '', 0, 0, '', 0, 0, 0, 100, '', 1, '2023-11-17 15:27:55', '2022-09-18 21:31:01'), +(2097, 0, 1, '', '开发工具', 'Develops', '/develop', 'CodeOutlined', 1, '/develop/code', '', '', 'LAYOUT', 1, '', 0, 0, '', 0, 0, 0, 210, '', 1, '2023-11-17 15:39:06', '2022-09-18 21:32:27'), +(2098, 2097, 2, 'tr_2097 ', '代码生成', 'develop_code', 'code', '', 2, '', '/genCodes/list,/genCodes/selects,/genCodes/tableSelect', '', '/develop/code/index', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-18 21:32:46'), +(2099, 2120, 2, 'tr_2120 ', 'API文档', 'apidocs', 'apidocs', '', 2, '', '', '', 'IFRAME', 2, '', 2, 1, 'https://hotgo.facms.cn/swagger', 2, 2, 2, 1000, '', 1, '2024-04-16 12:44:58', '2022-09-18 21:34:09'), +(2100, 2120, 2, 'tr_2120 ', '使用文档', 'https://github.com/bufanyun/hotgo/tree/v2.0/docs/guide-zh-CN', '/hotgo', '', 1, '', '', '', 'LAYOUT', 0, '', 2, 2, '', 2, 2, 2, 1100, '', 1, '2024-04-16 12:45:11', '2022-09-18 21:35:17'), +(2102, 0, 1, '', '关于', 'about', '/about', 'ProjectOutlined', 1, '/about/index', '', '', 'LAYOUT', 1, '', 1, 0, '', 0, 0, 0, 9000, '', 1, '2023-12-29 17:59:18', '2022-09-18 13:37:04'), +(2103, 2102, 2, 'tr_2102 ', '关于详情', 'about_index', 'index', '', 2, '', '', '', '/about/index', 1, 'about', 0, 0, '', 0, 1, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-18 13:38:00'), +(2109, 2062, 3, 'tr_2061 tr_2062 ', '编辑用户', 'org_user_edit', '', '', 3, '', '/member/edit,/member/view', '', '/', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-22 23:49:17'), +(2110, 2062, 3, 'tr_2061 tr_2062 ', '删除用户', 'org_user_delete', 'user', '', 3, '', '/member/delete', '', '/', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 21:34:51'), +(2111, 2062, 3, 'tr_2061 tr_2062 ', '修改用户状态', 'org_user_status', 'user', '', 3, '', '/member/status', '', '/', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 21:35:48'), +(2112, 2063, 3, 'tr_2061 tr_2063 ', '编辑部门', 'dept_edit', 'dept', '', 3, '', '/dept/edit', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 21:57:15'), +(2113, 2063, 3, 'tr_2061 tr_2063 ', '删除部门', 'dept_delete', 'dept', '', 3, '', '/dept/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 21:57:51'), +(2114, 2063, 3, 'tr_2061 tr_2063 ', '修改部门状态', 'dept_status', 'dept', '', 3, '', '/dept/status', '', '/', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 21:58:40'), +(2115, 2064, 3, 'tr_2061 tr_2064 ', '编辑岗位', 'post_edit', 'post', '', 3, '', '/post/edit', '', '/', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 21:59:30'), +(2116, 2064, 3, 'tr_2061 tr_2064 ', '删除岗位', 'post_delete', 'post', '', 3, '', '/post/delete', '', '/', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 22:00:13'), +(2117, 2064, 3, 'tr_2061 tr_2064 ', '修改岗位状态', 'post_status', 'post', '', 3, '', '/post/status', '', '/', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 22:00:54'), +(2118, 2095, 3, 'tr_2093 tr_2095 ', '上传附件', 'uploadFile', 'attachment', '', 3, '', '/upload/file', '', '/', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 22:14:19'), +(2120, 0, 1, '', '文档中心', 'doc', 'doc', 'FileTextOutlined', 1, '/doc/apidocs', '', '', 'LAYOUT', 0, '', 2, 2, '', 2, 2, 2, 300, '', 1, '2024-04-16 12:45:41', '2022-11-24 00:08:19'), +(2122, 2228, 3, 'tr_2227 tr_2228 ', '表格例子', 'hgexample_table_index', 'hgexample_table', '', 2, '', '/hgexample/table/list', '', '/addons/hgexample/table/index', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-13 23:54:36', '2022-12-23 15:07:28'), +(2124, 2228, 3, 'tr_2227 tr_2228 ', '表格详情', 'table_view', 'view/:id?', '', 2, '', '/hgexample/table/view', '', '/addons/hgexample/table/view', 0, 'table_index', 0, 0, '', 0, 1, 0, 11, '', 1, '2024-04-13 10:23:05', '2022-09-14 20:07:04'), +(2125, 2097, 2, 'tr_2097 ', '生成配置', 'develop_code_deploy', 'deploy/:id?', '', 2, '', '', '', '/develop/code/deploy', 0, 'develop_code', 0, 0, '', 0, 1, 0, 20, '', 1, '2023-11-13 15:16:58', '2022-12-31 17:16:26'), +(2207, 2076, 4, 'tr_2093 tr_2074 tr_2076 ', '删除登录日志', 'loginLogDelete', '', '', 3, '', '/loginLog/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:32', '2023-01-19 21:06:45'), +(2208, 2076, 4, 'tr_2093 tr_2074 tr_2076 ', '导出登录日志', 'loginLogExport', '', '', 3, '', '/loginLog/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:32', '2023-01-19 21:06:45'), +(2209, 2087, 4, 'tr_2093 tr_2074 tr_2087 ', '删除服务日志', 'serveLogDelete', '', '', 3, '', '/serveLog/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:32', '2023-01-20 18:37:50'), +(2210, 2087, 4, 'tr_2093 tr_2074 tr_2087 ', '导出服务日志', 'serveLogExport', '', '', 3, '', '/serveLog/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:32', '2023-01-20 18:37:50'), +(2211, 2094, 3, 'tr_2093 tr_2094 ', '获取公告最大排序', 'noticeMaxSort', '', '', 3, '', '/notice/maxSort', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2212, 2094, 3, 'tr_2093 tr_2094 ', '删除公告', 'noticeDelete', '', '', 3, '', '/notice/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2213, 2094, 3, 'tr_2093 tr_2094 ', '修改公告状态', 'noticeStatus', '', '', 3, '', '/notice/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2214, 2094, 3, 'tr_2093 tr_2094 ', '操作公告开关', 'noticeSwitch', '', '', 3, '', '/notice/switch', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2215, 2094, 3, 'tr_2093 tr_2094 ', '发送/编辑通知', 'noticeEditNotify', '', '', 3, '', '/notice/editNotify', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2216, 2094, 3, 'tr_2093 tr_2094 ', '发送/编辑公告', 'noticeEditNotice', '', '', 3, '', '/notice/editNotice', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2217, 2094, 3, 'tr_2093 tr_2094 ', '发送/编辑私信', 'noticeEditLetter', '', '', 3, '', '/notice/editLetter', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2218, 2094, 3, 'tr_2093 tr_2094 ', '编辑公告', 'noticeEdit', '', '', 3, '', '/notice/edit', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2219, 2093, 2, 'tr_2093 ', '个人中心', 'home', '/home', 'UserOutlined', 1, '', '', '', 'ParentLayout', 1, '', 0, 2, '', 0, 1, 0, 3000, '', 1, '2023-11-17 15:33:52', '2023-02-01 14:59:40'), +(2220, 2219, 3, 'tr_2093 tr_2219 ', '我的消息', 'home_message', 'message', '', 2, '', '/notice/messageList', '', '/home/message/message', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2023-11-17 15:27:49', '2023-02-01 15:05:17'), +(2221, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '获取最大排序', 'testMaxSort', '/test/maxSort', '', 3, '', '/hgexample/table/maxSort', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2024-04-13 23:54:11', '2023-02-06 14:29:42'), +(2222, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '导出测试', 'testExport', '', '', 3, '', '/hgexample/table/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-13 23:54:16', '2023-01-20 18:37:50'), +(2223, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '删除测试', 'testDelete', '', '', 3, '', '/hgexample/table/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-13 23:54:20', '2023-01-18 15:19:43'), +(2224, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '修改测试状态', 'testStatus', '', '', 3, '', '/hgexample/table/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-13 23:54:23', '2023-01-18 15:19:43'), +(2225, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '操作测试开关', 'testSwitch', '', '', 3, '', '/hgexample/table/switch', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-13 23:54:26', '2023-01-18 15:19:43'), +(2226, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '编辑测试', 'testEdit', '', '', 3, '', '/hgexample/table/edit', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-13 23:54:30', '2023-01-18 15:19:43'), +(2227, 0, 1, '', '插件应用', 'addons', '/addons', 'AppstoreOutlined', 1, '/addons/hgexample/hgexample_portal', '', '', 'LAYOUT', 1, '', 0, 2, '', 0, 0, 0, 130, '', 1, '2023-11-13 15:16:58', '2023-02-17 13:44:27'), +(2228, 2227, 2, 'tr_2227 ', '功能案例', 'hgexample', '/hgexample', '', 1, '', '', '', '/hgexample', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-02-17 13:44:27'), +(2229, 2097, 2, 'tr_2097 ', '插件管理', 'develop_addons', 'addons', '', 2, '', '/addons/selects,/addons/list', '', '/develop/addons/index', 1, '', 0, 0, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2022-09-18 21:32:46'), +(2230, 2228, 3, 'tr_2227 tr_2228 ', '应用入口', 'hgexample_portal', 'hgexample_portal', '', 2, '', '', '', '/addons/hgexample/portal/index', 1, '', 0, 0, '', 0, 0, 0, 5, '', 1, '2023-11-13 15:16:58', '2022-09-14 20:07:04'), +(2231, 2228, 3, 'tr_2227 tr_2228 ', '插件配置', 'hgexample_config', 'hgexample_config', '', 2, '', '/hgexample/config/get,/hgexample/config/update', '', '/addons/hgexample/config/system', 1, '', 0, 0, '', 0, 0, 0, 8, '', 1, '2024-04-13 23:53:06', '2022-09-14 20:07:04'), +(2232, 2237, 3, 'tr_2093 tr_2237 ', '在线充值', 'asset_recharge', 'recharge', '', 2, '', '/order/create,/order/option', '', '/asset/recharge/recharge', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2024-04-12 13:53:42', '2023-02-01 15:05:17'), +(2235, 2236, 4, 'tr_2093 tr_2237 tr_2236 ', '资金变动导出', 'creditsLogExport', '', '', 3, '', '/creditsLog/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-12 13:52:59', '2023-04-15 15:59:58'), +(2236, 2237, 3, 'tr_2093 tr_2237 ', '资金变动', 'creditsLogIndex', 'creditsLogIndex', '', 2, '', '/creditsLog/list,/creditsLog/option', '', '/asset/creditsLog/index', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-12 13:53:36', NULL), +(2237, 2093, 2, 'tr_2093 ', '资金管理', 'asset', '/asset', '', 1, '/apply/asset/creditsLogIndex', '', '', 'ParentLayout', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2024-04-12 13:53:54', '2023-04-18 22:16:20'), +(2240, 2232, 4, 'tr_2093 tr_2237 tr_2232 ', '充值记录', 'asset_recharge_log', '', '', 3, '', '/order/list', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-17 15:28:23', '2023-04-18 23:26:01'), +(2241, 2232, 4, 'tr_2093 tr_2237 tr_2232 ', '受理退款', 'asset_recharge_accept_refund', '', '', 3, '', '/order/acceptRefund', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-17 15:28:23', '2023-04-18 23:26:01'), +(2242, 2232, 4, 'tr_2093 tr_2237 tr_2232 ', '申请退款', 'asset_recharge_apply_refund', '', '', 3, '', '/order/applyRefund', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-17 15:28:23', '2023-04-18 23:26:01'), +(2243, 2232, 4, 'tr_2093 tr_2237 tr_2232 ', '删除关闭订单', 'asset_recharge_order_delete', '', '', 3, '', '/order/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-17 15:28:23', '2023-04-18 23:26:01'), +(2244, 2237, 3, 'tr_2093 tr_2237 ', '提现管理', 'asset_cash', '/cash', '', 2, '', '/cash/list,/cash/apply,/config/getCash', '', '/asset/cash/index', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2024-04-12 13:53:45', '2022-11-29 12:30:00'), +(2245, 2244, 4, 'tr_2093 tr_2237 tr_2244 ', '申请提现', 'cash_apply', '', '', 3, '', '/cash/apply', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:28:23', '2023-04-26 21:37:56'), +(2246, 2244, 4, 'tr_2093 tr_2237 tr_2244 ', '提现打款处理', 'cash_payment', '', '', 3, '', '/cash/payment,/cash/view', '', '', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2023-11-17 15:28:23', '2023-04-26 21:38:25'), +(2247, 2062, 3, 'tr_2061 tr_2062 ', '变更余额', 'org_user_add_balance', '', '', 3, '', '/member/addBalance', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-13 15:16:58', '2023-04-27 22:31:02'), +(2248, 2062, 3, 'tr_2061 tr_2062 ', '变更积分', 'org_user_add_integral', '', '', 3, '', '/member/addIntegral', '', '', 1, '', 0, 2, '', 0, 0, 0, 50, '', 1, '2023-11-13 15:16:58', '2023-04-27 22:31:43'), +(2249, 2062, 3, 'tr_2061 tr_2062 ', '重置登录密码', 'member_reset_pwd', '', '', 3, '', '/member/resetPwd', '', '', 1, '', 0, 2, '', 0, 0, 0, 60, '', 1, '2023-11-13 15:16:58', '2023-04-27 22:50:27'), +(2250, 2062, 3, 'tr_2061 tr_2062 ', '用户列表', 'member_list', '', '', 3, '', '/dept/list,/post/list,/role/list,/member/list,/dept/option', '', '', 1, '', 0, 2, '', 0, 0, 0, 0, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:06:17'), +(2251, 2069, 3, 'tr_2068 tr_2069 ', '查看配置', 'config_get', '', '', 3, '', '/config/get', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:18:44'), +(2252, 2069, 3, 'tr_2068 tr_2069 ', '更新配置', 'config_update', '', '', 3, '', '/config/update', '', '', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:19:14'), +(2253, 2070, 3, 'tr_2068 tr_2070 ', '查看字典列表', 'dict_data_list', '', '', 3, '', '/dictType/tree,/dictData/list,/config/typeSelect', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:21:47'), +(2254, 2070, 3, 'tr_2068 tr_2070 ', '编辑字典', 'dict_data_edit', '', '', 3, '', '/dictData/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:22:15'), +(2255, 2070, 3, 'tr_2068 tr_2070 ', '删除字典', 'dict_data_delete', '', '', 3, '', '/dictData/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 30, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:22:15'), +(2256, 2070, 3, 'tr_2068 tr_2070 ', '编辑字典类型', 'dict_type_edit', '', '', 3, '', '/dictType/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:22:15'), +(2257, 2070, 3, 'tr_2068 tr_2070 ', '删除字典类型', 'dict_type_delete', '', '', 3, '', '/dictType/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 60, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:22:15'), +(2258, 2071, 3, 'tr_2068 tr_2071 ', '任务列表', '/cron/list', '', '', 3, '', '/cron/list', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:25:46'), +(2259, 2071, 3, 'tr_2068 tr_2071 ', '任务分组列表', '/cronGroup/list', '', '', 3, '', '/cronGroup/select,/cronGroup/list', '', '', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:26:40'), +(2260, 2071, 3, 'tr_2068 tr_2071 ', '编辑任务', '/cron/edit', '', '', 3, '', '/cron/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 30, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:27:07'), +(2261, 2071, 3, 'tr_2068 tr_2071 ', '删除任务', '/cron/delete', '', '', 3, '', '/cron/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:27:59'), +(2262, 2071, 3, 'tr_2068 tr_2071 ', '修改任务状态', '/cron/status', '', '', 3, '', '/cron/status', '', '', 1, '', 0, 2, '', 0, 0, 0, 60, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:28:16'), +(2263, 2071, 3, 'tr_2068 tr_2071 ', '在线执行', '/cron/onlineExec', '', '', 3, '', '/cron/onlineExec', '', '', 1, '', 0, 2, '', 0, 0, 0, 70, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:28:32'), +(2264, 2071, 3, 'tr_2068 tr_2071 ', '编辑任务分组', '/cronGroup/edit', '', '', 3, '', '/cronGroup/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 80, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:28:55'), +(2265, 2071, 3, 'tr_2068 tr_2071 ', '删除任务分组', '/cronGroup/delete', '', '', 3, '', '/cronGroup/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 90, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:29:14'), +(2266, 2072, 3, 'tr_2068 tr_2072 ', '黑名单列表', '/blacklist/list', '', '', 3, '', '/blacklist/list', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:29:59'), +(2267, 2072, 3, 'tr_2068 tr_2072 ', '编辑黑名单策略', '/blacklist/edit', '', '', 3, '', '/blacklist/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:30:25'), +(2268, 2072, 3, 'tr_2068 tr_2072 ', '修改策略状态', '/blacklist/status', '', '', 3, '', '/blacklist/status', '', '', 1, '', 0, 2, '', 0, 0, 0, 30, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:31:07'), +(2269, 2072, 3, 'tr_2068 tr_2072 ', '删除策略', '/blacklist/delete', '', '', 3, '', '/blacklist/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:31:21'), +(2270, 2073, 4, 'tr_2093 tr_2219 tr_2073 ', '修改登录密码', '/member/updatePwd', '', '', 3, '', '/member/updatePwd', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:49', '2023-04-28 16:40:34'), +(2271, 2073, 4, 'tr_2093 tr_2219 tr_2073 ', '换绑手机号', '/member/updateMobile', '', '', 3, '', '/member/updateMobile', '', '', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2023-11-17 15:27:49', '2023-04-28 16:40:52'), +(2272, 2073, 4, 'tr_2093 tr_2219 tr_2073 ', '换绑邮箱', '/member/updateEmail', '', '', 3, '', '/member/updateEmail', '', '', 1, '', 0, 2, '', 0, 0, 0, 30, '', 1, '2023-11-17 15:27:49', '2023-04-28 16:41:11'), +(2273, 2090, 2, 'tr_2090 ', '在线服务', 'monitor_netconn', 'netconn', '', 1, '', '', '', '/monitor/netconn/index', 1, '', 0, 0, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2022-09-18 21:23:36'), +(2275, 2273, 3, 'tr_2090 tr_2273 ', '服务许可证列表', 'serveLicenseIndex', 'serveLicenseIndex', '', 3, '', '/serveLicense/list', '', '/serveLicense/index', 1, 'monitor_netconn', 0, 0, '', 0, 1, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), +(2277, 2275, 4, 'tr_2090 tr_2273 tr_2275 ', '编辑/新增服务许可证', 'serveLicenseEdit', '', '', 3, '', '/serveLicense/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), +(2278, 2275, 4, 'tr_2090 tr_2273 tr_2275 ', '删除服务许可证', 'serveLicenseDelete', '', '', 3, '', '/serveLicense/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), +(2279, 2275, 4, 'tr_2090 tr_2273 tr_2275 ', '修改服务许可证状态', 'serveLicenseStatus', '', '', 3, '', '/serveLicense/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), +(2280, 2275, 4, 'tr_2090 tr_2273 tr_2275 ', '导出服务许可证', 'serveLicenseExport', '', '', 3, '', '/serveLicense/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), +(2281, 2275, 4, 'tr_2090 tr_2273 tr_2275 ', '分配许可证路由', 'serveLicenseAssignRouter', '', '', 3, '', '/serveLicense/assignRouter', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), +(2282, 2073, 4, 'tr_2093 tr_2219 tr_2073 ', '更新基本设置', 'memberUpdateProfile', '', '', 3, '', '/member/updateProfile', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:49', '2023-08-02 14:52:48'), +(2283, 2073, 4, 'tr_2093 tr_2219 tr_2073 ', '更新提现设置', 'memberUpdateCash', '', '', 3, '', '/member/updateCash', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:49', '2023-08-02 14:53:34'), +(2292, 2067, 3, 'tr_2065 tr_2067 ', '更新菜单权限', 'updatePermissions', '', '', 3, '', '/role/updatePermissions', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 14:45:56'), +(2293, 2067, 3, 'tr_2065 tr_2067 ', '更新数据权限', 'dataScopeEdit', '', '', 3, '', '/role/dataScope/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 14:51:29'), +(2294, 2067, 3, 'tr_2065 tr_2067 ', '添加/编辑角色', 'roleEdit', '', '', 3, '', '/role/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 14:52:08'), +(2295, 2067, 3, 'tr_2065 tr_2067 ', '删除角色', 'roleDelete', '', '', 3, '', '/role/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 14:52:34'), +(2296, 2066, 3, 'tr_2065 tr_2066 ', '添加/编辑菜单', 'menuEdit', '', '', 3, '', '/menu/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 14:53:24'), +(2297, 2066, 3, 'tr_2065 tr_2066 ', '删除菜单', 'menuDelete', '', '', 3, '', '/menu/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 14:53:52'), +(2298, 2075, 4, 'tr_2093 tr_2074 tr_2075 ', '删除全局日志', 'logDelete', '', '', 3, '', '/log/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:32', '2023-08-11 14:54:37'), +(2299, 2084, 4, 'tr_2093 tr_2074 tr_2084 ', '删除短信记录', 'smsLogDelete', '', '', 3, '', '/smsLog/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:32', '2023-08-11 14:56:47'), +(2300, 2091, 3, 'tr_2090 tr_2091 ', '强制退出用户', 'monitorUserOffline', '', '', 3, '', '/monitor/userOffline', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 14:57:52'), +(2301, 2096, 3, 'tr_2093 tr_2096 ', '添加/编辑省市区', 'provincesEdit', '', '', 3, '', '/provinces/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:00:13'), +(2302, 2096, 3, 'tr_2093 tr_2096 ', '删除省市区', 'provincesDelete', '', '', 3, '', '/provinces/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:00:45'), +(2305, 2098, 3, 'tr_2097 tr_2098 ', '查看生成配置', 'genCodesView', '', '', 3, '', '/genCodes/view', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:21:28'), +(2306, 2098, 3, 'tr_2097 tr_2098 ', '预览代码', 'genCodesPreview', '', '', 3, '', '/genCodes/preview', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:22:18'), +(2307, 2098, 3, 'tr_2097 tr_2098 ', '提交生成', 'genCodesBuild', '', '', 3, '', '/genCodes/build', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:22:48'), +(2308, 2098, 3, 'tr_2097 tr_2098 ', '保存生成配置', 'genCodesEdit', '', '', 3, '', '/genCodes/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:23:16'), +(2309, 2229, 3, 'tr_2097 tr_2229 ', '更新插件配置', 'addonsUpgrade', '', '', 3, '', '/addons/upgrade', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:24:11'), +(2310, 2229, 3, 'tr_2097 tr_2229 ', '卸载插件', 'addonsUninstall', '', '', 3, '', '/addons/uninstall', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:24:32'), +(2319, 2228, 3, 'tr_2227 tr_2228 ', '树表例子', '/addons/hgexample/table/tree', '/addons/hgexample/table/tree', '', 2, '', '/hgexample/table/tree,/hgexample/treeTable/select', '', '/addons/hgexample/treeTable/index', 1, '', 0, 2, '', 0, 0, 0, 15, '', 1, '2024-04-13 23:55:01', '2023-11-13 16:46:58'), +(2338, 2228, 3, 'tr_2227 tr_2228 ', '组件示例', 'hgexample_comp', 'hgexample_comp', '', 2, '', '/hgexample/comp/importExcel', '', '/addons/hgexample/comp/index', 1, '', 0, 0, '', 0, 0, 0, 1000, '', 1, '2024-04-13 23:55:45', '2022-09-14 20:07:04'), +(2366, 2097, 2, 'tr_2097 ', '生成演示', 'generateDemo', 'generateDemo', '', 2, '', '', '', 'ParentLayout', 1, '', 0, 2, '', 0, 0, 0, 1000, '', 1, '2024-04-08 10:10:51', '2024-04-08 10:10:51'), +(2367, 2366, 3, 'tr_2097 tr_2366 ', 'CURD列表', 'curdDemo', '/curdDemo', '', 1, '/develop/generateDemo/curdDemo/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2368, 2367, 4, 'tr_2097 tr_2366 tr_2367 ', 'CUDR列表列表', 'curdDemoIndex', 'index', '', 2, '', '/curdDemo/list', '', '/curdDemo/index', 1, 'curdDemo', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2369, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', 'CUDR列表详情', 'curdDemoView', '', '', 3, '', '/curdDemo/view', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2370, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', '编辑/新增CUDR列表', 'curdDemoEdit', '', '', 3, '', '/curdDemo/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 20, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2371, 2370, 6, 'tr_2097 tr_2366 tr_2367 tr_2368 tr_2370 ', '获取CUDR列表最大排序', 'curdDemoMaxSort', '', '', 3, '', '/curdDemo/maxSort', '', '', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2372, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', '删除CUDR列表', 'curdDemoDelete', '', '', 3, '', '/curdDemo/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2373, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', '修改CUDR列表状态', 'curdDemoStatus', '', '', 3, '', '/curdDemo/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 50, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2374, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', '操作CUDR列表开关', 'curdDemoSwitch', '', '', 3, '', '/curdDemo/switch', '', '', 1, '', 0, 0, '', 0, 0, 0, 60, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2375, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', '导出CUDR列表', 'curdDemoExport', '', '', 3, '', '/curdDemo/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2376, 2366, 3, 'tr_2097 tr_2366 ', '测试分类', 'testCategory', '/testCategory', '', 1, '/develop/generateDemo/testCategory/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 1000, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), +(2377, 2376, 4, 'tr_2097 tr_2366 tr_2376 ', '测试分类列表', 'testCategoryIndex', 'index', '', 2, '', '/testCategory/list', '', '/testCategory/index', 1, 'testCategory', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), +(2378, 2377, 5, 'tr_2097 tr_2366 tr_2376 tr_2377 ', '测试分类详情', 'testCategoryView', '', '', 3, '', '/testCategory/view', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), +(2379, 2377, 5, 'tr_2097 tr_2366 tr_2376 tr_2377 ', '编辑/新增测试分类', 'testCategoryEdit', '', '', 3, '', '/testCategory/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 20, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), +(2380, 2379, 6, 'tr_2097 tr_2366 tr_2376 tr_2377 tr_2379 ', '获取测试分类最大排序', 'testCategoryMaxSort', '', '', 3, '', '/testCategory/maxSort', '', '', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), +(2381, 2377, 5, 'tr_2097 tr_2366 tr_2376 tr_2377 ', '删除测试分类', 'testCategoryDelete', '', '', 3, '', '/testCategory/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), +(2382, 2377, 5, 'tr_2097 tr_2366 tr_2376 tr_2377 ', '修改测试分类状态', 'testCategoryStatus', '', '', 3, '', '/testCategory/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), +(2383, 2366, 3, 'tr_2097 tr_2366 ', '普通树表', 'normalTreeDemo', '/normalTreeDemo', '', 1, '/develop/generateDemo/normalTreeDemo/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 200, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2384, 2383, 4, 'tr_2097 tr_2366 tr_2383 ', '普通树表列表', 'normalTreeDemoIndex', 'index', '', 2, '', '/normalTreeDemo/list', '', '/normalTreeDemo/index', 1, 'normalTreeDemo', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2385, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '普通树表详情', 'normalTreeDemoView', '', '', 3, '', '/normalTreeDemo/view', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2386, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '编辑/新增普通树表', 'normalTreeDemoEdit', '', '', 3, '', '/normalTreeDemo/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 20, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2387, 2386, 6, 'tr_2097 tr_2366 tr_2383 tr_2384 tr_2386 ', '获取普通树表最大排序', 'normalTreeDemoMaxSort', '', '', 3, '', '/normalTreeDemo/maxSort', '', '', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2388, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '删除普通树表', 'normalTreeDemoDelete', '', '', 3, '', '/normalTreeDemo/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2389, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '修改普通树表状态', 'normalTreeDemoStatus', '', '', 3, '', '/normalTreeDemo/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 50, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2390, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '导出普通树表', 'normalTreeDemoExport', '', '', 3, '', '/normalTreeDemo/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2391, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '获取普通树表关系树选项', 'normalTreeDemoTreeOption', '', '', 3, '', '/normalTreeDemo/treeOption', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2401, 2366, 3, 'tr_2097 tr_2366 ', '选项树表', 'optionTreeDemo', '/optionTreeDemo', '', 1, '/develop/generateDemo/optionTreeDemo/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 300, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2402, 2401, 4, 'tr_2097 tr_2366 tr_2401 ', '选项树表列表', 'optionTreeDemoIndex', 'index', '', 2, '', '/optionTreeDemo/list', '', '/optionTreeDemo/index', 1, 'optionTreeDemo', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2403, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '选项树表详情', 'optionTreeDemoView', '', '', 3, '', '/optionTreeDemo/view', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2404, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '编辑/新增选项树表', 'optionTreeDemoEdit', '', '', 3, '', '/optionTreeDemo/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 20, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2405, 2404, 6, 'tr_2097 tr_2366 tr_2401 tr_2402 tr_2404 ', '获取选项树表最大排序', 'optionTreeDemoMaxSort', '', '', 3, '', '/optionTreeDemo/maxSort', '', '', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2406, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '删除选项树表', 'optionTreeDemoDelete', '', '', 3, '', '/optionTreeDemo/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2407, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '修改选项树表状态', 'optionTreeDemoStatus', '', '', 3, '', '/optionTreeDemo/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 50, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2408, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '导出选项树表', 'optionTreeDemoExport', '', '', 3, '', '/optionTreeDemo/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2409, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '获取选项树表关系树选项', 'optionTreeDemoTreeOption', '', '', 3, '', '/optionTreeDemo/treeOption', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2417, 2228, 3, 'tr_2227 tr_2228 ', '多租户功能演示', 'tenantOrder', '/tenantOrder', '', 1, '/addons/hgexample/tenantOrder/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 200, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'), +(2418, 2417, 4, 'tr_2227 tr_2228 tr_2417 ', '多租户功能演示列表', 'tenantOrderIndex', 'index', '', 2, '', '/hgexample/tenantOrder/list', '', '/addons/hgexample/tenantOrder/index', 1, 'tenantOrder', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'), +(2419, 2418, 5, 'tr_2227 tr_2228 tr_2417 tr_2418 ', '多租户功能演示详情', 'tenantOrderView', '', '', 3, '', '/hgexample/tenantOrder/view', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'), +(2420, 2418, 5, 'tr_2227 tr_2228 tr_2417 tr_2418 ', '编辑/新增多租户功能演示', 'tenantOrderEdit', '', '', 3, '', '/hgexample/tenantOrder/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 20, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'), +(2421, 2418, 5, 'tr_2227 tr_2228 tr_2417 tr_2418 ', '删除多租户功能演示', 'tenantOrderDelete', '', '', 3, '', '/hgexample/tenantOrder/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'), +(2422, 2418, 5, 'tr_2227 tr_2228 tr_2417 tr_2418 ', '导出多租户功能演示', 'tenantOrderExport', '', '', 3, '', '/hgexample/tenantOrder/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_admin_notice` +-- + +CREATE TABLE IF NOT EXISTS `hg_admin_notice` ( + `id` bigint(20) NOT NULL COMMENT '公告ID', + `title` varchar(64) NOT NULL COMMENT '公告标题', + `type` bigint(20) NOT NULL COMMENT '公告类型', + `tag` int(11) DEFAULT NULL COMMENT '标签', + `content` longtext NOT NULL COMMENT '公告内容', + `receiver` json DEFAULT NULL COMMENT '接收者', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序', + `status` tinyint(1) DEFAULT '1' COMMENT '公告状态', + `created_by` bigint(20) DEFAULT NULL COMMENT '发送人', + `updated_by` bigint(20) DEFAULT '0' COMMENT '修改人', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间', + `deleted_at` datetime DEFAULT NULL COMMENT '删除时间' +) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4 COMMENT='管理员_通知公告'; + +-- +-- 转存表中的数据 `hg_admin_notice` +-- + +INSERT INTO `hg_admin_notice` (`id`, `title`, `type`, `tag`, `content`, `receiver`, `remark`, `sort`, `status`, `created_by`, `updated_by`, `created_at`, `updated_at`, `deleted_at`) VALUES +(29, '2023年春季学期开学工作通知!', 1, 1, '1.学生:2月11日、2月12日报到,2月13日起安排考试。\n\n2.教职工:2月10日(周五)起正式上班(2月11日、2月12日正常上班)。\n\n3.校内进行的各类社会服务项目,主办部门、单位须关注参与人员的健康状况,如有异常第一时间报告。感染后仍在康复期内的师生,不参加剧烈活动。开学后两周内,原则上不组织各类竞技性较强的体育比赛等活动。\n\n4.全校师生员工要牢固树立健康第一的观念,切实增强个人责任感和防护意识,掌握防护技能,坚持戴口罩、勤洗手等良好卫生习惯,加强身体锻炼,保持健康生活方式,提升健康素养和自我防护能力,当好自身健康第一责任人。符合条件的师生,积极有序接种第二剂次加强针疫苗。', 'null', '', 10, 1, 1, 1, '2023-02-09 12:25:39', '2023-02-09 12:48:08', NULL), +(30, '国务院办公厅关于2023年部分节假日安排的通知', 1, 3, '新华社北京12月8日电 国务院办公厅关于2023年部分节假日安排的通知,全文如下:\n\n  各省、自治区、直辖市人民政府,国务院\n\n  各部委、各直属机构:\n\n  经国务院批准,现将2023年元旦、春节、清明节、劳动节、端午节、中秋节和国庆节放假调休日期的具体安排通知如下。\n\n  一、元旦:2022年12月31日至2023年1月2日放假调休,共3天。\n\n  二、春节:1月21日至27日放假调休,共7天。1月28日(星期六)、1月29日(星期日)上班。\n\n  三、清明节:4月5日放假,共1天。\n\n  四、劳动节:4月29日至5月3日放假调休,共5天。4月23日(星期日)、5月6日(星期六)上班。\n\n  五、端午节:6月22日至24日放假调休,共3天。6月25日(星期日)上班。\n\n  六、中秋节、国庆节:9月29日至10月6日放假调休,共8天。10月7日(星期六)、10月8日(星期日)上班。\n\n  节假日期间,各地区、各部门要妥善安排好值班和安全、保卫、疫情防控等工作,遇有重大突发事件,要按规定及时报告并妥善处置,确保人民群众祥和平安度过节日假期。', 'null', '', 20, 1, 1, 1, '2023-02-09 12:32:32', '2023-02-09 12:48:28', NULL), +(31, 'hotgo新版本发布啦!', 2, 4, '


本次更新内容如下:

1. 优化角色权限

2. 优化代码生成

3. ....

', 'null', '', 30, 1, 1, 0, '2023-02-09 12:45:17', '2023-02-09 12:45:17', '2023-06-09 18:04:30'), +(32, '新的好友', 3, 5, '

哈喽,你好呀!

', '[1, 3, 8]', '', 40, 1, 1, 3, '2023-02-09 12:45:54', '2023-08-11 15:19:04', NULL); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_admin_notice_read` +-- + +CREATE TABLE IF NOT EXISTS `hg_admin_notice_read` ( + `id` bigint(20) NOT NULL COMMENT '记录ID', + `notice_id` bigint(20) NOT NULL COMMENT '公告ID', + `member_id` bigint(20) NOT NULL COMMENT '会员ID', + `clicks` int(11) DEFAULT '1' COMMENT '已读次数', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间', + `created_at` datetime DEFAULT NULL COMMENT '阅读时间' +) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COMMENT='管理员_公告已读记录'; + +-- +-- 转存表中的数据 `hg_admin_notice_read` +-- + +INSERT INTO `hg_admin_notice_read` (`id`, `notice_id`, `member_id`, `clicks`, `updated_at`, `created_at`) VALUES +(1, 31, 1, 2, '2023-04-26 22:44:51', '2023-04-25 22:59:16'), +(2, 30, 1, 23, '2024-07-21 10:34:04', '2023-04-25 23:01:27'), +(3, 32, 3, 0, '2023-04-28 16:48:41', '2023-04-28 16:48:41'), +(4, 29, 3, 4, '2023-08-11 14:42:22', '2023-04-28 16:48:47'), +(5, 30, 3, 3, '2023-08-11 15:24:45', '2023-04-28 16:48:47'), +(6, 29, 1, 1, '2023-08-11 16:07:58', '2023-06-09 20:26:43'), +(7, 29, 11, 7, '2023-08-02 14:54:26', '2023-08-02 14:54:16'), +(8, 30, 8, 0, '2023-08-02 14:59:21', '2023-08-02 14:59:21'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_admin_oauth` +-- + +CREATE TABLE IF NOT EXISTS `hg_admin_oauth` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `member_id` bigint(20) DEFAULT '0' COMMENT '用户ID', + `unionid` varchar(64) DEFAULT '' COMMENT '唯一ID', + `oauth_client` varchar(32) DEFAULT NULL COMMENT '授权组别', + `oauth_openid` varchar(128) DEFAULT NULL COMMENT '授权开放ID', + `sex` tinyint(1) DEFAULT '1' COMMENT '性别', + `nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '昵称', + `head_portrait` varchar(512) DEFAULT NULL COMMENT '头像', + `birthday` date DEFAULT NULL COMMENT '生日', + `country` varchar(100) DEFAULT '' COMMENT '国家', + `province` varchar(100) DEFAULT '' COMMENT '省', + `city` varchar(100) DEFAULT '' COMMENT '市', + `status` tinyint(1) DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime(1) DEFAULT NULL COMMENT '修改时间' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员_第三方登录'; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_admin_order` +-- + +CREATE TABLE IF NOT EXISTS `hg_admin_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `member_id` bigint(20) DEFAULT '0' COMMENT '管理员id', + `order_type` varchar(32) NOT NULL COMMENT '订单类型', + `product_id` bigint(20) DEFAULT NULL COMMENT '产品id', + `order_sn` varchar(64) DEFAULT '' COMMENT '关联订单号', + `money` decimal(10,2) NOT NULL COMMENT '充值金额', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `refund_reason` varchar(255) DEFAULT NULL COMMENT '退款原因', + `reject_refund_reason` varchar(255) DEFAULT NULL COMMENT '拒绝退款原因', + `status` tinyint(4) DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间' +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='管理员_充值订单'; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_admin_post` +-- + +CREATE TABLE IF NOT EXISTS `hg_admin_post` ( + `id` bigint(20) NOT NULL COMMENT '岗位ID', + `code` varchar(64) NOT NULL COMMENT '岗位编码', + `name` varchar(50) NOT NULL COMMENT '岗位名称', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `sort` int(11) NOT NULL COMMENT '排序', + `status` tinyint(1) NOT NULL COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COMMENT='管理员_岗位'; + +-- +-- 转存表中的数据 `hg_admin_post` +-- + +INSERT INTO `hg_admin_post` (`id`, `code`, `name`, `remark`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(1, 'ceo', '董事长', '', 1, 1, '2022-01-04 17:54:52', '2023-07-06 15:17:48'), +(2, 'se', '项目经理', '', 2, 1, '2022-01-04 17:54:52', '2023-01-18 00:00:00'), +(3, 'hr', '人力资源', '', 3, 1, '2022-01-04 17:54:52', '2023-02-26 00:32:40'), +(4, 'user', '普通员工', '', 4, 1, '2022-01-04 17:54:52', '2022-05-15 22:33:09'), +(6, 'test', '测试', '测试..', 5, 1, '2022-08-14 11:41:22', '2023-04-27 23:17:27'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_admin_role` +-- + +CREATE TABLE IF NOT EXISTS `hg_admin_role` ( + `id` bigint(20) NOT NULL COMMENT '角色ID', + `name` varchar(32) NOT NULL COMMENT '角色名称', + `key` varchar(128) NOT NULL COMMENT '角色权限字符串', + `data_scope` tinyint(1) DEFAULT '1' COMMENT '数据范围', + `custom_dept` json DEFAULT NULL COMMENT '自定义部门权限', + `pid` bigint(20) DEFAULT '0' COMMENT '上级角色ID', + `level` int(11) NOT NULL DEFAULT '1' COMMENT '关系树等级', + `tree` varchar(512) DEFAULT NULL COMMENT '关系树', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序', + `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '角色状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=InnoDB AUTO_INCREMENT=211 DEFAULT CHARSET=utf8mb4 COMMENT='管理员_角色信息'; + +-- +-- 转存表中的数据 `hg_admin_role` +-- + +INSERT INTO `hg_admin_role` (`id`, `name`, `key`, `data_scope`, `custom_dept`, `pid`, `level`, `tree`, `remark`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(1, '超级管理员', 'super', 1, '[]', 0, 1, NULL, '超级管理员,拥有全部权限', 100, 1, '2022-01-04 17:54:52', '2023-01-12 00:00:00'), +(2, '管理员', 'manage', 3, '[]', 1, 2, 'tr_1 ', '普通管理员,拥有常规的后台管理权限', 200, 1, '2022-01-04 17:54:52', '2023-04-27 00:00:00'), +(200, '租户', 'tenant', 7, '[]', 2, 3, 'tr_1 tr_2 ', '多租户系统中顶层实体客户、组织或实体', 1000, 1, '2023-01-12 00:00:00', '2023-08-11 15:55:46'), +(206, '财务部', 'finance', 2, '[]', 2, 3, 'tr_1 tr_2 ', '', 300, 1, '2023-01-24 20:22:10', '2023-08-11 15:55:46'), +(207, '商务部', 'business', 2, '[]', 2, 3, 'tr_1 tr_2 ', '', 400, 1, '2023-01-24 20:23:27', '2023-08-11 15:55:46'), +(208, '技术部', 'science', 2, '[]', 2, 3, 'tr_1 tr_2 ', '', 500, 1, '2023-01-24 20:23:54', '2023-08-11 15:55:46'), +(209, '商家', 'merchant', 7, '[]', 200, 4, 'tr_1 tr_2 tr_200 ', '租户内部实体,可独立经营但受租户的监管和管理', 2000, 1, '2024-04-12 10:14:21', '2024-04-13 22:24:31'), +(210, '用户', 'user', 5, '[]', 209, 5, 'tr_1 tr_2 tr_200 tr_209 ', '真正使用系统产品的终端用户', 10, 1, '2024-04-12 10:18:45', '2024-04-13 22:24:40'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_admin_role_casbin` +-- + +CREATE TABLE IF NOT EXISTS `hg_admin_role_casbin` ( + `id` bigint(20) NOT NULL, + `p_type` varchar(64) DEFAULT NULL, + `v0` varchar(256) DEFAULT NULL, + `v1` varchar(256) DEFAULT NULL, + `v2` varchar(256) DEFAULT NULL, + `v3` varchar(256) DEFAULT NULL, + `v4` varchar(256) DEFAULT NULL, + `v5` varchar(256) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='管理员_casbin权限表'; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_admin_role_menu` +-- + +CREATE TABLE IF NOT EXISTS `hg_admin_role_menu` ( + `role_id` bigint(20) NOT NULL COMMENT '角色ID', + `menu_id` bigint(20) NOT NULL COMMENT '菜单ID' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员_角色菜单关联'; + +-- +-- 转存表中的数据 `hg_admin_role_menu` +-- + +INSERT INTO `hg_admin_role_menu` (`role_id`, `menu_id`) VALUES +(1, 2051), +(1, 2052), +(1, 2053), +(2, 2047), +(2, 2048), +(2, 2049), +(2, 2050), +(2, 2061), +(2, 2062), +(2, 2063), +(2, 2064), +(2, 2065), +(2, 2066), +(2, 2067), +(2, 2068), +(2, 2069), +(2, 2070), +(2, 2071), +(2, 2072), +(2, 2073), +(2, 2074), +(2, 2075), +(2, 2076), +(2, 2077), +(2, 2078), +(2, 2082), +(2, 2083), +(2, 2084), +(2, 2085), +(2, 2086), +(2, 2087), +(2, 2088), +(2, 2089), +(2, 2090), +(2, 2091), +(2, 2092), +(2, 2093), +(2, 2094), +(2, 2095), +(2, 2096), +(2, 2099), +(2, 2100), +(2, 2101), +(2, 2102), +(2, 2103), +(2, 2109), +(2, 2110), +(2, 2111), +(2, 2112), +(2, 2113), +(2, 2114), +(2, 2115), +(2, 2116), +(2, 2117), +(2, 2118), +(2, 2120), +(2, 2121), +(2, 2122), +(2, 2124), +(2, 2198), +(2, 2199), +(2, 2200), +(2, 2201), +(2, 2202), +(2, 2203), +(2, 2204), +(2, 2205), +(2, 2206), +(2, 2207), +(2, 2208), +(2, 2209), +(2, 2210), +(2, 2211), +(2, 2212), +(2, 2213), +(2, 2214), +(2, 2215), +(2, 2216), +(2, 2217), +(2, 2218), +(2, 2219), +(2, 2220), +(2, 2221), +(2, 2222), +(2, 2223), +(2, 2224), +(2, 2225), +(2, 2226), +(2, 2227), +(2, 2228), +(2, 2230), +(2, 2231), +(2, 2232), +(2, 2235), +(2, 2236), +(2, 2237), +(2, 2240), +(2, 2241), +(2, 2242), +(2, 2243), +(2, 2244), +(2, 2245), +(2, 2246), +(2, 2247), +(2, 2248), +(2, 2249), +(2, 2250), +(2, 2251), +(2, 2252), +(2, 2253), +(2, 2254), +(2, 2255), +(2, 2256), +(2, 2257), +(2, 2258), +(2, 2259), +(2, 2260), +(2, 2261), +(2, 2262), +(2, 2263), +(2, 2264), +(2, 2265), +(2, 2266), +(2, 2267), +(2, 2268), +(2, 2269), +(2, 2270), +(2, 2271), +(2, 2272), +(2, 2273), +(2, 2275), +(2, 2277), +(2, 2278), +(2, 2279), +(2, 2280), +(2, 2281), +(2, 2282), +(2, 2283), +(2, 2292), +(2, 2293), +(2, 2294), +(2, 2295), +(2, 2296), +(2, 2297), +(2, 2298), +(2, 2299), +(2, 2300), +(2, 2301), +(2, 2302), +(2, 2319), +(2, 2338), +(2, 2417), +(2, 2418), +(2, 2419), +(2, 2420), +(2, 2421), +(2, 2422), +(100, 2047), +(100, 2048), +(100, 2049), +(100, 2050), +(100, 2061), +(100, 2062), +(100, 2063), +(100, 2064), +(100, 2068), +(100, 2069), +(100, 2070), +(100, 2071), +(100, 2072), +(100, 2073), +(100, 2109), +(100, 2110), +(100, 2111), +(100, 2112), +(100, 2113), +(100, 2114), +(100, 2115), +(100, 2116), +(100, 2117), +(100, 2121), +(100, 2122), +(100, 2124), +(200, 2047), +(200, 2048), +(200, 2050), +(200, 2073), +(200, 2074), +(200, 2075), +(200, 2076), +(200, 2077), +(200, 2082), +(200, 2083), +(200, 2093), +(200, 2095), +(200, 2099), +(200, 2100), +(200, 2102), +(200, 2103), +(200, 2118), +(200, 2120), +(200, 2122), +(200, 2124), +(200, 2207), +(200, 2208), +(200, 2219), +(200, 2220), +(200, 2221), +(200, 2222), +(200, 2223), +(200, 2224), +(200, 2225), +(200, 2226), +(200, 2227), +(200, 2228), +(200, 2230), +(200, 2231), +(200, 2232), +(200, 2235), +(200, 2236), +(200, 2237), +(200, 2240), +(200, 2241), +(200, 2242), +(200, 2243), +(200, 2244), +(200, 2245), +(200, 2270), +(200, 2271), +(200, 2272), +(200, 2282), +(200, 2283), +(200, 2298), +(200, 2319), +(200, 2338), +(200, 2417), +(200, 2418), +(200, 2419), +(200, 2420), +(200, 2421), +(200, 2422), +(201, 2047), +(201, 2048), +(201, 2050), +(201, 2073), +(201, 2074), +(201, 2075), +(201, 2076), +(201, 2077), +(201, 2082), +(201, 2083), +(201, 2093), +(201, 2095), +(201, 2099), +(201, 2100), +(201, 2102), +(201, 2103), +(201, 2118), +(201, 2120), +(201, 2207), +(201, 2208), +(201, 2219), +(201, 2220), +(201, 2232), +(201, 2235), +(201, 2236), +(201, 2237), +(201, 2240), +(201, 2241), +(201, 2242), +(201, 2243), +(201, 2244), +(201, 2245), +(201, 2270), +(201, 2271), +(201, 2272), +(201, 2282), +(201, 2283), +(201, 2298), +(202, 2047), +(202, 2048), +(202, 2049), +(202, 2050), +(202, 2073), +(202, 2074), +(202, 2075), +(202, 2076), +(202, 2077), +(202, 2082), +(202, 2083), +(202, 2099), +(202, 2100), +(202, 2102), +(202, 2103), +(202, 2120), +(202, 2207), +(202, 2208), +(202, 2219), +(202, 2220), +(202, 2270), +(202, 2271), +(202, 2272), +(202, 2282), +(202, 2283), +(206, 2047), +(206, 2048), +(206, 2049), +(206, 2050), +(206, 2061), +(206, 2062), +(206, 2063), +(206, 2064), +(206, 2065), +(206, 2066), +(206, 2067), +(206, 2068), +(206, 2069), +(206, 2070), +(206, 2071), +(206, 2072), +(206, 2074), +(206, 2075), +(206, 2076), +(206, 2077), +(206, 2078), +(206, 2082), +(206, 2083), +(206, 2084), +(206, 2086), +(206, 2087), +(206, 2088), +(206, 2089), +(206, 2090), +(206, 2091), +(206, 2092), +(206, 2093), +(206, 2094), +(206, 2095), +(206, 2096), +(206, 2109), +(206, 2110), +(206, 2111), +(206, 2112), +(206, 2113), +(206, 2114), +(206, 2115), +(206, 2116), +(206, 2117), +(206, 2118), +(206, 2121), +(206, 2122), +(206, 2124), +(206, 2207), +(206, 2208), +(206, 2209), +(206, 2210), +(206, 2211), +(206, 2212), +(206, 2213), +(206, 2214), +(206, 2215), +(206, 2216), +(206, 2217), +(206, 2218), +(206, 2221), +(206, 2222), +(206, 2223), +(206, 2224), +(206, 2225), +(206, 2226), +(207, 2047), +(207, 2048), +(207, 2049), +(207, 2050), +(208, 2047), +(208, 2048), +(208, 2049), +(208, 2050), +(208, 2062), +(208, 2109), +(208, 2110), +(208, 2111), +(208, 2247), +(208, 2250), +(209, 2047), +(209, 2048), +(209, 2050), +(209, 2073), +(209, 2074), +(209, 2075), +(209, 2076), +(209, 2077), +(209, 2082), +(209, 2083), +(209, 2093), +(209, 2095), +(209, 2099), +(209, 2100), +(209, 2102), +(209, 2103), +(209, 2118), +(209, 2120), +(209, 2122), +(209, 2124), +(209, 2207), +(209, 2208), +(209, 2219), +(209, 2220), +(209, 2221), +(209, 2222), +(209, 2223), +(209, 2224), +(209, 2225), +(209, 2226), +(209, 2227), +(209, 2228), +(209, 2230), +(209, 2231), +(209, 2232), +(209, 2235), +(209, 2236), +(209, 2237), +(209, 2240), +(209, 2241), +(209, 2242), +(209, 2243), +(209, 2244), +(209, 2245), +(209, 2270), +(209, 2271), +(209, 2272), +(209, 2282), +(209, 2283), +(209, 2298), +(209, 2319), +(209, 2338), +(209, 2417), +(209, 2418), +(209, 2419), +(209, 2420), +(209, 2421), +(209, 2422), +(210, 2047), +(210, 2048), +(210, 2050), +(210, 2073), +(210, 2074), +(210, 2075), +(210, 2076), +(210, 2077), +(210, 2082), +(210, 2083), +(210, 2093), +(210, 2095), +(210, 2099), +(210, 2100), +(210, 2102), +(210, 2103), +(210, 2118), +(210, 2120), +(210, 2122), +(210, 2124), +(210, 2207), +(210, 2208), +(210, 2219), +(210, 2220), +(210, 2221), +(210, 2222), +(210, 2223), +(210, 2224), +(210, 2225), +(210, 2226), +(210, 2227), +(210, 2228), +(210, 2230), +(210, 2231), +(210, 2232), +(210, 2235), +(210, 2236), +(210, 2237), +(210, 2240), +(210, 2241), +(210, 2242), +(210, 2243), +(210, 2244), +(210, 2245), +(210, 2270), +(210, 2271), +(210, 2272), +(210, 2282), +(210, 2283), +(210, 2298), +(210, 2319), +(210, 2338), +(210, 2417), +(210, 2418), +(210, 2419), +(210, 2420), +(210, 2421), +(210, 2422); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_pay_log` +-- + +CREATE TABLE IF NOT EXISTS `hg_pay_log` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `member_id` bigint(20) DEFAULT '0' COMMENT '会员ID', + `app_id` varchar(50) DEFAULT NULL COMMENT '应用ID', + `addons_name` varchar(100) DEFAULT '' COMMENT '插件名称', + `order_sn` varchar(64) DEFAULT '' COMMENT '关联订单号', + `order_group` varchar(32) DEFAULT '' COMMENT '组别[默认统一支付类型]', + `openid` varchar(50) DEFAULT '' COMMENT 'openid', + `mch_id` varchar(20) DEFAULT '' COMMENT '商户支付账户', + `subject` varchar(255) DEFAULT NULL COMMENT '订单标题', + `detail` json DEFAULT NULL COMMENT '支付商品详情', + `auth_code` varchar(50) DEFAULT '' COMMENT '刷卡码', + `out_trade_no` varchar(128) DEFAULT '' COMMENT '商户订单号', + `transaction_id` varchar(128) DEFAULT NULL COMMENT '交易号', + `pay_type` varchar(32) NOT NULL COMMENT '支付类型', + `pay_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '支付金额', + `actual_amount` decimal(10,2) DEFAULT NULL COMMENT '实付金额', + `pay_status` tinyint(4) DEFAULT '0' COMMENT '支付状态', + `pay_at` datetime DEFAULT NULL COMMENT '支付时间', + `trade_type` varchar(16) DEFAULT '' COMMENT '交易类型', + `refund_sn` varchar(128) DEFAULT NULL COMMENT '退款单号', + `is_refund` tinyint(4) DEFAULT '0' COMMENT '是否退款 ', + `custom` text COMMENT '自定义参数', + `create_ip` varchar(128) DEFAULT NULL COMMENT '创建者IP', + `pay_ip` varchar(128) DEFAULT NULL COMMENT '支付者IP', + `notify_url` varchar(255) DEFAULT NULL COMMENT '支付通知回调地址', + `return_url` varchar(255) DEFAULT NULL COMMENT '买家付款成功跳转地址', + `trace_ids` json DEFAULT NULL COMMENT '链路ID集合', + `status` tinyint(4) DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间' +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='支付_支付日志'; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_pay_refund` +-- + +CREATE TABLE IF NOT EXISTS `hg_pay_refund` ( + `id` bigint(20) unsigned NOT NULL COMMENT '主键ID', + `member_id` bigint(20) DEFAULT '0' COMMENT '会员ID', + `app_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '应用ID', + `order_sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '业务订单号', + `refund_trade_no` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '退款交易号', + `refund_money` decimal(10,2) DEFAULT NULL COMMENT '退款金额', + `refund_way` tinyint(4) DEFAULT '1' COMMENT '退款方式', + `ip` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '申请者IP', + `reason` varchar(255) DEFAULT NULL COMMENT '申请退款原因', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '退款备注', + `status` tinyint(4) DEFAULT '1' COMMENT '退款状态', + `created_at` datetime DEFAULT NULL COMMENT '申请时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付_退款记录'; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_addons_config` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_addons_config` ( + `id` bigint(20) NOT NULL COMMENT '配置ID', + `addon_name` varchar(128) NOT NULL COMMENT '插件名称', + `group` varchar(128) NOT NULL COMMENT '分组', + `name` varchar(100) DEFAULT '' COMMENT '参数名称', + `type` varchar(32) NOT NULL COMMENT '键值类型:string,int,uint,bool,datetime,date', + `key` varchar(100) DEFAULT '' COMMENT '参数键名', + `value` varchar(500) DEFAULT '' COMMENT '参数键值', + `default_value` varchar(500) NOT NULL COMMENT '默认值', + `sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序', + `tip` varchar(500) DEFAULT NULL COMMENT '变量描述', + `is_default` tinyint(1) DEFAULT '0' COMMENT '是否为系统默认', + `status` tinyint(1) DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='系统_插件配置'; + +-- +-- 转存表中的数据 `hg_sys_addons_config` +-- + +INSERT INTO `hg_sys_addons_config` (`id`, `addon_name`, `group`, `name`, `type`, `key`, `value`, `default_value`, `sort`, `tip`, `is_default`, `status`, `created_at`, `updated_at`) VALUES +(1, 'hgexample', 'basic', '测试参数', 'string', 'basicTest', 'HotGo', 'HotGo', 10, '测试参数,可以按需添加配置自定义参数', 0, 1, '2023-02-14 10:56:01', '2024-07-21 21:54:49'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_addons_install` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_addons_install` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `name` varchar(255) NOT NULL COMMENT '插件名称', + `version` varchar(128) NOT NULL DEFAULT '' COMMENT '版本号', + `status` tinyint(1) DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='系统_插件安装记录'; + +-- +-- 转存表中的数据 `hg_sys_addons_install` +-- + +INSERT INTO `hg_sys_addons_install` (`id`, `name`, `version`, `status`, `created_at`, `updated_at`) VALUES +(1, 'hgexample', 'v1.0.0', 1, '2023-02-02 00:00:00', '2024-07-21 19:05:44'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_attachment` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_attachment` ( + `id` bigint(20) NOT NULL COMMENT '文件ID', + `app_id` varchar(64) NOT NULL COMMENT '应用ID', + `member_id` bigint(20) DEFAULT '0' COMMENT '管理员ID', + `cate_id` bigint(20) unsigned DEFAULT '0' COMMENT '上传分类', + `drive` varchar(64) DEFAULT NULL COMMENT '上传驱动', + `name` varchar(1000) DEFAULT NULL COMMENT '文件原始名', + `kind` varchar(16) DEFAULT NULL COMMENT '上传类型', + `mime_type` varchar(128) NOT NULL DEFAULT '' COMMENT '扩展类型', + `naive_type` varchar(32) DEFAULT NULL COMMENT 'NaiveUI类型', + `path` varchar(1000) DEFAULT NULL COMMENT '本地路径', + `file_url` varchar(1000) DEFAULT NULL COMMENT 'url', + `size` bigint(20) DEFAULT '0' COMMENT '文件大小', + `ext` varchar(50) DEFAULT NULL COMMENT '扩展名', + `md5` varchar(32) DEFAULT NULL COMMENT 'md5校验码', + `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间' +) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COMMENT='系统_附件管理'; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_blacklist` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_blacklist` ( + `id` bigint(20) NOT NULL COMMENT '黑名单ID', + `ip` varchar(100) DEFAULT '' COMMENT 'IP地址', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `status` tinyint(1) DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='系统_访问黑名单'; + +-- +-- 转存表中的数据 `hg_sys_blacklist` +-- + +INSERT INTO `hg_sys_blacklist` (`id`, `ip`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, '39.162.138.4', '', 2, '2022-10-01 22:02:09', '2022-10-01 22:39:23'), +(2, '29.162.138.91', '', 2, '2022-10-01 22:02:09', '2022-10-01 22:39:23'), +(3, '19.162.138.94', '指定IP', 1, '2022-10-01 14:02:09', '2023-01-20 23:11:43'), +(5, '19.162.138.91,19.162.138.96', '多个IP', 1, '2022-10-01 14:02:09', '2023-01-20 23:11:36'), +(6, '19.160.138.0/24', 'IP段', 1, '2022-10-01 14:02:09', '2023-01-20 23:11:30'), +(7, '29.160.138.0-29.160.138.5', 'IP范围', 1, '2022-10-01 14:02:09', '2023-04-27 23:30:46'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_config` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_config` ( + `id` bigint(20) NOT NULL COMMENT '配置ID', + `group` varchar(128) NOT NULL COMMENT '配置分组', + `name` varchar(100) DEFAULT '' COMMENT '参数名称', + `type` varchar(32) NOT NULL COMMENT '键值类型:string,int,uint,bool,datetime,date', + `key` varchar(100) DEFAULT '' COMMENT '参数键名', + `value` longtext COMMENT '参数键值', + `default_value` varchar(500) NOT NULL COMMENT '默认值', + `sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序', + `tip` varchar(500) DEFAULT NULL COMMENT '变量描述', + `is_default` tinyint(1) DEFAULT '0' COMMENT '是否为系统默认', + `status` tinyint(1) DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=InnoDB AUTO_INCREMENT=129 DEFAULT CHARSET=utf8mb4 COMMENT='系统_配置'; + +-- +-- 转存表中的数据 `hg_sys_config` +-- + +INSERT INTO `hg_sys_config` (`id`, `group`, `name`, `type`, `key`, `value`, `default_value`, `sort`, `tip`, `is_default`, `status`, `created_at`, `updated_at`) VALUES +(1, 'theme', '默认主题', 'string', 'themeDarkTheme', 'dark', 'dark', 50, '', 1, 1, '2021-01-30 13:27:43', '2022-09-05 20:29:05'), +(2, 'theme', '默认系统主题', 'string', 'themeAppTheme', '#2d8cf0', '#2d8cf0', 60, '', 1, 1, '2021-01-30 13:27:43', '2022-09-05 20:29:05'), +(3, 'theme', '默认侧边栏风格', 'string', 'themeNavTheme', 'light', 'dark', 70, '', 1, 1, '2021-01-30 13:27:43', '2022-09-05 20:29:05'), +(6, 'basic', '网站名称', 'string', 'basicName', 'HotGo', 'HotGo!', 10, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), +(7, 'basic', '网站logo', 'string', 'basicLogo', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', '', 20, '首页使用', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), +(8, 'basic', '网站备案号', 'string', 'basicIcpCode', '豫ICP备16035288号', '', 30, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), +(9, 'basic', '网站开启访问', 'bool', 'basicSystemOpen', '1', 'true', 50, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), +(10, 'basic', '网站关闭提示', 'string', 'basicCloseText', '网站维护中,暂时无法访问!本网站正在进行系统维护和技术升级,网站暂时无法访问,敬请谅解!', '网站维护中,暂时无法访问!本网站正在进行系统维护和技术升级,网站暂时无法访问,敬请谅解!', 60, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:29'), +(11, 'basic', '版权所有', 'string', 'basicCopyright', '© 2019 - 2023 HotGo All Rights Reserved.', '© 2021 - 2023 HotGo All Rights Reserved.', 40, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), +(12, 'smtp', 'SMTP服务器', 'string', 'smtpHost', 'smtpdm.aliyun.com', 'smtpdm.aliyun.com', 50, '错误的配置发送邮件会导致服务器超时', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(13, 'smtp', 'SMTP端口', 'int', 'smtpPort', '25', '25', 100, '(不加密默认25,SSL默认465,TLS默认587)', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(14, 'smtp', 'SMTP用户名', 'string', 'smtpUser', 'ali@mail.qvnidaye.com', '', 110, '填写完整用户名', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(15, 'smtp', 'SMTP密码', 'string', 'smtpPass', '', '', 120, '填写您的密码', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(16, 'smtp', '发件人名称', 'string', 'smtpSendName', 'HotGo', 'HotGo', 130, '', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(17, 'smtp', '管理员邮箱', 'string', 'smtpAdminMailbox', '133814250@qq.com', '133814250@qq.com', 140, '', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(28, 'upload', '上传驱动', 'string', 'uploadDrive', 'local', '', 300, 'local:本地;ucloud:ucloud;腾讯云:cos', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(29, 'upload', '上传图片大小限制', 'int', 'uploadImageSize', '1', '2', 310, '单位:MB', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(30, 'upload', '上传图片类型限制', 'string', 'uploadImageType', 'jpg,jpeg,gif,npm,png,svg', 'jpg,jpeg,gif,npm,png,svg', 320, '图片上传后缀类型限制', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(31, 'upload', '上传文件大小限制', 'int', 'uploadFileSize', '1000', '10', 330, '单位:MB', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(32, 'upload', '上传文件类型限制', 'string', 'uploadFileType', 'doc,docx,pdf,zip,tar,xls,xlsx,rar,jpg,jpeg,gif,npm,png,svg', 'doc,docx,zip,xls,xlsx,rar,jpg,jpeg,gif,npm,png,svg', 340, '文件上传后缀类型限制', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(33, 'upload', '本地存储路径', 'string', 'uploadLocalPath', 'attachment/', 'attachment/', 350, '对外访问的相对路径', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(34, 'upload', 'UCloud存储路径', 'string', 'uploadUCloudPath', 'hotgo/attachment/', 'hotgo/attachment/', 360, 'UC对象存储中的相对路径', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(35, 'upload', 'UCloud公钥', 'string', 'uploadUCloudPublicKey', '', '', 370, '获取地址:https://console.ucloud.cn/ufile/token', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(36, 'upload', 'UCloud私钥', 'string', 'uploadUCloudPrivateKey', '', '', 380, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(37, 'upload', 'UCloud地域API', 'string', 'uploadUCloudBucketHost', 'api.ucloud.cn', 'api.ucloud.cn', 390, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(38, 'upload', 'UCloud存储桶名称', 'string', 'uploadUCloudBucketName', 'bufanyun', '', 400, '存储空间名称', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(39, 'upload', 'UCloud存储桶地域host', 'string', 'uploadUCloudFileHost', 'cn-bj.ufileos.com', 'cn-bj.ufileos.com', 410, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(40, 'upload', 'UCloud访问域名', 'string', 'uploadUCloudEndpoint', 'https://gmycos.facms.cn', '', 420, '格式,http://abc.com 或 https://abc.com,不可为空', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(41, 'geo', '高德Web服务key', 'string', 'geoAmapWebKey', '', '', 500, '申请地址:https://console.amap.com/dev/key/app', 1, 1, '2021-01-30 13:27:43', '2022-12-07 15:48:43'), +(42, 'sms', '短信驱动,aliyun:阿里云;tencent:腾讯云', 'string', 'smsDrive', 'tencent', '', 600, '', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(43, 'sms', '阿里云AccessKeyID', 'string', 'smsAliYunAccessKeyID', '', '', 610, '应用key和密钥你可以通过 https://ram.console.aliyun.com/manage/ak 获取', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(44, 'sms', '阿里云AccessKeySecret', 'string', 'smsAliYunAccessKeySecret', '', '', 620, '', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(45, 'sms', '阿里云短信签名', 'string', 'smsAliYunSign', '', '', 630, '申请地址:https://dysms.console.aliyun.com/domestic/text/sign', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(46, 'sms', '阿里云短信模板', 'string', 'smsAliYunTemplate', '[{"key":"login","value":"SMS_198921686"},{"key":"register","value":"SMS_198921686"},{"key":"code","value":"SMS_198921686"},{"key":"resetPwd","value":"SMS_198921686"},{"key":"bind","value":"SMS_198921686"},{"key":"cash","value":"SMS_198921686"}]', '', 640, '', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(47, 'sms', '最小发送间隔', 'int', 'smsMinInterval', '60', '', 600, '同号码', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(48, 'sms', 'IP最大发送次数', 'int', 'smsMaxIpLimit', '10', '', 610, '同IP每天最大允许发送次数', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(49, 'sms', '验证码有效期', 'int', 'smsCodeExpire', '600', '', 610, '单位:秒', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(50, 'smtp', '邮件模板', 'string', 'smtpTemplate', '[{"key":"text","value":"./resource/template/email/text.html"},{"key":"login","value":"./resource/template/email/code.html"},{"key":"register","value":"./resource/template/email/code.html"},{"key":"code","value":"./resource/template/email/code.html"},{"key":"resetPwd","value":"./resource/template/email/resetPwd.html"},{"key":"bind","value":"./resource/template/email/code.html"},{"key":"cash","value":"./resource/template/email/code.html"}]', '', 190, '', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(51, 'smtp', '最小发送间隔', 'int', 'smtpMinInterval', '60', '', 150, '同地址', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(52, 'smtp', 'IP最大发送次数', 'int', 'smtpMaxIpLimit', '10', '', 160, '同IP每天最大允许发送次数', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(53, 'smtp', '验证码有效期', 'int', 'smtpCodeExpire', '600', '', 170, '单位:秒', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(54, 'basic', '网站域名', 'string', 'basicDomain', 'http://127.0.0.1:8000', 'http://127.0.0.1:8000', 45, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), +(55, 'basic', 'websocket地址', 'string', 'basicWsAddr', 'ws://127.0.0.1:8000/socket', 'ws://127.0.0.1:8000/socket', 48, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), +(56, 'upload', 'COS存储路径', 'string', 'uploadCosPath', 'hotgo/attachment/', 'hotgo/attachment/', 450, 'COS对象存储中的相对路径', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(57, 'upload', 'COS秘钥ID', 'string', 'uploadCosSecretId', '', '', 460, '子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(58, 'upload', 'COS秘钥', 'string', 'uploadCosSecretKey', '', '', 470, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(59, 'upload', 'COS访问域名', 'string', 'uploadCosBucketURL', '', 'https://xxx-1253625515.cos.ap-beijing.myqcloud.com', 480, '控制台查看地址:https://console.cloud.tencent.com/cos/bucket', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(60, 'upload', 'OSS存储路径', 'string', 'uploadOssPath', 'hotgo/attachment/', 'hotgo/attachment/', 500, 'OSS对象存储中的相对路径', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(61, 'upload', 'OSS秘钥ID', 'string', 'uploadOssSecretId', '', '', 510, '阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(62, 'upload', 'OSS秘钥', 'string', 'uploadOssSecretKey', '', '', 520, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(63, 'upload', 'Bucket 域名', 'string', 'uploadOssBucketURL', 'http://bufanyunoss.oss-cn-qingdao.aliyuncs.com', 'https://xxx.oss-cn-qingdao.aliyuncs.com', 530, 'Bucket 域名', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(64, 'upload', 'OSSEndpoint', 'string', 'uploadOssEndpoint', 'http://oss-cn-qingdao.aliyuncs.com', 'https://oss-cn-qingdao.aliyuncs.com', 540, 'Endpoint(地域节点)', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(65, 'upload', 'OSS存储空间名称', 'string', 'uploadOssBucket', '', '', 550, '存储空间名称,例如examplebucket', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(66, 'upload', '七牛云AccessKey', 'string', 'uploadQiNiuAccessKey', '', '', 600, '创建地址:https://portal.qiniu.com/user/key', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(67, 'upload', '七牛云SecretKey', 'string', 'uploadQiNiuSecretKey', '', '', 610, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(68, 'upload', '七牛云储存路径', 'string', 'uploadQiNiuPath', 'hotgo/attachment/', 'hotgo/attachment/', 620, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(69, 'upload', '七牛云存储空间名称', 'string', 'uploadQiNiuBucket', '', 'bufanyun', 630, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(70, 'upload', '七牛云访问域名', 'string', 'uploadQiNiuDomain', '', '', 640, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(78, 'sms', '腾讯云SecretId', 'string', 'smsTencentSecretId', '', '', 650, '获取地址:https://console.cloud.tencent.com/cam/capi', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(79, 'sms', '腾讯云SecretKey', 'string', 'smsTencentSecretKey', '', '', 660, '', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(80, 'sms', '腾讯云短信应用ID', 'string', 'smsTencentAppId', '', '', 670, '查看地址:https://console.cloud.tencent.com/smsv2/app-manage', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(81, 'sms', '腾讯云短信签名', 'string', 'smsTencentSign', '', '', 680, '查看地址:https://console.cloud.tencent.com/smsv2/csms-sign', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(82, 'sms', '腾讯云接入地域域名', 'string', 'smsTencentEndpoint', 'sms.tencentcloudapi.com', 'sms.tencentcloudapi.com', 690, '默认就近地域接入域名为 sms.tencentcloudapi.com ,也支持指定地域域名访问,例如广州地域的域名为 sms.ap-guangzhou.tencentcloudapi.com', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(83, 'sms', '腾讯云地域信息', 'string', 'smsTencentRegion', 'ap-guangzhou', 'ap-guangzhou', 695, '支持的地域列表参考 https://cloud.tencent.com/document/api/382/52071#.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(84, 'sms', '腾讯云短信模板', 'string', 'smsTencentTemplate', '[{"key":"login","value":"1758990"},{"key":"register","value":"1758990"},{"key":"code","value":"1758990"},{"key":"resetPwd","value":"1758990"},{"key":"bind","value":"1758990"},{"key":"cash","value":"1758990"}]', '', 698, '', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(85, 'pay', 'Debug开关', 'bool', 'payDebug', '1', 'true', 800, '输出请求日志', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(86, 'pay', '支付宝应用ID', 'string', 'payAliPayAppId', '', '', 810, '', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(87, 'pay', '支付宝PrivateKey', 'string', 'payAliPayPrivateKey', 'storage/cert/pay/alipay/alipayPrivateKey', '', 820, '应用私钥,支持PKCS1和PKCS8', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(88, 'pay', '支付宝AppCertPublicKey', 'string', 'payAliPayAppCertPublicKey', 'storage/cert/pay/alipay/appCertPublicKey.crt', '', 830, 'appCertPublicKey.crt证书内容', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(89, 'pay', '支付宝RootCert', 'string', 'payAliPayRootCert', 'storage/cert/pay/alipay/alipayRootCert.crt', '', 840, 'alipayRootCert.crt证书内容', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(90, 'pay', '支付宝PublicKeyRSA2', 'string', 'payAliPayCertPublicKeyRSA2', 'storage/cert/pay/alipay/alipayCertPublicKey_RSA2.crt', '', 850, 'alipayCertPublicKey_RSA2.crt证书内容', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(91, 'pay', '微信支付应用ID', 'string', 'payWxPayAppId', '', '', 860, '', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(92, 'pay', '微信支付商户ID', 'string', 'payWxPayMchId', '', '', 870, '商户ID 或者服务商模式的 sp_mchid', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(93, 'pay', '微信支付证书序列号', 'string', 'payWxPaySerialNo', '', '', 880, '商户证书的证书序列号', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(94, 'pay', '微信支付APIv3Key', 'string', 'payWxPayAPIv3Key', '', '', 890, '商户平台获取', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(95, 'pay', '微信支付私钥', 'string', 'payWxPayPrivateKey', '', '', 900, 'apiclient_key.pem 读取后的内容', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(96, 'pay', 'QQ支付应用ID', 'string', 'payQQPayAppId', '', '', 910, '', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(97, 'pay', 'QQ支付商户ID', 'string', 'payQQPayMchId', '', '', 920, '', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(98, 'pay', 'QQ支付ApiKey', 'string', 'payQQPayApiKey', '', '', 930, 'API秘钥值', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(99, 'cash', '提现开关', 'int', 'cashSwitch', '1', '1', 200, '', 1, 1, '2021-09-29 23:51:21', '2022-12-21 21:58:52'), +(100, 'cash', '提现最低手续费(元)', 'int', 'cashMinFee', '3', '3', 210, '', 1, 1, '2021-09-29 23:51:21', '2022-12-21 21:58:52'), +(101, 'cash', '提现最低手续费比率', 'string', 'cashMinFeeRatio', '0.03', '0.03', 220, '', 1, 1, '2021-01-30 13:27:43', '2022-12-21 21:58:52'), +(102, 'cash', '提现最低金额', 'int', 'cashMinMoney', '100', '', 230, '', 1, 1, '2021-01-30 13:27:43', '2022-12-21 21:58:52'), +(103, 'cash', '提现提示信息', 'string', 'cashTips', '

温馨提示:请保证支付宝信息姓名、账号、收款码信息一致且无误,否则导致不到账后果自负。

\n\n

提现条件:满100元后可申请提现。

\n

提现手续费:固定3元/次,提现金额超过100元按3%收取,封顶135元/次。

', '', 240, '', 1, 1, '2021-01-30 13:27:43', '2022-12-21 21:58:52'), +(104, 'wechat', '公众号AppId', 'string', 'officialAccountAppId', '', '', 1000, '请填写微信公众平台后台的AppId', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(105, 'wechat', '公众号AppSecret', 'string', 'officialAccountAppSecret', '', '', 1010, '请填写微信公众平台后台的AppSecret', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(106, 'wechat', '公众号token', 'string', 'officialAccountToken', '', '', 1020, '', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(107, 'wechat', '公众号EncodingAESKey', 'string', 'officialAccountEncodingAESKey', '', '', 1030, '与公众平台接入设置值一致,必须为英文或者数字,长度为43个字符. 请妥善保管,EncodingAESKey 泄露将可能被窃取或篡改平台的操作数据', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(108, 'wechat', '开放平台AppId', 'string', 'openPlatformAppId', '', '', 1040, '请填写微信开放平台平台后台的AppId', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(109, 'wechat', '开放平台AppSecret', 'string', 'openPlatformAppSecret', '', '', 1050, '请填写微信开放平台平台后台的AppSecret', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(110, 'wechat', '开放平台EncodingAESKey', 'string', 'openPlatformEncodingAESKey', '', '', 1060, '与开放平台接入设置值一致,必须为英文或者数字,长度为43个字符. 请妥善保管,EncodingAESKey 泄露将可能被窃取或篡改平台的操作数据', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(111, 'wechat', '开放平台token', 'string', 'openPlatformToken', '', '', 1070, '', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(112, 'login', '注册开关', 'int', 'loginRegisterSwitch', '1', '1', 1100, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), +(113, 'login', '验证码开关', 'int', 'loginCaptchaSwitch', '1', '1', 1110, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), +(114, 'login', '用户协议', 'string', 'loginProtocol', '

用户协议..

', '', 1120, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), +(115, 'login', '隐私权政策', 'string', 'loginPolicy', '

隐私权政策..

', '', 1130, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), +(116, 'login', '默认注册角色', 'int64', 'loginRoleId', '210', '', 1140, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:49'), +(117, 'login', '默认注册部门', 'int64', 'loginDeptId', '110', '', 1150, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), +(118, 'login', '默认注册岗位', '[]int64', 'loginPostIds', '[4]', '', 1160, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), +(119, 'login', '默认注册头像', 'string', 'loginAvatar', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', '', 1170, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), +(120, 'login', '强制邀请', 'int', 'loginForceInvite', '2', '1', 1190, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:49'), +(121, 'login', '自动获取openId', 'int', 'loginAutoOpenId', '2', '1', 1195, '', 1, 1, '2021-09-29 23:51:21', '2024-08-27 19:02:48'), +(122, 'upload', 'minio AccessKey', 'string', 'uploadMinioAccessKey', '', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(123, 'upload', 'minio SecretKey', 'string', 'uploadMinioSecretKey', '', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(124, 'upload', 'minio地域节点', 'string', 'uploadMinioEndpoint', '', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(125, 'upload', 'minio是否启用SSL', 'int', 'uploadMinioUseSSL', '1', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(126, 'upload', 'minio存储路径', 'string', 'uploadMinioPath', 'hotgo/attachment/', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(127, 'upload', 'minio桶名称', 'string', 'uploadMinioBucket', '', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(128, 'upload', 'minio对外访问域名', 'string', 'uploadMinioDomain', '', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(129, 'login', '验证码方式', 'int', 'loginCaptchaType', '1', '2', 1200, '', 1, 1, '2025-06-25 17:04:39', '2025-06-25 17:23:15'); +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_cron` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_cron` ( + `id` bigint(20) NOT NULL COMMENT '任务ID', + `group_id` bigint(20) NOT NULL COMMENT '分组ID', + `title` varchar(128) NOT NULL COMMENT '任务标题', + `name` varchar(100) DEFAULT NULL COMMENT '任务方法', + `params` varchar(255) DEFAULT NULL COMMENT '函数参数', + `pattern` varchar(64) NOT NULL COMMENT '表达式', + `policy` bigint(20) NOT NULL DEFAULT '1' COMMENT '策略', + `count` bigint(20) NOT NULL DEFAULT '0' COMMENT '执行次数', + `sort` int(11) DEFAULT '0' COMMENT '排序', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `status` tinyint(1) DEFAULT '1' COMMENT '任务状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COMMENT='系统_定时任务'; + +-- +-- 转存表中的数据 `hg_sys_cron` +-- + +INSERT INTO `hg_sys_cron` (`id`, `group_id`, `title`, `name`, `params`, `pattern`, `policy`, `count`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, 1, '测试任务', 'test', '', '* * * * * *', 1, 3, 10, '测试无参数任务', 2, '2022-10-01 22:02:09', '2023-11-25 14:33:05'), +(2, 1, '测试带参数', 'test2', 'hotGo,3,欢迎使用hotGo!', '* * * * * *', 1, 0, 10, '测试有参数任务', 2, '2022-10-01 06:02:09', '2023-11-17 18:38:49'), +(3, 1, '测试带参数-多任务', 'test2', 'hotGo,3,这是同一个执行方法开多个定时任务的实例!', '* * * * * *', 1, 1, 10, '相同的执行方法,可以开启多个任务', 2, '2023-11-17 16:12:26', '2023-11-20 10:11:47'), +(4, 1, '测试带参数-错误', 'test2', '666', '* * * * * *', 1, 1, 10, '参入一个错误的参数格式,来模拟执行出错示例', 2, '2023-11-17 18:23:39', '2023-11-17 18:39:59'), +(10, 1, '关闭过期订单', 'close_order', '', '0 */10 * * * *', 1, 1, 100, '取消过期订单,10分钟运行一次', 2, '2023-04-22 21:58:47', '2023-11-18 11:54:07'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_cron_group` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_cron_group` ( + `id` bigint(20) NOT NULL COMMENT '任务分组ID', + `pid` bigint(20) NOT NULL COMMENT '父类任务分组ID', + `name` varchar(100) DEFAULT '' COMMENT '分组名称', + `is_default` tinyint(1) DEFAULT '0' COMMENT '是否默认', + `sort` int(11) DEFAULT '0' COMMENT '排序', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `status` tinyint(1) DEFAULT '1' COMMENT '分组状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='系统_定时任务分组'; + +-- +-- 转存表中的数据 `hg_sys_cron_group` +-- + +INSERT INTO `hg_sys_cron_group` (`id`, `pid`, `name`, `is_default`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, 0, '系统默认', 1, 0, '这是系统默认的任务分组,无法删除!', 1, '2021-02-25 17:38:07', '2021-02-25 19:32:57'), +(2, 0, '测试', 0, 0, '这是测试任务分组', 1, NULL, '2023-05-29 14:59:39'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_dict_data` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_dict_data` ( + `id` bigint(20) NOT NULL COMMENT '字典数据ID', + `label` varchar(100) DEFAULT NULL COMMENT '字典标签', + `value` varchar(100) DEFAULT NULL COMMENT '字典键值', + `value_type` varchar(255) NOT NULL DEFAULT 'string' COMMENT '键值数据类型:string,int,uint,bool,datetime,date', + `type` varchar(100) DEFAULT NULL COMMENT '字典类型', + `list_class` varchar(100) DEFAULT NULL COMMENT '表格回显样式', + `is_default` tinyint(1) DEFAULT '2' COMMENT '是否为系统默认', + `sort` int(11) DEFAULT '0' COMMENT '字典排序', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `status` tinyint(1) DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=InnoDB AUTO_INCREMENT=171 DEFAULT CHARSET=utf8mb4 COMMENT='系统_字典数据'; + +-- +-- 转存表中的数据 `hg_sys_dict_data` +-- + +INSERT INTO `hg_sys_dict_data` (`id`, `label`, `value`, `value_type`, `type`, `list_class`, `is_default`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, '男', '1', 'int', 'sys_user_sex', 'success', 1, 10, '性别男', 1, '2021-01-30 13:27:43', '2023-04-27 23:24:58'), +(2, '女', '2', 'int', 'sys_user_sex', 'warning', 1, 20, '性别女', 1, '2021-01-30 13:27:43', '2023-01-06 09:45:21'), +(3, '保密', '3', 'int', 'sys_user_sex', 'error', 1, 30, '性别保密', 1, '2021-01-30 13:27:43', '2023-01-06 09:45:18'), +(6, '正常', '1', 'int', 'sys_normal_disable', 'success', 1, 10, '正常状态', 1, '2021-01-30 13:27:43', '2023-01-18 09:52:44'), +(7, '停用', '2', 'int', 'sys_normal_disable', 'warning', 1, 20, '停用状态', 1, '2021-01-30 13:27:43', '2023-01-18 09:52:48'), +(8, '正常', '1', 'int', 'sys_job_status', 'primary', 1, 10, '正常状态', 1, '2021-01-30 13:27:43', '2023-01-18 09:53:48'), +(9, '暂停', '2', 'int', 'sys_job_status', 'error', 1, 20, '停用状态', 1, '2021-01-30 13:27:43', '2023-01-18 09:53:53'), +(10, '默认', 'DEFAULT', 'string', 'sys_job_group', '', 1, 10, '默认分组', 1, '2021-01-30 13:27:43', NULL), +(11, '系统', 'SYSTEM', 'string', 'sys_job_group', '', 1, 20, '系统分组', 1, '2021-01-30 13:27:43', NULL), +(14, '通知', '1', 'int', 'sys_notice_type', 'warning', 1, 10, '通知', 1, '2021-01-30 13:27:43', '2023-01-05 20:06:47'), +(15, '公告', '2', 'int', 'sys_notice_type', 'error', 1, 20, '公告', 1, '2021-01-30 13:27:43', '2023-01-26 12:08:52'), +(18, '新增', '1', 'int', 'sys_oper_type', 'info', 0, 10, '新增操作', 1, '2021-01-30 13:27:43', NULL), +(19, '修改', '2', 'int', 'sys_oper_type', 'info', 0, 20, '修改操作', 1, '2021-01-30 13:27:43', NULL), +(20, '删除', '3', 'int', 'sys_oper_type', 'error', 0, 30, '删除操作', 1, '2021-01-30 13:27:43', NULL), +(21, '授权', '4', 'int', 'sys_oper_type', 'primary', 0, 40, '授权操作', 1, '2021-01-30 13:27:43', NULL), +(22, '导出', '5', 'int', 'sys_oper_type', 'warning', 0, 50, '导出操作', 1, '2021-01-30 13:27:43', NULL), +(23, '导入', '6', 'int', 'sys_oper_type', 'warning', 0, 60, '导入操作', 1, '2021-01-30 13:27:43', NULL), +(24, '强退', '7', 'int', 'sys_oper_type', 'error', 0, 70, '强退操作', 1, '2021-01-30 13:27:43', NULL), +(25, '生成代码', '8', 'int', 'sys_oper_type', 'warning', 0, 80, '生成操作', 1, '2021-01-30 13:27:43', NULL), +(26, '清空数据', '9', 'int', 'sys_oper_type', 'error', 0, 90, '清空操作', 1, '2021-01-30 13:27:43', NULL), +(28, '校验', '11', 'int', 'sys_oper_type', NULL, 0, 110, '校验', 1, '2021-10-04 22:40:50', '2021-10-04 22:50:02'), +(80, '查询', '10', 'int', 'sys_oper_type', NULL, 0, 100, '查询', 1, '2021-10-04 22:37:38', '2021-10-04 22:49:32'), +(88, 'GET', 'GET', 'string', 'sys_oper_method', '', 0, 10, '', 1, '2022-01-25 10:16:46', '2022-01-25 10:16:46'), +(89, 'POST', 'POST', 'string', 'sys_oper_method', '', 0, 20, '', 1, '2022-01-25 10:16:54', '2022-01-25 10:16:54'), +(90, '请求失败', '-1', 'int', 'req_code', 'warning', 0, 20, '通用错误码', 1, '2022-01-25 10:23:34', '2023-01-06 09:58:17'), +(91, '请求成功', '0', 'int', 'req_code', 'success', 0, 10, '通用成功码', 1, '2022-01-25 10:23:54', '2023-01-06 09:58:14'), +(92, '内部发生错误', '50', 'int', 'req_code', 'error', 0, 30, '内部错误', 1, '2022-01-25 10:24:06', '2023-01-06 09:56:31'), +(95, '不允许的操作', '59', 'int', 'req_code', 'error', 0, 60, '当前操作的给定参数无效', 1, '2022-01-25 10:24:38', '2023-01-06 09:56:00'), +(103, '没有授权登录', '61', 'int', 'req_code', 'warning', 0, 140, '未授权', 1, '2022-01-25 10:26:12', '2023-01-06 09:55:50'), +(109, '业务验证失败', '300', 'int', 'req_code', 'warning', 0, 200, '业务验证失败', 1, '2022-01-25 10:27:51', '2023-01-06 09:56:51'), +(110, '大于50ms', '50', 'int64', 'req_take_up_time', 'success', 0, 10, '', 1, '2022-01-25 15:51:45', '2023-01-06 09:59:50'), +(111, '大于100ms', '100', 'int64', 'req_take_up_time', 'success', 0, 20, '', 1, '2022-01-25 15:51:57', '2023-01-06 09:59:53'), +(112, '大于200ms', '200', 'int64', 'req_take_up_time', 'info', 0, 30, '', 1, '2022-01-25 15:52:21', '2023-01-06 09:59:57'), +(113, '大于500ms', '500', 'int64', 'req_take_up_time', 'warning', 0, 40, '', 1, '2022-01-25 15:52:32', '2023-01-06 10:00:02'), +(114, '大于1000ms', '1000', 'int64', 'req_take_up_time', 'error', 0, 50, '', 1, '2022-01-25 15:52:57', '2023-01-06 10:00:06'), +(115, '大于5000ms', '5000', 'int64', 'req_take_up_time', 'error', 0, 60, '', 1, '2022-01-24 23:54:15', '2023-01-06 10:00:10'), +(116, '开启', '1', 'int', 'sys_switch', 'info', 1, 10, '系统开关开启', 1, '2021-01-30 13:27:43', '2022-12-27 00:00:00'), +(117, '关闭', '2', 'int', 'sys_switch', 'warning', 1, 20, '系统开关关闭', 1, '2021-01-30 13:27:43', '2022-12-27 00:00:00'), +(118, 'PC端', '1', 'int', 'sys_user_channel', 'info', 0, 80, '用户来源', 1, '2021-01-30 13:27:43', '2023-01-05 17:01:21'), +(119, '移动端', '2', 'int', 'sys_user_channel', 'success', 0, 80, '用户来源', 1, '2021-01-30 13:27:43', '2023-01-05 16:52:48'), +(120, '微信', '3', 'int', 'sys_user_channel', 'warning', 0, 80, '用户来源', 1, '2021-01-30 13:27:43', '2023-01-05 16:52:43'), +(121, '抖音', '4', 'int', 'sys_user_channel', 'error', 0, 80, '用户来源', 1, '2021-01-30 13:27:43', '2023-01-05 16:52:39'), +(122, '音乐', '1', 'int', 'sys_user_hobby', 'error', 0, 80, '爱好类型', 1, '2021-01-30 13:27:43', '2023-01-06 09:45:11'), +(123, '读书', '2', 'int', 'sys_user_hobby', 'info', 0, 80, '爱好类型', 1, '2021-01-30 13:27:43', '2023-01-06 09:45:08'), +(124, '游泳', '3', 'int', 'sys_user_hobby', 'warning', 0, 80, '爱好类型', 1, '2021-01-30 13:27:43', '2023-01-06 09:45:05'), +(125, '本地存储', 'local', 'string', 'config_upload_drive', 'info', 1, 10, '', 1, '2022-12-30 17:57:50', '2023-01-06 10:02:31'), +(126, 'ucloud', 'ucloud', 'string', 'config_upload_drive', 'success', 1, 20, '', 1, '2022-12-30 17:58:26', '2022-12-30 17:58:26'), +(127, 'DEBU', 'DEBU', 'string', 'sys_log_type', 'default', 0, 10, '', 1, '2023-01-20 16:56:23', '2023-01-20 16:56:23'), +(128, 'INFO', 'INFO', 'string', 'sys_log_type', 'info', 0, 20, '', 1, '2023-01-20 16:56:34', '2023-01-20 16:56:34'), +(129, 'WARN', 'WARN', 'string', 'sys_log_type', 'warning', 0, 30, '', 1, '2023-01-20 16:56:47', '2023-01-20 16:56:47'), +(130, 'ERRO', 'ERRO', 'string', 'sys_log_type', 'error', 0, 50, '', 1, '2023-01-20 16:57:01', '2023-01-20 16:57:01'), +(131, 'PANI', 'PANI', 'string', 'sys_log_type', 'error', 0, 60, '', 1, '2023-01-20 16:57:23', '2023-01-20 16:57:23'), +(132, 'FATA', 'FATA', 'string', 'sys_log_type', 'error', 0, 70, '', 1, '2023-01-20 16:57:37', '2023-01-20 16:57:37'), +(133, '阿里云', 'aliyun', 'string', 'config_sms_drive', 'success', 0, 10, '', 1, '2023-01-21 10:27:59', '2023-01-21 10:27:59'), +(134, '腾讯云', 'tencent', 'string', 'config_sms_drive', 'info', 0, 20, '', 1, '2023-01-21 10:28:23', '2023-01-21 10:28:23'), +(135, '通用验证码', 'code', 'string', 'config_sms_template', 'info', 0, 10, '', 1, '2023-01-21 10:28:39', '2023-01-21 20:40:09'), +(136, '登录', 'login', 'string', 'config_sms_template', 'success', 0, 20, '', 1, '2023-01-21 10:28:48', '2023-01-21 10:28:48'), +(137, '注册', 'register', 'string', 'config_sms_template', 'warning', 0, 30, '', 1, '2023-01-21 10:28:58', '2023-01-21 10:28:58'), +(138, '重置密码', 'resetPwd', 'string', 'config_sms_template', 'error', 0, 40, '', 1, '2023-01-21 10:29:10', '2023-01-21 10:29:10'), +(139, '绑定手机号', 'bind', 'string', 'config_sms_template', 'info', 0, 50, '', 1, '2023-01-21 10:29:22', '2023-01-21 10:29:22'), +(140, '申请提现', 'cash', 'string', 'config_sms_template', 'primary', 0, 60, '', 1, '2023-01-21 10:29:36', '2023-01-21 10:29:40'), +(141, '私信', '3', 'int', 'sys_notice_type', 'info', 0, 30, '', 1, '2023-01-26 12:08:42', '2023-01-26 12:08:42'), +(142, '一般', '1', 'int', 'sys_notice_tag', 'info', 0, 10, '', 1, '2023-01-26 12:13:04', '2023-01-26 12:16:07'), +(143, '重要', '2', 'int', 'sys_notice_tag', 'error', 0, 20, '', 1, '2023-01-26 12:13:36', '2023-01-26 12:13:36'), +(144, '提醒', '3', 'int', 'sys_notice_tag', 'warning', 0, 30, '', 1, '2023-01-26 12:13:52', '2023-01-26 12:13:52'), +(145, '注意', '4', 'int', 'sys_notice_tag', 'success', 0, 40, '', 1, '2023-01-26 12:14:12', '2023-01-26 12:14:12'), +(146, '调试', '5', 'int', 'sys_notice_tag', 'default', 0, 50, '', 1, '2023-01-26 12:15:59', '2023-01-26 12:15:59'), +(147, '通用验证码', 'code', 'string', 'config_ems_template', 'info', 0, 10, '', 1, '2023-01-21 10:28:39', '2023-01-21 20:40:09'), +(148, '登录', 'login', 'string', 'config_ems_template', 'success', 0, 20, '', 1, '2023-01-21 10:28:48', '2023-01-21 10:28:48'), +(149, '注册', 'register', 'string', 'config_ems_template', 'warning', 0, 30, '', 1, '2023-01-21 10:28:58', '2023-01-21 10:28:58'), +(150, '重置密码', 'resetPwd', 'string', 'config_ems_template', 'error', 0, 40, '', 1, '2023-01-21 10:29:10', '2023-01-21 10:29:10'), +(151, '绑定手机号', 'bind', 'string', 'config_ems_template', 'info', 0, 50, '', 1, '2023-01-21 10:29:22', '2023-01-21 10:29:22'), +(152, '申请提现', 'cash', 'string', 'config_ems_template', 'primary', 0, 60, '', 1, '2023-01-21 10:29:36', '2023-01-21 10:29:40'), +(153, '富文本', 'text', 'string', 'config_ems_template', 'default', 0, 0, '自定义编辑邮件内容时使用', 1, '2023-01-21 10:29:36', '2023-05-29 14:30:49'), +(154, '腾讯云', 'cos', 'string', 'config_upload_drive', 'info', 1, 30, '', 1, '2022-12-30 17:58:26', '2022-12-30 17:58:26'), +(155, '阿里云', 'oss', 'string', 'config_upload_drive', 'info', 1, 40, '', 1, '2022-12-30 17:58:26', '2022-12-30 17:58:26'), +(156, '七牛云', 'qiniu', 'string', 'config_upload_drive', 'success', 1, 50, '', 1, '2022-12-30 17:58:26', '2022-12-30 17:58:26'), +(157, 'minio', 'minio', 'string', 'config_upload_drive', 'default', 0, 60, '', 1, '2023-11-11 16:45:12', '2023-11-11 16:45:12'), +(158, '目录', '1', 'int', 'sys_menu_types', 'success', 1, 10, '', 1, '2021-01-30 13:27:43', '2023-04-27 23:24:58'), +(159, '菜单', '2', 'int', 'sys_menu_types', 'primary', 1, 20, '', 1, '2021-01-30 13:27:43', '2023-04-27 23:24:58'), +(160, '按钮', '3', 'int', 'sys_menu_types', 'info', 1, 30, '', 1, '2021-01-30 13:27:43', '2023-04-27 23:24:58'), +(161, '主目录', 'LAYOUT', 'string', 'sys_menu_component', 'default', 0, 10, '', 1, '2024-04-16 13:35:49', '2024-04-16 13:35:49'), +(162, '子目录', 'ParentLayout', 'string', 'sys_menu_component', 'default', 0, 20, '', 1, '2024-04-16 13:36:04', '2024-04-16 13:36:04'), +(163, '内嵌链接', 'IFRAME', 'string', 'sys_menu_component', 'default', 0, 30, '', 1, '2024-04-16 13:36:30', '2024-04-16 13:36:30'), +(164, '登录成功', '1', 'int', 'sys_login_status', 'success', 0, 10, '', 1, '2024-04-16 15:21:41', '2024-04-16 15:21:41'), +(165, '登录失败', '2', 'int', 'sys_login_status', 'warning', 0, 20, '', 1, '2024-04-16 15:22:02', '2024-04-16 15:22:02'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_dict_type` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_dict_type` ( + `id` bigint(20) NOT NULL COMMENT '字典类型ID', + `pid` bigint(20) NOT NULL DEFAULT '0' COMMENT '父类字典类型ID', + `name` varchar(100) DEFAULT '' COMMENT '字典类型名称', + `type` varchar(100) DEFAULT '' COMMENT '字典类型', + `sort` int(11) DEFAULT '0' COMMENT '排序', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `status` tinyint(1) DEFAULT '1' COMMENT '字典类型状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=utf8mb4 COMMENT='系统_字典类型'; + +-- +-- 转存表中的数据 `hg_sys_dict_type` +-- + +INSERT INTO `hg_sys_dict_type` (`id`, `pid`, `name`, `type`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, 27, '用户性别', 'sys_user_sex', 0, '用户性别列表', 1, '2021-01-30 13:27:43', '2021-03-24 11:38:47'), +(2, 28, '菜单类型', 'sys_menu_types', 80, '', 1, '2021-01-30 13:27:43', '2023-02-26 00:46:18'), +(3, 28, '系统状态', 'sys_normal_disable', 10, '系统状态列表', 1, '2021-01-30 13:27:43', NULL), +(4, 26, '任务状态', 'sys_job_status', 0, '任务状态列表', 1, '2021-01-30 13:27:43', NULL), +(5, 26, '任务分组', 'sys_job_group', 0, '任务分组列表', 1, '2021-01-30 13:27:43', NULL), +(7, 29, '通知类型', 'sys_notice_type', 0, '通知类型列表', 1, '2021-01-30 13:27:43', NULL), +(9, 28, '操作类型', 'sys_oper_type', 100, '', 1, '2021-01-30 13:27:43', '2023-02-26 00:48:01'), +(22, 25, '请求方式', 'sys_oper_method', 0, '', 1, '2022-01-24 11:33:16', '2022-01-24 11:33:16'), +(23, 25, '请求状态码', 'req_code', 0, '', 1, '2022-01-25 10:22:40', '2022-01-25 10:22:40'), +(24, 25, '请求耗时', 'req_take_up_time', 0, '', 1, '2022-01-25 15:51:19', '2022-01-25 15:51:19'), +(25, 0, '请求枚举', 'req', 40, '', 1, '2022-01-24 11:33:16', '2022-01-24 11:33:16'), +(26, 0, '任务枚举', 'job', 30, '', 1, '2022-01-24 11:33:16', '2022-01-24 11:33:16'), +(27, 0, '组织枚举', 'org', 20, '', 1, '2022-01-24 11:33:16', '2023-04-27 23:24:53'), +(28, 0, '系统枚举', 'sys', 10, '', 1, '2022-01-24 11:33:16', '2023-02-26 00:33:13'), +(29, 0, '通知枚举', 'notice', 50, '', 1, '2022-01-24 11:33:16', '2022-01-24 11:33:16'), +(30, 27, '用户爱好', 'sys_user_hobby', 0, NULL, 1, '2021-03-01 11:41:07', '2021-03-01 11:41:07'), +(31, 27, '用户渠道', 'sys_user_channel', 0, NULL, 1, '2021-03-01 11:41:07', '2021-03-01 11:41:07'), +(32, 0, '配置枚举', 'config', 60, '', 1, '2022-12-30 17:55:42', '2023-05-29 14:47:01'), +(33, 32, '上传驱动', 'config_upload_drive', 10, '', 1, '2022-12-30 17:57:18', '2022-12-30 17:57:18'), +(34, 28, '日志类型', 'sys_log_type', 200, '', 1, '2023-01-20 16:39:52', '2023-02-24 17:40:45'), +(35, 32, '短信驱动', 'config_sms_drive', 20, '', 1, '2023-01-21 10:27:01', '2023-01-21 10:27:01'), +(36, 32, '短信模板', 'config_sms_template', 30, '', 1, '2023-01-21 10:27:41', '2023-01-21 10:27:41'), +(37, 29, '通知标签', 'sys_notice_tag', 20, '', 1, '2023-01-26 12:09:46', '2023-01-26 12:09:46'), +(38, 32, '邮件模板', 'config_ems_template', 40, '', 1, '2023-02-04 12:53:07', '2023-02-04 12:53:07'), +(40, 28, '系统开关', 'sys_switch', 20, '', 1, '2024-04-16 09:50:58', '2024-04-16 09:50:58'), +(41, 28, '菜单组件', 'sys_menu_component', 90, '', 1, '2024-04-16 13:35:29', '2024-04-16 13:35:29'), +(42, 28, '登录状态', 'sys_login_status', 300, '', 1, '2024-04-16 15:21:23', '2024-04-16 15:21:23'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_ems_log` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_ems_log` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `event` varchar(64) NOT NULL COMMENT '事件', + `email` varchar(512) NOT NULL COMMENT '邮箱地址,多个用;隔开', + `code` varchar(256) DEFAULT '' COMMENT '验证码', + `times` bigint(20) NOT NULL COMMENT '验证次数', + `content` longtext COMMENT '邮件内容', + `ip` varchar(128) DEFAULT NULL COMMENT 'ip地址', + `status` tinyint(1) DEFAULT '1' COMMENT '状态(1未验证,2已验证)', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COMMENT='系统_邮件发送记录'; + +-- +-- 转存表中的数据 `hg_sys_ems_log` +-- + +INSERT INTO `hg_sys_ems_log` (`id`, `event`, `email`, `code`, `times`, `content`, `ip`, `status`, `created_at`, `updated_at`) VALUES +(4, 'bind', '133814250@qq.com', '8793', 1, '\r\n\r\n\r\n \r\n \r\n \r\n \r\n 验证码邮件\r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 这是你发送的验证码吗?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Windows 10
\r\n 保留地址 (estimated)
\r\n IP 地址: 127**.0.1\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 如果是,请输入验证码:\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 8793\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 该验证码10分钟内有效,请不要告诉于他人!\r\n

\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n', '39.165.245.100', 2, '2023-02-04 16:49:39', '2023-02-04 16:56:24'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_gen_codes` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_gen_codes` ( + `id` bigint(20) NOT NULL COMMENT '生成ID', + `gen_type` int(10) unsigned NOT NULL COMMENT '生成类型', + `gen_template` int(11) DEFAULT '0' COMMENT '生成模板', + `var_name` varchar(255) NOT NULL COMMENT '实体命名', + `options` json DEFAULT NULL COMMENT '配置选项', + `db_name` varchar(128) DEFAULT NULL COMMENT '数据库名称', + `table_name` varchar(255) NOT NULL COMMENT '主表名称', + `table_comment` varchar(255) DEFAULT NULL COMMENT '主表注释', + `dao_name` varchar(255) DEFAULT NULL COMMENT '主表dao模型', + `master_columns` json DEFAULT NULL COMMENT '主表字段', + `addon_name` varchar(128) DEFAULT NULL COMMENT '插件名称', + `status` tinyint(1) DEFAULT '1' COMMENT '生成状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COMMENT='系统_代码生成记录'; + +-- +-- 转存表中的数据 `hg_sys_gen_codes` +-- + +INSERT INTO `hg_sys_gen_codes` (`id`, `gen_type`, `gen_template`, `var_name`, `options`, `db_name`, `table_name`, `table_comment`, `dao_name`, `master_columns`, `addon_name`, `status`, `created_at`, `updated_at`) VALUES +(1, 10, 0, 'CurdDemo', '{"join": [{"uuid": "pgJsFoqfaGjqgKjy", "alias": "testCategory", "field": "id", "columns": [{"dc": "分类ID", "id": 1, "name": "id", "extra": "auto_increment", "index": "PRI", "goName": "TestCategoryId", "goType": "int64", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "testCategoryId", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0}, {"dc": "关联分类", "id": 2, "name": "name", "align": "left", "extra": "", "index": "", "width": 100, "goName": "TestCategoryName", "goType": "string", "isEdit": false, "isList": true, "isSort": false, "length": 255, "tsName": "testCategoryName", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": 0, "formMode": "", "formRole": "", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": ""}, {"dc": "分类简称", "id": 3, "name": "short_name", "align": "left", "extra": "", "index": "", "width": null, "goName": "TestCategoryShortName", "goType": "string", "isEdit": false, "isList": false, "isSort": false, "length": 128, "tsName": "testCategoryShortName", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(128)", "dataType": "varchar", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "LIKE %...%", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "描述", "id": 3, "name": "description", "extra": "", "index": "", "goName": "TestCategoryDescription", "goType": "string", "isEdit": false, "isList": false, "isSort": false, "length": 255, "tsName": "testCategoryDescription", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": ""}, {"dc": "排序", "id": 4, "name": "sort", "extra": "", "index": "", "goName": "TestCategorySort", "goType": "int", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "testCategorySort", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0}, {"dc": "备注", "id": 5, "name": "remark", "extra": "", "index": "", "goName": "TestCategoryRemark", "goType": "string", "isEdit": false, "isList": false, "isSort": false, "length": 255, "tsName": "testCategoryRemark", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": ""}, {"dc": "状态", "id": 6, "name": "status", "extra": "", "index": "", "goName": "TestCategoryStatus", "goType": "int", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "testCategoryStatus", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "tinyint(1)", "dataType": "tinyint", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1}, {"dc": "创建时间", "id": 7, "name": "created_at", "extra": "", "index": "", "goName": "TestCategoryCreatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "testCategoryCreatedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "datetime", "dataType": "datetime", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": ""}, {"dc": "修改时间", "id": 8, "name": "updated_at", "extra": "", "index": "", "goName": "TestCategoryUpdatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "testCategoryUpdatedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "datetime", "dataType": "datetime", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": ""}, {"dc": "删除时间", "id": 9, "name": "deleted_at", "extra": "", "index": "", "goName": "TestCategoryDeletedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "testCategoryDeletedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "datetime", "dataType": "datetime", "dictType": 0, "formMode": "", "formRole": "", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": ""}], "daoName": "TestCategory", "linkMode": 1, "linkTable": "hg_test_category", "masterField": "category_id"}], "menu": {"pid": 2366, "icon": "", "sort": 10}, "tree": {"styleType": 1, "titleColumn": null}, "autoOps": ["genMenuPermissions", "runDao", "runService", "forcedCover"], "headOps": ["add", "batchDel", "export"], "funcDict": {"labelColumn": "title", "valueColumn": "id"}, "columnOps": ["edit", "del", "switch", "check", "status"], "presetStep": {"formGridCols": 2}}', 'default', 'hg_sys_gen_curd_demo', 'CURD列表', 'SysGenCurdDemo', '[{"dc": "ID", "id": 1, "name": "id", "align": "left", "extra": "auto_increment", "index": "PRI", "width": 50, "goName": "Id", "goType": "int64", "isEdit": false, "isList": true, "isSort": true, "length": 0, "tsName": "id", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": true, "required": true, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0, "formGridSpan": 1}, {"dc": "测试分类", "id": 2, "name": "category_id", "align": "left", "extra": "", "index": "", "width": 100, "goName": "CategoryId", "goType": "int64", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "categoryId", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": -300004223237244, "formMode": "Select", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0, "formGridSpan": 1}, {"dc": "标题", "id": 3, "name": "title", "align": "left", "extra": "", "index": "", "width": 150, "goName": "Title", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 64, "tsName": "title", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "varchar(64)", "dataType": "varchar", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": true, "required": true, "queryWhere": "LIKE %...%", "isAllowNull": "NO", "defaultValue": "", "formGridSpan": 1}, {"dc": "描述", "id": 4, "name": "description", "align": "left", "extra": "", "index": "", "width": 300, "goName": "Description", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 255, "tsName": "description", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "InputTextarea", "formRole": "none", "isExport": true, "required": true, "queryWhere": "LIKE %...%", "isAllowNull": "NO", "defaultValue": "", "formGridSpan": 2}, {"dc": "内容", "id": 5, "name": "content", "align": "left", "extra": "", "index": "", "width": null, "goName": "Content", "goType": "string", "isEdit": true, "isList": false, "isSort": false, "length": 65535, "tsName": "content", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "text", "dataType": "text", "dictType": null, "formMode": "InputEditor", "formRole": "none", "isExport": false, "required": true, "queryWhere": "LIKE %...%", "isAllowNull": "NO", "defaultValue": "", "formGridSpan": 2}, {"dc": "单图", "id": 6, "name": "image", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Image", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 255, "tsName": "image", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "UploadImage", "formRole": "none", "isExport": true, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "附件", "id": 7, "name": "attachfile", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Attachfile", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 255, "tsName": "attachfile", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "UploadFile", "formRole": "none", "isExport": true, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "所在城市", "id": 8, "name": "city_id", "align": "left", "extra": "", "index": "", "width": null, "goName": "CityId", "goType": "int64", "isEdit": true, "isList": false, "isSort": false, "length": 0, "tsName": "cityId", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "CitySelector", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "显示开关", "id": 9, "name": "switch", "align": "left", "extra": "", "index": "", "width": 150, "goName": "Switch", "goType": "int", "isEdit": true, "isList": true, "isSort": false, "length": 0, "tsName": "switch", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": null, "formMode": "Switch", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1, "formGridSpan": 1}, {"dc": "排序", "id": 10, "name": "sort", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Sort", "goType": "int", "isEdit": true, "isList": true, "isSort": true, "length": 0, "tsName": "sort", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": true, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0, "formGridSpan": 1}, {"dc": "状态", "id": 11, "name": "status", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Status", "goType": "int", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "status", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "tinyint(1)", "dataType": "tinyint", "dictType": 3, "formMode": "Select", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1, "formGridSpan": 1}, {"dc": "创建者", "id": 12, "name": "created_by", "align": "left", "extra": "", "index": "", "width": 150, "goName": "CreatedBy", "goType": "int64", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "createdBy", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "更新者", "id": 13, "name": "updated_by", "align": "left", "extra": "", "index": "", "width": 150, "goName": "UpdatedBy", "goType": "int64", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "updatedBy", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "删除者", "id": 14, "name": "deleted_by", "align": "left", "extra": "", "index": "", "width": null, "goName": "DeletedBy", "goType": "int64", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "deletedBy", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "创建时间", "id": 14, "name": "created_at", "align": "left", "extra": "", "index": "", "width": 180, "goName": "CreatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "createdAt", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "datetime", "dataType": "datetime", "dictType": null, "formMode": "TimeRange", "formRole": "none", "isExport": true, "required": false, "queryWhere": "BETWEEN", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "修改时间", "id": 15, "name": "updated_at", "align": "left", "extra": "", "index": "", "width": 180, "goName": "UpdatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "updatedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "datetime", "dataType": "datetime", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "删除时间", "id": 16, "name": "deleted_at", "align": "left", "extra": "", "index": "", "width": null, "goName": "DeletedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "deletedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "datetime", "dataType": "datetime", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}]', '', 1, '2023-01-18 11:51:22', '2024-08-27 18:45:04'), +(8, 10, 0, 'TestCategory', '{"join": [], "menu": {"pid": 2366, "icon": "", "sort": 1000}, "tree": {"styleType": 1, "titleColumn": null}, "autoOps": ["genMenuPermissions", "runService", "genFuncDict", "forcedCover"], "headOps": ["add", "batchDel"], "funcDict": {"labelColumn": "name", "valueColumn": "id"}, "columnOps": ["edit", "del", "check", "status"], "presetStep": {"formGridCols": 2}}', 'default', 'hg_test_category', '测试分类', 'TestCategory', '[{"dc": "分类ID", "id": 1, "name": "id", "align": "left", "extra": "auto_increment", "index": "PRI", "width": 80, "goName": "Id", "goType": "int64", "isEdit": false, "isList": true, "isSort": true, "length": 0, "tsName": "id", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": true, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0, "formGridSpan": 2}, {"dc": "分类名称", "id": 2, "name": "name", "align": "left", "extra": "", "index": "", "width": null, "goName": "Name", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 255, "tsName": "name", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": true, "required": true, "queryWhere": "LIKE %...%", "isAllowNull": "NO", "defaultValue": "", "formGridSpan": 2}, {"dc": "简称", "id": 3, "name": "short_name", "align": "left", "extra": "", "index": "", "width": 80, "goName": "ShortName", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 128, "tsName": "shortName", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(128)", "dataType": "varchar", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": true, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 2}, {"dc": "描述", "id": 3, "name": "description", "align": "left", "extra": "", "index": "", "width": 300, "goName": "Description", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 255, "tsName": "description", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "InputTextarea", "formRole": "none", "isExport": true, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 2}, {"dc": "排序", "id": 4, "name": "sort", "align": "left", "extra": "", "index": "", "width": null, "goName": "Sort", "goType": "int", "isEdit": true, "isList": false, "isSort": true, "length": 0, "tsName": "sort", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": true, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0, "formGridSpan": 1}, {"dc": "状态", "id": 6, "name": "status", "align": "left", "extra": "", "index": "", "width": null, "goName": "Status", "goType": "int", "isEdit": true, "isList": true, "isSort": false, "length": 0, "tsName": "status", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "tinyint(1)", "dataType": "tinyint", "dictType": 3, "formMode": "Select", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1, "formGridSpan": 1}, {"dc": "备注", "id": 5, "name": "remark", "align": "left", "extra": "", "index": "", "width": null, "goName": "Remark", "goType": "string", "isEdit": true, "isList": false, "isSort": false, "length": 255, "tsName": "remark", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "InputTextarea", "formRole": "none", "isExport": true, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 2}, {"dc": "创建时间", "id": 7, "name": "created_at", "align": "left", "extra": "", "index": "", "width": 180, "goName": "CreatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "createdAt", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "datetime", "dataType": "datetime", "dictType": null, "formMode": "TimeRange", "formRole": "none", "isExport": true, "required": false, "queryWhere": "BETWEEN", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "修改时间", "id": 8, "name": "updated_at", "align": "left", "extra": "", "index": "", "width": null, "goName": "UpdatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "updatedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "datetime", "dataType": "datetime", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "删除时间", "id": 9, "name": "deleted_at", "align": "left", "extra": "", "index": "", "width": null, "goName": "DeletedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "deletedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "datetime", "dataType": "datetime", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}]', 'hgexample', 1, '2024-04-08 15:18:07', '2024-07-20 21:41:45'), +(9, 11, 0, 'NormalTreeDemo', '{"join": [], "menu": {"pid": 2366, "icon": "", "sort": 200}, "tree": {"styleType": 1, "titleColumn": "title"}, "autoOps": ["genMenuPermissions", "runDao", "runService", "forcedCover"], "headOps": ["add", "batchDel"], "funcDict": {"labelColumn": null, "valueColumn": null}, "columnOps": ["edit", "del", "check"], "presetStep": {"formGridCols": 2}}', 'default', 'hg_sys_gen_tree_demo', '普通树表', 'SysGenTreeDemo', '[{"dc": "标题", "id": 6, "name": "title", "align": "left", "extra": "", "index": "", "width": 200, "goName": "Title", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 64, "tsName": "title", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "varchar(64)", "dataType": "varchar", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": true, "required": true, "queryWhere": "LIKE %...%", "isAllowNull": "NO", "defaultValue": "", "formGridSpan": 2}, {"dc": "ID", "id": 1, "name": "id", "align": "left", "extra": "auto_increment", "index": "PRI", "width": 100, "goName": "Id", "goType": "int64", "isEdit": false, "isList": false, "isSort": true, "length": 0, "tsName": "id", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": true, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0, "formGridSpan": 1}, {"dc": "上级", "id": 2, "name": "pid", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Pid", "goType": "int64", "isEdit": true, "isList": false, "isSort": false, "length": 0, "tsName": "pid", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 2}, {"dc": "关系树级别", "id": 3, "name": "level", "align": "left", "extra": "", "index": "", "width": null, "goName": "Level", "goType": "int", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "level", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1, "formGridSpan": 1}, {"dc": "关系树", "id": 4, "name": "tree", "align": "left", "extra": "", "index": "", "width": null, "goName": "Tree", "goType": "string", "isEdit": false, "isList": false, "isSort": false, "length": 4294967295, "tsName": "tree", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "longtext", "dataType": "longtext", "dictType": null, "formMode": "InputEditor", "formRole": "none", "isExport": false, "required": false, "queryWhere": "LIKE %...%", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "测试分类", "id": 5, "name": "category_id", "align": "left", "extra": "", "index": "", "width": 100, "goName": "CategoryId", "goType": "int64", "isEdit": true, "isList": true, "isSort": false, "length": 0, "tsName": "categoryId", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": -300004223237244, "formMode": "Select", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 2}, {"dc": "描述", "id": 7, "name": "description", "align": "left", "extra": "", "index": "", "width": 300, "goName": "Description", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 255, "tsName": "description", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": true, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 2}, {"dc": "排序", "id": 8, "name": "sort", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Sort", "goType": "int", "isEdit": true, "isList": false, "isSort": true, "length": 0, "tsName": "sort", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "状态", "id": 9, "name": "status", "align": "left", "extra": "", "index": "", "width": 150, "goName": "Status", "goType": "int", "isEdit": true, "isList": true, "isSort": false, "length": 0, "tsName": "status", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "tinyint(1)", "dataType": "tinyint", "dictType": 3, "formMode": "Select", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1, "formGridSpan": 1}, {"dc": "创建者", "id": 10, "name": "created_by", "align": "left", "extra": "", "index": "", "width": 100, "goName": "CreatedBy", "goType": "int64", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "createdBy", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "更新者", "id": 11, "name": "updated_by", "align": "left", "extra": "", "index": "", "width": 100, "goName": "UpdatedBy", "goType": "int64", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "updatedBy", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "创建时间", "id": 12, "name": "created_at", "align": "left", "extra": "", "index": "", "width": 180, "goName": "CreatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "createdAt", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "datetime", "dataType": "datetime", "dictType": null, "formMode": "TimeRange", "formRole": "none", "isExport": true, "required": false, "queryWhere": "BETWEEN", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "修改时间", "id": 13, "name": "updated_at", "align": "left", "extra": "", "index": "", "width": 180, "goName": "UpdatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "updatedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "datetime", "dataType": "datetime", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "删除时间", "id": 14, "name": "deleted_at", "align": "left", "extra": "", "index": "", "width": null, "goName": "DeletedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "deletedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "datetime", "dataType": "datetime", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}]', '', 1, '2024-04-09 16:06:13', '2024-07-25 16:34:59'), +(10, 11, 0, 'OptionTreeDemo', '{"join": [], "menu": {"pid": 2366, "icon": "", "sort": 300}, "tree": {"styleType": 2, "titleColumn": "title"}, "autoOps": ["genMenuPermissions", "runDao", "runService", "forcedCover"], "headOps": ["add", "batchDel"], "funcDict": {"labelColumn": null, "valueColumn": null}, "columnOps": ["edit", "del", "check"], "presetStep": {"formGridCols": 2}}', 'default', 'hg_sys_gen_tree_demo', '选项树表', 'SysGenTreeDemo', '[{"dc": "标题", "id": 6, "name": "title", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Title", "goType": "string", "isEdit": true, "isList": true, "isSort": false, "length": 64, "tsName": "title", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "varchar(64)", "dataType": "varchar", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": true, "required": true, "queryWhere": "LIKE %...%", "isAllowNull": "NO", "defaultValue": "", "formGridSpan": 2}, {"dc": "ID", "id": 1, "name": "id", "align": "left", "extra": "auto_increment", "index": "PRI", "width": 100, "goName": "Id", "goType": "int64", "isEdit": false, "isList": false, "isSort": true, "length": 0, "tsName": "id", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": true, "queryWhere": "=", "isAllowNull": "NO", "defaultValue": 0, "formGridSpan": 1}, {"dc": "上级", "id": 2, "name": "pid", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Pid", "goType": "int64", "isEdit": true, "isList": false, "isSort": false, "length": 0, "tsName": "pid", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 2}, {"dc": "关系树级别", "id": 3, "name": "level", "align": "left", "extra": "", "index": "", "width": null, "goName": "Level", "goType": "int", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "level", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1, "formGridSpan": 1}, {"dc": "关系树", "id": 4, "name": "tree", "align": "left", "extra": "", "index": "", "width": null, "goName": "Tree", "goType": "string", "isEdit": false, "isList": false, "isSort": false, "length": 4294967295, "tsName": "tree", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "longtext", "dataType": "longtext", "dictType": 3, "formMode": "SelectMultiple", "formRole": "none", "isExport": false, "required": false, "queryWhere": "LIKE %...%", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "测试分类", "id": 5, "name": "category_id", "align": "left", "extra": "", "index": "", "width": 100, "goName": "CategoryId", "goType": "int64", "isEdit": true, "isList": true, "isSort": false, "length": 0, "tsName": "categoryId", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": -300004223237244, "formMode": "Select", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 2}, {"dc": "描述", "id": 7, "name": "description", "align": "left", "extra": "", "index": "", "width": 300, "goName": "Description", "goType": "string", "isEdit": true, "isList": false, "isSort": false, "length": 255, "tsName": "description", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "varchar(255)", "dataType": "varchar", "dictType": null, "formMode": "Input", "formRole": "none", "isExport": false, "required": false, "queryWhere": "LIKE", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 2}, {"dc": "排序", "id": 8, "name": "sort", "align": "left", "extra": "", "index": "", "width": 100, "goName": "Sort", "goType": "int", "isEdit": true, "isList": false, "isSort": true, "length": 0, "tsName": "sort", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "int(11)", "dataType": "int", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "状态", "id": 9, "name": "status", "align": "left", "extra": "", "index": "", "width": 150, "goName": "Status", "goType": "int", "isEdit": true, "isList": true, "isSort": false, "length": 0, "tsName": "status", "tsType": "number", "unique": false, "isQuery": true, "sqlType": "tinyint(1)", "dataType": "tinyint", "dictType": 3, "formMode": "Select", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 1, "formGridSpan": 1}, {"dc": "创建者", "id": 10, "name": "created_by", "align": "left", "extra": "", "index": "", "width": 100, "goName": "CreatedBy", "goType": "int64", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "createdBy", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "更新者", "id": 11, "name": "updated_by", "align": "left", "extra": "", "index": "", "width": 100, "goName": "UpdatedBy", "goType": "int64", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "updatedBy", "tsType": "number", "unique": false, "isQuery": false, "sqlType": "bigint(20)", "dataType": "bigint", "dictType": null, "formMode": "InputNumber", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": 0, "formGridSpan": 1}, {"dc": "创建时间", "id": 12, "name": "created_at", "align": "left", "extra": "", "index": "", "width": 180, "goName": "CreatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": true, "isSort": false, "length": 0, "tsName": "createdAt", "tsType": "string", "unique": false, "isQuery": true, "sqlType": "datetime", "dataType": "datetime", "dictType": null, "formMode": "TimeRange", "formRole": "none", "isExport": true, "required": false, "queryWhere": "BETWEEN", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "修改时间", "id": 13, "name": "updated_at", "align": "left", "extra": "", "index": "", "width": 180, "goName": "UpdatedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "updatedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "datetime", "dataType": "datetime", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": true, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}, {"dc": "删除时间", "id": 14, "name": "deleted_at", "align": "left", "extra": "", "index": "", "width": null, "goName": "DeletedAt", "goType": "*gtime.Time", "isEdit": false, "isList": false, "isSort": false, "length": 0, "tsName": "deletedAt", "tsType": "string", "unique": false, "isQuery": false, "sqlType": "datetime", "dataType": "datetime", "dictType": null, "formMode": "Time", "formRole": "none", "isExport": false, "required": false, "queryWhere": "=", "isAllowNull": "YES", "defaultValue": "", "formGridSpan": 1}]', '', 1, '2024-04-09 17:20:33', '2024-07-25 16:35:34'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_gen_curd_demo` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_gen_curd_demo` ( + `id` bigint(20) NOT NULL COMMENT 'ID', + `category_id` bigint(20) DEFAULT '0' COMMENT '分类ID', + `title` varchar(64) NOT NULL COMMENT '标题', + `description` varchar(255) DEFAULT '' COMMENT '描述', + `content` text COMMENT '内容', + `image` varchar(255) DEFAULT NULL COMMENT '单图', + `attachfile` varchar(255) DEFAULT NULL COMMENT '附件', + `city_id` bigint(20) DEFAULT '0' COMMENT '所在城市', + `switch` int(11) DEFAULT '1' COMMENT '显示开关', + `sort` int(11) DEFAULT NULL COMMENT '排序', + `status` tinyint(1) DEFAULT '1' COMMENT '状态', + `created_by` bigint(20) DEFAULT '0' COMMENT '创建者', + `updated_by` bigint(20) DEFAULT '0' COMMENT '更新者', + `deleted_by` bigint(20) DEFAULT '0' COMMENT '删除者', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间', + `deleted_at` datetime DEFAULT NULL COMMENT '删除时间' +) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COMMENT='系统_生成curd演示'; + +-- +-- 转存表中的数据 `hg_sys_gen_curd_demo` +-- + +INSERT INTO `hg_sys_gen_curd_demo` (`id`, `category_id`, `title`, `description`, `content`, `image`, `attachfile`, `city_id`, `switch`, `sort`, `status`, `created_by`, `updated_by`, `deleted_by`, `created_at`, `updated_at`, `deleted_at`) VALUES +(1, 1, '测试标题', '这是一个CRUD生成演示,关联测试分类', '

不知道写点啥!



', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqamvhlq4w3ki6bl.webp', 'http://localhost:8000/attachment/2024-07-25/d2yh86z5wxgoyuuyv7.png', 120102, 1, 10, 1, 1, 1, NULL, '2022-12-15 19:30:14', '2024-07-25 16:28:31', NULL); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_gen_tree_demo` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_gen_tree_demo` ( + `id` bigint(20) NOT NULL COMMENT 'ID', + `pid` bigint(20) DEFAULT NULL COMMENT '上级ID', + `level` int(11) DEFAULT '1' COMMENT '关系树级别', + `tree` varchar(512) DEFAULT NULL COMMENT '关系树', + `category_id` bigint(20) DEFAULT '0' COMMENT '分类ID', + `title` varchar(64) NOT NULL COMMENT '标题', + `description` varchar(255) DEFAULT NULL COMMENT '描述', + `sort` int(11) DEFAULT NULL COMMENT '排序', + `status` tinyint(1) DEFAULT '1' COMMENT '状态', + `created_by` bigint(20) DEFAULT '0' COMMENT '创建者', + `updated_by` bigint(20) DEFAULT '0' COMMENT '更新者', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间', + `deleted_at` datetime DEFAULT NULL COMMENT '删除时间' +) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8mb4 COMMENT='系统_生成树表演示'; + +-- +-- 转存表中的数据 `hg_sys_gen_tree_demo` +-- + +INSERT INTO `hg_sys_gen_tree_demo` (`id`, `pid`, `level`, `tree`, `category_id`, `title`, `description`, `sort`, `status`, `created_by`, `updated_by`, `created_at`, `updated_at`, `deleted_at`) VALUES +(1, 0, 1, NULL, 1, '道生一', '这是一个普通树形表格的生成演示。', 10, 1, 1, 1, '2022-12-15 19:30:14', '2024-07-20 23:38:07', NULL), +(14, 1, 2, 'tr_1 ', 1, '一生二', '', 20, 1, 1, 1, '2024-04-09 17:07:55', '2024-07-21 00:20:15', NULL), +(15, 14, 3, 'tr_1 tr_14 ', 2, '二生三', '', 30, 1, 1, 1, '2024-04-09 17:08:03', '2024-07-21 00:17:21', NULL), +(16, 15, 4, 'tr_1 tr_14 tr_15 ', 4, '三生万物', '', 40, 1, 1, 1, '2024-04-09 17:13:54', '2024-07-21 00:17:24', NULL), +(17, 0, 1, '', 1, '一帆风顺', '', 50, 1, 1, 1, '2024-04-09 17:24:58', '2024-07-21 00:18:13', NULL), +(19, 17, 2, 'tr_17 ', 1, '二龙戏珠', '', 60, 1, 1, 1, '2024-04-09 17:27:40', '2024-07-21 00:17:30', NULL), +(20, 19, 3, 'tr_17 tr_19 ', 1, '三心二意', '', 70, 1, 1, 1, '2024-04-09 17:27:44', '2024-07-21 00:17:33', NULL); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_log` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_log` ( + `id` bigint(20) NOT NULL COMMENT '日志ID', + `req_id` varchar(50) DEFAULT NULL COMMENT '对外ID', + `app_id` varchar(50) DEFAULT '' COMMENT '应用ID', + `merchant_id` bigint(20) unsigned DEFAULT '0' COMMENT '商户ID', + `member_id` bigint(20) DEFAULT '0' COMMENT '用户ID', + `method` varchar(20) DEFAULT NULL COMMENT '提交类型', + `module` varchar(50) DEFAULT NULL COMMENT '访问模块', + `url` varchar(1000) DEFAULT NULL COMMENT '提交url', + `get_data` json DEFAULT NULL COMMENT 'get数据', + `post_data` json DEFAULT NULL COMMENT 'post数据', + `header_data` json DEFAULT NULL COMMENT 'header数据', + `ip` varchar(128) DEFAULT NULL COMMENT 'IP地址', + `province_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '省编码', + `city_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '市编码', + `error_code` int(11) DEFAULT '0' COMMENT '报错code', + `error_msg` longtext COMMENT '对外错误提示', + `error_data` json DEFAULT NULL COMMENT '报错日志', + `user_agent` varchar(512) DEFAULT NULL COMMENT 'UA信息', + `take_up_time` bigint(20) DEFAULT '0' COMMENT '请求耗时', + `timestamp` bigint(20) DEFAULT '0' COMMENT '响应时间', + `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统_全局日志'; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_login_log` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_login_log` ( + `id` bigint(20) NOT NULL COMMENT '日志ID', + `req_id` varchar(50) DEFAULT NULL COMMENT '请求ID', + `member_id` bigint(20) DEFAULT '0' COMMENT '用户ID', + `username` varchar(64) DEFAULT NULL COMMENT '用户名', + `response` json DEFAULT NULL COMMENT '响应数据', + `login_at` datetime DEFAULT NULL COMMENT '登录时间', + `login_ip` varchar(128) DEFAULT NULL COMMENT '登录IP', + `province_id` bigint(20) DEFAULT NULL COMMENT '省编码', + `city_id` bigint(20) DEFAULT NULL COMMENT '市编码', + `user_agent` varchar(512) DEFAULT NULL COMMENT 'UA信息', + `err_msg` varchar(1000) DEFAULT NULL COMMENT '错误提示', + `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统_登录日志'; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_provinces` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_provinces` ( + `id` bigint(20) NOT NULL COMMENT '省市区ID', + `title` varchar(50) NOT NULL DEFAULT '' COMMENT '栏目名称', + `pinyin` varchar(100) DEFAULT '' COMMENT '拼音', + `lng` varchar(20) DEFAULT '' COMMENT '经度', + `lat` varchar(20) DEFAULT '' COMMENT '纬度', + `pid` bigint(20) NOT NULL DEFAULT '0' COMMENT '父栏目', + `level` int(11) NOT NULL DEFAULT '1' COMMENT '关系树等级', + `tree` varchar(200) DEFAULT NULL COMMENT '关系树', + `sort` int(11) DEFAULT '0' COMMENT '排序', + `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COMMENT='系统_省市区编码'; + +-- +-- 转存表中的数据 `hg_sys_provinces` +-- + +INSERT INTO `hg_sys_provinces` (`id`, `title`, `pinyin`, `lng`, `lat`, `pid`, `level`, `tree`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(810000, '香港特别行政区', 'X', '114.18612410257', '22.29358599328', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810100, '九龙', 'J', '101.51341566718', '29.006431902925', 810000, 2, 'tr_0 tr_810000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810101, '观塘区', 'G', '114.23743100142', '22.316803500017', 810100, 3, 'tr_0 tr_810000 tr_810100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810102, '黄大仙区', 'H', '114.2055528338', '22.344516581114', 810100, 3, 'tr_0 tr_810000 tr_810100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810103, '九龙城区', 'J', '114.19855413557', '22.325722838593', 810100, 3, 'tr_0 tr_810000 tr_810100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810104, '深水埗区', 'S', '114.17556515012', '22.334814518942', 810100, 3, 'tr_0 tr_810000 tr_810100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810105, '油尖旺区', 'Y', '114.17854456', '22.306583887776', 810100, 3, 'tr_0 tr_810000 tr_810100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810200, '香港岛', 'X', '114.1838696432', '22.272099587606', 810000, 2, 'tr_0 tr_810000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810201, '东区', 'D', '114.03675495515', '32.983906128946', 810200, 3, 'tr_0 tr_810000 tr_810200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810202, '南区', 'N', '114.18612410257', '22.29358599328', 810200, 3, 'tr_0 tr_810000 tr_810200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810203, '湾仔区', 'W', '114.1838696432', '22.272099587606', 810200, 3, 'tr_0 tr_810000 tr_810200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810204, '中西区', 'Z', '114.15949141031', '22.291342714292', 810200, 3, 'tr_0 tr_810000 tr_810200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810300, '新界', 'X', '114.18612410257', '22.29358599328', 810000, 2, 'tr_0 tr_810000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810301, '北区', 'B', '114.56208137457', '38.029818054403', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810302, '大埔区', 'D', '114.14670082713', '22.427434108219', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810303, '葵青区', 'K', '114.14347453324', '22.36661881253', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810304, '离岛区', 'L', '113.95154733906', '22.286066480198', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810305, '荃湾区', 'Q', '114.126440954', '22.378243962528', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810306, '沙田区', 'S', '114.19855144065', '22.388522255034', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810307, '屯门区', 'T', '113.98745602385', '22.393584799271', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810308, '西贡区', 'X', '114.28352485373', '22.385077305939', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810309, '元朗区', 'Y', '114.03850969037', '22.448564780865', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820000, '澳门特别行政区', 'A', '113.55751910182', '22.204117988443', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820100, '离岛', 'L', '113.55751910182', '22.204117988443', 820000, 2, 'tr_0 tr_820000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820101, '嘉模堂区', 'J', '113.56551473951', '22.163142309955', 820100, 3, 'tr_0 tr_820000 tr_820100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820102, '路氹填海区', 'L', '113.95154733906', '22.286066480198', 820100, 3, 'tr_0 tr_820000 tr_820100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820103, '圣方济各堂区', 'S', '113.95154733906', '22.286066480198', 820100, 3, 'tr_0 tr_820000 tr_820100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820200, '澳门半岛', 'A', '113.56643233517', '22.195004159218', 820000, 2, 'tr_0 tr_820000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820201, '大堂区', 'D', '113.55648488269', '22.18919700752', 820200, 3, 'tr_0 tr_820000 tr_820200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820202, '风顺堂区', 'F', '113.54545108595', '22.192783044934', 820200, 3, 'tr_0 tr_820000 tr_820200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820203, '花地玛堂区', 'H', '113.55751029843', '22.212783524768', 820200, 3, 'tr_0 tr_820000 tr_820200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820204, '花王堂区', 'H', '113.5544936987', '22.206635725923', 820200, 3, 'tr_0 tr_820000 tr_820200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820205, '望德堂区', 'W', '113.5615137766', '22.202511136588', 820200, 3, 'tr_0 tr_820000 tr_820200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830000, '台湾省', 'T', '121.97387097872', '24.086956718805', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830100, '台北市', 'T', '121.5201088108', '25.063029935612', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830101, '中正区', 'Z', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830102, '大同区', 'D', '124.81937675979', '46.045583951311', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830103, '中山区', 'Z', '121.65154739367', '38.924511115496', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830104, '万华区', 'W', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830105, '信义区', 'X', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830106, '松山区', 'S', '118.9394138505', '42.292481572694', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830107, '大安区', 'D', '104.78041635328', '29.369928541322', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830108, '南港区', 'N', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830109, '北投区', 'B', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830110, '内湖区', 'N', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830111, '士林区', 'S', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830112, '文山区', 'W', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830200, '新北市', 'X', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830201, '板桥区', 'B', '121.46374631322', '25.009264935203', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830202, '土城区', 'T', '121.45638215646', '24.969575575642', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830203, '新庄区', 'X', '121.44987794847', '25.035900513246', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830204, '新店区', 'X', '121.54851057293', '24.931579077246', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830205, '深坑区', 'S', '121.63248449446', '25.000182732355', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830206, '石碇区', 'S', '121.64666268478', '24.953083429509', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830207, '坪林区', 'P', '121.73478767877', '24.915696554977', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830208, '乌来区', 'W', '121.53050817209', '24.786532168822', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830209, '五股区', 'W', '121.44461965429', '25.100233770435', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830210, '八里区', 'B', '121.40465098523', '25.130119585774', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830211, '林口区', 'L', '121.35894397022', '25.103036147515', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830212, '淡水区', 'D', '121.47260573633', '25.187238161176', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830213, '中和区', 'Z', '119.97751429276', '31.836323947624', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830214, '永和区', 'Y', '121.52736966421', '25.010500528231', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830215, '三重区', 'S', '121.49687574316', '25.069790814298', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830216, '芦洲区', 'L', '121.47982274435', '25.091134839883', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830217, '泰山区', 'T', '117.14141108582', '36.199444601195', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830218, '树林区', 'S', '121.412622083', '24.984757647837', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830219, '莺歌区', 'Y', '121.35899891418', '24.958676651245', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830220, '三峡区', 'S', '121.42609502893', '24.87480469353', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830221, '汐止区', 'X', '121.66100298061', '25.086721897126', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830222, '金山区', 'J', '121.34848004512', '30.74785237657', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830223, '万里区', 'W', '121.66558782234', '25.179420721026', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830224, '三芝区', 'S', '121.53552324466', '25.233947831353', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830225, '石门区', 'S', '121.59364212175', '25.261063301582', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830226, '瑞芳区', 'R', '121.81592241951', '25.092372901641', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830227, '贡寮区', 'G', '121.92278316131', '25.044375645825', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830228, '双溪区', 'S', '121.8310510997', '25.001750367683', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830229, '平溪区', 'P', '121.75897792057', '25.028954662262', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830300, '桃园市', 'T', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830301, '桃园区', 'T', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830302, '中坜区', 'Z', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830303, '平镇区', 'P', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830304, '八德区', 'B', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830305, '杨梅区', 'Y', '110.86164512823', '21.447395667888', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830306, '芦竹区', 'L', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830307, '大溪区', 'D', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830308, '龙潭区', 'L', '126.56854459242', '43.91634255363', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830309, '龟山区', 'G', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830310, '大园区', 'D', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830311, '观音区', 'G', '120.42538525561', '36.169241550407', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830312, '新屋区', 'X', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830313, '复兴区', 'F', '114.44809470749', '36.610368592227', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830400, '台中市', 'T', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830401, '中区', 'Z', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830402, '东区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830403, '西区', 'X', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830404, '南区', 'N', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830405, '北区', 'B', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830406, '西屯区', 'X', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830407, '南屯区', 'N', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830408, '北屯区', 'B', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830409, '丰原区', 'F', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830410, '大里区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830411, '太平区', 'T', '121.68538413681', '42.016967854141', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830412, '东势区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830413, '大甲区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830414, '清水区', 'Q', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830415, '沙鹿区', 'S', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830416, '梧栖区', 'W', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830417, '后里区', 'H', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830418, '神冈区', 'S', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830419, '潭子区', 'T', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830420, '大雅区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830421, '新小区', 'X', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830422, '石冈区', 'S', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830423, '外埔区', 'W', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830424, '大安区', 'D', '104.78041635328', '29.369928541322', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830425, '乌日区', 'W', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830426, '大肚区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830427, '龙井区', 'L', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830428, '雾峰区', 'W', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830429, '和平区', 'H', '117.2214669949', '39.12339025328', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830500, '台南市', 'T', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830501, '中西区', 'Z', '114.15949141031', '22.291342714292', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830502, '东区', 'D', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830503, '南区', 'N', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830504, '北区', 'B', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830505, '安平区', 'A', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830506, '安南区', 'A', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830507, '永康区', 'Y', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830508, '归仁区', 'G', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830509, '新化区', 'X', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830510, '左镇区', 'Z', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830511, '玉井区', 'Y', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830512, '楠西区', 'N', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830513, '南化区', 'N', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830514, '仁德区', 'R', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830515, '关庙区', 'G', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830516, '龙崎区', 'L', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830517, '官田区', 'G', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830518, '麻豆区', 'M', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830519, '佳里区', 'J', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830520, '西港区', 'X', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830521, '七股区', 'Q', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830522, '将军区', 'J', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830523, '学甲区', 'X', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830524, '北门区', 'B', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830525, '新营区', 'X', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830526, '后壁区', 'H', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830527, '白河区', 'B', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830528, '东山区', 'D', '130.32336109407', '47.344987135573', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830529, '六甲区', 'L', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830530, '下营区', 'X', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830531, '柳营区', 'L', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830532, '盐水区', 'Y', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830533, '善化区', 'S', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830534, '大内区', 'D', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830535, '山上区', 'S', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830536, '新市区', 'X', '115.41224520287', '38.88118294749', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830537, '安定区', 'A', '104.61650040265', '35.585600016725', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830600, '高雄市', 'G', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830601, '楠梓区', 'N', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830602, '左营区', 'Z', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830603, '鼓山区', 'G', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830604, '三民区', 'S', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830605, '盐埕区', 'Y', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830606, '前金区', 'Q', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830607, '新兴区', 'X', '130.93837086995', '45.822310328543', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830608, '苓雅区', 'L', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830609, '前镇区', 'Q', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830610, '旗津区', 'Q', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830611, '小港区', 'X', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830612, '凤山区', 'F', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830613, '大寮区', 'D', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830614, '鸟松区', 'N', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830615, '林园区', 'L', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830616, '仁武区', 'R', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830617, '大树区', 'D', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830618, '大社区', 'D', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830619, '冈山区', 'G', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830620, '路竹区', 'L', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830621, '桥头区', 'Q', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830622, '梓官区', 'Z', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830623, '弥陀区', 'M', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830624, '永安区', 'Y', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830625, '燕巢区', 'Y', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830626, '阿莲区', 'A', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830627, '茄萣区', 'J', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830628, '湖内区', 'H', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830629, '旗山区', 'Q', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830630, '美浓区', 'M', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830631, '内门区', 'N', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830632, '杉林区', 'S', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830633, '甲仙区', 'J', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830634, '六龟区', 'L', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830635, '茂林区', 'M', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830636, '桃源区', 'T', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830637, '那玛夏区', 'N', '120.71415692906', '23.273513646073', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830700, '基隆市', 'J', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830701, '中正区', 'Z', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830702, '七堵区', 'Q', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830703, '暖暖区', 'N', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830704, '仁爱区', 'R', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830705, '中山区', 'Z', '121.65154739367', '38.924511115496', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830706, '安乐区', 'A', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830707, '信义区', 'X', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830800, '新竹市', 'X', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830801, '东区', 'D', '119.76701381388', '49.221741849328', 830800, 3, 'tr_0 tr_830000 tr_830800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830802, '北区', 'B', '119.76701381388', '49.221741849328', 830800, 3, 'tr_0 tr_830000 tr_830800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830803, '香山区', 'X', '119.76701381388', '49.221741849328', 830800, 3, 'tr_0 tr_830000 tr_830800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830900, '嘉义市', 'J', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830901, '东区', 'D', '114.2466374103', '22.728825804821', 830900, 3, 'tr_0 tr_830000 tr_830900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830902, '西区', 'X', '114.2466374103', '22.728825804821', 830900, 3, 'tr_0 tr_830000 tr_830900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110000, '北京市', 'B', '116.41338369712', '39.9109245473', 0, 1, '', 0, 1, '2022-10-07 20:42:26', '2023-05-29 16:02:45'), +(120000, '天津市', 'T', '117.21081309155', '39.14392990331', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130000, '河北省', 'H', '114.53659630532', '38.0432016452', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140000, '山西省', 'S', '112.56937550968', '37.879829423856', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150000, '内蒙古自治区', 'N', '111.77260583082', '40.823156232446', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210000, '辽宁省', 'L', '123.43559785683', '41.841465251202', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220000, '吉林省', 'J', '125.33257987515', '43.901714435444', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230000, '黑龙江省', 'H', '126.66965282042', '45.747929837435', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310000, '上海市', 'S', '121.48053886018', '31.235929042252', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320000, '江苏省', 'J', '118.76955164467', '32.066776944293', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330000, '浙江省', 'Z', '120.15953308739', '30.271548393337', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340000, '安徽省', 'A', '117.33054041772', '31.734294156317', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350000, '福建省', 'F', '119.30244747704', '26.106339415901', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360000, '江西省', 'J', '115.91542320365', '28.681690516761', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370000, '山东省', 'S', '117.02744162848', '36.674856650405', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410000, '河南省', 'H', '113.75938408486', '34.771712921931', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420000, '湖北省', 'H', '114.34844073659', '30.551600064658', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430000, '湖南省', 'H', '112.98960254335', '28.118269998009', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440000, '广东省', 'G', '113.27242891273', '23.137948556539', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450000, '广西壮族自治区', 'G', '108.33452122944', '22.821268997909', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460000, '海南省', 'H', '110.35553651088', '20.025801964463', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500000, '重庆市', 'Z', '106.55843415538', '29.568996245339', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510000, '四川省', 'S', '104.07346654728', '30.577543147015', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520000, '贵州省', 'G', '106.71447593089', '26.604029544995', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530000, '云南省', 'Y', '102.71641607523', '25.051562267345', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540000, '西藏自治区', 'X', '91.124342128993', '29.652893647473', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610000, '陕西省', 'S', '108.96039314875', '34.275808006024', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620000, '甘肃省', 'G', '103.83247812812', '36.065464887368', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630000, '青海省', 'Q', '101.78646183587', '36.627158579235', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640000, '宁夏回族自治区', 'N', '106.26560480701', '38.476877967911', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650000, '新疆维吾尔自治区', 'X', '87.633473205738', '43.79923810129', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110100, '市辖区', 'S', '116.41338369712', '39.9109245473', 110000, 2, 'tr_0 tr_110000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120100, '市辖区', 'S', '117.21081309155', '39.14392990331', 120000, 2, 'tr_0 tr_120000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140100, '太原市', 'T', '112.55639149167', '37.876989028848', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140200, '大同市', 'D', '113.30643625859', '40.082468716161', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140300, '阳泉市', 'Y', '113.58761666288', '37.862360847859', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140400, '长治市', 'Z', '113.12255886985', '36.201268372155', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140500, '晋城市', 'J', '112.85857823133', '35.496284586473', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140600, '朔州市', 'S', '112.43937093967', '39.337108370542', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140700, '晋中市', 'J', '112.75959475566', '37.69283940976', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140800, '运城市', 'Y', '111.01338945448', '35.032706912909', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140900, '忻州市', 'X', '112.74062416024', '38.422383385178', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141000, '临汾市', 'L', '111.52553022403', '36.09374189542', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141100, '吕梁市', 'L', '111.15044967529', '37.524497749577', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150100, '呼和浩特市', 'H', '111.75550856171', '40.848422997113', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150200, '包头市', 'B', '109.84654350721', '40.662928788261', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150300, '乌海市', 'W', '106.80039105', '39.662006364891', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150400, '赤峰市', 'C', '118.89552039752', '42.261686103412', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150500, '通辽市', 'T', '122.25052178738', '43.657980083917', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150600, '鄂尔多斯市', 'E', '109.78744317924', '39.614482313949', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150700, '呼伦贝尔市', 'H', '119.77237049947', '49.218446475565', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150800, '巴彦淖尔市', 'B', '107.39439808372', '40.749359489573', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150900, '乌兰察布市', 'W', '113.13946767446', '41.000748327674', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152200, '兴安盟', 'X', '122.04436452583', '46.088463713219', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152500, '锡林郭勒盟', 'X', '116.05439144075', '43.939422665339', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152900, '阿拉善盟', 'A', '105.73537746449', '38.858275883057', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210100, '沈阳市', 'S', '123.45598993089', '41.720915668889', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210200, '大连市', 'D', '121.62163148459', '38.918953666786', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210300, '鞍山市', 'A', '123.00137251399', '41.115053596949', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210400, '抚顺市', 'F', '123.96437461561', '41.885969593057', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210500, '本溪市', 'B', '123.69250712421', '41.492916460553', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210600, '丹东市', 'D', '124.36154728159', '40.006408705594', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210700, '锦州市', 'J', '121.13259630056', '41.100931499462', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210800, '营口市', 'Y', '122.2415746645', '40.673136838267', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210900, '阜新市', 'F', '121.67640799866', '42.028021901318', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211000, '辽阳市', 'L', '123.24336640651', '41.274161290454', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211100, '盘锦市', 'P', '122.07322781023', '41.141248022956', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211200, '铁岭市', 'T', '123.73236520918', '42.229947997184', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211300, '朝阳市', 'C', '120.45749949793', '41.579820864756', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211400, '葫芦岛市', 'H', '120.84339833993', '40.717364436362', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220100, '长春市', 'Z', '125.33060207591', '43.821953501043', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220200, '吉林市', 'J', '126.55563450495', '43.843567834579', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220300, '四平市', 'S', '124.35648155716', '43.171993571561', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220400, '辽源市', 'L', '125.15042516689', '42.894055005746', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220500, '通化市', 'T', '125.94660627598', '41.733815801613', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220600, '白山市', 'B', '126.42963008938', '41.939627205329', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220700, '松原市', 'S', '124.83148187569', '45.147404193414', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220800, '白城市', 'B', '122.8455906085', '45.625504359996', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222400, '延边朝鲜族自治州', 'Y', '129.47737632023', '42.915743033722', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230100, '哈尔滨市', 'H', '126.54161509032', '45.808825827952', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230200, '齐齐哈尔市', 'Q', '123.92457086842', '47.359977186015', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230300, '鸡西市', 'J', '130.97561865877', '45.300872317824', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230400, '鹤岗市', 'H', '130.30443289867', '47.356056157685', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230500, '双鸭山市', 'S', '131.16534168078', '46.653185895886', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230600, '大庆市', 'D', '125.10865763402', '46.593633176722', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230700, '伊春市', 'Y', '128.8475463802', '47.733318457231', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230800, '佳木斯市', 'J', '130.32735909257', '46.805689990858', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230900, '七台河市', 'Q', '131.01154459103', '45.776300321548', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231000, '牡丹江市', 'M', '129.63953977835', '44.556245708986', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231100, '黑河市', 'H', '127.53548988622', '50.25127231175', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231200, '绥化市', 'S', '126.9753568753', '46.660032179824', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232700, '大兴安岭地区', 'D', '124.15292785448', '50.420025955028', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310100, '市辖区', 'S', '121.48053886018', '31.235929042252', 310000, 2, 'tr_0 tr_310000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320100, '南京市', 'N', '118.80242172125', '32.064652885618', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320200, '无锡市', 'W', '120.31858328811', '31.498809732686', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320300, '徐州市', 'X', '117.29057543439', '34.212666550113', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320400, '常州市', 'C', '119.98148471328', '31.815795653328', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320500, '苏州市', 'S', '120.59241222959', '31.303564074442', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320600, '南通市', 'N', '120.90159173866', '31.986549431201', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320700, '连云港市', 'L', '119.22862133317', '34.602249525267', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320800, '淮安市', 'H', '119.02148367071', '33.616295301033', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320900, '盐城市', 'Y', '120.16754426576', '33.355100917626', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321000, '扬州市', 'Y', '119.41941890823', '32.40067693609', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321100, '镇江市', 'Z', '119.43048944567', '32.194715920524', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321200, '泰州市', 'T', '119.92956633785', '32.460675049308', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321300, '宿迁市', 'S', '118.28157403571', '33.96774971569', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330100, '杭州市', 'H', '120.21551180372', '30.253082981693', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330200, '宁波市', 'N', '121.62857249434', '29.866033045866', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330300, '温州市', 'W', '120.70647689036', '28.001085404472', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330400, '嘉兴市', 'J', '120.76355182586', '30.75097483092', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330500, '湖州市', 'H', '120.09451660916', '30.898963937294', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330600, '绍兴市', 'S', '120.58547847885', '30.036369311307', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330700, '金华市', 'J', '119.65343619053', '29.084639385514', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330800, '衢州市', 'Q', '118.86659674036', '28.975545802265', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330900, '舟山市', 'Z', '122.21355631852', '29.99091168016', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331000, '台州市', 'T', '121.42743470428', '28.662194055996', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331100, '丽水市', 'L', '119.92957305844', '28.473278180563', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340100, '合肥市', 'H', '117.23344266498', '31.826577833687', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340200, '芜湖市', 'W', '118.43943137654', '31.358536655799', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340300, '蚌埠市', 'B', '117.39551332814', '32.921523704351', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340400, '淮南市', 'H', '117.00638885072', '32.631847399053', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340500, '马鞍山市', 'M', '118.51357957943', '31.676265597609', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340600, '淮北市', 'H', '116.80453726703', '33.961656300276', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340700, '铜陵市', 'T', '117.81847679446', '30.951233239913', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340800, '安庆市', 'A', '117.06360390492', '30.530956568043', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341000, '黄山市', 'H', '118.34543725315', '29.721889786592', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341100, '滁州市', 'C', '118.33940613597', '32.261270872041', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341200, '阜阳市', 'F', '115.82043612491', '32.896060994852', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341300, '宿州市', 'S', '116.97054394561', '33.652095326452', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341500, '六安市', 'L', '116.52640966419', '31.741450815323', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341600, '亳州市', 'B', '115.78446321127', '33.850642695789', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341700, '池州市', 'C', '117.4984209616', '30.670883790765', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341800, '宣城市', 'X', '118.76553424277', '30.946601545293', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO `hg_sys_provinces` (`id`, `title`, `pinyin`, `lng`, `lat`, `pid`, `level`, `tree`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(350100, '福州市', 'F', '119.30346983854', '26.080429420698', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350200, '厦门市', 'S', '118.09643549977', '24.485406605176', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350300, '莆田市', 'P', '119.01452097813', '25.459865455923', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350400, '三明市', 'S', '117.64552116782', '26.269736515992', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350500, '泉州市', 'Q', '118.6824462668', '24.879952330498', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350600, '漳州市', 'Z', '117.65357645299', '24.518929791171', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350700, '南平市', 'N', '118.18436954814', '26.647772874203', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350800, '龙岩市', 'L', '117.02344756678', '25.081219844872', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350900, '宁德市', 'N', '119.55451074543', '26.672241711409', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360100, '南昌市', 'N', '115.86458944232', '28.689455295061', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360200, '景德镇市', 'J', '117.18457644639', '29.274247711041', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360300, '萍乡市', 'P', '113.86149643375', '27.628392709397', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360400, '九江市', 'J', '116.00753491163', '29.711340559079', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360500, '新余市', 'X', '114.9235346514', '27.823578697789', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360600, '鹰潭市', 'Y', '117.07557542703', '28.265787063191', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360700, '赣州市', 'G', '114.94050337298', '25.835176103498', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360800, '吉安市', 'J', '115.00051072001', '27.11972682607', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360900, '宜春市', 'Y', '114.42356367591', '27.820856421848', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361000, '抚州市', 'F', '116.36453876864', '27.95489225342', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361100, '上饶市', 'S', '117.94945960312', '28.460625921852', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370100, '济南市', 'J', '117.12639941261', '36.656554201787', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370200, '青岛市', 'Q', '120.38945519115', '36.072227496663', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370300, '淄博市', 'Z', '118.0614525349', '36.819085683322', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370400, '枣庄市', 'Z', '117.33054194484', '34.815994048435', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370500, '东营市', 'D', '118.68138493514', '37.439641826323', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370600, '烟台市', 'Y', '121.4544154173', '37.470038383731', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370700, '潍坊市', 'W', '119.16837791143', '36.712651551268', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370800, '济宁市', 'J', '116.59361234854', '35.42017739453', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370900, '泰安市', 'T', '117.0944948348', '36.205858044885', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371000, '威海市', 'W', '122.12754097831', '37.516430548015', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371100, '日照市', 'R', '119.53341540457', '35.422838998438', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371200, '莱芜市', 'L', '117.68466691247', '36.233654133647', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371300, '临沂市', 'L', '118.36353300501', '35.110671242365', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371400, '德州市', 'D', '116.36555674397', '37.441308454576', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371500, '聊城市', 'L', '115.9915878483', '36.462758187694', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371600, '滨州市', 'B', '117.97740401715', '37.388196196077', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371700, '菏泽市', 'H', '115.48754503343', '35.239407424766', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410100, '郑州市', 'Z', '113.63141920734', '34.753438850454', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410200, '开封市', 'K', '114.31459258497', '34.802885811212', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410300, '洛阳市', 'L', '112.45942129831', '34.624262779219', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410400, '平顶山市', 'P', '113.19952856052', '33.772050748691', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410500, '安阳市', 'A', '114.39950042177', '36.105940984015', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410600, '鹤壁市', 'H', '114.30359364248', '35.7523574114', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410700, '新乡市', 'X', '113.93360046733', '35.309639930337', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410800, '焦作市', 'J', '113.24854783457', '35.220963254039', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410900, '濮阳市', 'P', '115.03559747034', '35.767593028906', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411000, '许昌市', 'X', '113.85847553686', '34.041431611619', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411100, '漯河市', 'L', '114.02342077765', '33.587710707102', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411200, '三门峡市', 'S', '111.20653322387', '34.77832724946', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411300, '南阳市', 'N', '112.53450131351', '32.996562204651', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411400, '商丘市', 'S', '115.66244933826', '34.420201665859', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411500, '信阳市', 'X', '114.09748283305', '32.153014547531', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411600, '周口市', 'Z', '114.70348251482', '33.631828875702', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411700, '驻马店市', 'Z', '114.02847078173', '33.017842416744', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(419000, '省直辖县级行政区划', 'S', '113.75938408486', '34.771712921931', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420100, '武汉市', 'W', '114.31158155473', '30.598466736401', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420200, '黄石市', 'H', '115.04553290894', '30.205207848942', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420300, '十堰市', 'S', '110.8045295607', '32.635061858401', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420500, '宜昌市', 'Y', '111.29254921035', '30.697446484492', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420600, '襄阳市', 'X', '112.128537201', '32.014796804669', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420700, '鄂州市', 'E', '114.90160738827', '30.396572173317', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420800, '荆门市', 'J', '112.20639298023', '31.04173257557', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420900, '孝感市', 'X', '113.92251007734', '30.930689227018', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421000, '荆州市', 'J', '112.24552262926', '30.340842107743', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421100, '黄冈市', 'H', '114.87849048411', '30.459358857618', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421200, '咸宁市', 'X', '114.32851909027', '29.847055947646', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421300, '随州市', 'S', '113.38945001822', '31.696516772328', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422800, '恩施土家族苗族自治州', 'E', '109.49459261858', '30.277939575301', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(429000, '省直辖县级行政区划', 'S', '114.34844073659', '30.551600064658', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430100, '长沙市', 'Z', '112.94547319535', '28.234889399944', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430200, '株洲市', 'Z', '113.14047079776', '27.833567639016', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430300, '湘潭市', 'X', '112.95046418076', '27.835702227136', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430400, '衡阳市', 'H', '112.57844721326', '26.899576139189', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430500, '邵阳市', 'S', '111.47443288593', '27.245270272809', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430600, '岳阳市', 'Y', '113.13548942422', '29.363178293926', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430700, '常德市', 'C', '111.70545217996', '29.037749999407', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430800, '张家界市', 'Z', '110.48553254695', '29.122815562552', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430900, '益阳市', 'Y', '112.36151595471', '28.55971117849', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431000, '郴州市', 'C', '113.02146049909', '25.776683273602', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431100, '永州市', 'Y', '111.61945505792', '26.4258641179', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431200, '怀化市', 'H', '110.00851426537', '27.575160902979', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431300, '娄底市', 'L', '112.00150349288', '27.703208596992', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433100, '湘西土家族苗族自治州', 'X', '109.74557664947', '28.317369104701', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440100, '广州市', 'G', '113.27143134446', '23.135336306695', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440200, '韶关市', 'S', '113.60352734562', '24.815881278583', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440300, '深圳市', 'S', '114.06455183659', '22.548456637984', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440400, '珠海市', 'Z', '113.58255478655', '22.276564654249', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440500, '汕头市', 'S', '116.68852864055', '23.359091717725', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440600, '佛山市', 'F', '113.1285121955', '23.027758750789', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440700, '江门市', 'J', '113.08855619524', '22.584603880965', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440800, '湛江市', 'Z', '110.36555441393', '21.276723439012', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440900, '茂名市', 'M', '110.93154257997', '21.669064031332', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441200, '肇庆市', 'Z', '112.47148894063', '23.052888771126', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441300, '惠州市', 'H', '114.42355801658', '23.116358854726', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441400, '梅州市', 'M', '116.12953737612', '24.294177532206', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441500, '汕尾市', 'S', '115.3729242894', '22.778730500164', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441600, '河源市', 'H', '114.70744627291', '23.74968437096', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441700, '阳江市', 'Y', '111.98848929181', '21.864339726139', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441800, '清远市', 'Q', '113.06246832527', '23.688230292088', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900, '东莞市', 'D', '113.75842045788', '23.027308411643', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000, '中山市', 'Z', '113.39942236263', '22.522314670791', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445100, '潮州市', 'C', '116.62947017363', '23.662623192616', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445200, '揭阳市', 'J', '116.37851218034', '23.555740488276', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445300, '云浮市', 'Y', '112.05151269959', '22.920911970343', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450100, '南宁市', 'N', '108.37345082582', '22.822606601187', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450200, '柳州市', 'L', '109.43442194635', '24.331961386852', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450300, '桂林市', 'G', '110.20354537458', '25.242885724873', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450400, '梧州市', 'W', '111.28551681182', '23.482745281135', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450500, '北海市', 'B', '109.12653321257', '21.486836495769', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450600, '防城港市', 'F', '108.3604188383', '21.693005289969', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450700, '钦州市', 'Q', '108.66058016842', '21.986593539484', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450800, '贵港市', 'G', '109.60552031033', '23.117448382038', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450900, '玉林市', 'Y', '110.18845312337', '22.659830509953', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451000, '百色市', 'B', '106.62458932565', '23.908185934296', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451100, '贺州市', 'H', '111.57352631416', '24.409450902865', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451200, '河池市', 'H', '108.09149994499', '24.698911731273', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451300, '来宾市', 'L', '109.2274581959', '23.756546762607', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451400, '崇左市', 'C', '107.3715202061', '22.383117234663', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460100, '海口市', 'H', '110.32552547126', '20.044049439257', 460000, 2, 'tr_0 tr_460000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460200, '三亚市', 'S', '109.5185567014', '18.258736291748', 460000, 2, 'tr_0 tr_460000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460300, '三沙市', 'S', '112.34048204137', '16.838953334409', 460000, 2, 'tr_0 tr_460000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400, '儋州市', 'D', '109.58745583569', '19.527146110044', 460000, 2, 'tr_0 tr_460000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469000, '省直辖县级行政区划', 'S', '110.35553651088', '20.025801964463', 460000, 2, 'tr_0 tr_460000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500100, '市辖区', 'S', '106.55843415538', '29.568996245339', 500000, 2, 'tr_0 tr_500000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500200, '县', 'X', '106.55843415538', '29.568996245339', 500000, 2, 'tr_0 tr_500000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510100, '成都市', 'C', '104.08153351042', '30.655821878416', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510300, '自贡市', 'Z', '104.78444884672', '29.345584921328', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510400, '攀枝花市', 'P', '101.72554117091', '26.588033173333', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510500, '泸州市', 'L', '105.44852406933', '28.877668303607', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510600, '德阳市', 'D', '104.40441936496', '31.133115003657', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510700, '绵阳市', 'M', '104.68556186076', '31.473663048746', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510800, '广元市', 'G', '105.85042318166', '32.441616305315', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510900, '遂宁市', 'S', '105.59942153064', '30.539097671109', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511000, '内江市', 'N', '105.064588025', '29.58588653832', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511100, '乐山市', 'L', '103.77253760363', '29.557940717458', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511300, '南充市', 'N', '106.11750261487', '30.843782508337', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511400, '眉山市', 'M', '103.85656331579', '30.082526119421', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511500, '宜宾市', 'Y', '104.64940370487', '28.758007028552', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511600, '广安市', 'G', '106.63955268233', '30.461746110679', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511700, '达州市', 'D', '107.47459385898', '31.214307723927', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511800, '雅安市', 'Y', '103.0495426236', '30.016792545706', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511900, '巴中市', 'B', '106.75158530316', '31.872888585957', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(512000, '资阳市', 'Z', '104.63443534164', '30.134956559253', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513200, '阿坝藏族羌族自治州', 'A', '102.23141546175', '31.905511577267', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513300, '甘孜藏族自治州', 'G', '101.96854674579', '30.055278843518', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513400, '凉山彝族自治州', 'L', '102.27350268097', '27.88775230037', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520100, '贵阳市', 'G', '106.63657676353', '26.65332482231', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520200, '六盘水市', 'L', '104.83755460235', '26.598833108257', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520300, '遵义市', 'Z', '106.93342774802', '27.731700878917', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520400, '安顺市', 'A', '105.95441712389', '26.259252378715', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520500, '毕节市', 'B', '105.33332337117', '27.408562131331', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520600, '铜仁市', 'T', '109.16855802826', '27.674902690624', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522300, '黔西南布依族苗族自治州', 'Q', '104.91249214627', '25.093967349417', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522600, '黔东南苗族侗族自治州', 'Q', '107.98944624078', '26.589702969826', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522700, '黔南布依族苗族自治州', 'Q', '107.52840270574', '26.260616196074', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530100, '昆明市', 'K', '102.852448365', '24.873998150044', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530300, '曲靖市', 'Q', '103.80243482795', '25.496406931544', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530400, '玉溪市', 'Y', '102.55356029311', '24.357710942446', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530500, '保山市', 'B', '99.177273285818', '25.139038793266', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530600, '昭通市', 'Z', '103.72351177197', '27.344083860247', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530700, '丽江市', 'L', '100.23246452903', '26.860657438065', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530800, '普洱市', 'P', '100.97256981473', '22.83097918601', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530900, '临沧市', 'L', '100.09544042015', '23.890468556279', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532300, '楚雄彝族自治州', 'C', '101.5344124805', '25.05177356534', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532500, '红河哈尼族彝族自治州', 'H', '103.38154905258', '23.369996247605', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532600, '文山壮族苗族自治州', 'W', '104.22256899109', '23.405994293612', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532800, '西双版纳傣族自治州', 'X', '100.80344682456', '22.013601254764', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532900, '大理白族自治州', 'D', '100.27458284048', '25.612128418193', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533100, '德宏傣族景颇族自治州', 'D', '98.591359356114', '24.438010702758', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533300, '怒江傈僳族自治州', 'N', '98.863288381358', '25.823707417658', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533400, '迪庆藏族自治州', 'D', '99.70952999014', '27.825184683643', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540100, '拉萨市', 'L', '91.120823915464', '29.650040274768', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540200, '日喀则市', 'R', '88.893703034826', '29.275657822512', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540300, '昌都市', 'C', '97.179583594086', '31.147346549327', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540400, '林芝市', 'L', '94.368058287133', '29.654042176952', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540500, '山南市', 'S', '91.778675138519', '29.243026939249', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540600, '那曲市', 'N', '92.057338498175', '31.482438388455', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542500, '阿里地区', 'A', '80.112776921926', '32.506866017633', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610100, '西安市', 'X', '108.94646555063', '34.347268816624', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610200, '铜川市', 'T', '108.95240424836', '34.902637080503', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610300, '宝鸡市', 'B', '107.24457536704', '34.36891564287', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610400, '咸阳市', 'X', '108.71542245143', '34.335476293369', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610500, '渭南市', 'W', '109.51658960526', '34.505715516753', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610600, '延安市', 'Y', '109.49658191613', '36.591111035218', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610700, '汉中市', 'H', '107.02943020926', '33.073799907834', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610800, '榆林市', 'Y', '109.74161603381', '38.290883835484', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610900, '安康市', 'A', '109.03560108266', '32.690512770574', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611000, '商洛市', 'S', '109.92441788136', '33.878633852208', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620100, '兰州市', 'L', '103.84052119634', '36.067234693546', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620200, '嘉峪关市', 'J', '98.296203843001', '39.777960147391', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620300, '金昌市', 'J', '102.1946056867', '38.525820092093', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620400, '白银市', 'B', '104.14445082834', '36.550825330415', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620500, '天水市', 'T', '105.73141674567', '34.587411881651', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620600, '武威市', 'W', '102.64455434037', '37.934377808158', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620700, '张掖市', 'Z', '100.45641147406', '38.932066007005', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620800, '平凉市', 'P', '106.67144234828', '35.549232050464', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620900, '酒泉市', 'J', '98.500685216068', '39.738469080716', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621000, '庆阳市', 'Q', '107.64938569595', '35.715215983562', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621100, '定西市', 'D', '104.63242008306', '35.586832926562', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621200, '陇南市', 'L', '104.92857497071', '33.406620229951', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622900, '临夏回族自治州', 'L', '103.2163905653', '35.607562183503', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623000, '甘南藏族自治州', 'G', '102.91758468826', '34.989139909968', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630100, '西宁市', 'X', '101.78445017051', '36.623384696517', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630200, '海东市', 'H', '102.11044407228', '36.508511080941', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632200, '海北藏族自治州', 'H', '100.90743432146', '36.96066282413', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632300, '黄南藏族自治州', 'H', '102.02242827808', '35.525804586516', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632500, '海南藏族自治州', 'H', '100.62662114446', '36.292102479899', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632600, '果洛藏族自治州', 'G', '100.2515919788', '34.477193866471', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632700, '玉树藏族自治州', 'Y', '97.013180762773', '33.010979585143', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632800, '海西蒙古族藏族自治州', 'H', '97.376299116019', '37.382750462527', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640100, '银川市', 'Y', '106.2384935874', '38.49246005551', 640000, 2, 'tr_0 tr_640000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640200, '石嘴山市', 'S', '106.3906004255', '38.989682839915', 640000, 2, 'tr_0 tr_640000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640300, '吴忠市', 'W', '106.20537126664', '38.003712913453', 640000, 2, 'tr_0 tr_640000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640400, '固原市', 'G', '106.24857742607', '36.021617258011', 640000, 2, 'tr_0 tr_640000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640500, '中卫市', 'Z', '105.20357090089', '37.505701418703', 640000, 2, 'tr_0 tr_640000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650100, '乌鲁木齐市', 'W', '87.62443993536', '43.83076320429', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650200, '克拉玛依市', 'K', '84.895900538875', '45.585675237814', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650400, '吐鲁番市', 'T', '89.266025488642', '42.678924820794', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650500, '哈密市', 'H', '93.529373012389', '42.344467104552', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652300, '昌吉回族自治州', 'C', '87.315001624474', '44.01685415992', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652700, '博尔塔拉蒙古自治州', 'B', '82.072914758274', '44.912196413465', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652800, '巴音郭楞蒙古自治州', 'B', '86.151713865333', '41.77028733045', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652900, '阿克苏地区', 'A', '80.266943484735', '41.175029860077', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653000, '克孜勒苏柯尔克孜自治州', 'K', '76.174308676212', '39.720471204871', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653100, '喀什地区', 'K', '75.996390556397', '39.476096748645', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653200, '和田地区', 'H', '79.928507063512', '37.120446463042', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654000, '伊犁哈萨克自治州', 'Y', '81.330537747532', '43.922723137492', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654200, '塔城地区', 'T', '82.987235518406', '46.750948254373', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654300, '阿勒泰地区', 'A', '88.147926203735', '47.850727870102', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(659000, '自治区直辖县级行政区划', 'Z', '87.633473205738', '43.79923810129', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110101, '东城区', 'D', '116.42240097766', '39.934827272396', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110102, '西城区', 'X', '116.37251358117', '39.918123605841', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110105, '朝阳区', 'C', '112.85530302042', '35.520558754673', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110106, '丰台区', 'F', '116.29240188731', '39.864937197557', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110107, '石景山区', 'S', '116.22961266776', '39.911353808778', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110108, '海淀区', 'H', '116.3054340545', '39.965489841101', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110109, '门头沟区', 'M', '116.10760355577', '39.946146720034', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110111, '房山区', 'F', '116.14944375184', '39.754325839773', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110112, '通州区', 'T', '112.85530302042', '35.520558754673', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110113, '顺义区', 'S', '116.66142426369', '40.136350762231', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110114, '昌平区', 'C', '116.23761791731', '40.226413371594', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110115, '大兴区', 'D', '116.34862521223', '39.732555236554', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110116, '怀柔区', 'H', '116.63838587143', '40.322618404266', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110117, '平谷区', 'P', '117.1273791046', '40.146950735799', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110118, '密云区', 'M', '116.84954704427', '40.382175658138', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110119, '延庆区', 'Y', '115.98163156902', '40.462168973754', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120101, '和平区', 'H', '112.85530302042', '35.520558754673', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120102, '河东区', 'H', '117.26169316527', '39.126625684666', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120103, '河西区', 'H', '117.22941628002', '39.115718082216', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120104, '南开区', 'N', '117.15651537432', '39.144105279768', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120105, '河北区', 'H', '117.20359278136', '39.153485144705', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120106, '红桥区', 'H', '117.15751788327', '39.173285646564', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120110, '东丽区', 'D', '117.32056850791', '39.092332342815', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120111, '西青区', 'X', '117.01441017994', '39.148726608967', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120112, '津南区', 'J', '117.36338677903', '38.944148568115', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120113, '北辰区', 'B', '117.14140273158', '39.230343909918', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120114, '武清区', 'W', '117.05059715978', '39.389871228788', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120115, '宝坻区', 'B', '117.31660069248', '39.723194482933', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120116, '滨海新区', 'B', '117.71739882966', '39.009415773647', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120117, '宁河区', 'N', '117.83239334342', '39.336956431227', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120118, '静海区', 'J', '116.98046860455', '38.953370689172', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120119, '蓟州区', 'J', '117.41457869479', '40.051508786395', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140105, '小店区', 'X', '112.57239624162', '37.742322528645', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140106, '迎泽区', 'Y', '112.5693846724', '37.869532484225', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140107, '杏花岭区', 'X', '112.5763830113', '37.900186246845', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140108, '尖草坪区', 'J', '112.49360496704', '37.945943354548', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140109, '万柏林区', 'W', '112.52257675702', '37.864974410402', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140110, '晋源区', 'J', '112.48456424072', '37.721168857849', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140121, '清徐县', 'Q', '112.36455763137', '37.613066838238', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140122, '阳曲县', 'Y', '112.6794089516', '38.064620819448', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140123, '娄烦县', 'L', '111.80359063362', '38.073195368896', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140171, '山西转型综合改革示范区', 'S', '112.55639149167', '37.876989028848', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140181, '古交市', 'G', '112.1824528689', '37.912999960962', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140212, '新荣区', 'X', '113.14644373539', '40.261971219328', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140213, '平城区', 'P', '113.30442522204', '40.081998375025', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140214, '云冈区', 'Y', '113.16240150396', '39.996838811279', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140215, '云州区', 'Y', '113.61847103172', '40.046229886508', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140221, '阳高县', 'Y', '113.75541420332', '40.367391842472', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140222, '天镇县', 'T', '114.09747753304', '40.426412198691', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140223, '广灵县', 'G', '114.28858637097', '39.766004217139', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140224, '灵丘县', 'L', '114.24136819946', '39.448825128052', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140225, '浑源县', 'H', '113.70560028822', '39.698952969845', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140226, '左云县', 'Z', '112.70946328956', '40.019623449015', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140271, '山西大同经济开发区', 'S', '113.30643625859', '40.082468716161', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140302, '城区', 'C', '113.61283811719', '37.85786536147', 140300, 3, 'tr_0 tr_140000 tr_140300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140303, '矿区', 'K', '113.54077065934', '37.890804244519', 140300, 3, 'tr_0 tr_140000 tr_140300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140311, '郊区', 'J', '113.60060283682', '37.950352892943', 140300, 3, 'tr_0 tr_140000 tr_140300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140321, '平定县', 'P', '113.66442115516', '37.792796383591', 140300, 3, 'tr_0 tr_140000 tr_140300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140322, '盂县', 'Y', '113.41842046075', '38.091979630201', 140300, 3, 'tr_0 tr_140000 tr_140300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140403, '潞州区', 'L', '113.12952091721', '36.209472481338', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140404, '上党区', 'S', '113.05741608986', '36.059286479291', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140405, '屯留区', 'T', '112.89847476377', '36.321630843108', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140406, '潞城区', 'L', '113.23557845894', '36.339691267612', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140423, '襄垣县', 'X', '113.05741258647', '36.541685821155', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140425, '平顺县', 'P', '113.44251696707', '36.205989459384', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140426, '黎城县', 'L', '113.39343247604', '36.508669901441', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140427, '壶关县', 'H', '113.21357985531', '36.121334604237', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140428, '长子县', 'Z', '112.88456585041', '36.128001557794', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140429, '武乡县', 'W', '112.8706056438', '36.843167949301', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140430, '沁县', 'Q', '112.70545801478', '36.762189938552', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140431, '沁源县', 'Q', '112.34445202694', '36.506103350913', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140471, '山西长治高新技术产业园区', 'S', '113.12255886985', '36.201268372155', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140502, '城区', 'C', '112.85958379452', '35.507278924584', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140521, '沁水县', 'Q', '112.19342620969', '35.696364462457', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140522, '阳城县', 'Y', '112.42145378712', '35.492181320425', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140524, '陵川县', 'L', '113.28740655466', '35.781743639538', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140525, '泽州县', 'Z', '112.79440121959', '35.599769729488', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140581, '高平市', 'G', '112.93041239923', '35.804336798578', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140602, '朔城区', 'S', '112.43837642564', '39.325302712534', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140603, '平鲁区', 'P', '112.29552500886', '39.517389104237', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140621, '山阴县', 'S', '112.82243194473', '39.534030498011', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140622, '应县', 'Y', '113.19749353922', '39.560077852375', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140623, '右玉县', 'Y', '112.47350008125', '39.994859555431', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140671, '山西朔州经济开发区', 'S', '112.46306042376', '39.354781496121', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140681, '怀仁市', 'H', '113.10660846738', '39.833756889522', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140702, '榆次区', 'Y', '112.71450350211', '37.703940486801', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140721, '榆社县', 'Y', '112.98159856583', '37.0763696687', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140722, '左权县', 'Z', '113.38545184006', '37.088555147171', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140723, '和顺县', 'H', '113.57660568309', '37.334807738688', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140724, '昔阳县', 'X', '113.71361290387', '37.617884042996', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140725, '寿阳县', 'S', '113.18341017493', '37.901307606957', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140726, '太谷县', 'T', '112.55738411926', '37.427395577313', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140727, '祁县', 'Q', '112.34244242768', '37.364131283475', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140728, '平遥县', 'P', '112.18245556381', '37.195600690703', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140729, '灵石县', 'L', '111.78561787596', '36.85336750127', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140781, '介休市', 'J', '111.92356319719', '37.032686403603', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140802, '盐湖区', 'Y', '111.00437711462', '35.021425327829', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140821, '临猗县', 'L', '110.78040700351', '35.149542242622', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140822, '万荣县', 'W', '110.84457611016', '35.421108800536', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140823, '闻喜县', 'W', '111.23141035768', '35.362931196381', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140824, '稷山县', 'J', '110.98941457872', '35.610403569616', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140825, '新绛县', 'X', '111.23140649497', '35.622630103082', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140826, '绛县', 'J', '111.57548652056', '35.497276373896', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140827, '垣曲县', 'Y', '111.67660670572', '35.303014517418', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140828, '夏县', 'X', '111.2264314994', '35.147461779807', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140829, '平陆县', 'P', '111.22348047596', '34.842925154581', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140830, '芮城县', 'R', '110.7006115132', '34.699388110563', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140881, '永济市', 'Y', '110.45457767131', '34.872829714714', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140882, '河津市', 'H', '110.71857214373', '35.601926575322', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140902, '忻府区', 'X', '112.75261366422', '38.40987981762', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140921, '定襄县', 'D', '112.96352861152', '38.479974305847', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140922, '五台县', 'W', '113.26145109492', '38.734181590565', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140923, '代县', 'D', '112.96655194854', '39.072728346381', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140924, '繁峙县', 'F', '113.27140827251', '39.195237430734', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140925, '宁武县', 'N', '112.32639824212', '39.024342381431', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140926, '静乐县', 'J', '111.94543190585', '38.365147088438', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO `hg_sys_provinces` (`id`, `title`, `pinyin`, `lng`, `lat`, `pid`, `level`, `tree`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(140927, '神池县', 'S', '112.21738276001', '39.096875824863', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140928, '五寨县', 'W', '111.85340993856', '38.917019909692', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140929, '岢岚县', 'K', '111.57947778177', '38.710151038936', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140930, '河曲县', 'H', '111.14444863516', '39.390702488715', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140931, '保德县', 'B', '111.09254175805', '39.028336932396', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140932, '偏关县', 'P', '111.51447352049', '39.442230090387', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140971, '五台山风景名胜区', 'W', '113.602695497', '38.983546253607', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140981, '原平市', 'Y', '112.71748713403', '38.736475897605', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141002, '尧都区', 'Y', '111.58643021727', '36.084562230192', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141021, '曲沃县', 'Q', '111.48239637819', '35.647327335982', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141022, '翼城县', 'Y', '111.72537553219', '35.744429075039', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141023, '襄汾县', 'X', '111.44854005199', '35.882062670676', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141024, '洪洞县', 'H', '111.68158942672', '36.259467079377', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141025, '古县', 'G', '111.92657314947', '36.272338064827', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141026, '安泽县', 'A', '112.2566128396', '36.153514380523', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141027, '浮山县', 'F', '111.85538495306', '35.974392753943', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141028, '吉县', 'J', '110.68854637189', '36.103999062021', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141029, '乡宁县', 'X', '110.85349790083', '35.976441665474', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141030, '大宁县', 'D', '110.75938440882', '36.471305687097', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141031, '隰县', 'X', '110.94759127079', '36.699061383227', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141032, '永和县', 'Y', '110.63841589393', '36.765908673933', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141033, '蒲县', 'P', '111.10247405258', '36.418005429177', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141034, '汾西县', 'F', '111.56954629571', '36.658782264232', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141081, '侯马市', 'H', '111.37839658489', '35.625364816258', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141082, '霍州市', 'H', '111.76150942218', '36.574606950709', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141102, '离石区', 'L', '111.15749077354', '37.523577475907', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141121, '文水县', 'W', '112.0355986926', '37.444300082651', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141122, '交城县', 'J', '112.16256770864', '37.557772236259', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141123, '兴县', 'X', '111.13439210498', '38.468803780991', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141124, '临县', 'L', '110.99841488129', '37.957210672321', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141125, '柳林县', 'L', '110.8953898393', '37.435492964934', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141126, '石楼县', 'S', '110.84159553248', '37.004470503012', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141127, '岚县', 'L', '111.67859223038', '38.28502878885', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141128, '方山县', 'F', '111.25037044293', '37.90102023916', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141129, '中阳县', 'Z', '111.18562956483', '37.36287279238', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141130, '交口县', 'J', '111.18762820476', '36.987872666553', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141181, '孝义市', 'X', '111.78560601833', '37.151063319102', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141182, '汾阳市', 'F', '111.7945966192', '37.271291794518', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150102, '新城区', 'X', '111.671620122', '40.863877021183', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150103, '回民区', 'H', '111.63047018388', '40.814506362944', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150104, '玉泉区', 'Y', '111.68157514366', '40.758058968635', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150105, '赛罕区', 'S', '111.7084206445', '40.798394236975', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150121, '土默特左旗', 'T', '111.16958672672', '40.735293711759', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150122, '托克托县', 'T', '111.20057494309', '40.283146729007', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150123, '和林格尔县', 'H', '111.82843021826', '40.384797744251', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150124, '清水河县', 'Q', '111.65357648803', '39.926333854389', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150125, '武川县', 'W', '111.45749705623', '41.102418723793', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150171, '呼和浩特金海工业园区', 'H', '111.61859862741', '40.813484420815', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150172, '呼和浩特经济技术开发区', 'H', '111.75550856171', '40.848422997113', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150202, '东河区', 'D', '110.05039480879', '40.582228038324', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150203, '昆都仑区', 'K', '109.84553830335', '40.647644106921', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150204, '青山区', 'Q', '109.9074160123', '40.649473068783', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150205, '石拐区', 'S', '110.27838088451', '40.67829939834', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150206, '白云鄂博矿区', 'B', '109.97962576174', '41.774995234182', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150207, '九原区', 'J', '109.96958800614', '40.613396589444', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150221, '土默特右旗', 'T', '110.53038926652', '40.575127429108', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150222, '固阳县', 'G', '110.06643261639', '41.040162852726', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150223, '达尔罕茂明安联合旗', 'D', '110.43952090317', '41.704548551002', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150271, '包头稀土高新技术产业开发区', 'B', '109.84664914794', '40.637085021364', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150302, '海勃湾区', 'H', '106.82943856714', '39.696907993535', 150300, 3, 'tr_0 tr_150000 tr_150300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150303, '海南区', 'H', '106.89847100998', '39.446827515087', 150300, 3, 'tr_0 tr_150000 tr_150300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150304, '乌达区', 'W', '106.7326063535', '39.511468916129', 150300, 3, 'tr_0 tr_150000 tr_150300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150402, '红山区', 'H', '118.96356353651', '42.27047843525', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150403, '元宝山区', 'Y', '119.29540450885', '42.045124715638', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150404, '松山区', 'S', '118.9394138505', '42.292481572694', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150421, '阿鲁科尔沁旗', 'A', '120.07261385472', '43.877953412182', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150422, '巴林左旗', 'B', '119.38644328076', '43.97638259461', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150423, '巴林右旗', 'B', '118.67039425705', '43.540131553108', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150424, '林西县', 'L', '118.06246142182', '43.624210259291', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150425, '克什克腾旗', 'K', '117.55162041051', '43.270757591896', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150426, '翁牛特旗', 'W', '119.01250888002', '42.942019262236', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150428, '喀喇沁旗', 'K', '118.7104736845', '41.932214335643', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150429, '宁城县', 'N', '119.35060897566', '41.600245148269', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150430, '敖汉旗', 'A', '119.92757793861', '42.296507085243', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150502, '科尔沁区', 'K', '122.2624570337', '43.628712488829', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150521, '科尔沁左翼中旗', 'K', '123.31858853365', '44.132294228308', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150522, '科尔沁左翼后旗', 'K', '122.36356257648', '42.93956249402', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150523, '开鲁县', 'K', '121.32538568843', '43.606369431362', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150524, '库伦旗', 'K', '121.81740576201', '42.741211100235', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150525, '奈曼旗', 'N', '120.66464641294', '42.87184654666', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150526, '扎鲁特旗', 'Z', '120.91862585689', '44.562213133099', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150571, '通辽经济技术开发区', 'T', '122.22276854881', '43.676026521565', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150581, '霍林郭勒市', 'H', '119.67046591394', '45.53751332061', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130100, '石家庄市', 'S', '114.52153190157', '38.048311926873', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130200, '唐山市', 'T', '118.18645947204', '39.636583724147', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130300, '秦皇岛市', 'Q', '119.60853063334', '39.941748102378', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130400, '邯郸市', 'H', '114.54562822824', '36.631262731204', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130500, '邢台市', 'X', '114.51146225613', '37.076685950966', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130600, '保定市', 'B', '115.47146383769', '38.879987768455', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130700, '张家口市', 'Z', '114.89257223145', '40.773237202691', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130800, '承德市', 'C', '117.96939750997', '40.957856012338', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130900, '沧州市', 'C', '116.84558075595', '38.310215141107', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131000, '廊坊市', 'L', '116.69058173343', '39.543366662759', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131100, '衡水市', 'H', '115.67540613762', '37.745191408077', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150602, '东胜区', 'D', '109.96956006883', '39.827986984444', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150603, '康巴什区', 'K', '109.86962735373', '39.616378146766', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150621, '达拉特旗', 'D', '110.04036612608', '40.418907154391', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150622, '准格尔旗', 'Z', '111.24639840546', '39.870540265037', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150623, '鄂托克前旗', 'E', '107.48458472303', '38.188216741284', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150624, '鄂托克旗', 'E', '107.98244495023', '39.095293413608', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150625, '杭锦旗', 'H', '108.74241293879', '39.838815768815', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150626, '乌审旗', 'W', '108.82443496914', '38.610026521177', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150627, '伊金霍洛旗', 'Y', '109.78744317924', '39.614482313949', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150702, '海拉尔区', 'H', '119.74246537006', '49.218215799363', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150703, '扎赉诺尔区', 'Z', '117.69453227349', '49.467770183628', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150721, '阿荣旗', 'A', '123.46544000531', '48.131971245042', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150722, '莫力达瓦达斡尔族自治旗', 'M', '124.52557642071', '48.482896292115', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150723, '鄂伦春自治旗', 'E', '123.73234507742', '50.597947928064', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150724, '鄂温克族自治旗', 'E', '119.76135125527', '49.15304476395', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150725, '陈巴尔虎旗', 'C', '119.43046248677', '49.334914288885', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150726, '新巴尔虎左旗', 'X', '118.27660837276', '48.223786760037', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150727, '新巴尔虎右旗', 'X', '116.83063240352', '48.677053599089', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150781, '满洲里市', 'M', '117.38543585768', '49.604098854866', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150782, '牙克石市', 'Y', '120.7183468371', '49.292023693206', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150783, '扎兰屯市', 'Z', '122.74445371486', '48.01995552011', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150784, '额尔古纳市', 'E', '120.18663369726', '50.248131758636', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150785, '根河市', 'G', '121.52758526594', '50.786140434318', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150802, '临河区', 'L', '107.36953379568', '40.75668072584', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150821, '五原县', 'W', '108.2734913541', '41.094454821479', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150822, '磴口县', 'D', '107.01452247', '40.336470177103', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150823, '乌拉特前旗', 'W', '108.6586151381', '40.742103512928', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150824, '乌拉特中旗', 'W', '108.51951244005', '41.593346263746', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150825, '乌拉特后旗', 'W', '107.08154612207', '41.089422269258', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150826, '杭锦后旗', 'H', '107.15737244949', '40.892179419823', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150902, '集宁区', 'J', '113.12058699942', '41.041146171787', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150921, '卓资县', 'Z', '112.5844095507', '40.900291837834', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150922, '化德县', 'H', '114.0164087845', '41.909602587109', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150923, '商都县', 'S', '113.58463922926', '41.567566637224', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150924, '兴和县', 'X', '113.84057886567', '40.879341798933', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150925, '凉城县', 'L', '112.51060018864', '40.5371631252', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150926, '察哈尔右翼前旗', 'C', '113.22160531673', '40.791267302593', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150927, '察哈尔右翼中旗', 'C', '112.64258040196', '41.283272943291', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150928, '察哈尔右翼后旗', 'C', '113.19853090242', '41.441770999655', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150929, '四子王旗', 'S', '111.71241927182', '41.539353349915', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150981, '丰镇市', 'F', '113.11660121788', '40.441804808844', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152201, '乌兰浩特市', 'W', '122.09962235198', '46.078654343582', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152202, '阿尔山市', 'A', '119.95065315166', '47.18305415375', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152221, '科尔沁右翼前旗', 'K', '121.9645531355', '46.082648853819', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152222, '科尔沁右翼中旗', 'K', '121.48354781458', '45.066470993428', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152223, '扎赉特旗', 'Z', '122.90644442883', '46.729189539358', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152224, '突泉县', 'T', '121.60054536997', '45.387830342585', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152501, '二连浩特市', 'E', '111.95836319333', '43.648800184052', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152502, '锡林浩特市', 'X', '116.09361388474', '43.93833380136', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152522, '阿巴嘎旗', 'A', '114.95736709772', '44.028101587023', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152523, '苏尼特左旗', 'S', '113.67347993742', '43.865553657792', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152524, '苏尼特右旗', 'S', '112.64856904548', '42.747368922463', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152525, '东乌珠穆沁旗', 'D', '116.97850435996', '45.515743305312', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152526, '西乌珠穆沁旗', 'X', '117.61637700896', '44.593802912007', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152527, '太仆寺旗', 'T', '115.29053531645', '41.882291746043', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152528, '镶黄旗', 'X', '113.85450538582', '42.237661285279', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152529, '正镶白旗', 'Z', '115.03662171828', '42.292605429249', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152530, '正蓝旗', 'Z', '115.99860388383', '42.247118844188', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152531, '多伦县', 'D', '116.49250878204', '42.208920864211', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152571, '乌拉盖管委会', 'W', '114.09790153324', '42.80523252057', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152921, '阿拉善左旗', 'A', '105.67259866528', '38.839094137436', 152900, 3, 'tr_0 tr_150000 tr_152900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152922, '阿拉善右旗', 'A', '101.67346389594', '39.222240969855', 152900, 3, 'tr_0 tr_150000 tr_152900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152923, '额济纳旗', 'E', '101.06240334058', '41.960297611813', 152900, 3, 'tr_0 tr_150000 tr_152900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152971, '内蒙古阿拉善经济开发区', 'N', '105.77197191571', '40.314622117574', 152900, 3, 'tr_0 tr_150000 tr_152900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210102, '和平区', 'H', '123.42664426615', '41.795236052902', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210103, '沈河区', 'S', '123.46546103538', '41.802274138805', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210104, '大东区', 'D', '123.47640473208', '41.811425174494', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210105, '皇姑区', 'H', '123.43162078885', '41.826042120277', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210106, '铁西区', 'T', '123.38343595078', '41.809037832217', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210111, '苏家屯区', 'S', '123.35043463177', '41.671253644959', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210112, '浑南区', 'H', '123.45598993089', '41.720915668889', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210113, '沈北新区', 'S', '123.53360460492', '42.058914115763', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210114, '于洪区', 'Y', '123.31463302499', '41.799668255615', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210115, '辽中区', 'L', '122.77237835983', '41.523149081842', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210123, '康平县', 'K', '123.33751124938', '42.749925495719', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210124, '法库县', 'F', '123.41462107572', '42.509606549903', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210181, '新民市', 'X', '122.87539513741', '42.007109320665', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210202, '中山区', 'Z', '121.65154739367', '38.924511115496', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210203, '西岗区', 'X', '121.61862512554', '38.920472689273', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210204, '沙河口区', 'S', '121.59450670057', '38.913544290956', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210211, '甘井子区', 'G', '121.5315189555', '38.958002162932', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210212, '旅顺口区', 'L', '121.26859688019', '38.856832222859', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210213, '金州区', 'J', '121.78943558267', '39.056432991661', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210214, '普兰店区', 'P', '121.94645983497', '39.398089145183', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210224, '长海县', 'Z', '122.59462651637', '39.278270217167', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210281, '瓦房店市', 'W', '121.98563754334', '39.632740747388', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210283, '庄河市', 'Z', '122.97449548263', '39.686956078878', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210302, '铁东区', 'T', '122.99739966805', '41.096331870506', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210303, '铁西区', 'T', '122.97549026615', '41.125475259583', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210304, '立山区', 'L', '123.03548413862', '41.156116121102', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210311, '千山区', 'Q', '122.96757421833', '41.080938608935', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210321, '台安县', 'T', '122.44255004099', '41.418590371099', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210323, '岫岩满族自治县', 'X', '123.28754677827', '40.295892396362', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210381, '海城市', 'H', '122.69156940124', '40.887633947097', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210402, '新抚区', 'X', '123.91958231814', '41.867805858593', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210403, '东洲区', 'D', '124.04554972353', '41.859190936634', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210404, '望花区', 'W', '123.790604152', '41.859030362749', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210411, '顺城区', 'S', '123.95141404338', '41.889163788467', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210421, '抚顺县', 'F', '123.92159012079', '41.887037475382', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210422, '新宾满族自治县', 'X', '125.04635620406', '41.739968775071', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210423, '清原满族自治县', 'Q', '124.93036025933', '42.106760992634', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210502, '平山区', 'P', '123.77461422409', '41.301604181774', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210503, '溪湖区', 'X', '123.77461054104', '41.334802931364', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210504, '明山区', 'M', '123.82347449807', '41.314939368877', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210505, '南芬区', 'N', '123.75146713686', '41.10709572322', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210521, '本溪满族自治县', 'B', '124.12758486914', '41.307902881353', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210522, '桓仁满族自治县', 'H', '125.36754435102', '41.27292530103', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210602, '元宝区', 'Y', '124.40258403322', '40.142251463139', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210603, '振兴区', 'Z', '124.36657851109', '40.110719472216', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210604, '振安区', 'Z', '124.43438692285', '40.164697025661', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210624, '宽甸满族自治县', 'K', '124.79042662868', '40.73755320049', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210681, '东港市', 'D', '124.15961035888', '39.867716187286', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210682, '凤城市', 'F', '124.07242172439', '40.459180482456', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210702, '古塔区', 'G', '121.13458496929', '41.122900925898', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210703, '凌河区', 'L', '121.15759003442', '41.120690614472', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210711, '太和区', 'T', '121.1104532494', '41.115109307132', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210726, '黑山县', 'H', '122.13055703906', '41.671592983776', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210727, '义县', 'Y', '121.24556854895', '41.538938862271', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210781, '凌海市', 'L', '121.36253879584', '41.166487628588', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210782, '北镇市', 'B', '121.78344729848', '41.594428096803', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210802, '站前区', 'Z', '122.26543743173', '40.678764125936', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210803, '西市区', 'X', '122.21358238684', '40.672110926311', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210804, '鲅鱼圈区', 'B', '122.12757349697', '40.232339850773', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210811, '老边区', 'L', '122.38643918392', '40.686383619803', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210881, '盖州市', 'G', '122.35559128288', '40.406167457268', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210882, '大石桥市', 'D', '122.5153795314', '40.650802164815', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210902, '海州区', 'H', '121.66943571061', '42.023734789385', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210903, '新邱区', 'X', '121.79936338568', '42.093934514765', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210904, '太平区', 'T', '121.68538413681', '42.016967854141', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210905, '清河门区', 'Q', '121.42247894964', '41.789318551009', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210911, '细河区', 'X', '121.68639230508', '42.03187124588', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210921, '阜新蒙古族自治县', 'F', '121.76357399585', '42.071368153837', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210922, '彰武县', 'Z', '122.54544932021', '42.392706534364', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211002, '白塔区', 'B', '123.18060844799', '41.275845361792', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211003, '文圣区', 'W', '123.19160469557', '41.268438007815', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211004, '宏伟区', 'H', '123.20358018598', '41.223368108445', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211005, '弓长岭区', 'G', '123.42661543055', '41.157327042722', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211011, '太子河区', 'T', '123.188604445', '41.259226178044', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211021, '辽阳县', 'L', '123.1124212208', '41.211678771808', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211081, '灯塔市', 'D', '123.34546215145', '41.432474125926', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211102, '双台子区', 'S', '122.04639299922', '41.206071617512', 211100, 3, 'tr_0 tr_210000 tr_211100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211103, '兴隆台区', 'X', '121.96962911034', '41.155830887559', 211100, 3, 'tr_0 tr_210000 tr_211100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211104, '大洼区', 'D', '122.08855478867', '41.00817878896', 211100, 3, 'tr_0 tr_210000 tr_211100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211122, '盘山县', 'P', '122.00356035522', '41.248263682582', 211100, 3, 'tr_0 tr_210000 tr_211100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211202, '银州区', 'Y', '123.8483863963', '42.292573681442', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211204, '清河区', 'Q', '124.16556298034', '42.552494793453', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211221, '铁岭县', 'T', '123.7353723767', '42.229225608048', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211223, '西丰县', 'X', '124.73361509331', '42.744014442436', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211224, '昌图县', 'C', '124.11750067115', '42.792178371844', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211281, '调兵山市', 'D', '123.57350868313', '42.473738012058', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211282, '开原市', 'K', '124.04456886375', '42.552079074779', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211302, '双塔区', 'S', '120.46048690274', '41.571779500856', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211303, '龙城区', 'L', '120.4435668693', '41.59846852305', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211321, '朝阳县', 'C', '120.25939061432', '41.241075720873', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211322, '建平县', 'J', '119.64938035777', '41.409455511027', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211324, '喀喇沁左翼蒙古族自治县', 'K', '119.74741405502', '41.133689119828', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211381, '北票市', 'B', '120.77762773422', '41.80648256895', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211382, '凌源市', 'L', '119.40735807879', '41.251651297148', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211402, '连山区', 'L', '120.87648167423', '40.780893808442', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211403, '龙港区', 'L', '120.90062076024', '40.741056601241', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211404, '南票区', 'N', '120.75649312082', '41.113097595823', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211421, '绥中县', 'S', '120.35042453538', '40.331843475397', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211422, '建昌县', 'J', '119.84359526665', '40.830379953809', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211481, '兴城市', 'X', '120.76455846701', '40.616555664044', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220102, '南关区', 'N', '125.35660981703', '43.869873025193', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220103, '宽城区', 'K', '125.33462450832', '43.949502239804', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220104, '朝阳区', 'C', '125.29540125585', '43.840641474962', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220105, '二道区', 'E', '125.38046755375', '43.871276524271', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220106, '绿园区', 'L', '125.26244260635', '43.886810403937', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220112, '双阳区', 'S', '125.67144793217', '43.531091309119', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220113, '九台区', 'J', '125.84556442307', '44.157791853861', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220122, '农安县', 'N', '125.19148410666', '44.438903951261', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220171, '长春经济技术开发区', 'Z', '125.37014719124', '43.866004586928', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220172, '长春净月高新技术产业开发区', 'Z', '125.26127292275', '43.823034492758', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220173, '长春高新技术产业开发区', 'Z', '125.26127292275', '43.823034492758', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220174, '长春汽车经济技术开发区', 'Z', '125.33060207591', '43.821953501043', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220182, '榆树市', 'Y', '126.53960936347', '44.845439727693', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220183, '德惠市', 'D', '125.73451517728', '44.527161066608', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220202, '昌邑区', 'C', '126.58144866124', '43.887992474736', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220203, '龙潭区', 'L', '126.56854459242', '43.91634255363', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220204, '船营区', 'C', '126.54764973677', '43.83992740229', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220211, '丰满区', 'F', '126.56857046362', '43.827151576836', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220221, '永吉县', 'Y', '126.50441572986', '43.678720676989', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220271, '吉林经济开发区', 'J', '126.55563450495', '43.843567834579', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220272, '吉林高新技术产业开发区', 'J', '126.55091570611', '43.822448990547', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220273, '吉林中国新加坡食品区', 'J', '126.55563450495', '43.843567834579', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220281, '蛟河市', 'J', '127.35148018677', '43.730003870507', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220282, '桦甸市', 'H', '126.75248423373', '42.977982779881', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220283, '舒兰市', 'S', '126.97137703226', '44.412270028324', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220284, '磐石市', 'P', '126.06661629889', '42.951817500114', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220302, '铁西区', 'T', '124.35246676034', '43.152575391803', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220303, '铁东区', 'T', '124.4164827059', '43.167993993185', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220322, '梨树县', 'L', '124.3424012471', '43.313345515553', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220323, '伊通满族自治县', 'Y', '125.31148460754', '43.351103666821', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220381, '公主岭市', 'G', '124.82944866071', '43.510832663153', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220382, '双辽市', 'S', '123.50943776128', '43.524527382171', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220402, '龙山区', 'L', '125.14345242969', '42.907634012133', 220400, 3, 'tr_0 tr_220000 tr_220400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220403, '西安区', 'X', '125.15537330313', '42.933308420625', 220400, 3, 'tr_0 tr_220000 tr_220400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220421, '东丰县', 'D', '125.53737790091', '42.683310778553', 220400, 3, 'tr_0 tr_220000 tr_220400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220422, '东辽县', 'D', '124.99758944369', '42.931879101776', 220400, 3, 'tr_0 tr_220000 tr_220400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220502, '东昌区', 'D', '125.93359459016', '41.70840538484', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220503, '二道江区', 'E', '126.0495917027', '41.779966174493', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220521, '通化县', 'T', '125.76539191393', '41.685682238068', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220523, '辉南县', 'H', '126.05358125713', '42.690699881882', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220524, '柳河县', 'L', '125.75142398189', '42.290871215056', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220581, '梅河口市', 'M', '125.71760780995', '42.544883890284', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220582, '集安市', 'J', '126.199577372', '41.131299724033', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220602, '浑江区', 'H', '126.42361952721', '41.95042372822', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220605, '江源区', 'J', '126.59739097896', '42.062939372081', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220621, '抚松县', 'F', '127.45537119527', '42.227335272553', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220622, '靖宇县', 'J', '126.81949899257', '42.394765734578', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220623, '长白朝鲜族自治县', 'Z', '128.20758420219', '41.425895812594', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220681, '临江市', 'L', '126.9245815135', '41.817678643992', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220702, '宁江区', 'N', '124.82342254815', '45.178039438667', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220721, '前郭尔罗斯蒙古族自治县', 'Q', '124.83045556165', '45.123416092926', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220722, '长岭县', 'Z', '123.9743741034', '44.281638280052', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220723, '乾安县', 'G', '124.0475638046', '45.008434321605', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220771, '吉林松原经济开发区', 'J', '124.83148187569', '45.147404193414', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220781, '扶余市', 'F', '126.0566062111', '44.994168421151', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220802, '洮北区', 'T', '122.85750977516', '45.627524686514', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220821, '镇赉县', 'Z', '123.20657575565', '45.853116635389', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220822, '通榆县', 'T', '123.09452077673', '44.818963735882', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220871, '吉林白城经济开发区', 'J', '122.81641245977', '45.642168989302', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220881, '洮南市', 'T', '122.7944676826', '45.341131872567', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220882, '大安市', 'D', '124.29850428102', '45.513045149628', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222401, '延吉市', 'Y', '129.52052013726', '42.91271700988', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222402, '图们市', 'T', '129.85038151375', '42.974283499075', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222403, '敦化市', 'D', '128.23861239315', '43.378291274517', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222404, '珲春市', 'H', '130.37261321858', '42.868515115192', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222405, '龙井市', 'L', '129.43263477701', '42.771534868349', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222406, '和龙市', 'H', '129.01738712621', '42.552322568432', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222424, '汪清县', 'W', '129.77760879625', '43.318450833865', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222426, '安图县', 'A', '128.90544846814', '43.117916954912', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230102, '道里区', 'D', '126.62343158837', '45.761844478815', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230103, '南岗区', 'N', '126.67563849952', '45.765866163758', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230104, '道外区', 'D', '126.65560404089', '45.797776220434', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230108, '平房区', 'P', '126.54161509032', '45.808825827952', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO `hg_sys_provinces` (`id`, `title`, `pinyin`, `lng`, `lat`, `pid`, `level`, `tree`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(230109, '松北区', 'S', '126.51648256825', '45.808592561429', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230110, '香坊区', 'X', '126.66962434413', '45.713619645389', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230111, '呼兰区', 'H', '126.5943989831', '45.895209780863', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230112, '阿城区', 'A', '126.96435649552', '45.554275304352', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230113, '双城区', 'S', '126.31962313777', '45.388111522394', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230123, '依兰县', 'Y', '129.57451969721', '46.331260289052', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230124, '方正县', 'F', '128.83563368134', '45.857758440062', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230125, '宾县', 'B', '127.4734970145', '45.752465386742', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230126, '巴彦县', 'B', '127.4105479864', '46.091282657815', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230127, '木兰县', 'M', '128.05035620452', '45.956871319448', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230128, '通河县', 'T', '128.75241627584', '45.996392590921', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230129, '延寿县', 'Y', '128.33860582402', '45.457641195714', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230183, '尚志市', 'S', '128.01548820666', '45.215473941867', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230184, '五常市', 'W', '127.17352882965', '44.937842855774', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230202, '龙沙区', 'L', '123.96437622285', '47.323576977429', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230203, '建华区', 'J', '123.96135010108', '47.360554871046', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230204, '铁锋区', 'T', '123.984415712', '47.347018863772', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230205, '昂昂溪区', 'A', '123.82940626913', '47.161332243626', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230206, '富拉尔基区', 'F', '123.63650980324', '47.215504082791', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230207, '碾子山区', 'N', '122.89436680108', '47.523236298133', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230208, '梅里斯达斡尔族区', 'M', '123.75954091741', '47.315549574077', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230221, '龙江县', 'L', '123.21153898342', '47.343605740151', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230223, '依安县', 'Y', '125.3124821661', '47.899483651368', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230224, '泰来县', 'T', '123.42362630925', '46.39782928518', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230225, '甘南县', 'G', '123.51248588182', '47.92688406951', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230227, '富裕县', 'F', '124.48054247906', '47.780228063275', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230229, '克山县', 'K', '125.88137832693', '48.043172360737', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230230, '克东县', 'K', '126.25538674804', '48.048244160483', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230231, '拜泉县', 'B', '126.10542147027', '47.601867301959', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230281, '讷河市', 'N', '124.8905490562', '48.490086593264', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230302, '鸡冠区', 'J', '130.98763160852', '45.309806344312', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230303, '恒山区', 'H', '130.91138523344', '45.216971883154', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230304, '滴道区', 'D', '130.85058046059', '45.354433617216', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230305, '梨树区', 'L', '130.70339606719', '45.098241780981', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230306, '城子河区', 'C', '131.02770429868', '45.379689760283', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230307, '麻山区', 'M', '130.48453641613', '45.217934996767', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230321, '鸡东县', 'J', '131.13055848296', '45.266184560826', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230381, '虎林市', 'H', '132.94346566318', '45.768946912884', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230382, '密山市', 'M', '131.85353110655', '45.535640809748', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230402, '向阳区', 'X', '130.30046804764', '47.348580889067', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230403, '工农区', 'G', '130.28161728617', '47.324430299458', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230404, '南山区', 'N', '130.29354031555', '47.321245938809', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230405, '兴安区', 'X', '130.24554573859', '47.258716269483', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230406, '东山区', 'D', '130.32336109407', '47.344987135573', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230407, '兴山区', 'X', '130.31736364716', '47.396045381282', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230421, '萝北县', 'L', '130.8354950365', '47.583422197029', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230422, '绥滨县', 'S', '131.85948651276', '47.295265458073', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230502, '尖山区', 'J', '131.16534177061', '46.652585923812', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230503, '岭东区', 'L', '131.164376721', '46.464596047853', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230505, '四方台区', 'S', '131.345657378', '46.602012285083', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230506, '宝山区', 'B', '131.40737518857', '46.583598340241', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230521, '集贤县', 'J', '131.14743449942', '46.734517788557', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230522, '友谊县', 'Y', '131.8145948627', '46.772973223022', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230523, '宝清县', 'B', '132.20359411633', '46.332651823572', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230524, '饶河县', 'R', '134.02046893233', '46.804182744162', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230602, '萨尔图区', 'S', '125.13351006443', '46.638936435554', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230603, '龙凤区', 'L', '125.14047256095', '46.567678067125', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230604, '让胡路区', 'R', '124.87759881447', '46.658078458609', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230605, '红岗区', 'H', '124.8974774171', '46.404313108628', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230606, '大同区', 'D', '124.81937675979', '46.045583951311', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230621, '肇州县', 'Z', '125.2753682248', '45.705107986871', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230622, '肇源县', 'Z', '125.08457262601', '45.524152914206', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230623, '林甸县', 'L', '124.86965042766', '47.177234395243', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230624, '杜尔伯特蒙古族自治县', 'D', '124.44935879141', '46.868767758452', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230671, '大庆高新技术产业开发区', 'D', '125.15778147083', '46.581298438495', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230702, '伊春区', 'Y', '128.91345891818', '47.733954439001', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230703, '南岔区', 'N', '129.28957179961', '47.143749913595', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230704, '友好区', 'Y', '128.84257946937', '47.846436100332', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230705, '西林区', 'X', '129.31959406806', '47.486393100686', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230706, '翠峦区', 'C', '128.67648152295', '47.732893980201', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230707, '新青区', 'X', '129.54064675236', '48.296134660851', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230708, '美溪区', 'M', '129.13536777746', '47.64134415168', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230709, '金山屯区', 'J', '129.43563861113', '47.418759014597', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230710, '五营区', 'W', '129.25134952898', '48.11427128362', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230711, '乌马河区', 'W', '128.80554637557', '47.73361851021', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230712, '汤旺河区', 'T', '129.57747422403', '48.460614389845', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230713, '带岭区', 'D', '129.02742523145', '47.034571951137', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230714, '乌伊岭区', 'W', '129.44457666112', '48.596169129772', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230715, '红星区', 'H', '129.39750706935', '48.245480405275', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230716, '上甘岭区', 'S', '129.03043733966', '47.980913793769', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230722, '嘉荫县', 'J', '130.41055547772', '48.894983469564', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230781, '铁力市', 'T', '128.03836490393', '46.992948620259', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230803, '向阳区', 'X', '130.37261186145', '46.813511816781', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230804, '前进区', 'Q', '130.3816482759', '46.819626508482', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230805, '东风区', 'D', '130.41056077772', '46.828385151991', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230811, '郊区', 'J', '130.32735909257', '46.805689990858', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230822, '桦南县', 'H', '130.56038502153', '46.24507747688', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230826, '桦川县', 'H', '130.72554944886', '47.028816852926', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230828, '汤原县', 'T', '129.91164504155', '46.735326720461', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230881, '同江市', 'T', '132.51750949205', '47.647980676666', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230882, '富锦市', 'F', '132.04453879528', '47.255932571848', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230883, '抚远市', 'F', '134.31448962575', '48.370944696273', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230902, '新兴区', 'X', '130.93837086995', '45.822310328543', 230900, 3, 'tr_0 tr_230000 tr_230900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230903, '桃山区', 'T', '131.02644424554', '45.771799915696', 230900, 3, 'tr_0 tr_230000 tr_230900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230904, '茄子河区', 'J', '131.0744805937', '45.791238180152', 230900, 3, 'tr_0 tr_230000 tr_230900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230921, '勃利县', 'B', '130.59853255314', '45.760964313167', 230900, 3, 'tr_0 tr_230000 tr_230900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231002, '东安区', 'D', '129.63347765344', '44.587460377571', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231003, '阳明区', 'Y', '129.64252736281', '44.601775026515', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231004, '爱民区', 'A', '129.59836369953', '44.602350339442', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231005, '西安区', 'X', '129.62241286515', '44.583861081842', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231025, '林口县', 'L', '130.28757880086', '45.28412885062', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231071, '牡丹江经济技术开发区', 'M', '129.63953977835', '44.556245708986', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231081, '绥芬河市', 'S', '131.15739222567', '44.418154372388', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231083, '海林市', 'H', '129.38742683358', '44.599871973195', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231084, '宁安市', 'N', '129.48936798014', '44.3469835775', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231085, '穆棱市', 'M', '130.53055850352', '44.924784589588', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231086, '东宁市', 'D', '131.13154357445', '44.096101486248', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231102, '爱辉区', 'A', '127.50663227086', '50.257709616452', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231121, '嫩江县', 'N', '125.22763469543', '49.191320184756', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231123, '逊克县', 'X', '128.48558459529', '49.5694914357', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231124, '孙吴县', 'S', '127.34238770837', '49.431450606859', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231181, '北安市', 'B', '126.49737974226', '48.247419532219', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231182, '五大连池市', 'W', '126.21155518831', '48.522609551763', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231202, '北林区', 'B', '126.99144894055', '46.643492672111', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231221, '望奎县', 'W', '126.49238489413', '46.839167601749', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231222, '兰西县', 'L', '126.29461952255', '46.258095172245', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231223, '青冈县', 'Q', '126.10048887472', '46.71068498305', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231224, '庆安县', 'Q', '127.5146121882', '46.885744465245', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231225, '明水县', 'M', '125.91248269419', '47.179483374941', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231226, '绥棱县', 'S', '127.12051514063', '47.242515793854', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231281, '安达市', 'A', '125.34862234422', '46.425719232144', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231282, '肇东市', 'Z', '125.96853740717', '46.056938289303', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231283, '海伦市', 'H', '126.93650857556', '47.456903841096', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232701, '漠河市', 'M', '122.5454208342', '52.978303678377', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232721, '呼玛县', 'H', '126.65964991907', '51.73094674724', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232722, '塔河县', 'T', '124.71651251449', '52.340305081113', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232761, '加格达奇区', 'J', '124.15292785448', '50.420025955028', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232762, '松岭区', 'S', '124.15292785448', '50.420025955028', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232763, '新林区', 'X', '124.53914092375', '51.801225110533', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232764, '呼中区', 'H', '123.58143136869', '52.037468814622', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310101, '黄浦区', 'H', '121.49158559252', '31.237247152064', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310104, '徐汇区', 'X', '121.44339635276', '31.194556772823', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310105, '长宁区', 'Z', '121.43045437545', '31.226847968225', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310106, '静安区', 'J', '121.45343177277', '31.233844930402', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310107, '普陀区', 'P', '112.85530302042', '35.520558754673', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310109, '虹口区', 'H', '121.51158645453', '31.269746698931', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310110, '杨浦区', 'Y', '121.53251993733', '31.265524144657', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310112, '闵行区', 'M', '121.38861193361', '31.118842580087', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310113, '宝山区', 'B', '131.40737518857', '46.583598340241', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310114, '嘉定区', 'J', '121.27259505835', '31.380155339677', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310115, '浦东新区', 'P', '121.55045460683', '31.227348292436', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310116, '金山区', 'J', '121.34848004512', '30.74785237657', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310117, '松江区', 'S', '121.23447959624', '31.037135176464', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310118, '青浦区', 'Q', '121.13055310467', '31.155454317981', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310120, '奉贤区', 'F', '121.48050373643', '30.923720110285', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310151, '崇明区', 'C', '121.40355686272', '31.628569984404', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320102, '玄武区', 'X', '118.80441263575', '32.054756682949', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320104, '秦淮区', 'Q', '118.80040736097', '32.045138606405', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320105, '建邺区', 'J', '118.73856944695', '32.009369695446', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320106, '鼓楼区', 'G', '118.77651899204', '32.072405160557', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320111, '浦口区', 'P', '118.63460405875', '32.064679277923', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320113, '栖霞区', 'Q', '118.91542298491', '32.10260020783', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320114, '雨花台区', 'Y', '118.78544536406', '31.997858805466', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320115, '江宁区', 'J', '118.84656705909', '31.958526869177', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320116, '六合区', 'L', '118.82747132971', '32.32866604102', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320117, '溧水区', 'L', '119.03440390903', '31.657283696314', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320118, '高淳区', 'G', '118.89849765147', '31.333639123905', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320205, '锡山区', 'X', '120.36342571103', '31.594761632814', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320206, '惠山区', 'H', '120.30459559335', '31.686741337275', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320211, '滨湖区', 'B', '120.29154752616', '31.534639699974', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320213, '梁溪区', 'L', '120.30959951436', '31.571645024135', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320214, '新吴区', 'X', '120.37039647195', '31.554850239842', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320281, '江阴市', 'J', '120.29156800752', '31.926044909769', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320282, '宜兴市', 'Y', '119.83160603216', '31.342956624268', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320302, '鼓楼区', 'G', '117.19257874733', '34.293760084221', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320303, '云龙区', 'Y', '117.2584239124', '34.259086691031', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320305, '贾汪区', 'J', '117.46943039703', '34.441620400617', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320311, '泉山区', 'Q', '117.20059046468', '34.249942871606', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320312, '铜山区', 'T', '117.17556960199', '34.186100449885', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320321, '丰县', 'F', '116.60258246804', '34.699769765634', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320322, '沛县', 'P', '116.9425856239', '34.765151955415', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320324, '睢宁县', 'S', '117.94743277245', '33.918789417818', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320371, '徐州经济技术开发区', 'X', '117.28574962221', '34.272904039312', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320381, '新沂市', 'X', '118.36153652102', '34.375610954637', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320382, '邳州市', 'P', '117.96341066307', '34.339753160807', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320402, '天宁区', 'T', '119.98046316025', '31.785570271253', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320404, '钟楼区', 'Z', '119.908462716', '31.807646657754', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320411, '新北区', 'X', '119.97751429276', '31.836323947624', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320412, '武进区', 'W', '119.94861167229', '31.706446611742', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320413, '金坛区', 'J', '119.60457090266', '31.72889303001', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320481, '溧阳市', 'L', '119.49150603896', '31.422102292159', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320505, '虎丘区', 'H', '120.57847178571', '31.301932876554', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320506, '吴中区', 'W', '120.63850751921', '31.268261445846', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320507, '相城区', 'X', '120.64856593584', '31.374689921493', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320508, '姑苏区', 'G', '120.6234549731', '31.341831300993', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320509, '吴江区', 'W', '120.65156717454', '31.144644190473', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320571, '苏州工业园区', 'S', '120.82848521083', '31.309610913062', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320581, '常熟市', 'C', '120.75949588665', '31.659538276741', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320582, '张家港市', 'Z', '120.56155363871', '31.88114053634', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320583, '昆山市', 'K', '120.98745249795', '31.390863425082', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320585, '太仓市', 'T', '121.1355952935', '31.464599352978', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320602, '崇川区', 'C', '120.86342022229', '32.015923029631', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320611, '港闸区', 'G', '120.82445235808', '32.037345124875', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320612, '通州区', 'T', '121.08142549498', '32.070355739676', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320623, '如东县', 'R', '121.19243791024', '32.335872886155', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320671, '南通经济技术开发区', 'N', '120.90159173866', '31.986549431201', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320681, '启东市', 'Q', '121.66347374677', '31.814232849643', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320682, '如皋市', 'R', '120.57946558109', '32.377851486109', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320684, '海门市', 'H', '121.18843649817', '31.87361172603', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320685, '海安市', 'H', '120.47443309578', '32.53919574424', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320703, '连云区', 'L', '119.46701669742', '34.638921829102', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320706, '海州区', 'H', '119.16940808819', '34.577456118597', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320707, '赣榆区', 'G', '119.17943461497', '34.847682460846', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320722, '东海县', 'D', '118.75956509248', '34.547918627364', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320723, '灌云县', 'G', '119.24653354504', '34.288616060258', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320724, '灌南县', 'G', '119.3225381861', '34.09259130777', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320771, '连云港经济技术开发区', 'L', '119.35457059279', '34.70740063931', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320772, '连云港高新技术产业开发区', 'L', '119.22862133317', '34.602249525267', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320803, '淮安区', 'H', '119.14746320322', '33.508999838208', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320804, '淮阴区', 'H', '119.04142174116', '33.638150424768', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320812, '清江浦区', 'Q', '119.03241362334', '33.558562240066', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320813, '洪泽区', 'H', '118.8795836493', '33.29962468147', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320826, '涟水县', 'L', '119.26644843921', '33.7870787079', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320830, '盱眙县', 'X', '118.55144127024', '33.01825474166', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320831, '金湖县', 'J', '119.02646908663', '33.031283826757', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320871, '淮安经济技术开发区', 'H', '119.13289044209', '33.610236869931', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320902, '亭湖区', 'T', '120.20457816804', '33.395893486907', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320903, '盐都区', 'Y', '120.16050325734', '33.344020315599', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320904, '大丰区', 'D', '120.50743881649', '33.20475984971', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320921, '响水县', 'X', '119.58460112202', '34.20474300276', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320922, '滨海县', 'B', '119.82762105909', '33.995646547467', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320923, '阜宁县', 'F', '119.80958074885', '33.765078727087', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320924, '射阳县', 'S', '120.26444564892', '33.78101359213', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320925, '建湖县', 'J', '119.80553127745', '33.469832978385', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320971, '盐城经济技术开发区', 'Y', '120.16754426576', '33.355100917626', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320981, '东台市', 'D', '120.32653706475', '32.872716312488', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321002, '广陵区', 'G', '119.43850484608', '32.40066115972', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321003, '邗江区', 'H', '119.40438513671', '32.38275135526', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321012, '江都区', 'J', '119.57660296908', '32.440294506243', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321023, '宝应县', 'B', '119.36555570138', '33.247205461148', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321071, '扬州经济技术开发区', 'Y', '119.41941890823', '32.40067693609', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321081, '仪征市', 'Y', '119.19146705795', '32.278090483161', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321084, '高邮市', 'G', '119.46561561654', '32.787147020528', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321102, '京口区', 'J', '119.47560369584', '32.203785483528', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321111, '润州区', 'R', '119.41844047387', '32.201494843152', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321112, '丹徒区', 'D', '119.44050079109', '32.13792039565', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321171, '镇江新区', 'Z', '119.67618104484', '32.168646770866', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321181, '丹阳市', 'D', '119.61250060471', '32.01592027417', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321182, '扬中市', 'Y', '119.80351961209', '32.242967194122', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321183, '句容市', 'J', '119.1754332029', '31.950923490521', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321202, '海陵区', 'H', '119.9255249512', '32.496731549227', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321203, '高港区', 'G', '119.88842098109', '32.32486247444', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321204, '姜堰区', 'J', '120.13339832587', '32.515233674759', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321271, '泰州医药高新技术产业开发区', 'T', '119.91593203649', '32.502484457877', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321281, '兴化市', 'X', '119.85751406137', '32.917824213889', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321282, '靖江市', 'J', '120.28353203592', '31.988170075211', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321283, '泰兴市', 'T', '120.05859939046', '32.177474023712', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321302, '宿城区', 'S', '118.24956705107', '33.968677630731', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321311, '宿豫区', 'S', '118.33640094471', '33.954804396327', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321322, '沭阳县', 'S', '118.81041906571', '34.117454209479', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321323, '泗阳县', 'S', '118.70946596538', '33.728328313047', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321324, '泗洪县', 'S', '118.22241594669', '33.465732594595', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321371, '宿迁经济技术开发区', 'S', '118.27387299732', '33.898354594037', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330102, '上城区', 'S', '120.17557880007', '30.248398420426', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330103, '下城区', 'X', '120.18760693119', '30.286744052562', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330104, '江干区', 'J', '120.21153877811', '30.263310567012', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330105, '拱墅区', 'G', '120.14844700926', '30.32464256663', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330106, '西湖区', 'X', '120.13643801205', '30.265916325589', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330108, '滨江区', 'B', '120.21847118139', '30.214332950144', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330109, '萧山区', 'X', '120.27047058397', '30.187511222214', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330110, '余杭区', 'Y', '120.30659216718', '30.424739268745', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330111, '富阳区', 'F', '119.96655568418', '30.054722967304', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330112, '临安区', 'L', '119.73151737122', '30.239805598054', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330122, '桐庐县', 'T', '119.69759877583', '29.798584790143', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330127, '淳安县', 'C', '119.04839230601', '29.614950366034', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330182, '建德市', 'J', '119.28739807501', '29.481154026968', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330203, '海曙区', 'H', '121.55740307254', '29.865720708366', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330205, '江北区', 'J', '121.56042128922', '29.892948379476', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330206, '北仑区', 'B', '121.85057621461', '29.904659359939', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330211, '镇海区', 'Z', '121.72251899132', '29.954884963349', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330212, '鄞州区', 'Y', '121.55542706991', '29.824206349996', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330213, '奉化区', 'F', '121.41352776719', '29.66114641278', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330225, '象山县', 'X', '121.87556392982', '29.482270653805', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330226, '宁海县', 'N', '121.43643177294', '29.294317441106', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330281, '余姚市', 'Y', '121.16058507482', '30.042734639571', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330282, '慈溪市', 'C', '121.27259613632', '30.17525661072', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330302, '鹿城区', 'L', '120.66158649793', '28.020351607763', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330303, '龙湾区', 'L', '120.81946755397', '27.938652244916', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330304, '瓯海区', 'O', '120.62144724335', '27.972857351643', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330305, '洞头区', 'D', '121.16354856759', '27.841870324587', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330324, '永嘉县', 'Y', '120.68852407508', '28.156450332206', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330326, '平阳县', 'P', '120.57251537444', '27.667724401093', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330327, '苍南县', 'C', '120.43359512229', '27.523066788447', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330328, '文成县', 'W', '120.09748845652', '27.79321715229', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330329, '泰顺县', 'T', '119.72353725759', '27.562170559597', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330371, '温州经济技术开发区', 'W', '120.82366240355', '27.878919129203', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330381, '瑞安市', 'R', '120.66158218607', '27.783950736232', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330382, '乐清市', 'L', '120.99250185617', '28.118179995228', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330402, '南湖区', 'N', '120.78961005175', '30.751546813315', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330411, '秀洲区', 'X', '120.71543705563', '30.770207214174', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330421, '嘉善县', 'J', '120.93251060584', '30.83712219382', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330424, '海盐县', 'H', '120.95244526273', '30.531872894538', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330481, '海宁市', 'H', '120.68656506738', '30.517923769776', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330482, '平湖市', 'P', '121.02257525525', '30.682240998058', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330483, '桐乡市', 'T', '120.57154315531', '30.63631118771', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330502, '吴兴区', 'W', '120.1916046602', '30.862955454986', 330500, 3, 'tr_0 tr_330000 tr_330500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330503, '南浔区', 'N', '120.42460139422', '30.855242982243', 330500, 3, 'tr_0 tr_330000 tr_330500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330521, '德清县', 'D', '119.98346466845', '30.548628239139', 330500, 3, 'tr_0 tr_330000 tr_330500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330522, '长兴县', 'Z', '119.91749832197', '31.032579326835', 330500, 3, 'tr_0 tr_330000 tr_330500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330523, '安吉县', 'A', '119.68656337876', '30.644424794114', 330500, 3, 'tr_0 tr_330000 tr_330500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330602, '越城区', 'Y', '120.58843667181', '29.995309962798', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330603, '柯桥区', 'K', '120.45151103408', '30.07900360495', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330604, '上虞区', 'S', '120.87450989364', '30.038242967062', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330624, '新昌县', 'X', '120.91056965639', '29.50554107531', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330681, '诸暨市', 'Z', '120.25340833197', '29.714934649195', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330683, '嵊州市', 'S', '120.83743725739', '29.567326991294', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330702, '婺城区', 'W', '119.57859260936', '29.091775438186', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330703, '金东区', 'J', '119.69958241405', '29.104765016118', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330723, '武义县', 'W', '119.82256555867', '28.89824378665', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330726, '浦江县', 'P', '119.8984360827', '29.458692851855', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330727, '磐安县', 'P', '120.45651305177', '29.060103175107', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330781, '兰溪市', 'L', '119.46659870554', '29.214044345079', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330782, '义乌市', 'Y', '120.08158099306', '29.31114987541', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330783, '东阳市', 'D', '120.24842192791', '29.295861065151', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330784, '永康市', 'Y', '120.05455071078', '28.894203967255', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330802, '柯城区', 'K', '118.87758391504', '28.974203651128', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330803, '衢江区', 'Q', '118.9655390736', '28.986237907969', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330822, '常山县', 'C', '118.51755663118', '28.906997949113', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330824, '开化县', 'K', '118.42145932131', '29.143187521187', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330825, '龙游县', 'L', '119.17841825566', '29.034486553295', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330881, '江山市', 'J', '118.63358329793', '28.742868480118', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330902, '定海区', 'D', '122.11360080392', '30.025462378363', 330900, 3, 'tr_0 tr_330000 tr_330900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330903, '普陀区', 'P', '122.33154416586', '29.976835696536', 330900, 3, 'tr_0 tr_330000 tr_330900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330921, '岱山县', 'D', '122.23260481449', '30.269655894035', 330900, 3, 'tr_0 tr_330000 tr_330900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330922, '嵊泗县', 'S', '122.45758776506', '30.731273949024', 330900, 3, 'tr_0 tr_330000 tr_330900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331002, '椒江区', 'J', '121.44940797569', '28.679258224903', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331003, '黄岩区', 'H', '121.26856605116', '28.655333607551', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331004, '路桥区', 'L', '121.37157806769', '28.586946666726', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331022, '三门县', 'S', '121.40255379759', '29.110355206289', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331023, '天台县', 'T', '121.01355337629', '29.149514378149', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331024, '仙居县', 'X', '120.73543520575', '28.853225693258', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331081, '温岭市', 'W', '121.39258889458', '28.37765548985', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO `hg_sys_provinces` (`id`, `title`, `pinyin`, `lng`, `lat`, `pid`, `level`, `tree`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(331082, '临海市', 'L', '121.15158529413', '28.864049329083', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331083, '玉环市', 'Y', '121.23851297084', '28.141862986829', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331102, '莲都区', 'L', '119.91951913335', '28.451745135046', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331121, '青田县', 'Q', '120.296573349', '28.14548755633', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331122, '缙云县', 'J', '120.09747830566', '28.665214747164', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331123, '遂昌县', 'S', '119.28243538622', '28.59845467671', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331124, '松阳县', 'S', '119.48854377016', '28.455056404273', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331125, '云和县', 'Y', '119.57959736407', '28.121469507454', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331126, '庆元县', 'Q', '119.06948685498', '27.625431778354', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331127, '景宁畲族自治县', 'J', '119.64243033109', '27.979553966951', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331181, '龙泉市', 'L', '119.14844476521', '28.080508725251', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340102, '瑶海区', 'Y', '117.31558704454', '31.863786941657', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340103, '庐阳区', 'L', '117.27145913382', '31.884886695554', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340104, '蜀山区', 'S', '117.2664607823', '31.857378217104', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340111, '包河区', 'B', '117.31657625857', '31.799293467782', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340121, '长丰县', 'Z', '117.17356009256', '32.483722623763', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340122, '肥东县', 'F', '117.47540062528', '31.893890354487', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340123, '肥西县', 'F', '117.16455781372', '31.712962132717', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340124, '庐江县', 'L', '117.29357730192', '31.261327637478', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340171, '合肥高新技术产业开发区', 'H', '117.1837943471', '31.838528178293', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340172, '合肥经济技术开发区', 'H', '117.21475703093', '31.784661076762', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340173, '合肥新站高新技术产业开发区', 'H', '117.38386824707', '31.946175260915', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340181, '巢湖市', 'C', '117.89557620045', '31.629002428816', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340202, '镜湖区', 'J', '118.39260630352', '31.345866595569', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340203, '弋江区', 'Y', '118.37957970583', '31.317566272497', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340207, '鸠江区', 'J', '118.39758848554', '31.375804519517', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340208, '三山区', 'S', '118.27460210698', '31.225280124269', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340221, '芜湖县', 'W', '118.58244251203', '31.141239223464', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340222, '繁昌县', 'F', '118.20542431831', '31.107958593586', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340223, '南陵县', 'N', '118.34041816695', '30.920260298683', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340225, '无为县', 'W', '117.90857854389', '31.308844155979', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340271, '芜湖经济技术开发区', 'W', '118.39582758127', '31.478017093937', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340272, '安徽芜湖长江大桥经济开发区', 'A', '118.37946121933', '31.391647770998', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340302, '龙子湖区', 'L', '117.39951276393', '32.948644262929', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340303, '蚌山区', 'B', '117.37944120527', '32.923378770395', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340304, '禹会区', 'Y', '117.3484523601', '32.935309988858', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340311, '淮上区', 'H', '117.36638271774', '32.970547011885', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340321, '怀远县', 'H', '117.21150631391', '32.976003726624', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340322, '五河县', 'W', '117.88756088987', '33.132709462866', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340323, '固镇县', 'G', '117.32354764831', '33.323274297744', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340371, '蚌埠市高新技术开发区', 'B', '117.27641494698', '32.834931868561', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340372, '蚌埠市经济开发区', 'B', '117.20923836199', '32.962369404949', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340402, '大通区', 'D', '117.05958317929', '32.637269959538', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340403, '田家庵区', 'T', '117.02344533676', '32.653323007096', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340404, '谢家集区', 'X', '116.86543887721', '32.606254588196', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340405, '八公山区', 'B', '116.84056434849', '32.637137318437', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340406, '潘集区', 'P', '116.84158096084', '32.777955491108', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340421, '凤台县', 'F', '116.71757320891', '32.715103905085', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340422, '寿县', 'S', '116.8055627726', '32.561546151201', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340503, '花山区', 'H', '118.49960562875', '31.725472572001', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340504, '雨山区', 'Y', '118.50559705701', '31.687745482904', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340506, '博望区', 'B', '118.85155804451', '31.556645467065', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340521, '当涂县', 'D', '118.50460469891', '31.576649154711', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340522, '含山县', 'H', '118.10746203634', '31.740862208736', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340523, '和县', 'H', '118.35951254887', '31.748243815854', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340602, '杜集区', 'D', '116.83461226601', '33.997285436391', 340600, 3, 'tr_0 tr_340000 tr_340600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340603, '相山区', 'X', '116.80052112276', '33.96582716177', 340600, 3, 'tr_0 tr_340000 tr_340600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340604, '烈山区', 'L', '116.9081817805', '33.84405351094', 340600, 3, 'tr_0 tr_340000 tr_340600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340621, '濉溪县', 'S', '116.77238942808', '33.921629194823', 340600, 3, 'tr_0 tr_340000 tr_340600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340705, '铜官区', 'T', '117.82145710265', '30.940386340633', 340700, 3, 'tr_0 tr_340000 tr_340700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340706, '义安区', 'Y', '117.79856800876', '30.958512099098', 340700, 3, 'tr_0 tr_340000 tr_340700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340711, '郊区', 'J', '117.80755007573', '30.897741483658', 340700, 3, 'tr_0 tr_340000 tr_340700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340722, '枞阳县', 'C', '117.22643695997', '30.705671267725', 340700, 3, 'tr_0 tr_340000 tr_340700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340802, '迎江区', 'Y', '117.09751448877', '30.517523291408', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340803, '大观区', 'D', '117.04053820417', '30.518231924651', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340811, '宜秀区', 'Y', '116.99344112425', '30.619675877796', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340822, '怀宁县', 'H', '116.83659258051', '30.739399674607', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340825, '太湖县', 'T', '116.31547630162', '30.460113290448', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340826, '宿松县', 'S', '116.13552369949', '30.159786861375', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340827, '望江县', 'W', '116.7005902941', '30.129968329229', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340828, '岳西县', 'Y', '116.36655539021', '30.855227714002', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340871, '安徽安庆经济开发区', 'A', '117.06360390492', '30.530956568043', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340881, '桐城市', 'T', '116.98046635878', '31.041969037674', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340882, '潜山市', 'Q', '116.58761103892', '30.636755682399', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341002, '屯溪区', 'T', '118.32141818077', '29.702143908546', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341003, '黄山区', 'H', '118.14760982484', '30.278650980188', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341004, '徽州区', 'H', '118.34343582847', '29.834221385317', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341021, '歙县', 'S', '118.42146012979', '29.866287675757', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341022, '休宁县', 'X', '118.20543014116', '29.795459004963', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341023, '黟县', 'Y', '117.94447724144', '29.931047330704', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341024, '祁门县', 'Q', '117.72339257754', '29.86034394808', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341102, '琅琊区', 'L', '118.31244134015', '32.300867492599', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341103, '南谯区', 'N', '118.42348205204', '32.206131899264', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341122, '来安县', 'L', '118.4424124932', '32.458449762427', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341124, '全椒县', 'Q', '118.2805842827', '32.091939797603', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341125, '定远县', 'D', '117.70447068625', '32.537046613487', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341126, '凤阳县', 'F', '117.53858536874', '32.880976725258', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341171, '苏滁现代产业园', 'S', '118.42315086566', '32.314484916002', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341172, '滁州经济技术开发区', 'C', '118.37688910117', '32.299081918592', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341181, '天长市', 'T', '119.01138527949', '32.67341003277', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341182, '明光市', 'M', '117.99550981385', '32.783022823418', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341202, '颍州区', 'Y', '115.81341119616', '32.88962541655', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341203, '颍东区', 'Y', '115.86361668264', '32.917362240172', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341204, '颍泉区', 'Y', '115.81542555644', '32.931313576025', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341221, '临泉县', 'L', '115.26761550051', '33.045959528363', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341222, '太和县', 'T', '115.6286154697', '33.165959850096', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341225, '阜南县', 'F', '115.60254592516', '32.664097385125', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341226, '颍上县', 'Y', '116.26347689904', '32.659028468804', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341271, '阜阳合肥现代产业园区', 'F', '115.88456164757', '32.809466011566', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341272, '阜阳经济技术开发区', 'F', '115.86257063732', '32.867285704339', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341282, '界首市', 'J', '115.38060984722', '33.262775236231', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341302, '埇桥区', 'Y', '116.98348044326', '33.646130650445', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341321, '砀山县', 'D', '116.37252400151', '34.448428171397', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341322, '萧县', 'X', '116.95358492572', '34.194269344319', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341323, '灵璧县', 'L', '117.56455699799', '33.547892231948', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341324, '泗县', 'S', '117.91658999175', '33.488694630134', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341371, '宿州马鞍山现代产业园区', 'S', '116.97054394561', '33.652095326452', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341372, '宿州经济技术开发区', 'S', '116.97054394561', '33.652095326452', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341702, '贵池区', 'G', '117.57449037049', '30.693857943819', 341700, 3, 'tr_0 tr_340000 tr_341700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341721, '东至县', 'D', '117.03448128944', '30.116534528265', 341700, 3, 'tr_0 tr_340000 tr_341700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341722, '石台县', 'S', '117.49239440959', '30.216530337189', 341700, 3, 'tr_0 tr_340000 tr_341700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341723, '青阳县', 'Q', '117.85343129914', '30.645634346235', 341700, 3, 'tr_0 tr_340000 tr_341700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341802, '宣州区', 'X', '118.76254944305', '30.952158157984', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341821, '郎溪县', 'L', '119.18646592169', '31.132681870443', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341822, '广德县', 'G', '119.42747581035', '30.883667102643', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341823, '泾县', 'J', '118.42643469242', '30.694672488542', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341824, '绩溪县', 'J', '118.58544384057', '30.073292199533', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341825, '旌德县', 'J', '118.54646735263', '30.292481093722', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341871, '宣城市经济开发区', 'X', '118.76553424277', '30.946601545293', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341881, '宁国市', 'N', '118.98960981494', '30.639352229689', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350102, '鼓楼区', 'G', '119.31049162322', '26.088114037555', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350103, '台江区', 'T', '119.32052821102', '26.058528150645', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350104, '仓山区', 'C', '119.28043216493', '26.052841691927', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350105, '马尾区', 'M', '119.44551915828', '26.004533771063', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350111, '晋安区', 'J', '119.33457941597', '26.087213904434', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350112, '长乐区', 'Z', '119.52943832001', '25.969257448077', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350121, '闽侯县', 'M', '119.13848201812', '26.156035214577', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350122, '连江县', 'L', '119.54647881621', '26.203583291029', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350123, '罗源县', 'L', '119.55648045992', '26.495495660324', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350124, '闽清县', 'M', '118.86957650956', '26.226847540202', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350125, '永泰县', 'Y', '118.93843072857', '25.872787263196', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350128, '平潭县', 'P', '119.79650131414', '25.504700273945', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350181, '福清市', 'F', '119.39046524749', '25.726343299035', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350203, '思明区', 'S', '118.08840797224', '24.451948395671', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350205, '海沧区', 'H', '118.03956171185', '24.490325818598', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350206, '湖里区', 'H', '118.15358812172', '24.517573138112', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350211, '集美区', 'J', '118.10343491664', '24.58201906225', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350212, '同安区', 'T', '118.15856347661', '24.729113975347', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350213, '翔安区', 'X', '118.25457589661', '24.624216383593', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350302, '城厢区', 'C', '119.00153633131', '25.424343792482', 350300, 3, 'tr_0 tr_350000 tr_350300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350303, '涵江区', 'H', '119.12256736822', '25.464464388124', 350300, 3, 'tr_0 tr_350000 tr_350300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350304, '荔城区', 'L', '119.01948169064', '25.439754478806', 350300, 3, 'tr_0 tr_350000 tr_350300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350305, '秀屿区', 'X', '119.11157130031', '25.323654397561', 350300, 3, 'tr_0 tr_350000 tr_350300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350322, '仙游县', 'X', '118.69845425065', '25.368291498104', 350300, 3, 'tr_0 tr_350000 tr_350300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350402, '梅列区', 'M', '117.65255022877', '26.277335878355', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350403, '三元区', 'S', '117.61441509378', '26.240219374574', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350421, '明溪县', 'M', '117.20851763568', '26.361853685277', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350423, '清流县', 'Q', '116.8235931858', '26.18335735321', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350424, '宁化县', 'N', '116.660425512', '26.26795649054', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350425, '大田县', 'D', '117.85343999668', '25.698932641879', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350426, '尤溪县', 'Y', '118.19743971365', '26.17621803946', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350427, '沙县', 'S', '117.79856107581', '26.402813444346', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350428, '将乐县', 'J', '117.47740904084', '26.735209519833', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350429, '泰宁县', 'T', '117.1825958624', '26.905660032285', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350430, '建宁县', 'J', '116.85250622659', '26.836824655349', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350481, '永安市', 'Y', '117.37144258732', '25.948143989824', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350502, '鲤城区', 'L', '118.59348105353', '24.913354167054', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350503, '丰泽区', 'F', '118.61958015232', '24.894969993262', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350504, '洛江区', 'L', '118.67741629493', '24.94621365376', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350505, '泉港区', 'Q', '118.92243298541', '25.139650393954', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350521, '惠安县', 'H', '118.8034155003', '25.036949815039', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350524, '安溪县', 'A', '118.19242537229', '25.061759553382', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350525, '永春县', 'Y', '118.30048613527', '25.327974202083', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350526, '德化县', 'D', '118.24755006956', '25.497308594179', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350581, '石狮市', 'S', '118.65451902647', '24.737665160883', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350582, '晋江市', 'J', '118.55843052', '24.787824575145', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350583, '南安市', 'N', '118.39257197205', '24.966362350468', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350602, '芗城区', 'X', '117.6605895241', '24.516268416111', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350603, '龙文区', 'L', '117.7164546946', '24.509509680945', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350622, '云霄县', 'Y', '117.34644831448', '23.964072828248', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350623, '漳浦县', 'Z', '117.62044335257', '24.123461614812', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350624, '诏安县', 'Z', '117.18255858272', '23.717053963784', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350625, '长泰县', 'Z', '117.76555257036', '24.631243628383', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350626, '东山县', 'D', '117.43656030457', '23.706894688691', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350627, '南靖县', 'N', '117.36344641066', '24.52085173207', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350628, '平和县', 'P', '117.32255159131', '24.368365040126', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350629, '华安县', 'H', '117.54058560971', '25.010067731399', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350681, '龙海市', 'L', '117.82445086941', '24.452939738547', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350702, '延平区', 'Y', '118.18845055007', '26.643807791057', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350703, '建阳区', 'J', '118.12752522464', '27.337502466188', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350721, '顺昌县', 'S', '117.81651928091', '26.799104367214', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350722, '浦城县', 'P', '118.54743912328', '27.923390046145', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350723, '光泽县', 'G', '117.34048158963', '27.547272859205', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350724, '松溪县', 'S', '118.79145438278', '27.532554907167', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350725, '政和县', 'Z', '118.86358723724', '27.371749198234', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350781, '邵武市', 'S', '117.4994195021', '27.346469966261', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350782, '武夷山市', 'W', '118.04157715009', '27.762553910259', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350783, '建瓯市', 'J', '118.31146073369', '27.028955089429', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350802, '新罗区', 'X', '117.04354293052', '25.104077629635', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350803, '永定区', 'Y', '116.89244722515', '24.869137411287', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350821, '长汀县', 'Z', '116.36356796988', '25.83918461828', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350823, '上杭县', 'S', '116.42644288776', '25.055570401525', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350824, '武平县', 'W', '116.10758916743', '25.100855173343', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350825, '连城县', 'L', '116.76044617118', '25.716337381852', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350881, '漳平市', 'Z', '117.42655632526', '25.295743499252', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341502, '金安区', 'J', '116.54543837997', '31.756287719901', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341503, '裕安区', 'Y', '116.48654978261', '31.74362587083', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341504, '叶集区', 'Y', '115.94747592742', '31.83526314225', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341522, '霍邱县', 'H', '116.28439133776', '32.359343590922', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341523, '舒城县', 'S', '116.95560171142', '31.467692010556', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341524, '金寨县', 'J', '115.94044120714', '31.733461734381', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341525, '霍山县', 'H', '116.33957586218', '31.398570812489', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350902, '蕉城区', 'J', '119.53344242699', '26.666738555955', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350921, '霞浦县', 'X', '120.01142710564', '26.891348873767', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350922, '古田县', 'G', '118.75257823557', '26.583261752073', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350923, '屏南县', 'P', '118.99259621521', '26.914264918059', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350924, '寿宁县', 'S', '119.51142504878', '27.466649659969', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350925, '周宁县', 'Z', '119.34556712964', '27.110239280448', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350926, '柘荣县', 'Z', '119.90745668696', '27.239961876352', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350981, '福安市', 'F', '119.65440636048', '27.09432350806', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350982, '福鼎市', 'F', '120.22345190932', '27.330524972528', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360102, '东湖区', 'D', '115.90546602606', '28.691259179775', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360103, '西湖区', 'X', '115.88353569365', '28.661976709901', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360104, '青云谱区', 'Q', '115.93141618579', '28.627235736484', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360105, '湾里区', 'W', '115.73759563309', '28.720195384308', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360111, '青山湖区', 'Q', '115.96855240505', '28.687596006173', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360112, '新建区', 'X', '115.8214509253', '28.698748625155', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360121, '南昌县', 'N', '115.95046017277', '28.551604186108', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360123, '安义县', 'A', '115.55544146387', '28.850794273751', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360124, '进贤县', 'J', '116.24853779343', '28.382758944474', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360202, '昌江区', 'C', '117.19057910346', '29.27885446447', 360200, 3, 'tr_0 tr_360000 tr_360200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360203, '珠山区', 'Z', '117.20954826159', '29.305778220374', 360200, 3, 'tr_0 tr_360000 tr_360200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360222, '浮梁县', 'F', '117.22146608079', '29.357788237529', 360200, 3, 'tr_0 tr_360000 tr_360200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360281, '乐平市', 'L', '117.15851067473', '28.984363669039', 360200, 3, 'tr_0 tr_360000 tr_360200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360302, '安源区', 'A', '113.87743991926', '27.621307703862', 360300, 3, 'tr_0 tr_360000 tr_360300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360313, '湘东区', 'X', '113.74049971211', '27.645875074875', 360300, 3, 'tr_0 tr_360000 tr_360300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360321, '莲花县', 'L', '113.96854067422', '27.133462711028', 360300, 3, 'tr_0 tr_360000 tr_360300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360322, '上栗县', 'S', '113.80153822404', '27.886415692068', 360300, 3, 'tr_0 tr_360000 tr_360300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360323, '芦溪县', 'L', '114.03651940468', '27.6366047187', 360300, 3, 'tr_0 tr_360000 tr_360300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360402, '濂溪区', 'L', '116.00753491163', '29.711340559079', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360403, '浔阳区', 'X', '115.99655806746', '29.733093751939', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360404, '柴桑区', 'C', '115.91740154188', '29.614804909379', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360423, '武宁县', 'W', '115.10744177399', '29.2623521507', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360424, '修水县', 'X', '114.55356797639', '29.031175867959', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360425, '永修县', 'Y', '115.81540658685', '29.028005616261', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360426, '德安县', 'D', '115.76257795847', '29.319172496312', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360428, '都昌县', 'D', '116.21055204665', '29.278965044767', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360429, '湖口县', 'H', '116.25847134559', '29.737131514562', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360430, '彭泽县', 'P', '116.55550980644', '29.902122004906', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360481, '瑞昌市', 'R', '115.68742967207', '29.681951286531', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360482, '共青城市', 'G', '115.82142002359', '29.248741173716', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360483, '庐山市', 'L', '116.05142593917', '29.454539165717', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360502, '渝水区', 'Y', '114.9514238934', '27.806839650444', 360500, 3, 'tr_0 tr_360000 tr_360500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360521, '分宜县', 'F', '114.69847247036', '27.820731344374', 360500, 3, 'tr_0 tr_360000 tr_360500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360602, '月湖区', 'Y', '117.04354760171', '28.245078331555', 360600, 3, 'tr_0 tr_360000 tr_360600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360603, '余江区', 'Y', '116.82459362864', '28.215353761359', 360600, 3, 'tr_0 tr_360000 tr_360600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360681, '贵溪市', 'G', '117.25139869833', '28.298735072105', 360600, 3, 'tr_0 tr_360000 tr_360600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360702, '章贡区', 'Z', '114.9275508855', '25.823747013882', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360703, '南康区', 'N', '114.77153821509', '25.66705293056', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360704, '赣县区', 'G', '115.01857016415', '25.866384616621', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360722, '信丰县', 'X', '114.92952113897', '25.391975120014', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360723, '大余县', 'D', '114.36840663965', '25.407637298367', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360724, '上犹县', 'S', '114.55854863129', '25.790518799476', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360725, '崇义县', 'C', '114.31457244808', '25.687687192664', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360726, '安远县', 'A', '115.40055913129', '25.142743431732', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360727, '龙南县', 'L', '114.79655413709', '24.916599461157', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360728, '定南县', 'D', '115.0345637751', '24.789783831846', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360729, '全南县', 'Q', '114.53658236666', '24.748206354967', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360730, '宁都县', 'N', '116.01549443743', '26.47597950334', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360731, '于都县', 'Y', '115.42149926153', '25.957893942751', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360732, '兴国县', 'X', '115.36955169119', '26.343882588243', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360733, '会昌县', 'H', '115.79245964209', '25.606661833811', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360734, '寻乌县', 'X', '115.65351531535', '24.96944654678', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360735, '石城县', 'S', '116.35259426977', '26.318972346784', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360781, '瑞金市', 'R', '116.03342066286', '25.891666273953', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360802, '吉州区', 'J', '115.00153936965', '27.149314993877', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360803, '青原区', 'Q', '115.02156071302', '27.087662535191', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360821, '吉安县', 'J', '114.9145913014', '27.044989078994', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360822, '吉水县', 'J', '115.14256983128', '27.235259745039', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360823, '峡江县', 'X', '115.32240322821', '27.588234617615', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360824, '新干县', 'X', '115.39359474833', '27.746080951713', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360825, '永丰县', 'Y', '115.44740243989', '27.324342103714', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360826, '泰和县', 'T', '114.91559111544', '26.795697341165', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360827, '遂川县', 'S', '114.52756212171', '26.319517284146', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360828, '万安县', 'W', '114.79257715894', '26.464072836341', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360829, '安福县', 'A', '114.62647813461', '27.399076477105', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360830, '永新县', 'Y', '114.2494149359', '26.951537256563', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360881, '井冈山市', 'J', '114.29555585942', '26.753709741566', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360902, '袁州区', 'Y', '114.43456118111', '27.802582705304', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360921, '奉新县', 'F', '115.40655109853', '28.694028951458', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360922, '万载县', 'W', '114.45253654385', '28.112133306116', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360923, '上高县', 'S', '114.93154115857', '28.238815490252', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360924, '宜丰县', 'Y', '114.80951713475', '28.400373307265', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360925, '靖安县', 'J', '115.36955312848', '28.867081916186', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360926, '铜鼓县', 'T', '114.37741107441', '28.52708345654', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360981, '丰城市', 'F', '115.77747842145', '28.166614024369', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360982, '樟树市', 'Z', '115.55241893533', '28.062153117648', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360983, '高安市', 'G', '115.38256535328', '28.422857002119', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361002, '临川区', 'L', '116.31848983161', '27.940458992864', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361003, '东乡区', 'D', '116.60954171505', '28.253977397999', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361021, '南城县', 'N', '116.64339884971', '27.57624096656', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361022, '黎川县', 'L', '116.91450700338', '27.288340234831', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361023, '南丰县', 'N', '116.53140350859', '27.224733524876', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361024, '崇仁县', 'C', '116.08354898488', '27.759079756014', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361025, '乐安县', 'L', '115.83749627865', '27.434079864498', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361026, '宜黄县', 'Y', '116.24254169398', '27.5605634607', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361027, '金溪县', 'J', '116.76040404065', '27.925329188976', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361028, '资溪县', 'Z', '117.06657027361', '27.711845785732', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361030, '广昌县', 'G', '116.34256064638', '26.848454446681', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361102, '信州区', 'X', '117.97341184157', '28.437628311', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361103, '广丰区', 'G', '118.19742022042', '28.442615061205', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361121, '上饶县', 'S', '117.91558441252', '28.45418687477', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361123, '玉山县', 'Y', '118.2515628901', '28.687749687317', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361124, '铅山县', 'Q', '117.71642163695', '28.321504694791', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361125, '横峰县', 'H', '117.60239738302', '28.413440462384', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361126, '弋阳县', 'Y', '117.45550637624', '28.384082001231', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361127, '余干县', 'Y', '116.70160096199', '28.707866244419', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361128, '鄱阳县', 'P', '116.7105661408', '29.011452830922', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361129, '万年县', 'W', '117.06459894217', '28.700054054129', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361130, '婺源县', 'W', '117.86844502243', '29.254039048097', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361181, '德兴市', 'D', '117.58547968518', '28.952564863028', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341602, '谯城区', 'Q', '115.78547191853', '33.882663087443', 341600, 3, 'tr_0 tr_340000 tr_341600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341621, '涡阳县', 'W', '116.22160903516', '33.498566835004', 341600, 3, 'tr_0 tr_340000 tr_341600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341622, '蒙城县', 'M', '116.57158940083', '33.271658239674', 341600, 3, 'tr_0 tr_340000 tr_341600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341623, '利辛县', 'L', '116.1914935226', '33.155595841529', 341600, 3, 'tr_0 tr_340000 tr_341600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370102, '历下区', 'L', '117.0825673139', '36.672162950043', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370103, '市中区', 'S', '117.00439910401', '36.657551673642', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370104, '槐荫区', 'H', '116.90745837507', '36.657561734426', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370105, '天桥区', 'T', '116.99339917338', '36.684067874353', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370112, '历城区', 'L', '117.07158975107', '36.685655534711', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370113, '长清区', 'Z', '116.75838709095', '36.56021587991', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370114, '章丘区', 'Z', '117.53256537437', '36.68553275142', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370115, '济阳区', 'J', '117.18062113319', '36.983970518315', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370124, '平阴县', 'P', '116.46261667806', '36.294861321066', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370126, '商河县', 'S', '117.1635297929', '37.314970715556', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370171, '济南高新技术产业开发区', 'J', '117.12639941261', '36.656554201787', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370202, '市南区', 'S', '120.41858472358', '36.081465640234', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370203, '市北区', 'S', '120.38140448734', '36.09344959486', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370211, '黄岛区', 'H', '120.20454654768', '35.966382870945', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370212, '崂山区', 'L', '120.47539724708', '36.113499423971', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370213, '李沧区', 'L', '120.43960282675', '36.151024667784', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370214, '城阳区', 'C', '120.40252679394', '36.31288619735', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO `hg_sys_provinces` (`id`, `title`, `pinyin`, `lng`, `lat`, `pid`, `level`, `tree`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(370215, '即墨区', 'J', '120.45353617402', '36.394749170322', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370271, '青岛高新技术产业开发区', 'Q', '120.44085344768', '36.124685571214', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370281, '胶州市', 'J', '120.03953537127', '36.270349088049', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370283, '平度市', 'P', '119.99441429398', '36.782692254089', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370285, '莱西市', 'L', '120.52455620764', '36.893956298026', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370302, '淄川区', 'Z', '117.97341185763', '36.649834806022', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370303, '张店区', 'Z', '118.02459110728', '36.811941952144', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370304, '博山区', 'B', '117.86846875372', '36.500847855131', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370305, '临淄区', 'L', '118.31539460935', '36.832293635152', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370306, '周村区', 'Z', '117.87648217785', '36.808994352212', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370321, '桓台县', 'H', '118.10443420779', '36.965607980118', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370322, '高青县', 'G', '117.83339432525', '37.177268654333', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370323, '沂源县', 'Y', '118.17748944237', '36.190916985848', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370402, '市中区', 'S', '117.56256581399', '34.86996272507', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370403, '薛城区', 'X', '117.26945761931', '34.801124568639', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370404, '峄城区', 'Y', '117.59639060967', '34.778599873011', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370405, '台儿庄区', 'T', '117.74042545412', '34.568763215633', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370406, '山亭区', 'S', '117.46744316558', '35.105691980765', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370481, '滕州市', 'T', '117.17256521921', '35.120034809574', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370502, '东营区', 'D', '118.58846268607', '37.454847320166', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370503, '河口区', 'H', '118.53250516975', '37.891120201056', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370505, '垦利区', 'K', '118.58143173867', '37.578555133809', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370522, '利津县', 'L', '118.26161799914', '37.495860299031', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370523, '广饶县', 'G', '118.41349864392', '37.059638498906', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370571, '东营经济技术开发区', 'D', '118.58846268607', '37.454847320166', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370572, '东营港经济开发区', 'D', '118.96520739607', '38.098236253355', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370602, '芝罘区', 'Z', '121.40654004549', '37.546312866891', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370611, '福山区', 'F', '121.27460474744', '37.503668228451', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370612, '牟平区', 'M', '121.60654911474', '37.392915451796', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370613, '莱山区', 'L', '121.4513806718', '37.517648584109', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370634, '长岛县', 'Z', '120.74342978244', '37.927628387579', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370671, '烟台高新技术产业开发区', 'Y', '121.4544154173', '37.470038383731', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370672, '烟台经济技术开发区', 'Y', '121.12513892753', '37.636399945094', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370681, '龙口市', 'L', '120.48536852807', '37.652555125496', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370682, '莱阳市', 'L', '120.71841430958', '36.984635568304', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370683, '莱州市', 'L', '119.94859307737', '37.182636609074', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370684, '蓬莱市', 'P', '120.76556151495', '37.816438725969', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370685, '招远市', 'Z', '120.44060165265', '37.361137142566', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370686, '栖霞市', 'Q', '120.85641658338', '37.3414181648', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370687, '海阳市', 'H', '121.18045819779', '36.693269738228', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370702, '潍城区', 'W', '119.03142854152', '36.73285441557', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370703, '寒亭区', 'H', '119.22661514747', '36.780743786201', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370704, '坊子区', 'F', '119.17240097265', '36.660741599701', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370705, '奎文区', 'K', '119.13947052995', '36.712752014046', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370724, '临朐县', 'L', '118.54944999641', '36.519129501828', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370725, '昌乐县', 'C', '118.83648798144', '36.712996190845', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370772, '潍坊滨海经济技术开发区', 'W', '119.16837791143', '36.712651551268', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370781, '青州市', 'Q', '118.48653672087', '36.690416508705', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370782, '诸城市', 'Z', '119.41640221867', '36.002008858076', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370783, '寿光市', 'S', '118.79741537481', '36.861921746471', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370784, '安丘市', 'A', '119.22560751818', '36.483842195596', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370785, '高密市', 'G', '119.76241099602', '36.388956706465', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370786, '昌邑市', 'C', '119.40440597739', '36.865161072622', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370811, '任城区', 'R', '116.55446985374', '35.49373064026', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370812, '兖州区', 'Y', '116.79011515173', '35.557952373283', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370826, '微山县', 'W', '117.13541381857', '34.813315104239', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370827, '鱼台县', 'Y', '116.65739284822', '35.017887717823', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370828, '金乡县', 'J', '116.31852982171', '35.072569118665', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370829, '嘉祥县', 'J', '116.34861308511', '35.413255044102', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370830, '汶上县', 'W', '116.50544105765', '35.717055392628', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370831, '泗水县', 'S', '117.25742858989', '35.670600481228', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370832, '梁山县', 'L', '116.10262029578', '35.808063886611', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370871, '济宁高新技术产业开发区', 'J', '116.59361234854', '35.42017739453', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370881, '曲阜市', 'Q', '116.99341597169', '35.587372286488', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370883, '邹城市', 'Z', '117.01440416129', '35.40752093245', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370902, '泰山区', 'T', '117.14141108582', '36.199444601195', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370911, '岱岳区', 'D', '117.04855647915', '36.193291242291', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370921, '宁阳县', 'N', '116.81257853863', '35.764539097344', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370923, '东平县', 'D', '116.47759421565', '35.941908015019', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370982, '新泰市', 'X', '117.77460624827', '35.914619866588', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370983, '肥城市', 'F', '116.77540081764', '36.188811224315', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371002, '环翠区', 'H', '122.12953818095', '37.507968071219', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371003, '文登区', 'W', '122.06442836878', '37.200113328316', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371071, '威海火炬高技术产业开发区', 'W', '122.12754097831', '37.516430548015', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371072, '威海经济技术开发区', 'W', '122.18792776961', '37.412757933019', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371073, '威海临港经济技术开发区', 'W', '122.12754097831', '37.516430548015', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371082, '荣成市', 'R', '122.49250463074', '37.171317939253', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371083, '乳山市', 'R', '121.5464285812', '36.925177357878', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371102, '东港区', 'D', '119.46862431118', '35.431049003942', 371100, 3, 'tr_0 tr_370000 tr_371100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371103, '岚山区', 'L', '119.32553044175', '35.127432330052', 371100, 3, 'tr_0 tr_370000 tr_371100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371121, '五莲县', 'W', '119.21558036259', '35.755697104104', 371100, 3, 'tr_0 tr_370000 tr_371100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371122, '莒县', 'J', '118.8435382424', '35.585872122989', 371100, 3, 'tr_0 tr_370000 tr_371100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371171, '日照经济技术开发区', 'R', '119.53341540457', '35.422838998438', 371100, 3, 'tr_0 tr_370000 tr_371100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371202, '莱城区', 'L', '117.6459130158', '36.313394584932', 371200, 3, 'tr_0 tr_370000 tr_371200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371203, '钢城区', 'G', '117.8275371813', '36.092835887233', 371200, 3, 'tr_0 tr_370000 tr_371200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371302, '兰山区', 'L', '118.35449973464', '35.057340229806', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371311, '罗庄区', 'L', '118.29151252855', '35.002503733433', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371312, '河东区', 'H', '118.40954744713', '35.095675536824', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371321, '沂南县', 'Y', '118.47149154086', '35.55609766695', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371322, '郯城县', 'T', '118.37358710977', '34.619225932471', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371323, '沂水县', 'Y', '118.63461726385', '35.796180584718', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371324, '兰陵县', 'L', '118.07740949499', '34.86361638544', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371325, '费县', 'F', '117.98442508318', '35.272304128517', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371326, '平邑县', 'P', '117.64654058086', '35.51201963664', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371327, '莒南县', 'J', '118.84154077027', '35.180811631788', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371328, '蒙阴县', 'M', '117.95141460145', '35.716347166232', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371329, '临沭县', 'L', '118.6574945001', '34.926018591491', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371371, '临沂高新技术产业开发区', 'L', '118.27105074598', '34.991223857705', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371372, '临沂经济技术开发区', 'L', '118.41614315832', '35.028440855401', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371373, '临沂临港经济开发区', 'L', '119.09098821173', '35.192676079483', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371402, '德城区', 'D', '116.30544896637', '37.456993283021', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371403, '陵城区', 'L', '116.58940001434', '37.347132434581', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371422, '宁津县', 'N', '116.80653761374', '37.658018745855', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371423, '庆云县', 'Q', '117.39145244825', '37.781585318857', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371424, '临邑县', 'L', '116.87340370302', '37.196169366727', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371425, '齐河县', 'Q', '116.76938747073', '36.78994480667', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371426, '平原县', 'P', '116.44050470827', '37.171221463312', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371427, '夏津县', 'X', '116.00853411226', '36.954154863323', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371428, '武城县', 'W', '116.07550629142', '37.219222080288', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371471, '德州经济技术开发区', 'D', '116.36555674397', '37.441308454576', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371472, '德州运河经济开发区', 'D', '116.36555674397', '37.441308454576', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371481, '乐陵市', 'L', '117.23840643173', '37.73592450081', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371482, '禹城市', 'Y', '116.64437110138', '36.940242008766', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371502, '东昌府区', 'D', '115.99458657176', '36.440377840732', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371521, '阳谷县', 'Y', '115.79839557041', '36.120815514687', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371522, '莘县', 'S', '115.67739687246', '36.239907120546', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371523, '茌平县', 'C', '116.26145544215', '36.586785068842', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371524, '东阿县', 'D', '116.25449294564', '36.340957707761', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371525, '冠县', 'G', '115.44939579504', '36.490243225394', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371526, '高唐县', 'G', '116.23560427568', '36.851591084095', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371581, '临清市', 'L', '115.71146960045', '36.844289186694', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371702, '牡丹区', 'M', '115.42344303021', '35.257018176069', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371703, '定陶区', 'D', '115.57943737524', '35.077275179757', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371721, '曹县', 'C', '115.54845724362', '34.831809348415', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371722, '单县', 'D', '116.11158367799', '34.784658433692', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371723, '成武县', 'C', '115.89651900839', '34.95860565496', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371724, '巨野县', 'J', '116.10159901224', '35.402062380609', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371725, '郓城县', 'Y', '115.95045057629', '35.605902319687', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371726, '鄄城县', 'J', '115.51660692346', '35.569204259881', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371728, '东明县', 'D', '115.09641733473', '35.295701692411', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371771, '菏泽经济技术开发区', 'H', '115.48754503343', '35.239407424766', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371772, '菏泽高新技术开发区', 'H', '115.48754503343', '35.239407424766', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410102, '中原区', 'Z', '113.61947551694', '34.754450781329', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410103, '二七区', 'E', '113.63141920734', '34.753438850454', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410104, '管城回族区', 'G', '113.6835246998', '34.759673874699', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410105, '金水区', 'J', '113.6664477324', '34.806070445662', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410106, '上街区', 'S', '113.29818225705', '34.822088918243', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410108, '惠济区', 'H', '113.62345527984', '34.873519885776', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410122, '中牟县', 'Z', '113.98248490573', '34.725010848924', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410171, '郑州经济技术开发区', 'Z', '113.77162403642', '34.724610916832', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410172, '郑州高新技术产业开发区', 'Z', '113.63793722229', '34.742959870174', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410173, '郑州航空港经济综合实验区', 'Z', '113.97018898974', '34.719717969385', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410181, '巩义市', 'G', '113.02843100495', '34.754096888697', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410182, '荥阳市', 'X', '113.38942279956', '34.793810500346', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410183, '新密市', 'X', '113.3973909491', '34.545897983445', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410184, '新郑市', 'X', '113.74643447195', '34.401766379106', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410185, '登封市', 'D', '113.05642283346', '34.45969746172', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410202, '龙亭区', 'L', '114.36141316646', '34.822035612506', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410203, '顺河回族区', 'S', '114.36739165912', '34.802241355559', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410204, '鼓楼区', 'G', '114.35440485636', '34.794874251914', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410205, '禹王台区', 'Y', '114.35439775975', '34.783472105917', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410212, '祥符区', 'X', '114.4475325479', '34.762739572224', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410221, '杞县', 'Q', '114.78959210474', '34.554856780687', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410222, '通许县', 'T', '114.47343590593', '34.486771802655', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410223, '尉氏县', 'W', '114.19956115086', '34.417228010354', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410225, '兰考县', 'L', '114.82746071249', '34.828492897238', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410302, '老城区', 'L', '112.47650356572', '34.689601063497', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410303, '西工区', 'X', '112.43439953731', '34.666767847513', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410304, '瀍河回族区', 'C', '112.50660380709', '34.685462421335', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410305, '涧西区', 'J', '112.4025520019', '34.663468974309', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410306, '吉利区', 'J', '112.59547847119', '34.907012657115', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410311, '洛龙区', 'L', '112.47046928829', '34.624704713024', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410322, '孟津县', 'M', '112.45141766571', '34.831731570285', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410323, '新安县', 'X', '112.14060970841', '34.734383327344', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410324, '栾川县', 'L', '111.62242666651', '33.791822464323', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410325, '嵩县', 'S', '112.09240816187', '34.140721556406', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410326, '汝阳县', 'R', '112.47950327731', '34.159843364893', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410327, '宜阳县', 'Y', '112.17946537426', '34.541046942554', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410328, '洛宁县', 'L', '111.65958740952', '34.394984560215', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410329, '伊川县', 'Y', '112.43240745502', '34.427645796427', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410371, '洛阳高新技术产业开发区', 'L', '112.45942129831', '34.624262779219', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410381, '偃师市', 'Y', '112.79642141885', '34.733796624013', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410402, '新华区', 'X', '113.30043988965', '33.743657151646', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410403, '卫东区', 'W', '113.34161111761', '33.7403756514', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410404, '石龙区', 'S', '112.9054552264', '33.904754268397', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410411, '湛河区', 'Z', '113.25051467449', '33.685790171047', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410421, '宝丰县', 'B', '113.06144723584', '33.874745598631', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410422, '叶县', 'Y', '113.36358241276', '33.632491674058', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410423, '鲁山县', 'L', '112.91443396963', '33.744878863452', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410425, '郏县', 'J', '113.21960622765', '33.977486289177', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410471, '平顶山高新技术产业开发区', 'P', '113.40808986384', '33.737612151054', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410472, '平顶山市新城区', 'P', '113.19952856052', '33.772050748691', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410481, '舞钢市', 'W', '113.53141031593', '33.299431105301', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410482, '汝州市', 'R', '112.85054971566', '34.172767788551', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410502, '文峰区', 'W', '114.36337398772', '36.096832748136', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410503, '北关区', 'B', '114.36238189912', '36.113131607765', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410505, '殷都区', 'Y', '114.29712997501', '36.135573231517', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410506, '龙安区', 'L', '114.3075931681', '36.08275278362', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410522, '安阳县', 'A', '114.23838187262', '36.218906964196', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410523, '汤阴县', 'T', '114.36340938096', '35.927643740225', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410526, '滑县', 'H', '114.52555316619', '35.581045400558', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410527, '内黄县', 'N', '114.90758875551', '35.976949668061', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410571, '安阳高新技术产业开发区', 'A', '114.39950042177', '36.105940984015', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410581, '林州市', 'L', '113.82559018908', '36.088853208448', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410602, '鹤山区', 'H', '114.16955478242', '35.960280248227', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410603, '山城区', 'S', '114.19062058561', '35.903369613292', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410611, '淇滨区', 'Q', '114.30559120444', '35.746952546289', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410621, '浚县', 'J', '114.55760785086', '35.681917305913', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410622, '淇县', 'Q', '114.2154897245', '35.627277020336', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410671, '鹤壁经济技术开发区', 'H', '114.30359364248', '35.7523574114', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410702, '红旗区', 'H', '113.88141583415', '35.310135512691', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410703, '卫滨区', 'W', '113.8724387977', '35.308459209602', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410704, '凤泉区', 'F', '113.91245884715', '35.375665060578', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410711, '牧野区', 'M', '113.91551290623', '35.321023486499', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410721, '新乡县', 'X', '113.81159378076', '35.196564408993', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410724, '获嘉县', 'H', '113.66341666994', '35.265809284161', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410725, '原阳县', 'Y', '113.94662374129', '35.071163864469', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410726, '延津县', 'Y', '114.21151175821', '35.147806510509', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410727, '封丘县', 'F', '114.42560616803', '35.046857531651', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410728, '长垣县', 'Z', '114.67560989146', '35.207198224565', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410771, '新乡高新技术产业开发区', 'X', '113.89511589149', '35.288196248852', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410772, '新乡经济技术开发区', 'X', '113.93360046733', '35.309639930337', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410773, '新乡市平原城乡一体化示范区', 'X', '113.93360046733', '35.309639930337', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410781, '卫辉市', 'W', '114.07160094452', '35.404068882145', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410782, '辉县市', 'H', '113.81157302991', '35.467957818376', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410802, '解放区', 'J', '113.23757179887', '35.246309807633', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410803, '中站区', 'Z', '113.18944759643', '35.242617103591', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410804, '马村区', 'M', '113.32854400634', '35.261894441723', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410811, '山阳区', 'S', '113.26048370971', '35.220272352977', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410821, '修武县', 'X', '113.45458192871', '35.229323482594', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410822, '博爱县', 'B', '113.07047799096', '35.177308063756', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410823, '武陟县', 'W', '113.40839582041', '35.105838449217', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410825, '温县', 'W', '113.08656906807', '34.946135492247', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410871, '焦作城乡一体化示范区', 'J', '113.24854783457', '35.220963254039', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410882, '沁阳市', 'Q', '112.95751688155', '35.093785732346', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410883, '孟州市', 'M', '112.79739491254', '34.913597817886', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410902, '华龙区', 'H', '115.0804129441', '35.783632884536', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410922, '清丰县', 'Q', '115.11047186341', '35.891308168277', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410923, '南乐县', 'N', '115.21138615695', '36.076030832875', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410926, '范县', 'F', '115.51058621044', '35.857655087719', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410927, '台前县', 'T', '115.87856816938', '35.975012712521', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410928, '濮阳县', 'P', '115.03558408559', '35.717888889375', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410971, '河南濮阳工业园区', 'H', '115.03559747034', '35.767593028906', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410972, '濮阳经济技术开发区', 'P', '115.03559747034', '35.767593028906', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411002, '魏都区', 'W', '113.82959564352', '34.030861228003', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411003, '建安区', 'J', '113.82961513675', '34.129966976383', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411024, '鄢陵县', 'Y', '114.18561980866', '34.107963250311', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411025, '襄城县', 'X', '113.51343127013', '33.856967773678', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411071, '许昌经济技术开发区', 'X', '113.81237629469', '34.009184251036', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411081, '禹州市', 'Y', '113.49550522436', '34.146082195029', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411082, '长葛市', 'Z', '113.77442091063', '34.223016266284', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411102, '源汇区', 'Y', '113.99041352982', '33.578423262447', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411103, '郾城区', 'Y', '114.01339389154', '33.593415880865', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411104, '召陵区', 'Z', '114.1004665548', '33.592467538561', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411121, '舞阳县', 'W', '113.61549000488', '33.443577799934', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411122, '临颍县', 'L', '113.93757834379', '33.83269194793', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411171, '漯河经济技术开发区', 'L', '114.02342077765', '33.587710707102', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411202, '湖滨区', 'H', '111.19557389665', '34.775996792444', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411203, '陕州区', 'S', '111.10945065249', '34.726914801527', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411221, '渑池县', 'M', '111.76854234585', '34.773197042986', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411224, '卢氏县', 'L', '111.05456400617', '34.059924845299', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411271, '河南三门峡经济开发区', 'H', '111.16756986287', '34.791595599754', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411281, '义马市', 'Y', '111.88051478021', '34.753028009473', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411282, '灵宝市', 'L', '110.90040831286', '34.523142624164', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411302, '宛城区', 'W', '112.54645416663', '33.009870040626', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411303, '卧龙区', 'W', '112.54146183376', '32.992483797527', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411321, '南召县', 'N', '112.43542522255', '33.496185804625', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411322, '方城县', 'F', '113.0185027528', '33.260539455832', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411323, '西峡县', 'X', '111.48039809758', '33.313316115292', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411324, '镇平县', 'Z', '112.24154448331', '33.039718529225', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411325, '内乡县', 'N', '111.85542528697', '33.051203105476', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411326, '淅川县', 'X', '111.49743203615', '33.144185260027', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411327, '社旗县', 'S', '112.9544934547', '33.062236685935', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411328, '唐河县', 'T', '112.81342436589', '32.687720660005', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411329, '新野县', 'X', '112.36654962384', '32.526631778818', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411330, '桐柏县', 'T', '113.43447273106', '32.385130754956', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411371, '南阳高新技术产业开发区', 'N', '112.53450131351', '32.996562204651', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411372, '南阳市城乡一体化示范区', 'N', '112.53450131351', '32.996562204651', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411381, '邓州市', 'D', '112.09342010302', '32.69391743997', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411402, '梁园区', 'L', '115.62060204557', '34.449471246294', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411403, '睢阳区', 'S', '115.65947594702', '34.394151920479', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411421, '民权县', 'M', '115.15457605887', '34.652478726537', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411422, '睢县', 'S', '115.07841089061', '34.451616965409', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411423, '宁陵县', 'N', '115.32041843737', '34.46663402766', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411424, '柘城县', 'Z', '115.31243456749', '34.097360212415', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411425, '虞城县', 'Y', '115.83447295698', '34.405331502097', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411426, '夏邑县', 'X', '116.13751236823', '34.243523472378', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411471, '豫东综合物流产业聚集区', 'Y', '115.66244933826', '34.420201665859', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411472, '河南商丘经济开发区', 'H', '115.69827951116', '34.407726159442', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411481, '永城市', 'Y', '116.4555661476', '33.934801475851', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411502, '浉河区', 'S', '114.06558130947', '32.122554156884', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411503, '平桥区', 'P', '114.13240742415', '32.10732538611', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411521, '罗山县', 'L', '114.51952993791', '32.209150451838', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411522, '光山县', 'G', '114.92553303688', '32.015906879568', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411523, '新县', 'X', '114.88552475523', '31.649738468475', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411524, '商城县', 'S', '115.41351334076', '31.804345366903', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411525, '固始县', 'G', '115.66048788818', '32.174174379622', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411526, '潢川县', 'H', '115.05847075405', '32.137530716414', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411527, '淮滨县', 'H', '115.42643896891', '32.479469756663', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411528, '息县', 'X', '114.74745313225', '32.348955511715', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411571, '信阳高新技术产业开发区', 'X', '114.09748283305', '32.153014547531', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411602, '川汇区', 'C', '114.65760174056', '33.652997102814', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411621, '扶沟县', 'F', '114.40150984137', '34.065906253969', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411622, '西华县', 'X', '114.53559667094', '33.773215334922', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411623, '商水县', 'S', '114.61841594744', '33.548877475353', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411624, '沈丘县', 'S', '115.10545545595', '33.415691094059', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411625, '郸城县', 'D', '115.18347760136', '33.650827955049', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411626, '淮阳县', 'H', '114.89258615519', '33.737347183458', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411627, '太康县', 'T', '114.84438389', '34.070038382248', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411628, '鹿邑县', 'L', '115.4905852586', '33.867173290317', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411671, '河南周口经济开发区', 'H', '114.70348251482', '33.631828875702', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411681, '项城市', 'X', '114.88151400079', '33.47300744143', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411702, '驿城区', 'Y', '114.00038696674', '32.979519871982', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411721, '西平县', 'X', '114.02747357279', '33.393860997525', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411722, '上蔡县', 'S', '114.2704868624', '33.268511215884', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411723, '平舆县', 'P', '114.62542865923', '32.967982400438', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411724, '正阳县', 'Z', '114.39949655906', '32.611641077273', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411725, '确山县', 'Q', '114.03249501076', '32.808175692984', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411726, '泌阳县', 'M', '113.33355798837', '32.729730650435', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411727, '汝南县', 'R', '114.36940889397', '33.013140881992', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411728, '遂平县', 'S', '114.0194414639', '33.151971399579', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411729, '新蔡县', 'X', '114.99246928382', '32.755268867306', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411771, '河南驻马店经济开发区', 'H', '114.02847078173', '33.017842416744', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(419001, '济源市', 'J', '112.60858070621', '35.072907226847', 419000, 3, 'tr_0 tr_410000 tr_419000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420102, '江岸区', 'J', '114.31657918761', '30.605402797562', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420103, '江汉区', 'J', '114.27750613182', '30.607282276827', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420104, '硚口区', 'Q', '114.22146031207', '30.587584340776', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420105, '汉阳区', 'H', '114.22544555464', '30.560052027443', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420106, '武昌区', 'W', '114.35362228468', '30.564860292785', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420107, '青山区', 'Q', '114.39149265697', '30.646593075543', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420111, '洪山区', 'H', '114.35045554602', '30.506333956808', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420112, '东西湖区', 'D', '114.14345873786', '30.625919818109', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420113, '汉南区', 'H', '114.09151485056', '30.314809120145', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420114, '蔡甸区', 'C', '114.03547963081', '30.588113621855', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420115, '江夏区', 'J', '114.32855126446', '30.381564218182', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420116, '黄陂区', 'H', '114.38245399676', '30.887533767835', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420117, '新洲区', 'X', '114.8075433929', '30.847243870523', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420202, '黄石港区', 'H', '115.07241748608', '30.229052639992', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420203, '西塞山区', 'X', '115.11648143744', '30.210695184118', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420204, '下陆区', 'X', '114.96741590247', '30.180046155273', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO `hg_sys_provinces` (`id`, `title`, `pinyin`, `lng`, `lat`, `pid`, `level`, `tree`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(420205, '铁山区', 'T', '114.90757141821', '30.212250832587', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420222, '阳新县', 'Y', '115.22142677197', '29.836541808086', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420281, '大冶市', 'D', '114.98643626402', '30.101667800103', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420302, '茅箭区', 'M', '110.81958031019', '32.597286519104', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420303, '张湾区', 'Z', '110.77542410285', '32.65839954548', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420304, '郧阳区', 'Y', '110.81857654362', '32.840592413038', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420322, '郧西县', 'Y', '110.43247261847', '32.999167007536', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420323, '竹山县', 'Z', '110.23558156764', '32.230304060376', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420324, '竹溪县', 'Z', '109.72154249889', '32.324120048853', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420325, '房县', 'F', '110.74746155911', '32.061684964544', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420381, '丹江口市', 'D', '111.51953205848', '32.546252688501', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420502, '西陵区', 'X', '111.29255972053', '30.716749346598', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420503, '伍家岗区', 'W', '111.36742225597', '30.65073733526', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420504, '点军区', 'D', '111.27447135095', '30.69932951388', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420505, '猇亭区', 'X', '111.44157378259', '30.536465982707', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420506, '夷陵区', 'Y', '111.33252973436', '30.774833327298', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420525, '远安县', 'Y', '111.64653035927', '31.066627841578', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420526, '兴山县', 'X', '110.75344607041', '31.354463517716', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420527, '秭归县', 'Z', '110.98444937468', '30.831931643216', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420528, '长阳土家族自治县', 'Z', '111.21350712887', '30.478645783056', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420529, '五峰土家族自治县', 'W', '111.05258063744', '30.171156151026', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420581, '宜都市', 'Y', '111.45651583712', '30.384404274314', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420582, '当阳市', 'D', '111.79456850223', '30.826989050281', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420583, '枝江市', 'Z', '111.76653975337', '30.431730676998', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420602, '襄城区', 'X', '112.14057206941', '32.016174618141', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420606, '樊城区', 'F', '112.14259891613', '32.050572374692', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420607, '襄州区', 'X', '112.21843413678', '32.093375783399', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420624, '南漳县', 'N', '111.84538618392', '31.781129706779', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420625, '谷城县', 'G', '111.65957564172', '32.268983068947', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420626, '保康县', 'B', '111.26744121203', '31.883847150262', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420682, '老河口市', 'L', '111.68155636908', '32.392459585271', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420683, '枣阳市', 'Z', '112.77847075951', '32.134729914319', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420684, '宜城市', 'Y', '112.26461144169', '31.725469730972', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420702, '梁子湖区', 'L', '114.69150657526', '30.105906774051', 420700, 3, 'tr_0 tr_420000 tr_420700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420703, '华容区', 'H', '114.73642634228', '30.540599527838', 420700, 3, 'tr_0 tr_420000 tr_420700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420704, '鄂城区', 'E', '114.89859968176', '30.406389456292', 420700, 3, 'tr_0 tr_420000 tr_420700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420802, '东宝区', 'D', '112.2083882066', '31.058429271365', 420800, 3, 'tr_0 tr_420000 tr_420800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420804, '掇刀区', 'D', '112.2144276942', '30.979910859804', 420800, 3, 'tr_0 tr_420000 tr_420800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420822, '沙洋县', 'S', '112.59548493899', '30.715314748831', 420800, 3, 'tr_0 tr_420000 tr_420800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420881, '钟祥市', 'Z', '112.59447102156', '31.174029854963', 420800, 3, 'tr_0 tr_420000 tr_420800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420882, '京山市', 'J', '113.12654806496', '31.024330601193', 420800, 3, 'tr_0 tr_420000 tr_420800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420902, '孝南区', 'X', '113.91748989699', '30.922977925049', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420921, '孝昌县', 'X', '114.00440859068', '31.264540493062', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420922, '大悟县', 'D', '114.13341253819', '31.567219806641', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420923, '云梦县', 'Y', '113.75941220183', '31.027218220752', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420981, '应城市', 'Y', '113.57956739635', '30.933976509913', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420982, '安陆市', 'A', '113.69558292415', '31.261414994286', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420984, '汉川市', 'H', '113.8455490104', '30.666913578821', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421002, '沙市区', 'S', '112.26157741483', '30.316571904872', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421003, '荆州区', 'J', '112.19641397381', '30.358989490775', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421022, '公安县', 'G', '112.23650157584', '30.064400686806', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421023, '监利县', 'J', '112.91142023009', '29.845735162836', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421024, '江陵县', 'J', '112.43145201728', '30.048042984592', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421071, '荆州经济技术开发区', 'J', '112.19641397381', '30.358989490775', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421081, '石首市', 'S', '112.43141984371', '29.727033977407', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421083, '洪湖市', 'H', '113.48255290196', '29.83277032976', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421087, '松滋市', 'S', '111.77358031264', '30.175342235143', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421102, '黄州区', 'H', '114.88653238452', '30.440224145146', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421121, '团风县', 'T', '114.87852435023', '30.649367767215', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421122, '红安县', 'H', '114.6244256113', '31.294296714037', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421123, '罗田县', 'L', '115.4055471675', '30.788910495685', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421124, '英山县', 'Y', '115.68742160263', '30.741350084085', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421125, '浠水县', 'X', '115.27156903289', '30.457460842265', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421126, '蕲春县', 'Q', '115.4423985341', '30.232535499734', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421127, '黄梅县', 'H', '115.95046198477', '30.076605056821', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421171, '龙感湖管理区', 'L', '116.01030250647', '29.879697031911', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421181, '麻城市', 'M', '115.01656174777', '31.176995837411', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421182, '武穴市', 'W', '115.56739216105', '29.850441430483', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421202, '咸安区', 'X', '114.30456990606', '29.858153915154', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421221, '嘉鱼县', 'J', '113.94557046336', '29.976353520898', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421222, '通城县', 'T', '113.82356790903', '29.250857930222', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421223, '崇阳县', 'C', '114.04656290943', '29.561333782271', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421224, '通山县', 'T', '114.48939330027', '29.612634338058', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421281, '赤壁市', 'C', '113.90643686179', '29.730665997526', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421303, '曾都区', 'C', '113.3775133346', '31.722122861271', 421300, 3, 'tr_0 tr_420000 tr_421300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421321, '随县', 'S', '113.3064583569', '31.859971678258', 421300, 3, 'tr_0 tr_420000 tr_421300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421381, '广水市', 'G', '113.83259337884', '31.622476038007', 421300, 3, 'tr_0 tr_420000 tr_421300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422801, '恩施市', 'E', '109.48655026901', '30.301037143741', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422802, '利川市', 'L', '108.94248057756', '30.29720344368', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422822, '建始县', 'J', '109.72855610899', '30.607907026319', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422823, '巴东县', 'B', '110.34757529184', '31.04806424896', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422825, '宣恩县', 'X', '109.49756797283', '29.99260392208', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422826, '咸丰县', 'X', '109.14660773562', '29.671077652358', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422827, '来凤县', 'L', '109.41349484153', '29.499443572607', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422828, '鹤峰县', 'H', '110.04042423301', '29.896116483403', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(429004, '仙桃市', 'X', '113.46159059813', '30.368271921725', 429000, 3, 'tr_0 tr_420000 tr_429000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(429005, '潜江市', 'Q', '112.90547409082', '30.408357932419', 429000, 3, 'tr_0 tr_420000 tr_429000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(429006, '天门市', 'T', '113.17240916633', '30.669621830099', 429000, 3, 'tr_0 tr_420000 tr_429000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(429021, '神农架林区', 'S', '110.6825248504', '31.750496011246', 429000, 3, 'tr_0 tr_420000 tr_429000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371602, '滨城区', 'B', '118.02660385061', '37.436843207744', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371603, '沾化区', 'Z', '118.10545441336', '37.705298106724', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371621, '惠民县', 'H', '117.5165096905', '37.49580310894', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371622, '阳信县', 'Y', '117.58443703791', '37.647338034957', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371623, '无棣县', 'W', '117.63245748606', '37.777567312086', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371625, '博兴县', 'B', '118.11749269533', '37.160477277651', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371681, '邹平市', 'Z', '117.74947848722', '36.870032216697', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430202, '荷塘区', 'H', '113.18045222007', '27.862155809141', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430203, '芦淞区', 'L', '113.15841867236', '27.791508825947', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430204, '石峰区', 'S', '113.12456791567', '27.880705165595', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430211, '天元区', 'T', '113.08954055842', '27.833083519485', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430212, '渌口区', 'L', '113.15042671773', '27.704322804857', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430223, '攸县', 'Y', '113.35157834169', '27.005771565213', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430224, '茶陵县', 'C', '113.54547165714', '26.78358911036', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430225, '炎陵县', 'Y', '113.77941879832', '26.496060691599', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430271, '云龙示范区', 'Y', '113.17446420357', '27.934854931886', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430281, '醴陵市', 'L', '113.50348315084', '27.652325149951', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430302, '雨湖区', 'Y', '112.91344959207', '27.862466785111', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430304, '岳塘区', 'Y', '112.97558942655', '27.877720506364', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430321, '湘潭县', 'X', '112.95750536884', '27.784982534656', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430371, '湖南湘潭高新技术产业园区', 'H', '112.95046418076', '27.835702227136', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430372, '湘潭昭山示范区', 'X', '113.01812844052', '27.97161027839', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430373, '湘潭九华示范区', 'X', '112.94707945543', '27.916546191684', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430381, '湘乡市', 'X', '112.54149155341', '27.740190553344', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430382, '韶山市', 'S', '112.53349932929', '27.921043749631', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430405, '珠晖区', 'Z', '112.62659414282', '26.900265361946', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430406, '雁峰区', 'Y', '112.62358823292', '26.89436829036', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430407, '石鼓区', 'S', '112.60452969339', '26.948961867165', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430408, '蒸湘区', 'Z', '112.57344401089', '26.917719877877', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430412, '南岳区', 'N', '112.74557434825', '27.238360474562', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430421, '衡阳县', 'H', '112.37755268433', '26.975294950861', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430422, '衡南县', 'H', '112.68440252779', '26.744531956772', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430423, '衡山县', 'H', '112.87556328771', '27.235996029656', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430424, '衡东县', 'H', '112.95949529521', '27.087042820265', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430426, '祁东县', 'Q', '112.09644737847', '26.805995255191', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430471, '衡阳综合保税区', 'H', '112.57844721326', '26.899576139189', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430472, '湖南衡阳高新技术产业园区', 'H', '112.57844721326', '26.899576139189', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430473, '湖南衡阳松木经济开发区', 'H', '112.57844721326', '26.899576139189', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430481, '耒阳市', 'L', '112.86659721058', '26.428065593928', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430482, '常宁市', 'C', '112.40556050266', '26.426720432257', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430502, '双清区', 'S', '111.50344150643', '27.239108783297', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430503, '大祥区', 'D', '111.44552828921', '27.227013968694', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430511, '北塔区', 'B', '111.45849694619', '27.251536276174', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430521, '邵东县', 'S', '111.75049070296', '27.264507471566', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430522, '新邵县', 'X', '111.46444938799', '27.32713173916', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430523, '邵阳县', 'S', '111.28050768064', '26.996528332196', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430524, '隆回县', 'L', '111.03950668528', '27.119946440019', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430525, '洞口县', 'D', '110.58257909625', '27.065975437799', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430527, '绥宁县', 'S', '110.16241987038', '26.588422719333', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430528, '新宁县', 'X', '110.86349072744', '26.439723697954', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430529, '城步苗族自治县', 'C', '110.32853713032', '26.396203220078', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430581, '武冈市', 'W', '110.63840761588', '26.732898572992', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430602, '岳阳楼区', 'Y', '113.13648070435', '29.377995036881', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430603, '云溪区', 'Y', '113.27840659691', '29.479907141133', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430611, '君山区', 'J', '113.0125171491', '29.467129185832', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430621, '岳阳县', 'Y', '113.1225444825', '29.150269316045', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430623, '华容县', 'H', '112.54746151216', '29.536286434382', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430624, '湘阴县', 'X', '112.88952187736', '28.676676377581', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430626, '平江县', 'P', '113.58760362284', '28.707564248115', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430671, '岳阳市屈原管理区', 'Y', '112.92259003029', '28.866288191728', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430681, '汨罗市', 'M', '113.07349286947', '28.812454694812', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430682, '临湘市', 'L', '113.45656151', '29.482801373395', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430702, '武陵区', 'W', '111.68954489616', '29.060783476578', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430703, '鼎城区', 'D', '111.68752209182', '29.024443397066', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430721, '安乡县', 'A', '112.1775061558', '29.41732043222', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430722, '汉寿县', 'H', '111.97641193356', '28.912287603085', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430723, '澧县', 'L', '111.76553354736', '29.638946004609', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430724, '临澧县', 'L', '111.65358500797', '29.446543990119', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430725, '桃源县', 'T', '111.49540733145', '28.908694006999', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430726, '石门县', 'S', '111.38645140702', '29.59036596665', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430771, '常德市西洞庭管理区', 'C', '112.0093067782', '29.197804478833', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430781, '津市市', 'J', '111.88451734602', '29.611258543007', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430802, '永定区', 'Y', '110.54443192397', '29.126190558381', 430800, 3, 'tr_0 tr_430000 tr_430800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430811, '武陵源区', 'W', '110.5574989454', '29.351681136671', 430800, 3, 'tr_0 tr_430000 tr_430800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430821, '慈利县', 'C', '111.14547125235', '29.435986725969', 430800, 3, 'tr_0 tr_430000 tr_430800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430822, '桑植县', 'S', '110.17041335213', '29.405923219415', 430800, 3, 'tr_0 tr_430000 tr_430800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430902, '资阳区', 'Z', '112.33043548238', '28.597234549737', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430903, '赫山区', 'H', '112.38059794001', '28.584983567573', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430921, '南县', 'N', '112.40254156734', '29.367069853363', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430922, '桃江县', 'T', '112.16254146398', '28.523870869898', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430923, '安化县', 'A', '111.21949270432', '28.380053748765', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430971, '益阳市大通湖管理区', 'Y', '112.65023278281', '29.193681230112', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430972, '湖南益阳高新技术产业园区', 'H', '112.3715604476', '28.816150235875', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430981, '沅江市', 'Y', '112.36053222035', '28.850233588583', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431002, '北湖区', 'B', '113.01748199382', '25.79081459434', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431003, '苏仙区', 'S', '113.04842340846', '25.806737374104', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431021, '桂阳县', 'G', '112.74056036622', '25.759775327893', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431022, '宜章县', 'Y', '112.95547924076', '25.405713969356', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431023, '永兴县', 'Y', '113.12253316386', '26.132968478533', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431024, '嘉禾县', 'J', '112.37558377831', '25.593421718268', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431025, '临武县', 'L', '112.57041115183', '25.282527010969', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431026, '汝城县', 'R', '113.69154466692', '25.556056733978', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431027, '桂东县', 'G', '113.9515936018', '26.083173927327', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431028, '安仁县', 'A', '113.27542359381', '26.715682788508', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431081, '资兴市', 'Z', '113.24255612233', '25.981873602722', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431102, '零陵区', 'L', '111.63750237493', '26.227682089779', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431103, '冷水滩区', 'L', '111.59842608526', '26.467705510832', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431121, '祁阳县', 'Q', '111.84742029288', '26.586434994948', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431122, '东安县', 'D', '111.32354235354', '26.398288039365', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431123, '双牌县', 'S', '111.6675938129', '25.967169239803', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431124, '道县', 'D', '111.60740437934', '25.53252996283', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431125, '江永县', 'J', '111.35043663236', '25.279720667918', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431126, '宁远县', 'N', '111.95245340697', '25.57705193746', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431127, '蓝山县', 'L', '112.20343493586', '25.37593472464', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431128, '新田县', 'X', '112.21040920018', '25.909825802754', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431129, '江华瑶族自治县', 'J', '111.58545203845', '25.191348924015', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431171, '永州经济技术开发区', 'Y', '111.61945505792', '26.4258641179', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431172, '永州市金洞管理区', 'Y', '112.09909809837', '26.297256941493', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431173, '永州市回龙圩管理区', 'Y', '111.35307783022', '25.173038319623', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431202, '鹤城区', 'H', '110.04639994092', '27.585225763164', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431221, '中方县', 'Z', '109.95146189432', '27.44608117406', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431222, '沅陵县', 'Y', '110.40043076602', '28.459018102626', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431223, '辰溪县', 'C', '110.19048661755', '28.012605313813', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431224, '溆浦县', 'X', '110.60155112895', '27.913963373886', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431225, '会同县', 'H', '109.74158556792', '26.893383817274', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431226, '麻阳苗族自治县', 'M', '109.80943628984', '27.87193016295', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431227, '新晃侗族自治县', 'X', '109.18147151144', '27.358782968573', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431228, '芷江侗族自治县', 'Z', '109.6914022696', '27.449513277765', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431229, '靖州苗族侗族自治县', 'J', '109.70245160703', '26.581321351066', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431230, '通道侗族自治县', 'T', '109.79044548256', '26.164219864712', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431271, '怀化市洪江管理区', 'H', '109.8435098263', '27.215077093932', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431281, '洪江市', 'H', '109.8435098263', '27.215077093932', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431302, '娄星区', 'L', '112.00855842504', '27.735604842109', 431300, 3, 'tr_0 tr_430000 tr_431300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431321, '双峰县', 'S', '112.18146049666', '27.462982658573', 431300, 3, 'tr_0 tr_430000 tr_431300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431322, '新化县', 'X', '111.334515335', '27.732666751066', 431300, 3, 'tr_0 tr_430000 tr_431300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431381, '冷水江市', 'L', '111.44153972291', '27.692058848958', 431300, 3, 'tr_0 tr_430000 tr_431300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431382, '涟源市', 'L', '111.67056199396', '27.698167532255', 431300, 3, 'tr_0 tr_430000 tr_431300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433101, '吉首市', 'J', '109.70444880967', '28.267493127593', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433122, '泸溪县', 'L', '110.22659921769', '28.221873097569', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433123, '凤凰县', 'F', '109.6055266883', '27.953847809726', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433124, '花垣县', 'H', '109.48856183128', '28.577909934397', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433125, '保靖县', 'B', '109.66647357306', '28.705968872486', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433126, '古丈县', 'G', '109.95750740057', '28.623083527843', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433127, '永顺县', 'Y', '109.86358578665', '28.985774485682', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433130, '龙山县', 'L', '109.45041573696', '29.464121765857', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433172, '湖南吉首经济开发区', 'H', '109.70444880967', '28.267493127593', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433173, '湖南永顺经济开发区', 'H', '109.86358578665', '28.985774485682', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440103, '荔湾区', 'L', '113.25050226337', '23.131791134975', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440104, '越秀区', 'Y', '113.273426481', '23.135260120148', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440105, '海珠区', 'H', '113.32353998097', '23.088981296648', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440106, '天河区', 'T', '113.36850942428', '23.130357835105', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440111, '白云区', 'B', '113.27943309062', '23.164316834456', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440112, '黄埔区', 'H', '113.48707083969', '23.187491541425', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440113, '番禺区', 'F', '113.39046958043', '22.943830731518', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440114, '花都区', 'H', '113.22657580629', '23.411161504876', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440115, '南沙区', 'N', '113.53143554372', '22.807929296528', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440117, '从化区', 'C', '113.59358543922', '23.553985922578', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440118, '增城区', 'Z', '113.8175456689', '23.266592400631', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440203, '武江区', 'W', '113.59455578884', '24.798486030733', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440204, '浈江区', 'Z', '113.61747740137', '24.810413749784', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440205, '曲江区', 'Q', '113.61150106465', '24.68840784638', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440222, '始兴县', 'S', '114.06856735205', '24.958558154346', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440224, '仁化县', 'R', '113.75544293443', '25.092287524428', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440229, '翁源县', 'W', '114.13642723669', '24.356594490867', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440232, '乳源瑶族自治县', 'R', '113.28243136492', '24.782333322942', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440233, '新丰县', 'X', '114.21351173078', '24.065546505164', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440281, '乐昌市', 'L', '113.3545786821', '25.135591561195', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440282, '南雄市', 'N', '114.31857889065', '25.123526537362', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440303, '罗湖区', 'L', '114.13743190157', '22.554484875856', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440304, '福田区', 'F', '114.06154700466', '22.528465912072', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440305, '南山区', 'N', '113.93653916925', '22.538500195784', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440306, '宝安区', 'B', '113.89042744066', '22.560032908925', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440307, '龙岗区', 'L', '114.25445487896', '22.726016550781', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440308, '盐田区', 'Y', '114.2434301551', '22.563437914836', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440309, '龙华区', 'L', '114.04852876121', '22.757596649222', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440310, '坪山区', 'P', '114.35047403625', '22.716233464749', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440311, '光明区', 'G', '113.94256006193', '22.754465883635', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440402, '香洲区', 'X', '113.55047243408', '22.273003861799', 440400, 3, 'tr_0 tr_440000 tr_440400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440403, '斗门区', 'D', '113.30346725453', '22.215515662229', 440400, 3, 'tr_0 tr_440000 tr_440400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440404, '金湾区', 'J', '113.36951705357', '22.152576780675', 440400, 3, 'tr_0 tr_440000 tr_440400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440507, '龙湖区', 'L', '116.72352464693', '23.377775780628', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440511, '金平区', 'J', '116.70955006744', '23.371750385773', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440512, '濠江区', 'H', '116.73351658895', '23.291546359757', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440513, '潮阳区', 'C', '116.6085145027', '23.270854956943', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440514, '潮南区', 'C', '116.43949131427', '23.256341432673', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440515, '澄海区', 'C', '116.76242504839', '23.472341401523', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440523, '南澳县', 'N', '117.03049603113', '23.427812045946', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440604, '禅城区', 'C', '113.12950518241', '23.015374368816', 440600, 3, 'tr_0 tr_440000 tr_440600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440605, '南海区', 'N', '113.14944567828', '23.035011446003', 440600, 3, 'tr_0 tr_440000 tr_440600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440606, '顺德区', 'S', '113.30045343954', '22.810453426795', 440600, 3, 'tr_0 tr_440000 tr_440600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440607, '三水区', 'S', '112.90347085515', '23.161920493984', 440600, 3, 'tr_0 tr_440000 tr_440600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440608, '高明区', 'G', '112.89947240749', '22.90634960163', 440600, 3, 'tr_0 tr_440000 tr_440600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440703, '蓬江区', 'P', '113.08454642894', '22.601065786023', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440704, '江海区', 'J', '113.11755718015', '22.566115451824', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440705, '新会区', 'X', '113.03845482239', '22.46511306052', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440781, '台山市', 'T', '112.80044482505', '22.257923470251', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440783, '开平市', 'K', '112.70446429491', '22.382499490201', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440784, '鹤山市', 'H', '112.97052666653', '22.771169431377', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440785, '恩平市', 'E', '112.31143757848', '22.189035201534', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440802, '赤坎区', 'C', '110.37253254096', '21.272134812703', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440803, '霞山区', 'X', '110.40442535096', '21.198227185303', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440804, '坡头区', 'P', '110.46256709711', '21.250376738599', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440811, '麻章区', 'M', '110.34057918516', '21.269188766567', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440823, '遂溪县', 'S', '110.25651530642', '21.383102962029', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440825, '徐闻县', 'X', '110.18247274427', '20.331723686702', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440881, '廉江市', 'L', '110.29244770646', '21.615816495305', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440882, '雷州市', 'L', '110.10258050648', '20.919880592716', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440883, '吴川市', 'W', '110.78645034015', '21.447262768557', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440902, '茂南区', 'M', '110.92554576188', '21.647152082304', 440900, 3, 'tr_0 tr_440000 tr_440900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440904, '电白区', 'D', '111.02047123221', '21.520351188198', 440900, 3, 'tr_0 tr_440000 tr_440900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440981, '高州市', 'G', '110.85947386452', '21.924048896771', 440900, 3, 'tr_0 tr_440000 tr_440900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440982, '化州市', 'H', '110.6464310112', '21.67023109387', 440900, 3, 'tr_0 tr_440000 tr_440900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440983, '信宜市', 'X', '110.95358169717', '22.36009314173', 440900, 3, 'tr_0 tr_440000 tr_440900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441202, '端州区', 'D', '112.49156022979', '23.057563726176', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441203, '鼎湖区', 'D', '112.57443448255', '23.164308112716', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441204, '高要区', 'G', '112.46444604577', '23.031895546866', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441223, '广宁县', 'G', '112.44742387501', '23.641035726333', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441224, '怀集县', 'H', '112.19146878783', '23.917842129185', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441225, '封开县', 'F', '111.51852585255', '23.429768921261', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441226, '德庆县', 'D', '111.79155377493', '23.15137330611', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441284, '四会市', 'S', '112.7405791408', '23.332381005175', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441302, '惠城区', 'H', '114.38949004962', '23.089725972544', 441300, 3, 'tr_0 tr_440000 tr_441300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441303, '惠阳区', 'H', '114.46346443037', '22.794720878571', 441300, 3, 'tr_0 tr_440000 tr_441300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441322, '博罗县', 'B', '114.29657265143', '23.178805592433', 441300, 3, 'tr_0 tr_440000 tr_441300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441323, '惠东县', 'H', '114.72642585138', '22.991443112002', 441300, 3, 'tr_0 tr_440000 tr_441300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441324, '龙门县', 'L', '114.26143022124', '23.733838340062', 441300, 3, 'tr_0 tr_440000 tr_441300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441402, '梅江区', 'M', '116.12353597667', '24.315878769038', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441403, '梅县区', 'M', '116.08856170928', '24.270999314695', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441422, '大埔县', 'D', '116.70155892129', '24.353459468582', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441423, '丰顺县', 'F', '116.18845382094', '23.745738303255', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441424, '五华县', 'W', '115.78248548653', '23.938408899571', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441426, '平远县', 'P', '115.89747694601', '24.572414126137', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441427, '蕉岭县', 'J', '116.17743924793', '24.664992548662', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441481, '兴宁市', 'X', '115.73757946359', '24.142293779322', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441502, '城区', 'C', '115.37153074806', '22.784551839489', 441500, 3, 'tr_0 tr_440000 tr_441500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441521, '海丰县', 'H', '115.32944477561', '22.972744260966', 441500, 3, 'tr_0 tr_440000 tr_441500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441523, '陆河县', 'L', '115.66648271471', '23.30767707649', 441500, 3, 'tr_0 tr_440000 tr_441500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441581, '陆丰市', 'L', '115.78802975191', '22.967876723873', 441500, 3, 'tr_0 tr_440000 tr_441500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441602, '源城区', 'Y', '114.70843899033', '23.740298338347', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441621, '紫金县', 'Z', '115.19044771834', '23.641430253189', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441622, '龙川县', 'L', '115.26655548485', '24.105850721955', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441623, '连平县', 'L', '114.49544419635', '24.375808067414', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441624, '和平县', 'H', '114.9454488143', '24.448252767689', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441625, '东源县', 'D', '114.7535083252', '23.794257873114', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441702, '江城区', 'J', '111.96145451801', '21.868127886755', 441700, 3, 'tr_0 tr_440000 tr_441700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441704, '阳东区', 'Y', '112.01857947215', '21.873996844319', 441700, 3, 'tr_0 tr_440000 tr_441700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441721, '阳西县', 'Y', '111.62448107725', '21.758700627505', 441700, 3, 'tr_0 tr_440000 tr_441700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441781, '阳春市', 'Y', '111.7975361303', '22.17601480732', 441700, 3, 'tr_0 tr_440000 tr_441700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441802, '清城区', 'Q', '113.06947663537', '23.704022037925', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441803, '清新区', 'Q', '112.99155779512', '23.754270337093', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441821, '佛冈县', 'F', '113.53844124873', '23.885475421111', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441823, '阳山县', 'Y', '112.64751954085', '24.47094363588', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO `hg_sys_provinces` (`id`, `title`, `pinyin`, `lng`, `lat`, `pid`, `level`, `tree`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(441825, '连山壮族瑶族自治县', 'L', '112.10042570409', '24.576845604093', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441826, '连南瑶族自治县', 'L', '112.29351728187', '24.73154858148', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441881, '英德市', 'Y', '113.42144297474', '24.191939355217', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441882, '连州市', 'L', '112.38357258887', '24.786466855047', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900003, '东城街道办事处', 'D', '113.78961542643', '23.033927867022', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900004, '南城街道办事处', 'N', '113.74972154669', '23.02491560037', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900005, '万江街道办事处', 'W', '113.70128466119', '23.044382337638', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900006, '莞城街道办事处', 'G', '113.7555643548', '23.04532373021', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900101, '石碣镇', 'S', '113.81395530616', '23.105172244651', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900102, '石龙镇', 'S', '113.84749077289', '23.115219876975', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900103, '茶山镇', 'C', '113.89350241139', '23.069002516534', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900104, '石排镇', 'S', '113.96394649371', '23.088334509001', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900105, '企石镇', 'Q', '114.04851828338', '23.070690716193', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900106, '横沥镇', 'H', '113.98801324096', '23.030051448767', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900107, '桥头镇', 'Q', '114.10677408198', '23.020458678747', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900108, '谢岗镇', 'X', '114.19511437465', '22.946513843008', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900109, '东坑镇', 'D', '113.95246820282', '23.002958656049', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900110, '常平镇', 'C', '114.02458867145', '22.979369177741', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900111, '寮步镇', 'L', '113.88349112257', '22.996428153649', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900112, '樟木头镇', 'Z', '114.11559876672', '22.912795269745', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900113, '大朗镇', 'D', '113.94820653279', '22.912348752542', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900114, '黄江镇', 'H', '114.00621531625', '22.872431801821', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900115, '清溪镇', 'Q', '114.18744982903', '22.841601621999', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900116, '塘厦镇', 'T', '114.08442795001', '22.811576132112', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900117, '凤岗镇', 'F', '114.17560299034', '22.722315801247', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900118, '大岭山镇', 'D', '113.83293372133', '22.903546239236', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900119, '长安镇', 'Z', '113.76998309965', '22.795308241444', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900121, '虎门镇', 'H', '113.68188667267', '22.818449805406', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900122, '厚街镇', 'H', '113.7081456375', '22.923357615893', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900123, '沙田镇', 'S', '113.60821459687', '22.907479676518', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900124, '道滘镇', 'D', '113.66267069882', '22.982801242639', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900125, '洪梅镇', 'H', '113.6125183112', '22.978946913376', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900126, '麻涌镇', 'M', '113.58837988097', '23.057083015858', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900127, '望牛墩镇', 'W', '113.64023583492', '23.047597838769', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900128, '中堂镇', 'Z', '113.65890566238', '23.096485679975', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900129, '高埗镇', 'G', '113.74213386638', '23.100270479205', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900401, '松山湖管委会', 'S', '113.90386183402', '22.928504587758', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900402, '东莞港', 'D', '113.75842045788', '23.027308411643', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900403, '东莞生态园', 'D', '113.93331900631', '23.069150651008', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000001, '石岐区街道办事处', 'S', '113.39476330111', '22.543405990677', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000002, '东区街道办事处', 'D', '113.39942236263', '22.522314670791', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000003, '火炬开发区街道办事处', 'H', '113.47638423802', '22.54191612433', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000004, '西区街道办事处', 'X', '113.34742851429', '22.557446683319', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000005, '南区街道办事处', 'N', '113.34166389111', '22.474593624741', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000006, '五桂山街道办事处', 'W', '113.40930659782', '22.451434375841', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000100, '小榄镇', 'X', '113.25710033351', '22.668653898989', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000101, '黄圃镇', 'H', '113.38940119784', '22.732151367196', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000102, '民众镇', 'M', '113.50030740281', '22.624234006676', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000103, '东凤镇', 'D', '113.26337563889', '22.696772350456', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000104, '东升镇', 'D', '113.31347763067', '22.605137527398', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000105, '古镇镇', 'G', '113.18899941194', '22.636034421686', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000106, '沙溪镇', 'S', '113.35710852331', '22.513668030794', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000107, '坦洲镇', 'T', '113.46831862593', '22.283731940242', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000108, '港口镇', 'G', '113.38354521878', '22.577121999043', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000109, '三角镇', 'S', '113.42740190231', '22.685663488493', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000110, '横栏镇', 'H', '113.24834255727', '22.574461443704', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000111, '南头镇', 'N', '113.29481042537', '22.721261074602', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000112, '阜沙镇', 'F', '113.34269477842', '22.666128002352', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000113, '南朗镇', 'N', '113.56057493505', '22.519486447352', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000114, '三乡镇', 'S', '113.42695556574', '22.371470122528', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000115, '板芙镇', 'B', '113.33339573359', '22.395149046719', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000116, '大涌镇', 'D', '113.29404791311', '22.483908949365', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000117, '神湾镇', 'S', '113.35331518036', '22.32576323421', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445102, '湘桥区', 'X', '116.63446160819', '23.680686981566', 445100, 3, 'tr_0 tr_440000 tr_445100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445103, '潮安区', 'C', '116.68452606069', '23.468357129831', 445100, 3, 'tr_0 tr_440000 tr_445100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445122, '饶平县', 'R', '117.01044917588', '23.670347111195', 445100, 3, 'tr_0 tr_440000 tr_445100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445202, '榕城区', 'R', '116.37351589492', '23.530746417966', 445200, 3, 'tr_0 tr_440000 tr_445200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445203, '揭东区', 'J', '116.41845578398', '23.572485187047', 445200, 3, 'tr_0 tr_440000 tr_445200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445222, '揭西县', 'J', '115.84856088728', '23.437299708209', 445200, 3, 'tr_0 tr_440000 tr_445200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445224, '惠来县', 'H', '116.30144448456', '23.039645374525', 445200, 3, 'tr_0 tr_440000 tr_445200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445281, '普宁市', 'P', '116.17244898117', '23.30363452186', 445200, 3, 'tr_0 tr_440000 tr_445200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430102, '芙蓉区', 'F', '113.03940774487', '28.191913247305', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430103, '天心区', 'T', '112.99659225852', '28.118211217441', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430104, '岳麓区', 'Y', '112.9374476441', '28.241488836473', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430105, '开福区', 'K', '112.99258491764', '28.261378687684', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430111, '雨花区', 'Y', '113.04242155986', '28.142232711654', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430112, '望城区', 'W', '112.8244661432', '28.367403020376', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430121, '长沙县', 'Z', '113.08755916596', '28.251818487944', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430181, '浏阳市', 'L', '113.64939823851', '28.169832216071', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430182, '宁乡市', 'N', '112.55840691564', '28.284104536209', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445302, '云城区', 'Y', '112.05052923472', '22.933897802971', 445300, 3, 'tr_0 tr_440000 tr_445300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445303, '云安区', 'Y', '112.00956308992', '23.076892611911', 445300, 3, 'tr_0 tr_440000 tr_445300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445321, '新兴县', 'X', '112.23149683219', '22.701890082606', 445300, 3, 'tr_0 tr_440000 tr_445300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445322, '郁南县', 'Y', '111.54155382446', '23.240174042653', 445300, 3, 'tr_0 tr_440000 tr_445300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445381, '罗定市', 'L', '111.57648048166', '22.774296060763', 445300, 3, 'tr_0 tr_440000 tr_445300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450102, '兴宁区', 'X', '108.37544497422', '22.860290951255', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450103, '青秀区', 'Q', '108.50143861009', '22.792227439631', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450105, '江南区', 'J', '108.27949435764', '22.787045753588', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450107, '西乡塘区', 'X', '108.31957243762', '22.839651509339', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450108, '良庆区', 'L', '108.32751579392', '22.76284928359', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450109, '邕宁区', 'Y', '108.49342024528', '22.76460044955', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450110, '武鸣区', 'W', '108.28151653318', '23.164515606911', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450123, '隆安县', 'L', '107.70257390338', '23.171585249828', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450124, '马山县', 'M', '108.18356215633', '23.71387772536', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450125, '上林县', 'S', '108.61145148078', '23.438518877663', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450126, '宾阳县', 'B', '108.81650237947', '23.223700543767', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450127, '横县', 'H', '109.2675678064', '22.685572608838', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450202, '城中区', 'C', '109.4174821502', '24.321314069891', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450203, '鱼峰区', 'Y', '109.44941628225', '24.318521699515', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450204, '柳南区', 'L', '109.39155193285', '24.341578870912', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450205, '柳北区', 'L', '109.40853179342', '24.367867017648', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450206, '柳江区', 'L', '109.33244423878', '24.26081496535', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450222, '柳城县', 'L', '109.25156152934', '24.656370391486', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450223, '鹿寨县', 'L', '109.75755447547', '24.478622266898', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450224, '融安县', 'R', '109.40456325934', '25.230511447128', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450225, '融水苗族自治县', 'R', '109.26256083115', '25.072076504109', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450226, '三江侗族自治县', 'S', '109.61454747223', '25.788830387788', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450302, '秀峰区', 'X', '110.27043670622', '25.27961848567', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450303, '叠彩区', 'D', '110.30846314624', '25.320233274843', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450304, '象山区', 'X', '110.28742267527', '25.267930010211', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450305, '七星区', 'Q', '110.32453805385', '25.2585670875', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450311, '雁山区', 'Y', '110.3154792716', '25.066213543917', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450312, '临桂区', 'L', '110.21858669186', '25.244301999271', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450321, '阳朔县', 'Y', '110.50347503171', '24.784519191433', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450323, '灵川县', 'L', '110.33253719492', '25.41554953076', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450324, '全州县', 'Q', '111.07956895508', '25.934343027361', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450325, '兴安县', 'X', '110.67851632807', '25.617567220037', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450326, '永福县', 'Y', '109.989590831', '24.985577973084', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450327, '灌阳县', 'G', '111.16755205093', '25.495120752051', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450328, '龙胜各族自治县', 'L', '110.01749399674', '25.804116784254', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450329, '资源县', 'Z', '110.6584391101', '26.048569077338', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450330, '平乐县', 'P', '110.64944626347', '24.63963212806', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450332, '恭城瑶族自治县', 'G', '110.8345596307', '24.837194365911', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450381, '荔浦市', 'L', '110.40143677836', '24.494121641923', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450403, '万秀区', 'W', '111.32751969101', '23.478845767296', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450405, '长洲区', 'Z', '111.28149914043', '23.491509584406', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450406, '龙圩区', 'L', '111.25344829326', '23.421414485718', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450421, '苍梧县', 'C', '111.55554663956', '23.845998205466', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450422, '藤县', 'T', '110.92149925488', '23.38100991555', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450423, '蒙山县', 'M', '110.53141700425', '24.200017445935', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450481, '岑溪市', 'C', '111.00143182659', '22.92462127872', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450502, '海城区', 'H', '109.12452136755', '21.481065838236', 450500, 3, 'tr_0 tr_450000 tr_450500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450503, '银海区', 'Y', '109.14654476441', '21.454768668895', 450500, 3, 'tr_0 tr_450000 tr_450500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450512, '铁山港区', 'T', '109.42847264862', '21.53529504285', 450500, 3, 'tr_0 tr_450000 tr_450500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450521, '合浦县', 'H', '109.2134386113', '21.667005735642', 450500, 3, 'tr_0 tr_450000 tr_450500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450602, '港口区', 'G', '108.38648254385', '21.649565586624', 450600, 3, 'tr_0 tr_450000 tr_450600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450603, '防城区', 'F', '108.36044848238', '21.775411305197', 450600, 3, 'tr_0 tr_450000 tr_450600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450621, '上思县', 'S', '107.99044264125', '22.15991408311', 450600, 3, 'tr_0 tr_450000 tr_450600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450681, '东兴市', 'D', '107.97748898597', '21.55361543358', 450600, 3, 'tr_0 tr_450000 tr_450600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450802, '港北区', 'G', '109.57843298566', '23.117563632764', 450800, 3, 'tr_0 tr_450000 tr_450800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450803, '港南区', 'G', '109.6065534515', '23.08123957836', 450800, 3, 'tr_0 tr_450000 tr_450800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450804, '覃塘区', 'T', '109.45942672936', '23.133251089213', 450800, 3, 'tr_0 tr_450000 tr_450800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450821, '平南县', 'P', '110.39845197864', '23.545506098828', 450800, 3, 'tr_0 tr_450000 tr_450800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450881, '桂平市', 'G', '110.08552599672', '23.400048883699', 450800, 3, 'tr_0 tr_450000 tr_450800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450902, '玉州区', 'Y', '110.15743140022', '22.634492736172', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450903, '福绵区', 'F', '110.08853765577', '22.563705412249', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450921, '容县', 'R', '110.56453016229', '22.863665599935', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450922, '陆川县', 'L', '110.27045619945', '22.327221527769', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450923, '博白县', 'B', '109.98255305648', '22.278674815493', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450924, '兴业县', 'X', '109.88155180701', '22.742267653423', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450981, '北流市', 'B', '110.36057016581', '22.713958021611', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451002, '右江区', 'Y', '106.62558913969', '23.907084503109', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451021, '田阳县', 'T', '106.9214125525', '23.742005722478', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451022, '田东县', 'T', '107.13249943541', '23.603129804015', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451023, '平果县', 'P', '107.59657106849', '23.334922742592', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451024, '德保县', 'D', '106.62158260728', '23.328994351286', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451026, '那坡县', 'N', '105.83942261017', '23.393793831292', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451027, '凌云县', 'L', '106.56841567705', '24.354015240604', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451028, '乐业县', 'L', '106.56342972215', '24.783216467053', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451029, '田林县', 'T', '106.23449791231', '24.300534611051', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451030, '西林县', 'X', '105.10049410469', '24.495667790362', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451031, '隆林各族自治县', 'L', '105.3504594704', '24.776813610296', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451081, '靖西市', 'J', '106.42445269708', '23.140125669019', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451102, '八步区', 'B', '111.55856737149', '24.417531040919', 451100, 3, 'tr_0 tr_450000 tr_451100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451103, '平桂区', 'P', '111.47841426578', '24.462001422773', 451100, 3, 'tr_0 tr_450000 tr_451100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451121, '昭平县', 'Z', '110.81757491928', '24.175106050636', 451100, 3, 'tr_0 tr_450000 tr_451100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451122, '钟山县', 'Z', '111.30958574015', '24.531673107939', 451100, 3, 'tr_0 tr_450000 tr_451100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451123, '富川瑶族自治县', 'F', '111.28451124863', '24.820159951323', 451100, 3, 'tr_0 tr_450000 tr_451100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451202, '金城江区', 'J', '108.04350707483', '24.695679382239', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451203, '宜州区', 'Y', '108.64353158748', '24.491084367739', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451221, '南丹县', 'N', '107.54748028934', '24.981849775485', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451222, '天峨县', 'T', '107.17845647579', '25.005664155232', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451223, '凤山县', 'F', '107.04841983631', '24.553217796777', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451224, '东兰县', 'D', '107.3805041595', '24.516871463381', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451225, '罗城仫佬族自治县', 'L', '108.91157445325', '24.783084996429', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451226, '环江毛南族自治县', 'H', '108.26444306917', '24.832087938551', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451227, '巴马瑶族自治县', 'B', '107.26648125302', '24.14726480427', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451228, '都安瑶族自治县', 'D', '108.11145804765', '23.937331261923', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451229, '大化瑶族自治县', 'D', '108.00441075294', '23.742818222963', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451302, '兴宾区', 'X', '109.24149907034', '23.733211038144', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451321, '忻城县', 'X', '108.67256239612', '24.071888636576', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451322, '象州县', 'X', '109.71146215028', '23.979680993271', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451323, '武宣县', 'W', '109.66944220328', '23.600404197633', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451324, '金秀瑶族自治县', 'J', '110.19550625891', '24.136319486486', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451381, '合山市', 'H', '108.89256576969', '23.81226007105', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451402, '江州区', 'J', '107.35953321738', '22.411245728018', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451421, '扶绥县', 'F', '107.91046515426', '22.641097136345', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451422, '宁明县', 'N', '107.08352381902', '22.145884844184', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451423, '龙州县', 'L', '106.86058190847', '22.348298905766', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451424, '大新县', 'D', '107.20755690312', '22.836229044406', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451425, '天等县', 'T', '107.14947264852', '23.08750581209', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451481, '凭祥市', 'P', '106.77352361814', '22.100152592954', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460105, '秀英区', 'X', '110.30043588821', '20.013642385161', 460100, 3, 'tr_0 tr_460000 tr_460100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460106, '龙华区', 'L', '110.33554112854', '20.036320733521', 460100, 3, 'tr_0 tr_460000 tr_460100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460107, '琼山区', 'Q', '110.36052605901', '20.009150644491', 460100, 3, 'tr_0 tr_460000 tr_460100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460108, '美兰区', 'M', '110.37349839904', '20.034646217625', 460100, 3, 'tr_0 tr_460000 tr_460100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460202, '海棠区', 'H', '109.72350007292', '18.33787879371', 460200, 3, 'tr_0 tr_460000 tr_460200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460203, '吉阳区', 'J', '109.52055165827', '18.257057667262', 460200, 3, 'tr_0 tr_460000 tr_460200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460204, '天涯区', 'T', '109.46246255283', '18.306919633503', 460200, 3, 'tr_0 tr_460000 tr_460200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460205, '崖州区', 'Y', '109.22846124383', '18.44463053478', 460200, 3, 'tr_0 tr_460000 tr_460200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460321, '西沙群岛', 'X', '111.67308686126', '16.497085431044', 460300, 3, 'tr_0 tr_460000 tr_460300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460322, '南沙群岛', 'N', '112.66030170907', '4.9743661921368', 460300, 3, 'tr_0 tr_460000 tr_460300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460323, '中沙群岛的岛礁及其海域', 'Z', '112.34048204137', '16.838953334409', 460300, 3, 'tr_0 tr_460000 tr_460300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400100, '那大镇', 'N', '109.552961497', '19.52127763772', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400101, '和庆镇', 'H', '109.64738779153', '19.531275426074', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400102, '南丰镇', 'N', '109.6054369934', '19.346095790543', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400103, '大成镇', 'D', '109.42116531507', '19.548276240672', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400104, '雅星镇', 'Y', '109.19716320191', '19.517956948407', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400105, '兰洋镇', 'L', '109.67367138789', '19.466430878427', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400106, '光村镇', 'G', '109.50795789562', '19.809145677126', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400107, '木棠镇', 'M', '109.35673473687', '19.809926770596', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400108, '海头镇', 'H', '108.95966166166', '19.509695855917', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400109, '峨蔓镇', 'E', '109.30390924357', '19.863144800976', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400111, '王五镇', 'W', '109.33806829512', '19.645800769747', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400112, '白马井镇', 'B', '109.58745583569', '19.527146110044', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400113, '中和镇', 'Z', '109.35613533713', '19.749465537088', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400114, '排浦镇', 'P', '109.16975400269', '19.644673698003', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400115, '东成镇', 'D', '109.4680333127', '19.709924104042', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400116, '新州镇', 'X', '109.32260133284', '19.720234743232', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400499, '洋浦经济开发区', 'Y', '109.19229656623', '19.775218244804', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400500, '华南热作学院', 'H', '109.58745583569', '19.527146110044', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469001, '五指山市', 'W', '109.52354032071', '18.780994100706', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469002, '琼海市', 'Q', '110.48054452595', '19.264254019918', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469005, '文昌市', 'W', '110.80450870632', '19.549062083121', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469006, '万宁市', 'W', '110.39943436555', '18.800106988303', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469007, '东方市', 'D', '108.65856652679', '19.101104731289', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469021, '定安县', 'D', '104.36878601078', '31.589181642776', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469022, '屯昌县', 'T', '110.10857732457', '19.357374924278', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469023, '澄迈县', 'C', '110.01351091011', '19.744348671646', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469024, '临高县', 'L', '109.69744301483', '19.919474770278', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469025, '白沙黎族自治县', 'B', '109.45747066911', '19.231378733013', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469026, '昌江黎族自治县', 'C', '109.06246408734', '19.303997876684', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469027, '乐东黎族自治县', 'L', '109.18050798895', '18.755871493855', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469028, '陵水黎族自治县', 'L', '110.04446409255', '18.512331595699', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469029, '保亭黎族苗族自治县', 'B', '109.7034815143', '18.646909955376', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469030, '琼中黎族苗族自治县', 'Q', '109.84451062847', '19.039163789181', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500101, '万州区', 'W', '108.4155583705', '30.813621636708', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500102, '涪陵区', 'F', '107.39641979754', '29.709278197979', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500103, '渝中区', 'Y', '106.57544006681', '29.559090182994', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500104, '大渡口区', 'D', '106.48853359011', '29.490107128556', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500105, '江北区', 'J', '112.85530302042', '35.520558754673', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500106, '沙坪坝区', 'S', '106.46446511093', '29.547192516541', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500107, '九龙坡区', 'J', '106.51755873943', '29.507927715553', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500108, '南岸区', 'N', '106.6684297786', '29.502683098835', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500109, '北碚区', 'B', '106.40356933975', '29.811602753904', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500110, '綦江区', 'Q', '106.65748419545', '29.034113748311', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500111, '大足区', 'D', '105.72840462545', '29.713113506077', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500112, '渝北区', 'Y', '106.6375590606', '29.723927343007', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500113, '巴南区', 'B', '106.54745425696', '29.40847473977', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500114, '黔江区', 'Q', '108.77759119835', '29.53881256766', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500115, '长寿区', 'Z', '107.08753107007', '29.863520067323', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500116, '江津区', 'J', '106.26559760838', '29.295884374465', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500117, '合川区', 'H', '106.28254108758', '29.978181239534', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500118, '永川区', 'Y', '105.93349936145', '29.362046335949', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500119, '南川区', 'N', '107.10558512437', '29.163478599606', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500120, '璧山区', 'B', '106.23347456267', '29.598346607316', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500151, '铜梁区', 'T', '106.06344949411', '29.850508778722', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500152, '潼南区', 'T', '105.84739903617', '30.197314239664', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500153, '荣昌区', 'R', '105.60141979928', '29.41130739669', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500154, '开州区', 'K', '108.39949765612', '31.166644113193', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500155, '梁平区', 'L', '107.77609725763', '30.660553255023', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500156, '武隆区', 'W', '112.85530302042', '35.520558754673', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500229, '城口县', 'C', '108.67161164256', '31.953390746293', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500230, '丰都县', 'F', '107.7374806182', '29.869412789214', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500231, '垫江县', 'D', '107.33956587472', '30.3332939685', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500233, '忠县', 'Z', '', '', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500235, '云阳县', 'Y', '108.7034475', '30.936611271975', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500236, '奉节县', 'F', '109.47047275631', '31.024601766549', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500237, '巫山县', 'W', '109.88554550703', '31.080518811736', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500238, '巫溪县', 'W', '109.576402559', '31.404880009858', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500240, '石柱土家族自治县', 'S', '108.12041416638', '30.006108697869', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500241, '秀山土家族苗族自治县', 'X', '109.01357389981', '28.453447864286', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500242, '酉阳土家族苗族自治县', 'Y', '108.7745860071', '28.847040258674', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500243, '彭水苗族土家族自治县', 'P', '108.17257803588', '29.299462290443', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510104, '锦江区', 'J', '104.0895617566', '30.661904490317', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510105, '青羊区', 'Q', '104.06744547494', '30.680037807007', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510106, '金牛区', 'J', '104.05740358714', '30.697356042874', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510107, '武侯区', 'W', '104.04942447828', '30.648712685321', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510108, '成华区', 'C', '104.10859155035', '30.665589283983', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510112, '龙泉驿区', 'L', '104.28139696436', '30.562697841', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510113, '青白江区', 'Q', '104.25751245813', '30.884421372736', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510114, '新都区', 'X', '104.16539284504', '30.829407468191', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510115, '温江区', 'W', '103.86357306318', '30.688486836627', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510116, '双流区', 'S', '103.93039154227', '30.580399352821', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510117, '郫都区', 'P', '103.90544568809', '30.799537653573', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510121, '金堂县', 'J', '104.41844263262', '30.868358423946', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510129, '大邑县', 'D', '103.52752981767', '30.593155402402', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510131, '蒲江县', 'P', '103.51257132415', '30.202500428139', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510132, '新津县', 'X', '103.81743303795', '30.416363953297', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510181, '都江堰市', 'D', '103.65353360443', '30.994256893542', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510182, '彭州市', 'P', '103.96556137078', '30.995564002629', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510183, '邛崃市', 'Q', '103.47048112964', '30.416398600854', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510184, '崇州市', 'C', '103.67943336923', '30.636595891379', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510185, '简阳市', 'J', '104.55349406265', '30.417451491353', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510302, '自流井区', 'Z', '104.7834473259', '29.343498562348', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510303, '贡井区', 'G', '104.72155659154', '29.351476269522', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510304, '大安区', 'D', '104.78041635328', '29.369928541322', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510311, '沿滩区', 'Y', '104.88040907516', '29.278797205251', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510321, '荣县', 'R', '104.42345759121', '29.45180089858', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510322, '富顺县', 'F', '104.98149440603', '29.186886257831', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510402, '东区', 'D', '101.72554117091', '26.588033173333', 510400, 3, 'tr_0 tr_510000 tr_510400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510403, '西区', 'X', '101.72554117091', '26.588033173333', 510400, 3, 'tr_0 tr_510000 tr_510400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510411, '仁和区', 'R', '101.74444996291', '26.504019493295', 510400, 3, 'tr_0 tr_510000 tr_510400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510421, '米易县', 'M', '102.1164404304', '26.89696797612', 510400, 3, 'tr_0 tr_510000 tr_510400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510422, '盐边县', 'Y', '101.86049854831', '26.688767481964', 510400, 3, 'tr_0 tr_510000 tr_510400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510502, '江阳区', 'J', '105.44154513382', '28.884671972905', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510503, '纳溪区', 'N', '105.37740854586', '28.779359901658', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510504, '龙马潭区', 'L', '105.4445442166', '28.919012274486', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510521, '泸县', 'L', '105.38845608667', '29.157626295708', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510522, '合江县', 'H', '105.83843195885', '28.81779304284', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510524, '叙永县', 'X', '105.45150761142', '28.161714341911', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510525, '古蔺县', 'G', '105.81947079565', '28.044745368759', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510603, '旌阳区', 'J', '104.42343882821', '31.148596291553', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510604, '罗江区', 'L', '104.51741416083', '31.324178639826', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510623, '中江县', 'Z', '104.68553015058', '31.038953695302', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510681, '广汉市', 'G', '104.28842189311', '30.982415239743', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510682, '什邡市', 'S', '104.17442710355', '31.132889048238', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510683, '绵竹市', 'M', '104.227609305', '31.343592258211', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510703, '涪城区', 'F', '104.76342033491', '31.46131438858', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510704, '游仙区', 'Y', '104.77242899171', '31.479904474058', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510705, '安州区', 'A', '104.5735550213', '31.540750527876', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510722, '三台县', 'S', '105.10148979833', '31.101585571238', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510723, '盐亭县', 'Y', '105.39550321547', '31.214318764837', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510725, '梓潼县', 'Z', '105.17756684281', '31.648313467681', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510726, '北川羌族自治县', 'B', '104.36158555316', '31.963084103415', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510727, '平武县', 'P', '104.53542150325', '32.414681977696', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510781, '江油市', 'J', '104.75241160088', '31.784128193388', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510802, '利州区', 'L', '105.85242622329', '32.440207812726', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510811, '昭化区', 'Z', '105.96941892782', '32.329618490159', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510812, '朝天区', 'C', '105.8965888086', '32.649726240308', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO `hg_sys_provinces` (`id`, `title`, `pinyin`, `lng`, `lat`, `pid`, `level`, `tree`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(510821, '旺苍县', 'W', '106.29649124536', '32.235097383079', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510822, '青川县', 'Q', '105.24540705459', '32.5816168573', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510823, '剑阁县', 'J', '105.53157601887', '32.293478516773', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510824, '苍溪县', 'C', '105.9414826146', '31.738684400617', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510903, '船山区', 'C', '105.5745228375', '30.531470607829', 510900, 3, 'tr_0 tr_510000 tr_510900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510904, '安居区', 'A', '105.46246730988', '30.361496469746', 510900, 3, 'tr_0 tr_510000 tr_510900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510921, '蓬溪县', 'P', '105.71344605411', '30.763751441791', 510900, 3, 'tr_0 tr_510000 tr_510900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510922, '射洪县', 'S', '105.39450950992', '30.877138522337', 510900, 3, 'tr_0 tr_510000 tr_510900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510923, '大英县', 'D', '105.24340392313', '30.600810129921', 510900, 3, 'tr_0 tr_510000 tr_510900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511002, '市中区', 'S', '105.07457421786', '29.592710148736', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511011, '东兴区', 'D', '105.08254748773', '29.598485728583', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511024, '威远县', 'W', '104.6744982286', '29.533634931412', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511025, '资中县', 'Z', '104.85849482242', '29.770234032565', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511071, '内江经济开发区', 'N', '105.064588025', '29.58588653832', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511083, '隆昌市', 'L', '105.29457175243', '29.345244662083', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511102, '市中区', 'S', '103.76755865552', '29.561363941633', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511111, '沙湾区', 'S', '103.55643566073', '29.419272499245', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511112, '五通桥区', 'W', '103.82445508074', '29.413185014439', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511113, '金口河区', 'J', '103.08539389554', '29.250803570124', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511123, '犍为县', '', '', '', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511124, '井研县', 'J', '104.07651071353', '29.65730305908', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511126, '夹江县', 'J', '103.57841009994', '29.743846302985', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511129, '沐川县', 'M', '103.90846703743', '28.962888278216', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511132, '峨边彝族自治县', 'E', '103.26857725338', '29.236089109563', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511133, '马边彝族自治县', 'M', '103.55245419105', '28.841736014812', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511181, '峨眉山市', 'E', '103.4915455741', '29.606975527462', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511302, '顺庆区', 'S', '106.09841065838', '30.802753098595', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511303, '高坪区', 'G', '106.12554047291', '30.787254931592', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511304, '嘉陵区', 'J', '106.07843297265', '30.764895560139', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511321, '南部县', 'N', '106.04357826971', '31.353705301526', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511322, '营山县', 'Y', '106.57240802852', '31.083002970199', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511323, '蓬安县', 'P', '106.41848194209', '31.034630778271', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511324, '仪陇县', 'Y', '106.30943016844', '31.277597359981', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511325, '西充县', 'X', '105.90761137653', '31.000688020792', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511381, '阆中市', 'L', '106.01156526642', '31.56407455364', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511402, '东坡区', 'D', '103.83852480217', '30.048272134435', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511403, '彭山区', 'P', '103.87955823007', '30.19885441686', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511421, '仁寿县', 'R', '104.14047690443', '30.001663984301', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511423, '洪雅县', 'H', '103.37960224488', '29.910615837469', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511424, '丹棱县', 'D', '103.51958331729', '30.020362794872', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511425, '青神县', 'Q', '103.85355883179', '29.837054743717', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511502, '翠屏区', 'C', '104.62643798553', '28.772051773027', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511503, '南溪区', 'N', '104.97651330198', '28.851503648027', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511504, '叙州区', 'X', '104.53944275624', '28.696246394752', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511523, '江安县', 'J', '105.07359488519', '28.729609721855', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511524, '长宁县', 'Z', '104.92756445509', '28.588133452699', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511525, '高县', 'G', '104.52441132032', '28.442510804102', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511526, '珙县', 'G', '104.71557459549', '28.444319765248', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511527, '筠连县', 'Y', '104.51740642378', '28.170174457648', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511528, '兴文县', 'X', '105.24240230064', '28.309904884117', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511529, '屏山县', 'P', '104.35267533908', '28.834274966477', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511602, '广安区', 'G', '106.64853115608', '30.479768100142', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511603, '前锋区', 'Q', '106.90447959588', '30.506435157767', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511621, '岳池县', 'Y', '106.44641061972', '30.54411986458', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511622, '武胜县', 'W', '106.3024617431', '30.355495660378', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511623, '邻水县', 'L', '106.93640258896', '30.341072518332', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511681, '华蓥市', 'H', '106.78946181601', '30.396307084289', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511702, '通川区', 'T', '107.51144711201', '31.220931804105', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511703, '达川区', 'D', '107.51841059667', '31.202393360554', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511722, '宣汉县', 'X', '107.7335335663', '31.359754823662', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511723, '开江县', 'K', '107.87542487414', '31.089372149066', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511724, '大竹县', 'D', '107.21157970735', '30.74207661791', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511725, '渠县', 'Q', '106.97958296702', '30.842299283481', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511771, '达州经济开发区', 'D', '107.47459385898', '31.214307723927', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511781, '万源市', 'W', '108.04154069684', '32.087420847789', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511802, '雨城区', 'Y', '103.03957520533', '30.011061644393', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511803, '名山区', 'M', '103.1154857938', '30.075913663382', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511822, '荥经县', 'X', '102.85343551293', '29.799193512656', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511823, '汉源县', 'H', '102.65857589024', '29.350217385987', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511824, '石棉县', 'S', '102.36640453848', '29.23430487759', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511825, '天全县', 'T', '102.76453022767', '30.072472953275', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511826, '芦山县', 'L', '102.93452771831', '30.149873189563', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511827, '宝兴县', 'B', '102.82148423429', '30.374082112445', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511902, '巴州区', 'B', '106.77551310771', '31.857685602645', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511903, '恩阳区', 'E', '106.63558190249', '31.802614044176', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511921, '通江县', 'T', '107.25151684321', '31.917714346881', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511922, '南江县', 'N', '106.83448345088', '32.352531654165', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511923, '平昌县', 'P', '107.11059310023', '31.566185810095', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511971, '巴中经济开发区', 'B', '106.75158530316', '31.872888585957', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(512002, '雁江区', 'Y', '104.65842441063', '30.123753456785', 512000, 3, 'tr_0 tr_510000 tr_512000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(512021, '安岳县', 'A', '105.34245423273', '30.103392734494', 512000, 3, 'tr_0 tr_510000 tr_512000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(512022, '乐至县', 'L', '105.02747697007', '30.282348346', 512000, 3, 'tr_0 tr_510000 tr_512000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513201, '马尔康市', 'M', '102.21350208208', '31.911747955648', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513221, '汶川县', 'W', '103.59651788422', '31.483005320468', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513222, '理县', 'L', '102.23141546175', '31.905511577267', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513223, '茂县', 'M', '102.23141546175', '31.905511577267', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513224, '松潘县', 'S', '103.61057968918', '32.661796559853', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513225, '九寨沟县', 'J', '104.24954673403', '33.257591509496', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513226, '金川县', 'J', '102.07061042122', '31.482005950337', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513227, '小金县', 'X', '102.36942635928', '31.002208697062', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513228, '黑水县', 'H', '102.99651735613', '32.067805449368', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513230, '壤塘县', 'R', '100.98558348726', '32.271093316269', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513231, '阿坝县', 'A', '101.71360970816', '32.908220918625', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513232, '若尔盖县', 'R', '102.97439065413', '33.584376654702', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513233, '红原县', 'H', '102.55061520946', '32.796605278762', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513301, '康定市', 'K', '101.96355522139', '30.004407384262', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513322, '泸定县', 'L', '102.24143209631', '29.920401664951', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513323, '丹巴县', 'D', '101.89643706759', '30.88476979933', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513324, '九龙县', 'J', '101.51341566718', '29.006431902925', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513325, '雅江县', 'Y', '101.02050035294', '30.037568967864', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513326, '道孚县', 'D', '101.13154034619', '30.985326277402', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513327, '炉霍县', 'L', '100.68239693357', '31.397991882882', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513328, '甘孜县', 'G', '99.999210350851', '31.628956694034', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513329, '新龙县', 'X', '100.31839824093', '30.945469525266', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513330, '德格县', 'D', '98.587401611354', '31.812106494713', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513331, '白玉县', 'B', '98.83110021824', '31.215314448788', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513332, '石渠县', 'S', '98.109480622408', '32.984003420478', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513333, '色达县', 'S', '100.33941364918', '32.274330413227', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513334, '理塘县', 'L', '100.27557457998', '30.000030621751', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513335, '巴塘县', 'B', '99.11672669582', '30.011661707376', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513336, '乡城县', 'X', '99.805059570922', '28.936733475224', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513337, '稻城县', 'D', '100.3044615597', '29.043121558126', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513338, '得荣县', 'D', '99.292984198181', '28.718780051461', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513401, '西昌市', 'X', '102.27148382917', '27.900580896264', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513422, '木里藏族自治县', 'M', '101.28639697674', '27.93459855924', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513423, '盐源县', 'Y', '101.51542912915', '27.428154867741', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513424, '德昌县', 'D', '102.18259551085', '27.408504192994', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513425, '会理县', 'H', '102.25143634511', '26.661199778427', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513426, '会东县', 'H', '102.5844621823', '26.640823775829', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513427, '宁南县', 'N', '102.76252636654', '27.064605070116', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513428, '普格县', 'P', '102.54659671863', '27.381996213807', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513429, '布拖县', 'B', '102.818478493', '27.7121287338', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513430, '金阳县', 'J', '103.25454895521', '27.702144511749', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513431, '昭觉县', 'Z', '102.84942278222', '28.020506268006', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513432, '喜德县', 'X', '102.41956715684', '28.312709832521', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513433, '冕宁县', 'M', '102.18357457402', '28.55529444536', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513434, '越西县', 'Y', '102.5144744814', '28.645827564326', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513435, '甘洛县', 'G', '102.77859651312', '28.9648231905', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513436, '美姑县', 'M', '103.13858579866', '28.33401962389', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513437, '雷波县', 'L', '103.57842869486', '28.268950617624', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520102, '南明区', 'N', '106.72052763544', '26.574336181539', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520103, '云岩区', 'Y', '106.73053475882', '26.610381076426', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520111, '花溪区', 'H', '106.6764407773', '26.41587945643', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520112, '乌当区', 'W', '106.75755803432', '26.636529135598', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520113, '白云区', 'B', '106.62959683989', '26.683588499124', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520115, '观山湖区', 'G', '106.60953255751', '26.623894296899', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520121, '开阳县', 'K', '106.97155955928', '27.063673573951', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520122, '息烽县', 'X', '106.74756178044', '27.096475267062', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520123, '修文县', 'X', '106.59849220314', '26.844862447594', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520181, '清镇市', 'Q', '106.47752261032', '26.561987898479', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520201, '钟山区', 'Z', '104.85052981696', '26.580704079622', 520200, 3, 'tr_0 tr_520000 tr_520200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520203, '六枝特区', 'L', '105.48342934686', '26.219214290638', 520200, 3, 'tr_0 tr_520000 tr_520200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520221, '水城县', 'S', '104.96456610819', '26.553719763692', 520200, 3, 'tr_0 tr_520000 tr_520200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520281, '盘州市', 'P', '104.47858183932', '25.715651258076', 520200, 3, 'tr_0 tr_520000 tr_520200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520302, '红花岗区', 'H', '106.90049658668', '27.650870260732', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520303, '汇川区', 'H', '106.94045752761', '27.756343380087', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520304, '播州区', 'B', '106.83650354793', '27.542500878', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520322, '桐梓县', 'T', '106.83248902061', '28.139468384162', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520323, '绥阳县', 'S', '107.19749228819', '27.953080005876', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520324, '正安县', 'Z', '107.4605748906', '28.55909172878', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520325, '道真仡佬族苗族自治县', 'D', '107.61948378781', '28.86864981438', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520326, '务川仡佬族苗族自治县', 'W', '107.90545629257', '28.569077110562', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520327, '凤冈县', 'F', '107.72354763025', '27.960695338965', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520328, '湄潭县', 'M', '107.47259853019', '27.75449836496', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520329, '余庆县', 'Y', '107.91146020728', '27.221379027997', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520330, '习水县', 'X', '106.20342803999', '28.339117886481', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520381, '赤水市', 'C', '105.70348859502', '28.596118908733', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520382, '仁怀市', 'R', '106.40752655518', '27.797752158543', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450702, '钦南区', 'Q', '108.66454861267', '21.945972440989', 450700, 3, 'tr_0 tr_450000 tr_450700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450703, '钦北区', 'Q', '108.63851257493', '22.020367050196', 450700, 3, 'tr_0 tr_450000 tr_450700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450721, '灵山县', 'L', '109.29747796631', '22.422413326701', 450700, 3, 'tr_0 tr_450000 tr_450700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450722, '浦北县', 'P', '109.5634229294', '22.277822326937', 450700, 3, 'tr_0 tr_450000 tr_450700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520402, '西秀区', 'X', '105.97240632053', '26.251497663244', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520403, '平坝区', 'P', '106.26358378709', '26.411186471257', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520422, '普定县', 'P', '105.74848570614', '26.308233451347', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520423, '镇宁布依族苗族自治县', 'Z', '105.77658344485', '26.063829083032', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520424, '关岭布依族苗族自治县', 'G', '105.62547597168', '25.949877045969', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520425, '紫云苗族布依族自治县', 'Z', '106.09041375093', '25.757408728958', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520502, '七星关区', 'Q', '105.31158071811', '27.304095223427', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520521, '大方县', 'D', '105.61845131242', '27.147060750626', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520522, '黔西县', 'Q', '106.03857397726', '27.014344747084', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520523, '金沙县', 'J', '106.22644163901', '27.465354872614', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520524, '织金县', 'Z', '105.77758954702', '26.669221885659', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520525, '纳雍县', 'N', '105.38948662276', '26.783717229132', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520526, '威宁彝族回族苗族自治县', 'W', '104.25948063398', '26.879247190553', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520527, '赫章县', 'H', '104.73351582262', '27.129051675142', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520602, '碧江区', 'B', '109.18743536171', '27.696773471802', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520603, '万山区', 'W', '109.22045617394', '27.524647851983', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520621, '江口县', 'J', '108.84540005924', '27.705921695043', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520622, '玉屏侗族自治县', 'Y', '108.920563527', '27.248557881456', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520623, '石阡县', 'S', '108.23046385479', '27.519722059758', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520624, '思南县', 'S', '108.25941731933', '27.944547877977', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520625, '印江土家族苗族自治县', 'Y', '108.41659167843', '27.999823251993', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520626, '德江县', 'D', '108.1264110615', '28.270423278494', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520627, '沿河土家族自治县', 'Y', '108.51047753979', '28.570101680095', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520628, '松桃苗族自治县', 'S', '109.20940351278', '28.160420179011', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522301, '兴义市', 'X', '104.9024609483', '25.098113310297', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522302, '兴仁市', 'X', '105.19256772452', '25.440898753576', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522323, '普安县', 'P', '104.95954583802', '25.789951769129', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522324, '晴隆县', 'Q', '105.22548361467', '25.841047900453', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522325, '贞丰县', 'Z', '105.65655958807', '25.392123965341', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522326, '望谟县', 'W', '106.10644455174', '25.18435492392', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522327, '册亨县', 'C', '105.81851050706', '24.989637494252', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522328, '安龙县', 'A', '105.44954274777', '25.103990431232', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522601, '凯里市', 'K', '107.98944624078', '26.589702969826', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522622, '黄平县', 'H', '107.92354780622', '26.911288643101', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522623, '施秉县', 'S', '108.13043978205', '27.039822051733', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522624, '三穗县', 'S', '108.68154500207', '26.958666465246', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522625, '镇远县', 'Z', '108.43658077263', '27.054820913901', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522626, '岑巩县', 'C', '108.82248096196', '27.179902417394', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522627, '天柱县', 'T', '109.21444570161', '26.915804084012', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522628, '锦屏县', 'J', '109.20743846948', '26.682631631865', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522629, '剑河县', 'J', '108.44751710323', '26.734047558881', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522630, '台江县', 'T', '108.32855163', '26.672372539643', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522631, '黎平县', 'L', '109.14356697147', '26.236874050192', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522632, '榕江县', 'R', '108.52755369872', '25.93772537325', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522633, '从江县', 'C', '108.91156142782', '25.759881327892', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522634, '雷山县', 'L', '108.08452891457', '26.384205121689', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522635, '麻江县', 'M', '107.59555140191', '26.496807595584', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522636, '丹寨县', 'D', '107.79551348972', '26.204421169869', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522701, '都匀市', 'D', '107.52540443144', '26.266117957789', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522702, '福泉市', 'F', '107.52643281158', '26.692525700784', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522722, '荔波县', 'L', '107.89340938687', '25.417097566273', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522723, '贵定县', 'G', '107.2405543594', '26.590659655039', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522725, '瓮安县', 'W', '107.47755223592', '27.084125602602', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522726, '独山县', 'D', '107.55149778107', '25.828287807074', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522727, '平塘县', 'P', '107.32956664388', '25.828201706902', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522728, '罗甸县', 'L', '106.75854805682', '25.430837682972', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522729, '长顺县', 'Z', '106.45842122163', '26.028454545714', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522730, '龙里县', 'L', '106.98658596469', '26.459080630642', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522731, '惠水县', 'H', '106.66345262709', '26.138209889396', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522732, '三都水族自治县', 'S', '107.84263500353', '26.096765617985', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530102, '五华区', 'W', '102.7134232806', '25.049834961981', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530103, '盘龙区', 'P', '102.7585262121', '25.12237227983', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530111, '官渡区', 'G', '102.7504817066', '25.021196423859', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530112, '西山区', 'X', '102.6715571235', '25.043198760947', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530113, '东川区', 'D', '103.19445186746', '26.089054237623', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530114, '呈贡区', 'C', '102.82747259726', '24.891871210947', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530115, '晋宁区', 'J', '102.60241805181', '24.676098812517', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530124, '富民县', 'F', '102.50447319701', '25.228085092195', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530125, '宜良县', 'Y', '103.14755798426', '24.925286989652', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530126, '石林彝族自治县', 'S', '103.29650817676', '24.77770196132', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530127, '嵩明县', 'S', '103.04356394016', '25.344409459135', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530128, '禄劝彝族苗族自治县', 'L', '102.47742324184', '25.55767180024', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530129, '寻甸回族彝族自治县', 'X', '103.26357387135', '25.563893580433', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530181, '安宁市', 'A', '102.48440918413', '24.925601726344', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530302, '麒麟区', 'Q', '103.81143036949', '25.502101828437', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530303, '沾益区', 'Z', '103.82848532841', '25.606630798868', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530304, '马龙区', 'M', '103.58544688632', '25.433966374816', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530322, '陆良县', 'L', '103.67343249743', '25.035639470439', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530323, '师宗县', 'S', '103.99155634453', '24.827994969501', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530324, '罗平县', 'L', '104.31551019438', '24.890519724895', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530325, '富源县', 'F', '104.2614742434', '25.680279502133', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530326, '会泽县', 'H', '103.30348729192', '26.424215045561', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530381, '宣威市', 'X', '104.1115760691', '26.225598378324', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530402, '红塔区', 'H', '102.55156461759', '24.359801443673', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530403, '江川区', 'J', '102.76052700796', '24.293438700984', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530422, '澄江县', 'C', '102.91455487235', '24.679414908816', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530423, '通海县', 'T', '102.73242289128', '24.117891201574', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530424, '华宁县', 'H', '102.93549185853', '24.198581027163', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530425, '易门县', 'Y', '102.1695354962', '24.677404477592', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530426, '峨山彝族自治县', 'E', '102.41256450607', '24.174774239093', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530427, '新平彝族傣族自治县', 'X', '101.99642771261', '24.076262705278', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530428, '元江哈尼族彝族傣族自治县', 'Y', '102.00441463673', '23.603000905475', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530502, '隆阳区', 'L', '99.172070839289', '25.12688832219', 530500, 3, 'tr_0 tr_530000 tr_530500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530521, '施甸县', 'S', '99.195469362222', '24.728835000146', 530500, 3, 'tr_0 tr_530000 tr_530500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530523, '龙陵县', 'L', '98.695749912275', '24.592546947017', 530500, 3, 'tr_0 tr_530000 tr_530500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530524, '昌宁县', 'C', '99.611616576026', '24.833984919853', 530500, 3, 'tr_0 tr_530000 tr_530500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530581, '腾冲市', 'T', '98.497595035489', '25.026616860346', 530500, 3, 'tr_0 tr_530000 tr_530500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530602, '昭阳区', 'Z', '103.71347042315', '27.326144206053', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530621, '鲁甸县', 'L', '103.5644121645', '27.193107219133', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530622, '巧家县', 'Q', '102.93651934037', '26.914705038577', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530623, '盐津县', 'Y', '104.24157884246', '28.114384038516', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530624, '大关县', 'D', '103.89751489665', '27.754021401911', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530625, '永善县', 'Y', '103.6445690431', '28.234722481383', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530626, '绥江县', 'S', '103.9645523826', '28.604277931727', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530627, '镇雄县', 'Z', '104.88040422431', '27.447794634649', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530628, '彝良县', 'Y', '104.05444303021', '27.631690165547', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530629, '威信县', 'W', '105.05557676311', '27.85253746404', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530681, '水富市', 'S', '104.42243298394', '28.636106975262', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530702, '古城区', 'G', '100.23248033921', '26.883161684001', 530700, 3, 'tr_0 tr_530000 tr_530700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530721, '玉龙纳西族自治县', 'Y', '100.24352734105', '26.827391803625', 530700, 3, 'tr_0 tr_530000 tr_530700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530722, '永胜县', 'Y', '100.75758141133', '26.689950245419', 530700, 3, 'tr_0 tr_530000 tr_530700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530723, '华坪县', 'H', '101.27243012268', '26.635223014622', 530700, 3, 'tr_0 tr_530000 tr_530700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530724, '宁蒗彝族自治县', 'N', '100.85859038623', '27.287727826052', 530700, 3, 'tr_0 tr_530000 tr_530700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530802, '思茅区', 'S', '100.98355510298', '22.79249798436', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530821, '宁洱哈尼族彝族自治县', 'N', '101.05244246946', '23.054590179481', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530822, '墨江哈尼族自治县', 'M', '101.69858356155', '23.437725772256', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530823, '景东彝族自治县', 'J', '100.83848864452', '24.451863775495', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530824, '景谷傣族彝族自治县', 'J', '100.7094565801', '23.503204071241', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530825, '镇沅彝族哈尼族拉祜族自治县', 'Z', '101.11556882305', '24.010330833613', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530826, '江城哈尼族彝族自治县', 'J', '101.86847918429', '22.59168385943', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530827, '孟连傣族拉祜族佤族自治县', 'M', '99.590962825578', '22.335307615556', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530828, '澜沧拉祜族自治县', 'L', '99.938588283239', '22.561831918087', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530829, '西盟佤族自治县', 'X', '99.596622150289', '22.650656010974', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530902, '临翔区', 'L', '100.0884425304', '23.901401938645', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530921, '凤庆县', 'F', '99.934989222215', '24.586472458274', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530922, '云县', 'Y', '100.12953102441', '24.442807275329', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530923, '永德县', 'Y', '99.265075642606', '24.024871282777', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530924, '镇康县', 'Z', '98.831871224123', '23.768315480096', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530925, '双江拉祜族佤族布朗族傣族自治县', 'S', '99.834130982979', '23.479836504614', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530926, '耿马傣族佤族自治县', 'G', '99.403942176092', '23.543490995101', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530927, '沧源佤族自治县', 'C', '99.252721696084', '23.152878733913', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532301, '楚雄市', 'C', '101.55247228396', '25.038860388323', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532322, '双柏县', 'S', '101.64840700053', '24.694898530382', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532323, '牟定县', 'M', '101.55348099122', '25.318845903714', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532324, '南华县', 'N', '101.28042055018', '25.198587071156', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532325, '姚安县', 'Y', '101.2485272012', '25.509775443473', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532326, '大姚县', 'D', '101.33056746713', '25.727600600572', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532327, '永仁县', 'Y', '101.67249299667', '26.055565754521', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532328, '元谋县', 'Y', '101.8804452425', '25.710895319939', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532329, '武定县', 'W', '102.41053182037', '25.536089587807', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532331, '禄丰县', 'L', '102.08553135476', '25.155830804806', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532501, '个旧市', 'G', '103.16651860849', '23.364941534583', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532502, '开远市', 'K', '103.27355323709', '23.719907796912', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532503, '蒙自市', 'M', '103.37154588175', '23.402079885198', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532504, '弥勒市', 'M', '103.421489063', '24.417982225357', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532523, '屏边苗族自治县', 'P', '103.69343183232', '22.989989585513', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532524, '建水县', 'J', '102.83343959161', '23.640938563461', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532525, '石屏县', 'S', '102.50244661978', '23.712004452449', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532527, '泸西县', 'L', '103.77252314092', '24.53803716745', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532528, '元阳县', 'Y', '102.84143280386', '23.226198051926', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532529, '红河县', 'H', '102.42755057757', '23.374488738365', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532530, '金平苗族瑶族傣族自治县', 'J', '103.23246860579', '22.785560606183', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532531, '绿春县', 'L', '102.39849398755', '23.000164936586', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532532, '河口瑶族自治县', 'H', '103.9454436278', '22.535465602947', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532601, '文山市', 'W', '104.23854382746', '23.391944131908', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532622, '砚山县', 'Y', '104.3435508907', '23.6114865767', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532623, '西畴县', 'X', '104.67852542203', '23.443271275283', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532624, '麻栗坡县', 'M', '104.70954948078', '23.13158558356', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532625, '马关县', 'M', '104.40041497692', '23.018993577166', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532626, '丘北县', 'Q', '104.17344174074', '24.056993896218', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532627, '广南县', 'G', '105.06158238459', '24.052198510921', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532628, '富宁县', 'F', '105.63749017905', '23.63138040952', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532801, '景洪市', 'J', '100.80644312258', '22.017004423119', 532800, 3, 'tr_0 tr_530000 tr_532800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532822, '勐海县', 'M', '100.4594459398', '21.963433596681', 532800, 3, 'tr_0 tr_530000 tr_532800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532823, '勐腊县', 'M', '101.57152830823', '21.465280880862', 532800, 3, 'tr_0 tr_530000 tr_532800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532901, '大理市', 'D', '100.23651930044', '25.597604905452', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532922, '漾濞彝族自治县', 'Y', '99.964413758168', '25.676295762972', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532923, '祥云县', 'X', '100.55744657937', '25.489872506242', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532924, '宾川县', 'B', '100.57845668762', '25.835249028198', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO `hg_sys_provinces` (`id`, `title`, `pinyin`, `lng`, `lat`, `pid`, `level`, `tree`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(532925, '弥渡县', 'M', '100.49758601546', '25.349336028746', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532926, '南涧彝族自治县', 'N', '100.51554862227', '25.049426762094', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532927, '巍山彝族回族自治县', 'W', '100.31346033515', '25.233438729799', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532928, '永平县', 'Y', '99.547494899931', '25.4702064833', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532929, '云龙县', 'Y', '99.377416022867', '25.891945073902', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532930, '洱源县', 'E', '99.969209721453', '26.120093341888', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532931, '剑川县', 'J', '99.912091235112', '26.542516534181', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532932, '鹤庆县', 'H', '100.18249206302', '26.566197313345', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533102, '瑞丽市', 'R', '97.862485584208', '24.022816893105', 533100, 3, 'tr_0 tr_530000 tr_533100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533103, '芒市', 'M', '98.591359356114', '24.438010702758', 533100, 3, 'tr_0 tr_530000 tr_533100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533122, '梁河县', 'L', '98.303133631636', '24.810784458257', 533100, 3, 'tr_0 tr_530000 tr_533100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533123, '盈江县', 'Y', '97.938426535386', '24.711534266143', 533100, 3, 'tr_0 tr_530000 tr_533100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533124, '陇川县', 'L', '97.798530364124', '24.189467890549', 533100, 3, 'tr_0 tr_530000 tr_533100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533301, '泸水市', 'L', '98.864586163328', '25.829026769972', 533300, 3, 'tr_0 tr_530000 tr_533300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533323, '福贡县', 'F', '98.875649424493', '26.908055208498', 533300, 3, 'tr_0 tr_530000 tr_533300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533324, '贡山独龙族怒族自治县', 'G', '98.672399448687', '27.747067875272', 533300, 3, 'tr_0 tr_530000 tr_533300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533325, '兰坪白族普米族自治县', 'L', '99.423284669988', '26.459207904688', 533300, 3, 'tr_0 tr_530000 tr_533300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533401, '香格里拉市', 'X', '99.707444573899', '27.835760125321', 533400, 3, 'tr_0 tr_530000 tr_533400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533422, '德钦县', 'D', '98.924452656054', '28.470086006822', 533400, 3, 'tr_0 tr_530000 tr_533400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533423, '维西傈僳族自治县', 'W', '99.293465689934', '27.183170204022', 533400, 3, 'tr_0 tr_530000 tr_533400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540102, '城关区', 'C', '91.145100352371', '29.658331252915', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540103, '堆龙德庆区', 'D', '91.009963134209', '29.651625675009', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540104, '达孜区', 'D', '91.356318118388', '29.675409063815', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540121, '林周县', 'L', '91.26950057393', '29.898733205887', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540122, '当雄县', 'D', '91.107451746831', '30.479221726942', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540123, '尼木县', 'N', '90.171180066243', '29.437518981255', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540124, '曲水县', 'Q', '90.749958665453', '29.358987058337', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540127, '墨竹工卡县', 'M', '91.737266398592', '29.839752605055', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540171, '格尔木藏青工业园区', 'G', '91.120823915464', '29.650040274768', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540172, '拉萨经济技术开发区', 'L', '91.120823915464', '29.650040274768', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540173, '西藏文化旅游创意园区', 'X', '91.120823915464', '29.650040274768', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540174, '达孜工业园区', 'D', '91.356318118388', '29.675409063815', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540202, '桑珠孜区', 'S', '88.902951718862', '29.255582814198', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540221, '南木林县', 'N', '89.105704213077', '29.687938036552', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540222, '江孜县', 'J', '89.612012194954', '28.917634684239', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540223, '定日县', 'D', '87.129597739314', '28.663951983289', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540224, '萨迦县', 'S', '88.028269488152', '28.90493151262', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540225, '拉孜县', 'L', '87.643647318074', '29.087509679995', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540226, '昂仁县', 'A', '87.242427336755', '29.301060484014', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540227, '谢通门县', 'X', '88.268206799957', '29.438142414132', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540228, '白朗县', 'B', '89.268741991895', '29.111858951918', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540229, '仁布县', 'R', '89.848624967899', '29.236788327037', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540230, '康马县', 'K', '89.688244915761', '28.561443952501', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540231, '定结县', 'D', '87.772376743375', '28.369910769393', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540232, '仲巴县', 'Z', '84.038116876917', '29.775982232026', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540233, '亚东县', 'Y', '88.913440783145', '27.491108780091', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540234, '吉隆县', 'J', '85.304073768987', '28.858501664955', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540235, '聂拉木县', 'N', '85.988770403046', '28.160839360543', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540236, '萨嘎县', 'S', '85.239825701307', '29.334659688784', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540237, '岗巴县', 'G', '88.526529281476', '28.28036304226', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540302, '卡若区', 'K', '97.186654336416', '31.144248893947', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540321, '江达县', 'J', '98.224594520968', '31.50520701798', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540322, '贡觉县', 'G', '98.277334127289', '30.865966958412', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540323, '类乌齐县', 'L', '96.606717192399', '31.217793112281', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540324, '丁青县', 'D', '95.602643844218', '31.418402964614', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540325, '察雅县', 'C', '97.575123679628', '30.659864699371', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540326, '八宿县', 'B', '96.924360446152', '30.059028991399', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540327, '左贡县', 'Z', '97.847366832989', '29.676848537197', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540328, '芒康县', 'M', '98.599685480392', '29.685776117713', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540329, '洛隆县', 'L', '95.831306613477', '30.747126507478', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540330, '边坝县', 'B', '94.714371149159', '30.939624927347', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540402, '巴宜区', 'B', '94.36754427672', '29.641644546372', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540421, '工布江达县', 'G', '93.252419796678', '29.891367616241', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540422, '米林县', 'M', '94.219938578083', '29.220916541197', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540423, '墨脱县', 'M', '95.33949529751', '29.330937701878', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540424, '波密县', 'B', '95.773900121645', '29.865060090549', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540425, '察隅县', 'C', '97.473269749246', '28.667444137201', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540426, '朗县', 'L', '93.081368234407', '29.051902419086', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540602, '色尼区', 'S', '92.05984683665', '31.476117292678', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540621, '嘉黎县', 'J', '93.23873151504', '30.647062455597', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540622, '比如县', 'B', '93.685965938612', '31.48635726205', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540623, '聂荣县', 'N', '92.308654466293', '32.113707483115', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540624, '安多县', 'A', '91.688890677999', '32.271268023108', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540625, '申扎县', 'S', '88.716481108234', '30.936393285832', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540626, '索县', 'S', '93.792172958379', '31.892424309227', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540627, '班戈县', 'B', '90.016707727114', '31.398727622963', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540628, '巴青县', 'B', '94.059881564766', '31.924549424276', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540629, '尼玛县', 'N', '87.243292410868', '31.790953326638', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540630, '双湖县', 'S', '88.843427936123', '33.193503165809', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542521, '普兰县', 'P', '81.183094731974', '30.300162591078', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542522, '札达县', 'Z', '79.809323212178', '31.485343070014', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542523, '噶尔县', 'G', '80.102877146054', '32.497156823602', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542524, '日土县', 'R', '79.739109138263', '33.387186043872', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542525, '革吉县', 'G', '81.151664369638', '32.393356020044', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542526, '改则县', 'G', '84.06911336254', '32.308356643244', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542527, '措勤县', 'C', '85.165952205481', '31.022666379273', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610102, '新城区', 'X', '108.9673910385', '34.272724469533', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610103, '碑林区', 'B', '108.94049774781', '34.236473940412', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610104, '莲湖区', 'L', '108.95042644912', '34.271017203053', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610111, '灞桥区', 'B', '109.07141535554', '34.279127674951', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610112, '未央区', 'W', '108.95340118781', '34.299148106589', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610113, '雁塔区', 'Y', '108.95144045638', '34.220635239986', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610114, '阎良区', 'Y', '109.23246311822', '34.668363274699', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610115, '临潼区', 'L', '109.22043579558', '34.372747432848', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610116, '长安区', 'Z', '108.91358047235', '34.163290267305', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610117, '高陵区', 'G', '109.09438691387', '34.541093106058', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610118, '鄠邑区', 'H', '108.61142023271', '34.115020711599', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610122, '蓝田县', 'L', '109.32938812681', '34.157620654732', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610124, '周至县', 'Z', '108.22842183954', '34.169385269616', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610202, '王益区', 'W', '109.08141735858', '35.075322096471', 610200, 3, 'tr_0 tr_610000 tr_610200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610203, '印台区', 'Y', '109.10643408907', '35.120859282945', 610200, 3, 'tr_0 tr_610000 tr_610200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610204, '耀州区', 'Y', '108.98643790006', '34.91596030911', 610200, 3, 'tr_0 tr_610000 tr_610200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610222, '宜君县', 'Y', '109.12353674801', '35.404582194219', 610200, 3, 'tr_0 tr_610000 tr_610200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610302, '渭滨区', 'W', '107.15641916768', '34.377481132682', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610303, '金台区', 'J', '107.15342367813', '34.382351084696', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610304, '陈仓区', 'C', '107.39343842395', '34.360756335457', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610322, '凤翔县', 'F', '107.40737949665', '34.527616279899', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610323, '岐山县', 'Q', '107.62744727879', '34.449776962387', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610324, '扶风县', 'F', '107.9064530651', '34.381463351226', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610326, '眉县', 'M', '107.75639813644', '34.280375863086', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610327, '陇县', 'L', '106.87058365441', '34.898780253107', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610328, '千阳县', 'Q', '107.13946616644', '34.648544600794', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610329, '麟游县', 'L', '107.799514106', '34.683748667164', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610330, '凤县', 'F', '106.52255782187', '33.916583016343', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610331, '太白县', 'T', '107.32552913248', '34.064248441153', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610402, '秦都区', 'Q', '108.71243199239', '34.3351451161', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610403, '杨陵区', 'Y', '108.09151531881', '34.278012507654', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610404, '渭城区', 'W', '108.74345057148', '34.368110229368', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610422, '三原县', 'S', '108.94744650025', '34.623078955252', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610423, '泾阳县', 'J', '108.84937884705', '34.533316532768', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610424, '乾县', 'G', '108.24537762554', '34.534018266142', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610425, '礼泉县', 'L', '108.43161549166', '34.487390768504', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610426, '永寿县', 'Y', '108.14846878644', '34.698035535617', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610428, '长武县', 'Z', '107.80556078005', '35.211657338715', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610429, '旬邑县', 'X', '108.34046703665', '35.117963919719', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610430, '淳化县', 'C', '108.58744176373', '34.804776911295', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610431, '武功县', 'W', '108.20655106479', '34.266137667633', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610481, '兴平市', 'X', '108.49639400877', '34.305476520292', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610482, '彬州市', 'B', '108.08456557823', '35.049610571828', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610502, '临渭区', 'L', '109.4985962764', '34.504000470428', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610503, '华州区', 'H', '109.7784773716', '34.5187307401', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610522, '潼关县', 'T', '110.25250761972', '34.550326848532', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610523, '大荔县', 'D', '109.94845330291', '34.801832760484', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610524, '合阳县', 'H', '110.15539621274', '35.243872196866', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610525, '澄城县', 'C', '109.93843360325', '35.196572815551', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610526, '蒲城县', 'P', '109.59249651068', '34.961274128783', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610527, '白水县', 'B', '109.59752055374', '35.183287514613', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610528, '富平县', 'F', '109.18643744728', '34.757260440256', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610581, '韩城市', 'H', '110.44955264012', '35.482086787313', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610582, '华阴市', 'H', '110.09860075704', '34.571800158753', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610602, '宝塔区', 'B', '109.49959402433', '36.596890441313', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610603, '安塞区', 'A', '109.33541943984', '36.870098259307', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610621, '延长县', 'Y', '110.01847172589', '36.585328801705', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610622, '延川县', 'Y', '110.20054028665', '36.884136960993', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610623, '子长县', 'Z', '109.68138985954', '37.148816918367', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610625, '志丹县', 'Z', '108.77557747991', '36.828021135864', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610626, '吴起县', 'W', '108.18258966361', '36.932576099483', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610627, '甘泉县', 'G', '109.35752350454', '36.282688619053', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610628, '富县', 'F', '109.38659653355', '35.993367977969', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610629, '洛川县', 'L', '109.43840396825', '35.768300429421', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610630, '宜川县', 'Y', '110.17541306458', '36.056397437854', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610631, '黄龙县', 'H', '109.84654907671', '35.590233768069', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610632, '黄陵县', 'H', '109.26960598495', '35.585076348969', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610702, '汉台区', 'H', '107.03840167622', '33.074191093099', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610703, '南郑区', 'N', '106.94243318334', '33.005614599734', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610722, '城固县', 'C', '107.3406125803', '33.162399385178', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610723, '洋县', 'Y', '107.55246428058', '33.228862589315', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610724, '西乡县', 'X', '107.77339281906', '32.989397441895', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610725, '勉县', 'M', '106.67942594867', '33.159804746955', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610726, '宁强县', 'N', '106.26458864382', '32.835380199209', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610727, '略阳县', 'L', '106.16354400616', '33.333193777733', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610728, '镇巴县', 'Z', '107.9014456407', '32.54283336567', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610729, '留坝县', 'L', '106.92741441352', '33.623825216737', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610730, '佛坪县', 'F', '107.99742428443', '33.530693101588', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610802, '榆阳区', 'Y', '109.72755916953', '38.28241962673', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610803, '横山区', 'H', '109.30049134534', '37.968573394166', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610822, '府谷县', 'F', '111.0736281152', '39.03379562985', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610824, '靖边县', 'J', '108.80060049853', '37.605063193955', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610825, '定边县', 'D', '107.60756957446', '37.600459865341', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610826, '绥德县', 'S', '110.26942648536', '37.508907288933', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610827, '米脂县', 'M', '110.19045141747', '37.761397514329', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610828, '佳县', 'J', '110.49747741874', '38.025611678572', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610829, '吴堡县', 'W', '110.74645500778', '37.458269874078', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610830, '清涧县', 'Q', '110.12755916227', '37.094852887828', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610831, '子洲县', 'Z', '110.04239845247', '37.617025887547', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610881, '神木市', 'S', '110.50542966826', '38.848544495221', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610902, '汉滨区', 'H', '109.03359606476', '32.701196105738', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610921, '汉阴县', 'H', '108.51550698561', '32.899120857292', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610922, '石泉县', 'S', '108.25442679592', '33.044602110263', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610923, '宁陕县', 'N', '108.32056400011', '33.316555486503', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610924, '紫阳县', 'Z', '108.54159431661', '32.525785619364', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610925, '岚皋县', 'L', '108.90861535814', '32.312880776501', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610926, '平利县', 'P', '109.36854670128', '32.394804123185', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610927, '镇坪县', 'Z', '109.53349679292', '31.889643295791', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610928, '旬阳县', 'X', '109.37155674338', '32.839864221772', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610929, '白河县', 'B', '110.11958688053', '32.814846485284', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611002, '商州区', 'S', '109.94747163465', '33.86885529308', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611021, '洛南县', 'L', '110.15442748007', '34.097070538846', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611022, '丹凤县', 'D', '110.3335602886', '33.701537322921', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611023, '商南县', 'S', '110.88840847837', '33.537533476707', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611024, '山阳县', 'S', '109.88854863218', '33.537968382769', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611025, '镇安县', 'Z', '109.15957460914', '33.429044650147', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611026, '柞水县', 'Z', '109.120502272', '33.692026241945', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620102, '城关区', 'C', '103.83147490053', '36.063181475369', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620103, '七里河区', 'Q', '103.79241388204', '36.07212925843', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620104, '西固区', 'X', '103.63458007682', '36.094109365757', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620105, '安宁区', 'A', '103.72553503682', '36.109753754973', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620111, '红古区', 'H', '102.86542781272', '36.351863423179', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620121, '永登县', 'Y', '103.26662443823', '36.74209521344', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620122, '皋兰县', 'G', '103.95346415997', '36.338142148673', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620123, '榆中县', 'Y', '104.11956587928', '35.848851048242', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620171, '兰州新区', 'L', '103.76383312444', '36.082833434467', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620201, '市辖区', 'S', '98.208045429791', '39.821463455258', 620200, 3, 'tr_0 tr_620000 tr_620200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620302, '金川区', 'J', '102.20058588614', '38.525772245594', 620300, 3, 'tr_0 tr_620000 tr_620300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620321, '永昌县', 'Y', '101.97946358316', '38.252940956889', 620300, 3, 'tr_0 tr_620000 tr_620300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620402, '白银区', 'B', '104.15541276065', '36.541463568069', 620400, 3, 'tr_0 tr_620000 tr_620400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620403, '平川区', 'P', '104.83161394007', '36.733498751869', 620400, 3, 'tr_0 tr_620000 tr_620400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620421, '靖远县', 'J', '104.68251507796', '36.577096288837', 620400, 3, 'tr_0 tr_620000 tr_620400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620422, '会宁县', 'H', '105.05960693274', '35.698508053094', 620400, 3, 'tr_0 tr_620000 tr_620400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620423, '景泰县', 'J', '104.06944438436', '37.187406260097', 620400, 3, 'tr_0 tr_620000 tr_620400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620502, '秦州区', 'Q', '105.73041549435', '34.587315743121', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620503, '麦积区', 'M', '105.89559698949', '34.576336861448', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620521, '清水县', 'Q', '106.14359506621', '34.753882906363', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620522, '秦安县', 'Q', '105.68157480343', '34.864876111568', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620523, '甘谷县', 'G', '105.34247534291', '34.738300137398', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620524, '武山县', 'W', '104.89742838309', '34.727669101635', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620525, '张家川回族自治县', 'Z', '106.21139036271', '34.99490501302', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620602, '凉州区', 'L', '102.64857479651', '37.934121948376', 620600, 3, 'tr_0 tr_620000 tr_620600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620621, '民勤县', 'M', '103.10040027988', '38.630624826433', 620600, 3, 'tr_0 tr_620000 tr_620600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620622, '古浪县', 'G', '102.90362978165', '37.475801906601', 620600, 3, 'tr_0 tr_620000 tr_620600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620623, '天祝藏族自治县', 'T', '103.14862131966', '36.97759617654', 620600, 3, 'tr_0 tr_620000 tr_620600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620702, '甘州区', 'G', '100.48455772128', '38.934781471785', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620721, '肃南裕固族自治县', 'S', '99.621905418008', '38.843100205023', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620722, '民乐县', 'M', '100.81942903742', '38.436842233981', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620723, '临泽县', 'L', '100.17055476077', '39.158514444726', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620724, '高台县', 'G', '99.825759504337', '39.383646046807', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620725, '山丹县', 'S', '101.09561558172', '38.790452663306', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620802, '崆峒区', 'K', '106.68141452757', '35.548814892232', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620821, '泾川县', 'J', '107.37451813364', '35.338668597821', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620822, '灵台县', 'L', '107.62746120252', '35.07158181696', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620823, '崇信县', 'C', '107.04141513189', '35.308615839828', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620825, '庄浪县', 'Z', '106.04258582178', '35.208192125804', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620826, '静宁县', 'J', '105.73841580322', '35.528257189136', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620881, '华亭市', 'H', '106.65948599177', '35.223550762897', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620902, '肃州区', 'S', '98.514321853032', '39.751245509963', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620921, '金塔县', 'J', '98.908368236172', '39.990029254093', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620922, '瓜州县', 'G', '95.788736364512', '40.52610597895', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620923, '肃北蒙古族自治县', 'S', '94.883692395412', '39.518329738436', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620924, '阿克塞哈萨克族自治县', 'A', '94.346760190396', '39.640045316917', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620981, '玉门市', 'Y', '97.051711691182', '40.297620020884', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620982, '敦煌市', 'D', '94.668527025762', '40.147867484244', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621002, '西峰区', 'X', '107.65739112517', '35.736864475978', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621021, '庆城县', 'Q', '107.88840619724', '36.021726360644', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621022, '环县', 'H', '107.31446964419', '36.574427108907', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621023, '华池县', 'H', '107.99638952632', '36.467575129884', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621024, '合水县', 'H', '108.026447188', '35.8252622164', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621025, '正宁县', 'Z', '108.36637461671', '35.498218780898', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621026, '宁县', 'N', '107.93457092587', '35.507932974537', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621027, '镇原县', 'Z', '107.20757586986', '35.683230586316', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621102, '安定区', 'A', '104.61650040265', '35.585600016725', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621121, '通渭县', 'T', '105.24840362211', '35.217216821266', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621122, '陇西县', 'L', '104.64138059069', '35.010197162318', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621123, '渭源县', 'W', '104.22158401062', '35.142391958021', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621124, '临洮县', 'L', '103.8656010777', '35.400587040258', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621125, '漳县', 'Z', '104.4785953255', '34.854249981778', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621126, '岷县', 'M', '104.04339603983', '34.44440764065', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621202, '武都区', 'W', '104.93259336075', '33.398072188089', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621221, '成县', 'C', '105.7484779029', '33.756635187351', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621222, '文县', 'W', '104.68955842198', '32.949601280768', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621223, '宕昌县', 'D', '104.39938579987', '34.053486291359', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621224, '康县', 'K', '105.61539187549', '33.335376401996', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621225, '西和县', 'X', '105.30761048912', '34.016787358437', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621226, '礼县', 'L', '105.1835909694', '34.194685061207', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621227, '徽县', 'H', '106.09441787005', '33.77519418709', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621228, '两当县', 'L', '106.31141946599', '33.915122835173', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622901, '临夏市', 'L', '103.2495491776', '35.609898772689', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622921, '临夏县', 'L', '103.00251408439', '35.497397958837', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622922, '康乐县', 'K', '103.71547554223', '35.376109760702', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622923, '永靖县', 'Y', '103.29250749455', '35.963330304471', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622924, '广河县', 'G', '103.58240999619', '35.494101361696', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622925, '和政县', 'H', '103.35752370329', '35.430589904166', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622926, '东乡族自治县', 'D', '103.39561320437', '35.669329728624', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622927, '积石山保安族东乡族撒拉族自治县', 'J', '102.88251807505', '35.72349932364', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623001, '合作市', 'H', '102.917571573', '35.005935428196', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623021, '临潭县', 'L', '103.36053329624', '34.698639411522', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623022, '卓尼县', 'Z', '103.51361578396', '34.594916432804', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623023, '舟曲县', 'Z', '104.37748996239', '33.790814973644', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623024, '迭部县', 'D', '103.22844034558', '34.062020054097', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623025, '玛曲县', 'M', '102.07860004026', '34.003358168342', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623026, '碌曲县', 'L', '102.49442413371', '34.597087271566', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623027, '夏河县', 'X', '102.52857708038', '35.208324325541', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630102, '城东区', 'C', '101.80956903833', '36.605707645661', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630103, '城中区', 'C', '101.79048354964', '36.628800570589', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630104, '城西区', 'C', '101.77241422413', '36.634496979524', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630105, '城北区', 'C', '101.77240488176', '36.656293630837', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630121, '大通回族土族自治县', 'D', '101.69256375752', '36.932666463407', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630122, '湟中县', 'H', '101.57861675782', '36.506627546281', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630123, '湟源县', 'H', '101.26244861154', '36.688587514903', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630202, '乐都区', 'L', '102.40856633883', '36.487820051522', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630203, '平安区', 'P', '102.11442787756', '36.506553573162', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630222, '民和回族土族自治县', 'M', '102.11044407228', '36.508511080941', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630223, '互助土族自治县', 'H', '101.96456904899', '36.850021613826', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630224, '化隆回族自治县', 'H', '102.27044827345', '36.100988250893', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630225, '循化撒拉族自治县', 'X', '102.4953853206', '35.856667223862', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632221, '门源回族自治县', 'M', '101.62843803903', '37.382180626313', 632200, 3, 'tr_0 tr_630000 tr_632200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632222, '祁连县', 'Q', '100.25962157243', '38.182924871569', 632200, 3, 'tr_0 tr_630000 tr_632200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632223, '海晏县', 'H', '101.0005855486', '36.902376022515', 632200, 3, 'tr_0 tr_630000 tr_632200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632224, '刚察县', 'G', '100.15360607139', '37.327320072254', 632200, 3, 'tr_0 tr_630000 tr_632200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632321, '同仁县', 'T', '102.0254377812', '35.521865150524', 632300, 3, 'tr_0 tr_630000 tr_632300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632322, '尖扎县', 'J', '102.0375073242', '35.944284459868', 632300, 3, 'tr_0 tr_630000 tr_632300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632323, '泽库县', 'Z', '101.47359451319', '35.0420144951', 632300, 3, 'tr_0 tr_630000 tr_632300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632324, '河南蒙古族自治县', 'H', '101.62247338027', '34.740396071091', 632300, 3, 'tr_0 tr_630000 tr_632300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632521, '共和县', 'G', '100.62662348005', '36.288703317865', 632500, 3, 'tr_0 tr_630000 tr_632500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632522, '同德县', 'T', '100.58542386564', '35.259857775817', 632500, 3, 'tr_0 tr_630000 tr_632500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632523, '贵德县', 'G', '101.43953310384', '36.046158080751', 632500, 3, 'tr_0 tr_630000 tr_632500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632524, '兴海县', 'X', '99.994380072293', '35.594629879949', 632500, 3, 'tr_0 tr_630000 tr_632500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632525, '贵南县', 'G', '100.75359321473', '35.592415454611', 632500, 3, 'tr_0 tr_630000 tr_632500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632621, '玛沁县', 'M', '100.24556434882', '34.483569486002', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632622, '班玛县', 'B', '100.74360459645', '32.93850392747', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632623, '甘德县', 'G', '99.907510695578', '33.975003677602', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632624, '达日县', 'D', '99.658010113065', '33.754937373991', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632625, '久治县', 'J', '101.48853225585', '33.434773499408', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632626, '玛多县', 'M', '98.215883832099', '34.920748646186', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632701, '玉树市', 'Y', '97.015376401101', '32.999555650886', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632722, '杂多县', 'Z', '95.306964878828', '32.89924067586', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632723, '称多县', 'C', '97.115000009277', '33.374225698944', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632724, '治多县', 'Z', '95.61979357437', '33.857953267719', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632725, '囊谦县', 'N', '96.486918271283', '32.209194368698', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632726, '曲麻莱县', 'Q', '95.803750013992', '34.132298666997', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632801, '格尔木市', 'G', '94.933310210425', '36.412371046954', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632802, '德令哈市', 'D', '97.367470299975', '37.375345907463', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632803, '茫崖市', 'M', '90.87951750334', '38.261902814972', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632821, '乌兰县', 'W', '98.486735699295', '36.935747859032', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632822, '都兰县', 'D', '98.102704793777', '36.307611028682', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632823, '天峻县', 'T', '99.029242967967', '37.306903395111', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632857, '大柴旦行政委员会', 'D', '95.371722465415', '37.857987655919', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640104, '兴庆区', 'X', '106.29549376692', '38.479578929456', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640105, '西夏区', 'X', '106.15658124015', '38.496817469604', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640106, '金凤区', 'J', '106.24956089094', '38.478695238722', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640121, '永宁县', 'Y', '106.25960457536', '38.283001541521', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640122, '贺兰县', 'H', '106.3565182653', '38.560406689579', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); +INSERT INTO `hg_sys_provinces` (`id`, `title`, `pinyin`, `lng`, `lat`, `pid`, `level`, `tree`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(640181, '灵武市', 'L', '106.34644035545', '38.108658666793', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540502, '乃东区', 'N', '91.778681965641', '29.234229154985', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540521, '扎囊县', 'Z', '91.343627127639', '29.251164315795', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540522, '贡嘎县', 'G', '90.990582372498', '29.295585920341', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540523, '桑日县', 'S', '92.022157253696', '29.265175836421', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540524, '琼结县', 'Q', '91.690100777976', '29.030865581933', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540525, '曲松县', 'Q', '92.210174662975', '29.068424815624', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540526, '措美县', 'C', '91.439917573188', '28.444257990161', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540527, '洛扎县', 'L', '90.866452001915', '28.391634617398', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540528, '加查县', 'J', '92.600448881489', '29.146087474784', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540529, '隆子县', 'L', '92.468965520987', '28.414018998419', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540530, '错那县', 'C', '91.96375005827', '27.997004265923', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540531, '浪卡子县', 'L', '90.404646883462', '28.973992017804', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640302, '利通区', 'L', '106.21940702074', '37.990746080857', 640300, 3, 'tr_0 tr_640000 tr_640300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640303, '红寺堡区', 'H', '106.06842117808', '37.431882454446', 640300, 3, 'tr_0 tr_640000 tr_640300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640323, '盐池县', 'Y', '107.41337954864', '37.789295649909', 640300, 3, 'tr_0 tr_640000 tr_640300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640324, '同心县', 'T', '105.9205990776', '36.986269629165', 640300, 3, 'tr_0 tr_640000 tr_640300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640381, '青铜峡市', 'Q', '106.08537031661', '38.027412223967', 640300, 3, 'tr_0 tr_640000 tr_640300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640402, '原州区', 'Y', '106.29451461392', '36.009367675763', 640400, 3, 'tr_0 tr_640000 tr_640400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640422, '西吉县', 'X', '105.73538590857', '35.97007642089', 640400, 3, 'tr_0 tr_640000 tr_640400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640423, '隆德县', 'L', '106.1184982967', '35.631762315094', 640400, 3, 'tr_0 tr_640000 tr_640400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640424, '泾源县', 'J', '106.33739343083', '35.504361637679', 640400, 3, 'tr_0 tr_640000 tr_640400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640425, '彭阳县', 'P', '106.64454429656', '35.85540546349', 640400, 3, 'tr_0 tr_640000 tr_640400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640502, '沙坡头区', 'S', '105.20357090089', '37.505701418703', 640500, 3, 'tr_0 tr_640000 tr_640500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640521, '中宁县', 'Z', '105.6915371912', '37.497420805579', 640500, 3, 'tr_0 tr_640000 tr_640500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640522, '海原县', 'H', '105.65055514638', '36.570781489719', 640500, 3, 'tr_0 tr_640000 tr_640500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650102, '天山区', 'T', '87.638407777566', '43.800271358313', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650103, '沙依巴克区', 'S', '87.604670027697', '43.807262352761', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650104, '新市区', 'X', '87.575908441201', '43.861394002748', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650105, '水磨沟区', 'S', '87.648896662192', '43.838251163831', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650106, '头屯河区', 'T', '87.434506709858', '43.882653022602', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650107, '达坂城区', 'D', '88.317397656607', '43.36994274634', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650109, '米东区', 'M', '87.662134271848', '43.979247426398', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650121, '乌鲁木齐县', 'W', '87.416028745179', '43.477086065793', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650171, '乌鲁木齐经济技术开发区', 'W', '87.523118529771', '43.868981036009', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650172, '乌鲁木齐高新技术产业开发区', 'W', '87.58408445863', '43.87767236981', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650202, '独山子区', 'D', '84.893613283343', '44.334407392365', 650200, 3, 'tr_0 tr_650000 tr_650200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650203, '克拉玛依区', 'K', '84.866221962114', '45.596624206981', 650200, 3, 'tr_0 tr_650000 tr_650200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650204, '白碱滩区', 'B', '85.139510123686', '45.693951629764', 650200, 3, 'tr_0 tr_650000 tr_650200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650205, '乌尔禾区', 'W', '85.700304826442', '46.095295184689', 650200, 3, 'tr_0 tr_650000 tr_650200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650402, '高昌区', 'G', '89.192458882701', '42.948548691684', 650400, 3, 'tr_0 tr_650000 tr_650400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650421, '鄯善县', 'S', '90.220093886103', '42.874759228479', 650400, 3, 'tr_0 tr_650000 tr_650400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650422, '托克逊县', 'T', '88.660164359541', '42.798545831023', 650400, 3, 'tr_0 tr_650000 tr_650400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650502, '伊州区', 'Y', '93.521320462369', '42.832824924721', 650500, 3, 'tr_0 tr_650000 tr_650500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650521, '巴里坤哈萨克自治县', 'B', '93.022930953564', '43.605688770787', 650500, 3, 'tr_0 tr_650000 tr_650500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650522, '伊吾县', 'Y', '94.703825671285', '43.260676527466', 650500, 3, 'tr_0 tr_650000 tr_650500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652301, '昌吉市', 'C', '87.27386462195', '44.020126845939', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652302, '阜康市', 'F', '87.993677905062', '44.163137321346', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652323, '呼图壁县', 'H', '86.905143806731', '44.197654596132', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652324, '玛纳斯县', 'M', '86.220643452199', '44.3100628588', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652325, '奇台县', 'Q', '89.601080811724', '44.026897819018', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652327, '吉木萨尔县', 'J', '89.187122858141', '44.005717795203', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652328, '木垒哈萨克自治县', 'M', '90.292514737334', '43.840308302807', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652701, '博乐市', 'B', '82.057972254591', '44.860009784639', 652700, 3, 'tr_0 tr_650000 tr_652700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652702, '阿拉山口市', 'A', '82.560725272438', '45.179670079921', 652700, 3, 'tr_0 tr_650000 tr_652700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652722, '精河县', 'J', '82.900655316205', '44.606645943492', 652700, 3, 'tr_0 tr_650000 tr_652700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652723, '温泉县', 'W', '81.031145546486', '44.974856638705', 652700, 3, 'tr_0 tr_650000 tr_652700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652801, '库尔勒市', 'K', '86.181494309938', '41.732373221412', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652822, '轮台县', 'L', '84.258212152054', '41.783813000515', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652823, '尉犁县', 'W', '86.266036536399', '41.350122782054', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652824, '若羌县', 'R', '88.175324441896', '39.028991037175', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652825, '且末县', 'Q', '85.535990385731', '38.15138769413', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652826, '焉耆回族自治县', 'Y', '86.581222026277', '42.064850858728', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652827, '和静县', 'H', '86.390398220692', '42.329365035879', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652828, '和硕县', 'H', '86.883689037252', '42.288065062428', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652829, '博湖县', 'B', '86.638469149986', '41.986430356829', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652871, '库尔勒经济技术开发区', 'K', '86.229512961483', '41.71760888729', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652901, '阿克苏市', 'A', '80.269926757334', '41.173859926953', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652922, '温宿县', 'W', '80.245564352581', '41.282567249887', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652923, '库车县', 'K', '82.968458787284', '41.723447514833', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652924, '沙雅县', 'S', '82.788823736148', '41.227749329027', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652925, '新和县', 'X', '82.615823030526', '41.553999628477', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652926, '拜城县', 'B', '81.858516272038', '41.800706601984', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652927, '乌什县', 'W', '79.230868990897', '41.220871106999', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652928, '阿瓦提县', 'A', '80.381849245908', '40.649358802911', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652929, '柯坪县', 'K', '79.053213535614', '40.514055520966', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653001, '阿图什市', 'A', '76.174906408698', '39.722079128589', 653000, 3, 'tr_0 tr_650000 tr_653000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653022, '阿克陶县', 'A', '75.953725266709', '39.153888517642', 653000, 3, 'tr_0 tr_650000 tr_653000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653023, '阿合奇县', 'A', '78.45253927839', '40.942958224222', 653000, 3, 'tr_0 tr_650000 tr_653000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653024, '乌恰县', 'W', '75.26533363237', '39.725123590953', 653000, 3, 'tr_0 tr_650000 tr_653000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653101, '喀什市', 'K', '76.000312737915', '39.473649532912', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653121, '疏附县', 'S', '75.869168667361', '39.381291555212', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653122, '疏勒县', 'S', '76.056614395075', '39.406709108732', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653123, '英吉沙县', 'Y', '76.182075425651', '38.935670863521', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653124, '泽普县', 'Z', '77.266559423761', '38.190725516333', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653125, '莎车县', 'S', '77.252436713686', '38.420156752419', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653126, '叶城县', 'Y', '77.420097621865', '37.889166844427', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653127, '麦盖提县', 'M', '77.658824287414', '38.911194315553', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653128, '岳普湖县', 'Y', '76.78414771574', '39.239387333945', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653129, '伽师县', 'J', '76.730385568257', '39.493851605868', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653130, '巴楚县', 'B', '78.5557014018', '39.79078837708', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653131, '塔什库尔干塔吉克自治县', 'T', '75.230804744838', '37.779045640763', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653201, '和田市', 'H', '79.920212469755', '37.118335544466', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653221, '和田县', 'H', '79.866215595042', '37.090362410221', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653222, '墨玉县', 'M', '79.735479265358', '37.282993446907', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653223, '皮山县', 'P', '78.289871062405', '37.627248714375', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653224, '洛浦县', 'L', '80.195387611879', '37.079611030988', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653225, '策勒县', 'C', '80.813201268742', '37.004122359371', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653226, '于田县', 'Y', '81.683782914748', '36.86295413611', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653227, '民丰县', 'M', '82.702713427589', '37.070256968231', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654002, '伊宁市', 'Y', '81.284242405278', '43.915299436243', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654003, '奎屯市', 'K', '84.909449241687', '44.432057210004', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654004, '霍尔果斯市', 'H', '80.427129772427', '44.235308556093', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654021, '伊宁县', 'Y', '81.533906479394', '43.982909125124', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654022, '察布查尔锡伯自治县', 'C', '81.157924570907', '43.846690330452', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654023, '霍城县', 'H', '80.885281123201', '44.062249507399', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654024, '巩留县', 'G', '82.238225609409', '43.488485559536', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654025, '新源县', 'X', '83.267022301497', '43.435927002185', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654026, '昭苏县', 'Z', '81.137377539147', '43.163496741509', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654027, '特克斯县', 'T', '81.842587249244', '43.224248213467', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654028, '尼勒克县', 'N', '82.51800753168', '43.804594836238', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654201, '塔城市', 'T', '82.987235518406', '46.750948254373', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654202, '乌苏市', 'W', '84.720088146964', '44.424048034452', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654221, '额敏县', 'E', '83.633374454783', '46.531884861309', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654223, '沙湾县', 'S', '85.626144686035', '44.331949461741', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654224, '托里县', 'T', '83.612909438315', '45.94274280505', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654225, '裕民县', 'Y', '82.9894387025', '46.207453546928', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654226, '和布克赛尔蒙古自治县', 'H', '85.735008883548', '46.798685112637', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654301, '阿勒泰市', 'A', '88.139226564024', '47.832752648475', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654321, '布尔津县', 'B', '86.881360170273', '47.707951723888', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654322, '富蕴县', 'F', '89.531953408055', '46.999951053055', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654323, '福海县', 'F', '87.493157246325', '47.118140737535', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654324, '哈巴河县', 'H', '86.424817684664', '48.066148902458', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654325, '青河县', 'Q', '90.389444407193', '46.68019396705', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654326, '吉木乃县', 'J', '85.880818240706', '47.449018413257', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(659001, '石河子市', 'S', '114.5163190347', '36.772534944449', 659000, 3, 'tr_0 tr_650000 tr_659000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(659002, '阿拉尔市', 'A', '81.287354225395', '40.553263894706', 659000, 3, 'tr_0 tr_650000 tr_659000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(659003, '图木舒克市', 'T', '79.075616286896', '39.871209077425', 659000, 3, 'tr_0 tr_650000 tr_659000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(659004, '五家渠市', 'W', '87.549936632296', '44.172444518901', 659000, 3, 'tr_0 tr_650000 tr_659000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(659006, '铁门关市', 'T', '85.686857831724', '41.863648697693', 659000, 3, 'tr_0 tr_650000 tr_659000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130102, '长安区', 'Z', '114.54561160958', '38.043256136498', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130104, '桥西区', 'Q', '114.46741977426', '38.010381080199', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130105, '新华区', 'X', '114.46943844641', '38.057119539196', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130107, '井陉矿区', 'J', '114.06863186515', '38.070565834517', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130108, '裕华区', 'Y', '114.53758291426', '38.012087686284', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130109, '藁城区', 'G', '114.85337790442', '38.027816555321', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130110, '鹿泉区', 'L', '114.32059757764', '38.09174945759', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130111, '栾城区', 'L', '114.65457561879', '37.905816364165', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130121, '井陉县', 'J', '114.15146299928', '38.038386214927', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130123, '正定县', 'Z', '114.57748106365', '38.151713727954', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130125, '行唐县', 'X', '114.55960676028', '38.444238747676', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130126, '灵寿县', 'L', '114.38947775771', '38.314629370046', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130127, '高邑县', 'G', '114.61841307286', '37.621879561553', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130128, '深泽县', 'S', '115.20740369913', '38.190451203069', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130129, '赞皇县', 'Z', '114.39246354556', '37.671667061291', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130130, '无极县', 'W', '114.98243934348', '38.18543617028', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130131, '平山县', 'P', '113.98543503085', '38.271951013311', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130132, '元氏县', 'Y', '114.53256551866', '37.772338553855', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130133, '赵县', 'Z', '114.78259655058', '37.761858522888', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130171, '石家庄高新技术产业开发区', 'S', '114.47561896798', '38.014375062684', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130172, '石家庄循环化工园区', 'S', '114.69991493042', '38.002797025837', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130181, '辛集市', 'X', '115.22445084279', '37.949309043173', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130183, '晋州市', 'J', '115.0505290147', '38.039491309736', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130184, '新乐市', 'X', '114.69053218327', '38.349292647959', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130202, '路南区', 'L', '118.20604028639', '39.612986996735', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130203, '路北区', 'L', '118.2239040796', '39.673985965975', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130204, '古冶区', 'G', '118.45340092552', '39.739735914766', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130205, '开平区', 'K', '118.26860762449', '39.677143635862', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130207, '丰南区', 'F', '118.0903655757', '39.581540485109', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130208, '丰润区', 'F', '118.16854133135', '39.838353430851', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130209, '曹妃甸区', 'C', '118.46645986221', '39.279283996335', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130224, '滦南县', 'L', '118.68040524315', '39.510044702469', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130225, '乐亭县', 'L', '118.91938406305', '39.431931320096', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130227, '迁西县', 'Q', '118.32038397781', '40.147837151362', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130229, '玉田县', 'Y', '117.74543440564', '39.906592348189', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130271, '唐山市芦台经济技术开发区', 'T', '117.83195389236', '39.334328330689', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130272, '唐山市汉沽管理区', 'T', '117.88832858176', '39.367125548614', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130273, '唐山高新技术产业开发区', 'T', '118.18645947204', '39.636583724147', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130274, '河北唐山海港经济开发区', 'H', '119.00992050252', '39.237818631017', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130281, '遵化市', 'Z', '117.97237521307', '40.195533204033', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130283, '迁安市', 'Q', '118.70645736056', '40.004183924931', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130284, '滦州市', 'L', '118.71048006247', '39.747115765489', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130302, '海港区', 'H', '119.61747524097', '39.940412688357', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130303, '山海关区', 'S', '119.78243521397', '39.984445641831', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130304, '北戴河区', 'B', '119.49152607118', '39.841005667936', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130306, '抚宁区', 'F', '119.25154914402', '39.88141356935', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130321, '青龙满族自治县', 'Q', '118.95648129587', '40.412793702313', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130322, '昌黎县', 'C', '119.16937521021', '39.71905083388', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130324, '卢龙县', 'L', '118.89948911126', '39.897958466103', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130371, '秦皇岛市经济技术开发区', 'Q', '119.48439783729', '39.943641230776', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130372, '北戴河新区', 'B', '119.47981001139', '39.831809170026', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130402, '邯山区', 'H', '114.49638868967', '36.586692191979', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130403, '丛台区', 'C', '114.49943259789', '36.642672565982', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130404, '复兴区', 'F', '114.44809470749', '36.610368592227', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130406, '峰峰矿区', 'F', '114.21948332131', '36.425653614399', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130407, '肥乡区', 'F', '114.80654708226', '36.55382525367', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130408, '永年区', 'Y', '114.55062514246', '36.747569389575', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130423, '临漳县', 'L', '114.62642694614', '36.340765980595', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130424, '成安县', 'C', '114.67657655802', '36.449796208953', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130425, '大名县', 'D', '115.15461253007', '36.291288466231', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130426, '涉县', 'S', '113.69758434883', '36.590691663211', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130427, '磁县', 'C', '114.38043173139', '36.380358940947', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130430, '邱县', 'Q', '115.19339516368', '36.817362417143', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130431, '鸡泽县', 'J', '114.89658577064', '36.916398206414', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130432, '广平县', 'G', '114.95441490649', '36.489779995612', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130433, '馆陶县', 'G', '115.28853676635', '36.553956728653', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130434, '魏县', 'W', '114.94545044631', '36.366156454371', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130435, '曲周县', 'Q', '114.96340442939', '36.771544831336', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130471, '邯郸经济技术开发区', 'H', '114.54562822824', '36.631262731204', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130473, '邯郸冀南新区', 'H', '114.54562822824', '36.631262731204', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130481, '武安市', 'W', '114.21051607638', '36.70248828628', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130502, '桥东区', 'Q', '114.51347113674', '37.073749959651', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130503, '桥西区', 'Q', '114.4743934996', '37.066172415704', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130521, '邢台县', 'X', '114.14341085818', '37.17710928752', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130522, '临城县', 'L', '114.50544333972', '37.450788548442', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130523, '内丘县', 'N', '114.51849293403', '37.292857912047', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130524, '柏乡县', 'B', '114.69949736209', '37.488758727152', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130525, '隆尧县', 'L', '114.77661608165', '37.355908006295', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130526, '任县', 'R', '114.67860600983', '37.126726783523', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130527, '南和县', 'N', '114.69054772395', '37.01099797056', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130528, '宁晋县', 'N', '114.92556169283', '37.625612279932', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130529, '巨鹿县', 'J', '115.04358735887', '37.227088328938', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130530, '新河县', 'X', '115.24854716945', '37.534590601536', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130531, '广宗县', 'G', '115.14960474634', '37.080457122162', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130532, '平乡县', 'P', '115.03658174369', '37.069096393044', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130533, '威县', 'W', '115.27361761861', '36.981581608663', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130534, '清河县', 'Q', '115.67439356765', '37.046375401617', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130535, '临西县', 'L', '115.50762943786', '36.87675996654', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130571, '河北邢台经济开发区', 'H', '114.51146225613', '37.076685950966', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130581, '南宫市', 'N', '115.4145290548', '37.364069402723', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130582, '沙河市', 'S', '114.50947385688', '36.861127341145', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130602, '竞秀区', 'J', '115.46543414161', '38.883787961691', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130606, '莲池区', 'L', '115.53548768833', '38.860675807041', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130607, '满城区', 'M', '115.3283750886', '38.955441208686', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130608, '清苑区', 'Q', '115.49660588179', '38.771001774749', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130609, '徐水区', 'X', '115.66247952133', '39.024712583834', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130623, '涞水县', 'L', '115.72054302508', '39.400334198489', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130624, '阜平县', 'F', '114.20156347384', '38.855351444796', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130626, '定兴县', 'D', '115.81441011189', '39.269423528527', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130627, '唐县', 'T', '114.9894471146', '38.754019925125', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130628, '高阳县', 'G', '115.78544721513', '38.706257734087', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130629, '容城县', 'R', '115.86863129349', '39.048559435416', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130630, '涞源县', 'L', '114.70047561679', '39.366271691524', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130631, '望都县', 'W', '115.16158760286', '38.700157645549', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130632, '安新县', 'A', '115.94242628266', '38.941734298593', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130633, '易县', 'Y', '115.50360664612', '39.355054469981', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130634, '曲阳县', 'Q', '114.7514548138', '38.628384104122', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130635, '蠡县', 'L', '115.59044548045', '38.494200963238', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130636, '顺平县', 'S', '115.14159743069', '38.843261370364', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130637, '博野县', 'B', '115.47046698806', '38.463408004952', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130638, '雄县', 'X', '116.11460144552', '39.000180119499', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130671, '保定高新技术产业开发区', 'B', '115.47146383769', '38.879987768455', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130672, '保定白沟新城', 'B', '116.06423983354', '39.145149134834', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130681, '涿州市', 'Z', '115.98161971138', '39.491065832', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130682, '定州市', 'D', '114.99649620776', '38.522198840134', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130683, '安国市', 'A', '115.33340802488', '38.424828318687', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130684, '高碑店市', 'G', '115.88056905507', '39.332335447462', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130702, '桥东区', 'Q', '114.90060577763', '40.794268437423', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130703, '桥西区', 'Q', '114.87651609843', '40.825605695041', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130705, '宣化区', 'X', '115.1054444068', '40.614591888266', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130706, '下花园区', 'X', '115.29351688226', '40.508145182672', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130708, '万全区', 'W', '114.74742582376', '40.773149648997', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130709, '崇礼区', 'C', '115.28954933632', '40.98047788587', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130722, '张北县', 'Z', '114.7263751121', '41.164943620015', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130723, '康保县', 'K', '114.60635583664', '41.858636884497', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130724, '沽源县', 'G', '115.69540744878', '41.676015876097', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130725, '尚义县', 'S', '113.97552438548', '41.081888482486', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130726, '蔚县', 'W', '114.5954005518', '39.847088636366', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130727, '阳原县', 'Y', '114.15752413604', '40.109588388731', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130728, '怀安县', 'H', '114.39246911506', '40.680369343116', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130730, '怀来县', 'H', '115.52455288485', '40.420289890382', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130731, '涿鹿县', 'Z', '115.21138346203', '40.385834075003', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130732, '赤城县', 'C', '115.83850589957', '40.918761216841', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130771, '张家口市高新技术产业开发区', 'Z', '114.89257223145', '40.773237202691', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130772, '张家口市察北管理区', 'Z', '115.13535097349', '41.463489368202', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130773, '张家口市塞北管理区', 'Z', '115.80931788745', '41.877919284073', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130802, '双桥区', 'S', '117.94942790899', '40.980824477401', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130803, '双滦区', 'S', '117.80657828883', '40.964729148178', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130804, '鹰手营子矿区', 'Y', '117.66560909159', '40.552043233623', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130821, '承德县', 'C', '118.18045573699', '40.774367194936', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130822, '兴隆县', 'X', '117.50742737264', '40.423454029635', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130824, '滦平县', 'L', '117.33949787111', '40.94756096291', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130825, '隆化县', 'L', '117.7454510243', '41.319898805021', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130826, '丰宁满族自治县', 'F', '116.65239270009', '41.215336380004', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130827, '宽城满族自治县', 'K', '118.49159436055', '40.617151507814', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130828, '围场满族蒙古族自治县', 'W', '117.76656434785', '41.944323773611', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130871, '承德高新技术产业开发区', 'C', '117.96939750997', '40.957856012338', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130881, '平泉市', 'P', '118.70742672204', '41.023755625929', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130902, '新华区', 'X', '116.87243317375', '38.320366719478', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130903, '运河区', 'Y', '116.8386119713', '38.316522737476', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130921, '沧县', 'C', '116.88439779466', '38.299452743407', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130922, '青县', 'Q', '116.81057477836', '38.58846475864', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130923, '东光县', 'D', '116.54340955698', '37.894513906653', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130924, '海兴县', 'H', '117.50441804918', '38.149402516518', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130925, '盐山县', 'Y', '117.23741362448', '38.064318399559', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130926, '肃宁县', 'S', '115.83651767998', '38.428905919718', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130927, '南皮县', 'N', '116.71560115883', '38.045187886965', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130928, '吴桥县', 'W', '116.39739206243', '37.633908755554', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130929, '献县', 'X', '116.12956002887', '38.195981438007', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130930, '孟村回族自治县', 'M', '117.11043607455', '38.059839127888', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130971, '河北沧州经济开发区', 'H', '116.84558075595', '38.310215141107', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130972, '沧州高新技术产业开发区', 'C', '116.81727200975', '38.34342368505', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130973, '沧州渤海新区', 'C', '117.7623777537', '38.282913560669', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130981, '泊头市', 'P', '116.58462803581', '38.089256915446', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130982, '任丘市', 'R', '116.1056050955', '38.717348630775', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130983, '黄骅市', 'H', '117.33648109172', '38.377493900735', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130984, '河间市', 'H', '116.10562809212', '38.451356515106', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131002, '安次区', 'A', '116.70963326617', '39.526159764041', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131003, '广阳区', 'G', '116.71761426148', '39.528611447334', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131022, '固安县', 'G', '116.30542004093', '39.444484855304', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131023, '永清县', 'Y', '116.50542928985', '39.327852998574', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131024, '香河县', 'X', '117.0124021078', '39.767939188546', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131025, '大城县', 'D', '116.66040917846', '38.710858640026', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131026, '文安县', 'W', '116.464609479', '38.87895049307', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131028, '大厂回族自治县', 'D', '116.99640912565', '39.892208394086', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131071, '廊坊经济技术开发区', 'L', '116.76777922809', '39.587610159458', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131081, '霸州市', 'B', '116.3983972663', '39.130920596981', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131082, '三河市', 'S', '117.08458787248', '39.988099552443', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131102, '桃城区', 'T', '115.68139532011', '37.741636751694', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131103, '冀州区', 'J', '115.58542988146', '37.557086025833', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131121, '枣强县', 'Z', '115.7305629044', '37.519363689764', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131122, '武邑县', 'W', '115.89451363117', '37.807764276867', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131123, '武强县', 'W', '115.98961391178', '38.046856805237', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131124, '饶阳县', 'R', '115.73257160535', '38.241037525428', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131125, '安平县', 'A', '115.52554928532', '38.240506922191', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131126, '故城县', 'G', '115.97260216135', '37.353347552477', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131127, '景县', 'J', '116.2774107853', '37.698814551395', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131128, '阜城县', 'F', '116.18242153525', '37.868732457906', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131171, '河北衡水高新技术产业开发区', 'H', '115.73456139967', '37.807821775773', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131172, '衡水滨湖新区', 'H', '115.70627999969', '37.701616037093', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131182, '深州市', 'S', '115.56636927583', '38.006941234922', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640202, '大武口区', '', '', '', 640200, 3, 'tr_0 tr_640000 tr_640200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640205, '惠农区', '', '', '', 640200, 3, 'tr_0 tr_640000 tr_640200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640221, '平罗县', '', '', '', 640200, 3, 'tr_0 tr_640000 tr_640200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_serve_license` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_serve_license` ( + `id` bigint(20) NOT NULL COMMENT '许可ID', + `group` varchar(50) NOT NULL COMMENT '分组', + `name` varchar(128) NOT NULL COMMENT '许可名称', + `appid` varchar(64) NOT NULL COMMENT '应用ID', + `secret_key` varchar(255) DEFAULT NULL COMMENT '应用秘钥', + `remote_addr` varchar(64) DEFAULT NULL COMMENT '最后连接地址', + `online_limit` int(11) DEFAULT '1' COMMENT '在线限制', + `login_times` bigint(20) DEFAULT NULL COMMENT '登录次数', + `last_login_at` datetime DEFAULT NULL COMMENT '最后登录时间', + `last_active_at` datetime DEFAULT NULL COMMENT '最后心跳', + `routes` json DEFAULT NULL COMMENT '路由表,空使用默认分组路由', + `allowed_ips` varchar(512) DEFAULT NULL COMMENT 'IP白名单', + `end_at` datetime NOT NULL COMMENT '授权有效期', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `status` tinyint(1) DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间' +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='系统_服务许可证'; + +-- +-- 转存表中的数据 `hg_sys_serve_license` +-- + +INSERT INTO `hg_sys_serve_license` (`id`, `group`, `name`, `appid`, `secret_key`, `remote_addr`, `online_limit`, `login_times`, `last_login_at`, `last_active_at`, `routes`, `allowed_ips`, `end_at`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, 'cron', '定时任务', '1002', 'hotgo', '127.0.0.1:62082', 1, 193, '2024-07-21 21:46:36', '2024-07-21 21:59:08', NULL, '127.0.0.1', '2033-03-09 00:00:00', '这是默认的定时任务TCP客户端授权凭证。', 1, '2023-03-11 00:00:00', '2024-07-21 21:59:08'), +(2, 'auth', '授权服务', 'mengshuai', '123456', '127.0.0.1:50640', 1, 3, '2023-07-26 17:05:30', '2023-07-26 17:07:01', '["ExampleRPCHelloReq", "ExampleHelloReq", "AuthSummaryReq"]', '127.0.0.1', '2033-03-09 00:00:00', '这是一个测试的授权服务,可以为第三方平台提供授权支持。', 1, '2023-03-11 00:00:00', '2023-07-26 17:07:01'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_serve_log` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_serve_log` ( + `id` bigint(20) NOT NULL COMMENT '日志ID', + `trace_id` varchar(50) DEFAULT NULL COMMENT '链路ID', + `level_format` varchar(32) DEFAULT NULL COMMENT '日志级别', + `content` text COMMENT '日志内容', + `stack` json DEFAULT NULL COMMENT '打印堆栈', + `line` varchar(255) NOT NULL COMMENT '调用行', + `trigger_ns` bigint(20) DEFAULT NULL COMMENT '触发时间(ns)', + `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统_服务日志'; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_sys_sms_log` +-- + +CREATE TABLE IF NOT EXISTS `hg_sys_sms_log` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `event` varchar(64) NOT NULL COMMENT '事件', + `mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手机号', + `code` varchar(256) DEFAULT '' COMMENT '验证码或短信内容', + `times` bigint(20) NOT NULL COMMENT '验证次数', + `ip` varchar(128) DEFAULT NULL COMMENT 'ip地址', + `status` tinyint(1) DEFAULT '1' COMMENT '状态(1未验证,2已验证)', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '更新时间' +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='系统_短信发送记录'; + +-- +-- 转存表中的数据 `hg_sys_sms_log` +-- + +INSERT INTO `hg_sys_sms_log` (`id`, `event`, `mobile`, `code`, `times`, `ip`, `status`, `created_at`, `updated_at`) VALUES +(1, 'code', '1530380571', '1234', 1, '39.165.245.100', 1, '2022-12-16 16:01:30', '2022-01-24 11:33:16'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `hg_test_category` +-- + +CREATE TABLE IF NOT EXISTS `hg_test_category` ( + `id` bigint(20) NOT NULL COMMENT '分类ID', + `name` varchar(255) NOT NULL COMMENT '分类名称', + `short_name` varchar(128) DEFAULT NULL COMMENT '简称', + `description` varchar(255) DEFAULT NULL COMMENT '描述', + `sort` int(11) NOT NULL COMMENT '排序', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `status` tinyint(1) DEFAULT '1' COMMENT '状态', + `created_at` datetime DEFAULT NULL COMMENT '创建时间', + `updated_at` datetime DEFAULT NULL COMMENT '修改时间', + `deleted_at` datetime DEFAULT NULL COMMENT '删除时间' +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COMMENT='测试分类'; + +-- +-- 转存表中的数据 `hg_test_category` +-- + +INSERT INTO `hg_test_category` (`id`, `name`, `short_name`, `description`, `sort`, `remark`, `status`, `created_at`, `updated_at`, `deleted_at`) VALUES +(1, '官方新闻', 'G', '用于演示关联表和字典选项生成和使用。', 10, '', 1, '2023-01-03 00:00:00', '2023-01-03 00:00:00', NULL), +(2, '移动应用', 'Y', '', 20, '', 1, '2023-01-03 00:00:00', '2023-01-03 00:00:00', NULL), +(3, '微信公众号', 'W', '', 30, '', 1, '2023-01-03 00:00:00', '2023-01-03 00:00:00', NULL), +(4, '系统搭建', 'X', '', 40, '', 1, '2023-01-03 00:00:00', '2023-01-03 00:00:00', NULL); + +-- +-- Indexes for dumped tables +-- + +-- +-- Indexes for table `hg_addon_hgexample_table` +-- +ALTER TABLE `hg_addon_hgexample_table` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `hg_addon_hgexample_tenant_order` +-- +ALTER TABLE `hg_addon_hgexample_tenant_order` + ADD PRIMARY KEY (`id`), + ADD KEY `order_sn` (`order_sn`), + ADD KEY `member_id` (`user_id`), + ADD KEY `merchant_id` (`merchant_id`), + ADD KEY `agent_id` (`tenant_id`); + +-- +-- Indexes for table `hg_admin_cash` +-- +ALTER TABLE `hg_admin_cash` + ADD PRIMARY KEY (`id`), + ADD KEY `admin_id` (`member_id`); + +-- +-- Indexes for table `hg_admin_credits_log` +-- +ALTER TABLE `hg_admin_credits_log` + ADD PRIMARY KEY (`id`), + ADD KEY `member_id` (`member_id`); + +-- +-- Indexes for table `hg_admin_dept` +-- +ALTER TABLE `hg_admin_dept` + ADD PRIMARY KEY (`id`), + ADD KEY `pid` (`pid`); + +-- +-- Indexes for table `hg_admin_member` +-- +ALTER TABLE `hg_admin_member` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `invite_code` (`invite_code`), + ADD KEY `dept_id` (`dept_id`), + ADD KEY `pid` (`pid`); + +-- +-- Indexes for table `hg_admin_member_post` +-- +ALTER TABLE `hg_admin_member_post` + ADD PRIMARY KEY (`member_id`,`post_id`); + +-- +-- Indexes for table `hg_admin_member_role` +-- +ALTER TABLE `hg_admin_member_role` + ADD PRIMARY KEY (`member_id`,`role_id`); + +-- +-- Indexes for table `hg_admin_menu` +-- +ALTER TABLE `hg_admin_menu` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `name` (`name`), + ADD KEY `pid` (`pid`), + ADD KEY `status` (`status`), + ADD KEY `type` (`type`); + +-- +-- Indexes for table `hg_admin_notice` +-- +ALTER TABLE `hg_admin_notice` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `hg_admin_notice_read` +-- +ALTER TABLE `hg_admin_notice_read` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `notice_id` (`notice_id`,`member_id`); + +-- +-- Indexes for table `hg_admin_oauth` +-- +ALTER TABLE `hg_admin_oauth` + ADD PRIMARY KEY (`id`), + ADD KEY `oauth_client` (`oauth_client`,`oauth_openid`), + ADD KEY `member_id` (`member_id`); + +-- +-- Indexes for table `hg_admin_order` +-- +ALTER TABLE `hg_admin_order` + ADD PRIMARY KEY (`id`), + ADD KEY `order_sn` (`order_sn`), + ADD KEY `member_id` (`member_id`); + +-- +-- Indexes for table `hg_admin_post` +-- +ALTER TABLE `hg_admin_post` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `hg_admin_role` +-- +ALTER TABLE `hg_admin_role` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `hg_admin_role_casbin` +-- +ALTER TABLE `hg_admin_role_casbin` + ADD PRIMARY KEY (`id`) USING BTREE; + +-- +-- Indexes for table `hg_admin_role_menu` +-- +ALTER TABLE `hg_admin_role_menu` + ADD PRIMARY KEY (`role_id`,`menu_id`); + +-- +-- Indexes for table `hg_pay_log` +-- +ALTER TABLE `hg_pay_log` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `order_sn` (`order_sn`), + ADD KEY `member_id` (`member_id`); + +-- +-- Indexes for table `hg_pay_refund` +-- +ALTER TABLE `hg_pay_refund` + ADD PRIMARY KEY (`id`), + ADD KEY `order_sn` (`order_sn`); + +-- +-- Indexes for table `hg_sys_addons_config` +-- +ALTER TABLE `hg_sys_addons_config` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `addon_name_2` (`addon_name`,`key`), + ADD KEY `addon_name` (`addon_name`), + ADD KEY `addon_name_3` (`addon_name`,`group`); + +-- +-- Indexes for table `hg_sys_addons_install` +-- +ALTER TABLE `hg_sys_addons_install` + ADD PRIMARY KEY (`id`) USING BTREE, + ADD UNIQUE KEY `name` (`name`); + +-- +-- Indexes for table `hg_sys_attachment` +-- +ALTER TABLE `hg_sys_attachment` + ADD PRIMARY KEY (`id`), + ADD KEY `md5` (`md5`); + +-- +-- Indexes for table `hg_sys_blacklist` +-- +ALTER TABLE `hg_sys_blacklist` + ADD PRIMARY KEY (`id`) USING BTREE, + ADD UNIQUE KEY `name` (`ip`); + +-- +-- Indexes for table `hg_sys_config` +-- +ALTER TABLE `hg_sys_config` + ADD PRIMARY KEY (`id`), + ADD KEY `group` (`group`), + ADD KEY `key` (`key`); + +-- +-- Indexes for table `hg_sys_cron` +-- +ALTER TABLE `hg_sys_cron` + ADD PRIMARY KEY (`id`) USING BTREE; + +-- +-- Indexes for table `hg_sys_cron_group` +-- +ALTER TABLE `hg_sys_cron_group` + ADD PRIMARY KEY (`id`) USING BTREE; + +-- +-- Indexes for table `hg_sys_dict_data` +-- +ALTER TABLE `hg_sys_dict_data` + ADD PRIMARY KEY (`id`), + ADD KEY `dict_data_idx` (`type`); + +-- +-- Indexes for table `hg_sys_dict_type` +-- +ALTER TABLE `hg_sys_dict_type` + ADD PRIMARY KEY (`id`) USING BTREE, + ADD UNIQUE KEY `dict_type` (`type`); + +-- +-- Indexes for table `hg_sys_ems_log` +-- +ALTER TABLE `hg_sys_ems_log` + ADD PRIMARY KEY (`id`) USING BTREE, + ADD KEY `email` (`email`); + +-- +-- Indexes for table `hg_sys_gen_codes` +-- +ALTER TABLE `hg_sys_gen_codes` + ADD PRIMARY KEY (`id`) USING BTREE; + +-- +-- Indexes for table `hg_sys_gen_curd_demo` +-- +ALTER TABLE `hg_sys_gen_curd_demo` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `hg_sys_gen_tree_demo` +-- +ALTER TABLE `hg_sys_gen_tree_demo` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `hg_sys_log` +-- +ALTER TABLE `hg_sys_log` + ADD PRIMARY KEY (`id`), + ADD KEY `error_code` (`error_code`), + ADD KEY `req_id` (`req_id`), + ADD KEY `member_id` (`member_id`); + +-- +-- Indexes for table `hg_sys_login_log` +-- +ALTER TABLE `hg_sys_login_log` + ADD PRIMARY KEY (`id`), + ADD KEY `member_id` (`member_id`), + ADD KEY `req_id` (`req_id`); + +-- +-- Indexes for table `hg_sys_provinces` +-- +ALTER TABLE `hg_sys_provinces` + ADD PRIMARY KEY (`id`), + ADD KEY `pid` (`pid`); + +-- +-- Indexes for table `hg_sys_serve_license` +-- +ALTER TABLE `hg_sys_serve_license` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `appid` (`appid`); + +-- +-- Indexes for table `hg_sys_serve_log` +-- +ALTER TABLE `hg_sys_serve_log` + ADD PRIMARY KEY (`id`), + ADD KEY `member_id` (`level_format`), + ADD KEY `traceid` (`trace_id`); + +-- +-- Indexes for table `hg_sys_sms_log` +-- +ALTER TABLE `hg_sys_sms_log` + ADD PRIMARY KEY (`id`) USING BTREE, + ADD KEY `mobile` (`mobile`); + +-- +-- Indexes for table `hg_test_category` +-- +ALTER TABLE `hg_test_category` + ADD PRIMARY KEY (`id`); + +-- +-- AUTO_INCREMENT for dumped tables +-- + +-- +-- AUTO_INCREMENT for table `hg_addon_hgexample_table` +-- +ALTER TABLE `hg_addon_hgexample_table` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',AUTO_INCREMENT=7; +-- +-- AUTO_INCREMENT for table `hg_addon_hgexample_tenant_order` +-- +ALTER TABLE `hg_addon_hgexample_tenant_order` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',AUTO_INCREMENT=2; +-- +-- AUTO_INCREMENT for table `hg_admin_cash` +-- +ALTER TABLE `hg_admin_cash` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',AUTO_INCREMENT=2; +-- +-- AUTO_INCREMENT for table `hg_admin_credits_log` +-- +ALTER TABLE `hg_admin_credits_log` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '变动ID',AUTO_INCREMENT=8; +-- +-- AUTO_INCREMENT for table `hg_admin_dept` +-- +ALTER TABLE `hg_admin_dept` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '部门ID',AUTO_INCREMENT=113; +-- +-- AUTO_INCREMENT for table `hg_admin_member` +-- +ALTER TABLE `hg_admin_member` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '管理员ID',AUTO_INCREMENT=14; +-- +-- AUTO_INCREMENT for table `hg_admin_menu` +-- +ALTER TABLE `hg_admin_menu` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '菜单ID',AUTO_INCREMENT=2431; +-- +-- AUTO_INCREMENT for table `hg_admin_notice` +-- +ALTER TABLE `hg_admin_notice` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '公告ID',AUTO_INCREMENT=33; +-- +-- AUTO_INCREMENT for table `hg_admin_notice_read` +-- +ALTER TABLE `hg_admin_notice_read` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '记录ID',AUTO_INCREMENT=9; +-- +-- AUTO_INCREMENT for table `hg_admin_oauth` +-- +ALTER TABLE `hg_admin_oauth` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键'; +-- +-- AUTO_INCREMENT for table `hg_admin_order` +-- +ALTER TABLE `hg_admin_order` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',AUTO_INCREMENT=2; +-- +-- AUTO_INCREMENT for table `hg_admin_post` +-- +ALTER TABLE `hg_admin_post` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '岗位ID',AUTO_INCREMENT=7; +-- +-- AUTO_INCREMENT for table `hg_admin_role` +-- +ALTER TABLE `hg_admin_role` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '角色ID',AUTO_INCREMENT=211; +-- +-- AUTO_INCREMENT for table `hg_admin_role_casbin` +-- +ALTER TABLE `hg_admin_role_casbin` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT; +-- +-- AUTO_INCREMENT for table `hg_pay_log` +-- +ALTER TABLE `hg_pay_log` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',AUTO_INCREMENT=2; +-- +-- AUTO_INCREMENT for table `hg_pay_refund` +-- +ALTER TABLE `hg_pay_refund` + MODIFY `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID'; +-- +-- AUTO_INCREMENT for table `hg_sys_addons_config` +-- +ALTER TABLE `hg_sys_addons_config` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '配置ID',AUTO_INCREMENT=2; +-- +-- AUTO_INCREMENT for table `hg_sys_addons_install` +-- +ALTER TABLE `hg_sys_addons_install` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',AUTO_INCREMENT=2; +-- +-- AUTO_INCREMENT for table `hg_sys_attachment` +-- +ALTER TABLE `hg_sys_attachment` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '文件ID',AUTO_INCREMENT=9; +-- +-- AUTO_INCREMENT for table `hg_sys_blacklist` +-- +ALTER TABLE `hg_sys_blacklist` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '黑名单ID',AUTO_INCREMENT=8; +-- +-- AUTO_INCREMENT for table `hg_sys_config` +-- +ALTER TABLE `hg_sys_config` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '配置ID',AUTO_INCREMENT=129; +-- +-- AUTO_INCREMENT for table `hg_sys_cron` +-- +ALTER TABLE `hg_sys_cron` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务ID',AUTO_INCREMENT=11; +-- +-- AUTO_INCREMENT for table `hg_sys_cron_group` +-- +ALTER TABLE `hg_sys_cron_group` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务分组ID',AUTO_INCREMENT=3; +-- +-- AUTO_INCREMENT for table `hg_sys_dict_data` +-- +ALTER TABLE `hg_sys_dict_data` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '字典数据ID',AUTO_INCREMENT=171; +-- +-- AUTO_INCREMENT for table `hg_sys_dict_type` +-- +ALTER TABLE `hg_sys_dict_type` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '字典类型ID',AUTO_INCREMENT=45; +-- +-- AUTO_INCREMENT for table `hg_sys_ems_log` +-- +ALTER TABLE `hg_sys_ems_log` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',AUTO_INCREMENT=5; +-- +-- AUTO_INCREMENT for table `hg_sys_gen_codes` +-- +ALTER TABLE `hg_sys_gen_codes` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '生成ID',AUTO_INCREMENT=12; +-- +-- AUTO_INCREMENT for table `hg_sys_gen_curd_demo` +-- +ALTER TABLE `hg_sys_gen_curd_demo` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',AUTO_INCREMENT=16; +-- +-- AUTO_INCREMENT for table `hg_sys_gen_tree_demo` +-- +ALTER TABLE `hg_sys_gen_tree_demo` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',AUTO_INCREMENT=41; +-- +-- AUTO_INCREMENT for table `hg_sys_log` +-- +ALTER TABLE `hg_sys_log` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID'; +-- +-- AUTO_INCREMENT for table `hg_sys_login_log` +-- +ALTER TABLE `hg_sys_login_log` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID'; +-- +-- AUTO_INCREMENT for table `hg_sys_serve_license` +-- +ALTER TABLE `hg_sys_serve_license` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '许可ID',AUTO_INCREMENT=3; +-- +-- AUTO_INCREMENT for table `hg_sys_serve_log` +-- +ALTER TABLE `hg_sys_serve_log` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID'; +-- +-- AUTO_INCREMENT for table `hg_sys_sms_log` +-- +ALTER TABLE `hg_sys_sms_log` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',AUTO_INCREMENT=2; +-- +-- AUTO_INCREMENT for table `hg_test_category` +-- +ALTER TABLE `hg_test_category` + MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类ID',AUTO_INCREMENT=5; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/server/storage/data/sqlite/data.sql b/server/storage/data/sqlite/data.sql new file mode 100644 index 0000000..be42a94 --- /dev/null +++ b/server/storage/data/sqlite/data.sql @@ -0,0 +1,5134 @@ +-- SET NAMES utf8; +-- SET time_zone = '+00:00'; +-- SET foreign_key_checks = 0; +-- SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; + +-- SET NAMES utf8mb4; + +INSERT INTO `hg_addon_hgexample_table` (`id`, `pid`, `level`, `tree`, `category_id`, `flag`, `title`, `description`, `content`, `image`, `images`, `attachfile`, `attachfiles`, `map`, `star`, `price`, `views`, `activity_at`, `start_at`, `end_at`, `switch`, `sort`, `avatar`, `sex`, `qq`, `email`, `mobile`, `hobby`, `channel`, `city_id`, `remark`, `status`, `created_by`, `updated_by`, `created_at`, `updated_at`, `deleted_at`) VALUES +(1, 0, 1, '', 1, '[1, 2]', '测试标题', '描述', '

这是内容............

', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqamvhlq4w3ki6bl.webp', '[\"https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqap5l9brk2lkavu.jpg\", \"https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqaqua7fw8ukbbp5.jpg\"]', 'http://localhost:8000/attachment/2023-07-18/cu54ama4z54oejf5xx.mp3', '[\"https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqawg96ba4cuezvv.xlsx\", \"https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqaup19k9oznyixz.doc\"]', '[{\"key\": \"qwe\", \"value\": \"123\"}, {\"key\": \"asd\", \"value\": \"456\"}]', 3.0, 88.00, 10, '2022-12-23', '2022-12-01 00:00:00', '2022-12-31 23:59:59', 1, 20, '', 15, '133814250', '133814250@qq.com', '15303830571', '[3, 2, 1]', 1, 140406, '备注!', 1, 1, 1, '2022-12-15 19:30:14', '2023-07-18 20:05:45', NULL), +(2, 0, 1, '', 0, '[1]', '测试2', '描述', '

不知道写点啥!


', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqbmxmtaq06gbnqa.jpeg', '[\"https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqborf529kf4cxbm.jpeg\"]', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqawg96ba4cuezvv.xlsx', '[\"https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqaup19k9oznyixz.doc\"]', '{}', 2.5, 10.00, 0, '2023-02-18', NULL, NULL, 2, 30, '', 0, '', '1561561@qq.com', '15303830571', '[2, 1]', 3, 140214, '', 1, 1, 1, '2023-02-06 14:17:11', '2023-11-13 17:18:18', NULL), +(3, 1, 2, 'tr_1 ', 0, '[1]', 'AAA', '', '', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqamvhlq4w3ki6bl.webp', '[\"https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqborf529kf4cxbm.jpeg\"]', '', '{}', '{}', 1.0, 10.00, 0, '2023-11-13', NULL, NULL, 1, 40, '', 0, '13311', '1331@qq.cc', '15303830571', '{}', 0, 0, '', 1, 1, 1, '2023-11-13 17:34:42', '2023-11-13 17:55:26', NULL), +(4, 1, 2, 'tr_1 ', 0, '[1]', 'BBB', '', '', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqamvhlq4w3ki6bl.webp', '[\"https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqborf529kf4cxbm.jpeg\"]', '', '{}', '{}', 2.5, 10.00, 0, '2023-11-13', NULL, NULL, 0, 50, '', 0, '12212', '165165@q.cc', '15303830561', '{}', 0, 0, '', 1, 1, 1, '2023-11-13 17:43:58', '2023-11-13 17:43:58', NULL), +(5, 3, 3, 'tr_1 tr_3', 0, '[1]', 'A1', '', '', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqamvhlq4w3ki6bl.webp', '[\"https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdqborf529kf4cxbm.jpeg\"]', '', '{}', '{}', 1.0, 10.00, 0, '2023-11-13', NULL, NULL, 1, 60, '', 0, '10121212', '122112@qq.cc', '15303830571', '{}', 0, 0, '', 1, 1, 1, '2023-11-13 17:45:22', '2023-12-29 14:22:12', NULL); + +INSERT INTO `hg_addon_hgexample_tenant_order` (`id`, `tenant_id`, `merchant_id`, `user_id`, `product_name`, `order_sn`, `money`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, 8, 11, 12, '羊毛混纺大衣', '20230502074731zsv1Vh', 99.90, '', 1, '2024-04-10 00:00:00', '2024-04-19 00:00:00'); + +INSERT INTO `hg_admin_cash` (`id`, `member_id`, `money`, `fee`, `last_money`, `ip`, `status`, `msg`, `handle_at`, `created_at`) VALUES +(1, 1, 100.00, 3.00, 97.00, '127.0.0.1', 2, '', '2023-05-29 14:17:17', '2023-05-29 14:16:57'); + +INSERT INTO `hg_admin_credits_log` (`id`, `member_id`, `app_id`, `addons_name`, `credit_type`, `credit_group`, `before_num`, `num`, `after_num`, `remark`, `ip`, `map_id`, `status`, `created_at`, `updated_at`) VALUES +(1, 1, 'admin', '', 'balance', 'apply_cash', 99391.78, -100.00, 99291.78, '后台申请提现', '127.0.0.1', 1, 0, '2023-05-29 14:16:57', '2023-05-29 14:16:57'), +(2, 1, 'admin', '', 'balance', 'op_incr', 99291.78, -1.00, 99290.78, '为后台用户:8 操作增加余额:1', '127.0.0.1', 0, 0, '2023-07-06 17:17:39', '2023-07-06 17:17:39'), +(3, 8, 'admin', '', 'balance', 'incr', 3.22, 1.00, 4.22, '后台用户:1 为你操作增加余额:1', '127.0.0.1', 0, 0, '2023-07-06 17:17:39', '2023-07-06 17:17:39'); + +INSERT INTO `hg_admin_dept` (`id`, `pid`, `name`, `code`, `type`, `leader`, `phone`, `email`, `level`, `tree`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(100, 0, 'hotgo', 'hotgo', 'company', 'mengshuai', '15303830571', '133814250@qq.com', 1, '', 10, 1, '2022-01-04 09:54:52', '2024-04-12 09:29:30'), +(101, 100, '深圳总公司', 'shenzhen', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 2, 'tr_100 ', 20, 1, '2022-01-04 17:54:52', '2023-08-02 14:03:23'), +(102, 100, '租户', 'tenant', 'tenant', 'hotgo', '15888888888', 'hotgo@qq.com', 2, 'tr_100 ', 1000, 1, '2022-01-04 01:54:52', '2024-04-13 22:24:58'), +(103, 101, '研发部门', 'science', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 40, 1, '2022-01-04 17:54:52', '2024-04-12 09:29:37'), +(105, 101, '测试部门', 'test', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 50, 1, '2022-01-04 17:54:52', '2024-04-12 09:29:41'), +(106, 101, '财务部门', 'finance', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 60, 1, '2022-01-04 17:54:52', '2024-04-12 09:29:45'), +(107, 101, '运维部门', 'maintain', 'company', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_101 ', 70, 1, '2022-01-04 09:54:52', '2024-04-12 09:29:49'), +(110, 111, '用户', 'user', 'user', 'hotgo', '15888888888', 'hotgo@qq.com', 4, 'tr_100 tr_102 tr_111 ', 10, 1, '2024-04-12 09:18:44', '2024-04-13 22:25:07'), +(111, 102, '商户', 'merchant', 'merchant', 'hotgo', '15888888888', 'hotgo@qq.com', 3, 'tr_100 tr_102 ', 2000, 1, '2024-04-12 09:31:58', '2024-04-14 22:00:20'); + +INSERT INTO `hg_admin_member` (`id`, `dept_id`, `role_id`, `real_name`, `username`, `password_hash`, `salt`, `password_reset_token`, `integral`, `balance`, `avatar`, `sex`, `qq`, `email`, `mobile`, `birthday`, `city_id`, `address`, `pid`, `level`, `tree`, `invite_code`, `cash`, `last_active_at`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, 100, 1, '孟帅', 'admin', 'a7c588fffeb2c1d99b29879d7fe97c78', '6541561', '', 89.00, 99290.78, 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', 1, '133814250', '133814250@qq.com', '15303830571', '2016-04-16', 410172, '莲花街001号', 0, 1, '', '111', '{\"name\": \"孟帅\", \"account\": \"15303830571\", \"payeeCode\": \"https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8mqal5isvcb58g.jpg\"}', '2024-04-21 22:58:56', NULL, 1, '2021-02-12 17:59:45', '2024-04-21 22:58:56'), +(3, 100, 2, '测试管理员', 'test', 'a7c588fffeb2c1d99b29879d7fe97c78', '6541561', '', 0.00, 4.00, '', 1, '', 'c@qq.cc', '15303888888', '2016-04-13', 371100, '大潮街道666号', 1, 2, 'tr_1 ', '222', NULL, '2024-04-12 12:44:18', '', 1, '2022-02-11 17:59:45', '2024-04-12 12:44:18'), +(8, 102, 200, '阿萌', 'ameng', '382df3b083a27886edb94e669a857c33', 'hfuUEb', '', 11.00, 4.22, '', 2, '', '', '', NULL, 0, '', 1, 2, 'tr_1 ', '333', NULL, '2024-04-16 18:56:00', '', 1, '2023-02-03 17:34:31', '2024-04-16 18:56:00'), +(9, 100, 206, '黄敏', 'test_finance', '151f5f6bb8b223fc7b589a32effb6f91', 'FhShzw', '', 0.00, 0.00, 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', 1, '', '', '', NULL, 0, '', 1, 2, 'tr_1 ', '5jZUI3uWLfcj', NULL, NULL, '', 1, '2023-08-02 11:30:45', '2023-08-02 11:31:09'), +(11, 111, 209, '刘芳', 'abai', '5787c7a121190011fac8376b1d3e0396', 'puUFvx', '', 0.00, 0.00, 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', 1, '', '', '', NULL, 0, '', 8, 3, 'tr_1 tr_8 ', 'SH5akjqInb2p', NULL, '2024-04-16 18:56:02', '', 1, '2023-08-02 14:24:50', '2024-04-16 18:56:02'), +(12, 110, 210, '李明', 'asong', '18d1e667e2e756c03186ff6d33b18fd4', 'ONYhgf', '', 0.00, 0.00, 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', 1, '', '', '', NULL, 0, '', 11, 4, 'tr_1 tr_8 tr_11 ', 'pHffclXhgeg9', NULL, '2024-04-16 18:56:01', '', 1, '2023-08-02 14:50:49', '2024-04-16 18:56:01'), +(13, 110, 210, '', 'user123', 'a67ec13a65125a6b2566c4229c6c496a', 'auQwMY', '', 0.00, 0.00, 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', 1, '', '', '', NULL, 0, '', 1, 2, 'tr_1 ', 'bpZPxskFMBra', NULL, '2024-04-12 11:52:31', '', 1, '2024-04-12 10:50:46', '2024-04-12 22:29:03'); + +INSERT INTO `hg_admin_member_post` (`member_id`, `post_id`) VALUES +(3, 4), +(8, 2), +(9, 4), +(10, 4), +(11, 4); + +INSERT INTO `hg_admin_member_role` (`member_id`, `role_id`) VALUES +(1, 1), +(2, 2); + +INSERT INTO `hg_admin_menu` (`id`, `pid`, `level`, `tree`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `sort`, `remark`, `status`, `updated_at`, `created_at`) VALUES +(2047, 0, 1, '', 'Dashboard', 'Dashboard', '/dashboard', 'DashboardOutlined', 1, '/dashboard/console', 'dashboard', '控制台', 'LAYOUT', 0, '', 0, 1, '', 0, 0, 0, 10, '这是一个备注..', 1, '2023-11-13 15:16:58', '2022-07-17 11:40:03'), +(2048, 2047, 2, 'tr_2047 ', '主控台', 'dashboard_console', 'console', '', 2, '', '/console/stat', '主控台', '/dashboard/console/console', 0, '', 0, 1, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2022-07-17 11:45:09'), +(2050, 2047, 2, 'tr_2047 ', '工作台', 'dashboard_workplace', 'workplace', '', 2, '', 'dashboard_workplace', '工作台', '/dashboard/workplace/workplace', 0, '', 0, 1, '', 0, 0, 0, 40, '', 1, '2023-11-13 15:16:58', '2022-07-17 11:45:09'), +(2061, 0, 1, '', '组织管理', 'Org', '/org', 'AppstoreOutlined', 1, '/org/user', '', '', 'LAYOUT', 1, '', 0, 0, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2022-09-16 06:08:19'), +(2062, 2061, 2, 'tr_2061 ', '后台用户', 'user', 'user', '', 2, '', '/dept/list,/post/list,/role/list,/member/list,/dept/option', '', '/org/user/user', 0, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-16 06:09:25'), +(2063, 2061, 2, 'tr_2061 ', '部门管理', 'org_dept', 'dept', '', 2, '', '', '', '/org/dept/dept', 0, '', 0, 0, '', 1, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2022-09-16 14:10:12'), +(2064, 2061, 2, 'tr_2061 ', '岗位管理', 'org_post', 'post', '', 2, '', '/post/list', '', '/org/post/post', 0, '', 0, 0, '', 1, 0, 0, 30, '', 1, '2023-11-13 15:16:58', '2022-09-16 14:11:05'), +(2065, 0, 1, '', '权限管理', 'Permission', '/permission', 'SafetyCertificateOutlined', 1, '/permission/menu', '', '', 'LAYOUT', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2023-11-13 15:16:58', '2022-09-15 22:08:19'), +(2066, 2065, 2, 'tr_2065 ', '菜单权限', 'permission_menu', 'menu', '', 2, '', '/menu/list', '', '/permission/menu/menu', 0, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-16 06:09:25'), +(2067, 2065, 2, 'tr_2065 ', '角色权限', 'permission_role', 'role', '', 2, '', '/role/list,/role/dataScope/select,/role/getPermissions', '', '/permission/role/role', 0, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-15 22:09:25'), +(2068, 0, 1, '', '系统设置', 'System', '/system', 'SettingOutlined', 1, '/system/config', '', '', 'LAYOUT', 1, '', 0, 0, '', 0, 0, 0, 120, '', 1, '2023-11-17 15:53:10', '2022-09-15 09:17:57'), +(2069, 2068, 2, 'tr_2068 ', '配置管理', 'system_config', 'config', '', 2, '', '', '', '/system/config/system', 0, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-16 01:19:01'), +(2070, 2068, 2, 'tr_2068 ', '字典管理', 'system_dict', 'dict', '', 2, '', '', '', '/system/dict/index', 1, '', 0, 0, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2022-09-16 17:33:05'), +(2071, 2068, 2, 'tr_2068 ', '定时任务', 'system_cron', 'cron', '', 2, '', '', '', '/system/cron/index', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2023-11-13 15:16:58', '2022-09-16 17:33:34'), +(2072, 2068, 2, 'tr_2068 ', '黑名单', 'system_blacklist', 'blacklist', '', 2, '', '', '', '/system/blacklist/index', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2023-11-13 15:16:58', '2022-09-16 17:34:01'), +(2073, 2219, 3, 'tr_2093 tr_2219 ', '个人设置', 'home_account', 'account', '', 2, '', '', '', '/home/account/account', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:49', '2022-09-16 17:34:35'), +(2074, 2093, 2, 'tr_2093 ', '日志管理', 'Logs', '/log', '', 1, '/apply/log/log', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-12 13:41:45', '2022-09-16 01:38:32'), +(2075, 2074, 3, 'tr_2093 tr_2074 ', '全局日志', 'log', 'log', '', 2, '', '/log/list', '', '/log/log/index', 0, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:32', '2022-09-09 17:39:16'), +(2076, 2074, 3, 'tr_2093 tr_2074 ', '登录日志', 'login_log', 'login-log', '', 2, '', '', '', '/log/login-log/index', 0, '', 0, 0, '', 1, 0, 0, 20, '', 1, '2023-11-17 15:27:32', '2022-09-15 20:04:20'), +(2077, 2074, 3, 'tr_2093 tr_2074 ', '全局日志详情', 'log_view', 'view/:id?', '', 2, '', '/log/view', '', '/log/log/view', 0, 'log', 0, 0, '', 0, 1, 0, 15, '', 1, '2023-11-17 15:27:32', '2022-09-14 20:07:04'), +(2082, 2076, 4, 'tr_2093 tr_2074 tr_2076 ', '登录日志详情', 'loginLogView', 'view/:id?', '', 3, '', '/loginLog/view', '', '/log/login-log/view', 0, 'login_log', 0, 0, '', 0, 1, 0, 62, '', 1, '2023-11-17 15:27:32', '2022-09-14 20:07:04'), +(2083, 2076, 4, 'tr_2093 tr_2074 tr_2076 ', '登录日志列表', 'login_log_index', 'index', '', 3, '', '/loginLog/list', '', '/log/login-log/index', 0, 'login_log', 0, 0, '', 0, 1, 0, 61, '', 1, '2023-11-17 15:27:32', '2022-09-15 04:38:33'), +(2084, 2074, 3, 'tr_2093 tr_2074 ', '短信记录', 'sms_log', 'sms', '', 1, '', '/smsLog/list', '', '/log/sms-log/index', 0, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2023-11-17 15:27:32', '2022-09-17 19:13:51'), +(2087, 2074, 3, 'tr_2093 tr_2074 ', '服务日志', 'monitor_serve_log', 'serve_log', '', 2, '', '', '', '/monitor/serve-log/index', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2023-11-17 15:27:32', '2022-09-18 20:59:28'), +(2088, 2087, 4, 'tr_2093 tr_2074 tr_2087 ', '服务日志详情', 'monitor_serve_log_view', 'view/:id?', '', 3, '', '/serveLog/view', '', '/monitor/serve-log/view', 0, 'monitor_serve_log', 0, 0, '', 0, 1, 0, 62, '', 1, '2023-11-17 15:27:32', '2022-09-14 20:07:04'), +(2089, 2087, 4, 'tr_2093 tr_2074 tr_2087 ', '服务日志列表', 'monitor_serve_log_index', 'index', '', 3, '', '/serveLog/list', '', '/monitor/serve-log/index', 0, 'monitor_serve_log', 0, 0, '', 0, 1, 0, 61, '', 1, '2023-11-17 15:27:32', '2022-09-15 04:38:33'), +(2090, 0, 1, '', '系统监控', 'Monitors', '/monitor', 'FundProjectionScreenOutlined', 1, '', '', '', 'LAYOUT', 1, '', 0, 0, '', 0, 0, 0, 110, '', 1, '2023-11-17 15:34:42', '2022-09-15 17:38:32'), +(2091, 2090, 2, 'tr_2090 ', '在线用户', 'monitor_online', 'online', '', 2, '', '/monitor/userOnlineList', '', '/monitor/online/index', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-18 21:23:36'), +(2092, 2090, 2, 'tr_2090 ', '服务监控', 'monitor_serve_monitor', 'serve_monitor', '', 2, '', '', '', '/monitor/serve-monitor/index', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-18 21:23:36'), +(2093, 0, 1, '', '系统应用', 'Applys', '/apply', 'CodeSandboxOutlined', 1, '/apply/log/log', '', '', 'LAYOUT', 1, '', 0, 0, '', 0, 0, 0, 100, '', 1, '2024-04-12 15:39:05', '2022-09-18 21:29:53'), +(2094, 2093, 2, 'tr_2093 ', '通知公告', 'apply_notice', 'notice', '', 2, '', '/notice/list', '', '/apply/notice/index', 1, '', 0, 0, '', 0, 0, 0, 300, '', 1, '2023-11-17 15:28:00', '2022-09-18 21:30:19'), +(2095, 2093, 2, 'tr_2093 ', '附件管理', 'apply_attachment', 'attachment', '', 2, '', '/attachment/list', '', '/apply/attachment/index', 1, '', 0, 0, '', 0, 0, 0, 200, '', 1, '2023-11-17 15:27:58', '2022-09-18 21:30:40'), +(2096, 2093, 2, 'tr_2093 ', '地区编码', 'apply_provinces', 'provinces', '', 2, '', '/provinces/list,/provinces/tree,/provinces/childrenList,/provinces/uniqueId', '', '/apply/provinces/index', 1, '', 0, 0, '', 0, 0, 0, 100, '', 1, '2023-11-17 15:27:55', '2022-09-18 21:31:01'), +(2097, 0, 1, '', '开发工具', 'Develops', '/develop', 'CodeOutlined', 1, '/develop/code', '', '', 'LAYOUT', 1, '', 0, 0, '', 0, 0, 0, 210, '', 1, '2023-11-17 15:39:06', '2022-09-18 21:32:27'), +(2098, 2097, 2, 'tr_2097 ', '代码生成', 'develop_code', 'code', '', 2, '', '/genCodes/list,/genCodes/selects,/genCodes/tableSelect', '', '/develop/code/index', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-18 21:32:46'), +(2099, 2120, 2, 'tr_2120 ', 'API文档', 'apidocs', 'apidocs', '', 2, '', '', '', 'IFRAME', 2, '', 2, 1, 'https://hotgo.facms.cn/swagger', 2, 2, 2, 1000, '', 1, '2024-04-16 12:44:58', '2022-09-18 21:34:09'), +(2100, 2120, 2, 'tr_2120 ', '使用文档', 'https://github.com/bufanyun/hotgo/tree/v2.0/docs/guide-zh-CN', '/hotgo', '', 1, '', '', '', 'LAYOUT', 0, '', 2, 2, '', 2, 2, 2, 1100, '', 1, '2024-04-16 12:45:11', '2022-09-18 21:35:17'), +(2102, 0, 1, '', '关于', 'about', '/about', 'ProjectOutlined', 1, '/about/index', '', '', 'LAYOUT', 1, '', 1, 0, '', 0, 0, 0, 9000, '', 1, '2023-12-29 17:59:18', '2022-09-18 13:37:04'), +(2103, 2102, 2, 'tr_2102 ', '关于详情', 'about_index', 'index', '', 2, '', '', '', '/about/index', 1, 'about', 0, 0, '', 0, 1, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-09-18 13:38:00'), +(2109, 2062, 3, 'tr_2061 tr_2062 ', '编辑用户', 'org_user_edit', '', '', 3, '', '/member/edit,/member/view', '', '/', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-22 23:49:17'), +(2110, 2062, 3, 'tr_2061 tr_2062 ', '删除用户', 'org_user_delete', 'user', '', 3, '', '/member/delete', '', '/', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 21:34:51'), +(2111, 2062, 3, 'tr_2061 tr_2062 ', '修改用户状态', 'org_user_status', 'user', '', 3, '', '/member/status', '', '/', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 21:35:48'), +(2112, 2063, 3, 'tr_2061 tr_2063 ', '编辑部门', 'dept_edit', 'dept', '', 3, '', '/dept/edit', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 21:57:15'), +(2113, 2063, 3, 'tr_2061 tr_2063 ', '删除部门', 'dept_delete', 'dept', '', 3, '', '/dept/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 21:57:51'), +(2114, 2063, 3, 'tr_2061 tr_2063 ', '修改部门状态', 'dept_status', 'dept', '', 3, '', '/dept/status', '', '/', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 21:58:40'), +(2115, 2064, 3, 'tr_2061 tr_2064 ', '编辑岗位', 'post_edit', 'post', '', 3, '', '/post/edit', '', '/', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 21:59:30'), +(2116, 2064, 3, 'tr_2061 tr_2064 ', '删除岗位', 'post_delete', 'post', '', 3, '', '/post/delete', '', '/', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 22:00:13'), +(2117, 2064, 3, 'tr_2061 tr_2064 ', '修改岗位状态', 'post_status', 'post', '', 3, '', '/post/status', '', '/', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 22:00:54'), +(2118, 2095, 3, 'tr_2093 tr_2095 ', '上传附件', 'uploadFile', 'attachment', '', 3, '', '/upload/file', '', '/', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2022-11-23 22:14:19'), +(2120, 0, 1, '', '文档中心', 'doc', 'doc', 'FileTextOutlined', 1, '/doc/apidocs', '', '', 'LAYOUT', 0, '', 2, 2, '', 2, 2, 2, 300, '', 1, '2024-04-16 12:45:41', '2022-11-24 00:08:19'), +(2122, 2228, 3, 'tr_2227 tr_2228 ', '表格例子', 'hgexample_table_index', 'hgexample_table', '', 2, '', '/hgexample/table/list', '', '/addons/hgexample/table/index', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-13 23:54:36', '2022-12-23 15:07:28'), +(2124, 2228, 3, 'tr_2227 tr_2228 ', '表格详情', 'table_view', 'view/:id?', '', 2, '', '/hgexample/table/view', '', '/addons/hgexample/table/view', 0, 'table_index', 0, 0, '', 0, 1, 0, 11, '', 1, '2024-04-13 10:23:05', '2022-09-14 20:07:04'), +(2125, 2097, 2, 'tr_2097 ', '生成配置', 'develop_code_deploy', 'deploy/:id?', '', 2, '', '', '', '/develop/code/deploy', 0, 'develop_code', 0, 0, '', 0, 1, 0, 20, '', 1, '2023-11-13 15:16:58', '2022-12-31 17:16:26'), +(2207, 2076, 4, 'tr_2093 tr_2074 tr_2076 ', '删除登录日志', 'loginLogDelete', '', '', 3, '', '/loginLog/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:32', '2023-01-19 21:06:45'), +(2208, 2076, 4, 'tr_2093 tr_2074 tr_2076 ', '导出登录日志', 'loginLogExport', '', '', 3, '', '/loginLog/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:32', '2023-01-19 21:06:45'), +(2209, 2087, 4, 'tr_2093 tr_2074 tr_2087 ', '删除服务日志', 'serveLogDelete', '', '', 3, '', '/serveLog/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:32', '2023-01-20 18:37:50'), +(2210, 2087, 4, 'tr_2093 tr_2074 tr_2087 ', '导出服务日志', 'serveLogExport', '', '', 3, '', '/serveLog/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:32', '2023-01-20 18:37:50'), +(2211, 2094, 3, 'tr_2093 tr_2094 ', '获取公告最大排序', 'noticeMaxSort', '', '', 3, '', '/notice/maxSort', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2212, 2094, 3, 'tr_2093 tr_2094 ', '删除公告', 'noticeDelete', '', '', 3, '', '/notice/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2213, 2094, 3, 'tr_2093 tr_2094 ', '修改公告状态', 'noticeStatus', '', '', 3, '', '/notice/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2214, 2094, 3, 'tr_2093 tr_2094 ', '操作公告开关', 'noticeSwitch', '', '', 3, '', '/notice/switch', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2215, 2094, 3, 'tr_2093 tr_2094 ', '发送/编辑通知', 'noticeEditNotify', '', '', 3, '', '/notice/editNotify', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2216, 2094, 3, 'tr_2093 tr_2094 ', '发送/编辑公告', 'noticeEditNotice', '', '', 3, '', '/notice/editNotice', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2217, 2094, 3, 'tr_2093 tr_2094 ', '发送/编辑私信', 'noticeEditLetter', '', '', 3, '', '/notice/editLetter', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2218, 2094, 3, 'tr_2093 tr_2094 ', '编辑公告', 'noticeEdit', '', '', 3, '', '/notice/edit', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-01-18 15:19:43'), +(2219, 2093, 2, 'tr_2093 ', '个人中心', 'home', '/home', 'UserOutlined', 1, '', '', '', 'ParentLayout', 1, '', 0, 2, '', 0, 1, 0, 3000, '', 1, '2023-11-17 15:33:52', '2023-02-01 14:59:40'), +(2220, 2219, 3, 'tr_2093 tr_2219 ', '我的消息', 'home_message', 'message', '', 2, '', '/notice/messageList', '', '/home/message/message', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2023-11-17 15:27:49', '2023-02-01 15:05:17'), +(2221, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '获取最大排序', 'testMaxSort', '/test/maxSort', '', 3, '', '/hgexample/table/maxSort', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2024-04-13 23:54:11', '2023-02-06 14:29:42'), +(2222, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '导出测试', 'testExport', '', '', 3, '', '/hgexample/table/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-13 23:54:16', '2023-01-20 18:37:50'), +(2223, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '删除测试', 'testDelete', '', '', 3, '', '/hgexample/table/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-13 23:54:20', '2023-01-18 15:19:43'), +(2224, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '修改测试状态', 'testStatus', '', '', 3, '', '/hgexample/table/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-13 23:54:23', '2023-01-18 15:19:43'), +(2225, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '操作测试开关', 'testSwitch', '', '', 3, '', '/hgexample/table/switch', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-13 23:54:26', '2023-01-18 15:19:43'), +(2226, 2122, 4, 'tr_2227 tr_2228 tr_2122 ', '编辑测试', 'testEdit', '', '', 3, '', '/hgexample/table/edit', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-13 23:54:30', '2023-01-18 15:19:43'), +(2227, 0, 1, '', '插件应用', 'addons', '/addons', 'AppstoreOutlined', 1, '/addons/hgexample/hgexample_portal', '', '', 'LAYOUT', 1, '', 0, 2, '', 0, 0, 0, 130, '', 1, '2023-11-13 15:16:58', '2023-02-17 13:44:27'), +(2228, 2227, 2, 'tr_2227 ', '功能案例', 'hgexample', '/hgexample', '', 1, '', '', '', '/hgexample', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-02-17 13:44:27'), +(2229, 2097, 2, 'tr_2097 ', '插件管理', 'develop_addons', 'addons', '', 2, '', '/addons/selects,/addons/list', '', '/develop/addons/index', 1, '', 0, 0, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2022-09-18 21:32:46'), +(2230, 2228, 3, 'tr_2227 tr_2228 ', '应用入口', 'hgexample_portal', 'hgexample_portal', '', 2, '', '', '', '/addons/hgexample/portal/index', 1, '', 0, 0, '', 0, 0, 0, 5, '', 1, '2023-11-13 15:16:58', '2022-09-14 20:07:04'), +(2231, 2228, 3, 'tr_2227 tr_2228 ', '插件配置', 'hgexample_config', 'hgexample_config', '', 2, '', '/hgexample/config/get,/hgexample/config/update', '', '/addons/hgexample/config/system', 1, '', 0, 0, '', 0, 0, 0, 8, '', 1, '2024-04-13 23:53:06', '2022-09-14 20:07:04'), +(2232, 2237, 3, 'tr_2093 tr_2237 ', '在线充值', 'asset_recharge', 'recharge', '', 2, '', '/order/create,/order/option', '', '/asset/recharge/recharge', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2024-04-12 13:53:42', '2023-02-01 15:05:17'), +(2235, 2236, 4, 'tr_2093 tr_2237 tr_2236 ', '资金变动导出', 'creditsLogExport', '', '', 3, '', '/creditsLog/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-12 13:52:59', '2023-04-15 15:59:58'), +(2236, 2237, 3, 'tr_2093 tr_2237 ', '资金变动', 'creditsLogIndex', 'creditsLogIndex', '', 2, '', '/creditsLog/list,/creditsLog/option', '', '/asset/creditsLog/index', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-12 13:53:36', NULL), +(2237, 2093, 2, 'tr_2093 ', '资金管理', 'asset', '/asset', '', 1, '/apply/asset/creditsLogIndex', '', '', 'ParentLayout', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2024-04-12 13:53:54', '2023-04-18 22:16:20'), +(2240, 2232, 4, 'tr_2093 tr_2237 tr_2232 ', '充值记录', 'asset_recharge_log', '', '', 3, '', '/order/list', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-17 15:28:23', '2023-04-18 23:26:01'), +(2241, 2232, 4, 'tr_2093 tr_2237 tr_2232 ', '受理退款', 'asset_recharge_accept_refund', '', '', 3, '', '/order/acceptRefund', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-17 15:28:23', '2023-04-18 23:26:01'), +(2242, 2232, 4, 'tr_2093 tr_2237 tr_2232 ', '申请退款', 'asset_recharge_apply_refund', '', '', 3, '', '/order/applyRefund', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-17 15:28:23', '2023-04-18 23:26:01'), +(2243, 2232, 4, 'tr_2093 tr_2237 tr_2232 ', '删除关闭订单', 'asset_recharge_order_delete', '', '', 3, '', '/order/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-17 15:28:23', '2023-04-18 23:26:01'), +(2244, 2237, 3, 'tr_2093 tr_2237 ', '提现管理', 'asset_cash', '/cash', '', 2, '', '/cash/list,/cash/apply,/config/getCash', '', '/asset/cash/index', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2024-04-12 13:53:45', '2022-11-29 12:30:00'), +(2245, 2244, 4, 'tr_2093 tr_2237 tr_2244 ', '申请提现', 'cash_apply', '', '', 3, '', '/cash/apply', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:28:23', '2023-04-26 21:37:56'), +(2246, 2244, 4, 'tr_2093 tr_2237 tr_2244 ', '提现打款处理', 'cash_payment', '', '', 3, '', '/cash/payment,/cash/view', '', '', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2023-11-17 15:28:23', '2023-04-26 21:38:25'), +(2247, 2062, 3, 'tr_2061 tr_2062 ', '变更余额', 'org_user_add_balance', '', '', 3, '', '/member/addBalance', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-13 15:16:58', '2023-04-27 22:31:02'), +(2248, 2062, 3, 'tr_2061 tr_2062 ', '变更积分', 'org_user_add_integral', '', '', 3, '', '/member/addIntegral', '', '', 1, '', 0, 2, '', 0, 0, 0, 50, '', 1, '2023-11-13 15:16:58', '2023-04-27 22:31:43'), +(2249, 2062, 3, 'tr_2061 tr_2062 ', '重置登录密码', 'member_reset_pwd', '', '', 3, '', '/member/resetPwd', '', '', 1, '', 0, 2, '', 0, 0, 0, 60, '', 1, '2023-11-13 15:16:58', '2023-04-27 22:50:27'), +(2250, 2062, 3, 'tr_2061 tr_2062 ', '用户列表', 'member_list', '', '', 3, '', '/dept/list,/post/list,/role/list,/member/list,/dept/option', '', '', 1, '', 0, 2, '', 0, 0, 0, 0, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:06:17'), +(2251, 2069, 3, 'tr_2068 tr_2069 ', '查看配置', 'config_get', '', '', 3, '', '/config/get', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:18:44'), +(2252, 2069, 3, 'tr_2068 tr_2069 ', '更新配置', 'config_update', '', '', 3, '', '/config/update', '', '', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:19:14'), +(2253, 2070, 3, 'tr_2068 tr_2070 ', '查看字典列表', 'dict_data_list', '', '', 3, '', '/dictType/tree,/dictData/list,/config/typeSelect', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:21:47'), +(2254, 2070, 3, 'tr_2068 tr_2070 ', '编辑字典', 'dict_data_edit', '', '', 3, '', '/dictData/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:22:15'), +(2255, 2070, 3, 'tr_2068 tr_2070 ', '删除字典', 'dict_data_delete', '', '', 3, '', '/dictData/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 30, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:22:15'), +(2256, 2070, 3, 'tr_2068 tr_2070 ', '编辑字典类型', 'dict_type_edit', '', '', 3, '', '/dictType/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:22:15'), +(2257, 2070, 3, 'tr_2068 tr_2070 ', '删除字典类型', 'dict_type_delete', '', '', 3, '', '/dictType/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 60, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:22:15'), +(2258, 2071, 3, 'tr_2068 tr_2071 ', '任务列表', '/cron/list', '', '', 3, '', '/cron/list', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:25:46'), +(2259, 2071, 3, 'tr_2068 tr_2071 ', '任务分组列表', '/cronGroup/list', '', '', 3, '', '/cronGroup/select,/cronGroup/list', '', '', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:26:40'), +(2260, 2071, 3, 'tr_2068 tr_2071 ', '编辑任务', '/cron/edit', '', '', 3, '', '/cron/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 30, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:27:07'), +(2261, 2071, 3, 'tr_2068 tr_2071 ', '删除任务', '/cron/delete', '', '', 3, '', '/cron/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:27:59'), +(2262, 2071, 3, 'tr_2068 tr_2071 ', '修改任务状态', '/cron/status', '', '', 3, '', '/cron/status', '', '', 1, '', 0, 2, '', 0, 0, 0, 60, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:28:16'), +(2263, 2071, 3, 'tr_2068 tr_2071 ', '在线执行', '/cron/onlineExec', '', '', 3, '', '/cron/onlineExec', '', '', 1, '', 0, 2, '', 0, 0, 0, 70, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:28:32'), +(2264, 2071, 3, 'tr_2068 tr_2071 ', '编辑任务分组', '/cronGroup/edit', '', '', 3, '', '/cronGroup/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 80, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:28:55'), +(2265, 2071, 3, 'tr_2068 tr_2071 ', '删除任务分组', '/cronGroup/delete', '', '', 3, '', '/cronGroup/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 90, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:29:14'), +(2266, 2072, 3, 'tr_2068 tr_2072 ', '黑名单列表', '/blacklist/list', '', '', 3, '', '/blacklist/list', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:29:59'), +(2267, 2072, 3, 'tr_2068 tr_2072 ', '编辑黑名单策略', '/blacklist/edit', '', '', 3, '', '/blacklist/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:30:25'), +(2268, 2072, 3, 'tr_2068 tr_2072 ', '修改策略状态', '/blacklist/status', '', '', 3, '', '/blacklist/status', '', '', 1, '', 0, 2, '', 0, 0, 0, 30, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:31:07'), +(2269, 2072, 3, 'tr_2068 tr_2072 ', '删除策略', '/blacklist/delete', '', '', 3, '', '/blacklist/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 40, '', 1, '2023-11-13 15:16:58', '2023-04-27 23:31:21'), +(2270, 2073, 4, 'tr_2093 tr_2219 tr_2073 ', '修改登录密码', '/member/updatePwd', '', '', 3, '', '/member/updatePwd', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:49', '2023-04-28 16:40:34'), +(2271, 2073, 4, 'tr_2093 tr_2219 tr_2073 ', '换绑手机号', '/member/updateMobile', '', '', 3, '', '/member/updateMobile', '', '', 1, '', 0, 2, '', 0, 0, 0, 20, '', 1, '2023-11-17 15:27:49', '2023-04-28 16:40:52'), +(2272, 2073, 4, 'tr_2093 tr_2219 tr_2073 ', '换绑邮箱', '/member/updateEmail', '', '', 3, '', '/member/updateEmail', '', '', 1, '', 0, 2, '', 0, 0, 0, 30, '', 1, '2023-11-17 15:27:49', '2023-04-28 16:41:11'), +(2273, 2090, 2, 'tr_2090 ', '在线服务', 'monitor_netconn', 'netconn', '', 1, '', '', '', '/monitor/netconn/index', 1, '', 0, 0, '', 0, 0, 0, 20, '', 1, '2023-11-13 15:16:58', '2022-09-18 21:23:36'), +(2275, 2273, 3, 'tr_2090 tr_2273 ', '服务许可证列表', 'serveLicenseIndex', 'serveLicenseIndex', '', 3, '', '/serveLicense/list', '', '/serveLicense/index', 1, 'monitor_netconn', 0, 0, '', 0, 1, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), +(2277, 2275, 4, 'tr_2090 tr_2273 tr_2275 ', '编辑/新增服务许可证', 'serveLicenseEdit', '', '', 3, '', '/serveLicense/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), +(2278, 2275, 4, 'tr_2090 tr_2273 tr_2275 ', '删除服务许可证', 'serveLicenseDelete', '', '', 3, '', '/serveLicense/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), +(2279, 2275, 4, 'tr_2090 tr_2273 tr_2275 ', '修改服务许可证状态', 'serveLicenseStatus', '', '', 3, '', '/serveLicense/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), +(2280, 2275, 4, 'tr_2090 tr_2273 tr_2275 ', '导出服务许可证', 'serveLicenseExport', '', '', 3, '', '/serveLicense/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), +(2281, 2275, 4, 'tr_2090 tr_2273 tr_2275 ', '分配许可证路由', 'serveLicenseAssignRouter', '', '', 3, '', '/serveLicense/assignRouter', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-07-15 09:36:38'), +(2282, 2073, 4, 'tr_2093 tr_2219 tr_2073 ', '更新基本设置', 'memberUpdateProfile', '', '', 3, '', '/member/updateProfile', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:49', '2023-08-02 14:52:48'), +(2283, 2073, 4, 'tr_2093 tr_2219 tr_2073 ', '更新提现设置', 'memberUpdateCash', '', '', 3, '', '/member/updateCash', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:49', '2023-08-02 14:53:34'), +(2292, 2067, 3, 'tr_2065 tr_2067 ', '更新菜单权限', 'updatePermissions', '', '', 3, '', '/role/updatePermissions', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 14:45:56'), +(2293, 2067, 3, 'tr_2065 tr_2067 ', '更新数据权限', 'dataScopeEdit', '', '', 3, '', '/role/dataScope/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 14:51:29'), +(2294, 2067, 3, 'tr_2065 tr_2067 ', '添加/编辑角色', 'roleEdit', '', '', 3, '', '/role/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 14:52:08'), +(2295, 2067, 3, 'tr_2065 tr_2067 ', '删除角色', 'roleDelete', '', '', 3, '', '/role/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 14:52:34'), +(2296, 2066, 3, 'tr_2065 tr_2066 ', '添加/编辑菜单', 'menuEdit', '', '', 3, '', '/menu/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 14:53:24'), +(2297, 2066, 3, 'tr_2065 tr_2066 ', '删除菜单', 'menuDelete', '', '', 3, '', '/menu/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 14:53:52'), +(2298, 2075, 4, 'tr_2093 tr_2074 tr_2075 ', '删除全局日志', 'logDelete', '', '', 3, '', '/log/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:32', '2023-08-11 14:54:37'), +(2299, 2084, 4, 'tr_2093 tr_2074 tr_2084 ', '删除短信记录', 'smsLogDelete', '', '', 3, '', '/smsLog/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-17 15:27:32', '2023-08-11 14:56:47'), +(2300, 2091, 3, 'tr_2090 tr_2091 ', '强制退出用户', 'monitorUserOffline', '', '', 3, '', '/monitor/userOffline', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 14:57:52'), +(2301, 2096, 3, 'tr_2093 tr_2096 ', '添加/编辑省市区', 'provincesEdit', '', '', 3, '', '/provinces/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:00:13'), +(2302, 2096, 3, 'tr_2093 tr_2096 ', '删除省市区', 'provincesDelete', '', '', 3, '', '/provinces/delete', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:00:45'), +(2305, 2098, 3, 'tr_2097 tr_2098 ', '查看生成配置', 'genCodesView', '', '', 3, '', '/genCodes/view', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:21:28'), +(2306, 2098, 3, 'tr_2097 tr_2098 ', '预览代码', 'genCodesPreview', '', '', 3, '', '/genCodes/preview', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:22:18'), +(2307, 2098, 3, 'tr_2097 tr_2098 ', '提交生成', 'genCodesBuild', '', '', 3, '', '/genCodes/build', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:22:48'), +(2308, 2098, 3, 'tr_2097 tr_2098 ', '保存生成配置', 'genCodesEdit', '', '', 3, '', '/genCodes/edit', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:23:16'), +(2309, 2229, 3, 'tr_2097 tr_2229 ', '更新插件配置', 'addonsUpgrade', '', '', 3, '', '/addons/upgrade', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:24:11'), +(2310, 2229, 3, 'tr_2097 tr_2229 ', '卸载插件', 'addonsUninstall', '', '', 3, '', '/addons/uninstall', '', '', 1, '', 0, 2, '', 0, 0, 0, 10, '', 1, '2023-11-13 15:16:58', '2023-08-11 15:24:32'), +(2319, 2228, 3, 'tr_2227 tr_2228 ', '树表例子', '/addons/hgexample/table/tree', '/addons/hgexample/table/tree', '', 2, '', '/hgexample/table/tree,/hgexample/treeTable/select', '', '/addons/hgexample/treeTable/index', 1, '', 0, 2, '', 0, 0, 0, 15, '', 1, '2024-04-13 23:55:01', '2023-11-13 16:46:58'), +(2338, 2228, 3, 'tr_2227 tr_2228 ', '组件示例', 'hgexample_comp', 'hgexample_comp', '', 2, '', '/hgexample/comp/importExcel', '', '/addons/hgexample/comp/index', 1, '', 0, 0, '', 0, 0, 0, 1000, '', 1, '2024-04-13 23:55:45', '2022-09-14 20:07:04'), +(2366, 2097, 2, 'tr_2097 ', '生成演示', 'generateDemo', 'generateDemo', '', 2, '', '', '', 'ParentLayout', 1, '', 0, 2, '', 0, 0, 0, 1000, '', 1, '2024-04-08 10:10:51', '2024-04-08 10:10:51'), +(2367, 2366, 3, 'tr_2097 tr_2366 ', 'CURD列表', 'curdDemo', '/curdDemo', '', 1, '/develop/generateDemo/curdDemo/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 10, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2368, 2367, 4, 'tr_2097 tr_2366 tr_2367 ', 'CUDR列表列表', 'curdDemoIndex', 'index', '', 2, '', '/curdDemo/list', '', '/curdDemo/index', 1, 'curdDemo', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2369, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', 'CUDR列表详情', 'curdDemoView', '', '', 3, '', '/curdDemo/view', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2370, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', '编辑/新增CUDR列表', 'curdDemoEdit', '', '', 3, '', '/curdDemo/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 20, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2371, 2370, 6, 'tr_2097 tr_2366 tr_2367 tr_2368 tr_2370 ', '获取CUDR列表最大排序', 'curdDemoMaxSort', '', '', 3, '', '/curdDemo/maxSort', '', '', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2372, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', '删除CUDR列表', 'curdDemoDelete', '', '', 3, '', '/curdDemo/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2373, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', '修改CUDR列表状态', 'curdDemoStatus', '', '', 3, '', '/curdDemo/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 50, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2374, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', '操作CUDR列表开关', 'curdDemoSwitch', '', '', 3, '', '/curdDemo/switch', '', '', 1, '', 0, 0, '', 0, 0, 0, 60, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2375, 2368, 5, 'tr_2097 tr_2366 tr_2367 tr_2368 ', '导出CUDR列表', 'curdDemoExport', '', '', 3, '', '/curdDemo/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-08 10:13:26', '2024-04-08 10:13:26'), +(2376, 2366, 3, 'tr_2097 tr_2366 ', '测试分类', 'testCategory', '/testCategory', '', 1, '/develop/generateDemo/testCategory/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 1000, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), +(2377, 2376, 4, 'tr_2097 tr_2366 tr_2376 ', '测试分类列表', 'testCategoryIndex', 'index', '', 2, '', '/testCategory/list', '', '/testCategory/index', 1, 'testCategory', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), +(2378, 2377, 5, 'tr_2097 tr_2366 tr_2376 tr_2377 ', '测试分类详情', 'testCategoryView', '', '', 3, '', '/testCategory/view', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), +(2379, 2377, 5, 'tr_2097 tr_2366 tr_2376 tr_2377 ', '编辑/新增测试分类', 'testCategoryEdit', '', '', 3, '', '/testCategory/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 20, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), +(2380, 2379, 6, 'tr_2097 tr_2366 tr_2376 tr_2377 tr_2379 ', '获取测试分类最大排序', 'testCategoryMaxSort', '', '', 3, '', '/testCategory/maxSort', '', '', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), +(2381, 2377, 5, 'tr_2097 tr_2366 tr_2376 tr_2377 ', '删除测试分类', 'testCategoryDelete', '', '', 3, '', '/testCategory/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), +(2382, 2377, 5, 'tr_2097 tr_2366 tr_2376 tr_2377 ', '修改测试分类状态', 'testCategoryStatus', '', '', 3, '', '/testCategory/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-08 23:26:32', '2024-04-08 23:26:32'), +(2383, 2366, 3, 'tr_2097 tr_2366 ', '普通树表', 'normalTreeDemo', '/normalTreeDemo', '', 1, '/develop/generateDemo/normalTreeDemo/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 200, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2384, 2383, 4, 'tr_2097 tr_2366 tr_2383 ', '普通树表列表', 'normalTreeDemoIndex', 'index', '', 2, '', '/normalTreeDemo/list', '', '/normalTreeDemo/index', 1, 'normalTreeDemo', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2385, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '普通树表详情', 'normalTreeDemoView', '', '', 3, '', '/normalTreeDemo/view', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2386, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '编辑/新增普通树表', 'normalTreeDemoEdit', '', '', 3, '', '/normalTreeDemo/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 20, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2387, 2386, 6, 'tr_2097 tr_2366 tr_2383 tr_2384 tr_2386 ', '获取普通树表最大排序', 'normalTreeDemoMaxSort', '', '', 3, '', '/normalTreeDemo/maxSort', '', '', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2388, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '删除普通树表', 'normalTreeDemoDelete', '', '', 3, '', '/normalTreeDemo/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2389, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '修改普通树表状态', 'normalTreeDemoStatus', '', '', 3, '', '/normalTreeDemo/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 50, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2390, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '导出普通树表', 'normalTreeDemoExport', '', '', 3, '', '/normalTreeDemo/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2391, 2384, 5, 'tr_2097 tr_2366 tr_2383 tr_2384 ', '获取普通树表关系树选项', 'normalTreeDemoTreeOption', '', '', 3, '', '/normalTreeDemo/treeOption', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-09 17:05:13', '2024-04-09 17:05:13'), +(2401, 2366, 3, 'tr_2097 tr_2366 ', '选项树表', 'optionTreeDemo', '/optionTreeDemo', '', 1, '/develop/generateDemo/optionTreeDemo/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 300, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2402, 2401, 4, 'tr_2097 tr_2366 tr_2401 ', '选项树表列表', 'optionTreeDemoIndex', 'index', '', 2, '', '/optionTreeDemo/list', '', '/optionTreeDemo/index', 1, 'optionTreeDemo', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2403, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '选项树表详情', 'optionTreeDemoView', '', '', 3, '', '/optionTreeDemo/view', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2404, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '编辑/新增选项树表', 'optionTreeDemoEdit', '', '', 3, '', '/optionTreeDemo/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 20, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2405, 2404, 6, 'tr_2097 tr_2366 tr_2401 tr_2402 tr_2404 ', '获取选项树表最大排序', 'optionTreeDemoMaxSort', '', '', 3, '', '/optionTreeDemo/maxSort', '', '', 1, '', 0, 0, '', 0, 0, 0, 30, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2406, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '删除选项树表', 'optionTreeDemoDelete', '', '', 3, '', '/optionTreeDemo/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2407, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '修改选项树表状态', 'optionTreeDemoStatus', '', '', 3, '', '/optionTreeDemo/status', '', '', 1, '', 0, 0, '', 0, 0, 0, 50, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2408, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '导出选项树表', 'optionTreeDemoExport', '', '', 3, '', '/optionTreeDemo/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2409, 2402, 5, 'tr_2097 tr_2366 tr_2401 tr_2402 ', '获取选项树表关系树选项', 'optionTreeDemoTreeOption', '', '', 3, '', '/optionTreeDemo/treeOption', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-09 17:22:29', '2024-04-09 17:22:29'), +(2417, 2228, 3, 'tr_2227 tr_2228 ', '多租户功能演示', 'tenantOrder', '/tenantOrder', '', 1, '/addons/hgexample/tenantOrder/index', '', '', 'ParentLayout', 1, '', 0, 0, '', 0, 0, 0, 200, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'), +(2418, 2417, 4, 'tr_2227 tr_2228 tr_2417 ', '多租户功能演示列表', 'tenantOrderIndex', 'index', '', 2, '', '/hgexample/tenantOrder/list', '', '/addons/hgexample/tenantOrder/index', 1, 'tenantOrder', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'), +(2419, 2418, 5, 'tr_2227 tr_2228 tr_2417 tr_2418 ', '多租户功能演示详情', 'tenantOrderView', '', '', 3, '', '/hgexample/tenantOrder/view', '', '', 1, '', 0, 0, '', 0, 1, 0, 10, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'), +(2420, 2418, 5, 'tr_2227 tr_2228 tr_2417 tr_2418 ', '编辑/新增多租户功能演示', 'tenantOrderEdit', '', '', 3, '', '/hgexample/tenantOrder/edit', '', '', 1, '', 0, 0, '', 0, 1, 0, 20, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'), +(2421, 2418, 5, 'tr_2227 tr_2228 tr_2417 tr_2418 ', '删除多租户功能演示', 'tenantOrderDelete', '', '', 3, '', '/hgexample/tenantOrder/delete', '', '', 1, '', 0, 0, '', 0, 0, 0, 40, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'), +(2422, 2418, 5, 'tr_2227 tr_2228 tr_2417 tr_2418 ', '导出多租户功能演示', 'tenantOrderExport', '', '', 3, '', '/hgexample/tenantOrder/export', '', '', 1, '', 0, 0, '', 0, 0, 0, 70, '', 1, '2024-04-13 23:37:30', '2024-04-13 23:37:30'); + +INSERT INTO `hg_admin_notice` (`id`, `title`, `type`, `tag`, `content`, `receiver`, `remark`, `sort`, `status`, `created_by`, `updated_by`, `created_at`, `updated_at`, `deleted_at`) VALUES +(29, '2023年春季学期开学工作通知!', 1, 1, '1.学生:2月11日、2月12日报到,2月13日起安排考试。\n\n2.教职工:2月10日(周五)起正式上班(2月11日、2月12日正常上班)。\n\n3.校内进行的各类社会服务项目,主办部门、单位须关注参与人员的健康状况,如有异常第一时间报告。感染后仍在康复期内的师生,不参加剧烈活动。开学后两周内,原则上不组织各类竞技性较强的体育比赛等活动。\n\n4.全校师生员工要牢固树立健康第一的观念,切实增强个人责任感和防护意识,掌握防护技能,坚持戴口罩、勤洗手等良好卫生习惯,加强身体锻炼,保持健康生活方式,提升健康素养和自我防护能力,当好自身健康第一责任人。符合条件的师生,积极有序接种第二剂次加强针疫苗。', 'null', '', 10, 1, 1, 1, '2023-02-09 12:25:39', '2023-02-09 12:48:08', NULL), +(30, '国务院办公厅关于2023年部分节假日安排的通知', 1, 3, '新华社北京12月8日电 国务院办公厅关于2023年部分节假日安排的通知,全文如下:\n\n  各省、自治区、直辖市人民政府,国务院\n\n  各部委、各直属机构:\n\n  经国务院批准,现将2023年元旦、春节、清明节、劳动节、端午节、中秋节和国庆节放假调休日期的具体安排通知如下。\n\n  一、元旦:2022年12月31日至2023年1月2日放假调休,共3天。\n\n  二、春节:1月21日至27日放假调休,共7天。1月28日(星期六)、1月29日(星期日)上班。\n\n  三、清明节:4月5日放假,共1天。\n\n  四、劳动节:4月29日至5月3日放假调休,共5天。4月23日(星期日)、5月6日(星期六)上班。\n\n  五、端午节:6月22日至24日放假调休,共3天。6月25日(星期日)上班。\n\n  六、中秋节、国庆节:9月29日至10月6日放假调休,共8天。10月7日(星期六)、10月8日(星期日)上班。\n\n  节假日期间,各地区、各部门要妥善安排好值班和安全、保卫、疫情防控等工作,遇有重大突发事件,要按规定及时报告并妥善处置,确保人民群众祥和平安度过节日假期。', 'null', '', 20, 1, 1, 1, '2023-02-09 12:32:32', '2023-02-09 12:48:28', NULL), +(31, 'hotgo新版本发布啦!', 2, 4, '


本次更新内容如下:

1. 优化角色权限

2. 优化代码生成

3. ....

', 'null', '', 30, 1, 1, 0, '2023-02-09 12:45:17', '2023-02-09 12:45:17', '2023-06-09 18:04:30'), +(32, '新的好友', 3, 5, '

哈喽,你好呀!

', '[1, 3, 8]', '', 40, 1, 1, 3, '2023-02-09 12:45:54', '2023-08-11 15:19:04', NULL); + +INSERT INTO `hg_admin_notice_read` (`id`, `notice_id`, `member_id`, `clicks`, `updated_at`, `created_at`) VALUES +(1, 31, 1, 2, '2023-04-26 22:44:51', '2023-04-25 22:59:16'), +(2, 30, 1, 22, '2023-11-17 15:30:02', '2023-04-25 23:01:27'), +(3, 32, 3, 0, '2023-04-28 16:48:41', '2023-04-28 16:48:41'), +(4, 29, 3, 4, '2023-08-11 14:42:22', '2023-04-28 16:48:47'), +(5, 30, 3, 3, '2023-08-11 15:24:45', '2023-04-28 16:48:47'), +(6, 29, 1, 1, '2023-08-11 16:07:58', '2023-06-09 20:26:43'), +(7, 29, 11, 7, '2023-08-02 14:54:26', '2023-08-02 14:54:16'), +(8, 30, 8, 0, '2023-08-02 14:59:21', '2023-08-02 14:59:21'); + + + +INSERT INTO `hg_admin_post` (`id`, `code`, `name`, `remark`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(1, 'ceo', '董事长', '', 1, 1, '2022-01-04 17:54:52', '2023-07-06 15:17:48'), +(2, 'se', '项目经理', '', 2, 1, '2022-01-04 17:54:52', '2023-01-18 00:00:00'), +(3, 'hr', '人力资源', '', 3, 1, '2022-01-04 17:54:52', '2023-02-26 00:32:40'), +(4, 'user', '普通员工', '', 4, 1, '2022-01-04 17:54:52', '2022-05-15 22:33:09'), +(6, 'test', '测试', '测试..', 5, 1, '2022-08-14 11:41:22', '2023-04-27 23:17:27'); + +INSERT INTO `hg_admin_role` (`id`, `name`, `key`, `data_scope`, `custom_dept`, `pid`, `level`, `tree`, `remark`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(1, '超级管理员', 'super', 1, '[]', 0, 1, NULL, '超级管理员,拥有全部权限', 100, 1, '2022-01-04 17:54:52', '2023-01-12 00:00:00'), +(2, '管理员', 'manage', 3, '[]', 1, 2, 'tr_1 ', '普通管理员,拥有常规的后台管理权限', 200, 1, '2022-01-04 17:54:52', '2023-04-27 00:00:00'), +(200, '租户', 'tenant', 7, '[]', 2, 3, 'tr_1 tr_2 ', '多租户系统中顶层实体客户、组织或实体', 1000, 1, '2023-01-12 00:00:00', '2023-08-11 15:55:46'), +(206, '财务部', 'finance', 2, '[]', 2, 3, 'tr_1 tr_2 ', '', 300, 1, '2023-01-24 20:22:10', '2023-08-11 15:55:46'), +(207, '商务部', 'business', 2, '[]', 2, 3, 'tr_1 tr_2 ', '', 400, 1, '2023-01-24 20:23:27', '2023-08-11 15:55:46'), +(208, '技术部', 'science', 2, '[]', 2, 3, 'tr_1 tr_2 ', '', 500, 1, '2023-01-24 20:23:54', '2023-08-11 15:55:46'), +(209, '商家', 'merchant', 7, '[]', 200, 4, 'tr_1 tr_2 tr_200 ', '租户内部实体,可独立经营但受租户的监管和管理', 2000, 1, '2024-04-12 10:14:21', '2024-04-13 22:24:31'), +(210, '用户', 'user', 5, '[]', 209, 5, 'tr_1 tr_2 tr_200 tr_209 ', '真正使用系统产品的终端用户', 10, 1, '2024-04-12 10:18:45', '2024-04-13 22:24:40'); + +INSERT INTO `hg_admin_role_casbin` (`id`, `p_type`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES +(17421, 'p', 'manage', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17422, 'p', 'manage', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17423, 'p', 'manage', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17424, 'p', 'manage', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17425, 'p', 'manage', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17426, 'p', 'manage', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17427, 'p', 'manage', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17428, 'p', 'manage', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17429, 'p', 'manage', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17430, 'p', 'manage', '/menu/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17431, 'p', 'manage', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17432, 'p', 'manage', '/role/dataScope/select', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17433, 'p', 'manage', '/role/getPermissions', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17434, 'p', 'manage', '/log/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17435, 'p', 'manage', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17436, 'p', 'manage', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17437, 'p', 'manage', '/loginLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17438, 'p', 'manage', '/smsLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17439, 'p', 'manage', '/serveLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17440, 'p', 'manage', '/serveLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17441, 'p', 'manage', '/monitor/userOnlineList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17442, 'p', 'manage', '/notice/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17443, 'p', 'manage', '/attachment/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17444, 'p', 'manage', '/provinces/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17445, 'p', 'manage', '/provinces/tree', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17446, 'p', 'manage', '/provinces/childrenList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17447, 'p', 'manage', '/provinces/uniqueId', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17448, 'p', 'manage', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17449, 'p', 'manage', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17450, 'p', 'manage', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17451, 'p', 'manage', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17452, 'p', 'manage', '/dept/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17453, 'p', 'manage', '/dept/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17454, 'p', 'manage', '/dept/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17455, 'p', 'manage', '/post/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17456, 'p', 'manage', '/post/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17457, 'p', 'manage', '/post/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17458, 'p', 'manage', '/upload/file', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17459, 'p', 'manage', '/hgexample/table/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17460, 'p', 'manage', '/hgexample/table/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17461, 'p', 'manage', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17462, 'p', 'manage', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17463, 'p', 'manage', '/serveLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17464, 'p', 'manage', '/serveLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17465, 'p', 'manage', '/notice/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17466, 'p', 'manage', '/notice/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17467, 'p', 'manage', '/notice/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17468, 'p', 'manage', '/notice/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17469, 'p', 'manage', '/notice/editNotify', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17470, 'p', 'manage', '/notice/editNotice', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17471, 'p', 'manage', '/notice/editLetter', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17472, 'p', 'manage', '/notice/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17473, 'p', 'manage', '/notice/messageList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17474, 'p', 'manage', '/hgexample/table/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17475, 'p', 'manage', '/hgexample/table/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17476, 'p', 'manage', '/hgexample/table/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17477, 'p', 'manage', '/hgexample/table/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17478, 'p', 'manage', '/hgexample/table/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17479, 'p', 'manage', '/hgexample/table/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17480, 'p', 'manage', '/hgexample/config/get', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17481, 'p', 'manage', '/hgexample/config/update', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17482, 'p', 'manage', '/order/create', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17483, 'p', 'manage', '/order/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17484, 'p', 'manage', '/creditsLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17485, 'p', 'manage', '/creditsLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17486, 'p', 'manage', '/creditsLog/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17487, 'p', 'manage', '/order/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17488, 'p', 'manage', '/order/acceptRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17489, 'p', 'manage', '/order/applyRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17490, 'p', 'manage', '/order/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17491, 'p', 'manage', '/cash/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17492, 'p', 'manage', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17493, 'p', 'manage', '/config/getCash', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17494, 'p', 'manage', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17495, 'p', 'manage', '/cash/payment', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17496, 'p', 'manage', '/cash/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17497, 'p', 'manage', '/member/addBalance', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17498, 'p', 'manage', '/member/addIntegral', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17499, 'p', 'manage', '/member/resetPwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17500, 'p', 'manage', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17501, 'p', 'manage', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17502, 'p', 'manage', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17503, 'p', 'manage', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17504, 'p', 'manage', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17505, 'p', 'manage', '/config/get', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17506, 'p', 'manage', '/config/update', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17507, 'p', 'manage', '/dictType/tree', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17508, 'p', 'manage', '/dictData/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17509, 'p', 'manage', '/config/typeSelect', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17510, 'p', 'manage', '/dictData/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17511, 'p', 'manage', '/dictData/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17512, 'p', 'manage', '/dictType/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17513, 'p', 'manage', '/dictType/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17514, 'p', 'manage', '/cron/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17515, 'p', 'manage', '/cronGroup/select', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17516, 'p', 'manage', '/cronGroup/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17517, 'p', 'manage', '/cron/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17518, 'p', 'manage', '/cron/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17519, 'p', 'manage', '/cron/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17520, 'p', 'manage', '/cron/onlineExec', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17521, 'p', 'manage', '/cronGroup/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17522, 'p', 'manage', '/cronGroup/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17523, 'p', 'manage', '/blacklist/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17524, 'p', 'manage', '/blacklist/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17525, 'p', 'manage', '/blacklist/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17526, 'p', 'manage', '/blacklist/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17527, 'p', 'manage', '/member/updatePwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17528, 'p', 'manage', '/member/updateMobile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17529, 'p', 'manage', '/member/updateEmail', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17530, 'p', 'manage', '/serveLicense/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17531, 'p', 'manage', '/serveLicense/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17532, 'p', 'manage', '/serveLicense/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17533, 'p', 'manage', '/serveLicense/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17534, 'p', 'manage', '/serveLicense/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17535, 'p', 'manage', '/serveLicense/assignRouter', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17536, 'p', 'manage', '/member/updateProfile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17537, 'p', 'manage', '/member/updateCash', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17538, 'p', 'manage', '/role/updatePermissions', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17539, 'p', 'manage', '/role/dataScope/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17540, 'p', 'manage', '/role/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17541, 'p', 'manage', '/role/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17542, 'p', 'manage', '/menu/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17543, 'p', 'manage', '/menu/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17544, 'p', 'manage', '/log/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17545, 'p', 'manage', '/smsLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17546, 'p', 'manage', '/monitor/userOffline', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17547, 'p', 'manage', '/provinces/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17548, 'p', 'manage', '/provinces/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17549, 'p', 'manage', '/hgexample/table/tree', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17550, 'p', 'manage', '/hgexample/treeTable/select', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17551, 'p', 'manage', '/hgexample/comp/importExcel', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17552, 'p', 'manage', '/hgexample/tenantOrder/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17553, 'p', 'manage', '/hgexample/tenantOrder/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17554, 'p', 'manage', '/hgexample/tenantOrder/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17555, 'p', 'manage', '/hgexample/tenantOrder/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17556, 'p', 'manage', '/hgexample/tenantOrder/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17557, 'p', 'tenant', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17558, 'p', 'tenant', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17559, 'p', 'tenant', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17560, 'p', 'tenant', '/log/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17561, 'p', 'tenant', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17562, 'p', 'tenant', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17563, 'p', 'tenant', '/loginLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17564, 'p', 'tenant', '/attachment/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17565, 'p', 'tenant', '/upload/file', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17566, 'p', 'tenant', '/hgexample/table/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17567, 'p', 'tenant', '/hgexample/table/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17568, 'p', 'tenant', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17569, 'p', 'tenant', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17570, 'p', 'tenant', '/notice/messageList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17571, 'p', 'tenant', '/hgexample/table/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17572, 'p', 'tenant', '/hgexample/table/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17573, 'p', 'tenant', '/hgexample/table/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17574, 'p', 'tenant', '/hgexample/table/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17575, 'p', 'tenant', '/hgexample/table/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17576, 'p', 'tenant', '/hgexample/table/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17577, 'p', 'tenant', '/hgexample/config/get', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17578, 'p', 'tenant', '/hgexample/config/update', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17579, 'p', 'tenant', '/order/create', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17580, 'p', 'tenant', '/order/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17581, 'p', 'tenant', '/creditsLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17582, 'p', 'tenant', '/creditsLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17583, 'p', 'tenant', '/creditsLog/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17584, 'p', 'tenant', '/order/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17585, 'p', 'tenant', '/order/acceptRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17586, 'p', 'tenant', '/order/applyRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17587, 'p', 'tenant', '/order/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17588, 'p', 'tenant', '/cash/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17589, 'p', 'tenant', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17590, 'p', 'tenant', '/config/getCash', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17591, 'p', 'tenant', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17592, 'p', 'tenant', '/member/updatePwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17593, 'p', 'tenant', '/member/updateMobile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17594, 'p', 'tenant', '/member/updateEmail', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17595, 'p', 'tenant', '/member/updateProfile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17596, 'p', 'tenant', '/member/updateCash', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17597, 'p', 'tenant', '/log/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17598, 'p', 'tenant', '/hgexample/table/tree', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17599, 'p', 'tenant', '/hgexample/treeTable/select', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17600, 'p', 'tenant', '/hgexample/comp/importExcel', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17601, 'p', 'tenant', '/hgexample/tenantOrder/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17602, 'p', 'tenant', '/hgexample/tenantOrder/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17603, 'p', 'tenant', '/hgexample/tenantOrder/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17604, 'p', 'tenant', '/hgexample/tenantOrder/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17605, 'p', 'tenant', '/hgexample/tenantOrder/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17606, 'p', 'finance', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17607, 'p', 'finance', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17608, 'p', 'finance', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17609, 'p', 'finance', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17610, 'p', 'finance', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17611, 'p', 'finance', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17612, 'p', 'finance', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17613, 'p', 'finance', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17614, 'p', 'finance', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17615, 'p', 'finance', '/menu/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17616, 'p', 'finance', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17617, 'p', 'finance', '/role/dataScope/select', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17618, 'p', 'finance', '/role/getPermissions', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17619, 'p', 'finance', '/log/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17620, 'p', 'finance', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17621, 'p', 'finance', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17622, 'p', 'finance', '/loginLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17623, 'p', 'finance', '/smsLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17624, 'p', 'finance', '/serveLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17625, 'p', 'finance', '/serveLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17626, 'p', 'finance', '/monitor/userOnlineList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17627, 'p', 'finance', '/notice/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17628, 'p', 'finance', '/attachment/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17629, 'p', 'finance', '/provinces/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17630, 'p', 'finance', '/provinces/tree', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17631, 'p', 'finance', '/provinces/childrenList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17632, 'p', 'finance', '/provinces/uniqueId', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17633, 'p', 'finance', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17634, 'p', 'finance', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17635, 'p', 'finance', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17636, 'p', 'finance', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17637, 'p', 'finance', '/dept/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17638, 'p', 'finance', '/dept/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17639, 'p', 'finance', '/dept/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17640, 'p', 'finance', '/post/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17641, 'p', 'finance', '/post/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17642, 'p', 'finance', '/post/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17643, 'p', 'finance', '/upload/file', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17644, 'p', 'finance', '/hgexample/table/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17645, 'p', 'finance', '/hgexample/table/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17646, 'p', 'finance', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17647, 'p', 'finance', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17648, 'p', 'finance', '/serveLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17649, 'p', 'finance', '/serveLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17650, 'p', 'finance', '/notice/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17651, 'p', 'finance', '/notice/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17652, 'p', 'finance', '/notice/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17653, 'p', 'finance', '/notice/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17654, 'p', 'finance', '/notice/editNotify', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17655, 'p', 'finance', '/notice/editNotice', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17656, 'p', 'finance', '/notice/editLetter', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17657, 'p', 'finance', '/notice/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17658, 'p', 'finance', '/hgexample/table/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17659, 'p', 'finance', '/hgexample/table/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17660, 'p', 'finance', '/hgexample/table/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17661, 'p', 'finance', '/hgexample/table/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17662, 'p', 'finance', '/hgexample/table/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17663, 'p', 'finance', '/hgexample/table/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17664, 'p', 'business', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17665, 'p', 'business', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17666, 'p', 'business', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17667, 'p', 'science', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17668, 'p', 'science', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17669, 'p', 'science', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17670, 'p', 'science', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17671, 'p', 'science', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17672, 'p', 'science', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17673, 'p', 'science', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17674, 'p', 'science', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17675, 'p', 'science', '/member/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17676, 'p', 'science', '/member/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17677, 'p', 'science', '/member/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17678, 'p', 'science', '/member/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17679, 'p', 'science', '/member/addBalance', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17680, 'p', 'science', '/dept/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17681, 'p', 'science', '/post/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17682, 'p', 'science', '/role/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17683, 'p', 'science', '/member/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17684, 'p', 'science', '/dept/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17685, 'p', 'merchant', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17686, 'p', 'merchant', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17687, 'p', 'merchant', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17688, 'p', 'merchant', '/log/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17689, 'p', 'merchant', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17690, 'p', 'merchant', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17691, 'p', 'merchant', '/loginLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17692, 'p', 'merchant', '/attachment/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17693, 'p', 'merchant', '/upload/file', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17694, 'p', 'merchant', '/hgexample/table/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17695, 'p', 'merchant', '/hgexample/table/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17696, 'p', 'merchant', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17697, 'p', 'merchant', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17698, 'p', 'merchant', '/notice/messageList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17699, 'p', 'merchant', '/hgexample/table/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17700, 'p', 'merchant', '/hgexample/table/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17701, 'p', 'merchant', '/hgexample/table/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17702, 'p', 'merchant', '/hgexample/table/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17703, 'p', 'merchant', '/hgexample/table/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17704, 'p', 'merchant', '/hgexample/table/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17705, 'p', 'merchant', '/hgexample/config/get', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17706, 'p', 'merchant', '/hgexample/config/update', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17707, 'p', 'merchant', '/order/create', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17708, 'p', 'merchant', '/order/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17709, 'p', 'merchant', '/creditsLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17710, 'p', 'merchant', '/creditsLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17711, 'p', 'merchant', '/creditsLog/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17712, 'p', 'merchant', '/order/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17713, 'p', 'merchant', '/order/acceptRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17714, 'p', 'merchant', '/order/applyRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17715, 'p', 'merchant', '/order/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17716, 'p', 'merchant', '/cash/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17717, 'p', 'merchant', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17718, 'p', 'merchant', '/config/getCash', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17719, 'p', 'merchant', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17720, 'p', 'merchant', '/member/updatePwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17721, 'p', 'merchant', '/member/updateMobile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17722, 'p', 'merchant', '/member/updateEmail', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17723, 'p', 'merchant', '/member/updateProfile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17724, 'p', 'merchant', '/member/updateCash', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17725, 'p', 'merchant', '/log/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17726, 'p', 'merchant', '/hgexample/table/tree', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17727, 'p', 'merchant', '/hgexample/treeTable/select', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17728, 'p', 'merchant', '/hgexample/comp/importExcel', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17729, 'p', 'merchant', '/hgexample/tenantOrder/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17730, 'p', 'merchant', '/hgexample/tenantOrder/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17731, 'p', 'merchant', '/hgexample/tenantOrder/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17732, 'p', 'merchant', '/hgexample/tenantOrder/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17733, 'p', 'merchant', '/hgexample/tenantOrder/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17734, 'p', 'user', 'dashboard', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17735, 'p', 'user', '/console/stat', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17736, 'p', 'user', 'dashboard_workplace', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17737, 'p', 'user', '/log/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17738, 'p', 'user', '/log/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17739, 'p', 'user', '/loginLog/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17740, 'p', 'user', '/loginLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17741, 'p', 'user', '/attachment/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17742, 'p', 'user', '/upload/file', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17743, 'p', 'user', '/hgexample/table/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17744, 'p', 'user', '/hgexample/table/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17745, 'p', 'user', '/loginLog/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17746, 'p', 'user', '/loginLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17747, 'p', 'user', '/notice/messageList', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17748, 'p', 'user', '/hgexample/table/maxSort', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17749, 'p', 'user', '/hgexample/table/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17750, 'p', 'user', '/hgexample/table/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17751, 'p', 'user', '/hgexample/table/status', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17752, 'p', 'user', '/hgexample/table/switch', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17753, 'p', 'user', '/hgexample/table/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17754, 'p', 'user', '/hgexample/config/get', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17755, 'p', 'user', '/hgexample/config/update', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17756, 'p', 'user', '/order/create', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17757, 'p', 'user', '/order/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17758, 'p', 'user', '/creditsLog/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17759, 'p', 'user', '/creditsLog/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17760, 'p', 'user', '/creditsLog/option', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17761, 'p', 'user', '/order/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17762, 'p', 'user', '/order/acceptRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17763, 'p', 'user', '/order/applyRefund', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17764, 'p', 'user', '/order/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17765, 'p', 'user', '/cash/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17766, 'p', 'user', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17767, 'p', 'user', '/config/getCash', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17768, 'p', 'user', '/cash/apply', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17769, 'p', 'user', '/member/updatePwd', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17770, 'p', 'user', '/member/updateMobile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17771, 'p', 'user', '/member/updateEmail', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17772, 'p', 'user', '/member/updateProfile', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17773, 'p', 'user', '/member/updateCash', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17774, 'p', 'user', '/log/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17775, 'p', 'user', '/hgexample/table/tree', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17776, 'p', 'user', '/hgexample/treeTable/select', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17777, 'p', 'user', '/hgexample/comp/importExcel', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17778, 'p', 'user', '/hgexample/tenantOrder/list', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17779, 'p', 'user', '/hgexample/tenantOrder/view', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17780, 'p', 'user', '/hgexample/tenantOrder/edit', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17781, 'p', 'user', '/hgexample/tenantOrder/delete', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''), +(17782, 'p', 'user', '/hgexample/tenantOrder/export', 'GET|POST|PUT|DELETE|PATCH|OPTIONS|HEAD', '', '', ''); + +INSERT INTO `hg_admin_role_menu` (`role_id`, `menu_id`) VALUES +(1, 2051), +(1, 2052), +(1, 2053), +(2, 2047), +(2, 2048), +(2, 2049), +(2, 2050), +(2, 2061), +(2, 2062), +(2, 2063), +(2, 2064), +(2, 2065), +(2, 2066), +(2, 2067), +(2, 2068), +(2, 2069), +(2, 2070), +(2, 2071), +(2, 2072), +(2, 2073), +(2, 2074), +(2, 2075), +(2, 2076), +(2, 2077), +(2, 2078), +(2, 2082), +(2, 2083), +(2, 2084), +(2, 2085), +(2, 2086), +(2, 2087), +(2, 2088), +(2, 2089), +(2, 2090), +(2, 2091), +(2, 2092), +(2, 2093), +(2, 2094), +(2, 2095), +(2, 2096), +(2, 2099), +(2, 2100), +(2, 2101), +(2, 2102), +(2, 2103), +(2, 2109), +(2, 2110), +(2, 2111), +(2, 2112), +(2, 2113), +(2, 2114), +(2, 2115), +(2, 2116), +(2, 2117), +(2, 2118), +(2, 2120), +(2, 2121), +(2, 2122), +(2, 2124), +(2, 2198), +(2, 2199), +(2, 2200), +(2, 2201), +(2, 2202), +(2, 2203), +(2, 2204), +(2, 2205), +(2, 2206), +(2, 2207), +(2, 2208), +(2, 2209), +(2, 2210), +(2, 2211), +(2, 2212), +(2, 2213), +(2, 2214), +(2, 2215), +(2, 2216), +(2, 2217), +(2, 2218), +(2, 2219), +(2, 2220), +(2, 2221), +(2, 2222), +(2, 2223), +(2, 2224), +(2, 2225), +(2, 2226), +(2, 2227), +(2, 2228), +(2, 2230), +(2, 2231), +(2, 2232), +(2, 2235), +(2, 2236), +(2, 2237), +(2, 2240), +(2, 2241), +(2, 2242), +(2, 2243), +(2, 2244), +(2, 2245), +(2, 2246), +(2, 2247), +(2, 2248), +(2, 2249), +(2, 2250), +(2, 2251), +(2, 2252), +(2, 2253), +(2, 2254), +(2, 2255), +(2, 2256), +(2, 2257), +(2, 2258), +(2, 2259), +(2, 2260), +(2, 2261), +(2, 2262), +(2, 2263), +(2, 2264), +(2, 2265), +(2, 2266), +(2, 2267), +(2, 2268), +(2, 2269), +(2, 2270), +(2, 2271), +(2, 2272), +(2, 2273), +(2, 2275), +(2, 2277), +(2, 2278), +(2, 2279), +(2, 2280), +(2, 2281), +(2, 2282), +(2, 2283), +(2, 2292), +(2, 2293), +(2, 2294), +(2, 2295), +(2, 2296), +(2, 2297), +(2, 2298), +(2, 2299), +(2, 2300), +(2, 2301), +(2, 2302), +(2, 2319), +(2, 2338), +(2, 2417), +(2, 2418), +(2, 2419), +(2, 2420), +(2, 2421), +(2, 2422), +(100, 2047), +(100, 2048), +(100, 2049), +(100, 2050), +(100, 2061), +(100, 2062), +(100, 2063), +(100, 2064), +(100, 2068), +(100, 2069), +(100, 2070), +(100, 2071), +(100, 2072), +(100, 2073), +(100, 2109), +(100, 2110), +(100, 2111), +(100, 2112), +(100, 2113), +(100, 2114), +(100, 2115), +(100, 2116), +(100, 2117), +(100, 2121), +(100, 2122), +(100, 2124), +(200, 2047), +(200, 2048), +(200, 2050), +(200, 2073), +(200, 2074), +(200, 2075), +(200, 2076), +(200, 2077), +(200, 2082), +(200, 2083), +(200, 2093), +(200, 2095), +(200, 2099), +(200, 2100), +(200, 2102), +(200, 2103), +(200, 2118), +(200, 2120), +(200, 2122), +(200, 2124), +(200, 2207), +(200, 2208), +(200, 2219), +(200, 2220), +(200, 2221), +(200, 2222), +(200, 2223), +(200, 2224), +(200, 2225), +(200, 2226), +(200, 2227), +(200, 2228), +(200, 2230), +(200, 2231), +(200, 2232), +(200, 2235), +(200, 2236), +(200, 2237), +(200, 2240), +(200, 2241), +(200, 2242), +(200, 2243), +(200, 2244), +(200, 2245), +(200, 2270), +(200, 2271), +(200, 2272), +(200, 2282), +(200, 2283), +(200, 2298), +(200, 2319), +(200, 2338), +(200, 2417), +(200, 2418), +(200, 2419), +(200, 2420), +(200, 2421), +(200, 2422), +(201, 2047), +(201, 2048), +(201, 2050), +(201, 2073), +(201, 2074), +(201, 2075), +(201, 2076), +(201, 2077), +(201, 2082), +(201, 2083), +(201, 2093), +(201, 2095), +(201, 2099), +(201, 2100), +(201, 2102), +(201, 2103), +(201, 2118), +(201, 2120), +(201, 2207), +(201, 2208), +(201, 2219), +(201, 2220), +(201, 2232), +(201, 2235), +(201, 2236), +(201, 2237), +(201, 2240), +(201, 2241), +(201, 2242), +(201, 2243), +(201, 2244), +(201, 2245), +(201, 2270), +(201, 2271), +(201, 2272), +(201, 2282), +(201, 2283), +(201, 2298), +(202, 2047), +(202, 2048), +(202, 2049), +(202, 2050), +(202, 2073), +(202, 2074), +(202, 2075), +(202, 2076), +(202, 2077), +(202, 2082), +(202, 2083), +(202, 2099), +(202, 2100), +(202, 2102), +(202, 2103), +(202, 2120), +(202, 2207), +(202, 2208), +(202, 2219), +(202, 2220), +(202, 2270), +(202, 2271), +(202, 2272), +(202, 2282), +(202, 2283), +(206, 2047), +(206, 2048), +(206, 2049), +(206, 2050), +(206, 2061), +(206, 2062), +(206, 2063), +(206, 2064), +(206, 2065), +(206, 2066), +(206, 2067), +(206, 2068), +(206, 2069), +(206, 2070), +(206, 2071), +(206, 2072), +(206, 2074), +(206, 2075), +(206, 2076), +(206, 2077), +(206, 2078), +(206, 2082), +(206, 2083), +(206, 2084), +(206, 2086), +(206, 2087), +(206, 2088), +(206, 2089), +(206, 2090), +(206, 2091), +(206, 2092), +(206, 2093), +(206, 2094), +(206, 2095), +(206, 2096), +(206, 2109), +(206, 2110), +(206, 2111), +(206, 2112), +(206, 2113), +(206, 2114), +(206, 2115), +(206, 2116), +(206, 2117), +(206, 2118), +(206, 2121), +(206, 2122), +(206, 2124), +(206, 2207), +(206, 2208), +(206, 2209), +(206, 2210), +(206, 2211), +(206, 2212), +(206, 2213), +(206, 2214), +(206, 2215), +(206, 2216), +(206, 2217), +(206, 2218), +(206, 2221), +(206, 2222), +(206, 2223), +(206, 2224), +(206, 2225), +(206, 2226), +(207, 2047), +(207, 2048), +(207, 2049), +(207, 2050), +(208, 2047), +(208, 2048), +(208, 2049), +(208, 2050), +(208, 2062), +(208, 2109), +(208, 2110), +(208, 2111), +(208, 2247), +(208, 2250), +(209, 2047), +(209, 2048), +(209, 2050), +(209, 2073), +(209, 2074), +(209, 2075), +(209, 2076), +(209, 2077), +(209, 2082), +(209, 2083), +(209, 2093), +(209, 2095), +(209, 2099), +(209, 2100), +(209, 2102), +(209, 2103), +(209, 2118), +(209, 2120), +(209, 2122), +(209, 2124), +(209, 2207), +(209, 2208), +(209, 2219), +(209, 2220), +(209, 2221), +(209, 2222), +(209, 2223), +(209, 2224), +(209, 2225), +(209, 2226), +(209, 2227), +(209, 2228), +(209, 2230), +(209, 2231), +(209, 2232), +(209, 2235), +(209, 2236), +(209, 2237), +(209, 2240), +(209, 2241), +(209, 2242), +(209, 2243), +(209, 2244), +(209, 2245), +(209, 2270), +(209, 2271), +(209, 2272), +(209, 2282), +(209, 2283), +(209, 2298), +(209, 2319), +(209, 2338), +(209, 2417), +(209, 2418), +(209, 2419), +(209, 2420), +(209, 2421), +(209, 2422), +(210, 2047), +(210, 2048), +(210, 2050), +(210, 2073), +(210, 2074), +(210, 2075), +(210, 2076), +(210, 2077), +(210, 2082), +(210, 2083), +(210, 2093), +(210, 2095), +(210, 2099), +(210, 2100), +(210, 2102), +(210, 2103), +(210, 2118), +(210, 2120), +(210, 2122), +(210, 2124), +(210, 2207), +(210, 2208), +(210, 2219), +(210, 2220), +(210, 2221), +(210, 2222), +(210, 2223), +(210, 2224), +(210, 2225), +(210, 2226), +(210, 2227), +(210, 2228), +(210, 2230), +(210, 2231), +(210, 2232), +(210, 2235), +(210, 2236), +(210, 2237), +(210, 2240), +(210, 2241), +(210, 2242), +(210, 2243), +(210, 2244), +(210, 2245), +(210, 2270), +(210, 2271), +(210, 2272), +(210, 2282), +(210, 2283), +(210, 2298), +(210, 2319), +(210, 2338), +(210, 2417), +(210, 2418), +(210, 2419), +(210, 2420), +(210, 2421), +(210, 2422); + + + +INSERT INTO `hg_sys_addons_config` (`id`, `addon_name`, `group`, `name`, `type`, `key`, `value`, `default_value`, `sort`, `tip`, `is_default`, `status`, `created_at`, `updated_at`) VALUES +(1, 'hgexample', 'basic', '测试参数', 'string', 'basicTest', 'HotGo', 'HotGo', 10, '测试参数,可以按需添加配置自定义参数', 0, 1, '2023-02-14 10:56:01', '2024-04-13 23:56:36'); + +INSERT INTO `hg_sys_addons_install` (`id`, `name`, `version`, `status`, `created_at`, `updated_at`) VALUES +(1, 'hgexample', 'v1.0.0', 1, '2023-02-02 00:00:00', '2023-04-28 16:46:02'); + + +INSERT INTO `hg_sys_blacklist` (`id`, `ip`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, '39.162.138.4', '', 2, '2022-10-01 22:02:09', '2022-10-01 22:39:23'), +(2, '29.162.138.91', '', 2, '2022-10-01 22:02:09', '2022-10-01 22:39:23'), +(3, '19.162.138.94', '指定IP', 1, '2022-10-01 14:02:09', '2023-01-20 23:11:43'), +(5, '19.162.138.91,19.162.138.96', '多个IP', 1, '2022-10-01 14:02:09', '2023-01-20 23:11:36'), +(6, '19.160.138.0/24', 'IP段', 1, '2022-10-01 14:02:09', '2023-01-20 23:11:30'), +(7, '29.160.138.0-29.160.138.5', 'IP范围', 1, '2022-10-01 14:02:09', '2023-04-27 23:30:46'); + +INSERT INTO `hg_sys_config` (`id`, `group`, `name`, `type`, `key`, `value`, `default_value`, `sort`, `tip`, `is_default`, `status`, `created_at`, `updated_at`) VALUES +(1, 'theme', '默认主题', 'string', 'themeDarkTheme', 'dark', 'dark', 50, '', 1, 1, '2021-01-30 13:27:43', '2022-09-05 20:29:05'), +(2, 'theme', '默认系统主题', 'string', 'themeAppTheme', '#2d8cf0', '#2d8cf0', 60, '', 1, 1, '2021-01-30 13:27:43', '2022-09-05 20:29:05'), +(3, 'theme', '默认侧边栏风格', 'string', 'themeNavTheme', 'light', 'dark', 70, '', 1, 1, '2021-01-30 13:27:43', '2022-09-05 20:29:05'), +(6, 'basic', '网站名称', 'string', 'basicName', 'HotGo', 'HotGo!', 10, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), +(7, 'basic', '网站logo', 'string', 'basicLogo', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', '', 20, '首页使用', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), +(8, 'basic', '网站备案号', 'string', 'basicIcpCode', '豫ICP备16035288号', '', 30, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), +(9, 'basic', '网站开启访问', 'bool', 'basicSystemOpen', '1', 'true', 50, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), +(10, 'basic', '网站关闭提示', 'string', 'basicCloseText', '网站维护中,暂时无法访问!本网站正在进行系统维护和技术升级,网站暂时无法访问,敬请谅解!', '网站维护中,暂时无法访问!本网站正在进行系统维护和技术升级,网站暂时无法访问,敬请谅解!', 60, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:29'), +(11, 'basic', '版权所有', 'string', 'basicCopyright', '© 2019 - 2023 HotGo All Rights Reserved.', '© 2021 - 2023 HotGo All Rights Reserved.', 40, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), +(12, 'smtp', 'SMTP服务器', 'string', 'smtpHost', 'smtpdm.aliyun.com', 'smtpdm.aliyun.com', 50, '错误的配置发送邮件会导致服务器超时', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(13, 'smtp', 'SMTP端口', 'int', 'smtpPort', '25', '25', 100, '(不加密默认25,SSL默认465,TLS默认587)', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(14, 'smtp', 'SMTP用户名', 'string', 'smtpUser', 'ali@mail.qvnidaye.com', '', 110, '填写完整用户名', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(15, 'smtp', 'SMTP密码', 'string', 'smtpPass', '', '', 120, '填写您的密码', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(16, 'smtp', '发件人名称', 'string', 'smtpSendName', 'HotGo', 'HotGo', 130, '', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(17, 'smtp', '管理员邮箱', 'string', 'smtpAdminMailbox', '133814250@qq.com', '133814250@qq.com', 140, '', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(28, 'upload', '上传驱动', 'string', 'uploadDrive', 'local', '', 300, 'local:本地;ucloud:ucloud;腾讯云:cos', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(29, 'upload', '上传图片大小限制', 'int', 'uploadImageSize', '1', '2', 310, '单位:MB', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(30, 'upload', '上传图片类型限制', 'string', 'uploadImageType', 'jpg,jpeg,gif,npm,png,svg', 'jpg,jpeg,gif,npm,png,svg', 320, '图片上传后缀类型限制', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(31, 'upload', '上传文件大小限制', 'int', 'uploadFileSize', '1000', '10', 330, '单位:MB', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(32, 'upload', '上传文件类型限制', 'string', 'uploadFileType', 'doc,docx,pdf,zip,tar,xls,xlsx,rar,jpg,jpeg,gif,npm,png,svg', 'doc,docx,zip,xls,xlsx,rar,jpg,jpeg,gif,npm,png,svg', 340, '文件上传后缀类型限制', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(33, 'upload', '本地存储路径', 'string', 'uploadLocalPath', 'attachment/', 'attachment/', 350, '对外访问的相对路径', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(34, 'upload', 'UCloud存储路径', 'string', 'uploadUCloudPath', 'hotgo/attachment/', 'hotgo/attachment/', 360, 'UC对象存储中的相对路径', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(35, 'upload', 'UCloud公钥', 'string', 'uploadUCloudPublicKey', '', '', 370, '获取地址:https://console.ucloud.cn/ufile/token', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(36, 'upload', 'UCloud私钥', 'string', 'uploadUCloudPrivateKey', '', '', 380, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(37, 'upload', 'UCloud地域API', 'string', 'uploadUCloudBucketHost', 'api.ucloud.cn', 'api.ucloud.cn', 390, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(38, 'upload', 'UCloud存储桶名称', 'string', 'uploadUCloudBucketName', 'bufanyun', '', 400, '存储空间名称', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(39, 'upload', 'UCloud存储桶地域host', 'string', 'uploadUCloudFileHost', 'cn-bj.ufileos.com', 'cn-bj.ufileos.com', 410, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(40, 'upload', 'UCloud访问域名', 'string', 'uploadUCloudEndpoint', 'https://gmycos.facms.cn', '', 420, '格式,http://abc.com 或 https://abc.com,不可为空', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(41, 'geo', '高德Web服务key', 'string', 'geoAmapWebKey', '', '', 500, '申请地址:https://console.amap.com/dev/key/app', 1, 1, '2021-01-30 13:27:43', '2022-12-07 15:48:43'), +(42, 'sms', '短信驱动,aliyun:阿里云;tencent:腾讯云', 'string', 'smsDrive', 'tencent', '', 600, '', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(43, 'sms', '阿里云AccessKeyID', 'string', 'smsAliYunAccessKeyID', '', '', 610, '应用key和密钥你可以通过 https://ram.console.aliyun.com/manage/ak 获取', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(44, 'sms', '阿里云AccessKeySecret', 'string', 'smsAliYunAccessKeySecret', '', '', 620, '', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(45, 'sms', '阿里云短信签名', 'string', 'smsAliYunSign', '', '', 630, '申请地址:https://dysms.console.aliyun.com/domestic/text/sign', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(46, 'sms', '阿里云短信模板', 'string', 'smsAliYunTemplate', '[{\"key\":\"login\",\"value\":\"SMS_198921686\"},{\"key\":\"register\",\"value\":\"SMS_198921686\"},{\"key\":\"code\",\"value\":\"SMS_198921686\"},{\"key\":\"resetPwd\",\"value\":\"SMS_198921686\"},{\"key\":\"bind\",\"value\":\"SMS_198921686\"},{\"key\":\"cash\",\"value\":\"SMS_198921686\"}]', '', 640, '', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(47, 'sms', '最小发送间隔', 'int', 'smsMinInterval', '60', '', 600, '同号码', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(48, 'sms', 'IP最大发送次数', 'int', 'smsMaxIpLimit', '10', '', 610, '同IP每天最大允许发送次数', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(49, 'sms', '验证码有效期', 'int', 'smsCodeExpire', '600', '', 610, '单位:秒', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(50, 'smtp', '邮件模板', 'string', 'smtpTemplate', '[{\"key\":\"text\",\"value\":\"./resource/template/email/text.html\"},{\"key\":\"login\",\"value\":\"./resource/template/email/code.html\"},{\"key\":\"register\",\"value\":\"./resource/template/email/code.html\"},{\"key\":\"code\",\"value\":\"./resource/template/email/code.html\"},{\"key\":\"resetPwd\",\"value\":\"./resource/template/email/resetPwd.html\"},{\"key\":\"bind\",\"value\":\"./resource/template/email/code.html\"},{\"key\":\"cash\",\"value\":\"./resource/template/email/code.html\"}]', '', 190, '', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(51, 'smtp', '最小发送间隔', 'int', 'smtpMinInterval', '60', '', 150, '同地址', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(52, 'smtp', 'IP最大发送次数', 'int', 'smtpMaxIpLimit', '10', '', 160, '同IP每天最大允许发送次数', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(53, 'smtp', '验证码有效期', 'int', 'smtpCodeExpire', '600', '', 170, '单位:秒', 1, 1, '2021-01-30 13:27:43', '2023-02-04 16:59:13'), +(54, 'basic', '网站域名', 'string', 'basicDomain', 'https://hotgo.facms.cn', 'https://hotgo.facms.cn', 45, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), +(55, 'basic', 'websocket地址', 'string', 'basicWsAddr', 'wss://hotgo.facms.cn/socket', 'wss://hotgo.facms.cn/socket', 48, '', 1, 1, '2021-01-30 13:27:43', '2024-04-21 22:58:30'), +(56, 'upload', 'COS存储路径', 'string', 'uploadCosPath', 'hotgo/attachment/', 'hotgo/attachment/', 450, 'COS对象存储中的相对路径', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(57, 'upload', 'COS秘钥ID', 'string', 'uploadCosSecretId', '', '', 460, '子账号密钥获取可参考 https://cloud.tencent.com/document/product/598/37140', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(58, 'upload', 'COS秘钥', 'string', 'uploadCosSecretKey', '', '', 470, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(59, 'upload', 'COS访问域名', 'string', 'uploadCosBucketURL', '', 'https://xxx-1253625515.cos.ap-beijing.myqcloud.com', 480, '控制台查看地址:https://console.cloud.tencent.com/cos/bucket', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(60, 'upload', 'OSS存储路径', 'string', 'uploadOssPath', 'hotgo/attachment/', 'hotgo/attachment/', 500, 'OSS对象存储中的相对路径', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(61, 'upload', 'OSS秘钥ID', 'string', 'uploadOssSecretId', '', '', 510, '阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(62, 'upload', 'OSS秘钥', 'string', 'uploadOssSecretKey', '', '', 520, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(63, 'upload', 'Bucket 域名', 'string', 'uploadOssBucketURL', 'http://bufanyunoss.oss-cn-qingdao.aliyuncs.com', 'https://xxx.oss-cn-qingdao.aliyuncs.com', 530, 'Bucket 域名', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(64, 'upload', 'OSSEndpoint', 'string', 'uploadOssEndpoint', 'http://oss-cn-qingdao.aliyuncs.com', 'https://oss-cn-qingdao.aliyuncs.com', 540, 'Endpoint(地域节点)', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(65, 'upload', 'OSS存储空间名称', 'string', 'uploadOssBucket', '', '', 550, '存储空间名称,例如examplebucket', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(66, 'upload', '七牛云AccessKey', 'string', 'uploadQiNiuAccessKey', '', '', 600, '创建地址:https://portal.qiniu.com/user/key', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(67, 'upload', '七牛云SecretKey', 'string', 'uploadQiNiuSecretKey', '', '', 610, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(68, 'upload', '七牛云储存路径', 'string', 'uploadQiNiuPath', 'hotgo/attachment/', 'hotgo/attachment/', 620, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(69, 'upload', '七牛云存储空间名称', 'string', 'uploadQiNiuBucket', '', 'bufanyun', 630, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(70, 'upload', '七牛云访问域名', 'string', 'uploadQiNiuDomain', '', '', 640, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(78, 'sms', '腾讯云SecretId', 'string', 'smsTencentSecretId', '', '', 650, '获取地址:https://console.cloud.tencent.com/cam/capi', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(79, 'sms', '腾讯云SecretKey', 'string', 'smsTencentSecretKey', '', '', 660, '', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(80, 'sms', '腾讯云短信应用ID', 'string', 'smsTencentAppId', '', '', 670, '查看地址:https://console.cloud.tencent.com/smsv2/app-manage', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(81, 'sms', '腾讯云短信签名', 'string', 'smsTencentSign', '', '', 680, '查看地址:https://console.cloud.tencent.com/smsv2/csms-sign', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(82, 'sms', '腾讯云接入地域域名', 'string', 'smsTencentEndpoint', 'sms.tencentcloudapi.com', 'sms.tencentcloudapi.com', 690, '默认就近地域接入域名为 sms.tencentcloudapi.com ,也支持指定地域域名访问,例如广州地域的域名为 sms.ap-guangzhou.tencentcloudapi.com', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(83, 'sms', '腾讯云地域信息', 'string', 'smsTencentRegion', 'ap-guangzhou', 'ap-guangzhou', 695, '支持的地域列表参考 https://cloud.tencent.com/document/api/382/52071#.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(84, 'sms', '腾讯云短信模板', 'string', 'smsTencentTemplate', '[{\"key\":\"login\",\"value\":\"1758990\"},{\"key\":\"register\",\"value\":\"1758990\"},{\"key\":\"code\",\"value\":\"1758990\"},{\"key\":\"resetPwd\",\"value\":\"1758990\"},{\"key\":\"bind\",\"value\":\"1758990\"},{\"key\":\"cash\",\"value\":\"1758990\"}]', '', 698, '', 1, 1, '2021-01-30 13:27:43', '2023-04-10 13:55:32'), +(85, 'pay', 'Debug开关', 'bool', 'payDebug', '1', 'true', 800, '输出请求日志', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(86, 'pay', '支付宝应用ID', 'string', 'payAliPayAppId', '', '', 810, '', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(87, 'pay', '支付宝PrivateKey', 'string', 'payAliPayPrivateKey', 'storage/cert/pay/alipay/alipayPrivateKey', '', 820, '应用私钥,支持PKCS1和PKCS8', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(88, 'pay', '支付宝AppCertPublicKey', 'string', 'payAliPayAppCertPublicKey', 'storage/cert/pay/alipay/appCertPublicKey.crt', '', 830, 'appCertPublicKey.crt证书内容', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(89, 'pay', '支付宝RootCert', 'string', 'payAliPayRootCert', 'storage/cert/pay/alipay/alipayRootCert.crt', '', 840, 'alipayRootCert.crt证书内容', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(90, 'pay', '支付宝PublicKeyRSA2', 'string', 'payAliPayCertPublicKeyRSA2', 'storage/cert/pay/alipay/alipayCertPublicKey_RSA2.crt', '', 850, 'alipayCertPublicKey_RSA2.crt证书内容', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(91, 'pay', '微信支付应用ID', 'string', 'payWxPayAppId', '', '', 860, '', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(92, 'pay', '微信支付商户ID', 'string', 'payWxPayMchId', '', '', 870, '商户ID 或者服务商模式的 sp_mchid', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(93, 'pay', '微信支付证书序列号', 'string', 'payWxPaySerialNo', '', '', 880, '商户证书的证书序列号', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(94, 'pay', '微信支付APIv3Key', 'string', 'payWxPayAPIv3Key', '', '', 890, '商户平台获取', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(95, 'pay', '微信支付私钥', 'string', 'payWxPayPrivateKey', '', '', 900, 'apiclient_key.pem 读取后的内容', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(96, 'pay', 'QQ支付应用ID', 'string', 'payQQPayAppId', '', '', 910, '', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(97, 'pay', 'QQ支付商户ID', 'string', 'payQQPayMchId', '', '', 920, '', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(98, 'pay', 'QQ支付ApiKey', 'string', 'payQQPayApiKey', '', '', 930, 'API秘钥值', 1, 1, '2021-01-30 13:27:43', '2023-08-05 14:00:56'), +(99, 'cash', '提现开关', 'int', 'cashSwitch', '1', '1', 200, '', 1, 1, '2021-09-29 23:51:21', '2022-12-21 21:58:52'), +(100, 'cash', '提现最低手续费(元)', 'int', 'cashMinFee', '3', '3', 210, '', 1, 1, '2021-09-29 23:51:21', '2022-12-21 21:58:52'), +(101, 'cash', '提现最低手续费比率', 'string', 'cashMinFeeRatio', '0.03', '0.03', 220, '', 1, 1, '2021-01-30 13:27:43', '2022-12-21 21:58:52'), +(102, 'cash', '提现最低金额', 'int', 'cashMinMoney', '100', '', 230, '', 1, 1, '2021-01-30 13:27:43', '2022-12-21 21:58:52'), +(103, 'cash', '提现提示信息', 'string', 'cashTips', '

温馨提示:请保证支付宝信息姓名、账号、收款码信息一致且无误,否则导致不到账后果自负。

\n\n

提现条件:满100元后可申请提现。

\n

提现手续费:固定3元/次,提现金额超过100元按3%收取,封顶135元/次。

', '', 240, '', 1, 1, '2021-01-30 13:27:43', '2022-12-21 21:58:52'), +(104, 'wechat', '公众号AppId', 'string', 'officialAccountAppId', '', '', 1000, '请填写微信公众平台后台的AppId', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(105, 'wechat', '公众号AppSecret', 'string', 'officialAccountAppSecret', '', '', 1010, '请填写微信公众平台后台的AppSecret', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(106, 'wechat', '公众号token', 'string', 'officialAccountToken', '', '', 1020, '', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(107, 'wechat', '公众号EncodingAESKey', 'string', 'officialAccountEncodingAESKey', '', '', 1030, '与公众平台接入设置值一致,必须为英文或者数字,长度为43个字符. 请妥善保管,EncodingAESKey 泄露将可能被窃取或篡改平台的操作数据', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(108, 'wechat', '开放平台AppId', 'string', 'openPlatformAppId', '', '', 1040, '请填写微信开放平台平台后台的AppId', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(109, 'wechat', '开放平台AppSecret', 'string', 'openPlatformAppSecret', '', '', 1050, '请填写微信开放平台平台后台的AppSecret', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(110, 'wechat', '开放平台EncodingAESKey', 'string', 'openPlatformEncodingAESKey', '', '', 1060, '与开放平台接入设置值一致,必须为英文或者数字,长度为43个字符. 请妥善保管,EncodingAESKey 泄露将可能被窃取或篡改平台的操作数据', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(111, 'wechat', '开放平台token', 'string', 'openPlatformToken', '', '', 1070, '', 1, 1, '2021-01-30 13:27:43', '2023-07-26 16:06:53'), +(112, 'login', '注册开关', 'int', 'loginRegisterSwitch', '1', '1', 1100, '', 1, 1, '2021-09-29 23:51:21', '2023-08-04 17:03:36'), +(113, 'login', '验证码开关', 'int', 'loginCaptchaSwitch', '1', '1', 1110, '', 1, 1, '2021-09-29 23:51:21', '2023-08-04 17:03:36'), +(114, 'login', '用户协议', 'string', 'loginProtocol', '

用户协议..

', '', 1120, '', 1, 1, '2021-09-29 23:51:21', '2023-08-04 17:03:36'), +(115, 'login', '隐私权政策', 'string', 'loginPolicy', '

隐私权政策..

', '', 1130, '', 1, 1, '2021-09-29 23:51:21', '2023-08-04 17:03:36'), +(116, 'login', '默认注册角色', 'int64', 'loginRoleId', '202', '', 1140, '', 1, 1, '2021-09-29 23:51:21', '2023-08-04 17:03:36'), +(117, 'login', '默认注册部门', 'int64', 'loginDeptId', '109', '', 1150, '', 1, 1, '2021-09-29 23:51:21', '2023-08-04 17:03:36'), +(118, 'login', '默认注册岗位', '[]int64', 'loginPostIds', '[6]', '', 1160, '', 1, 1, '2021-09-29 23:51:21', '2023-08-04 17:03:36'), +(119, 'login', '默认注册头像', 'string', 'loginAvatar', 'https://gmycos.facms.cn/hotgo/attachment/2023-02-09/cqdq8er9nfkchdopav.png', '', 1170, '', 1, 1, '2021-09-29 23:51:21', '2023-08-04 17:03:36'), +(120, 'login', '强制邀请', 'int', 'loginForceInvite', '2', '1', 1190, '', 1, 1, '2021-09-29 23:51:21', '2023-08-04 17:03:36'), +(121, 'login', '自动获取openId', 'int', 'loginAutoOpenId', '2', '1', 1195, '', 1, 1, '2021-09-29 23:51:21', '2023-08-04 17:03:36'), +(122, 'upload', 'minio AccessKey', 'string', 'uploadMinioAccessKey', '', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(123, 'upload', 'minio SecretKey', 'string', 'uploadMinioSecretKey', '', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(124, 'upload', 'minio地域节点', 'string', 'uploadMinioEndpoint', '', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(125, 'upload', 'minio是否启用SSL', 'int', 'uploadMinioUseSSL', '1', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(126, 'upload', 'minio存储路径', 'string', 'uploadMinioPath', 'hotgo/attachment/', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(127, 'upload', 'minio桶名称', 'string', 'uploadMinioBucket', '', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'), +(128, 'upload', 'minio对外访问域名', 'string', 'uploadMinioDomain', '', '', 650, '', 1, 1, '2021-01-30 13:27:43', '2024-02-28 16:56:35'); + +INSERT INTO `hg_sys_cron` (`id`, `group_id`, `title`, `name`, `params`, `pattern`, `policy`, `count`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, 1, '测试任务', 'test', '', '* * * * * *', 1, 3, 10, '测试无参数任务', 2, '2022-10-01 22:02:09', '2023-11-25 14:33:05'), +(2, 1, '测试带参数', 'test2', 'hotGo,3,欢迎使用hotGo!', '* * * * * *', 1, 0, 10, '测试有参数任务', 2, '2022-10-01 06:02:09', '2023-11-17 18:38:49'), +(3, 1, '测试带参数-多任务', 'test2', 'hotGo,3,这是同一个执行方法开多个定时任务的实例!', '* * * * * *', 1, 1, 10, '相同的执行方法,可以开启多个任务', 2, '2023-11-17 16:12:26', '2023-11-20 10:11:47'), +(4, 1, '测试带参数-错误', 'test2', '666', '* * * * * *', 1, 1, 10, '参入一个错误的参数格式,来模拟执行出错示例', 2, '2023-11-17 18:23:39', '2023-11-17 18:39:59'), +(10, 1, '关闭过期订单', 'close_order', '', '0 */10 * * * *', 1, 1, 100, '取消过期订单,10分钟运行一次', 2, '2023-04-22 21:58:47', '2023-11-18 11:54:07'); + +INSERT INTO `hg_sys_cron_group` (`id`, `pid`, `name`, `is_default`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, 0, '系统默认', 1, 0, '这是系统默认的任务分组,无法删除!', 1, '2021-02-25 17:38:07', '2021-02-25 19:32:57'), +(2, 0, '测试', 0, 0, '这是测试任务分组', 1, NULL, '2023-05-29 14:59:39'); + +INSERT INTO `hg_sys_dict_data` (`id`, `label`, `value`, `value_type`, `type`, `list_class`, `is_default`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, '男', '1', 'int', 'sys_user_sex', 'success', 1, 10, '性别男', 1, '2021-01-30 13:27:43', '2023-04-27 23:24:58'), +(2, '女', '2', 'int', 'sys_user_sex', 'warning', 1, 20, '性别女', 1, '2021-01-30 13:27:43', '2023-01-06 09:45:21'), +(3, '保密', '3', 'int', 'sys_user_sex', 'error', 1, 30, '性别保密', 1, '2021-01-30 13:27:43', '2023-01-06 09:45:18'), +(6, '正常', '1', 'int', 'sys_normal_disable', 'success', 1, 10, '正常状态', 1, '2021-01-30 13:27:43', '2023-01-18 09:52:44'), +(7, '停用', '2', 'int', 'sys_normal_disable', 'warning', 1, 20, '停用状态', 1, '2021-01-30 13:27:43', '2023-01-18 09:52:48'), +(8, '正常', '1', 'int', 'sys_job_status', 'primary', 1, 10, '正常状态', 1, '2021-01-30 13:27:43', '2023-01-18 09:53:48'), +(9, '暂停', '2', 'int', 'sys_job_status', 'error', 1, 20, '停用状态', 1, '2021-01-30 13:27:43', '2023-01-18 09:53:53'), +(10, '默认', 'DEFAULT', 'string', 'sys_job_group', '', 1, 10, '默认分组', 1, '2021-01-30 13:27:43', NULL), +(11, '系统', 'SYSTEM', 'string', 'sys_job_group', '', 1, 20, '系统分组', 1, '2021-01-30 13:27:43', NULL), +(14, '通知', '1', 'int', 'sys_notice_type', 'warning', 1, 10, '通知', 1, '2021-01-30 13:27:43', '2023-01-05 20:06:47'), +(15, '公告', '2', 'int', 'sys_notice_type', 'error', 1, 20, '公告', 1, '2021-01-30 13:27:43', '2023-01-26 12:08:52'), +(18, '新增', '1', 'int', 'sys_oper_type', 'info', 0, 10, '新增操作', 1, '2021-01-30 13:27:43', NULL), +(19, '修改', '2', 'int', 'sys_oper_type', 'info', 0, 20, '修改操作', 1, '2021-01-30 13:27:43', NULL), +(20, '删除', '3', 'int', 'sys_oper_type', 'error', 0, 30, '删除操作', 1, '2021-01-30 13:27:43', NULL), +(21, '授权', '4', 'int', 'sys_oper_type', 'primary', 0, 40, '授权操作', 1, '2021-01-30 13:27:43', NULL), +(22, '导出', '5', 'int', 'sys_oper_type', 'warning', 0, 50, '导出操作', 1, '2021-01-30 13:27:43', NULL), +(23, '导入', '6', 'int', 'sys_oper_type', 'warning', 0, 60, '导入操作', 1, '2021-01-30 13:27:43', NULL), +(24, '强退', '7', 'int', 'sys_oper_type', 'error', 0, 70, '强退操作', 1, '2021-01-30 13:27:43', NULL), +(25, '生成代码', '8', 'int', 'sys_oper_type', 'warning', 0, 80, '生成操作', 1, '2021-01-30 13:27:43', NULL), +(26, '清空数据', '9', 'int', 'sys_oper_type', 'error', 0, 90, '清空操作', 1, '2021-01-30 13:27:43', NULL), +(28, '校验', '11', 'int', 'sys_oper_type', NULL, 0, 110, '校验', 1, '2021-10-04 22:40:50', '2021-10-04 22:50:02'), +(80, '查询', '10', 'int', 'sys_oper_type', NULL, 0, 100, '查询', 1, '2021-10-04 22:37:38', '2021-10-04 22:49:32'), +(88, 'GET', 'GET', 'string', 'sys_oper_method', '', 0, 10, '', 1, '2022-01-25 10:16:46', '2022-01-25 10:16:46'), +(89, 'POST', 'POST', 'string', 'sys_oper_method', '', 0, 20, '', 1, '2022-01-25 10:16:54', '2022-01-25 10:16:54'), +(90, '请求失败', '-1', 'int', 'req_code', 'warning', 0, 20, '通用错误码', 1, '2022-01-25 10:23:34', '2023-01-06 09:58:17'), +(91, '请求成功', '0', 'int', 'req_code', 'success', 0, 10, '通用成功码', 1, '2022-01-25 10:23:54', '2023-01-06 09:58:14'), +(92, '内部发生错误', '50', 'int', 'req_code', 'error', 0, 30, '内部错误', 1, '2022-01-25 10:24:06', '2023-01-06 09:56:31'), +(95, '不允许的操作', '59', 'int', 'req_code', 'error', 0, 60, '当前操作的给定参数无效', 1, '2022-01-25 10:24:38', '2023-01-06 09:56:00'), +(103, '没有授权登录', '61', 'int', 'req_code', 'warning', 0, 140, '未授权', 1, '2022-01-25 10:26:12', '2023-01-06 09:55:50'), +(109, '业务验证失败', '300', 'int', 'req_code', 'warning', 0, 200, '业务验证失败', 1, '2022-01-25 10:27:51', '2023-01-06 09:56:51'), +(110, '大于50ms', '50', 'int64', 'req_take_up_time', 'success', 0, 10, '', 1, '2022-01-25 15:51:45', '2023-01-06 09:59:50'), +(111, '大于100ms', '100', 'int64', 'req_take_up_time', 'success', 0, 20, '', 1, '2022-01-25 15:51:57', '2023-01-06 09:59:53'), +(112, '大于200ms', '200', 'int64', 'req_take_up_time', 'info', 0, 30, '', 1, '2022-01-25 15:52:21', '2023-01-06 09:59:57'), +(113, '大于500ms', '500', 'int64', 'req_take_up_time', 'warning', 0, 40, '', 1, '2022-01-25 15:52:32', '2023-01-06 10:00:02'), +(114, '大于1000ms', '1000', 'int64', 'req_take_up_time', 'error', 0, 50, '', 1, '2022-01-25 15:52:57', '2023-01-06 10:00:06'), +(115, '大于5000ms', '5000', 'int64', 'req_take_up_time', 'error', 0, 60, '', 1, '2022-01-24 23:54:15', '2023-01-06 10:00:10'), +(116, '开启', '1', 'int', 'sys_switch', 'info', 1, 10, '系统开关开启', 1, '2021-01-30 13:27:43', '2022-12-27 00:00:00'), +(117, '关闭', '2', 'int', 'sys_switch', 'warning', 1, 20, '系统开关关闭', 1, '2021-01-30 13:27:43', '2022-12-27 00:00:00'), +(118, 'PC端', '1', 'int', 'sys_user_channel', 'info', 0, 80, '用户来源', 1, '2021-01-30 13:27:43', '2023-01-05 17:01:21'), +(119, '移动端', '2', 'int', 'sys_user_channel', 'success', 0, 80, '用户来源', 1, '2021-01-30 13:27:43', '2023-01-05 16:52:48'), +(120, '微信', '3', 'int', 'sys_user_channel', 'warning', 0, 80, '用户来源', 1, '2021-01-30 13:27:43', '2023-01-05 16:52:43'), +(121, '抖音', '4', 'int', 'sys_user_channel', 'error', 0, 80, '用户来源', 1, '2021-01-30 13:27:43', '2023-01-05 16:52:39'), +(122, '音乐', '1', 'int', 'sys_user_hobby', 'error', 0, 80, '爱好类型', 1, '2021-01-30 13:27:43', '2023-01-06 09:45:11'), +(123, '读书', '2', 'int', 'sys_user_hobby', 'info', 0, 80, '爱好类型', 1, '2021-01-30 13:27:43', '2023-01-06 09:45:08'), +(124, '游泳', '3', 'int', 'sys_user_hobby', 'warning', 0, 80, '爱好类型', 1, '2021-01-30 13:27:43', '2023-01-06 09:45:05'), +(125, '本地存储', 'local', 'string', 'config_upload_drive', 'info', 1, 10, '', 1, '2022-12-30 17:57:50', '2023-01-06 10:02:31'), +(126, 'ucloud', 'ucloud', 'string', 'config_upload_drive', 'success', 1, 20, '', 1, '2022-12-30 17:58:26', '2022-12-30 17:58:26'), +(127, 'DEBU', 'DEBU', 'string', 'sys_log_type', 'default', 0, 10, '', 1, '2023-01-20 16:56:23', '2023-01-20 16:56:23'), +(128, 'INFO', 'INFO', 'string', 'sys_log_type', 'info', 0, 20, '', 1, '2023-01-20 16:56:34', '2023-01-20 16:56:34'), +(129, 'WARN', 'WARN', 'string', 'sys_log_type', 'warning', 0, 30, '', 1, '2023-01-20 16:56:47', '2023-01-20 16:56:47'), +(130, 'ERRO', 'ERRO', 'string', 'sys_log_type', 'error', 0, 50, '', 1, '2023-01-20 16:57:01', '2023-01-20 16:57:01'), +(131, 'PANI', 'PANI', 'string', 'sys_log_type', 'error', 0, 60, '', 1, '2023-01-20 16:57:23', '2023-01-20 16:57:23'), +(132, 'FATA', 'FATA', 'string', 'sys_log_type', 'error', 0, 70, '', 1, '2023-01-20 16:57:37', '2023-01-20 16:57:37'), +(133, '阿里云', 'aliyun', 'string', 'config_sms_drive', 'success', 0, 10, '', 1, '2023-01-21 10:27:59', '2023-01-21 10:27:59'), +(134, '腾讯云', 'tencent', 'string', 'config_sms_drive', 'info', 0, 20, '', 1, '2023-01-21 10:28:23', '2023-01-21 10:28:23'), +(135, '通用验证码', 'code', 'string', 'config_sms_template', 'info', 0, 10, '', 1, '2023-01-21 10:28:39', '2023-01-21 20:40:09'), +(136, '登录', 'login', 'string', 'config_sms_template', 'success', 0, 20, '', 1, '2023-01-21 10:28:48', '2023-01-21 10:28:48'), +(137, '注册', 'register', 'string', 'config_sms_template', 'warning', 0, 30, '', 1, '2023-01-21 10:28:58', '2023-01-21 10:28:58'), +(138, '重置密码', 'resetPwd', 'string', 'config_sms_template', 'error', 0, 40, '', 1, '2023-01-21 10:29:10', '2023-01-21 10:29:10'), +(139, '绑定手机号', 'bind', 'string', 'config_sms_template', 'info', 0, 50, '', 1, '2023-01-21 10:29:22', '2023-01-21 10:29:22'), +(140, '申请提现', 'cash', 'string', 'config_sms_template', 'primary', 0, 60, '', 1, '2023-01-21 10:29:36', '2023-01-21 10:29:40'), +(141, '私信', '3', 'int', 'sys_notice_type', 'info', 0, 30, '', 1, '2023-01-26 12:08:42', '2023-01-26 12:08:42'), +(142, '一般', '1', 'int', 'sys_notice_tag', 'info', 0, 10, '', 1, '2023-01-26 12:13:04', '2023-01-26 12:16:07'), +(143, '重要', '2', 'int', 'sys_notice_tag', 'error', 0, 20, '', 1, '2023-01-26 12:13:36', '2023-01-26 12:13:36'), +(144, '提醒', '3', 'int', 'sys_notice_tag', 'warning', 0, 30, '', 1, '2023-01-26 12:13:52', '2023-01-26 12:13:52'), +(145, '注意', '4', 'int', 'sys_notice_tag', 'success', 0, 40, '', 1, '2023-01-26 12:14:12', '2023-01-26 12:14:12'), +(146, '调试', '5', 'int', 'sys_notice_tag', 'default', 0, 50, '', 1, '2023-01-26 12:15:59', '2023-01-26 12:15:59'), +(147, '通用验证码', 'code', 'string', 'config_ems_template', 'info', 0, 10, '', 1, '2023-01-21 10:28:39', '2023-01-21 20:40:09'), +(148, '登录', 'login', 'string', 'config_ems_template', 'success', 0, 20, '', 1, '2023-01-21 10:28:48', '2023-01-21 10:28:48'), +(149, '注册', 'register', 'string', 'config_ems_template', 'warning', 0, 30, '', 1, '2023-01-21 10:28:58', '2023-01-21 10:28:58'), +(150, '重置密码', 'resetPwd', 'string', 'config_ems_template', 'error', 0, 40, '', 1, '2023-01-21 10:29:10', '2023-01-21 10:29:10'), +(151, '绑定手机号', 'bind', 'string', 'config_ems_template', 'info', 0, 50, '', 1, '2023-01-21 10:29:22', '2023-01-21 10:29:22'), +(152, '申请提现', 'cash', 'string', 'config_ems_template', 'primary', 0, 60, '', 1, '2023-01-21 10:29:36', '2023-01-21 10:29:40'), +(153, '富文本', 'text', 'string', 'config_ems_template', 'default', 0, 0, '自定义编辑邮件内容时使用', 1, '2023-01-21 10:29:36', '2023-05-29 14:30:49'), +(154, '腾讯云', 'cos', 'string', 'config_upload_drive', 'info', 1, 30, '', 1, '2022-12-30 17:58:26', '2022-12-30 17:58:26'), +(155, '阿里云', 'oss', 'string', 'config_upload_drive', 'info', 1, 40, '', 1, '2022-12-30 17:58:26', '2022-12-30 17:58:26'), +(156, '七牛云', 'qiniu', 'string', 'config_upload_drive', 'success', 1, 50, '', 1, '2022-12-30 17:58:26', '2022-12-30 17:58:26'), +(157, 'minio', 'minio', 'string', 'config_upload_drive', 'default', 0, 60, '', 1, '2023-11-11 16:45:12', '2023-11-11 16:45:12'), +(158, '目录', '1', 'int', 'sys_menu_types', 'success', 1, 10, '', 1, '2021-01-30 13:27:43', '2023-04-27 23:24:58'), +(159, '菜单', '2', 'int', 'sys_menu_types', 'primary', 1, 20, '', 1, '2021-01-30 13:27:43', '2023-04-27 23:24:58'), +(160, '按钮', '3', 'int', 'sys_menu_types', 'info', 1, 30, '', 1, '2021-01-30 13:27:43', '2023-04-27 23:24:58'), +(161, '主目录', 'LAYOUT', 'string', 'sys_menu_component', 'default', 0, 10, '', 1, '2024-04-16 13:35:49', '2024-04-16 13:35:49'), +(162, '子目录', 'ParentLayout', 'string', 'sys_menu_component', 'default', 0, 20, '', 1, '2024-04-16 13:36:04', '2024-04-16 13:36:04'), +(163, '内嵌链接', 'IFRAME', 'string', 'sys_menu_component', 'default', 0, 30, '', 1, '2024-04-16 13:36:30', '2024-04-16 13:36:30'), +(164, '登录成功', '1', 'int', 'sys_login_status', 'success', 0, 10, '', 1, '2024-04-16 15:21:41', '2024-04-16 15:21:41'), +(165, '登录失败', '2', 'int', 'sys_login_status', 'warning', 0, 20, '', 1, '2024-04-16 15:22:02', '2024-04-16 15:22:02'); + +INSERT INTO `hg_sys_dict_type` (`id`, `pid`, `name`, `type`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, 27, '用户性别', 'sys_user_sex', 0, '用户性别列表', 1, '2021-01-30 13:27:43', '2021-03-24 11:38:47'), +(2, 28, '菜单类型', 'sys_menu_types', 80, '', 1, '2021-01-30 13:27:43', '2023-02-26 00:46:18'), +(3, 28, '系统状态', 'sys_normal_disable', 10, '系统状态列表', 1, '2021-01-30 13:27:43', NULL), +(4, 26, '任务状态', 'sys_job_status', 0, '任务状态列表', 1, '2021-01-30 13:27:43', NULL), +(5, 26, '任务分组', 'sys_job_group', 0, '任务分组列表', 1, '2021-01-30 13:27:43', NULL), +(7, 29, '通知类型', 'sys_notice_type', 0, '通知类型列表', 1, '2021-01-30 13:27:43', NULL), +(9, 28, '操作类型', 'sys_oper_type', 100, '', 1, '2021-01-30 13:27:43', '2023-02-26 00:48:01'), +(22, 25, '请求方式', 'sys_oper_method', 0, '', 1, '2022-01-24 11:33:16', '2022-01-24 11:33:16'), +(23, 25, '请求状态码', 'req_code', 0, '', 1, '2022-01-25 10:22:40', '2022-01-25 10:22:40'), +(24, 25, '请求耗时', 'req_take_up_time', 0, '', 1, '2022-01-25 15:51:19', '2022-01-25 15:51:19'), +(25, 0, '请求枚举', 'req', 40, '', 1, '2022-01-24 11:33:16', '2022-01-24 11:33:16'), +(26, 0, '任务枚举', 'job', 30, '', 1, '2022-01-24 11:33:16', '2022-01-24 11:33:16'), +(27, 0, '组织枚举', 'org', 20, '', 1, '2022-01-24 11:33:16', '2023-04-27 23:24:53'), +(28, 0, '系统枚举', 'sys', 10, '', 1, '2022-01-24 11:33:16', '2023-02-26 00:33:13'), +(29, 0, '通知枚举', 'notice', 50, '', 1, '2022-01-24 11:33:16', '2022-01-24 11:33:16'), +(30, 27, '用户爱好', 'sys_user_hobby', 0, NULL, 1, '2021-03-01 11:41:07', '2021-03-01 11:41:07'), +(31, 27, '用户渠道', 'sys_user_channel', 0, NULL, 1, '2021-03-01 11:41:07', '2021-03-01 11:41:07'), +(32, 0, '配置枚举', 'config', 60, '', 1, '2022-12-30 17:55:42', '2023-05-29 14:47:01'), +(33, 32, '上传驱动', 'config_upload_drive', 10, '', 1, '2022-12-30 17:57:18', '2022-12-30 17:57:18'), +(34, 28, '日志类型', 'sys_log_type', 200, '', 1, '2023-01-20 16:39:52', '2023-02-24 17:40:45'), +(35, 32, '短信驱动', 'config_sms_drive', 20, '', 1, '2023-01-21 10:27:01', '2023-01-21 10:27:01'), +(36, 32, '短信模板', 'config_sms_template', 30, '', 1, '2023-01-21 10:27:41', '2023-01-21 10:27:41'), +(37, 29, '通知标签', 'sys_notice_tag', 20, '', 1, '2023-01-26 12:09:46', '2023-01-26 12:09:46'), +(38, 32, '邮件模板', 'config_ems_template', 40, '', 1, '2023-02-04 12:53:07', '2023-02-04 12:53:07'), +(40, 28, '系统开关', 'sys_switch', 20, '', 1, '2024-04-16 09:50:58', '2024-04-16 09:50:58'), +(41, 28, '菜单组件', 'sys_menu_component', 90, '', 1, '2024-04-16 13:35:29', '2024-04-16 13:35:29'), +(42, 28, '登录状态', 'sys_login_status', 300, '', 1, '2024-04-16 15:21:23', '2024-04-16 15:21:23'); + +INSERT INTO `hg_sys_ems_log` (`id`, `event`, `email`, `code`, `times`, `content`, `ip`, `status`, `created_at`, `updated_at`) VALUES +(4, 'bind', '133814250@qq.com', '8793', 1, '\r\n\r\n\r\n \r\n \r\n \r\n \r\n 验证码邮件\r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 这是你发送的验证码吗?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Windows 10
\r\n 保留地址 (estimated)
\r\n IP 地址: 127**.0.1\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 如果是,请输入验证码:\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 8793\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 该验证码10分钟内有效,请不要告诉于他人!\r\n

\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n', '39.165.245.100', 2, '2023-02-04 16:49:39', '2023-02-04 16:56:24'); + +INSERT INTO `hg_sys_gen_codes` (`id`, `gen_type`, `gen_template`, `var_name`, `options`, `db_name`, `table_name`, `table_comment`, `dao_name`, `master_columns`, `addon_name`, `status`, `created_at`, `updated_at`) VALUES +(1, 10, 0, 'CurdDemo', '{\"join\": [{\"uuid\": \"pgJsFoqfaGjqgKjy\", \"alias\": \"testCategory\", \"field\": \"id\", \"columns\": [{\"dc\": \"分类ID\", \"id\": 1, \"name\": \"id\", \"extra\": \"auto_increment\", \"index\": \"PRI\", \"goName\": \"TestCategoryId\", \"goType\": \"int64\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"testCategoryId\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": 0, \"formMode\": \"\", \"formRole\": \"\", \"isExport\": false, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"NO\", \"defaultValue\": 0}, {\"dc\": \"关联分类\", \"id\": 2, \"name\": \"name\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"TestCategoryName\", \"goType\": \"string\", \"isEdit\": false, \"isList\": true, \"isSort\": false, \"length\": 255, \"tsName\": \"testCategoryName\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"varchar(255)\", \"dataType\": \"varchar\", \"dictType\": 0, \"formMode\": \"\", \"formRole\": \"\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"NO\", \"defaultValue\": \"\"}, {\"dc\": \"分类简称\", \"id\": 3, \"name\": \"short_name\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"TestCategoryShortName\", \"goType\": \"string\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 128, \"tsName\": \"testCategoryShortName\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"varchar(128)\", \"dataType\": \"varchar\", \"dictType\": 0, \"formMode\": \"\", \"formRole\": \"\", \"isExport\": false, \"required\": false, \"queryWhere\": \"LIKE %...%\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}, {\"dc\": \"描述\", \"id\": 3, \"name\": \"description\", \"extra\": \"\", \"index\": \"\", \"goName\": \"TestCategoryDescription\", \"goType\": \"string\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 255, \"tsName\": \"testCategoryDescription\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"varchar(255)\", \"dataType\": \"varchar\", \"dictType\": 0, \"formMode\": \"\", \"formRole\": \"\", \"isExport\": false, \"required\": false, \"queryWhere\": \"LIKE\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\"}, {\"dc\": \"排序\", \"id\": 4, \"name\": \"sort\", \"extra\": \"\", \"index\": \"\", \"goName\": \"TestCategorySort\", \"goType\": \"int\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"testCategorySort\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"int(11)\", \"dataType\": \"int\", \"dictType\": 0, \"formMode\": \"\", \"formRole\": \"\", \"isExport\": false, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"NO\", \"defaultValue\": 0}, {\"dc\": \"备注\", \"id\": 5, \"name\": \"remark\", \"extra\": \"\", \"index\": \"\", \"goName\": \"TestCategoryRemark\", \"goType\": \"string\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 255, \"tsName\": \"testCategoryRemark\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"varchar(255)\", \"dataType\": \"varchar\", \"dictType\": 0, \"formMode\": \"\", \"formRole\": \"\", \"isExport\": false, \"required\": false, \"queryWhere\": \"LIKE\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\"}, {\"dc\": \"状态\", \"id\": 6, \"name\": \"status\", \"extra\": \"\", \"index\": \"\", \"goName\": \"TestCategoryStatus\", \"goType\": \"int\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"testCategoryStatus\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"tinyint(1)\", \"dataType\": \"tinyint\", \"dictType\": 0, \"formMode\": \"\", \"formRole\": \"\", \"isExport\": false, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 1}, {\"dc\": \"创建时间\", \"id\": 7, \"name\": \"created_at\", \"extra\": \"\", \"index\": \"\", \"goName\": \"TestCategoryCreatedAt\", \"goType\": \"*gtime.Time\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"testCategoryCreatedAt\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"datetime\", \"dataType\": \"datetime\", \"dictType\": 0, \"formMode\": \"\", \"formRole\": \"\", \"isExport\": false, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\"}, {\"dc\": \"修改时间\", \"id\": 8, \"name\": \"updated_at\", \"extra\": \"\", \"index\": \"\", \"goName\": \"TestCategoryUpdatedAt\", \"goType\": \"*gtime.Time\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"testCategoryUpdatedAt\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"datetime\", \"dataType\": \"datetime\", \"dictType\": 0, \"formMode\": \"\", \"formRole\": \"\", \"isExport\": false, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\"}, {\"dc\": \"删除时间\", \"id\": 9, \"name\": \"deleted_at\", \"extra\": \"\", \"index\": \"\", \"goName\": \"TestCategoryDeletedAt\", \"goType\": \"*gtime.Time\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"testCategoryDeletedAt\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"datetime\", \"dataType\": \"datetime\", \"dictType\": 0, \"formMode\": \"\", \"formRole\": \"\", \"isExport\": false, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\"}], \"daoName\": \"TestCategory\", \"linkMode\": 1, \"linkTable\": \"hg_test_category\", \"masterField\": \"category_id\"}], \"menu\": {\"pid\": 2366, \"icon\": \"\", \"sort\": 10}, \"tree\": {\"styleType\": 1, \"titleColumn\": null}, \"autoOps\": [\"genMenuPermissions\", \"runDao\", \"runService\", \"forcedCover\"], \"headOps\": [\"add\", \"batchDel\", \"export\"], \"funcDict\": {\"labelColumn\": \"title\", \"valueColumn\": \"id\"}, \"columnOps\": [\"edit\", \"del\", \"switch\", \"check\"], \"presetStep\": {\"formGridCols\": 2}}', 'default', 'hg_sys_gen_curd_demo', 'CURD列表', 'SysGenCurdDemo', '[{\"dc\": \"ID\", \"id\": 1, \"name\": \"id\", \"align\": \"left\", \"extra\": \"auto_increment\", \"index\": \"PRI\", \"width\": 50, \"goName\": \"Id\", \"goType\": \"int64\", \"isEdit\": false, \"isList\": true, \"isSort\": true, \"length\": 0, \"tsName\": \"id\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": null, \"formMode\": \"Input\", \"formRole\": \"none\", \"isExport\": true, \"required\": true, \"queryWhere\": \"=\", \"isAllowNull\": \"NO\", \"defaultValue\": 0, \"formGridSpan\": 1}, {\"dc\": \"标题\", \"id\": 3, \"name\": \"title\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 150, \"goName\": \"Title\", \"goType\": \"string\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 64, \"tsName\": \"title\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"varchar(64)\", \"dataType\": \"varchar\", \"dictType\": null, \"formMode\": \"Input\", \"formRole\": \"none\", \"isExport\": true, \"required\": true, \"queryWhere\": \"LIKE %...%\", \"isAllowNull\": \"NO\", \"defaultValue\": \"\", \"formGridSpan\": 1}, {\"dc\": \"描述\", \"id\": 4, \"name\": \"description\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 300, \"goName\": \"Description\", \"goType\": \"string\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 255, \"tsName\": \"description\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"varchar(255)\", \"dataType\": \"varchar\", \"dictType\": null, \"formMode\": \"InputTextarea\", \"formRole\": \"none\", \"isExport\": true, \"required\": true, \"queryWhere\": \"LIKE %...%\", \"isAllowNull\": \"NO\", \"defaultValue\": \"\", \"formGridSpan\": 2}, {\"dc\": \"内容\", \"id\": 5, \"name\": \"content\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"Content\", \"goType\": \"string\", \"isEdit\": true, \"isList\": false, \"isSort\": false, \"length\": 65535, \"tsName\": \"content\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"text\", \"dataType\": \"text\", \"dictType\": null, \"formMode\": \"InputEditor\", \"formRole\": \"none\", \"isExport\": false, \"required\": true, \"queryWhere\": \"LIKE %...%\", \"isAllowNull\": \"NO\", \"defaultValue\": \"\", \"formGridSpan\": 2}, {\"dc\": \"单图\", \"id\": 6, \"name\": \"image\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"Image\", \"goType\": \"string\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 255, \"tsName\": \"image\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"varchar(255)\", \"dataType\": \"varchar\", \"dictType\": null, \"formMode\": \"UploadImage\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"LIKE\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}, {\"dc\": \"附件\", \"id\": 7, \"name\": \"attachfile\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"Attachfile\", \"goType\": \"string\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 255, \"tsName\": \"attachfile\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"varchar(255)\", \"dataType\": \"varchar\", \"dictType\": null, \"formMode\": \"UploadFile\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"LIKE\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}, {\"dc\": \"所在城市\", \"id\": 8, \"name\": \"city_id\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"CityId\", \"goType\": \"int64\", \"isEdit\": true, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"cityId\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": null, \"formMode\": \"CitySelector\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 0, \"formGridSpan\": 1}, {\"dc\": \"排序\", \"id\": 10, \"name\": \"sort\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"Sort\", \"goType\": \"int\", \"isEdit\": true, \"isList\": true, \"isSort\": true, \"length\": 0, \"tsName\": \"sort\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"int(11)\", \"dataType\": \"int\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": true, \"required\": true, \"queryWhere\": \"=\", \"isAllowNull\": \"NO\", \"defaultValue\": 0, \"formGridSpan\": 1}, {\"dc\": \"显示开关\", \"id\": 9, \"name\": \"switch\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 150, \"goName\": \"Switch\", \"goType\": \"int\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"switch\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"int(11)\", \"dataType\": \"int\", \"dictType\": null, \"formMode\": \"Switch\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 1, \"formGridSpan\": 1}, {\"dc\": \"状态\", \"id\": 11, \"name\": \"status\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"Status\", \"goType\": \"int\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"status\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"tinyint(1)\", \"dataType\": \"tinyint\", \"dictType\": 3, \"formMode\": \"Select\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 1, \"formGridSpan\": 1}, {\"dc\": \"创建者\", \"id\": 12, \"name\": \"created_by\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 150, \"goName\": \"CreatedBy\", \"goType\": \"int64\", \"isEdit\": false, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"createdBy\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 0, \"formGridSpan\": 1}, {\"dc\": \"创建时间\", \"id\": 14, \"name\": \"created_at\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 180, \"goName\": \"CreatedAt\", \"goType\": \"*gtime.Time\", \"isEdit\": false, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"createdAt\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"datetime\", \"dataType\": \"datetime\", \"dictType\": null, \"formMode\": \"TimeRange\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"BETWEEN\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}, {\"dc\": \"更新者\", \"id\": 13, \"name\": \"updated_by\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 150, \"goName\": \"UpdatedBy\", \"goType\": \"int64\", \"isEdit\": false, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"updatedBy\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 0, \"formGridSpan\": 1}, {\"dc\": \"修改时间\", \"id\": 15, \"name\": \"updated_at\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 180, \"goName\": \"UpdatedAt\", \"goType\": \"*gtime.Time\", \"isEdit\": false, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"updatedAt\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"datetime\", \"dataType\": \"datetime\", \"dictType\": null, \"formMode\": \"Time\", \"formRole\": \"none\", \"isExport\": false, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}, {\"dc\": \"删除时间\", \"id\": 16, \"name\": \"deleted_at\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"DeletedAt\", \"goType\": \"*gtime.Time\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"deletedAt\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"datetime\", \"dataType\": \"datetime\", \"dictType\": null, \"formMode\": \"Time\", \"formRole\": \"none\", \"isExport\": false, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}, {\"dc\": \"测试分类\", \"id\": 2, \"name\": \"category_id\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"CategoryId\", \"goType\": \"int64\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"categoryId\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": -300004223237244, \"formMode\": \"Select\", \"formRole\": \"none\", \"isExport\": true, \"required\": true, \"queryWhere\": \"=\", \"isAllowNull\": \"NO\", \"defaultValue\": 0, \"formGridSpan\": 1}]', '', 1, '2023-01-18 11:51:22', '2024-04-21 18:53:42'), +(8, 10, 0, 'TestCategory', '{\"join\": [], \"menu\": {\"pid\": 2366, \"icon\": \"\", \"sort\": 1000}, \"tree\": {\"styleType\": 1, \"titleColumn\": null}, \"autoOps\": [\"genMenuPermissions\", \"runService\", \"genFuncDict\", \"forcedCover\"], \"headOps\": [\"add\", \"batchDel\"], \"funcDict\": {\"labelColumn\": \"name\", \"valueColumn\": \"id\"}, \"columnOps\": [\"edit\", \"del\", \"check\", \"status\"], \"presetStep\": {\"formGridCols\": 2}}', 'default', 'hg_test_category', '测试分类', 'TestCategory', '[{\"dc\": \"分类ID\", \"id\": 1, \"name\": \"id\", \"align\": \"left\", \"extra\": \"auto_increment\", \"index\": \"PRI\", \"width\": 80, \"goName\": \"Id\", \"goType\": \"int64\", \"isEdit\": false, \"isList\": true, \"isSort\": true, \"length\": 0, \"tsName\": \"id\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": true, \"required\": true, \"queryWhere\": \"=\", \"isAllowNull\": \"NO\", \"defaultValue\": 0, \"formGridSpan\": 2}, {\"dc\": \"分类名称\", \"id\": 2, \"name\": \"name\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"Name\", \"goType\": \"string\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 255, \"tsName\": \"name\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"varchar(255)\", \"dataType\": \"varchar\", \"dictType\": null, \"formMode\": \"Input\", \"formRole\": \"none\", \"isExport\": true, \"required\": true, \"queryWhere\": \"LIKE %...%\", \"isAllowNull\": \"NO\", \"defaultValue\": \"\", \"formGridSpan\": 2}, {\"dc\": \"简称\", \"id\": 3, \"name\": \"short_name\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 80, \"goName\": \"ShortName\", \"goType\": \"string\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 128, \"tsName\": \"shortName\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"varchar(128)\", \"dataType\": \"varchar\", \"dictType\": null, \"formMode\": \"Input\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"LIKE\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 2}, {\"dc\": \"描述\", \"id\": 3, \"name\": \"description\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 300, \"goName\": \"Description\", \"goType\": \"string\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 255, \"tsName\": \"description\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"varchar(255)\", \"dataType\": \"varchar\", \"dictType\": null, \"formMode\": \"InputTextarea\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"LIKE\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 2}, {\"dc\": \"排序\", \"id\": 4, \"name\": \"sort\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"Sort\", \"goType\": \"int\", \"isEdit\": true, \"isList\": false, \"isSort\": true, \"length\": 0, \"tsName\": \"sort\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"int(11)\", \"dataType\": \"int\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": true, \"required\": true, \"queryWhere\": \"=\", \"isAllowNull\": \"NO\", \"defaultValue\": 0, \"formGridSpan\": 1}, {\"dc\": \"状态\", \"id\": 6, \"name\": \"status\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"Status\", \"goType\": \"int\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"status\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"tinyint(1)\", \"dataType\": \"tinyint\", \"dictType\": 3, \"formMode\": \"Select\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 1, \"formGridSpan\": 1}, {\"dc\": \"备注\", \"id\": 5, \"name\": \"remark\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"Remark\", \"goType\": \"string\", \"isEdit\": true, \"isList\": false, \"isSort\": false, \"length\": 255, \"tsName\": \"remark\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"varchar(255)\", \"dataType\": \"varchar\", \"dictType\": null, \"formMode\": \"InputTextarea\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"LIKE\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 2}, {\"dc\": \"创建时间\", \"id\": 7, \"name\": \"created_at\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 180, \"goName\": \"CreatedAt\", \"goType\": \"*gtime.Time\", \"isEdit\": false, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"createdAt\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"datetime\", \"dataType\": \"datetime\", \"dictType\": null, \"formMode\": \"TimeRange\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"BETWEEN\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}, {\"dc\": \"修改时间\", \"id\": 8, \"name\": \"updated_at\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"UpdatedAt\", \"goType\": \"*gtime.Time\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"updatedAt\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"datetime\", \"dataType\": \"datetime\", \"dictType\": null, \"formMode\": \"Time\", \"formRole\": \"none\", \"isExport\": false, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}, {\"dc\": \"删除时间\", \"id\": 9, \"name\": \"deleted_at\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"DeletedAt\", \"goType\": \"*gtime.Time\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"deletedAt\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"datetime\", \"dataType\": \"datetime\", \"dictType\": null, \"formMode\": \"Time\", \"formRole\": \"none\", \"isExport\": false, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}]', 'hgexample', 1, '2024-04-08 15:18:07', '2024-04-12 23:50:26'), +(9, 11, 0, 'NormalTreeDemo', '{\"join\": [], \"menu\": {\"pid\": 2366, \"icon\": \"\", \"sort\": 200}, \"tree\": {\"styleType\": 1, \"titleColumn\": \"title\"}, \"autoOps\": [\"genMenuPermissions\", \"runDao\", \"runService\", \"forcedCover\"], \"headOps\": [\"add\", \"batchDel\"], \"funcDict\": {\"labelColumn\": null, \"valueColumn\": null}, \"columnOps\": [\"edit\", \"del\", \"check\"], \"presetStep\": {\"formGridCols\": 2}}', 'default', 'hg_sys_gen_tree_demo', '普通树表', 'SysGenTreeDemo', '[{\"dc\": \"标题\", \"id\": 6, \"name\": \"title\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 200, \"goName\": \"Title\", \"goType\": \"string\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 64, \"tsName\": \"title\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"varchar(64)\", \"dataType\": \"varchar\", \"dictType\": null, \"formMode\": \"Input\", \"formRole\": \"none\", \"isExport\": true, \"required\": true, \"queryWhere\": \"LIKE %...%\", \"isAllowNull\": \"NO\", \"defaultValue\": \"\", \"formGridSpan\": 2}, {\"dc\": \"ID\", \"id\": 1, \"name\": \"id\", \"align\": \"left\", \"extra\": \"auto_increment\", \"index\": \"PRI\", \"width\": 100, \"goName\": \"Id\", \"goType\": \"int64\", \"isEdit\": false, \"isList\": false, \"isSort\": true, \"length\": 0, \"tsName\": \"id\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": true, \"required\": true, \"queryWhere\": \"=\", \"isAllowNull\": \"NO\", \"defaultValue\": 0, \"formGridSpan\": 1}, {\"dc\": \"上级\", \"id\": 2, \"name\": \"pid\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"Pid\", \"goType\": \"int64\", \"isEdit\": true, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"pid\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 0, \"formGridSpan\": 2}, {\"dc\": \"关系树级别\", \"id\": 3, \"name\": \"level\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"Level\", \"goType\": \"int\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"level\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"int(11)\", \"dataType\": \"int\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": false, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 1, \"formGridSpan\": 1}, {\"dc\": \"关系树\", \"id\": 4, \"name\": \"tree\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"Tree\", \"goType\": \"string\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 4294967295, \"tsName\": \"tree\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"longtext\", \"dataType\": \"longtext\", \"dictType\": null, \"formMode\": \"InputEditor\", \"formRole\": \"none\", \"isExport\": false, \"required\": false, \"queryWhere\": \"LIKE %...%\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}, {\"dc\": \"测试分类\", \"id\": 5, \"name\": \"category_id\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"CategoryId\", \"goType\": \"int64\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"categoryId\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": -300004223237244, \"formMode\": \"Select\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 0, \"formGridSpan\": 2}, {\"dc\": \"描述\", \"id\": 7, \"name\": \"description\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 300, \"goName\": \"Description\", \"goType\": \"string\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 255, \"tsName\": \"description\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"varchar(255)\", \"dataType\": \"varchar\", \"dictType\": null, \"formMode\": \"Input\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"LIKE\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 2}, {\"dc\": \"排序\", \"id\": 8, \"name\": \"sort\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"Sort\", \"goType\": \"int\", \"isEdit\": true, \"isList\": false, \"isSort\": true, \"length\": 0, \"tsName\": \"sort\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"int(11)\", \"dataType\": \"int\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 0, \"formGridSpan\": 1}, {\"dc\": \"状态\", \"id\": 9, \"name\": \"status\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 150, \"goName\": \"Status\", \"goType\": \"int\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"status\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"tinyint(1)\", \"dataType\": \"tinyint\", \"dictType\": 3, \"formMode\": \"Select\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 1, \"formGridSpan\": 1}, {\"dc\": \"创建者\", \"id\": 10, \"name\": \"created_by\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"CreatedBy\", \"goType\": \"int64\", \"isEdit\": false, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"createdBy\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 0, \"formGridSpan\": 1}, {\"dc\": \"更新者\", \"id\": 11, \"name\": \"updated_by\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"UpdatedBy\", \"goType\": \"int64\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"updatedBy\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 0, \"formGridSpan\": 1}, {\"dc\": \"创建时间\", \"id\": 12, \"name\": \"created_at\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 180, \"goName\": \"CreatedAt\", \"goType\": \"*gtime.Time\", \"isEdit\": false, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"createdAt\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"datetime\", \"dataType\": \"datetime\", \"dictType\": null, \"formMode\": \"TimeRange\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"BETWEEN\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}, {\"dc\": \"修改时间\", \"id\": 13, \"name\": \"updated_at\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 180, \"goName\": \"UpdatedAt\", \"goType\": \"*gtime.Time\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"updatedAt\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"datetime\", \"dataType\": \"datetime\", \"dictType\": null, \"formMode\": \"Time\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}, {\"dc\": \"删除时间\", \"id\": 14, \"name\": \"deleted_at\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"DeletedAt\", \"goType\": \"*gtime.Time\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"deletedAt\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"datetime\", \"dataType\": \"datetime\", \"dictType\": null, \"formMode\": \"Time\", \"formRole\": \"none\", \"isExport\": false, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}]', '', 1, '2024-04-09 16:06:13', '2024-04-12 22:57:18'), +(10, 11, 0, 'OptionTreeDemo', '{\"join\": [], \"menu\": {\"pid\": 2366, \"icon\": \"\", \"sort\": 300}, \"tree\": {\"styleType\": 2, \"titleColumn\": \"title\"}, \"autoOps\": [\"genMenuPermissions\", \"runDao\", \"runService\", \"forcedCover\"], \"headOps\": [\"add\", \"batchDel\"], \"funcDict\": {\"labelColumn\": null, \"valueColumn\": null}, \"columnOps\": [\"edit\", \"del\", \"check\"], \"presetStep\": {\"formGridCols\": 2}}', 'default', 'hg_sys_gen_tree_demo', '选项树表', 'SysGenTreeDemo', '[{\"dc\": \"标题\", \"id\": 6, \"name\": \"title\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"Title\", \"goType\": \"string\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 64, \"tsName\": \"title\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"varchar(64)\", \"dataType\": \"varchar\", \"dictType\": null, \"formMode\": \"Input\", \"formRole\": \"none\", \"isExport\": true, \"required\": true, \"queryWhere\": \"LIKE %...%\", \"isAllowNull\": \"NO\", \"defaultValue\": \"\", \"formGridSpan\": 2}, {\"dc\": \"ID\", \"id\": 1, \"name\": \"id\", \"align\": \"left\", \"extra\": \"auto_increment\", \"index\": \"PRI\", \"width\": 100, \"goName\": \"Id\", \"goType\": \"int64\", \"isEdit\": false, \"isList\": false, \"isSort\": true, \"length\": 0, \"tsName\": \"id\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": true, \"required\": true, \"queryWhere\": \"=\", \"isAllowNull\": \"NO\", \"defaultValue\": 0, \"formGridSpan\": 1}, {\"dc\": \"上级\", \"id\": 2, \"name\": \"pid\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"Pid\", \"goType\": \"int64\", \"isEdit\": true, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"pid\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 0, \"formGridSpan\": 2}, {\"dc\": \"关系树级别\", \"id\": 3, \"name\": \"level\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"Level\", \"goType\": \"int\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"level\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"int(11)\", \"dataType\": \"int\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": false, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 1, \"formGridSpan\": 1}, {\"dc\": \"关系树\", \"id\": 4, \"name\": \"tree\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"Tree\", \"goType\": \"string\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 4294967295, \"tsName\": \"tree\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"longtext\", \"dataType\": \"longtext\", \"dictType\": null, \"formMode\": \"InputEditor\", \"formRole\": \"none\", \"isExport\": false, \"required\": false, \"queryWhere\": \"LIKE %...%\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}, {\"dc\": \"测试分类\", \"id\": 5, \"name\": \"category_id\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"CategoryId\", \"goType\": \"int64\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"categoryId\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": -300004223237244, \"formMode\": \"Select\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 0, \"formGridSpan\": 2}, {\"dc\": \"描述\", \"id\": 7, \"name\": \"description\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 300, \"goName\": \"Description\", \"goType\": \"string\", \"isEdit\": true, \"isList\": false, \"isSort\": false, \"length\": 255, \"tsName\": \"description\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"varchar(255)\", \"dataType\": \"varchar\", \"dictType\": null, \"formMode\": \"InputTextarea\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"LIKE\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 2}, {\"dc\": \"排序\", \"id\": 8, \"name\": \"sort\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"Sort\", \"goType\": \"int\", \"isEdit\": true, \"isList\": false, \"isSort\": true, \"length\": 0, \"tsName\": \"sort\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"int(11)\", \"dataType\": \"int\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 0, \"formGridSpan\": 1}, {\"dc\": \"状态\", \"id\": 9, \"name\": \"status\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 150, \"goName\": \"Status\", \"goType\": \"int\", \"isEdit\": true, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"status\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"tinyint(1)\", \"dataType\": \"tinyint\", \"dictType\": 3, \"formMode\": \"Select\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 1, \"formGridSpan\": 1}, {\"dc\": \"创建者\", \"id\": 10, \"name\": \"created_by\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"CreatedBy\", \"goType\": \"int64\", \"isEdit\": false, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"createdBy\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 0, \"formGridSpan\": 1}, {\"dc\": \"更新者\", \"id\": 11, \"name\": \"updated_by\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 100, \"goName\": \"UpdatedBy\", \"goType\": \"int64\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"updatedBy\", \"tsType\": \"number\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"bigint(20)\", \"dataType\": \"bigint\", \"dictType\": null, \"formMode\": \"InputNumber\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": 0, \"formGridSpan\": 1}, {\"dc\": \"创建时间\", \"id\": 12, \"name\": \"created_at\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 180, \"goName\": \"CreatedAt\", \"goType\": \"*gtime.Time\", \"isEdit\": false, \"isList\": true, \"isSort\": false, \"length\": 0, \"tsName\": \"createdAt\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": true, \"sqlType\": \"datetime\", \"dataType\": \"datetime\", \"dictType\": null, \"formMode\": \"TimeRange\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"BETWEEN\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}, {\"dc\": \"修改时间\", \"id\": 13, \"name\": \"updated_at\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": 180, \"goName\": \"UpdatedAt\", \"goType\": \"*gtime.Time\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"updatedAt\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"datetime\", \"dataType\": \"datetime\", \"dictType\": null, \"formMode\": \"Time\", \"formRole\": \"none\", \"isExport\": true, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}, {\"dc\": \"删除时间\", \"id\": 14, \"name\": \"deleted_at\", \"align\": \"left\", \"extra\": \"\", \"index\": \"\", \"width\": null, \"goName\": \"DeletedAt\", \"goType\": \"*gtime.Time\", \"isEdit\": false, \"isList\": false, \"isSort\": false, \"length\": 0, \"tsName\": \"deletedAt\", \"tsType\": \"string\", \"unique\": false, \"isQuery\": false, \"sqlType\": \"datetime\", \"dataType\": \"datetime\", \"dictType\": null, \"formMode\": \"Time\", \"formRole\": \"none\", \"isExport\": false, \"required\": false, \"queryWhere\": \"=\", \"isAllowNull\": \"YES\", \"defaultValue\": \"\", \"formGridSpan\": 1}]', '', 1, '2024-04-09 17:20:33', '2024-04-12 23:44:42'); + +INSERT INTO `hg_sys_gen_curd_demo` (`id`, `category_id`, `title`, `description`, `content`, `image`, `attachfile`, `city_id`, `switch`, `sort`, `status`, `created_by`, `updated_by`, `created_at`, `updated_at`, `deleted_at`) VALUES +(1, 1, '测试标题', '这是一个CRUD生成演示,关联测试分类', '

不知道写点啥!



', 'https://gmycos.facms.cn/hotgo/logo.sig.png', 'https://gmycos.facms.cn/hotgo/attachment/2022-12-30/cpf1x44idoycrtajf2.xlsx', 120102, 1, 10, 1, 1, 1, '2022-12-15 19:30:14', '2024-04-08 22:50:54', NULL), +(2, 0, '1', '1', '

1

', '', '', 150404, 1, 20, 1, 1, 0, '2023-11-16 10:08:29', '2023-11-16 10:08:29', '2023-11-16 10:09:20'), +(3, 0, '1221', '212', '

1

', '', '', 0, 1, 30, 1, 1, 0, '2023-11-16 10:09:07', '2023-11-16 10:09:07', '2023-11-16 10:09:15'), +(4, 0, '12', '12', '

12

', '', '', 120101, 1, 20, 1, 1, 0, '2023-11-16 10:09:45', '2023-11-16 10:09:45', '2023-11-16 10:10:12'), +(5, 0, '12', '1212', '

1221

', '', '', 150421, 1, 30, 1, 1, 0, '2023-11-16 10:09:56', '2023-11-16 10:09:56', '2023-11-16 10:10:08'), +(6, 0, '1', '1', '

1

', '', '', 0, 1, 20, 1, 1, 0, '2023-11-16 10:12:46', '2023-11-16 10:12:46', '2023-11-16 10:14:11'), +(7, 0, '1', '1', '

1


', '', '', 0, 1, 30, 1, 1, 0, '2023-11-16 10:12:51', '2023-11-16 10:12:51', '2023-11-16 10:13:04'), +(8, 0, '1', '1', '

1

', '', '', 0, 1, 30, 1, 1, 0, '2023-11-16 10:13:56', '2023-11-16 10:13:56', '2023-11-16 10:14:06'), +(9, 0, '1', '1', '

1

', '', '', 0, 1, 20, 1, 1, 0, '2023-11-16 10:29:10', '2023-11-16 10:29:10', '2023-11-16 10:29:54'), +(10, 0, '11', '1', '

1

', '', '', 0, 1, 30, 1, 1, 0, '2023-11-16 10:29:14', '2023-11-16 10:29:14', '2023-11-16 10:29:46'), +(11, 0, '1', '1', '

1

', '', '', 0, 1, 20, 1, 1, 0, '2023-11-16 11:01:07', '2023-11-16 11:01:07', '2023-11-16 11:01:33'), +(12, 0, '1', '1', '

1

', '', '', 0, 1, 30, 1, 1, 0, '2023-11-16 11:01:11', '2023-11-16 11:01:11', '2023-11-16 11:01:27'), +(13, 10, '1', '1', '

1221在线咨询

', 'http://localhost:8000/attachment/2023-12-29/cy0mrx6emnw0emztdj.png', '', 0, 1, 20, 1, 1, 0, '2023-12-29 15:14:56', '2023-12-29 15:14:56', '2023-12-29 15:15:00'); + +INSERT INTO `hg_sys_gen_tree_demo` (`id`, `pid`, `level`, `tree`, `category_id`, `title`, `description`, `sort`, `status`, `created_by`, `updated_by`, `created_at`, `updated_at`, `deleted_at`) VALUES +(1, 0, 1, NULL, 1, '道生一', '这是一个普通树形表格的生成演示。', 10, 1, 1, 1, '2022-12-15 19:30:14', '2024-04-07 15:37:48', NULL), +(2, NULL, 1, NULL, 0, '1', '1', 20, 1, 1, 0, '2023-11-16 10:08:29', '2023-11-16 10:08:29', '2023-11-16 10:09:20'), +(3, NULL, 1, NULL, 0, '1221', '212', 30, 1, 1, 0, '2023-11-16 10:09:07', '2023-11-16 10:09:07', '2023-11-16 10:09:15'), +(4, NULL, 1, NULL, 0, '12', '12', 20, 1, 1, 0, '2023-11-16 10:09:45', '2023-11-16 10:09:45', '2023-11-16 10:10:12'), +(5, NULL, 1, NULL, 0, '12', '1212', 30, 1, 1, 0, '2023-11-16 10:09:56', '2023-11-16 10:09:56', '2023-11-16 10:10:08'), +(6, NULL, 1, NULL, 0, '1', '1', 20, 1, 1, 0, '2023-11-16 10:12:46', '2023-11-16 10:12:46', '2023-11-16 10:14:11'), +(7, NULL, 1, NULL, 0, '1', '1', 30, 1, 1, 0, '2023-11-16 10:12:51', '2023-11-16 10:12:51', '2023-11-16 10:13:04'), +(8, NULL, 1, NULL, 0, '1', '1', 30, 1, 1, 0, '2023-11-16 10:13:56', '2023-11-16 10:13:56', '2023-11-16 10:14:06'), +(9, NULL, 1, NULL, 0, '1', '1', 20, 1, 1, 0, '2023-11-16 10:29:10', '2023-11-16 10:29:10', '2023-11-16 10:29:54'), +(10, NULL, 1, NULL, 0, '11', '1', 30, 1, 1, 0, '2023-11-16 10:29:14', '2023-11-16 10:29:14', '2023-11-16 10:29:46'), +(11, NULL, 1, NULL, 0, '1', '1', 20, 1, 1, 0, '2023-11-16 11:01:07', '2023-11-16 11:01:07', '2023-11-16 11:01:33'), +(12, NULL, 1, NULL, 0, '1', '1', 30, 1, 1, 0, '2023-11-16 11:01:11', '2023-11-16 11:01:11', '2023-11-16 11:01:27'), +(13, NULL, 1, NULL, 10, '1', '1', 20, 1, 1, 0, '2023-12-29 15:14:56', '2023-12-29 15:14:56', '2023-12-29 15:15:00'), +(14, 1, 1, NULL, 1, '一生二', '', 20, 1, 1, 1, '2024-04-09 17:07:55', '2024-04-09 17:07:55', NULL), +(15, 14, 1, NULL, 2, '二生三', '', 30, 1, 1, 1, '2024-04-09 17:08:03', '2024-04-09 17:08:03', NULL), +(16, 15, 1, NULL, 4, '三生万物', '', 40, 1, 1, 1, '2024-04-09 17:13:54', '2024-04-09 17:13:54', NULL), +(17, 0, 1, NULL, 1, '一帆风顺', '', 50, 1, 1, 1, '2024-04-09 17:24:58', '2024-04-09 17:24:58', NULL), +(18, 0, 1, NULL, 0, '一帆风顺', '', 60, 1, 1, 0, '2024-04-09 17:25:23', '2024-04-09 17:25:23', '2024-04-09 17:26:45'), +(19, 17, 1, NULL, 1, '二龙戏珠', '', 60, 1, 1, 1, '2024-04-09 17:27:40', '2024-04-09 17:27:40', NULL), +(20, 19, 1, NULL, 1, '三心二意', '', 70, 1, 1, 1, '2024-04-09 17:27:44', '2024-04-09 17:27:44', NULL), +(21, 0, 1, NULL, 0, '3', '', 80, 1, 1, 1, '2024-04-09 17:28:53', '2024-04-09 17:33:52', '2024-04-12 22:43:08'), +(22, 0, 1, NULL, 0, '4', '', 90, 1, 1, 0, '2024-04-09 17:30:12', '2024-04-09 17:30:12', '2024-04-09 17:33:44'), +(23, 0, 1, NULL, 0, '5', '', 100, 1, 1, 0, '2024-04-09 17:30:36', '2024-04-09 17:30:36', '2024-04-09 17:33:38'), +(24, 0, 1, NULL, 0, '6', '', 110, 1, 1, 0, '2024-04-09 17:31:11', '2024-04-09 17:31:11', '2024-04-09 17:33:44'), +(25, 0, 1, NULL, 0, '7', '', 120, 1, 1, 0, '2024-04-09 17:31:48', '2024-04-09 17:31:48', '2024-04-09 17:55:58'), +(26, 0, 1, NULL, 0, '4', '', 90, 1, 1, 0, '2024-04-09 17:56:06', '2024-04-09 17:56:06', '2024-04-12 22:43:25'), +(27, 26, 1, NULL, 0, '5', '', 100, 1, 1, 0, '2024-04-09 17:56:13', '2024-04-09 17:56:13', '2024-04-12 22:43:21'); + + + +INSERT INTO `hg_sys_provinces` (`id`, `title`, `pinyin`, `lng`, `lat`, `pid`, `level`, `tree`, `sort`, `status`, `created_at`, `updated_at`) VALUES +(810000, '香港特别行政区', 'X', '114.18612410257', '22.29358599328', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810100, '九龙', 'J', '101.51341566718', '29.006431902925', 810000, 2, 'tr_0 tr_810000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810101, '观塘区', 'G', '114.23743100142', '22.316803500017', 810100, 3, 'tr_0 tr_810000 tr_810100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810102, '黄大仙区', 'H', '114.2055528338', '22.344516581114', 810100, 3, 'tr_0 tr_810000 tr_810100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810103, '九龙城区', 'J', '114.19855413557', '22.325722838593', 810100, 3, 'tr_0 tr_810000 tr_810100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810104, '深水埗区', 'S', '114.17556515012', '22.334814518942', 810100, 3, 'tr_0 tr_810000 tr_810100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810105, '油尖旺区', 'Y', '114.17854456', '22.306583887776', 810100, 3, 'tr_0 tr_810000 tr_810100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810200, '香港岛', 'X', '114.1838696432', '22.272099587606', 810000, 2, 'tr_0 tr_810000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810201, '东区', 'D', '114.03675495515', '32.983906128946', 810200, 3, 'tr_0 tr_810000 tr_810200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810202, '南区', 'N', '114.18612410257', '22.29358599328', 810200, 3, 'tr_0 tr_810000 tr_810200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810203, '湾仔区', 'W', '114.1838696432', '22.272099587606', 810200, 3, 'tr_0 tr_810000 tr_810200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810204, '中西区', 'Z', '114.15949141031', '22.291342714292', 810200, 3, 'tr_0 tr_810000 tr_810200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810300, '新界', 'X', '114.18612410257', '22.29358599328', 810000, 2, 'tr_0 tr_810000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810301, '北区', 'B', '114.56208137457', '38.029818054403', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810302, '大埔区', 'D', '114.14670082713', '22.427434108219', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810303, '葵青区', 'K', '114.14347453324', '22.36661881253', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810304, '离岛区', 'L', '113.95154733906', '22.286066480198', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810305, '荃湾区', 'Q', '114.126440954', '22.378243962528', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810306, '沙田区', 'S', '114.19855144065', '22.388522255034', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810307, '屯门区', 'T', '113.98745602385', '22.393584799271', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810308, '西贡区', 'X', '114.28352485373', '22.385077305939', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(810309, '元朗区', 'Y', '114.03850969037', '22.448564780865', 810300, 3, 'tr_0 tr_810000 tr_810300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820000, '澳门特别行政区', 'A', '113.55751910182', '22.204117988443', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820100, '离岛', 'L', '113.55751910182', '22.204117988443', 820000, 2, 'tr_0 tr_820000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820101, '嘉模堂区', 'J', '113.56551473951', '22.163142309955', 820100, 3, 'tr_0 tr_820000 tr_820100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820102, '路氹填海区', 'L', '113.95154733906', '22.286066480198', 820100, 3, 'tr_0 tr_820000 tr_820100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820103, '圣方济各堂区', 'S', '113.95154733906', '22.286066480198', 820100, 3, 'tr_0 tr_820000 tr_820100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820200, '澳门半岛', 'A', '113.56643233517', '22.195004159218', 820000, 2, 'tr_0 tr_820000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820201, '大堂区', 'D', '113.55648488269', '22.18919700752', 820200, 3, 'tr_0 tr_820000 tr_820200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820202, '风顺堂区', 'F', '113.54545108595', '22.192783044934', 820200, 3, 'tr_0 tr_820000 tr_820200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820203, '花地玛堂区', 'H', '113.55751029843', '22.212783524768', 820200, 3, 'tr_0 tr_820000 tr_820200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820204, '花王堂区', 'H', '113.5544936987', '22.206635725923', 820200, 3, 'tr_0 tr_820000 tr_820200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(820205, '望德堂区', 'W', '113.5615137766', '22.202511136588', 820200, 3, 'tr_0 tr_820000 tr_820200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830000, '台湾省', 'T', '121.97387097872', '24.086956718805', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830100, '台北市', 'T', '121.5201088108', '25.063029935612', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830101, '中正区', 'Z', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830102, '大同区', 'D', '124.81937675979', '46.045583951311', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830103, '中山区', 'Z', '121.65154739367', '38.924511115496', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830104, '万华区', 'W', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830105, '信义区', 'X', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830106, '松山区', 'S', '118.9394138505', '42.292481572694', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830107, '大安区', 'D', '104.78041635328', '29.369928541322', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830108, '南港区', 'N', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830109, '北投区', 'B', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830110, '内湖区', 'N', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830111, '士林区', 'S', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830112, '文山区', 'W', '121.5201088108', '25.063029935612', 830100, 3, 'tr_0 tr_830000 tr_830100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830200, '新北市', 'X', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830201, '板桥区', 'B', '121.46374631322', '25.009264935203', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830202, '土城区', 'T', '121.45638215646', '24.969575575642', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830203, '新庄区', 'X', '121.44987794847', '25.035900513246', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830204, '新店区', 'X', '121.54851057293', '24.931579077246', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830205, '深坑区', 'S', '121.63248449446', '25.000182732355', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830206, '石碇区', 'S', '121.64666268478', '24.953083429509', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830207, '坪林区', 'P', '121.73478767877', '24.915696554977', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830208, '乌来区', 'W', '121.53050817209', '24.786532168822', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830209, '五股区', 'W', '121.44461965429', '25.100233770435', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830210, '八里区', 'B', '121.40465098523', '25.130119585774', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830211, '林口区', 'L', '121.35894397022', '25.103036147515', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830212, '淡水区', 'D', '121.47260573633', '25.187238161176', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830213, '中和区', 'Z', '119.97751429276', '31.836323947624', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830214, '永和区', 'Y', '121.52736966421', '25.010500528231', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830215, '三重区', 'S', '121.49687574316', '25.069790814298', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830216, '芦洲区', 'L', '121.47982274435', '25.091134839883', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830217, '泰山区', 'T', '117.14141108582', '36.199444601195', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830218, '树林区', 'S', '121.412622083', '24.984757647837', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830219, '莺歌区', 'Y', '121.35899891418', '24.958676651245', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830220, '三峡区', 'S', '121.42609502893', '24.87480469353', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830221, '汐止区', 'X', '121.66100298061', '25.086721897126', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830222, '金山区', 'J', '121.34848004512', '30.74785237657', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830223, '万里区', 'W', '121.66558782234', '25.179420721026', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830224, '三芝区', 'S', '121.53552324466', '25.233947831353', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830225, '石门区', 'S', '121.59364212175', '25.261063301582', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830226, '瑞芳区', 'R', '121.81592241951', '25.092372901641', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830227, '贡寮区', 'G', '121.92278316131', '25.044375645825', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830228, '双溪区', 'S', '121.8310510997', '25.001750367683', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830229, '平溪区', 'P', '121.75897792057', '25.028954662262', 830200, 3, 'tr_0 tr_830000 tr_830200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830300, '桃园市', 'T', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830301, '桃园区', 'T', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830302, '中坜区', 'Z', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830303, '平镇区', 'P', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830304, '八德区', 'B', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830305, '杨梅区', 'Y', '110.86164512823', '21.447395667888', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830306, '芦竹区', 'L', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830307, '大溪区', 'D', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830308, '龙潭区', 'L', '126.56854459242', '43.91634255363', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830309, '龟山区', 'G', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830310, '大园区', 'D', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830311, '观音区', 'G', '120.42538525561', '36.169241550407', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830312, '新屋区', 'X', '115.95771247803', '39.980514890446', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830313, '复兴区', 'F', '114.44809470749', '36.610368592227', 830300, 3, 'tr_0 tr_830000 tr_830300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830400, '台中市', 'T', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830401, '中区', 'Z', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830402, '东区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830403, '西区', 'X', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830404, '南区', 'N', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830405, '北区', 'B', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830406, '西屯区', 'X', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830407, '南屯区', 'N', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830408, '北屯区', 'B', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830409, '丰原区', 'F', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830410, '大里区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830411, '太平区', 'T', '121.68538413681', '42.016967854141', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830412, '东势区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830413, '大甲区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830414, '清水区', 'Q', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830415, '沙鹿区', 'S', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830416, '梧栖区', 'W', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830417, '后里区', 'H', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830418, '神冈区', 'S', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830419, '潭子区', 'T', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830420, '大雅区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830421, '新小区', 'X', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830422, '石冈区', 'S', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830423, '外埔区', 'W', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830424, '大安区', 'D', '104.78041635328', '29.369928541322', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830425, '乌日区', 'W', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830426, '大肚区', 'D', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830427, '龙井区', 'L', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830428, '雾峰区', 'W', '119.33696304538', '26.091557030419', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830429, '和平区', 'H', '117.2214669949', '39.12339025328', 830400, 3, 'tr_0 tr_830000 tr_830400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830500, '台南市', 'T', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830501, '中西区', 'Z', '114.15949141031', '22.291342714292', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830502, '东区', 'D', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830503, '南区', 'N', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830504, '北区', 'B', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830505, '安平区', 'A', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830506, '安南区', 'A', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830507, '永康区', 'Y', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830508, '归仁区', 'G', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830509, '新化区', 'X', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830510, '左镇区', 'Z', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830511, '玉井区', 'Y', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830512, '楠西区', 'N', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830513, '南化区', 'N', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830514, '仁德区', 'R', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830515, '关庙区', 'G', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830516, '龙崎区', 'L', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830517, '官田区', 'G', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830518, '麻豆区', 'M', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830519, '佳里区', 'J', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830520, '西港区', 'X', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830521, '七股区', 'Q', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830522, '将军区', 'J', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830523, '学甲区', 'X', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830524, '北门区', 'B', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830525, '新营区', 'X', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830526, '后壁区', 'H', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830527, '白河区', 'B', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830528, '东山区', 'D', '130.32336109407', '47.344987135573', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830529, '六甲区', 'L', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830530, '下营区', 'X', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830531, '柳营区', 'L', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830532, '盐水区', 'Y', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830533, '善化区', 'S', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830534, '大内区', 'D', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830535, '山上区', 'S', '121.36052796411', '38.965848756262', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830536, '新市区', 'X', '115.41224520287', '38.88118294749', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830537, '安定区', 'A', '104.61650040265', '35.585600016725', 830500, 3, 'tr_0 tr_830000 tr_830500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830600, '高雄市', 'G', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830601, '楠梓区', 'N', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830602, '左营区', 'Z', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830603, '鼓山区', 'G', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830604, '三民区', 'S', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830605, '盐埕区', 'Y', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830606, '前金区', 'Q', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830607, '新兴区', 'X', '130.93837086995', '45.822310328543', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830608, '苓雅区', 'L', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830609, '前镇区', 'Q', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830610, '旗津区', 'Q', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830611, '小港区', 'X', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830612, '凤山区', 'F', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830613, '大寮区', 'D', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830614, '鸟松区', 'N', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830615, '林园区', 'L', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830616, '仁武区', 'R', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830617, '大树区', 'D', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830618, '大社区', 'D', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830619, '冈山区', 'G', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830620, '路竹区', 'L', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830621, '桥头区', 'Q', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830622, '梓官区', 'Z', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830623, '弥陀区', 'M', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830624, '永安区', 'Y', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830625, '燕巢区', 'Y', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830626, '阿莲区', 'A', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830627, '茄萣区', 'J', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830628, '湖内区', 'H', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830629, '旗山区', 'Q', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830630, '美浓区', 'M', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830631, '内门区', 'N', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830632, '杉林区', 'S', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830633, '甲仙区', 'J', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830634, '六龟区', 'L', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830635, '茂林区', 'M', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830636, '桃源区', 'T', '114.29349244944', '30.607022895804', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830637, '那玛夏区', 'N', '120.71415692906', '23.273513646073', 830600, 3, 'tr_0 tr_830000 tr_830600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830700, '基隆市', 'J', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830701, '中正区', 'Z', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830702, '七堵区', 'Q', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830703, '暖暖区', 'N', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830704, '仁爱区', 'R', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830705, '中山区', 'Z', '121.65154739367', '38.924511115496', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830706, '安乐区', 'A', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830707, '信义区', 'X', '118.53225032938', '24.6210238893', 830700, 3, 'tr_0 tr_830000 tr_830700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830800, '新竹市', 'X', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830801, '东区', 'D', '119.76701381388', '49.221741849328', 830800, 3, 'tr_0 tr_830000 tr_830800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830802, '北区', 'B', '119.76701381388', '49.221741849328', 830800, 3, 'tr_0 tr_830000 tr_830800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830803, '香山区', 'X', '119.76701381388', '49.221741849328', 830800, 3, 'tr_0 tr_830000 tr_830800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830900, '嘉义市', 'J', '121.97387097872', '24.086956718805', 830000, 2, 'tr_0 tr_830000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830901, '东区', 'D', '114.2466374103', '22.728825804821', 830900, 3, 'tr_0 tr_830000 tr_830900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(830902, '西区', 'X', '114.2466374103', '22.728825804821', 830900, 3, 'tr_0 tr_830000 tr_830900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110000, '北京市', 'B', '116.41338369712', '39.9109245473', 0, 1, '', 0, 1, '2022-10-07 20:42:26', '2023-05-29 16:02:45'), +(120000, '天津市', 'T', '117.21081309155', '39.14392990331', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130000, '河北省', 'H', '114.53659630532', '38.0432016452', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140000, '山西省', 'S', '112.56937550968', '37.879829423856', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150000, '内蒙古自治区', 'N', '111.77260583082', '40.823156232446', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210000, '辽宁省', 'L', '123.43559785683', '41.841465251202', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220000, '吉林省', 'J', '125.33257987515', '43.901714435444', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230000, '黑龙江省', 'H', '126.66965282042', '45.747929837435', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310000, '上海市', 'S', '121.48053886018', '31.235929042252', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320000, '江苏省', 'J', '118.76955164467', '32.066776944293', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330000, '浙江省', 'Z', '120.15953308739', '30.271548393337', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340000, '安徽省', 'A', '117.33054041772', '31.734294156317', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350000, '福建省', 'F', '119.30244747704', '26.106339415901', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360000, '江西省', 'J', '115.91542320365', '28.681690516761', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370000, '山东省', 'S', '117.02744162848', '36.674856650405', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410000, '河南省', 'H', '113.75938408486', '34.771712921931', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420000, '湖北省', 'H', '114.34844073659', '30.551600064658', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430000, '湖南省', 'H', '112.98960254335', '28.118269998009', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440000, '广东省', 'G', '113.27242891273', '23.137948556539', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450000, '广西壮族自治区', 'G', '108.33452122944', '22.821268997909', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460000, '海南省', 'H', '110.35553651088', '20.025801964463', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500000, '重庆市', 'Z', '106.55843415538', '29.568996245339', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510000, '四川省', 'S', '104.07346654728', '30.577543147015', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520000, '贵州省', 'G', '106.71447593089', '26.604029544995', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530000, '云南省', 'Y', '102.71641607523', '25.051562267345', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540000, '西藏自治区', 'X', '91.124342128993', '29.652893647473', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610000, '陕西省', 'S', '108.96039314875', '34.275808006024', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620000, '甘肃省', 'G', '103.83247812812', '36.065464887368', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630000, '青海省', 'Q', '101.78646183587', '36.627158579235', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640000, '宁夏回族自治区', 'N', '106.26560480701', '38.476877967911', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650000, '新疆维吾尔自治区', 'X', '87.633473205738', '43.79923810129', 0, 1, 'tr_0 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110100, '市辖区', 'S', '116.41338369712', '39.9109245473', 110000, 2, 'tr_0 tr_110000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120100, '市辖区', 'S', '117.21081309155', '39.14392990331', 120000, 2, 'tr_0 tr_120000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140100, '太原市', 'T', '112.55639149167', '37.876989028848', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140200, '大同市', 'D', '113.30643625859', '40.082468716161', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140300, '阳泉市', 'Y', '113.58761666288', '37.862360847859', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140400, '长治市', 'Z', '113.12255886985', '36.201268372155', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140500, '晋城市', 'J', '112.85857823133', '35.496284586473', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140600, '朔州市', 'S', '112.43937093967', '39.337108370542', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140700, '晋中市', 'J', '112.75959475566', '37.69283940976', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140800, '运城市', 'Y', '111.01338945448', '35.032706912909', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140900, '忻州市', 'X', '112.74062416024', '38.422383385178', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141000, '临汾市', 'L', '111.52553022403', '36.09374189542', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141100, '吕梁市', 'L', '111.15044967529', '37.524497749577', 140000, 2, 'tr_0 tr_140000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150100, '呼和浩特市', 'H', '111.75550856171', '40.848422997113', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150200, '包头市', 'B', '109.84654350721', '40.662928788261', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150300, '乌海市', 'W', '106.80039105', '39.662006364891', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150400, '赤峰市', 'C', '118.89552039752', '42.261686103412', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150500, '通辽市', 'T', '122.25052178738', '43.657980083917', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150600, '鄂尔多斯市', 'E', '109.78744317924', '39.614482313949', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150700, '呼伦贝尔市', 'H', '119.77237049947', '49.218446475565', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150800, '巴彦淖尔市', 'B', '107.39439808372', '40.749359489573', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150900, '乌兰察布市', 'W', '113.13946767446', '41.000748327674', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152200, '兴安盟', 'X', '122.04436452583', '46.088463713219', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152500, '锡林郭勒盟', 'X', '116.05439144075', '43.939422665339', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152900, '阿拉善盟', 'A', '105.73537746449', '38.858275883057', 150000, 2, 'tr_0 tr_150000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210100, '沈阳市', 'S', '123.45598993089', '41.720915668889', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210200, '大连市', 'D', '121.62163148459', '38.918953666786', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210300, '鞍山市', 'A', '123.00137251399', '41.115053596949', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210400, '抚顺市', 'F', '123.96437461561', '41.885969593057', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210500, '本溪市', 'B', '123.69250712421', '41.492916460553', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210600, '丹东市', 'D', '124.36154728159', '40.006408705594', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210700, '锦州市', 'J', '121.13259630056', '41.100931499462', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210800, '营口市', 'Y', '122.2415746645', '40.673136838267', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210900, '阜新市', 'F', '121.67640799866', '42.028021901318', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211000, '辽阳市', 'L', '123.24336640651', '41.274161290454', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211100, '盘锦市', 'P', '122.07322781023', '41.141248022956', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211200, '铁岭市', 'T', '123.73236520918', '42.229947997184', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211300, '朝阳市', 'C', '120.45749949793', '41.579820864756', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211400, '葫芦岛市', 'H', '120.84339833993', '40.717364436362', 210000, 2, 'tr_0 tr_210000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220100, '长春市', 'Z', '125.33060207591', '43.821953501043', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220200, '吉林市', 'J', '126.55563450495', '43.843567834579', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220300, '四平市', 'S', '124.35648155716', '43.171993571561', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220400, '辽源市', 'L', '125.15042516689', '42.894055005746', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220500, '通化市', 'T', '125.94660627598', '41.733815801613', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220600, '白山市', 'B', '126.42963008938', '41.939627205329', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220700, '松原市', 'S', '124.83148187569', '45.147404193414', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220800, '白城市', 'B', '122.8455906085', '45.625504359996', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222400, '延边朝鲜族自治州', 'Y', '129.47737632023', '42.915743033722', 220000, 2, 'tr_0 tr_220000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230100, '哈尔滨市', 'H', '126.54161509032', '45.808825827952', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230200, '齐齐哈尔市', 'Q', '123.92457086842', '47.359977186015', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230300, '鸡西市', 'J', '130.97561865877', '45.300872317824', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230400, '鹤岗市', 'H', '130.30443289867', '47.356056157685', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230500, '双鸭山市', 'S', '131.16534168078', '46.653185895886', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230600, '大庆市', 'D', '125.10865763402', '46.593633176722', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230700, '伊春市', 'Y', '128.8475463802', '47.733318457231', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230800, '佳木斯市', 'J', '130.32735909257', '46.805689990858', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230900, '七台河市', 'Q', '131.01154459103', '45.776300321548', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231000, '牡丹江市', 'M', '129.63953977835', '44.556245708986', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231100, '黑河市', 'H', '127.53548988622', '50.25127231175', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231200, '绥化市', 'S', '126.9753568753', '46.660032179824', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232700, '大兴安岭地区', 'D', '124.15292785448', '50.420025955028', 230000, 2, 'tr_0 tr_230000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310100, '市辖区', 'S', '121.48053886018', '31.235929042252', 310000, 2, 'tr_0 tr_310000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320100, '南京市', 'N', '118.80242172125', '32.064652885618', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320200, '无锡市', 'W', '120.31858328811', '31.498809732686', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320300, '徐州市', 'X', '117.29057543439', '34.212666550113', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320400, '常州市', 'C', '119.98148471328', '31.815795653328', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320500, '苏州市', 'S', '120.59241222959', '31.303564074442', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320600, '南通市', 'N', '120.90159173866', '31.986549431201', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320700, '连云港市', 'L', '119.22862133317', '34.602249525267', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320800, '淮安市', 'H', '119.02148367071', '33.616295301033', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320900, '盐城市', 'Y', '120.16754426576', '33.355100917626', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321000, '扬州市', 'Y', '119.41941890823', '32.40067693609', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321100, '镇江市', 'Z', '119.43048944567', '32.194715920524', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321200, '泰州市', 'T', '119.92956633785', '32.460675049308', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321300, '宿迁市', 'S', '118.28157403571', '33.96774971569', 320000, 2, 'tr_0 tr_320000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330100, '杭州市', 'H', '120.21551180372', '30.253082981693', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330200, '宁波市', 'N', '121.62857249434', '29.866033045866', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330300, '温州市', 'W', '120.70647689036', '28.001085404472', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330400, '嘉兴市', 'J', '120.76355182586', '30.75097483092', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330500, '湖州市', 'H', '120.09451660916', '30.898963937294', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330600, '绍兴市', 'S', '120.58547847885', '30.036369311307', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330700, '金华市', 'J', '119.65343619053', '29.084639385514', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330800, '衢州市', 'Q', '118.86659674036', '28.975545802265', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330900, '舟山市', 'Z', '122.21355631852', '29.99091168016', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331000, '台州市', 'T', '121.42743470428', '28.662194055996', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331100, '丽水市', 'L', '119.92957305844', '28.473278180563', 330000, 2, 'tr_0 tr_330000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340100, '合肥市', 'H', '117.23344266498', '31.826577833687', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340200, '芜湖市', 'W', '118.43943137654', '31.358536655799', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340300, '蚌埠市', 'B', '117.39551332814', '32.921523704351', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340400, '淮南市', 'H', '117.00638885072', '32.631847399053', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340500, '马鞍山市', 'M', '118.51357957943', '31.676265597609', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340600, '淮北市', 'H', '116.80453726703', '33.961656300276', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340700, '铜陵市', 'T', '117.81847679446', '30.951233239913', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340800, '安庆市', 'A', '117.06360390492', '30.530956568043', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341000, '黄山市', 'H', '118.34543725315', '29.721889786592', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341100, '滁州市', 'C', '118.33940613597', '32.261270872041', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341200, '阜阳市', 'F', '115.82043612491', '32.896060994852', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341300, '宿州市', 'S', '116.97054394561', '33.652095326452', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341500, '六安市', 'L', '116.52640966419', '31.741450815323', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341600, '亳州市', 'B', '115.78446321127', '33.850642695789', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341700, '池州市', 'C', '117.4984209616', '30.670883790765', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341800, '宣城市', 'X', '118.76553424277', '30.946601545293', 340000, 2, 'tr_0 tr_340000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350100, '福州市', 'F', '119.30346983854', '26.080429420698', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350200, '厦门市', 'S', '118.09643549977', '24.485406605176', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350300, '莆田市', 'P', '119.01452097813', '25.459865455923', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350400, '三明市', 'S', '117.64552116782', '26.269736515992', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350500, '泉州市', 'Q', '118.6824462668', '24.879952330498', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350600, '漳州市', 'Z', '117.65357645299', '24.518929791171', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350700, '南平市', 'N', '118.18436954814', '26.647772874203', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350800, '龙岩市', 'L', '117.02344756678', '25.081219844872', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350900, '宁德市', 'N', '119.55451074543', '26.672241711409', 350000, 2, 'tr_0 tr_350000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360100, '南昌市', 'N', '115.86458944232', '28.689455295061', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360200, '景德镇市', 'J', '117.18457644639', '29.274247711041', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360300, '萍乡市', 'P', '113.86149643375', '27.628392709397', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360400, '九江市', 'J', '116.00753491163', '29.711340559079', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360500, '新余市', 'X', '114.9235346514', '27.823578697789', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360600, '鹰潭市', 'Y', '117.07557542703', '28.265787063191', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360700, '赣州市', 'G', '114.94050337298', '25.835176103498', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360800, '吉安市', 'J', '115.00051072001', '27.11972682607', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360900, '宜春市', 'Y', '114.42356367591', '27.820856421848', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361000, '抚州市', 'F', '116.36453876864', '27.95489225342', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361100, '上饶市', 'S', '117.94945960312', '28.460625921852', 360000, 2, 'tr_0 tr_360000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370100, '济南市', 'J', '117.12639941261', '36.656554201787', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370200, '青岛市', 'Q', '120.38945519115', '36.072227496663', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370300, '淄博市', 'Z', '118.0614525349', '36.819085683322', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370400, '枣庄市', 'Z', '117.33054194484', '34.815994048435', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370500, '东营市', 'D', '118.68138493514', '37.439641826323', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370600, '烟台市', 'Y', '121.4544154173', '37.470038383731', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370700, '潍坊市', 'W', '119.16837791143', '36.712651551268', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370800, '济宁市', 'J', '116.59361234854', '35.42017739453', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370900, '泰安市', 'T', '117.0944948348', '36.205858044885', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371000, '威海市', 'W', '122.12754097831', '37.516430548015', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371100, '日照市', 'R', '119.53341540457', '35.422838998438', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371200, '莱芜市', 'L', '117.68466691247', '36.233654133647', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371300, '临沂市', 'L', '118.36353300501', '35.110671242365', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371400, '德州市', 'D', '116.36555674397', '37.441308454576', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371500, '聊城市', 'L', '115.9915878483', '36.462758187694', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371600, '滨州市', 'B', '117.97740401715', '37.388196196077', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371700, '菏泽市', 'H', '115.48754503343', '35.239407424766', 370000, 2, 'tr_0 tr_370000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410100, '郑州市', 'Z', '113.63141920734', '34.753438850454', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410200, '开封市', 'K', '114.31459258497', '34.802885811212', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410300, '洛阳市', 'L', '112.45942129831', '34.624262779219', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410400, '平顶山市', 'P', '113.19952856052', '33.772050748691', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410500, '安阳市', 'A', '114.39950042177', '36.105940984015', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410600, '鹤壁市', 'H', '114.30359364248', '35.7523574114', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410700, '新乡市', 'X', '113.93360046733', '35.309639930337', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410800, '焦作市', 'J', '113.24854783457', '35.220963254039', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410900, '濮阳市', 'P', '115.03559747034', '35.767593028906', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411000, '许昌市', 'X', '113.85847553686', '34.041431611619', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411100, '漯河市', 'L', '114.02342077765', '33.587710707102', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411200, '三门峡市', 'S', '111.20653322387', '34.77832724946', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411300, '南阳市', 'N', '112.53450131351', '32.996562204651', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411400, '商丘市', 'S', '115.66244933826', '34.420201665859', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411500, '信阳市', 'X', '114.09748283305', '32.153014547531', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411600, '周口市', 'Z', '114.70348251482', '33.631828875702', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411700, '驻马店市', 'Z', '114.02847078173', '33.017842416744', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(419000, '省直辖县级行政区划', 'S', '113.75938408486', '34.771712921931', 410000, 2, 'tr_0 tr_410000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420100, '武汉市', 'W', '114.31158155473', '30.598466736401', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420200, '黄石市', 'H', '115.04553290894', '30.205207848942', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420300, '十堰市', 'S', '110.8045295607', '32.635061858401', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420500, '宜昌市', 'Y', '111.29254921035', '30.697446484492', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420600, '襄阳市', 'X', '112.128537201', '32.014796804669', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420700, '鄂州市', 'E', '114.90160738827', '30.396572173317', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420800, '荆门市', 'J', '112.20639298023', '31.04173257557', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420900, '孝感市', 'X', '113.92251007734', '30.930689227018', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421000, '荆州市', 'J', '112.24552262926', '30.340842107743', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421100, '黄冈市', 'H', '114.87849048411', '30.459358857618', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421200, '咸宁市', 'X', '114.32851909027', '29.847055947646', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421300, '随州市', 'S', '113.38945001822', '31.696516772328', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422800, '恩施土家族苗族自治州', 'E', '109.49459261858', '30.277939575301', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(429000, '省直辖县级行政区划', 'S', '114.34844073659', '30.551600064658', 420000, 2, 'tr_0 tr_420000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430100, '长沙市', 'Z', '112.94547319535', '28.234889399944', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430200, '株洲市', 'Z', '113.14047079776', '27.833567639016', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430300, '湘潭市', 'X', '112.95046418076', '27.835702227136', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430400, '衡阳市', 'H', '112.57844721326', '26.899576139189', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430500, '邵阳市', 'S', '111.47443288593', '27.245270272809', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430600, '岳阳市', 'Y', '113.13548942422', '29.363178293926', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430700, '常德市', 'C', '111.70545217996', '29.037749999407', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430800, '张家界市', 'Z', '110.48553254695', '29.122815562552', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430900, '益阳市', 'Y', '112.36151595471', '28.55971117849', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431000, '郴州市', 'C', '113.02146049909', '25.776683273602', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431100, '永州市', 'Y', '111.61945505792', '26.4258641179', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431200, '怀化市', 'H', '110.00851426537', '27.575160902979', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431300, '娄底市', 'L', '112.00150349288', '27.703208596992', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433100, '湘西土家族苗族自治州', 'X', '109.74557664947', '28.317369104701', 430000, 2, 'tr_0 tr_430000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440100, '广州市', 'G', '113.27143134446', '23.135336306695', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440200, '韶关市', 'S', '113.60352734562', '24.815881278583', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440300, '深圳市', 'S', '114.06455183659', '22.548456637984', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440400, '珠海市', 'Z', '113.58255478655', '22.276564654249', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440500, '汕头市', 'S', '116.68852864055', '23.359091717725', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440600, '佛山市', 'F', '113.1285121955', '23.027758750789', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440700, '江门市', 'J', '113.08855619524', '22.584603880965', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440800, '湛江市', 'Z', '110.36555441393', '21.276723439012', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440900, '茂名市', 'M', '110.93154257997', '21.669064031332', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441200, '肇庆市', 'Z', '112.47148894063', '23.052888771126', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441300, '惠州市', 'H', '114.42355801658', '23.116358854726', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441400, '梅州市', 'M', '116.12953737612', '24.294177532206', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441500, '汕尾市', 'S', '115.3729242894', '22.778730500164', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441600, '河源市', 'H', '114.70744627291', '23.74968437096', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441700, '阳江市', 'Y', '111.98848929181', '21.864339726139', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441800, '清远市', 'Q', '113.06246832527', '23.688230292088', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900, '东莞市', 'D', '113.75842045788', '23.027308411643', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000, '中山市', 'Z', '113.39942236263', '22.522314670791', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445100, '潮州市', 'C', '116.62947017363', '23.662623192616', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445200, '揭阳市', 'J', '116.37851218034', '23.555740488276', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445300, '云浮市', 'Y', '112.05151269959', '22.920911970343', 440000, 2, 'tr_0 tr_440000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450100, '南宁市', 'N', '108.37345082582', '22.822606601187', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450200, '柳州市', 'L', '109.43442194635', '24.331961386852', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450300, '桂林市', 'G', '110.20354537458', '25.242885724873', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450400, '梧州市', 'W', '111.28551681182', '23.482745281135', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450500, '北海市', 'B', '109.12653321257', '21.486836495769', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450600, '防城港市', 'F', '108.3604188383', '21.693005289969', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450700, '钦州市', 'Q', '108.66058016842', '21.986593539484', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450800, '贵港市', 'G', '109.60552031033', '23.117448382038', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450900, '玉林市', 'Y', '110.18845312337', '22.659830509953', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451000, '百色市', 'B', '106.62458932565', '23.908185934296', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451100, '贺州市', 'H', '111.57352631416', '24.409450902865', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451200, '河池市', 'H', '108.09149994499', '24.698911731273', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451300, '来宾市', 'L', '109.2274581959', '23.756546762607', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451400, '崇左市', 'C', '107.3715202061', '22.383117234663', 450000, 2, 'tr_0 tr_450000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460100, '海口市', 'H', '110.32552547126', '20.044049439257', 460000, 2, 'tr_0 tr_460000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460200, '三亚市', 'S', '109.5185567014', '18.258736291748', 460000, 2, 'tr_0 tr_460000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460300, '三沙市', 'S', '112.34048204137', '16.838953334409', 460000, 2, 'tr_0 tr_460000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400, '儋州市', 'D', '109.58745583569', '19.527146110044', 460000, 2, 'tr_0 tr_460000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469000, '省直辖县级行政区划', 'S', '110.35553651088', '20.025801964463', 460000, 2, 'tr_0 tr_460000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500100, '市辖区', 'S', '106.55843415538', '29.568996245339', 500000, 2, 'tr_0 tr_500000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500200, '县', 'X', '106.55843415538', '29.568996245339', 500000, 2, 'tr_0 tr_500000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510100, '成都市', 'C', '104.08153351042', '30.655821878416', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510300, '自贡市', 'Z', '104.78444884672', '29.345584921328', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510400, '攀枝花市', 'P', '101.72554117091', '26.588033173333', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510500, '泸州市', 'L', '105.44852406933', '28.877668303607', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510600, '德阳市', 'D', '104.40441936496', '31.133115003657', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510700, '绵阳市', 'M', '104.68556186076', '31.473663048746', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510800, '广元市', 'G', '105.85042318166', '32.441616305315', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510900, '遂宁市', 'S', '105.59942153064', '30.539097671109', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511000, '内江市', 'N', '105.064588025', '29.58588653832', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511100, '乐山市', 'L', '103.77253760363', '29.557940717458', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511300, '南充市', 'N', '106.11750261487', '30.843782508337', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511400, '眉山市', 'M', '103.85656331579', '30.082526119421', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511500, '宜宾市', 'Y', '104.64940370487', '28.758007028552', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511600, '广安市', 'G', '106.63955268233', '30.461746110679', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511700, '达州市', 'D', '107.47459385898', '31.214307723927', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511800, '雅安市', 'Y', '103.0495426236', '30.016792545706', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511900, '巴中市', 'B', '106.75158530316', '31.872888585957', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(512000, '资阳市', 'Z', '104.63443534164', '30.134956559253', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513200, '阿坝藏族羌族自治州', 'A', '102.23141546175', '31.905511577267', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513300, '甘孜藏族自治州', 'G', '101.96854674579', '30.055278843518', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513400, '凉山彝族自治州', 'L', '102.27350268097', '27.88775230037', 510000, 2, 'tr_0 tr_510000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520100, '贵阳市', 'G', '106.63657676353', '26.65332482231', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520200, '六盘水市', 'L', '104.83755460235', '26.598833108257', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520300, '遵义市', 'Z', '106.93342774802', '27.731700878917', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520400, '安顺市', 'A', '105.95441712389', '26.259252378715', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520500, '毕节市', 'B', '105.33332337117', '27.408562131331', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520600, '铜仁市', 'T', '109.16855802826', '27.674902690624', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522300, '黔西南布依族苗族自治州', 'Q', '104.91249214627', '25.093967349417', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522600, '黔东南苗族侗族自治州', 'Q', '107.98944624078', '26.589702969826', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522700, '黔南布依族苗族自治州', 'Q', '107.52840270574', '26.260616196074', 520000, 2, 'tr_0 tr_520000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530100, '昆明市', 'K', '102.852448365', '24.873998150044', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530300, '曲靖市', 'Q', '103.80243482795', '25.496406931544', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530400, '玉溪市', 'Y', '102.55356029311', '24.357710942446', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530500, '保山市', 'B', '99.177273285818', '25.139038793266', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530600, '昭通市', 'Z', '103.72351177197', '27.344083860247', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530700, '丽江市', 'L', '100.23246452903', '26.860657438065', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530800, '普洱市', 'P', '100.97256981473', '22.83097918601', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530900, '临沧市', 'L', '100.09544042015', '23.890468556279', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532300, '楚雄彝族自治州', 'C', '101.5344124805', '25.05177356534', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532500, '红河哈尼族彝族自治州', 'H', '103.38154905258', '23.369996247605', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532600, '文山壮族苗族自治州', 'W', '104.22256899109', '23.405994293612', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532800, '西双版纳傣族自治州', 'X', '100.80344682456', '22.013601254764', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532900, '大理白族自治州', 'D', '100.27458284048', '25.612128418193', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533100, '德宏傣族景颇族自治州', 'D', '98.591359356114', '24.438010702758', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533300, '怒江傈僳族自治州', 'N', '98.863288381358', '25.823707417658', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533400, '迪庆藏族自治州', 'D', '99.70952999014', '27.825184683643', 530000, 2, 'tr_0 tr_530000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540100, '拉萨市', 'L', '91.120823915464', '29.650040274768', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540200, '日喀则市', 'R', '88.893703034826', '29.275657822512', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540300, '昌都市', 'C', '97.179583594086', '31.147346549327', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540400, '林芝市', 'L', '94.368058287133', '29.654042176952', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540500, '山南市', 'S', '91.778675138519', '29.243026939249', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540600, '那曲市', 'N', '92.057338498175', '31.482438388455', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542500, '阿里地区', 'A', '80.112776921926', '32.506866017633', 540000, 2, 'tr_0 tr_540000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610100, '西安市', 'X', '108.94646555063', '34.347268816624', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610200, '铜川市', 'T', '108.95240424836', '34.902637080503', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610300, '宝鸡市', 'B', '107.24457536704', '34.36891564287', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610400, '咸阳市', 'X', '108.71542245143', '34.335476293369', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610500, '渭南市', 'W', '109.51658960526', '34.505715516753', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610600, '延安市', 'Y', '109.49658191613', '36.591111035218', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610700, '汉中市', 'H', '107.02943020926', '33.073799907834', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610800, '榆林市', 'Y', '109.74161603381', '38.290883835484', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610900, '安康市', 'A', '109.03560108266', '32.690512770574', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611000, '商洛市', 'S', '109.92441788136', '33.878633852208', 610000, 2, 'tr_0 tr_610000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620100, '兰州市', 'L', '103.84052119634', '36.067234693546', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620200, '嘉峪关市', 'J', '98.296203843001', '39.777960147391', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620300, '金昌市', 'J', '102.1946056867', '38.525820092093', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620400, '白银市', 'B', '104.14445082834', '36.550825330415', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620500, '天水市', 'T', '105.73141674567', '34.587411881651', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620600, '武威市', 'W', '102.64455434037', '37.934377808158', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620700, '张掖市', 'Z', '100.45641147406', '38.932066007005', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620800, '平凉市', 'P', '106.67144234828', '35.549232050464', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620900, '酒泉市', 'J', '98.500685216068', '39.738469080716', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621000, '庆阳市', 'Q', '107.64938569595', '35.715215983562', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621100, '定西市', 'D', '104.63242008306', '35.586832926562', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621200, '陇南市', 'L', '104.92857497071', '33.406620229951', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622900, '临夏回族自治州', 'L', '103.2163905653', '35.607562183503', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623000, '甘南藏族自治州', 'G', '102.91758468826', '34.989139909968', 620000, 2, 'tr_0 tr_620000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630100, '西宁市', 'X', '101.78445017051', '36.623384696517', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630200, '海东市', 'H', '102.11044407228', '36.508511080941', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632200, '海北藏族自治州', 'H', '100.90743432146', '36.96066282413', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632300, '黄南藏族自治州', 'H', '102.02242827808', '35.525804586516', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632500, '海南藏族自治州', 'H', '100.62662114446', '36.292102479899', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632600, '果洛藏族自治州', 'G', '100.2515919788', '34.477193866471', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632700, '玉树藏族自治州', 'Y', '97.013180762773', '33.010979585143', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632800, '海西蒙古族藏族自治州', 'H', '97.376299116019', '37.382750462527', 630000, 2, 'tr_0 tr_630000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640100, '银川市', 'Y', '106.2384935874', '38.49246005551', 640000, 2, 'tr_0 tr_640000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640200, '石嘴山市', 'S', '106.3906004255', '38.989682839915', 640000, 2, 'tr_0 tr_640000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640300, '吴忠市', 'W', '106.20537126664', '38.003712913453', 640000, 2, 'tr_0 tr_640000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640400, '固原市', 'G', '106.24857742607', '36.021617258011', 640000, 2, 'tr_0 tr_640000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640500, '中卫市', 'Z', '105.20357090089', '37.505701418703', 640000, 2, 'tr_0 tr_640000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650100, '乌鲁木齐市', 'W', '87.62443993536', '43.83076320429', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650200, '克拉玛依市', 'K', '84.895900538875', '45.585675237814', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650400, '吐鲁番市', 'T', '89.266025488642', '42.678924820794', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650500, '哈密市', 'H', '93.529373012389', '42.344467104552', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652300, '昌吉回族自治州', 'C', '87.315001624474', '44.01685415992', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652700, '博尔塔拉蒙古自治州', 'B', '82.072914758274', '44.912196413465', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652800, '巴音郭楞蒙古自治州', 'B', '86.151713865333', '41.77028733045', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652900, '阿克苏地区', 'A', '80.266943484735', '41.175029860077', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653000, '克孜勒苏柯尔克孜自治州', 'K', '76.174308676212', '39.720471204871', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653100, '喀什地区', 'K', '75.996390556397', '39.476096748645', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653200, '和田地区', 'H', '79.928507063512', '37.120446463042', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654000, '伊犁哈萨克自治州', 'Y', '81.330537747532', '43.922723137492', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654200, '塔城地区', 'T', '82.987235518406', '46.750948254373', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654300, '阿勒泰地区', 'A', '88.147926203735', '47.850727870102', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(659000, '自治区直辖县级行政区划', 'Z', '87.633473205738', '43.79923810129', 650000, 2, 'tr_0 tr_650000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110101, '东城区', 'D', '116.42240097766', '39.934827272396', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110102, '西城区', 'X', '116.37251358117', '39.918123605841', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110105, '朝阳区', 'C', '112.85530302042', '35.520558754673', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110106, '丰台区', 'F', '116.29240188731', '39.864937197557', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110107, '石景山区', 'S', '116.22961266776', '39.911353808778', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110108, '海淀区', 'H', '116.3054340545', '39.965489841101', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110109, '门头沟区', 'M', '116.10760355577', '39.946146720034', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110111, '房山区', 'F', '116.14944375184', '39.754325839773', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110112, '通州区', 'T', '112.85530302042', '35.520558754673', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110113, '顺义区', 'S', '116.66142426369', '40.136350762231', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110114, '昌平区', 'C', '116.23761791731', '40.226413371594', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110115, '大兴区', 'D', '116.34862521223', '39.732555236554', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110116, '怀柔区', 'H', '116.63838587143', '40.322618404266', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110117, '平谷区', 'P', '117.1273791046', '40.146950735799', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110118, '密云区', 'M', '116.84954704427', '40.382175658138', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(110119, '延庆区', 'Y', '115.98163156902', '40.462168973754', 110100, 3, 'tr_0 tr_110000 tr_110100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120101, '和平区', 'H', '112.85530302042', '35.520558754673', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120102, '河东区', 'H', '117.26169316527', '39.126625684666', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120103, '河西区', 'H', '117.22941628002', '39.115718082216', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120104, '南开区', 'N', '117.15651537432', '39.144105279768', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120105, '河北区', 'H', '117.20359278136', '39.153485144705', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120106, '红桥区', 'H', '117.15751788327', '39.173285646564', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120110, '东丽区', 'D', '117.32056850791', '39.092332342815', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120111, '西青区', 'X', '117.01441017994', '39.148726608967', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120112, '津南区', 'J', '117.36338677903', '38.944148568115', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120113, '北辰区', 'B', '117.14140273158', '39.230343909918', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120114, '武清区', 'W', '117.05059715978', '39.389871228788', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120115, '宝坻区', 'B', '117.31660069248', '39.723194482933', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120116, '滨海新区', 'B', '117.71739882966', '39.009415773647', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120117, '宁河区', 'N', '117.83239334342', '39.336956431227', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120118, '静海区', 'J', '116.98046860455', '38.953370689172', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(120119, '蓟州区', 'J', '117.41457869479', '40.051508786395', 120100, 3, 'tr_0 tr_120000 tr_120100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140105, '小店区', 'X', '112.57239624162', '37.742322528645', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140106, '迎泽区', 'Y', '112.5693846724', '37.869532484225', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140107, '杏花岭区', 'X', '112.5763830113', '37.900186246845', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140108, '尖草坪区', 'J', '112.49360496704', '37.945943354548', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140109, '万柏林区', 'W', '112.52257675702', '37.864974410402', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140110, '晋源区', 'J', '112.48456424072', '37.721168857849', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140121, '清徐县', 'Q', '112.36455763137', '37.613066838238', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140122, '阳曲县', 'Y', '112.6794089516', '38.064620819448', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140123, '娄烦县', 'L', '111.80359063362', '38.073195368896', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140171, '山西转型综合改革示范区', 'S', '112.55639149167', '37.876989028848', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140181, '古交市', 'G', '112.1824528689', '37.912999960962', 140100, 3, 'tr_0 tr_140000 tr_140100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140212, '新荣区', 'X', '113.14644373539', '40.261971219328', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140213, '平城区', 'P', '113.30442522204', '40.081998375025', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140214, '云冈区', 'Y', '113.16240150396', '39.996838811279', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140215, '云州区', 'Y', '113.61847103172', '40.046229886508', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140221, '阳高县', 'Y', '113.75541420332', '40.367391842472', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140222, '天镇县', 'T', '114.09747753304', '40.426412198691', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140223, '广灵县', 'G', '114.28858637097', '39.766004217139', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140224, '灵丘县', 'L', '114.24136819946', '39.448825128052', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140225, '浑源县', 'H', '113.70560028822', '39.698952969845', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140226, '左云县', 'Z', '112.70946328956', '40.019623449015', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140271, '山西大同经济开发区', 'S', '113.30643625859', '40.082468716161', 140200, 3, 'tr_0 tr_140000 tr_140200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140302, '城区', 'C', '113.61283811719', '37.85786536147', 140300, 3, 'tr_0 tr_140000 tr_140300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140303, '矿区', 'K', '113.54077065934', '37.890804244519', 140300, 3, 'tr_0 tr_140000 tr_140300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140311, '郊区', 'J', '113.60060283682', '37.950352892943', 140300, 3, 'tr_0 tr_140000 tr_140300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140321, '平定县', 'P', '113.66442115516', '37.792796383591', 140300, 3, 'tr_0 tr_140000 tr_140300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140322, '盂县', 'Y', '113.41842046075', '38.091979630201', 140300, 3, 'tr_0 tr_140000 tr_140300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140403, '潞州区', 'L', '113.12952091721', '36.209472481338', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140404, '上党区', 'S', '113.05741608986', '36.059286479291', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140405, '屯留区', 'T', '112.89847476377', '36.321630843108', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140406, '潞城区', 'L', '113.23557845894', '36.339691267612', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140423, '襄垣县', 'X', '113.05741258647', '36.541685821155', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140425, '平顺县', 'P', '113.44251696707', '36.205989459384', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140426, '黎城县', 'L', '113.39343247604', '36.508669901441', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140427, '壶关县', 'H', '113.21357985531', '36.121334604237', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140428, '长子县', 'Z', '112.88456585041', '36.128001557794', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140429, '武乡县', 'W', '112.8706056438', '36.843167949301', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140430, '沁县', 'Q', '112.70545801478', '36.762189938552', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140431, '沁源县', 'Q', '112.34445202694', '36.506103350913', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140471, '山西长治高新技术产业园区', 'S', '113.12255886985', '36.201268372155', 140400, 3, 'tr_0 tr_140000 tr_140400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140502, '城区', 'C', '112.85958379452', '35.507278924584', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140521, '沁水县', 'Q', '112.19342620969', '35.696364462457', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140522, '阳城县', 'Y', '112.42145378712', '35.492181320425', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140524, '陵川县', 'L', '113.28740655466', '35.781743639538', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140525, '泽州县', 'Z', '112.79440121959', '35.599769729488', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140581, '高平市', 'G', '112.93041239923', '35.804336798578', 140500, 3, 'tr_0 tr_140000 tr_140500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140602, '朔城区', 'S', '112.43837642564', '39.325302712534', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140603, '平鲁区', 'P', '112.29552500886', '39.517389104237', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140621, '山阴县', 'S', '112.82243194473', '39.534030498011', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140622, '应县', 'Y', '113.19749353922', '39.560077852375', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140623, '右玉县', 'Y', '112.47350008125', '39.994859555431', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140671, '山西朔州经济开发区', 'S', '112.46306042376', '39.354781496121', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140681, '怀仁市', 'H', '113.10660846738', '39.833756889522', 140600, 3, 'tr_0 tr_140000 tr_140600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140702, '榆次区', 'Y', '112.71450350211', '37.703940486801', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140721, '榆社县', 'Y', '112.98159856583', '37.0763696687', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140722, '左权县', 'Z', '113.38545184006', '37.088555147171', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140723, '和顺县', 'H', '113.57660568309', '37.334807738688', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140724, '昔阳县', 'X', '113.71361290387', '37.617884042996', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140725, '寿阳县', 'S', '113.18341017493', '37.901307606957', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140726, '太谷县', 'T', '112.55738411926', '37.427395577313', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140727, '祁县', 'Q', '112.34244242768', '37.364131283475', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140728, '平遥县', 'P', '112.18245556381', '37.195600690703', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140729, '灵石县', 'L', '111.78561787596', '36.85336750127', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140781, '介休市', 'J', '111.92356319719', '37.032686403603', 140700, 3, 'tr_0 tr_140000 tr_140700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140802, '盐湖区', 'Y', '111.00437711462', '35.021425327829', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140821, '临猗县', 'L', '110.78040700351', '35.149542242622', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140822, '万荣县', 'W', '110.84457611016', '35.421108800536', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140823, '闻喜县', 'W', '111.23141035768', '35.362931196381', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140824, '稷山县', 'J', '110.98941457872', '35.610403569616', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140825, '新绛县', 'X', '111.23140649497', '35.622630103082', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140826, '绛县', 'J', '111.57548652056', '35.497276373896', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140827, '垣曲县', 'Y', '111.67660670572', '35.303014517418', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140828, '夏县', 'X', '111.2264314994', '35.147461779807', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140829, '平陆县', 'P', '111.22348047596', '34.842925154581', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140830, '芮城县', 'R', '110.7006115132', '34.699388110563', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140881, '永济市', 'Y', '110.45457767131', '34.872829714714', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140882, '河津市', 'H', '110.71857214373', '35.601926575322', 140800, 3, 'tr_0 tr_140000 tr_140800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140902, '忻府区', 'X', '112.75261366422', '38.40987981762', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140921, '定襄县', 'D', '112.96352861152', '38.479974305847', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140922, '五台县', 'W', '113.26145109492', '38.734181590565', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140923, '代县', 'D', '112.96655194854', '39.072728346381', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140924, '繁峙县', 'F', '113.27140827251', '39.195237430734', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140925, '宁武县', 'N', '112.32639824212', '39.024342381431', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140926, '静乐县', 'J', '111.94543190585', '38.365147088438', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140927, '神池县', 'S', '112.21738276001', '39.096875824863', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140928, '五寨县', 'W', '111.85340993856', '38.917019909692', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140929, '岢岚县', 'K', '111.57947778177', '38.710151038936', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140930, '河曲县', 'H', '111.14444863516', '39.390702488715', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140931, '保德县', 'B', '111.09254175805', '39.028336932396', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140932, '偏关县', 'P', '111.51447352049', '39.442230090387', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140971, '五台山风景名胜区', 'W', '113.602695497', '38.983546253607', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(140981, '原平市', 'Y', '112.71748713403', '38.736475897605', 140900, 3, 'tr_0 tr_140000 tr_140900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141002, '尧都区', 'Y', '111.58643021727', '36.084562230192', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141021, '曲沃县', 'Q', '111.48239637819', '35.647327335982', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141022, '翼城县', 'Y', '111.72537553219', '35.744429075039', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141023, '襄汾县', 'X', '111.44854005199', '35.882062670676', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141024, '洪洞县', 'H', '111.68158942672', '36.259467079377', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141025, '古县', 'G', '111.92657314947', '36.272338064827', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141026, '安泽县', 'A', '112.2566128396', '36.153514380523', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141027, '浮山县', 'F', '111.85538495306', '35.974392753943', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141028, '吉县', 'J', '110.68854637189', '36.103999062021', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141029, '乡宁县', 'X', '110.85349790083', '35.976441665474', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141030, '大宁县', 'D', '110.75938440882', '36.471305687097', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141031, '隰县', 'X', '110.94759127079', '36.699061383227', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141032, '永和县', 'Y', '110.63841589393', '36.765908673933', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141033, '蒲县', 'P', '111.10247405258', '36.418005429177', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141034, '汾西县', 'F', '111.56954629571', '36.658782264232', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141081, '侯马市', 'H', '111.37839658489', '35.625364816258', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141082, '霍州市', 'H', '111.76150942218', '36.574606950709', 141000, 3, 'tr_0 tr_140000 tr_141000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141102, '离石区', 'L', '111.15749077354', '37.523577475907', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141121, '文水县', 'W', '112.0355986926', '37.444300082651', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141122, '交城县', 'J', '112.16256770864', '37.557772236259', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141123, '兴县', 'X', '111.13439210498', '38.468803780991', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141124, '临县', 'L', '110.99841488129', '37.957210672321', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141125, '柳林县', 'L', '110.8953898393', '37.435492964934', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141126, '石楼县', 'S', '110.84159553248', '37.004470503012', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141127, '岚县', 'L', '111.67859223038', '38.28502878885', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141128, '方山县', 'F', '111.25037044293', '37.90102023916', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141129, '中阳县', 'Z', '111.18562956483', '37.36287279238', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141130, '交口县', 'J', '111.18762820476', '36.987872666553', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141181, '孝义市', 'X', '111.78560601833', '37.151063319102', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(141182, '汾阳市', 'F', '111.7945966192', '37.271291794518', 141100, 3, 'tr_0 tr_140000 tr_141100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150102, '新城区', 'X', '111.671620122', '40.863877021183', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150103, '回民区', 'H', '111.63047018388', '40.814506362944', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150104, '玉泉区', 'Y', '111.68157514366', '40.758058968635', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150105, '赛罕区', 'S', '111.7084206445', '40.798394236975', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150121, '土默特左旗', 'T', '111.16958672672', '40.735293711759', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150122, '托克托县', 'T', '111.20057494309', '40.283146729007', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150123, '和林格尔县', 'H', '111.82843021826', '40.384797744251', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150124, '清水河县', 'Q', '111.65357648803', '39.926333854389', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150125, '武川县', 'W', '111.45749705623', '41.102418723793', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150171, '呼和浩特金海工业园区', 'H', '111.61859862741', '40.813484420815', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150172, '呼和浩特经济技术开发区', 'H', '111.75550856171', '40.848422997113', 150100, 3, 'tr_0 tr_150000 tr_150100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150202, '东河区', 'D', '110.05039480879', '40.582228038324', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150203, '昆都仑区', 'K', '109.84553830335', '40.647644106921', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150204, '青山区', 'Q', '109.9074160123', '40.649473068783', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150205, '石拐区', 'S', '110.27838088451', '40.67829939834', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150206, '白云鄂博矿区', 'B', '109.97962576174', '41.774995234182', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150207, '九原区', 'J', '109.96958800614', '40.613396589444', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150221, '土默特右旗', 'T', '110.53038926652', '40.575127429108', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150222, '固阳县', 'G', '110.06643261639', '41.040162852726', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150223, '达尔罕茂明安联合旗', 'D', '110.43952090317', '41.704548551002', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150271, '包头稀土高新技术产业开发区', 'B', '109.84664914794', '40.637085021364', 150200, 3, 'tr_0 tr_150000 tr_150200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150302, '海勃湾区', 'H', '106.82943856714', '39.696907993535', 150300, 3, 'tr_0 tr_150000 tr_150300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150303, '海南区', 'H', '106.89847100998', '39.446827515087', 150300, 3, 'tr_0 tr_150000 tr_150300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150304, '乌达区', 'W', '106.7326063535', '39.511468916129', 150300, 3, 'tr_0 tr_150000 tr_150300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150402, '红山区', 'H', '118.96356353651', '42.27047843525', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150403, '元宝山区', 'Y', '119.29540450885', '42.045124715638', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150404, '松山区', 'S', '118.9394138505', '42.292481572694', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150421, '阿鲁科尔沁旗', 'A', '120.07261385472', '43.877953412182', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150422, '巴林左旗', 'B', '119.38644328076', '43.97638259461', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150423, '巴林右旗', 'B', '118.67039425705', '43.540131553108', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150424, '林西县', 'L', '118.06246142182', '43.624210259291', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150425, '克什克腾旗', 'K', '117.55162041051', '43.270757591896', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150426, '翁牛特旗', 'W', '119.01250888002', '42.942019262236', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150428, '喀喇沁旗', 'K', '118.7104736845', '41.932214335643', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150429, '宁城县', 'N', '119.35060897566', '41.600245148269', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150430, '敖汉旗', 'A', '119.92757793861', '42.296507085243', 150400, 3, 'tr_0 tr_150000 tr_150400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150502, '科尔沁区', 'K', '122.2624570337', '43.628712488829', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150521, '科尔沁左翼中旗', 'K', '123.31858853365', '44.132294228308', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150522, '科尔沁左翼后旗', 'K', '122.36356257648', '42.93956249402', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150523, '开鲁县', 'K', '121.32538568843', '43.606369431362', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150524, '库伦旗', 'K', '121.81740576201', '42.741211100235', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150525, '奈曼旗', 'N', '120.66464641294', '42.87184654666', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150526, '扎鲁特旗', 'Z', '120.91862585689', '44.562213133099', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150571, '通辽经济技术开发区', 'T', '122.22276854881', '43.676026521565', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150581, '霍林郭勒市', 'H', '119.67046591394', '45.53751332061', 150500, 3, 'tr_0 tr_150000 tr_150500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130100, '石家庄市', 'S', '114.52153190157', '38.048311926873', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130200, '唐山市', 'T', '118.18645947204', '39.636583724147', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130300, '秦皇岛市', 'Q', '119.60853063334', '39.941748102378', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130400, '邯郸市', 'H', '114.54562822824', '36.631262731204', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130500, '邢台市', 'X', '114.51146225613', '37.076685950966', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130600, '保定市', 'B', '115.47146383769', '38.879987768455', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130700, '张家口市', 'Z', '114.89257223145', '40.773237202691', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130800, '承德市', 'C', '117.96939750997', '40.957856012338', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130900, '沧州市', 'C', '116.84558075595', '38.310215141107', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131000, '廊坊市', 'L', '116.69058173343', '39.543366662759', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131100, '衡水市', 'H', '115.67540613762', '37.745191408077', 130000, 2, 'tr_0 tr_130000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150602, '东胜区', 'D', '109.96956006883', '39.827986984444', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150603, '康巴什区', 'K', '109.86962735373', '39.616378146766', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150621, '达拉特旗', 'D', '110.04036612608', '40.418907154391', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150622, '准格尔旗', 'Z', '111.24639840546', '39.870540265037', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150623, '鄂托克前旗', 'E', '107.48458472303', '38.188216741284', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150624, '鄂托克旗', 'E', '107.98244495023', '39.095293413608', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150625, '杭锦旗', 'H', '108.74241293879', '39.838815768815', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150626, '乌审旗', 'W', '108.82443496914', '38.610026521177', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150627, '伊金霍洛旗', 'Y', '109.78744317924', '39.614482313949', 150600, 3, 'tr_0 tr_150000 tr_150600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150702, '海拉尔区', 'H', '119.74246537006', '49.218215799363', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150703, '扎赉诺尔区', 'Z', '117.69453227349', '49.467770183628', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150721, '阿荣旗', 'A', '123.46544000531', '48.131971245042', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150722, '莫力达瓦达斡尔族自治旗', 'M', '124.52557642071', '48.482896292115', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150723, '鄂伦春自治旗', 'E', '123.73234507742', '50.597947928064', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150724, '鄂温克族自治旗', 'E', '119.76135125527', '49.15304476395', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150725, '陈巴尔虎旗', 'C', '119.43046248677', '49.334914288885', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150726, '新巴尔虎左旗', 'X', '118.27660837276', '48.223786760037', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150727, '新巴尔虎右旗', 'X', '116.83063240352', '48.677053599089', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150781, '满洲里市', 'M', '117.38543585768', '49.604098854866', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150782, '牙克石市', 'Y', '120.7183468371', '49.292023693206', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150783, '扎兰屯市', 'Z', '122.74445371486', '48.01995552011', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150784, '额尔古纳市', 'E', '120.18663369726', '50.248131758636', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150785, '根河市', 'G', '121.52758526594', '50.786140434318', 150700, 3, 'tr_0 tr_150000 tr_150700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150802, '临河区', 'L', '107.36953379568', '40.75668072584', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150821, '五原县', 'W', '108.2734913541', '41.094454821479', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150822, '磴口县', 'D', '107.01452247', '40.336470177103', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150823, '乌拉特前旗', 'W', '108.6586151381', '40.742103512928', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150824, '乌拉特中旗', 'W', '108.51951244005', '41.593346263746', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150825, '乌拉特后旗', 'W', '107.08154612207', '41.089422269258', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150826, '杭锦后旗', 'H', '107.15737244949', '40.892179419823', 150800, 3, 'tr_0 tr_150000 tr_150800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150902, '集宁区', 'J', '113.12058699942', '41.041146171787', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150921, '卓资县', 'Z', '112.5844095507', '40.900291837834', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150922, '化德县', 'H', '114.0164087845', '41.909602587109', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150923, '商都县', 'S', '113.58463922926', '41.567566637224', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150924, '兴和县', 'X', '113.84057886567', '40.879341798933', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150925, '凉城县', 'L', '112.51060018864', '40.5371631252', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150926, '察哈尔右翼前旗', 'C', '113.22160531673', '40.791267302593', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150927, '察哈尔右翼中旗', 'C', '112.64258040196', '41.283272943291', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150928, '察哈尔右翼后旗', 'C', '113.19853090242', '41.441770999655', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150929, '四子王旗', 'S', '111.71241927182', '41.539353349915', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(150981, '丰镇市', 'F', '113.11660121788', '40.441804808844', 150900, 3, 'tr_0 tr_150000 tr_150900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152201, '乌兰浩特市', 'W', '122.09962235198', '46.078654343582', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152202, '阿尔山市', 'A', '119.95065315166', '47.18305415375', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152221, '科尔沁右翼前旗', 'K', '121.9645531355', '46.082648853819', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152222, '科尔沁右翼中旗', 'K', '121.48354781458', '45.066470993428', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152223, '扎赉特旗', 'Z', '122.90644442883', '46.729189539358', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152224, '突泉县', 'T', '121.60054536997', '45.387830342585', 152200, 3, 'tr_0 tr_150000 tr_152200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152501, '二连浩特市', 'E', '111.95836319333', '43.648800184052', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152502, '锡林浩特市', 'X', '116.09361388474', '43.93833380136', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152522, '阿巴嘎旗', 'A', '114.95736709772', '44.028101587023', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152523, '苏尼特左旗', 'S', '113.67347993742', '43.865553657792', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152524, '苏尼特右旗', 'S', '112.64856904548', '42.747368922463', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152525, '东乌珠穆沁旗', 'D', '116.97850435996', '45.515743305312', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152526, '西乌珠穆沁旗', 'X', '117.61637700896', '44.593802912007', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152527, '太仆寺旗', 'T', '115.29053531645', '41.882291746043', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152528, '镶黄旗', 'X', '113.85450538582', '42.237661285279', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152529, '正镶白旗', 'Z', '115.03662171828', '42.292605429249', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152530, '正蓝旗', 'Z', '115.99860388383', '42.247118844188', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152531, '多伦县', 'D', '116.49250878204', '42.208920864211', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152571, '乌拉盖管委会', 'W', '114.09790153324', '42.80523252057', 152500, 3, 'tr_0 tr_150000 tr_152500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152921, '阿拉善左旗', 'A', '105.67259866528', '38.839094137436', 152900, 3, 'tr_0 tr_150000 tr_152900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152922, '阿拉善右旗', 'A', '101.67346389594', '39.222240969855', 152900, 3, 'tr_0 tr_150000 tr_152900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152923, '额济纳旗', 'E', '101.06240334058', '41.960297611813', 152900, 3, 'tr_0 tr_150000 tr_152900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(152971, '内蒙古阿拉善经济开发区', 'N', '105.77197191571', '40.314622117574', 152900, 3, 'tr_0 tr_150000 tr_152900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210102, '和平区', 'H', '123.42664426615', '41.795236052902', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210103, '沈河区', 'S', '123.46546103538', '41.802274138805', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210104, '大东区', 'D', '123.47640473208', '41.811425174494', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210105, '皇姑区', 'H', '123.43162078885', '41.826042120277', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210106, '铁西区', 'T', '123.38343595078', '41.809037832217', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210111, '苏家屯区', 'S', '123.35043463177', '41.671253644959', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210112, '浑南区', 'H', '123.45598993089', '41.720915668889', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210113, '沈北新区', 'S', '123.53360460492', '42.058914115763', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210114, '于洪区', 'Y', '123.31463302499', '41.799668255615', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210115, '辽中区', 'L', '122.77237835983', '41.523149081842', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210123, '康平县', 'K', '123.33751124938', '42.749925495719', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210124, '法库县', 'F', '123.41462107572', '42.509606549903', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210181, '新民市', 'X', '122.87539513741', '42.007109320665', 210100, 3, 'tr_0 tr_210000 tr_210100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210202, '中山区', 'Z', '121.65154739367', '38.924511115496', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210203, '西岗区', 'X', '121.61862512554', '38.920472689273', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210204, '沙河口区', 'S', '121.59450670057', '38.913544290956', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210211, '甘井子区', 'G', '121.5315189555', '38.958002162932', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210212, '旅顺口区', 'L', '121.26859688019', '38.856832222859', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210213, '金州区', 'J', '121.78943558267', '39.056432991661', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210214, '普兰店区', 'P', '121.94645983497', '39.398089145183', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210224, '长海县', 'Z', '122.59462651637', '39.278270217167', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210281, '瓦房店市', 'W', '121.98563754334', '39.632740747388', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210283, '庄河市', 'Z', '122.97449548263', '39.686956078878', 210200, 3, 'tr_0 tr_210000 tr_210200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210302, '铁东区', 'T', '122.99739966805', '41.096331870506', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210303, '铁西区', 'T', '122.97549026615', '41.125475259583', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210304, '立山区', 'L', '123.03548413862', '41.156116121102', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210311, '千山区', 'Q', '122.96757421833', '41.080938608935', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210321, '台安县', 'T', '122.44255004099', '41.418590371099', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210323, '岫岩满族自治县', 'X', '123.28754677827', '40.295892396362', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210381, '海城市', 'H', '122.69156940124', '40.887633947097', 210300, 3, 'tr_0 tr_210000 tr_210300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210402, '新抚区', 'X', '123.91958231814', '41.867805858593', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210403, '东洲区', 'D', '124.04554972353', '41.859190936634', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210404, '望花区', 'W', '123.790604152', '41.859030362749', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210411, '顺城区', 'S', '123.95141404338', '41.889163788467', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210421, '抚顺县', 'F', '123.92159012079', '41.887037475382', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210422, '新宾满族自治县', 'X', '125.04635620406', '41.739968775071', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210423, '清原满族自治县', 'Q', '124.93036025933', '42.106760992634', 210400, 3, 'tr_0 tr_210000 tr_210400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210502, '平山区', 'P', '123.77461422409', '41.301604181774', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210503, '溪湖区', 'X', '123.77461054104', '41.334802931364', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210504, '明山区', 'M', '123.82347449807', '41.314939368877', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210505, '南芬区', 'N', '123.75146713686', '41.10709572322', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210521, '本溪满族自治县', 'B', '124.12758486914', '41.307902881353', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210522, '桓仁满族自治县', 'H', '125.36754435102', '41.27292530103', 210500, 3, 'tr_0 tr_210000 tr_210500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210602, '元宝区', 'Y', '124.40258403322', '40.142251463139', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210603, '振兴区', 'Z', '124.36657851109', '40.110719472216', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210604, '振安区', 'Z', '124.43438692285', '40.164697025661', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210624, '宽甸满族自治县', 'K', '124.79042662868', '40.73755320049', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210681, '东港市', 'D', '124.15961035888', '39.867716187286', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210682, '凤城市', 'F', '124.07242172439', '40.459180482456', 210600, 3, 'tr_0 tr_210000 tr_210600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210702, '古塔区', 'G', '121.13458496929', '41.122900925898', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210703, '凌河区', 'L', '121.15759003442', '41.120690614472', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210711, '太和区', 'T', '121.1104532494', '41.115109307132', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210726, '黑山县', 'H', '122.13055703906', '41.671592983776', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210727, '义县', 'Y', '121.24556854895', '41.538938862271', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210781, '凌海市', 'L', '121.36253879584', '41.166487628588', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210782, '北镇市', 'B', '121.78344729848', '41.594428096803', 210700, 3, 'tr_0 tr_210000 tr_210700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210802, '站前区', 'Z', '122.26543743173', '40.678764125936', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210803, '西市区', 'X', '122.21358238684', '40.672110926311', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210804, '鲅鱼圈区', 'B', '122.12757349697', '40.232339850773', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210811, '老边区', 'L', '122.38643918392', '40.686383619803', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210881, '盖州市', 'G', '122.35559128288', '40.406167457268', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210882, '大石桥市', 'D', '122.5153795314', '40.650802164815', 210800, 3, 'tr_0 tr_210000 tr_210800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210902, '海州区', 'H', '121.66943571061', '42.023734789385', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210903, '新邱区', 'X', '121.79936338568', '42.093934514765', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210904, '太平区', 'T', '121.68538413681', '42.016967854141', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210905, '清河门区', 'Q', '121.42247894964', '41.789318551009', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210911, '细河区', 'X', '121.68639230508', '42.03187124588', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210921, '阜新蒙古族自治县', 'F', '121.76357399585', '42.071368153837', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(210922, '彰武县', 'Z', '122.54544932021', '42.392706534364', 210900, 3, 'tr_0 tr_210000 tr_210900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211002, '白塔区', 'B', '123.18060844799', '41.275845361792', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211003, '文圣区', 'W', '123.19160469557', '41.268438007815', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211004, '宏伟区', 'H', '123.20358018598', '41.223368108445', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211005, '弓长岭区', 'G', '123.42661543055', '41.157327042722', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211011, '太子河区', 'T', '123.188604445', '41.259226178044', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211021, '辽阳县', 'L', '123.1124212208', '41.211678771808', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211081, '灯塔市', 'D', '123.34546215145', '41.432474125926', 211000, 3, 'tr_0 tr_210000 tr_211000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211102, '双台子区', 'S', '122.04639299922', '41.206071617512', 211100, 3, 'tr_0 tr_210000 tr_211100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211103, '兴隆台区', 'X', '121.96962911034', '41.155830887559', 211100, 3, 'tr_0 tr_210000 tr_211100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211104, '大洼区', 'D', '122.08855478867', '41.00817878896', 211100, 3, 'tr_0 tr_210000 tr_211100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211122, '盘山县', 'P', '122.00356035522', '41.248263682582', 211100, 3, 'tr_0 tr_210000 tr_211100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211202, '银州区', 'Y', '123.8483863963', '42.292573681442', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211204, '清河区', 'Q', '124.16556298034', '42.552494793453', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211221, '铁岭县', 'T', '123.7353723767', '42.229225608048', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211223, '西丰县', 'X', '124.73361509331', '42.744014442436', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211224, '昌图县', 'C', '124.11750067115', '42.792178371844', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211281, '调兵山市', 'D', '123.57350868313', '42.473738012058', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211282, '开原市', 'K', '124.04456886375', '42.552079074779', 211200, 3, 'tr_0 tr_210000 tr_211200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211302, '双塔区', 'S', '120.46048690274', '41.571779500856', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211303, '龙城区', 'L', '120.4435668693', '41.59846852305', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211321, '朝阳县', 'C', '120.25939061432', '41.241075720873', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211322, '建平县', 'J', '119.64938035777', '41.409455511027', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211324, '喀喇沁左翼蒙古族自治县', 'K', '119.74741405502', '41.133689119828', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211381, '北票市', 'B', '120.77762773422', '41.80648256895', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211382, '凌源市', 'L', '119.40735807879', '41.251651297148', 211300, 3, 'tr_0 tr_210000 tr_211300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211402, '连山区', 'L', '120.87648167423', '40.780893808442', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211403, '龙港区', 'L', '120.90062076024', '40.741056601241', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211404, '南票区', 'N', '120.75649312082', '41.113097595823', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211421, '绥中县', 'S', '120.35042453538', '40.331843475397', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211422, '建昌县', 'J', '119.84359526665', '40.830379953809', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(211481, '兴城市', 'X', '120.76455846701', '40.616555664044', 211400, 3, 'tr_0 tr_210000 tr_211400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220102, '南关区', 'N', '125.35660981703', '43.869873025193', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220103, '宽城区', 'K', '125.33462450832', '43.949502239804', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220104, '朝阳区', 'C', '125.29540125585', '43.840641474962', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220105, '二道区', 'E', '125.38046755375', '43.871276524271', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220106, '绿园区', 'L', '125.26244260635', '43.886810403937', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220112, '双阳区', 'S', '125.67144793217', '43.531091309119', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220113, '九台区', 'J', '125.84556442307', '44.157791853861', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220122, '农安县', 'N', '125.19148410666', '44.438903951261', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220171, '长春经济技术开发区', 'Z', '125.37014719124', '43.866004586928', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220172, '长春净月高新技术产业开发区', 'Z', '125.26127292275', '43.823034492758', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220173, '长春高新技术产业开发区', 'Z', '125.26127292275', '43.823034492758', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220174, '长春汽车经济技术开发区', 'Z', '125.33060207591', '43.821953501043', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220182, '榆树市', 'Y', '126.53960936347', '44.845439727693', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220183, '德惠市', 'D', '125.73451517728', '44.527161066608', 220100, 3, 'tr_0 tr_220000 tr_220100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220202, '昌邑区', 'C', '126.58144866124', '43.887992474736', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220203, '龙潭区', 'L', '126.56854459242', '43.91634255363', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220204, '船营区', 'C', '126.54764973677', '43.83992740229', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220211, '丰满区', 'F', '126.56857046362', '43.827151576836', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220221, '永吉县', 'Y', '126.50441572986', '43.678720676989', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220271, '吉林经济开发区', 'J', '126.55563450495', '43.843567834579', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220272, '吉林高新技术产业开发区', 'J', '126.55091570611', '43.822448990547', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220273, '吉林中国新加坡食品区', 'J', '126.55563450495', '43.843567834579', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220281, '蛟河市', 'J', '127.35148018677', '43.730003870507', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220282, '桦甸市', 'H', '126.75248423373', '42.977982779881', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220283, '舒兰市', 'S', '126.97137703226', '44.412270028324', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220284, '磐石市', 'P', '126.06661629889', '42.951817500114', 220200, 3, 'tr_0 tr_220000 tr_220200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220302, '铁西区', 'T', '124.35246676034', '43.152575391803', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220303, '铁东区', 'T', '124.4164827059', '43.167993993185', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220322, '梨树县', 'L', '124.3424012471', '43.313345515553', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220323, '伊通满族自治县', 'Y', '125.31148460754', '43.351103666821', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220381, '公主岭市', 'G', '124.82944866071', '43.510832663153', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220382, '双辽市', 'S', '123.50943776128', '43.524527382171', 220300, 3, 'tr_0 tr_220000 tr_220300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220402, '龙山区', 'L', '125.14345242969', '42.907634012133', 220400, 3, 'tr_0 tr_220000 tr_220400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220403, '西安区', 'X', '125.15537330313', '42.933308420625', 220400, 3, 'tr_0 tr_220000 tr_220400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220421, '东丰县', 'D', '125.53737790091', '42.683310778553', 220400, 3, 'tr_0 tr_220000 tr_220400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220422, '东辽县', 'D', '124.99758944369', '42.931879101776', 220400, 3, 'tr_0 tr_220000 tr_220400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220502, '东昌区', 'D', '125.93359459016', '41.70840538484', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220503, '二道江区', 'E', '126.0495917027', '41.779966174493', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220521, '通化县', 'T', '125.76539191393', '41.685682238068', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220523, '辉南县', 'H', '126.05358125713', '42.690699881882', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220524, '柳河县', 'L', '125.75142398189', '42.290871215056', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220581, '梅河口市', 'M', '125.71760780995', '42.544883890284', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220582, '集安市', 'J', '126.199577372', '41.131299724033', 220500, 3, 'tr_0 tr_220000 tr_220500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220602, '浑江区', 'H', '126.42361952721', '41.95042372822', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220605, '江源区', 'J', '126.59739097896', '42.062939372081', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220621, '抚松县', 'F', '127.45537119527', '42.227335272553', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220622, '靖宇县', 'J', '126.81949899257', '42.394765734578', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220623, '长白朝鲜族自治县', 'Z', '128.20758420219', '41.425895812594', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220681, '临江市', 'L', '126.9245815135', '41.817678643992', 220600, 3, 'tr_0 tr_220000 tr_220600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220702, '宁江区', 'N', '124.82342254815', '45.178039438667', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220721, '前郭尔罗斯蒙古族自治县', 'Q', '124.83045556165', '45.123416092926', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220722, '长岭县', 'Z', '123.9743741034', '44.281638280052', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220723, '乾安县', 'G', '124.0475638046', '45.008434321605', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220771, '吉林松原经济开发区', 'J', '124.83148187569', '45.147404193414', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220781, '扶余市', 'F', '126.0566062111', '44.994168421151', 220700, 3, 'tr_0 tr_220000 tr_220700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220802, '洮北区', 'T', '122.85750977516', '45.627524686514', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220821, '镇赉县', 'Z', '123.20657575565', '45.853116635389', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220822, '通榆县', 'T', '123.09452077673', '44.818963735882', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220871, '吉林白城经济开发区', 'J', '122.81641245977', '45.642168989302', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220881, '洮南市', 'T', '122.7944676826', '45.341131872567', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(220882, '大安市', 'D', '124.29850428102', '45.513045149628', 220800, 3, 'tr_0 tr_220000 tr_220800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222401, '延吉市', 'Y', '129.52052013726', '42.91271700988', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222402, '图们市', 'T', '129.85038151375', '42.974283499075', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222403, '敦化市', 'D', '128.23861239315', '43.378291274517', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222404, '珲春市', 'H', '130.37261321858', '42.868515115192', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222405, '龙井市', 'L', '129.43263477701', '42.771534868349', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222406, '和龙市', 'H', '129.01738712621', '42.552322568432', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222424, '汪清县', 'W', '129.77760879625', '43.318450833865', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(222426, '安图县', 'A', '128.90544846814', '43.117916954912', 222400, 3, 'tr_0 tr_220000 tr_222400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230102, '道里区', 'D', '126.62343158837', '45.761844478815', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230103, '南岗区', 'N', '126.67563849952', '45.765866163758', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230104, '道外区', 'D', '126.65560404089', '45.797776220434', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230108, '平房区', 'P', '126.54161509032', '45.808825827952', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230109, '松北区', 'S', '126.51648256825', '45.808592561429', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230110, '香坊区', 'X', '126.66962434413', '45.713619645389', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230111, '呼兰区', 'H', '126.5943989831', '45.895209780863', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230112, '阿城区', 'A', '126.96435649552', '45.554275304352', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230113, '双城区', 'S', '126.31962313777', '45.388111522394', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230123, '依兰县', 'Y', '129.57451969721', '46.331260289052', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230124, '方正县', 'F', '128.83563368134', '45.857758440062', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230125, '宾县', 'B', '127.4734970145', '45.752465386742', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230126, '巴彦县', 'B', '127.4105479864', '46.091282657815', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230127, '木兰县', 'M', '128.05035620452', '45.956871319448', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230128, '通河县', 'T', '128.75241627584', '45.996392590921', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230129, '延寿县', 'Y', '128.33860582402', '45.457641195714', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230183, '尚志市', 'S', '128.01548820666', '45.215473941867', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230184, '五常市', 'W', '127.17352882965', '44.937842855774', 230100, 3, 'tr_0 tr_230000 tr_230100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230202, '龙沙区', 'L', '123.96437622285', '47.323576977429', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230203, '建华区', 'J', '123.96135010108', '47.360554871046', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230204, '铁锋区', 'T', '123.984415712', '47.347018863772', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230205, '昂昂溪区', 'A', '123.82940626913', '47.161332243626', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230206, '富拉尔基区', 'F', '123.63650980324', '47.215504082791', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230207, '碾子山区', 'N', '122.89436680108', '47.523236298133', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230208, '梅里斯达斡尔族区', 'M', '123.75954091741', '47.315549574077', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230221, '龙江县', 'L', '123.21153898342', '47.343605740151', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230223, '依安县', 'Y', '125.3124821661', '47.899483651368', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230224, '泰来县', 'T', '123.42362630925', '46.39782928518', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230225, '甘南县', 'G', '123.51248588182', '47.92688406951', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230227, '富裕县', 'F', '124.48054247906', '47.780228063275', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230229, '克山县', 'K', '125.88137832693', '48.043172360737', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230230, '克东县', 'K', '126.25538674804', '48.048244160483', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230231, '拜泉县', 'B', '126.10542147027', '47.601867301959', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230281, '讷河市', 'N', '124.8905490562', '48.490086593264', 230200, 3, 'tr_0 tr_230000 tr_230200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230302, '鸡冠区', 'J', '130.98763160852', '45.309806344312', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230303, '恒山区', 'H', '130.91138523344', '45.216971883154', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230304, '滴道区', 'D', '130.85058046059', '45.354433617216', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230305, '梨树区', 'L', '130.70339606719', '45.098241780981', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230306, '城子河区', 'C', '131.02770429868', '45.379689760283', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230307, '麻山区', 'M', '130.48453641613', '45.217934996767', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230321, '鸡东县', 'J', '131.13055848296', '45.266184560826', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230381, '虎林市', 'H', '132.94346566318', '45.768946912884', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230382, '密山市', 'M', '131.85353110655', '45.535640809748', 230300, 3, 'tr_0 tr_230000 tr_230300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230402, '向阳区', 'X', '130.30046804764', '47.348580889067', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230403, '工农区', 'G', '130.28161728617', '47.324430299458', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230404, '南山区', 'N', '130.29354031555', '47.321245938809', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230405, '兴安区', 'X', '130.24554573859', '47.258716269483', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230406, '东山区', 'D', '130.32336109407', '47.344987135573', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230407, '兴山区', 'X', '130.31736364716', '47.396045381282', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230421, '萝北县', 'L', '130.8354950365', '47.583422197029', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230422, '绥滨县', 'S', '131.85948651276', '47.295265458073', 230400, 3, 'tr_0 tr_230000 tr_230400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230502, '尖山区', 'J', '131.16534177061', '46.652585923812', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230503, '岭东区', 'L', '131.164376721', '46.464596047853', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230505, '四方台区', 'S', '131.345657378', '46.602012285083', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230506, '宝山区', 'B', '131.40737518857', '46.583598340241', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230521, '集贤县', 'J', '131.14743449942', '46.734517788557', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230522, '友谊县', 'Y', '131.8145948627', '46.772973223022', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230523, '宝清县', 'B', '132.20359411633', '46.332651823572', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230524, '饶河县', 'R', '134.02046893233', '46.804182744162', 230500, 3, 'tr_0 tr_230000 tr_230500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230602, '萨尔图区', 'S', '125.13351006443', '46.638936435554', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230603, '龙凤区', 'L', '125.14047256095', '46.567678067125', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230604, '让胡路区', 'R', '124.87759881447', '46.658078458609', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230605, '红岗区', 'H', '124.8974774171', '46.404313108628', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230606, '大同区', 'D', '124.81937675979', '46.045583951311', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230621, '肇州县', 'Z', '125.2753682248', '45.705107986871', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230622, '肇源县', 'Z', '125.08457262601', '45.524152914206', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230623, '林甸县', 'L', '124.86965042766', '47.177234395243', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230624, '杜尔伯特蒙古族自治县', 'D', '124.44935879141', '46.868767758452', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230671, '大庆高新技术产业开发区', 'D', '125.15778147083', '46.581298438495', 230600, 3, 'tr_0 tr_230000 tr_230600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230702, '伊春区', 'Y', '128.91345891818', '47.733954439001', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230703, '南岔区', 'N', '129.28957179961', '47.143749913595', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230704, '友好区', 'Y', '128.84257946937', '47.846436100332', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230705, '西林区', 'X', '129.31959406806', '47.486393100686', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230706, '翠峦区', 'C', '128.67648152295', '47.732893980201', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230707, '新青区', 'X', '129.54064675236', '48.296134660851', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230708, '美溪区', 'M', '129.13536777746', '47.64134415168', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230709, '金山屯区', 'J', '129.43563861113', '47.418759014597', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230710, '五营区', 'W', '129.25134952898', '48.11427128362', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230711, '乌马河区', 'W', '128.80554637557', '47.73361851021', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230712, '汤旺河区', 'T', '129.57747422403', '48.460614389845', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230713, '带岭区', 'D', '129.02742523145', '47.034571951137', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230714, '乌伊岭区', 'W', '129.44457666112', '48.596169129772', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230715, '红星区', 'H', '129.39750706935', '48.245480405275', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230716, '上甘岭区', 'S', '129.03043733966', '47.980913793769', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230722, '嘉荫县', 'J', '130.41055547772', '48.894983469564', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230781, '铁力市', 'T', '128.03836490393', '46.992948620259', 230700, 3, 'tr_0 tr_230000 tr_230700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230803, '向阳区', 'X', '130.37261186145', '46.813511816781', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230804, '前进区', 'Q', '130.3816482759', '46.819626508482', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230805, '东风区', 'D', '130.41056077772', '46.828385151991', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230811, '郊区', 'J', '130.32735909257', '46.805689990858', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230822, '桦南县', 'H', '130.56038502153', '46.24507747688', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230826, '桦川县', 'H', '130.72554944886', '47.028816852926', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230828, '汤原县', 'T', '129.91164504155', '46.735326720461', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230881, '同江市', 'T', '132.51750949205', '47.647980676666', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230882, '富锦市', 'F', '132.04453879528', '47.255932571848', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230883, '抚远市', 'F', '134.31448962575', '48.370944696273', 230800, 3, 'tr_0 tr_230000 tr_230800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230902, '新兴区', 'X', '130.93837086995', '45.822310328543', 230900, 3, 'tr_0 tr_230000 tr_230900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230903, '桃山区', 'T', '131.02644424554', '45.771799915696', 230900, 3, 'tr_0 tr_230000 tr_230900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230904, '茄子河区', 'J', '131.0744805937', '45.791238180152', 230900, 3, 'tr_0 tr_230000 tr_230900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(230921, '勃利县', 'B', '130.59853255314', '45.760964313167', 230900, 3, 'tr_0 tr_230000 tr_230900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231002, '东安区', 'D', '129.63347765344', '44.587460377571', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231003, '阳明区', 'Y', '129.64252736281', '44.601775026515', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231004, '爱民区', 'A', '129.59836369953', '44.602350339442', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231005, '西安区', 'X', '129.62241286515', '44.583861081842', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231025, '林口县', 'L', '130.28757880086', '45.28412885062', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231071, '牡丹江经济技术开发区', 'M', '129.63953977835', '44.556245708986', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231081, '绥芬河市', 'S', '131.15739222567', '44.418154372388', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231083, '海林市', 'H', '129.38742683358', '44.599871973195', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231084, '宁安市', 'N', '129.48936798014', '44.3469835775', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231085, '穆棱市', 'M', '130.53055850352', '44.924784589588', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231086, '东宁市', 'D', '131.13154357445', '44.096101486248', 231000, 3, 'tr_0 tr_230000 tr_231000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231102, '爱辉区', 'A', '127.50663227086', '50.257709616452', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231121, '嫩江县', 'N', '125.22763469543', '49.191320184756', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231123, '逊克县', 'X', '128.48558459529', '49.5694914357', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231124, '孙吴县', 'S', '127.34238770837', '49.431450606859', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231181, '北安市', 'B', '126.49737974226', '48.247419532219', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231182, '五大连池市', 'W', '126.21155518831', '48.522609551763', 231100, 3, 'tr_0 tr_230000 tr_231100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231202, '北林区', 'B', '126.99144894055', '46.643492672111', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231221, '望奎县', 'W', '126.49238489413', '46.839167601749', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231222, '兰西县', 'L', '126.29461952255', '46.258095172245', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231223, '青冈县', 'Q', '126.10048887472', '46.71068498305', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231224, '庆安县', 'Q', '127.5146121882', '46.885744465245', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231225, '明水县', 'M', '125.91248269419', '47.179483374941', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231226, '绥棱县', 'S', '127.12051514063', '47.242515793854', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231281, '安达市', 'A', '125.34862234422', '46.425719232144', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231282, '肇东市', 'Z', '125.96853740717', '46.056938289303', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(231283, '海伦市', 'H', '126.93650857556', '47.456903841096', 231200, 3, 'tr_0 tr_230000 tr_231200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232701, '漠河市', 'M', '122.5454208342', '52.978303678377', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232721, '呼玛县', 'H', '126.65964991907', '51.73094674724', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232722, '塔河县', 'T', '124.71651251449', '52.340305081113', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232761, '加格达奇区', 'J', '124.15292785448', '50.420025955028', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232762, '松岭区', 'S', '124.15292785448', '50.420025955028', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232763, '新林区', 'X', '124.53914092375', '51.801225110533', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(232764, '呼中区', 'H', '123.58143136869', '52.037468814622', 232700, 3, 'tr_0 tr_230000 tr_232700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310101, '黄浦区', 'H', '121.49158559252', '31.237247152064', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310104, '徐汇区', 'X', '121.44339635276', '31.194556772823', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310105, '长宁区', 'Z', '121.43045437545', '31.226847968225', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310106, '静安区', 'J', '121.45343177277', '31.233844930402', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310107, '普陀区', 'P', '112.85530302042', '35.520558754673', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310109, '虹口区', 'H', '121.51158645453', '31.269746698931', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310110, '杨浦区', 'Y', '121.53251993733', '31.265524144657', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310112, '闵行区', 'M', '121.38861193361', '31.118842580087', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310113, '宝山区', 'B', '131.40737518857', '46.583598340241', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310114, '嘉定区', 'J', '121.27259505835', '31.380155339677', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310115, '浦东新区', 'P', '121.55045460683', '31.227348292436', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310116, '金山区', 'J', '121.34848004512', '30.74785237657', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310117, '松江区', 'S', '121.23447959624', '31.037135176464', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310118, '青浦区', 'Q', '121.13055310467', '31.155454317981', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310120, '奉贤区', 'F', '121.48050373643', '30.923720110285', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(310151, '崇明区', 'C', '121.40355686272', '31.628569984404', 310100, 3, 'tr_0 tr_310000 tr_310100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320102, '玄武区', 'X', '118.80441263575', '32.054756682949', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320104, '秦淮区', 'Q', '118.80040736097', '32.045138606405', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320105, '建邺区', 'J', '118.73856944695', '32.009369695446', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320106, '鼓楼区', 'G', '118.77651899204', '32.072405160557', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320111, '浦口区', 'P', '118.63460405875', '32.064679277923', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320113, '栖霞区', 'Q', '118.91542298491', '32.10260020783', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320114, '雨花台区', 'Y', '118.78544536406', '31.997858805466', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320115, '江宁区', 'J', '118.84656705909', '31.958526869177', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320116, '六合区', 'L', '118.82747132971', '32.32866604102', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320117, '溧水区', 'L', '119.03440390903', '31.657283696314', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320118, '高淳区', 'G', '118.89849765147', '31.333639123905', 320100, 3, 'tr_0 tr_320000 tr_320100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320205, '锡山区', 'X', '120.36342571103', '31.594761632814', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320206, '惠山区', 'H', '120.30459559335', '31.686741337275', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320211, '滨湖区', 'B', '120.29154752616', '31.534639699974', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320213, '梁溪区', 'L', '120.30959951436', '31.571645024135', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320214, '新吴区', 'X', '120.37039647195', '31.554850239842', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320281, '江阴市', 'J', '120.29156800752', '31.926044909769', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320282, '宜兴市', 'Y', '119.83160603216', '31.342956624268', 320200, 3, 'tr_0 tr_320000 tr_320200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320302, '鼓楼区', 'G', '117.19257874733', '34.293760084221', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320303, '云龙区', 'Y', '117.2584239124', '34.259086691031', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320305, '贾汪区', 'J', '117.46943039703', '34.441620400617', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320311, '泉山区', 'Q', '117.20059046468', '34.249942871606', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320312, '铜山区', 'T', '117.17556960199', '34.186100449885', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320321, '丰县', 'F', '116.60258246804', '34.699769765634', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320322, '沛县', 'P', '116.9425856239', '34.765151955415', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320324, '睢宁县', 'S', '117.94743277245', '33.918789417818', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320371, '徐州经济技术开发区', 'X', '117.28574962221', '34.272904039312', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320381, '新沂市', 'X', '118.36153652102', '34.375610954637', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320382, '邳州市', 'P', '117.96341066307', '34.339753160807', 320300, 3, 'tr_0 tr_320000 tr_320300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320402, '天宁区', 'T', '119.98046316025', '31.785570271253', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320404, '钟楼区', 'Z', '119.908462716', '31.807646657754', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320411, '新北区', 'X', '119.97751429276', '31.836323947624', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320412, '武进区', 'W', '119.94861167229', '31.706446611742', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320413, '金坛区', 'J', '119.60457090266', '31.72889303001', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320481, '溧阳市', 'L', '119.49150603896', '31.422102292159', 320400, 3, 'tr_0 tr_320000 tr_320400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320505, '虎丘区', 'H', '120.57847178571', '31.301932876554', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320506, '吴中区', 'W', '120.63850751921', '31.268261445846', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320507, '相城区', 'X', '120.64856593584', '31.374689921493', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320508, '姑苏区', 'G', '120.6234549731', '31.341831300993', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320509, '吴江区', 'W', '120.65156717454', '31.144644190473', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320571, '苏州工业园区', 'S', '120.82848521083', '31.309610913062', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320581, '常熟市', 'C', '120.75949588665', '31.659538276741', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320582, '张家港市', 'Z', '120.56155363871', '31.88114053634', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320583, '昆山市', 'K', '120.98745249795', '31.390863425082', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320585, '太仓市', 'T', '121.1355952935', '31.464599352978', 320500, 3, 'tr_0 tr_320000 tr_320500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320602, '崇川区', 'C', '120.86342022229', '32.015923029631', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320611, '港闸区', 'G', '120.82445235808', '32.037345124875', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320612, '通州区', 'T', '121.08142549498', '32.070355739676', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320623, '如东县', 'R', '121.19243791024', '32.335872886155', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320671, '南通经济技术开发区', 'N', '120.90159173866', '31.986549431201', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320681, '启东市', 'Q', '121.66347374677', '31.814232849643', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320682, '如皋市', 'R', '120.57946558109', '32.377851486109', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320684, '海门市', 'H', '121.18843649817', '31.87361172603', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320685, '海安市', 'H', '120.47443309578', '32.53919574424', 320600, 3, 'tr_0 tr_320000 tr_320600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320703, '连云区', 'L', '119.46701669742', '34.638921829102', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320706, '海州区', 'H', '119.16940808819', '34.577456118597', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320707, '赣榆区', 'G', '119.17943461497', '34.847682460846', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320722, '东海县', 'D', '118.75956509248', '34.547918627364', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320723, '灌云县', 'G', '119.24653354504', '34.288616060258', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320724, '灌南县', 'G', '119.3225381861', '34.09259130777', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320771, '连云港经济技术开发区', 'L', '119.35457059279', '34.70740063931', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320772, '连云港高新技术产业开发区', 'L', '119.22862133317', '34.602249525267', 320700, 3, 'tr_0 tr_320000 tr_320700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320803, '淮安区', 'H', '119.14746320322', '33.508999838208', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320804, '淮阴区', 'H', '119.04142174116', '33.638150424768', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320812, '清江浦区', 'Q', '119.03241362334', '33.558562240066', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320813, '洪泽区', 'H', '118.8795836493', '33.29962468147', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320826, '涟水县', 'L', '119.26644843921', '33.7870787079', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320830, '盱眙县', 'X', '118.55144127024', '33.01825474166', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320831, '金湖县', 'J', '119.02646908663', '33.031283826757', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320871, '淮安经济技术开发区', 'H', '119.13289044209', '33.610236869931', 320800, 3, 'tr_0 tr_320000 tr_320800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320902, '亭湖区', 'T', '120.20457816804', '33.395893486907', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320903, '盐都区', 'Y', '120.16050325734', '33.344020315599', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320904, '大丰区', 'D', '120.50743881649', '33.20475984971', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320921, '响水县', 'X', '119.58460112202', '34.20474300276', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320922, '滨海县', 'B', '119.82762105909', '33.995646547467', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320923, '阜宁县', 'F', '119.80958074885', '33.765078727087', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320924, '射阳县', 'S', '120.26444564892', '33.78101359213', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320925, '建湖县', 'J', '119.80553127745', '33.469832978385', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320971, '盐城经济技术开发区', 'Y', '120.16754426576', '33.355100917626', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(320981, '东台市', 'D', '120.32653706475', '32.872716312488', 320900, 3, 'tr_0 tr_320000 tr_320900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321002, '广陵区', 'G', '119.43850484608', '32.40066115972', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321003, '邗江区', 'H', '119.40438513671', '32.38275135526', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321012, '江都区', 'J', '119.57660296908', '32.440294506243', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321023, '宝应县', 'B', '119.36555570138', '33.247205461148', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321071, '扬州经济技术开发区', 'Y', '119.41941890823', '32.40067693609', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321081, '仪征市', 'Y', '119.19146705795', '32.278090483161', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321084, '高邮市', 'G', '119.46561561654', '32.787147020528', 321000, 3, 'tr_0 tr_320000 tr_321000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321102, '京口区', 'J', '119.47560369584', '32.203785483528', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321111, '润州区', 'R', '119.41844047387', '32.201494843152', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321112, '丹徒区', 'D', '119.44050079109', '32.13792039565', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321171, '镇江新区', 'Z', '119.67618104484', '32.168646770866', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321181, '丹阳市', 'D', '119.61250060471', '32.01592027417', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321182, '扬中市', 'Y', '119.80351961209', '32.242967194122', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321183, '句容市', 'J', '119.1754332029', '31.950923490521', 321100, 3, 'tr_0 tr_320000 tr_321100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321202, '海陵区', 'H', '119.9255249512', '32.496731549227', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321203, '高港区', 'G', '119.88842098109', '32.32486247444', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321204, '姜堰区', 'J', '120.13339832587', '32.515233674759', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321271, '泰州医药高新技术产业开发区', 'T', '119.91593203649', '32.502484457877', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321281, '兴化市', 'X', '119.85751406137', '32.917824213889', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321282, '靖江市', 'J', '120.28353203592', '31.988170075211', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321283, '泰兴市', 'T', '120.05859939046', '32.177474023712', 321200, 3, 'tr_0 tr_320000 tr_321200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321302, '宿城区', 'S', '118.24956705107', '33.968677630731', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321311, '宿豫区', 'S', '118.33640094471', '33.954804396327', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321322, '沭阳县', 'S', '118.81041906571', '34.117454209479', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321323, '泗阳县', 'S', '118.70946596538', '33.728328313047', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321324, '泗洪县', 'S', '118.22241594669', '33.465732594595', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(321371, '宿迁经济技术开发区', 'S', '118.27387299732', '33.898354594037', 321300, 3, 'tr_0 tr_320000 tr_321300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330102, '上城区', 'S', '120.17557880007', '30.248398420426', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330103, '下城区', 'X', '120.18760693119', '30.286744052562', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330104, '江干区', 'J', '120.21153877811', '30.263310567012', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330105, '拱墅区', 'G', '120.14844700926', '30.32464256663', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330106, '西湖区', 'X', '120.13643801205', '30.265916325589', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330108, '滨江区', 'B', '120.21847118139', '30.214332950144', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330109, '萧山区', 'X', '120.27047058397', '30.187511222214', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330110, '余杭区', 'Y', '120.30659216718', '30.424739268745', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330111, '富阳区', 'F', '119.96655568418', '30.054722967304', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330112, '临安区', 'L', '119.73151737122', '30.239805598054', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330122, '桐庐县', 'T', '119.69759877583', '29.798584790143', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330127, '淳安县', 'C', '119.04839230601', '29.614950366034', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330182, '建德市', 'J', '119.28739807501', '29.481154026968', 330100, 3, 'tr_0 tr_330000 tr_330100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330203, '海曙区', 'H', '121.55740307254', '29.865720708366', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330205, '江北区', 'J', '121.56042128922', '29.892948379476', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330206, '北仑区', 'B', '121.85057621461', '29.904659359939', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330211, '镇海区', 'Z', '121.72251899132', '29.954884963349', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330212, '鄞州区', 'Y', '121.55542706991', '29.824206349996', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330213, '奉化区', 'F', '121.41352776719', '29.66114641278', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330225, '象山县', 'X', '121.87556392982', '29.482270653805', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330226, '宁海县', 'N', '121.43643177294', '29.294317441106', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330281, '余姚市', 'Y', '121.16058507482', '30.042734639571', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330282, '慈溪市', 'C', '121.27259613632', '30.17525661072', 330200, 3, 'tr_0 tr_330000 tr_330200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330302, '鹿城区', 'L', '120.66158649793', '28.020351607763', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330303, '龙湾区', 'L', '120.81946755397', '27.938652244916', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330304, '瓯海区', 'O', '120.62144724335', '27.972857351643', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330305, '洞头区', 'D', '121.16354856759', '27.841870324587', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330324, '永嘉县', 'Y', '120.68852407508', '28.156450332206', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330326, '平阳县', 'P', '120.57251537444', '27.667724401093', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330327, '苍南县', 'C', '120.43359512229', '27.523066788447', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330328, '文成县', 'W', '120.09748845652', '27.79321715229', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330329, '泰顺县', 'T', '119.72353725759', '27.562170559597', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330371, '温州经济技术开发区', 'W', '120.82366240355', '27.878919129203', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330381, '瑞安市', 'R', '120.66158218607', '27.783950736232', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330382, '乐清市', 'L', '120.99250185617', '28.118179995228', 330300, 3, 'tr_0 tr_330000 tr_330300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330402, '南湖区', 'N', '120.78961005175', '30.751546813315', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330411, '秀洲区', 'X', '120.71543705563', '30.770207214174', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330421, '嘉善县', 'J', '120.93251060584', '30.83712219382', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330424, '海盐县', 'H', '120.95244526273', '30.531872894538', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330481, '海宁市', 'H', '120.68656506738', '30.517923769776', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330482, '平湖市', 'P', '121.02257525525', '30.682240998058', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330483, '桐乡市', 'T', '120.57154315531', '30.63631118771', 330400, 3, 'tr_0 tr_330000 tr_330400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330502, '吴兴区', 'W', '120.1916046602', '30.862955454986', 330500, 3, 'tr_0 tr_330000 tr_330500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330503, '南浔区', 'N', '120.42460139422', '30.855242982243', 330500, 3, 'tr_0 tr_330000 tr_330500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330521, '德清县', 'D', '119.98346466845', '30.548628239139', 330500, 3, 'tr_0 tr_330000 tr_330500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330522, '长兴县', 'Z', '119.91749832197', '31.032579326835', 330500, 3, 'tr_0 tr_330000 tr_330500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330523, '安吉县', 'A', '119.68656337876', '30.644424794114', 330500, 3, 'tr_0 tr_330000 tr_330500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330602, '越城区', 'Y', '120.58843667181', '29.995309962798', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330603, '柯桥区', 'K', '120.45151103408', '30.07900360495', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330604, '上虞区', 'S', '120.87450989364', '30.038242967062', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330624, '新昌县', 'X', '120.91056965639', '29.50554107531', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330681, '诸暨市', 'Z', '120.25340833197', '29.714934649195', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330683, '嵊州市', 'S', '120.83743725739', '29.567326991294', 330600, 3, 'tr_0 tr_330000 tr_330600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330702, '婺城区', 'W', '119.57859260936', '29.091775438186', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330703, '金东区', 'J', '119.69958241405', '29.104765016118', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330723, '武义县', 'W', '119.82256555867', '28.89824378665', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330726, '浦江县', 'P', '119.8984360827', '29.458692851855', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330727, '磐安县', 'P', '120.45651305177', '29.060103175107', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330781, '兰溪市', 'L', '119.46659870554', '29.214044345079', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330782, '义乌市', 'Y', '120.08158099306', '29.31114987541', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330783, '东阳市', 'D', '120.24842192791', '29.295861065151', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330784, '永康市', 'Y', '120.05455071078', '28.894203967255', 330700, 3, 'tr_0 tr_330000 tr_330700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330802, '柯城区', 'K', '118.87758391504', '28.974203651128', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330803, '衢江区', 'Q', '118.9655390736', '28.986237907969', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330822, '常山县', 'C', '118.51755663118', '28.906997949113', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330824, '开化县', 'K', '118.42145932131', '29.143187521187', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330825, '龙游县', 'L', '119.17841825566', '29.034486553295', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330881, '江山市', 'J', '118.63358329793', '28.742868480118', 330800, 3, 'tr_0 tr_330000 tr_330800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330902, '定海区', 'D', '122.11360080392', '30.025462378363', 330900, 3, 'tr_0 tr_330000 tr_330900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330903, '普陀区', 'P', '122.33154416586', '29.976835696536', 330900, 3, 'tr_0 tr_330000 tr_330900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330921, '岱山县', 'D', '122.23260481449', '30.269655894035', 330900, 3, 'tr_0 tr_330000 tr_330900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(330922, '嵊泗县', 'S', '122.45758776506', '30.731273949024', 330900, 3, 'tr_0 tr_330000 tr_330900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331002, '椒江区', 'J', '121.44940797569', '28.679258224903', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331003, '黄岩区', 'H', '121.26856605116', '28.655333607551', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331004, '路桥区', 'L', '121.37157806769', '28.586946666726', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331022, '三门县', 'S', '121.40255379759', '29.110355206289', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331023, '天台县', 'T', '121.01355337629', '29.149514378149', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331024, '仙居县', 'X', '120.73543520575', '28.853225693258', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331081, '温岭市', 'W', '121.39258889458', '28.37765548985', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331082, '临海市', 'L', '121.15158529413', '28.864049329083', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331083, '玉环市', 'Y', '121.23851297084', '28.141862986829', 331000, 3, 'tr_0 tr_330000 tr_331000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331102, '莲都区', 'L', '119.91951913335', '28.451745135046', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331121, '青田县', 'Q', '120.296573349', '28.14548755633', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331122, '缙云县', 'J', '120.09747830566', '28.665214747164', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331123, '遂昌县', 'S', '119.28243538622', '28.59845467671', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331124, '松阳县', 'S', '119.48854377016', '28.455056404273', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331125, '云和县', 'Y', '119.57959736407', '28.121469507454', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331126, '庆元县', 'Q', '119.06948685498', '27.625431778354', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331127, '景宁畲族自治县', 'J', '119.64243033109', '27.979553966951', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(331181, '龙泉市', 'L', '119.14844476521', '28.080508725251', 331100, 3, 'tr_0 tr_330000 tr_331100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340102, '瑶海区', 'Y', '117.31558704454', '31.863786941657', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340103, '庐阳区', 'L', '117.27145913382', '31.884886695554', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340104, '蜀山区', 'S', '117.2664607823', '31.857378217104', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340111, '包河区', 'B', '117.31657625857', '31.799293467782', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340121, '长丰县', 'Z', '117.17356009256', '32.483722623763', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340122, '肥东县', 'F', '117.47540062528', '31.893890354487', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340123, '肥西县', 'F', '117.16455781372', '31.712962132717', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340124, '庐江县', 'L', '117.29357730192', '31.261327637478', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340171, '合肥高新技术产业开发区', 'H', '117.1837943471', '31.838528178293', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340172, '合肥经济技术开发区', 'H', '117.21475703093', '31.784661076762', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340173, '合肥新站高新技术产业开发区', 'H', '117.38386824707', '31.946175260915', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340181, '巢湖市', 'C', '117.89557620045', '31.629002428816', 340100, 3, 'tr_0 tr_340000 tr_340100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340202, '镜湖区', 'J', '118.39260630352', '31.345866595569', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340203, '弋江区', 'Y', '118.37957970583', '31.317566272497', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340207, '鸠江区', 'J', '118.39758848554', '31.375804519517', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340208, '三山区', 'S', '118.27460210698', '31.225280124269', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340221, '芜湖县', 'W', '118.58244251203', '31.141239223464', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340222, '繁昌县', 'F', '118.20542431831', '31.107958593586', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340223, '南陵县', 'N', '118.34041816695', '30.920260298683', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340225, '无为县', 'W', '117.90857854389', '31.308844155979', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340271, '芜湖经济技术开发区', 'W', '118.39582758127', '31.478017093937', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340272, '安徽芜湖长江大桥经济开发区', 'A', '118.37946121933', '31.391647770998', 340200, 3, 'tr_0 tr_340000 tr_340200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340302, '龙子湖区', 'L', '117.39951276393', '32.948644262929', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340303, '蚌山区', 'B', '117.37944120527', '32.923378770395', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340304, '禹会区', 'Y', '117.3484523601', '32.935309988858', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340311, '淮上区', 'H', '117.36638271774', '32.970547011885', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340321, '怀远县', 'H', '117.21150631391', '32.976003726624', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340322, '五河县', 'W', '117.88756088987', '33.132709462866', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340323, '固镇县', 'G', '117.32354764831', '33.323274297744', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340371, '蚌埠市高新技术开发区', 'B', '117.27641494698', '32.834931868561', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340372, '蚌埠市经济开发区', 'B', '117.20923836199', '32.962369404949', 340300, 3, 'tr_0 tr_340000 tr_340300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340402, '大通区', 'D', '117.05958317929', '32.637269959538', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340403, '田家庵区', 'T', '117.02344533676', '32.653323007096', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340404, '谢家集区', 'X', '116.86543887721', '32.606254588196', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340405, '八公山区', 'B', '116.84056434849', '32.637137318437', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340406, '潘集区', 'P', '116.84158096084', '32.777955491108', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340421, '凤台县', 'F', '116.71757320891', '32.715103905085', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340422, '寿县', 'S', '116.8055627726', '32.561546151201', 340400, 3, 'tr_0 tr_340000 tr_340400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340503, '花山区', 'H', '118.49960562875', '31.725472572001', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340504, '雨山区', 'Y', '118.50559705701', '31.687745482904', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340506, '博望区', 'B', '118.85155804451', '31.556645467065', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340521, '当涂县', 'D', '118.50460469891', '31.576649154711', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340522, '含山县', 'H', '118.10746203634', '31.740862208736', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340523, '和县', 'H', '118.35951254887', '31.748243815854', 340500, 3, 'tr_0 tr_340000 tr_340500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340602, '杜集区', 'D', '116.83461226601', '33.997285436391', 340600, 3, 'tr_0 tr_340000 tr_340600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340603, '相山区', 'X', '116.80052112276', '33.96582716177', 340600, 3, 'tr_0 tr_340000 tr_340600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340604, '烈山区', 'L', '116.9081817805', '33.84405351094', 340600, 3, 'tr_0 tr_340000 tr_340600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340621, '濉溪县', 'S', '116.77238942808', '33.921629194823', 340600, 3, 'tr_0 tr_340000 tr_340600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340705, '铜官区', 'T', '117.82145710265', '30.940386340633', 340700, 3, 'tr_0 tr_340000 tr_340700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340706, '义安区', 'Y', '117.79856800876', '30.958512099098', 340700, 3, 'tr_0 tr_340000 tr_340700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340711, '郊区', 'J', '117.80755007573', '30.897741483658', 340700, 3, 'tr_0 tr_340000 tr_340700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340722, '枞阳县', 'C', '117.22643695997', '30.705671267725', 340700, 3, 'tr_0 tr_340000 tr_340700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340802, '迎江区', 'Y', '117.09751448877', '30.517523291408', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340803, '大观区', 'D', '117.04053820417', '30.518231924651', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340811, '宜秀区', 'Y', '116.99344112425', '30.619675877796', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340822, '怀宁县', 'H', '116.83659258051', '30.739399674607', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340825, '太湖县', 'T', '116.31547630162', '30.460113290448', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340826, '宿松县', 'S', '116.13552369949', '30.159786861375', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340827, '望江县', 'W', '116.7005902941', '30.129968329229', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340828, '岳西县', 'Y', '116.36655539021', '30.855227714002', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340871, '安徽安庆经济开发区', 'A', '117.06360390492', '30.530956568043', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340881, '桐城市', 'T', '116.98046635878', '31.041969037674', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(340882, '潜山市', 'Q', '116.58761103892', '30.636755682399', 340800, 3, 'tr_0 tr_340000 tr_340800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341002, '屯溪区', 'T', '118.32141818077', '29.702143908546', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341003, '黄山区', 'H', '118.14760982484', '30.278650980188', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341004, '徽州区', 'H', '118.34343582847', '29.834221385317', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341021, '歙县', 'S', '118.42146012979', '29.866287675757', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341022, '休宁县', 'X', '118.20543014116', '29.795459004963', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341023, '黟县', 'Y', '117.94447724144', '29.931047330704', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341024, '祁门县', 'Q', '117.72339257754', '29.86034394808', 341000, 3, 'tr_0 tr_340000 tr_341000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341102, '琅琊区', 'L', '118.31244134015', '32.300867492599', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341103, '南谯区', 'N', '118.42348205204', '32.206131899264', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341122, '来安县', 'L', '118.4424124932', '32.458449762427', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341124, '全椒县', 'Q', '118.2805842827', '32.091939797603', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341125, '定远县', 'D', '117.70447068625', '32.537046613487', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341126, '凤阳县', 'F', '117.53858536874', '32.880976725258', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341171, '苏滁现代产业园', 'S', '118.42315086566', '32.314484916002', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341172, '滁州经济技术开发区', 'C', '118.37688910117', '32.299081918592', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341181, '天长市', 'T', '119.01138527949', '32.67341003277', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341182, '明光市', 'M', '117.99550981385', '32.783022823418', 341100, 3, 'tr_0 tr_340000 tr_341100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341202, '颍州区', 'Y', '115.81341119616', '32.88962541655', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341203, '颍东区', 'Y', '115.86361668264', '32.917362240172', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341204, '颍泉区', 'Y', '115.81542555644', '32.931313576025', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341221, '临泉县', 'L', '115.26761550051', '33.045959528363', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341222, '太和县', 'T', '115.6286154697', '33.165959850096', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341225, '阜南县', 'F', '115.60254592516', '32.664097385125', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341226, '颍上县', 'Y', '116.26347689904', '32.659028468804', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341271, '阜阳合肥现代产业园区', 'F', '115.88456164757', '32.809466011566', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341272, '阜阳经济技术开发区', 'F', '115.86257063732', '32.867285704339', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341282, '界首市', 'J', '115.38060984722', '33.262775236231', 341200, 3, 'tr_0 tr_340000 tr_341200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341302, '埇桥区', 'Y', '116.98348044326', '33.646130650445', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341321, '砀山县', 'D', '116.37252400151', '34.448428171397', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341322, '萧县', 'X', '116.95358492572', '34.194269344319', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341323, '灵璧县', 'L', '117.56455699799', '33.547892231948', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341324, '泗县', 'S', '117.91658999175', '33.488694630134', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341371, '宿州马鞍山现代产业园区', 'S', '116.97054394561', '33.652095326452', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341372, '宿州经济技术开发区', 'S', '116.97054394561', '33.652095326452', 341300, 3, 'tr_0 tr_340000 tr_341300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341702, '贵池区', 'G', '117.57449037049', '30.693857943819', 341700, 3, 'tr_0 tr_340000 tr_341700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341721, '东至县', 'D', '117.03448128944', '30.116534528265', 341700, 3, 'tr_0 tr_340000 tr_341700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341722, '石台县', 'S', '117.49239440959', '30.216530337189', 341700, 3, 'tr_0 tr_340000 tr_341700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341723, '青阳县', 'Q', '117.85343129914', '30.645634346235', 341700, 3, 'tr_0 tr_340000 tr_341700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341802, '宣州区', 'X', '118.76254944305', '30.952158157984', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341821, '郎溪县', 'L', '119.18646592169', '31.132681870443', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341822, '广德县', 'G', '119.42747581035', '30.883667102643', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341823, '泾县', 'J', '118.42643469242', '30.694672488542', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341824, '绩溪县', 'J', '118.58544384057', '30.073292199533', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341825, '旌德县', 'J', '118.54646735263', '30.292481093722', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341871, '宣城市经济开发区', 'X', '118.76553424277', '30.946601545293', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341881, '宁国市', 'N', '118.98960981494', '30.639352229689', 341800, 3, 'tr_0 tr_340000 tr_341800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350102, '鼓楼区', 'G', '119.31049162322', '26.088114037555', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350103, '台江区', 'T', '119.32052821102', '26.058528150645', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350104, '仓山区', 'C', '119.28043216493', '26.052841691927', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350105, '马尾区', 'M', '119.44551915828', '26.004533771063', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350111, '晋安区', 'J', '119.33457941597', '26.087213904434', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350112, '长乐区', 'Z', '119.52943832001', '25.969257448077', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350121, '闽侯县', 'M', '119.13848201812', '26.156035214577', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350122, '连江县', 'L', '119.54647881621', '26.203583291029', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350123, '罗源县', 'L', '119.55648045992', '26.495495660324', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350124, '闽清县', 'M', '118.86957650956', '26.226847540202', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350125, '永泰县', 'Y', '118.93843072857', '25.872787263196', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350128, '平潭县', 'P', '119.79650131414', '25.504700273945', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350181, '福清市', 'F', '119.39046524749', '25.726343299035', 350100, 3, 'tr_0 tr_350000 tr_350100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350203, '思明区', 'S', '118.08840797224', '24.451948395671', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350205, '海沧区', 'H', '118.03956171185', '24.490325818598', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350206, '湖里区', 'H', '118.15358812172', '24.517573138112', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350211, '集美区', 'J', '118.10343491664', '24.58201906225', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350212, '同安区', 'T', '118.15856347661', '24.729113975347', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350213, '翔安区', 'X', '118.25457589661', '24.624216383593', 350200, 3, 'tr_0 tr_350000 tr_350200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350302, '城厢区', 'C', '119.00153633131', '25.424343792482', 350300, 3, 'tr_0 tr_350000 tr_350300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350303, '涵江区', 'H', '119.12256736822', '25.464464388124', 350300, 3, 'tr_0 tr_350000 tr_350300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350304, '荔城区', 'L', '119.01948169064', '25.439754478806', 350300, 3, 'tr_0 tr_350000 tr_350300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350305, '秀屿区', 'X', '119.11157130031', '25.323654397561', 350300, 3, 'tr_0 tr_350000 tr_350300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350322, '仙游县', 'X', '118.69845425065', '25.368291498104', 350300, 3, 'tr_0 tr_350000 tr_350300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350402, '梅列区', 'M', '117.65255022877', '26.277335878355', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350403, '三元区', 'S', '117.61441509378', '26.240219374574', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350421, '明溪县', 'M', '117.20851763568', '26.361853685277', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350423, '清流县', 'Q', '116.8235931858', '26.18335735321', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350424, '宁化县', 'N', '116.660425512', '26.26795649054', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350425, '大田县', 'D', '117.85343999668', '25.698932641879', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350426, '尤溪县', 'Y', '118.19743971365', '26.17621803946', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350427, '沙县', 'S', '117.79856107581', '26.402813444346', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350428, '将乐县', 'J', '117.47740904084', '26.735209519833', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350429, '泰宁县', 'T', '117.1825958624', '26.905660032285', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350430, '建宁县', 'J', '116.85250622659', '26.836824655349', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350481, '永安市', 'Y', '117.37144258732', '25.948143989824', 350400, 3, 'tr_0 tr_350000 tr_350400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350502, '鲤城区', 'L', '118.59348105353', '24.913354167054', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350503, '丰泽区', 'F', '118.61958015232', '24.894969993262', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350504, '洛江区', 'L', '118.67741629493', '24.94621365376', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350505, '泉港区', 'Q', '118.92243298541', '25.139650393954', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350521, '惠安县', 'H', '118.8034155003', '25.036949815039', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350524, '安溪县', 'A', '118.19242537229', '25.061759553382', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350525, '永春县', 'Y', '118.30048613527', '25.327974202083', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350526, '德化县', 'D', '118.24755006956', '25.497308594179', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350581, '石狮市', 'S', '118.65451902647', '24.737665160883', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350582, '晋江市', 'J', '118.55843052', '24.787824575145', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350583, '南安市', 'N', '118.39257197205', '24.966362350468', 350500, 3, 'tr_0 tr_350000 tr_350500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350602, '芗城区', 'X', '117.6605895241', '24.516268416111', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350603, '龙文区', 'L', '117.7164546946', '24.509509680945', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350622, '云霄县', 'Y', '117.34644831448', '23.964072828248', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350623, '漳浦县', 'Z', '117.62044335257', '24.123461614812', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350624, '诏安县', 'Z', '117.18255858272', '23.717053963784', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350625, '长泰县', 'Z', '117.76555257036', '24.631243628383', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350626, '东山县', 'D', '117.43656030457', '23.706894688691', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350627, '南靖县', 'N', '117.36344641066', '24.52085173207', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350628, '平和县', 'P', '117.32255159131', '24.368365040126', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350629, '华安县', 'H', '117.54058560971', '25.010067731399', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350681, '龙海市', 'L', '117.82445086941', '24.452939738547', 350600, 3, 'tr_0 tr_350000 tr_350600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350702, '延平区', 'Y', '118.18845055007', '26.643807791057', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350703, '建阳区', 'J', '118.12752522464', '27.337502466188', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350721, '顺昌县', 'S', '117.81651928091', '26.799104367214', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350722, '浦城县', 'P', '118.54743912328', '27.923390046145', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350723, '光泽县', 'G', '117.34048158963', '27.547272859205', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350724, '松溪县', 'S', '118.79145438278', '27.532554907167', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350725, '政和县', 'Z', '118.86358723724', '27.371749198234', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350781, '邵武市', 'S', '117.4994195021', '27.346469966261', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350782, '武夷山市', 'W', '118.04157715009', '27.762553910259', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350783, '建瓯市', 'J', '118.31146073369', '27.028955089429', 350700, 3, 'tr_0 tr_350000 tr_350700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350802, '新罗区', 'X', '117.04354293052', '25.104077629635', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350803, '永定区', 'Y', '116.89244722515', '24.869137411287', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350821, '长汀县', 'Z', '116.36356796988', '25.83918461828', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350823, '上杭县', 'S', '116.42644288776', '25.055570401525', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350824, '武平县', 'W', '116.10758916743', '25.100855173343', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350825, '连城县', 'L', '116.76044617118', '25.716337381852', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350881, '漳平市', 'Z', '117.42655632526', '25.295743499252', 350800, 3, 'tr_0 tr_350000 tr_350800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341502, '金安区', 'J', '116.54543837997', '31.756287719901', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341503, '裕安区', 'Y', '116.48654978261', '31.74362587083', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341504, '叶集区', 'Y', '115.94747592742', '31.83526314225', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341522, '霍邱县', 'H', '116.28439133776', '32.359343590922', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341523, '舒城县', 'S', '116.95560171142', '31.467692010556', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341524, '金寨县', 'J', '115.94044120714', '31.733461734381', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341525, '霍山县', 'H', '116.33957586218', '31.398570812489', 341500, 3, 'tr_0 tr_340000 tr_341500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350902, '蕉城区', 'J', '119.53344242699', '26.666738555955', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350921, '霞浦县', 'X', '120.01142710564', '26.891348873767', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350922, '古田县', 'G', '118.75257823557', '26.583261752073', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350923, '屏南县', 'P', '118.99259621521', '26.914264918059', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350924, '寿宁县', 'S', '119.51142504878', '27.466649659969', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350925, '周宁县', 'Z', '119.34556712964', '27.110239280448', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350926, '柘荣县', 'Z', '119.90745668696', '27.239961876352', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350981, '福安市', 'F', '119.65440636048', '27.09432350806', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(350982, '福鼎市', 'F', '120.22345190932', '27.330524972528', 350900, 3, 'tr_0 tr_350000 tr_350900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360102, '东湖区', 'D', '115.90546602606', '28.691259179775', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360103, '西湖区', 'X', '115.88353569365', '28.661976709901', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360104, '青云谱区', 'Q', '115.93141618579', '28.627235736484', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360105, '湾里区', 'W', '115.73759563309', '28.720195384308', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360111, '青山湖区', 'Q', '115.96855240505', '28.687596006173', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360112, '新建区', 'X', '115.8214509253', '28.698748625155', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360121, '南昌县', 'N', '115.95046017277', '28.551604186108', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360123, '安义县', 'A', '115.55544146387', '28.850794273751', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360124, '进贤县', 'J', '116.24853779343', '28.382758944474', 360100, 3, 'tr_0 tr_360000 tr_360100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360202, '昌江区', 'C', '117.19057910346', '29.27885446447', 360200, 3, 'tr_0 tr_360000 tr_360200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360203, '珠山区', 'Z', '117.20954826159', '29.305778220374', 360200, 3, 'tr_0 tr_360000 tr_360200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360222, '浮梁县', 'F', '117.22146608079', '29.357788237529', 360200, 3, 'tr_0 tr_360000 tr_360200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360281, '乐平市', 'L', '117.15851067473', '28.984363669039', 360200, 3, 'tr_0 tr_360000 tr_360200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360302, '安源区', 'A', '113.87743991926', '27.621307703862', 360300, 3, 'tr_0 tr_360000 tr_360300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360313, '湘东区', 'X', '113.74049971211', '27.645875074875', 360300, 3, 'tr_0 tr_360000 tr_360300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360321, '莲花县', 'L', '113.96854067422', '27.133462711028', 360300, 3, 'tr_0 tr_360000 tr_360300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360322, '上栗县', 'S', '113.80153822404', '27.886415692068', 360300, 3, 'tr_0 tr_360000 tr_360300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360323, '芦溪县', 'L', '114.03651940468', '27.6366047187', 360300, 3, 'tr_0 tr_360000 tr_360300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360402, '濂溪区', 'L', '116.00753491163', '29.711340559079', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360403, '浔阳区', 'X', '115.99655806746', '29.733093751939', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360404, '柴桑区', 'C', '115.91740154188', '29.614804909379', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360423, '武宁县', 'W', '115.10744177399', '29.2623521507', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360424, '修水县', 'X', '114.55356797639', '29.031175867959', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360425, '永修县', 'Y', '115.81540658685', '29.028005616261', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360426, '德安县', 'D', '115.76257795847', '29.319172496312', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360428, '都昌县', 'D', '116.21055204665', '29.278965044767', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360429, '湖口县', 'H', '116.25847134559', '29.737131514562', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360430, '彭泽县', 'P', '116.55550980644', '29.902122004906', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360481, '瑞昌市', 'R', '115.68742967207', '29.681951286531', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360482, '共青城市', 'G', '115.82142002359', '29.248741173716', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360483, '庐山市', 'L', '116.05142593917', '29.454539165717', 360400, 3, 'tr_0 tr_360000 tr_360400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360502, '渝水区', 'Y', '114.9514238934', '27.806839650444', 360500, 3, 'tr_0 tr_360000 tr_360500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360521, '分宜县', 'F', '114.69847247036', '27.820731344374', 360500, 3, 'tr_0 tr_360000 tr_360500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360602, '月湖区', 'Y', '117.04354760171', '28.245078331555', 360600, 3, 'tr_0 tr_360000 tr_360600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360603, '余江区', 'Y', '116.82459362864', '28.215353761359', 360600, 3, 'tr_0 tr_360000 tr_360600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360681, '贵溪市', 'G', '117.25139869833', '28.298735072105', 360600, 3, 'tr_0 tr_360000 tr_360600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360702, '章贡区', 'Z', '114.9275508855', '25.823747013882', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360703, '南康区', 'N', '114.77153821509', '25.66705293056', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360704, '赣县区', 'G', '115.01857016415', '25.866384616621', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360722, '信丰县', 'X', '114.92952113897', '25.391975120014', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360723, '大余县', 'D', '114.36840663965', '25.407637298367', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360724, '上犹县', 'S', '114.55854863129', '25.790518799476', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360725, '崇义县', 'C', '114.31457244808', '25.687687192664', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360726, '安远县', 'A', '115.40055913129', '25.142743431732', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360727, '龙南县', 'L', '114.79655413709', '24.916599461157', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360728, '定南县', 'D', '115.0345637751', '24.789783831846', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360729, '全南县', 'Q', '114.53658236666', '24.748206354967', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360730, '宁都县', 'N', '116.01549443743', '26.47597950334', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360731, '于都县', 'Y', '115.42149926153', '25.957893942751', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360732, '兴国县', 'X', '115.36955169119', '26.343882588243', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360733, '会昌县', 'H', '115.79245964209', '25.606661833811', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360734, '寻乌县', 'X', '115.65351531535', '24.96944654678', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360735, '石城县', 'S', '116.35259426977', '26.318972346784', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360781, '瑞金市', 'R', '116.03342066286', '25.891666273953', 360700, 3, 'tr_0 tr_360000 tr_360700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360802, '吉州区', 'J', '115.00153936965', '27.149314993877', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360803, '青原区', 'Q', '115.02156071302', '27.087662535191', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360821, '吉安县', 'J', '114.9145913014', '27.044989078994', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360822, '吉水县', 'J', '115.14256983128', '27.235259745039', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360823, '峡江县', 'X', '115.32240322821', '27.588234617615', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360824, '新干县', 'X', '115.39359474833', '27.746080951713', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360825, '永丰县', 'Y', '115.44740243989', '27.324342103714', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360826, '泰和县', 'T', '114.91559111544', '26.795697341165', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360827, '遂川县', 'S', '114.52756212171', '26.319517284146', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360828, '万安县', 'W', '114.79257715894', '26.464072836341', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360829, '安福县', 'A', '114.62647813461', '27.399076477105', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360830, '永新县', 'Y', '114.2494149359', '26.951537256563', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360881, '井冈山市', 'J', '114.29555585942', '26.753709741566', 360800, 3, 'tr_0 tr_360000 tr_360800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360902, '袁州区', 'Y', '114.43456118111', '27.802582705304', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360921, '奉新县', 'F', '115.40655109853', '28.694028951458', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360922, '万载县', 'W', '114.45253654385', '28.112133306116', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360923, '上高县', 'S', '114.93154115857', '28.238815490252', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360924, '宜丰县', 'Y', '114.80951713475', '28.400373307265', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360925, '靖安县', 'J', '115.36955312848', '28.867081916186', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360926, '铜鼓县', 'T', '114.37741107441', '28.52708345654', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360981, '丰城市', 'F', '115.77747842145', '28.166614024369', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360982, '樟树市', 'Z', '115.55241893533', '28.062153117648', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(360983, '高安市', 'G', '115.38256535328', '28.422857002119', 360900, 3, 'tr_0 tr_360000 tr_360900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361002, '临川区', 'L', '116.31848983161', '27.940458992864', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361003, '东乡区', 'D', '116.60954171505', '28.253977397999', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361021, '南城县', 'N', '116.64339884971', '27.57624096656', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361022, '黎川县', 'L', '116.91450700338', '27.288340234831', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361023, '南丰县', 'N', '116.53140350859', '27.224733524876', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361024, '崇仁县', 'C', '116.08354898488', '27.759079756014', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361025, '乐安县', 'L', '115.83749627865', '27.434079864498', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361026, '宜黄县', 'Y', '116.24254169398', '27.5605634607', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361027, '金溪县', 'J', '116.76040404065', '27.925329188976', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361028, '资溪县', 'Z', '117.06657027361', '27.711845785732', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361030, '广昌县', 'G', '116.34256064638', '26.848454446681', 361000, 3, 'tr_0 tr_360000 tr_361000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361102, '信州区', 'X', '117.97341184157', '28.437628311', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361103, '广丰区', 'G', '118.19742022042', '28.442615061205', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361121, '上饶县', 'S', '117.91558441252', '28.45418687477', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361123, '玉山县', 'Y', '118.2515628901', '28.687749687317', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361124, '铅山县', 'Q', '117.71642163695', '28.321504694791', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361125, '横峰县', 'H', '117.60239738302', '28.413440462384', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361126, '弋阳县', 'Y', '117.45550637624', '28.384082001231', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361127, '余干县', 'Y', '116.70160096199', '28.707866244419', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361128, '鄱阳县', 'P', '116.7105661408', '29.011452830922', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361129, '万年县', 'W', '117.06459894217', '28.700054054129', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361130, '婺源县', 'W', '117.86844502243', '29.254039048097', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(361181, '德兴市', 'D', '117.58547968518', '28.952564863028', 361100, 3, 'tr_0 tr_360000 tr_361100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341602, '谯城区', 'Q', '115.78547191853', '33.882663087443', 341600, 3, 'tr_0 tr_340000 tr_341600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341621, '涡阳县', 'W', '116.22160903516', '33.498566835004', 341600, 3, 'tr_0 tr_340000 tr_341600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341622, '蒙城县', 'M', '116.57158940083', '33.271658239674', 341600, 3, 'tr_0 tr_340000 tr_341600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(341623, '利辛县', 'L', '116.1914935226', '33.155595841529', 341600, 3, 'tr_0 tr_340000 tr_341600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370102, '历下区', 'L', '117.0825673139', '36.672162950043', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370103, '市中区', 'S', '117.00439910401', '36.657551673642', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370104, '槐荫区', 'H', '116.90745837507', '36.657561734426', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370105, '天桥区', 'T', '116.99339917338', '36.684067874353', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370112, '历城区', 'L', '117.07158975107', '36.685655534711', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370113, '长清区', 'Z', '116.75838709095', '36.56021587991', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370114, '章丘区', 'Z', '117.53256537437', '36.68553275142', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370115, '济阳区', 'J', '117.18062113319', '36.983970518315', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370124, '平阴县', 'P', '116.46261667806', '36.294861321066', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370126, '商河县', 'S', '117.1635297929', '37.314970715556', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370171, '济南高新技术产业开发区', 'J', '117.12639941261', '36.656554201787', 370100, 3, 'tr_0 tr_370000 tr_370100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370202, '市南区', 'S', '120.41858472358', '36.081465640234', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370203, '市北区', 'S', '120.38140448734', '36.09344959486', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370211, '黄岛区', 'H', '120.20454654768', '35.966382870945', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370212, '崂山区', 'L', '120.47539724708', '36.113499423971', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370213, '李沧区', 'L', '120.43960282675', '36.151024667784', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370214, '城阳区', 'C', '120.40252679394', '36.31288619735', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370215, '即墨区', 'J', '120.45353617402', '36.394749170322', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370271, '青岛高新技术产业开发区', 'Q', '120.44085344768', '36.124685571214', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370281, '胶州市', 'J', '120.03953537127', '36.270349088049', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370283, '平度市', 'P', '119.99441429398', '36.782692254089', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370285, '莱西市', 'L', '120.52455620764', '36.893956298026', 370200, 3, 'tr_0 tr_370000 tr_370200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370302, '淄川区', 'Z', '117.97341185763', '36.649834806022', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370303, '张店区', 'Z', '118.02459110728', '36.811941952144', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370304, '博山区', 'B', '117.86846875372', '36.500847855131', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370305, '临淄区', 'L', '118.31539460935', '36.832293635152', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370306, '周村区', 'Z', '117.87648217785', '36.808994352212', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370321, '桓台县', 'H', '118.10443420779', '36.965607980118', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370322, '高青县', 'G', '117.83339432525', '37.177268654333', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370323, '沂源县', 'Y', '118.17748944237', '36.190916985848', 370300, 3, 'tr_0 tr_370000 tr_370300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370402, '市中区', 'S', '117.56256581399', '34.86996272507', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370403, '薛城区', 'X', '117.26945761931', '34.801124568639', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370404, '峄城区', 'Y', '117.59639060967', '34.778599873011', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370405, '台儿庄区', 'T', '117.74042545412', '34.568763215633', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370406, '山亭区', 'S', '117.46744316558', '35.105691980765', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370481, '滕州市', 'T', '117.17256521921', '35.120034809574', 370400, 3, 'tr_0 tr_370000 tr_370400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370502, '东营区', 'D', '118.58846268607', '37.454847320166', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370503, '河口区', 'H', '118.53250516975', '37.891120201056', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370505, '垦利区', 'K', '118.58143173867', '37.578555133809', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370522, '利津县', 'L', '118.26161799914', '37.495860299031', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370523, '广饶县', 'G', '118.41349864392', '37.059638498906', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370571, '东营经济技术开发区', 'D', '118.58846268607', '37.454847320166', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370572, '东营港经济开发区', 'D', '118.96520739607', '38.098236253355', 370500, 3, 'tr_0 tr_370000 tr_370500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370602, '芝罘区', 'Z', '121.40654004549', '37.546312866891', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370611, '福山区', 'F', '121.27460474744', '37.503668228451', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370612, '牟平区', 'M', '121.60654911474', '37.392915451796', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370613, '莱山区', 'L', '121.4513806718', '37.517648584109', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370634, '长岛县', 'Z', '120.74342978244', '37.927628387579', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370671, '烟台高新技术产业开发区', 'Y', '121.4544154173', '37.470038383731', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370672, '烟台经济技术开发区', 'Y', '121.12513892753', '37.636399945094', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370681, '龙口市', 'L', '120.48536852807', '37.652555125496', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370682, '莱阳市', 'L', '120.71841430958', '36.984635568304', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370683, '莱州市', 'L', '119.94859307737', '37.182636609074', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370684, '蓬莱市', 'P', '120.76556151495', '37.816438725969', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370685, '招远市', 'Z', '120.44060165265', '37.361137142566', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370686, '栖霞市', 'Q', '120.85641658338', '37.3414181648', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370687, '海阳市', 'H', '121.18045819779', '36.693269738228', 370600, 3, 'tr_0 tr_370000 tr_370600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370702, '潍城区', 'W', '119.03142854152', '36.73285441557', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370703, '寒亭区', 'H', '119.22661514747', '36.780743786201', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370704, '坊子区', 'F', '119.17240097265', '36.660741599701', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370705, '奎文区', 'K', '119.13947052995', '36.712752014046', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370724, '临朐县', 'L', '118.54944999641', '36.519129501828', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370725, '昌乐县', 'C', '118.83648798144', '36.712996190845', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370772, '潍坊滨海经济技术开发区', 'W', '119.16837791143', '36.712651551268', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370781, '青州市', 'Q', '118.48653672087', '36.690416508705', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370782, '诸城市', 'Z', '119.41640221867', '36.002008858076', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370783, '寿光市', 'S', '118.79741537481', '36.861921746471', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370784, '安丘市', 'A', '119.22560751818', '36.483842195596', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370785, '高密市', 'G', '119.76241099602', '36.388956706465', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370786, '昌邑市', 'C', '119.40440597739', '36.865161072622', 370700, 3, 'tr_0 tr_370000 tr_370700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370811, '任城区', 'R', '116.55446985374', '35.49373064026', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370812, '兖州区', 'Y', '116.79011515173', '35.557952373283', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370826, '微山县', 'W', '117.13541381857', '34.813315104239', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370827, '鱼台县', 'Y', '116.65739284822', '35.017887717823', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370828, '金乡县', 'J', '116.31852982171', '35.072569118665', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370829, '嘉祥县', 'J', '116.34861308511', '35.413255044102', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370830, '汶上县', 'W', '116.50544105765', '35.717055392628', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370831, '泗水县', 'S', '117.25742858989', '35.670600481228', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370832, '梁山县', 'L', '116.10262029578', '35.808063886611', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370871, '济宁高新技术产业开发区', 'J', '116.59361234854', '35.42017739453', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370881, '曲阜市', 'Q', '116.99341597169', '35.587372286488', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370883, '邹城市', 'Z', '117.01440416129', '35.40752093245', 370800, 3, 'tr_0 tr_370000 tr_370800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370902, '泰山区', 'T', '117.14141108582', '36.199444601195', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370911, '岱岳区', 'D', '117.04855647915', '36.193291242291', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370921, '宁阳县', 'N', '116.81257853863', '35.764539097344', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370923, '东平县', 'D', '116.47759421565', '35.941908015019', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370982, '新泰市', 'X', '117.77460624827', '35.914619866588', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(370983, '肥城市', 'F', '116.77540081764', '36.188811224315', 370900, 3, 'tr_0 tr_370000 tr_370900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371002, '环翠区', 'H', '122.12953818095', '37.507968071219', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371003, '文登区', 'W', '122.06442836878', '37.200113328316', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371071, '威海火炬高技术产业开发区', 'W', '122.12754097831', '37.516430548015', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371072, '威海经济技术开发区', 'W', '122.18792776961', '37.412757933019', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371073, '威海临港经济技术开发区', 'W', '122.12754097831', '37.516430548015', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371082, '荣成市', 'R', '122.49250463074', '37.171317939253', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371083, '乳山市', 'R', '121.5464285812', '36.925177357878', 371000, 3, 'tr_0 tr_370000 tr_371000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371102, '东港区', 'D', '119.46862431118', '35.431049003942', 371100, 3, 'tr_0 tr_370000 tr_371100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371103, '岚山区', 'L', '119.32553044175', '35.127432330052', 371100, 3, 'tr_0 tr_370000 tr_371100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371121, '五莲县', 'W', '119.21558036259', '35.755697104104', 371100, 3, 'tr_0 tr_370000 tr_371100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371122, '莒县', 'J', '118.8435382424', '35.585872122989', 371100, 3, 'tr_0 tr_370000 tr_371100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371171, '日照经济技术开发区', 'R', '119.53341540457', '35.422838998438', 371100, 3, 'tr_0 tr_370000 tr_371100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371202, '莱城区', 'L', '117.6459130158', '36.313394584932', 371200, 3, 'tr_0 tr_370000 tr_371200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371203, '钢城区', 'G', '117.8275371813', '36.092835887233', 371200, 3, 'tr_0 tr_370000 tr_371200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371302, '兰山区', 'L', '118.35449973464', '35.057340229806', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371311, '罗庄区', 'L', '118.29151252855', '35.002503733433', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371312, '河东区', 'H', '118.40954744713', '35.095675536824', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371321, '沂南县', 'Y', '118.47149154086', '35.55609766695', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371322, '郯城县', 'T', '118.37358710977', '34.619225932471', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371323, '沂水县', 'Y', '118.63461726385', '35.796180584718', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371324, '兰陵县', 'L', '118.07740949499', '34.86361638544', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371325, '费县', 'F', '117.98442508318', '35.272304128517', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371326, '平邑县', 'P', '117.64654058086', '35.51201963664', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371327, '莒南县', 'J', '118.84154077027', '35.180811631788', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371328, '蒙阴县', 'M', '117.95141460145', '35.716347166232', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371329, '临沭县', 'L', '118.6574945001', '34.926018591491', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371371, '临沂高新技术产业开发区', 'L', '118.27105074598', '34.991223857705', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371372, '临沂经济技术开发区', 'L', '118.41614315832', '35.028440855401', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371373, '临沂临港经济开发区', 'L', '119.09098821173', '35.192676079483', 371300, 3, 'tr_0 tr_370000 tr_371300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371402, '德城区', 'D', '116.30544896637', '37.456993283021', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371403, '陵城区', 'L', '116.58940001434', '37.347132434581', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371422, '宁津县', 'N', '116.80653761374', '37.658018745855', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371423, '庆云县', 'Q', '117.39145244825', '37.781585318857', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371424, '临邑县', 'L', '116.87340370302', '37.196169366727', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371425, '齐河县', 'Q', '116.76938747073', '36.78994480667', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371426, '平原县', 'P', '116.44050470827', '37.171221463312', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371427, '夏津县', 'X', '116.00853411226', '36.954154863323', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371428, '武城县', 'W', '116.07550629142', '37.219222080288', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371471, '德州经济技术开发区', 'D', '116.36555674397', '37.441308454576', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371472, '德州运河经济开发区', 'D', '116.36555674397', '37.441308454576', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371481, '乐陵市', 'L', '117.23840643173', '37.73592450081', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371482, '禹城市', 'Y', '116.64437110138', '36.940242008766', 371400, 3, 'tr_0 tr_370000 tr_371400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371502, '东昌府区', 'D', '115.99458657176', '36.440377840732', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371521, '阳谷县', 'Y', '115.79839557041', '36.120815514687', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371522, '莘县', 'S', '115.67739687246', '36.239907120546', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371523, '茌平县', 'C', '116.26145544215', '36.586785068842', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371524, '东阿县', 'D', '116.25449294564', '36.340957707761', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371525, '冠县', 'G', '115.44939579504', '36.490243225394', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371526, '高唐县', 'G', '116.23560427568', '36.851591084095', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371581, '临清市', 'L', '115.71146960045', '36.844289186694', 371500, 3, 'tr_0 tr_370000 tr_371500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371702, '牡丹区', 'M', '115.42344303021', '35.257018176069', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371703, '定陶区', 'D', '115.57943737524', '35.077275179757', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371721, '曹县', 'C', '115.54845724362', '34.831809348415', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371722, '单县', 'D', '116.11158367799', '34.784658433692', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371723, '成武县', 'C', '115.89651900839', '34.95860565496', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371724, '巨野县', 'J', '116.10159901224', '35.402062380609', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371725, '郓城县', 'Y', '115.95045057629', '35.605902319687', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371726, '鄄城县', 'J', '115.51660692346', '35.569204259881', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371728, '东明县', 'D', '115.09641733473', '35.295701692411', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371771, '菏泽经济技术开发区', 'H', '115.48754503343', '35.239407424766', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371772, '菏泽高新技术开发区', 'H', '115.48754503343', '35.239407424766', 371700, 3, 'tr_0 tr_370000 tr_371700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410102, '中原区', 'Z', '113.61947551694', '34.754450781329', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410103, '二七区', 'E', '113.63141920734', '34.753438850454', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410104, '管城回族区', 'G', '113.6835246998', '34.759673874699', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410105, '金水区', 'J', '113.6664477324', '34.806070445662', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410106, '上街区', 'S', '113.29818225705', '34.822088918243', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410108, '惠济区', 'H', '113.62345527984', '34.873519885776', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410122, '中牟县', 'Z', '113.98248490573', '34.725010848924', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410171, '郑州经济技术开发区', 'Z', '113.77162403642', '34.724610916832', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410172, '郑州高新技术产业开发区', 'Z', '113.63793722229', '34.742959870174', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410173, '郑州航空港经济综合实验区', 'Z', '113.97018898974', '34.719717969385', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410181, '巩义市', 'G', '113.02843100495', '34.754096888697', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410182, '荥阳市', 'X', '113.38942279956', '34.793810500346', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410183, '新密市', 'X', '113.3973909491', '34.545897983445', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410184, '新郑市', 'X', '113.74643447195', '34.401766379106', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410185, '登封市', 'D', '113.05642283346', '34.45969746172', 410100, 3, 'tr_0 tr_410000 tr_410100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410202, '龙亭区', 'L', '114.36141316646', '34.822035612506', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410203, '顺河回族区', 'S', '114.36739165912', '34.802241355559', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410204, '鼓楼区', 'G', '114.35440485636', '34.794874251914', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410205, '禹王台区', 'Y', '114.35439775975', '34.783472105917', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410212, '祥符区', 'X', '114.4475325479', '34.762739572224', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410221, '杞县', 'Q', '114.78959210474', '34.554856780687', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410222, '通许县', 'T', '114.47343590593', '34.486771802655', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410223, '尉氏县', 'W', '114.19956115086', '34.417228010354', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410225, '兰考县', 'L', '114.82746071249', '34.828492897238', 410200, 3, 'tr_0 tr_410000 tr_410200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410302, '老城区', 'L', '112.47650356572', '34.689601063497', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410303, '西工区', 'X', '112.43439953731', '34.666767847513', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410304, '瀍河回族区', 'C', '112.50660380709', '34.685462421335', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410305, '涧西区', 'J', '112.4025520019', '34.663468974309', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410306, '吉利区', 'J', '112.59547847119', '34.907012657115', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410311, '洛龙区', 'L', '112.47046928829', '34.624704713024', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410322, '孟津县', 'M', '112.45141766571', '34.831731570285', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410323, '新安县', 'X', '112.14060970841', '34.734383327344', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410324, '栾川县', 'L', '111.62242666651', '33.791822464323', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410325, '嵩县', 'S', '112.09240816187', '34.140721556406', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410326, '汝阳县', 'R', '112.47950327731', '34.159843364893', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410327, '宜阳县', 'Y', '112.17946537426', '34.541046942554', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410328, '洛宁县', 'L', '111.65958740952', '34.394984560215', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410329, '伊川县', 'Y', '112.43240745502', '34.427645796427', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410371, '洛阳高新技术产业开发区', 'L', '112.45942129831', '34.624262779219', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410381, '偃师市', 'Y', '112.79642141885', '34.733796624013', 410300, 3, 'tr_0 tr_410000 tr_410300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410402, '新华区', 'X', '113.30043988965', '33.743657151646', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410403, '卫东区', 'W', '113.34161111761', '33.7403756514', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410404, '石龙区', 'S', '112.9054552264', '33.904754268397', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410411, '湛河区', 'Z', '113.25051467449', '33.685790171047', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410421, '宝丰县', 'B', '113.06144723584', '33.874745598631', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410422, '叶县', 'Y', '113.36358241276', '33.632491674058', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410423, '鲁山县', 'L', '112.91443396963', '33.744878863452', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410425, '郏县', 'J', '113.21960622765', '33.977486289177', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410471, '平顶山高新技术产业开发区', 'P', '113.40808986384', '33.737612151054', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410472, '平顶山市新城区', 'P', '113.19952856052', '33.772050748691', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410481, '舞钢市', 'W', '113.53141031593', '33.299431105301', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410482, '汝州市', 'R', '112.85054971566', '34.172767788551', 410400, 3, 'tr_0 tr_410000 tr_410400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410502, '文峰区', 'W', '114.36337398772', '36.096832748136', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410503, '北关区', 'B', '114.36238189912', '36.113131607765', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410505, '殷都区', 'Y', '114.29712997501', '36.135573231517', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410506, '龙安区', 'L', '114.3075931681', '36.08275278362', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410522, '安阳县', 'A', '114.23838187262', '36.218906964196', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410523, '汤阴县', 'T', '114.36340938096', '35.927643740225', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410526, '滑县', 'H', '114.52555316619', '35.581045400558', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410527, '内黄县', 'N', '114.90758875551', '35.976949668061', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410571, '安阳高新技术产业开发区', 'A', '114.39950042177', '36.105940984015', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410581, '林州市', 'L', '113.82559018908', '36.088853208448', 410500, 3, 'tr_0 tr_410000 tr_410500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410602, '鹤山区', 'H', '114.16955478242', '35.960280248227', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410603, '山城区', 'S', '114.19062058561', '35.903369613292', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410611, '淇滨区', 'Q', '114.30559120444', '35.746952546289', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410621, '浚县', 'J', '114.55760785086', '35.681917305913', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410622, '淇县', 'Q', '114.2154897245', '35.627277020336', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410671, '鹤壁经济技术开发区', 'H', '114.30359364248', '35.7523574114', 410600, 3, 'tr_0 tr_410000 tr_410600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410702, '红旗区', 'H', '113.88141583415', '35.310135512691', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410703, '卫滨区', 'W', '113.8724387977', '35.308459209602', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410704, '凤泉区', 'F', '113.91245884715', '35.375665060578', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410711, '牧野区', 'M', '113.91551290623', '35.321023486499', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410721, '新乡县', 'X', '113.81159378076', '35.196564408993', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410724, '获嘉县', 'H', '113.66341666994', '35.265809284161', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410725, '原阳县', 'Y', '113.94662374129', '35.071163864469', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410726, '延津县', 'Y', '114.21151175821', '35.147806510509', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410727, '封丘县', 'F', '114.42560616803', '35.046857531651', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410728, '长垣县', 'Z', '114.67560989146', '35.207198224565', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410771, '新乡高新技术产业开发区', 'X', '113.89511589149', '35.288196248852', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410772, '新乡经济技术开发区', 'X', '113.93360046733', '35.309639930337', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410773, '新乡市平原城乡一体化示范区', 'X', '113.93360046733', '35.309639930337', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410781, '卫辉市', 'W', '114.07160094452', '35.404068882145', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410782, '辉县市', 'H', '113.81157302991', '35.467957818376', 410700, 3, 'tr_0 tr_410000 tr_410700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410802, '解放区', 'J', '113.23757179887', '35.246309807633', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410803, '中站区', 'Z', '113.18944759643', '35.242617103591', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410804, '马村区', 'M', '113.32854400634', '35.261894441723', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410811, '山阳区', 'S', '113.26048370971', '35.220272352977', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410821, '修武县', 'X', '113.45458192871', '35.229323482594', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410822, '博爱县', 'B', '113.07047799096', '35.177308063756', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410823, '武陟县', 'W', '113.40839582041', '35.105838449217', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410825, '温县', 'W', '113.08656906807', '34.946135492247', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410871, '焦作城乡一体化示范区', 'J', '113.24854783457', '35.220963254039', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410882, '沁阳市', 'Q', '112.95751688155', '35.093785732346', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410883, '孟州市', 'M', '112.79739491254', '34.913597817886', 410800, 3, 'tr_0 tr_410000 tr_410800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410902, '华龙区', 'H', '115.0804129441', '35.783632884536', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410922, '清丰县', 'Q', '115.11047186341', '35.891308168277', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410923, '南乐县', 'N', '115.21138615695', '36.076030832875', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410926, '范县', 'F', '115.51058621044', '35.857655087719', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410927, '台前县', 'T', '115.87856816938', '35.975012712521', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410928, '濮阳县', 'P', '115.03558408559', '35.717888889375', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410971, '河南濮阳工业园区', 'H', '115.03559747034', '35.767593028906', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(410972, '濮阳经济技术开发区', 'P', '115.03559747034', '35.767593028906', 410900, 3, 'tr_0 tr_410000 tr_410900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411002, '魏都区', 'W', '113.82959564352', '34.030861228003', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411003, '建安区', 'J', '113.82961513675', '34.129966976383', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411024, '鄢陵县', 'Y', '114.18561980866', '34.107963250311', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411025, '襄城县', 'X', '113.51343127013', '33.856967773678', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411071, '许昌经济技术开发区', 'X', '113.81237629469', '34.009184251036', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411081, '禹州市', 'Y', '113.49550522436', '34.146082195029', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411082, '长葛市', 'Z', '113.77442091063', '34.223016266284', 411000, 3, 'tr_0 tr_410000 tr_411000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411102, '源汇区', 'Y', '113.99041352982', '33.578423262447', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411103, '郾城区', 'Y', '114.01339389154', '33.593415880865', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411104, '召陵区', 'Z', '114.1004665548', '33.592467538561', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411121, '舞阳县', 'W', '113.61549000488', '33.443577799934', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411122, '临颍县', 'L', '113.93757834379', '33.83269194793', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411171, '漯河经济技术开发区', 'L', '114.02342077765', '33.587710707102', 411100, 3, 'tr_0 tr_410000 tr_411100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411202, '湖滨区', 'H', '111.19557389665', '34.775996792444', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411203, '陕州区', 'S', '111.10945065249', '34.726914801527', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411221, '渑池县', 'M', '111.76854234585', '34.773197042986', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411224, '卢氏县', 'L', '111.05456400617', '34.059924845299', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411271, '河南三门峡经济开发区', 'H', '111.16756986287', '34.791595599754', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411281, '义马市', 'Y', '111.88051478021', '34.753028009473', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411282, '灵宝市', 'L', '110.90040831286', '34.523142624164', 411200, 3, 'tr_0 tr_410000 tr_411200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411302, '宛城区', 'W', '112.54645416663', '33.009870040626', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411303, '卧龙区', 'W', '112.54146183376', '32.992483797527', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411321, '南召县', 'N', '112.43542522255', '33.496185804625', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411322, '方城县', 'F', '113.0185027528', '33.260539455832', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411323, '西峡县', 'X', '111.48039809758', '33.313316115292', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411324, '镇平县', 'Z', '112.24154448331', '33.039718529225', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411325, '内乡县', 'N', '111.85542528697', '33.051203105476', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411326, '淅川县', 'X', '111.49743203615', '33.144185260027', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411327, '社旗县', 'S', '112.9544934547', '33.062236685935', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411328, '唐河县', 'T', '112.81342436589', '32.687720660005', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411329, '新野县', 'X', '112.36654962384', '32.526631778818', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411330, '桐柏县', 'T', '113.43447273106', '32.385130754956', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411371, '南阳高新技术产业开发区', 'N', '112.53450131351', '32.996562204651', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411372, '南阳市城乡一体化示范区', 'N', '112.53450131351', '32.996562204651', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411381, '邓州市', 'D', '112.09342010302', '32.69391743997', 411300, 3, 'tr_0 tr_410000 tr_411300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411402, '梁园区', 'L', '115.62060204557', '34.449471246294', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411403, '睢阳区', 'S', '115.65947594702', '34.394151920479', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411421, '民权县', 'M', '115.15457605887', '34.652478726537', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411422, '睢县', 'S', '115.07841089061', '34.451616965409', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411423, '宁陵县', 'N', '115.32041843737', '34.46663402766', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411424, '柘城县', 'Z', '115.31243456749', '34.097360212415', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411425, '虞城县', 'Y', '115.83447295698', '34.405331502097', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411426, '夏邑县', 'X', '116.13751236823', '34.243523472378', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411471, '豫东综合物流产业聚集区', 'Y', '115.66244933826', '34.420201665859', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411472, '河南商丘经济开发区', 'H', '115.69827951116', '34.407726159442', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411481, '永城市', 'Y', '116.4555661476', '33.934801475851', 411400, 3, 'tr_0 tr_410000 tr_411400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411502, '浉河区', 'S', '114.06558130947', '32.122554156884', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411503, '平桥区', 'P', '114.13240742415', '32.10732538611', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411521, '罗山县', 'L', '114.51952993791', '32.209150451838', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411522, '光山县', 'G', '114.92553303688', '32.015906879568', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411523, '新县', 'X', '114.88552475523', '31.649738468475', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411524, '商城县', 'S', '115.41351334076', '31.804345366903', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411525, '固始县', 'G', '115.66048788818', '32.174174379622', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411526, '潢川县', 'H', '115.05847075405', '32.137530716414', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411527, '淮滨县', 'H', '115.42643896891', '32.479469756663', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411528, '息县', 'X', '114.74745313225', '32.348955511715', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411571, '信阳高新技术产业开发区', 'X', '114.09748283305', '32.153014547531', 411500, 3, 'tr_0 tr_410000 tr_411500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411602, '川汇区', 'C', '114.65760174056', '33.652997102814', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411621, '扶沟县', 'F', '114.40150984137', '34.065906253969', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411622, '西华县', 'X', '114.53559667094', '33.773215334922', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411623, '商水县', 'S', '114.61841594744', '33.548877475353', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411624, '沈丘县', 'S', '115.10545545595', '33.415691094059', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411625, '郸城县', 'D', '115.18347760136', '33.650827955049', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411626, '淮阳县', 'H', '114.89258615519', '33.737347183458', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411627, '太康县', 'T', '114.84438389', '34.070038382248', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411628, '鹿邑县', 'L', '115.4905852586', '33.867173290317', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411671, '河南周口经济开发区', 'H', '114.70348251482', '33.631828875702', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411681, '项城市', 'X', '114.88151400079', '33.47300744143', 411600, 3, 'tr_0 tr_410000 tr_411600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411702, '驿城区', 'Y', '114.00038696674', '32.979519871982', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411721, '西平县', 'X', '114.02747357279', '33.393860997525', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411722, '上蔡县', 'S', '114.2704868624', '33.268511215884', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411723, '平舆县', 'P', '114.62542865923', '32.967982400438', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411724, '正阳县', 'Z', '114.39949655906', '32.611641077273', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411725, '确山县', 'Q', '114.03249501076', '32.808175692984', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411726, '泌阳县', 'M', '113.33355798837', '32.729730650435', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411727, '汝南县', 'R', '114.36940889397', '33.013140881992', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411728, '遂平县', 'S', '114.0194414639', '33.151971399579', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411729, '新蔡县', 'X', '114.99246928382', '32.755268867306', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(411771, '河南驻马店经济开发区', 'H', '114.02847078173', '33.017842416744', 411700, 3, 'tr_0 tr_410000 tr_411700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(419001, '济源市', 'J', '112.60858070621', '35.072907226847', 419000, 3, 'tr_0 tr_410000 tr_419000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420102, '江岸区', 'J', '114.31657918761', '30.605402797562', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420103, '江汉区', 'J', '114.27750613182', '30.607282276827', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420104, '硚口区', 'Q', '114.22146031207', '30.587584340776', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420105, '汉阳区', 'H', '114.22544555464', '30.560052027443', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420106, '武昌区', 'W', '114.35362228468', '30.564860292785', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420107, '青山区', 'Q', '114.39149265697', '30.646593075543', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420111, '洪山区', 'H', '114.35045554602', '30.506333956808', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420112, '东西湖区', 'D', '114.14345873786', '30.625919818109', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420113, '汉南区', 'H', '114.09151485056', '30.314809120145', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420114, '蔡甸区', 'C', '114.03547963081', '30.588113621855', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420115, '江夏区', 'J', '114.32855126446', '30.381564218182', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420116, '黄陂区', 'H', '114.38245399676', '30.887533767835', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420117, '新洲区', 'X', '114.8075433929', '30.847243870523', 420100, 3, 'tr_0 tr_420000 tr_420100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420202, '黄石港区', 'H', '115.07241748608', '30.229052639992', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420203, '西塞山区', 'X', '115.11648143744', '30.210695184118', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420204, '下陆区', 'X', '114.96741590247', '30.180046155273', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420205, '铁山区', 'T', '114.90757141821', '30.212250832587', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420222, '阳新县', 'Y', '115.22142677197', '29.836541808086', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420281, '大冶市', 'D', '114.98643626402', '30.101667800103', 420200, 3, 'tr_0 tr_420000 tr_420200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420302, '茅箭区', 'M', '110.81958031019', '32.597286519104', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420303, '张湾区', 'Z', '110.77542410285', '32.65839954548', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420304, '郧阳区', 'Y', '110.81857654362', '32.840592413038', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420322, '郧西县', 'Y', '110.43247261847', '32.999167007536', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420323, '竹山县', 'Z', '110.23558156764', '32.230304060376', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420324, '竹溪县', 'Z', '109.72154249889', '32.324120048853', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420325, '房县', 'F', '110.74746155911', '32.061684964544', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420381, '丹江口市', 'D', '111.51953205848', '32.546252688501', 420300, 3, 'tr_0 tr_420000 tr_420300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420502, '西陵区', 'X', '111.29255972053', '30.716749346598', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420503, '伍家岗区', 'W', '111.36742225597', '30.65073733526', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420504, '点军区', 'D', '111.27447135095', '30.69932951388', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420505, '猇亭区', 'X', '111.44157378259', '30.536465982707', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420506, '夷陵区', 'Y', '111.33252973436', '30.774833327298', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420525, '远安县', 'Y', '111.64653035927', '31.066627841578', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420526, '兴山县', 'X', '110.75344607041', '31.354463517716', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420527, '秭归县', 'Z', '110.98444937468', '30.831931643216', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420528, '长阳土家族自治县', 'Z', '111.21350712887', '30.478645783056', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420529, '五峰土家族自治县', 'W', '111.05258063744', '30.171156151026', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420581, '宜都市', 'Y', '111.45651583712', '30.384404274314', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420582, '当阳市', 'D', '111.79456850223', '30.826989050281', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420583, '枝江市', 'Z', '111.76653975337', '30.431730676998', 420500, 3, 'tr_0 tr_420000 tr_420500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420602, '襄城区', 'X', '112.14057206941', '32.016174618141', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420606, '樊城区', 'F', '112.14259891613', '32.050572374692', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420607, '襄州区', 'X', '112.21843413678', '32.093375783399', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420624, '南漳县', 'N', '111.84538618392', '31.781129706779', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420625, '谷城县', 'G', '111.65957564172', '32.268983068947', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420626, '保康县', 'B', '111.26744121203', '31.883847150262', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420682, '老河口市', 'L', '111.68155636908', '32.392459585271', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420683, '枣阳市', 'Z', '112.77847075951', '32.134729914319', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420684, '宜城市', 'Y', '112.26461144169', '31.725469730972', 420600, 3, 'tr_0 tr_420000 tr_420600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420702, '梁子湖区', 'L', '114.69150657526', '30.105906774051', 420700, 3, 'tr_0 tr_420000 tr_420700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420703, '华容区', 'H', '114.73642634228', '30.540599527838', 420700, 3, 'tr_0 tr_420000 tr_420700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420704, '鄂城区', 'E', '114.89859968176', '30.406389456292', 420700, 3, 'tr_0 tr_420000 tr_420700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420802, '东宝区', 'D', '112.2083882066', '31.058429271365', 420800, 3, 'tr_0 tr_420000 tr_420800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420804, '掇刀区', 'D', '112.2144276942', '30.979910859804', 420800, 3, 'tr_0 tr_420000 tr_420800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420822, '沙洋县', 'S', '112.59548493899', '30.715314748831', 420800, 3, 'tr_0 tr_420000 tr_420800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420881, '钟祥市', 'Z', '112.59447102156', '31.174029854963', 420800, 3, 'tr_0 tr_420000 tr_420800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420882, '京山市', 'J', '113.12654806496', '31.024330601193', 420800, 3, 'tr_0 tr_420000 tr_420800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420902, '孝南区', 'X', '113.91748989699', '30.922977925049', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420921, '孝昌县', 'X', '114.00440859068', '31.264540493062', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420922, '大悟县', 'D', '114.13341253819', '31.567219806641', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420923, '云梦县', 'Y', '113.75941220183', '31.027218220752', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420981, '应城市', 'Y', '113.57956739635', '30.933976509913', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420982, '安陆市', 'A', '113.69558292415', '31.261414994286', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(420984, '汉川市', 'H', '113.8455490104', '30.666913578821', 420900, 3, 'tr_0 tr_420000 tr_420900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421002, '沙市区', 'S', '112.26157741483', '30.316571904872', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421003, '荆州区', 'J', '112.19641397381', '30.358989490775', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421022, '公安县', 'G', '112.23650157584', '30.064400686806', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421023, '监利县', 'J', '112.91142023009', '29.845735162836', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421024, '江陵县', 'J', '112.43145201728', '30.048042984592', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421071, '荆州经济技术开发区', 'J', '112.19641397381', '30.358989490775', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421081, '石首市', 'S', '112.43141984371', '29.727033977407', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421083, '洪湖市', 'H', '113.48255290196', '29.83277032976', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421087, '松滋市', 'S', '111.77358031264', '30.175342235143', 421000, 3, 'tr_0 tr_420000 tr_421000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421102, '黄州区', 'H', '114.88653238452', '30.440224145146', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421121, '团风县', 'T', '114.87852435023', '30.649367767215', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421122, '红安县', 'H', '114.6244256113', '31.294296714037', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421123, '罗田县', 'L', '115.4055471675', '30.788910495685', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421124, '英山县', 'Y', '115.68742160263', '30.741350084085', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421125, '浠水县', 'X', '115.27156903289', '30.457460842265', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421126, '蕲春县', 'Q', '115.4423985341', '30.232535499734', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421127, '黄梅县', 'H', '115.95046198477', '30.076605056821', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421171, '龙感湖管理区', 'L', '116.01030250647', '29.879697031911', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421181, '麻城市', 'M', '115.01656174777', '31.176995837411', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421182, '武穴市', 'W', '115.56739216105', '29.850441430483', 421100, 3, 'tr_0 tr_420000 tr_421100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421202, '咸安区', 'X', '114.30456990606', '29.858153915154', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421221, '嘉鱼县', 'J', '113.94557046336', '29.976353520898', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421222, '通城县', 'T', '113.82356790903', '29.250857930222', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421223, '崇阳县', 'C', '114.04656290943', '29.561333782271', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421224, '通山县', 'T', '114.48939330027', '29.612634338058', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421281, '赤壁市', 'C', '113.90643686179', '29.730665997526', 421200, 3, 'tr_0 tr_420000 tr_421200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421303, '曾都区', 'C', '113.3775133346', '31.722122861271', 421300, 3, 'tr_0 tr_420000 tr_421300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421321, '随县', 'S', '113.3064583569', '31.859971678258', 421300, 3, 'tr_0 tr_420000 tr_421300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(421381, '广水市', 'G', '113.83259337884', '31.622476038007', 421300, 3, 'tr_0 tr_420000 tr_421300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422801, '恩施市', 'E', '109.48655026901', '30.301037143741', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422802, '利川市', 'L', '108.94248057756', '30.29720344368', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422822, '建始县', 'J', '109.72855610899', '30.607907026319', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422823, '巴东县', 'B', '110.34757529184', '31.04806424896', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422825, '宣恩县', 'X', '109.49756797283', '29.99260392208', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422826, '咸丰县', 'X', '109.14660773562', '29.671077652358', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422827, '来凤县', 'L', '109.41349484153', '29.499443572607', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(422828, '鹤峰县', 'H', '110.04042423301', '29.896116483403', 422800, 3, 'tr_0 tr_420000 tr_422800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(429004, '仙桃市', 'X', '113.46159059813', '30.368271921725', 429000, 3, 'tr_0 tr_420000 tr_429000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(429005, '潜江市', 'Q', '112.90547409082', '30.408357932419', 429000, 3, 'tr_0 tr_420000 tr_429000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(429006, '天门市', 'T', '113.17240916633', '30.669621830099', 429000, 3, 'tr_0 tr_420000 tr_429000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(429021, '神农架林区', 'S', '110.6825248504', '31.750496011246', 429000, 3, 'tr_0 tr_420000 tr_429000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371602, '滨城区', 'B', '118.02660385061', '37.436843207744', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371603, '沾化区', 'Z', '118.10545441336', '37.705298106724', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371621, '惠民县', 'H', '117.5165096905', '37.49580310894', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371622, '阳信县', 'Y', '117.58443703791', '37.647338034957', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371623, '无棣县', 'W', '117.63245748606', '37.777567312086', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371625, '博兴县', 'B', '118.11749269533', '37.160477277651', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(371681, '邹平市', 'Z', '117.74947848722', '36.870032216697', 371600, 3, 'tr_0 tr_370000 tr_371600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430202, '荷塘区', 'H', '113.18045222007', '27.862155809141', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430203, '芦淞区', 'L', '113.15841867236', '27.791508825947', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430204, '石峰区', 'S', '113.12456791567', '27.880705165595', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430211, '天元区', 'T', '113.08954055842', '27.833083519485', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430212, '渌口区', 'L', '113.15042671773', '27.704322804857', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430223, '攸县', 'Y', '113.35157834169', '27.005771565213', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430224, '茶陵县', 'C', '113.54547165714', '26.78358911036', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430225, '炎陵县', 'Y', '113.77941879832', '26.496060691599', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430271, '云龙示范区', 'Y', '113.17446420357', '27.934854931886', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430281, '醴陵市', 'L', '113.50348315084', '27.652325149951', 430200, 3, 'tr_0 tr_430000 tr_430200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430302, '雨湖区', 'Y', '112.91344959207', '27.862466785111', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430304, '岳塘区', 'Y', '112.97558942655', '27.877720506364', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430321, '湘潭县', 'X', '112.95750536884', '27.784982534656', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430371, '湖南湘潭高新技术产业园区', 'H', '112.95046418076', '27.835702227136', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430372, '湘潭昭山示范区', 'X', '113.01812844052', '27.97161027839', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430373, '湘潭九华示范区', 'X', '112.94707945543', '27.916546191684', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430381, '湘乡市', 'X', '112.54149155341', '27.740190553344', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430382, '韶山市', 'S', '112.53349932929', '27.921043749631', 430300, 3, 'tr_0 tr_430000 tr_430300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430405, '珠晖区', 'Z', '112.62659414282', '26.900265361946', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430406, '雁峰区', 'Y', '112.62358823292', '26.89436829036', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430407, '石鼓区', 'S', '112.60452969339', '26.948961867165', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430408, '蒸湘区', 'Z', '112.57344401089', '26.917719877877', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430412, '南岳区', 'N', '112.74557434825', '27.238360474562', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430421, '衡阳县', 'H', '112.37755268433', '26.975294950861', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430422, '衡南县', 'H', '112.68440252779', '26.744531956772', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430423, '衡山县', 'H', '112.87556328771', '27.235996029656', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430424, '衡东县', 'H', '112.95949529521', '27.087042820265', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430426, '祁东县', 'Q', '112.09644737847', '26.805995255191', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430471, '衡阳综合保税区', 'H', '112.57844721326', '26.899576139189', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430472, '湖南衡阳高新技术产业园区', 'H', '112.57844721326', '26.899576139189', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430473, '湖南衡阳松木经济开发区', 'H', '112.57844721326', '26.899576139189', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430481, '耒阳市', 'L', '112.86659721058', '26.428065593928', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430482, '常宁市', 'C', '112.40556050266', '26.426720432257', 430400, 3, 'tr_0 tr_430000 tr_430400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430502, '双清区', 'S', '111.50344150643', '27.239108783297', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430503, '大祥区', 'D', '111.44552828921', '27.227013968694', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430511, '北塔区', 'B', '111.45849694619', '27.251536276174', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430521, '邵东县', 'S', '111.75049070296', '27.264507471566', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430522, '新邵县', 'X', '111.46444938799', '27.32713173916', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430523, '邵阳县', 'S', '111.28050768064', '26.996528332196', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430524, '隆回县', 'L', '111.03950668528', '27.119946440019', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430525, '洞口县', 'D', '110.58257909625', '27.065975437799', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430527, '绥宁县', 'S', '110.16241987038', '26.588422719333', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430528, '新宁县', 'X', '110.86349072744', '26.439723697954', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430529, '城步苗族自治县', 'C', '110.32853713032', '26.396203220078', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430581, '武冈市', 'W', '110.63840761588', '26.732898572992', 430500, 3, 'tr_0 tr_430000 tr_430500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430602, '岳阳楼区', 'Y', '113.13648070435', '29.377995036881', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430603, '云溪区', 'Y', '113.27840659691', '29.479907141133', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430611, '君山区', 'J', '113.0125171491', '29.467129185832', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430621, '岳阳县', 'Y', '113.1225444825', '29.150269316045', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430623, '华容县', 'H', '112.54746151216', '29.536286434382', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430624, '湘阴县', 'X', '112.88952187736', '28.676676377581', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430626, '平江县', 'P', '113.58760362284', '28.707564248115', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430671, '岳阳市屈原管理区', 'Y', '112.92259003029', '28.866288191728', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430681, '汨罗市', 'M', '113.07349286947', '28.812454694812', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430682, '临湘市', 'L', '113.45656151', '29.482801373395', 430600, 3, 'tr_0 tr_430000 tr_430600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430702, '武陵区', 'W', '111.68954489616', '29.060783476578', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430703, '鼎城区', 'D', '111.68752209182', '29.024443397066', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430721, '安乡县', 'A', '112.1775061558', '29.41732043222', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430722, '汉寿县', 'H', '111.97641193356', '28.912287603085', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430723, '澧县', 'L', '111.76553354736', '29.638946004609', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430724, '临澧县', 'L', '111.65358500797', '29.446543990119', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430725, '桃源县', 'T', '111.49540733145', '28.908694006999', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430726, '石门县', 'S', '111.38645140702', '29.59036596665', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430771, '常德市西洞庭管理区', 'C', '112.0093067782', '29.197804478833', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430781, '津市市', 'J', '111.88451734602', '29.611258543007', 430700, 3, 'tr_0 tr_430000 tr_430700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430802, '永定区', 'Y', '110.54443192397', '29.126190558381', 430800, 3, 'tr_0 tr_430000 tr_430800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430811, '武陵源区', 'W', '110.5574989454', '29.351681136671', 430800, 3, 'tr_0 tr_430000 tr_430800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430821, '慈利县', 'C', '111.14547125235', '29.435986725969', 430800, 3, 'tr_0 tr_430000 tr_430800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430822, '桑植县', 'S', '110.17041335213', '29.405923219415', 430800, 3, 'tr_0 tr_430000 tr_430800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430902, '资阳区', 'Z', '112.33043548238', '28.597234549737', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430903, '赫山区', 'H', '112.38059794001', '28.584983567573', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430921, '南县', 'N', '112.40254156734', '29.367069853363', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430922, '桃江县', 'T', '112.16254146398', '28.523870869898', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430923, '安化县', 'A', '111.21949270432', '28.380053748765', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430971, '益阳市大通湖管理区', 'Y', '112.65023278281', '29.193681230112', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430972, '湖南益阳高新技术产业园区', 'H', '112.3715604476', '28.816150235875', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430981, '沅江市', 'Y', '112.36053222035', '28.850233588583', 430900, 3, 'tr_0 tr_430000 tr_430900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431002, '北湖区', 'B', '113.01748199382', '25.79081459434', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431003, '苏仙区', 'S', '113.04842340846', '25.806737374104', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431021, '桂阳县', 'G', '112.74056036622', '25.759775327893', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431022, '宜章县', 'Y', '112.95547924076', '25.405713969356', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431023, '永兴县', 'Y', '113.12253316386', '26.132968478533', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431024, '嘉禾县', 'J', '112.37558377831', '25.593421718268', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431025, '临武县', 'L', '112.57041115183', '25.282527010969', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431026, '汝城县', 'R', '113.69154466692', '25.556056733978', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431027, '桂东县', 'G', '113.9515936018', '26.083173927327', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431028, '安仁县', 'A', '113.27542359381', '26.715682788508', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431081, '资兴市', 'Z', '113.24255612233', '25.981873602722', 431000, 3, 'tr_0 tr_430000 tr_431000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431102, '零陵区', 'L', '111.63750237493', '26.227682089779', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431103, '冷水滩区', 'L', '111.59842608526', '26.467705510832', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431121, '祁阳县', 'Q', '111.84742029288', '26.586434994948', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431122, '东安县', 'D', '111.32354235354', '26.398288039365', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431123, '双牌县', 'S', '111.6675938129', '25.967169239803', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431124, '道县', 'D', '111.60740437934', '25.53252996283', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431125, '江永县', 'J', '111.35043663236', '25.279720667918', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431126, '宁远县', 'N', '111.95245340697', '25.57705193746', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431127, '蓝山县', 'L', '112.20343493586', '25.37593472464', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431128, '新田县', 'X', '112.21040920018', '25.909825802754', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431129, '江华瑶族自治县', 'J', '111.58545203845', '25.191348924015', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431171, '永州经济技术开发区', 'Y', '111.61945505792', '26.4258641179', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431172, '永州市金洞管理区', 'Y', '112.09909809837', '26.297256941493', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431173, '永州市回龙圩管理区', 'Y', '111.35307783022', '25.173038319623', 431100, 3, 'tr_0 tr_430000 tr_431100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431202, '鹤城区', 'H', '110.04639994092', '27.585225763164', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431221, '中方县', 'Z', '109.95146189432', '27.44608117406', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431222, '沅陵县', 'Y', '110.40043076602', '28.459018102626', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431223, '辰溪县', 'C', '110.19048661755', '28.012605313813', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431224, '溆浦县', 'X', '110.60155112895', '27.913963373886', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431225, '会同县', 'H', '109.74158556792', '26.893383817274', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431226, '麻阳苗族自治县', 'M', '109.80943628984', '27.87193016295', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431227, '新晃侗族自治县', 'X', '109.18147151144', '27.358782968573', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431228, '芷江侗族自治县', 'Z', '109.6914022696', '27.449513277765', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431229, '靖州苗族侗族自治县', 'J', '109.70245160703', '26.581321351066', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431230, '通道侗族自治县', 'T', '109.79044548256', '26.164219864712', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431271, '怀化市洪江管理区', 'H', '109.8435098263', '27.215077093932', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431281, '洪江市', 'H', '109.8435098263', '27.215077093932', 431200, 3, 'tr_0 tr_430000 tr_431200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431302, '娄星区', 'L', '112.00855842504', '27.735604842109', 431300, 3, 'tr_0 tr_430000 tr_431300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431321, '双峰县', 'S', '112.18146049666', '27.462982658573', 431300, 3, 'tr_0 tr_430000 tr_431300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431322, '新化县', 'X', '111.334515335', '27.732666751066', 431300, 3, 'tr_0 tr_430000 tr_431300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431381, '冷水江市', 'L', '111.44153972291', '27.692058848958', 431300, 3, 'tr_0 tr_430000 tr_431300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(431382, '涟源市', 'L', '111.67056199396', '27.698167532255', 431300, 3, 'tr_0 tr_430000 tr_431300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433101, '吉首市', 'J', '109.70444880967', '28.267493127593', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433122, '泸溪县', 'L', '110.22659921769', '28.221873097569', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433123, '凤凰县', 'F', '109.6055266883', '27.953847809726', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433124, '花垣县', 'H', '109.48856183128', '28.577909934397', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433125, '保靖县', 'B', '109.66647357306', '28.705968872486', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433126, '古丈县', 'G', '109.95750740057', '28.623083527843', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433127, '永顺县', 'Y', '109.86358578665', '28.985774485682', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433130, '龙山县', 'L', '109.45041573696', '29.464121765857', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433172, '湖南吉首经济开发区', 'H', '109.70444880967', '28.267493127593', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(433173, '湖南永顺经济开发区', 'H', '109.86358578665', '28.985774485682', 433100, 3, 'tr_0 tr_430000 tr_433100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440103, '荔湾区', 'L', '113.25050226337', '23.131791134975', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440104, '越秀区', 'Y', '113.273426481', '23.135260120148', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440105, '海珠区', 'H', '113.32353998097', '23.088981296648', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440106, '天河区', 'T', '113.36850942428', '23.130357835105', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440111, '白云区', 'B', '113.27943309062', '23.164316834456', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440112, '黄埔区', 'H', '113.48707083969', '23.187491541425', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440113, '番禺区', 'F', '113.39046958043', '22.943830731518', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440114, '花都区', 'H', '113.22657580629', '23.411161504876', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440115, '南沙区', 'N', '113.53143554372', '22.807929296528', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440117, '从化区', 'C', '113.59358543922', '23.553985922578', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440118, '增城区', 'Z', '113.8175456689', '23.266592400631', 440100, 3, 'tr_0 tr_440000 tr_440100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440203, '武江区', 'W', '113.59455578884', '24.798486030733', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440204, '浈江区', 'Z', '113.61747740137', '24.810413749784', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440205, '曲江区', 'Q', '113.61150106465', '24.68840784638', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440222, '始兴县', 'S', '114.06856735205', '24.958558154346', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440224, '仁化县', 'R', '113.75544293443', '25.092287524428', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440229, '翁源县', 'W', '114.13642723669', '24.356594490867', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440232, '乳源瑶族自治县', 'R', '113.28243136492', '24.782333322942', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440233, '新丰县', 'X', '114.21351173078', '24.065546505164', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440281, '乐昌市', 'L', '113.3545786821', '25.135591561195', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440282, '南雄市', 'N', '114.31857889065', '25.123526537362', 440200, 3, 'tr_0 tr_440000 tr_440200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440303, '罗湖区', 'L', '114.13743190157', '22.554484875856', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440304, '福田区', 'F', '114.06154700466', '22.528465912072', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440305, '南山区', 'N', '113.93653916925', '22.538500195784', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440306, '宝安区', 'B', '113.89042744066', '22.560032908925', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440307, '龙岗区', 'L', '114.25445487896', '22.726016550781', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440308, '盐田区', 'Y', '114.2434301551', '22.563437914836', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440309, '龙华区', 'L', '114.04852876121', '22.757596649222', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440310, '坪山区', 'P', '114.35047403625', '22.716233464749', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440311, '光明区', 'G', '113.94256006193', '22.754465883635', 440300, 3, 'tr_0 tr_440000 tr_440300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440402, '香洲区', 'X', '113.55047243408', '22.273003861799', 440400, 3, 'tr_0 tr_440000 tr_440400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440403, '斗门区', 'D', '113.30346725453', '22.215515662229', 440400, 3, 'tr_0 tr_440000 tr_440400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440404, '金湾区', 'J', '113.36951705357', '22.152576780675', 440400, 3, 'tr_0 tr_440000 tr_440400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440507, '龙湖区', 'L', '116.72352464693', '23.377775780628', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440511, '金平区', 'J', '116.70955006744', '23.371750385773', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440512, '濠江区', 'H', '116.73351658895', '23.291546359757', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440513, '潮阳区', 'C', '116.6085145027', '23.270854956943', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440514, '潮南区', 'C', '116.43949131427', '23.256341432673', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440515, '澄海区', 'C', '116.76242504839', '23.472341401523', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440523, '南澳县', 'N', '117.03049603113', '23.427812045946', 440500, 3, 'tr_0 tr_440000 tr_440500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440604, '禅城区', 'C', '113.12950518241', '23.015374368816', 440600, 3, 'tr_0 tr_440000 tr_440600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440605, '南海区', 'N', '113.14944567828', '23.035011446003', 440600, 3, 'tr_0 tr_440000 tr_440600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440606, '顺德区', 'S', '113.30045343954', '22.810453426795', 440600, 3, 'tr_0 tr_440000 tr_440600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440607, '三水区', 'S', '112.90347085515', '23.161920493984', 440600, 3, 'tr_0 tr_440000 tr_440600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440608, '高明区', 'G', '112.89947240749', '22.90634960163', 440600, 3, 'tr_0 tr_440000 tr_440600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440703, '蓬江区', 'P', '113.08454642894', '22.601065786023', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440704, '江海区', 'J', '113.11755718015', '22.566115451824', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440705, '新会区', 'X', '113.03845482239', '22.46511306052', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440781, '台山市', 'T', '112.80044482505', '22.257923470251', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440783, '开平市', 'K', '112.70446429491', '22.382499490201', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440784, '鹤山市', 'H', '112.97052666653', '22.771169431377', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440785, '恩平市', 'E', '112.31143757848', '22.189035201534', 440700, 3, 'tr_0 tr_440000 tr_440700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440802, '赤坎区', 'C', '110.37253254096', '21.272134812703', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440803, '霞山区', 'X', '110.40442535096', '21.198227185303', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440804, '坡头区', 'P', '110.46256709711', '21.250376738599', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440811, '麻章区', 'M', '110.34057918516', '21.269188766567', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440823, '遂溪县', 'S', '110.25651530642', '21.383102962029', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440825, '徐闻县', 'X', '110.18247274427', '20.331723686702', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440881, '廉江市', 'L', '110.29244770646', '21.615816495305', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440882, '雷州市', 'L', '110.10258050648', '20.919880592716', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440883, '吴川市', 'W', '110.78645034015', '21.447262768557', 440800, 3, 'tr_0 tr_440000 tr_440800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440902, '茂南区', 'M', '110.92554576188', '21.647152082304', 440900, 3, 'tr_0 tr_440000 tr_440900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440904, '电白区', 'D', '111.02047123221', '21.520351188198', 440900, 3, 'tr_0 tr_440000 tr_440900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440981, '高州市', 'G', '110.85947386452', '21.924048896771', 440900, 3, 'tr_0 tr_440000 tr_440900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440982, '化州市', 'H', '110.6464310112', '21.67023109387', 440900, 3, 'tr_0 tr_440000 tr_440900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(440983, '信宜市', 'X', '110.95358169717', '22.36009314173', 440900, 3, 'tr_0 tr_440000 tr_440900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441202, '端州区', 'D', '112.49156022979', '23.057563726176', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441203, '鼎湖区', 'D', '112.57443448255', '23.164308112716', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441204, '高要区', 'G', '112.46444604577', '23.031895546866', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441223, '广宁县', 'G', '112.44742387501', '23.641035726333', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441224, '怀集县', 'H', '112.19146878783', '23.917842129185', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441225, '封开县', 'F', '111.51852585255', '23.429768921261', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441226, '德庆县', 'D', '111.79155377493', '23.15137330611', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441284, '四会市', 'S', '112.7405791408', '23.332381005175', 441200, 3, 'tr_0 tr_440000 tr_441200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441302, '惠城区', 'H', '114.38949004962', '23.089725972544', 441300, 3, 'tr_0 tr_440000 tr_441300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441303, '惠阳区', 'H', '114.46346443037', '22.794720878571', 441300, 3, 'tr_0 tr_440000 tr_441300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441322, '博罗县', 'B', '114.29657265143', '23.178805592433', 441300, 3, 'tr_0 tr_440000 tr_441300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441323, '惠东县', 'H', '114.72642585138', '22.991443112002', 441300, 3, 'tr_0 tr_440000 tr_441300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441324, '龙门县', 'L', '114.26143022124', '23.733838340062', 441300, 3, 'tr_0 tr_440000 tr_441300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441402, '梅江区', 'M', '116.12353597667', '24.315878769038', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441403, '梅县区', 'M', '116.08856170928', '24.270999314695', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441422, '大埔县', 'D', '116.70155892129', '24.353459468582', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441423, '丰顺县', 'F', '116.18845382094', '23.745738303255', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441424, '五华县', 'W', '115.78248548653', '23.938408899571', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441426, '平远县', 'P', '115.89747694601', '24.572414126137', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441427, '蕉岭县', 'J', '116.17743924793', '24.664992548662', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441481, '兴宁市', 'X', '115.73757946359', '24.142293779322', 441400, 3, 'tr_0 tr_440000 tr_441400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441502, '城区', 'C', '115.37153074806', '22.784551839489', 441500, 3, 'tr_0 tr_440000 tr_441500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441521, '海丰县', 'H', '115.32944477561', '22.972744260966', 441500, 3, 'tr_0 tr_440000 tr_441500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441523, '陆河县', 'L', '115.66648271471', '23.30767707649', 441500, 3, 'tr_0 tr_440000 tr_441500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441581, '陆丰市', 'L', '115.78802975191', '22.967876723873', 441500, 3, 'tr_0 tr_440000 tr_441500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441602, '源城区', 'Y', '114.70843899033', '23.740298338347', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441621, '紫金县', 'Z', '115.19044771834', '23.641430253189', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441622, '龙川县', 'L', '115.26655548485', '24.105850721955', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441623, '连平县', 'L', '114.49544419635', '24.375808067414', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441624, '和平县', 'H', '114.9454488143', '24.448252767689', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441625, '东源县', 'D', '114.7535083252', '23.794257873114', 441600, 3, 'tr_0 tr_440000 tr_441600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441702, '江城区', 'J', '111.96145451801', '21.868127886755', 441700, 3, 'tr_0 tr_440000 tr_441700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441704, '阳东区', 'Y', '112.01857947215', '21.873996844319', 441700, 3, 'tr_0 tr_440000 tr_441700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441721, '阳西县', 'Y', '111.62448107725', '21.758700627505', 441700, 3, 'tr_0 tr_440000 tr_441700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441781, '阳春市', 'Y', '111.7975361303', '22.17601480732', 441700, 3, 'tr_0 tr_440000 tr_441700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441802, '清城区', 'Q', '113.06947663537', '23.704022037925', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441803, '清新区', 'Q', '112.99155779512', '23.754270337093', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441821, '佛冈县', 'F', '113.53844124873', '23.885475421111', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441823, '阳山县', 'Y', '112.64751954085', '24.47094363588', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441825, '连山壮族瑶族自治县', 'L', '112.10042570409', '24.576845604093', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441826, '连南瑶族自治县', 'L', '112.29351728187', '24.73154858148', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441881, '英德市', 'Y', '113.42144297474', '24.191939355217', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441882, '连州市', 'L', '112.38357258887', '24.786466855047', 441800, 3, 'tr_0 tr_440000 tr_441800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900003, '东城街道办事处', 'D', '113.78961542643', '23.033927867022', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900004, '南城街道办事处', 'N', '113.74972154669', '23.02491560037', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900005, '万江街道办事处', 'W', '113.70128466119', '23.044382337638', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900006, '莞城街道办事处', 'G', '113.7555643548', '23.04532373021', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900101, '石碣镇', 'S', '113.81395530616', '23.105172244651', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900102, '石龙镇', 'S', '113.84749077289', '23.115219876975', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900103, '茶山镇', 'C', '113.89350241139', '23.069002516534', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900104, '石排镇', 'S', '113.96394649371', '23.088334509001', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900105, '企石镇', 'Q', '114.04851828338', '23.070690716193', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900106, '横沥镇', 'H', '113.98801324096', '23.030051448767', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900107, '桥头镇', 'Q', '114.10677408198', '23.020458678747', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900108, '谢岗镇', 'X', '114.19511437465', '22.946513843008', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900109, '东坑镇', 'D', '113.95246820282', '23.002958656049', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900110, '常平镇', 'C', '114.02458867145', '22.979369177741', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900111, '寮步镇', 'L', '113.88349112257', '22.996428153649', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900112, '樟木头镇', 'Z', '114.11559876672', '22.912795269745', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900113, '大朗镇', 'D', '113.94820653279', '22.912348752542', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900114, '黄江镇', 'H', '114.00621531625', '22.872431801821', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900115, '清溪镇', 'Q', '114.18744982903', '22.841601621999', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900116, '塘厦镇', 'T', '114.08442795001', '22.811576132112', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900117, '凤岗镇', 'F', '114.17560299034', '22.722315801247', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900118, '大岭山镇', 'D', '113.83293372133', '22.903546239236', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900119, '长安镇', 'Z', '113.76998309965', '22.795308241444', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900121, '虎门镇', 'H', '113.68188667267', '22.818449805406', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900122, '厚街镇', 'H', '113.7081456375', '22.923357615893', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900123, '沙田镇', 'S', '113.60821459687', '22.907479676518', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900124, '道滘镇', 'D', '113.66267069882', '22.982801242639', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900125, '洪梅镇', 'H', '113.6125183112', '22.978946913376', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900126, '麻涌镇', 'M', '113.58837988097', '23.057083015858', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900127, '望牛墩镇', 'W', '113.64023583492', '23.047597838769', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900128, '中堂镇', 'Z', '113.65890566238', '23.096485679975', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900129, '高埗镇', 'G', '113.74213386638', '23.100270479205', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900401, '松山湖管委会', 'S', '113.90386183402', '22.928504587758', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900402, '东莞港', 'D', '113.75842045788', '23.027308411643', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(441900403, '东莞生态园', 'D', '113.93331900631', '23.069150651008', 441900, 3, 'tr_0 tr_440000 tr_441900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000001, '石岐区街道办事处', 'S', '113.39476330111', '22.543405990677', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000002, '东区街道办事处', 'D', '113.39942236263', '22.522314670791', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000003, '火炬开发区街道办事处', 'H', '113.47638423802', '22.54191612433', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000004, '西区街道办事处', 'X', '113.34742851429', '22.557446683319', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000005, '南区街道办事处', 'N', '113.34166389111', '22.474593624741', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000006, '五桂山街道办事处', 'W', '113.40930659782', '22.451434375841', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000100, '小榄镇', 'X', '113.25710033351', '22.668653898989', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000101, '黄圃镇', 'H', '113.38940119784', '22.732151367196', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000102, '民众镇', 'M', '113.50030740281', '22.624234006676', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000103, '东凤镇', 'D', '113.26337563889', '22.696772350456', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000104, '东升镇', 'D', '113.31347763067', '22.605137527398', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000105, '古镇镇', 'G', '113.18899941194', '22.636034421686', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000106, '沙溪镇', 'S', '113.35710852331', '22.513668030794', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000107, '坦洲镇', 'T', '113.46831862593', '22.283731940242', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000108, '港口镇', 'G', '113.38354521878', '22.577121999043', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000109, '三角镇', 'S', '113.42740190231', '22.685663488493', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000110, '横栏镇', 'H', '113.24834255727', '22.574461443704', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000111, '南头镇', 'N', '113.29481042537', '22.721261074602', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000112, '阜沙镇', 'F', '113.34269477842', '22.666128002352', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000113, '南朗镇', 'N', '113.56057493505', '22.519486447352', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000114, '三乡镇', 'S', '113.42695556574', '22.371470122528', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000115, '板芙镇', 'B', '113.33339573359', '22.395149046719', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000116, '大涌镇', 'D', '113.29404791311', '22.483908949365', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(442000117, '神湾镇', 'S', '113.35331518036', '22.32576323421', 442000, 3, 'tr_0 tr_440000 tr_442000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445102, '湘桥区', 'X', '116.63446160819', '23.680686981566', 445100, 3, 'tr_0 tr_440000 tr_445100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445103, '潮安区', 'C', '116.68452606069', '23.468357129831', 445100, 3, 'tr_0 tr_440000 tr_445100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445122, '饶平县', 'R', '117.01044917588', '23.670347111195', 445100, 3, 'tr_0 tr_440000 tr_445100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445202, '榕城区', 'R', '116.37351589492', '23.530746417966', 445200, 3, 'tr_0 tr_440000 tr_445200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445203, '揭东区', 'J', '116.41845578398', '23.572485187047', 445200, 3, 'tr_0 tr_440000 tr_445200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445222, '揭西县', 'J', '115.84856088728', '23.437299708209', 445200, 3, 'tr_0 tr_440000 tr_445200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445224, '惠来县', 'H', '116.30144448456', '23.039645374525', 445200, 3, 'tr_0 tr_440000 tr_445200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445281, '普宁市', 'P', '116.17244898117', '23.30363452186', 445200, 3, 'tr_0 tr_440000 tr_445200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430102, '芙蓉区', 'F', '113.03940774487', '28.191913247305', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430103, '天心区', 'T', '112.99659225852', '28.118211217441', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430104, '岳麓区', 'Y', '112.9374476441', '28.241488836473', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430105, '开福区', 'K', '112.99258491764', '28.261378687684', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430111, '雨花区', 'Y', '113.04242155986', '28.142232711654', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430112, '望城区', 'W', '112.8244661432', '28.367403020376', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430121, '长沙县', 'Z', '113.08755916596', '28.251818487944', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430181, '浏阳市', 'L', '113.64939823851', '28.169832216071', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(430182, '宁乡市', 'N', '112.55840691564', '28.284104536209', 430100, 3, 'tr_0 tr_430000 tr_430100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445302, '云城区', 'Y', '112.05052923472', '22.933897802971', 445300, 3, 'tr_0 tr_440000 tr_445300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445303, '云安区', 'Y', '112.00956308992', '23.076892611911', 445300, 3, 'tr_0 tr_440000 tr_445300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445321, '新兴县', 'X', '112.23149683219', '22.701890082606', 445300, 3, 'tr_0 tr_440000 tr_445300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445322, '郁南县', 'Y', '111.54155382446', '23.240174042653', 445300, 3, 'tr_0 tr_440000 tr_445300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(445381, '罗定市', 'L', '111.57648048166', '22.774296060763', 445300, 3, 'tr_0 tr_440000 tr_445300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450102, '兴宁区', 'X', '108.37544497422', '22.860290951255', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450103, '青秀区', 'Q', '108.50143861009', '22.792227439631', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450105, '江南区', 'J', '108.27949435764', '22.787045753588', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450107, '西乡塘区', 'X', '108.31957243762', '22.839651509339', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450108, '良庆区', 'L', '108.32751579392', '22.76284928359', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450109, '邕宁区', 'Y', '108.49342024528', '22.76460044955', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450110, '武鸣区', 'W', '108.28151653318', '23.164515606911', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450123, '隆安县', 'L', '107.70257390338', '23.171585249828', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450124, '马山县', 'M', '108.18356215633', '23.71387772536', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450125, '上林县', 'S', '108.61145148078', '23.438518877663', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450126, '宾阳县', 'B', '108.81650237947', '23.223700543767', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450127, '横县', 'H', '109.2675678064', '22.685572608838', 450100, 3, 'tr_0 tr_450000 tr_450100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450202, '城中区', 'C', '109.4174821502', '24.321314069891', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450203, '鱼峰区', 'Y', '109.44941628225', '24.318521699515', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450204, '柳南区', 'L', '109.39155193285', '24.341578870912', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450205, '柳北区', 'L', '109.40853179342', '24.367867017648', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450206, '柳江区', 'L', '109.33244423878', '24.26081496535', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450222, '柳城县', 'L', '109.25156152934', '24.656370391486', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450223, '鹿寨县', 'L', '109.75755447547', '24.478622266898', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450224, '融安县', 'R', '109.40456325934', '25.230511447128', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450225, '融水苗族自治县', 'R', '109.26256083115', '25.072076504109', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450226, '三江侗族自治县', 'S', '109.61454747223', '25.788830387788', 450200, 3, 'tr_0 tr_450000 tr_450200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450302, '秀峰区', 'X', '110.27043670622', '25.27961848567', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450303, '叠彩区', 'D', '110.30846314624', '25.320233274843', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450304, '象山区', 'X', '110.28742267527', '25.267930010211', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450305, '七星区', 'Q', '110.32453805385', '25.2585670875', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450311, '雁山区', 'Y', '110.3154792716', '25.066213543917', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450312, '临桂区', 'L', '110.21858669186', '25.244301999271', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450321, '阳朔县', 'Y', '110.50347503171', '24.784519191433', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450323, '灵川县', 'L', '110.33253719492', '25.41554953076', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450324, '全州县', 'Q', '111.07956895508', '25.934343027361', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450325, '兴安县', 'X', '110.67851632807', '25.617567220037', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450326, '永福县', 'Y', '109.989590831', '24.985577973084', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450327, '灌阳县', 'G', '111.16755205093', '25.495120752051', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450328, '龙胜各族自治县', 'L', '110.01749399674', '25.804116784254', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450329, '资源县', 'Z', '110.6584391101', '26.048569077338', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450330, '平乐县', 'P', '110.64944626347', '24.63963212806', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450332, '恭城瑶族自治县', 'G', '110.8345596307', '24.837194365911', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450381, '荔浦市', 'L', '110.40143677836', '24.494121641923', 450300, 3, 'tr_0 tr_450000 tr_450300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450403, '万秀区', 'W', '111.32751969101', '23.478845767296', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450405, '长洲区', 'Z', '111.28149914043', '23.491509584406', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450406, '龙圩区', 'L', '111.25344829326', '23.421414485718', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450421, '苍梧县', 'C', '111.55554663956', '23.845998205466', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450422, '藤县', 'T', '110.92149925488', '23.38100991555', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450423, '蒙山县', 'M', '110.53141700425', '24.200017445935', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450481, '岑溪市', 'C', '111.00143182659', '22.92462127872', 450400, 3, 'tr_0 tr_450000 tr_450400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450502, '海城区', 'H', '109.12452136755', '21.481065838236', 450500, 3, 'tr_0 tr_450000 tr_450500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450503, '银海区', 'Y', '109.14654476441', '21.454768668895', 450500, 3, 'tr_0 tr_450000 tr_450500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450512, '铁山港区', 'T', '109.42847264862', '21.53529504285', 450500, 3, 'tr_0 tr_450000 tr_450500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450521, '合浦县', 'H', '109.2134386113', '21.667005735642', 450500, 3, 'tr_0 tr_450000 tr_450500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450602, '港口区', 'G', '108.38648254385', '21.649565586624', 450600, 3, 'tr_0 tr_450000 tr_450600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450603, '防城区', 'F', '108.36044848238', '21.775411305197', 450600, 3, 'tr_0 tr_450000 tr_450600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450621, '上思县', 'S', '107.99044264125', '22.15991408311', 450600, 3, 'tr_0 tr_450000 tr_450600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450681, '东兴市', 'D', '107.97748898597', '21.55361543358', 450600, 3, 'tr_0 tr_450000 tr_450600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450802, '港北区', 'G', '109.57843298566', '23.117563632764', 450800, 3, 'tr_0 tr_450000 tr_450800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450803, '港南区', 'G', '109.6065534515', '23.08123957836', 450800, 3, 'tr_0 tr_450000 tr_450800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450804, '覃塘区', 'T', '109.45942672936', '23.133251089213', 450800, 3, 'tr_0 tr_450000 tr_450800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450821, '平南县', 'P', '110.39845197864', '23.545506098828', 450800, 3, 'tr_0 tr_450000 tr_450800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450881, '桂平市', 'G', '110.08552599672', '23.400048883699', 450800, 3, 'tr_0 tr_450000 tr_450800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450902, '玉州区', 'Y', '110.15743140022', '22.634492736172', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450903, '福绵区', 'F', '110.08853765577', '22.563705412249', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450921, '容县', 'R', '110.56453016229', '22.863665599935', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450922, '陆川县', 'L', '110.27045619945', '22.327221527769', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450923, '博白县', 'B', '109.98255305648', '22.278674815493', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450924, '兴业县', 'X', '109.88155180701', '22.742267653423', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450981, '北流市', 'B', '110.36057016581', '22.713958021611', 450900, 3, 'tr_0 tr_450000 tr_450900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451002, '右江区', 'Y', '106.62558913969', '23.907084503109', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451021, '田阳县', 'T', '106.9214125525', '23.742005722478', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451022, '田东县', 'T', '107.13249943541', '23.603129804015', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451023, '平果县', 'P', '107.59657106849', '23.334922742592', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451024, '德保县', 'D', '106.62158260728', '23.328994351286', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451026, '那坡县', 'N', '105.83942261017', '23.393793831292', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451027, '凌云县', 'L', '106.56841567705', '24.354015240604', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451028, '乐业县', 'L', '106.56342972215', '24.783216467053', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451029, '田林县', 'T', '106.23449791231', '24.300534611051', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451030, '西林县', 'X', '105.10049410469', '24.495667790362', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451031, '隆林各族自治县', 'L', '105.3504594704', '24.776813610296', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451081, '靖西市', 'J', '106.42445269708', '23.140125669019', 451000, 3, 'tr_0 tr_450000 tr_451000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451102, '八步区', 'B', '111.55856737149', '24.417531040919', 451100, 3, 'tr_0 tr_450000 tr_451100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451103, '平桂区', 'P', '111.47841426578', '24.462001422773', 451100, 3, 'tr_0 tr_450000 tr_451100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451121, '昭平县', 'Z', '110.81757491928', '24.175106050636', 451100, 3, 'tr_0 tr_450000 tr_451100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451122, '钟山县', 'Z', '111.30958574015', '24.531673107939', 451100, 3, 'tr_0 tr_450000 tr_451100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451123, '富川瑶族自治县', 'F', '111.28451124863', '24.820159951323', 451100, 3, 'tr_0 tr_450000 tr_451100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451202, '金城江区', 'J', '108.04350707483', '24.695679382239', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451203, '宜州区', 'Y', '108.64353158748', '24.491084367739', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451221, '南丹县', 'N', '107.54748028934', '24.981849775485', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451222, '天峨县', 'T', '107.17845647579', '25.005664155232', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451223, '凤山县', 'F', '107.04841983631', '24.553217796777', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451224, '东兰县', 'D', '107.3805041595', '24.516871463381', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451225, '罗城仫佬族自治县', 'L', '108.91157445325', '24.783084996429', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451226, '环江毛南族自治县', 'H', '108.26444306917', '24.832087938551', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451227, '巴马瑶族自治县', 'B', '107.26648125302', '24.14726480427', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451228, '都安瑶族自治县', 'D', '108.11145804765', '23.937331261923', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451229, '大化瑶族自治县', 'D', '108.00441075294', '23.742818222963', 451200, 3, 'tr_0 tr_450000 tr_451200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451302, '兴宾区', 'X', '109.24149907034', '23.733211038144', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451321, '忻城县', 'X', '108.67256239612', '24.071888636576', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451322, '象州县', 'X', '109.71146215028', '23.979680993271', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451323, '武宣县', 'W', '109.66944220328', '23.600404197633', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451324, '金秀瑶族自治县', 'J', '110.19550625891', '24.136319486486', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451381, '合山市', 'H', '108.89256576969', '23.81226007105', 451300, 3, 'tr_0 tr_450000 tr_451300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451402, '江州区', 'J', '107.35953321738', '22.411245728018', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451421, '扶绥县', 'F', '107.91046515426', '22.641097136345', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451422, '宁明县', 'N', '107.08352381902', '22.145884844184', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451423, '龙州县', 'L', '106.86058190847', '22.348298905766', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451424, '大新县', 'D', '107.20755690312', '22.836229044406', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451425, '天等县', 'T', '107.14947264852', '23.08750581209', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(451481, '凭祥市', 'P', '106.77352361814', '22.100152592954', 451400, 3, 'tr_0 tr_450000 tr_451400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460105, '秀英区', 'X', '110.30043588821', '20.013642385161', 460100, 3, 'tr_0 tr_460000 tr_460100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460106, '龙华区', 'L', '110.33554112854', '20.036320733521', 460100, 3, 'tr_0 tr_460000 tr_460100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460107, '琼山区', 'Q', '110.36052605901', '20.009150644491', 460100, 3, 'tr_0 tr_460000 tr_460100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460108, '美兰区', 'M', '110.37349839904', '20.034646217625', 460100, 3, 'tr_0 tr_460000 tr_460100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460202, '海棠区', 'H', '109.72350007292', '18.33787879371', 460200, 3, 'tr_0 tr_460000 tr_460200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460203, '吉阳区', 'J', '109.52055165827', '18.257057667262', 460200, 3, 'tr_0 tr_460000 tr_460200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460204, '天涯区', 'T', '109.46246255283', '18.306919633503', 460200, 3, 'tr_0 tr_460000 tr_460200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460205, '崖州区', 'Y', '109.22846124383', '18.44463053478', 460200, 3, 'tr_0 tr_460000 tr_460200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460321, '西沙群岛', 'X', '111.67308686126', '16.497085431044', 460300, 3, 'tr_0 tr_460000 tr_460300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460322, '南沙群岛', 'N', '112.66030170907', '4.9743661921368', 460300, 3, 'tr_0 tr_460000 tr_460300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460323, '中沙群岛的岛礁及其海域', 'Z', '112.34048204137', '16.838953334409', 460300, 3, 'tr_0 tr_460000 tr_460300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400100, '那大镇', 'N', '109.552961497', '19.52127763772', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400101, '和庆镇', 'H', '109.64738779153', '19.531275426074', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400102, '南丰镇', 'N', '109.6054369934', '19.346095790543', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400103, '大成镇', 'D', '109.42116531507', '19.548276240672', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400104, '雅星镇', 'Y', '109.19716320191', '19.517956948407', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400105, '兰洋镇', 'L', '109.67367138789', '19.466430878427', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400106, '光村镇', 'G', '109.50795789562', '19.809145677126', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400107, '木棠镇', 'M', '109.35673473687', '19.809926770596', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400108, '海头镇', 'H', '108.95966166166', '19.509695855917', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400109, '峨蔓镇', 'E', '109.30390924357', '19.863144800976', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400111, '王五镇', 'W', '109.33806829512', '19.645800769747', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400112, '白马井镇', 'B', '109.58745583569', '19.527146110044', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400113, '中和镇', 'Z', '109.35613533713', '19.749465537088', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400114, '排浦镇', 'P', '109.16975400269', '19.644673698003', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400115, '东成镇', 'D', '109.4680333127', '19.709924104042', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400116, '新州镇', 'X', '109.32260133284', '19.720234743232', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400499, '洋浦经济开发区', 'Y', '109.19229656623', '19.775218244804', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(460400500, '华南热作学院', 'H', '109.58745583569', '19.527146110044', 460400, 3, 'tr_0 tr_460000 tr_460400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469001, '五指山市', 'W', '109.52354032071', '18.780994100706', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469002, '琼海市', 'Q', '110.48054452595', '19.264254019918', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469005, '文昌市', 'W', '110.80450870632', '19.549062083121', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469006, '万宁市', 'W', '110.39943436555', '18.800106988303', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469007, '东方市', 'D', '108.65856652679', '19.101104731289', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469021, '定安县', 'D', '104.36878601078', '31.589181642776', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469022, '屯昌县', 'T', '110.10857732457', '19.357374924278', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469023, '澄迈县', 'C', '110.01351091011', '19.744348671646', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469024, '临高县', 'L', '109.69744301483', '19.919474770278', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469025, '白沙黎族自治县', 'B', '109.45747066911', '19.231378733013', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469026, '昌江黎族自治县', 'C', '109.06246408734', '19.303997876684', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469027, '乐东黎族自治县', 'L', '109.18050798895', '18.755871493855', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469028, '陵水黎族自治县', 'L', '110.04446409255', '18.512331595699', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469029, '保亭黎族苗族自治县', 'B', '109.7034815143', '18.646909955376', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(469030, '琼中黎族苗族自治县', 'Q', '109.84451062847', '19.039163789181', 469000, 3, 'tr_0 tr_460000 tr_469000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500101, '万州区', 'W', '108.4155583705', '30.813621636708', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500102, '涪陵区', 'F', '107.39641979754', '29.709278197979', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500103, '渝中区', 'Y', '106.57544006681', '29.559090182994', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500104, '大渡口区', 'D', '106.48853359011', '29.490107128556', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500105, '江北区', 'J', '112.85530302042', '35.520558754673', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500106, '沙坪坝区', 'S', '106.46446511093', '29.547192516541', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500107, '九龙坡区', 'J', '106.51755873943', '29.507927715553', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500108, '南岸区', 'N', '106.6684297786', '29.502683098835', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500109, '北碚区', 'B', '106.40356933975', '29.811602753904', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500110, '綦江区', 'Q', '106.65748419545', '29.034113748311', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500111, '大足区', 'D', '105.72840462545', '29.713113506077', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500112, '渝北区', 'Y', '106.6375590606', '29.723927343007', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500113, '巴南区', 'B', '106.54745425696', '29.40847473977', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500114, '黔江区', 'Q', '108.77759119835', '29.53881256766', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500115, '长寿区', 'Z', '107.08753107007', '29.863520067323', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500116, '江津区', 'J', '106.26559760838', '29.295884374465', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500117, '合川区', 'H', '106.28254108758', '29.978181239534', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500118, '永川区', 'Y', '105.93349936145', '29.362046335949', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500119, '南川区', 'N', '107.10558512437', '29.163478599606', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500120, '璧山区', 'B', '106.23347456267', '29.598346607316', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500151, '铜梁区', 'T', '106.06344949411', '29.850508778722', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500152, '潼南区', 'T', '105.84739903617', '30.197314239664', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500153, '荣昌区', 'R', '105.60141979928', '29.41130739669', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500154, '开州区', 'K', '108.39949765612', '31.166644113193', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500155, '梁平区', 'L', '107.77609725763', '30.660553255023', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500156, '武隆区', 'W', '112.85530302042', '35.520558754673', 500100, 3, 'tr_0 tr_500000 tr_500100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500229, '城口县', 'C', '108.67161164256', '31.953390746293', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500230, '丰都县', 'F', '107.7374806182', '29.869412789214', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500231, '垫江县', 'D', '107.33956587472', '30.3332939685', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500233, '忠县', 'Z', '', '', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500235, '云阳县', 'Y', '108.7034475', '30.936611271975', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500236, '奉节县', 'F', '109.47047275631', '31.024601766549', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500237, '巫山县', 'W', '109.88554550703', '31.080518811736', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500238, '巫溪县', 'W', '109.576402559', '31.404880009858', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500240, '石柱土家族自治县', 'S', '108.12041416638', '30.006108697869', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500241, '秀山土家族苗族自治县', 'X', '109.01357389981', '28.453447864286', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500242, '酉阳土家族苗族自治县', 'Y', '108.7745860071', '28.847040258674', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(500243, '彭水苗族土家族自治县', 'P', '108.17257803588', '29.299462290443', 500200, 3, 'tr_0 tr_500000 tr_500200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510104, '锦江区', 'J', '104.0895617566', '30.661904490317', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510105, '青羊区', 'Q', '104.06744547494', '30.680037807007', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510106, '金牛区', 'J', '104.05740358714', '30.697356042874', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510107, '武侯区', 'W', '104.04942447828', '30.648712685321', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510108, '成华区', 'C', '104.10859155035', '30.665589283983', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510112, '龙泉驿区', 'L', '104.28139696436', '30.562697841', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510113, '青白江区', 'Q', '104.25751245813', '30.884421372736', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510114, '新都区', 'X', '104.16539284504', '30.829407468191', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510115, '温江区', 'W', '103.86357306318', '30.688486836627', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510116, '双流区', 'S', '103.93039154227', '30.580399352821', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510117, '郫都区', 'P', '103.90544568809', '30.799537653573', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510121, '金堂县', 'J', '104.41844263262', '30.868358423946', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510129, '大邑县', 'D', '103.52752981767', '30.593155402402', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510131, '蒲江县', 'P', '103.51257132415', '30.202500428139', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510132, '新津县', 'X', '103.81743303795', '30.416363953297', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510181, '都江堰市', 'D', '103.65353360443', '30.994256893542', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510182, '彭州市', 'P', '103.96556137078', '30.995564002629', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510183, '邛崃市', 'Q', '103.47048112964', '30.416398600854', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510184, '崇州市', 'C', '103.67943336923', '30.636595891379', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510185, '简阳市', 'J', '104.55349406265', '30.417451491353', 510100, 3, 'tr_0 tr_510000 tr_510100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510302, '自流井区', 'Z', '104.7834473259', '29.343498562348', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510303, '贡井区', 'G', '104.72155659154', '29.351476269522', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510304, '大安区', 'D', '104.78041635328', '29.369928541322', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510311, '沿滩区', 'Y', '104.88040907516', '29.278797205251', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510321, '荣县', 'R', '104.42345759121', '29.45180089858', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510322, '富顺县', 'F', '104.98149440603', '29.186886257831', 510300, 3, 'tr_0 tr_510000 tr_510300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510402, '东区', 'D', '101.72554117091', '26.588033173333', 510400, 3, 'tr_0 tr_510000 tr_510400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510403, '西区', 'X', '101.72554117091', '26.588033173333', 510400, 3, 'tr_0 tr_510000 tr_510400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510411, '仁和区', 'R', '101.74444996291', '26.504019493295', 510400, 3, 'tr_0 tr_510000 tr_510400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510421, '米易县', 'M', '102.1164404304', '26.89696797612', 510400, 3, 'tr_0 tr_510000 tr_510400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510422, '盐边县', 'Y', '101.86049854831', '26.688767481964', 510400, 3, 'tr_0 tr_510000 tr_510400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510502, '江阳区', 'J', '105.44154513382', '28.884671972905', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510503, '纳溪区', 'N', '105.37740854586', '28.779359901658', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510504, '龙马潭区', 'L', '105.4445442166', '28.919012274486', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510521, '泸县', 'L', '105.38845608667', '29.157626295708', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510522, '合江县', 'H', '105.83843195885', '28.81779304284', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510524, '叙永县', 'X', '105.45150761142', '28.161714341911', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510525, '古蔺县', 'G', '105.81947079565', '28.044745368759', 510500, 3, 'tr_0 tr_510000 tr_510500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510603, '旌阳区', 'J', '104.42343882821', '31.148596291553', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510604, '罗江区', 'L', '104.51741416083', '31.324178639826', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510623, '中江县', 'Z', '104.68553015058', '31.038953695302', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510681, '广汉市', 'G', '104.28842189311', '30.982415239743', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510682, '什邡市', 'S', '104.17442710355', '31.132889048238', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510683, '绵竹市', 'M', '104.227609305', '31.343592258211', 510600, 3, 'tr_0 tr_510000 tr_510600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510703, '涪城区', 'F', '104.76342033491', '31.46131438858', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510704, '游仙区', 'Y', '104.77242899171', '31.479904474058', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510705, '安州区', 'A', '104.5735550213', '31.540750527876', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510722, '三台县', 'S', '105.10148979833', '31.101585571238', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510723, '盐亭县', 'Y', '105.39550321547', '31.214318764837', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510725, '梓潼县', 'Z', '105.17756684281', '31.648313467681', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510726, '北川羌族自治县', 'B', '104.36158555316', '31.963084103415', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510727, '平武县', 'P', '104.53542150325', '32.414681977696', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510781, '江油市', 'J', '104.75241160088', '31.784128193388', 510700, 3, 'tr_0 tr_510000 tr_510700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510802, '利州区', 'L', '105.85242622329', '32.440207812726', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510811, '昭化区', 'Z', '105.96941892782', '32.329618490159', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510812, '朝天区', 'C', '105.8965888086', '32.649726240308', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510821, '旺苍县', 'W', '106.29649124536', '32.235097383079', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510822, '青川县', 'Q', '105.24540705459', '32.5816168573', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510823, '剑阁县', 'J', '105.53157601887', '32.293478516773', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510824, '苍溪县', 'C', '105.9414826146', '31.738684400617', 510800, 3, 'tr_0 tr_510000 tr_510800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510903, '船山区', 'C', '105.5745228375', '30.531470607829', 510900, 3, 'tr_0 tr_510000 tr_510900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510904, '安居区', 'A', '105.46246730988', '30.361496469746', 510900, 3, 'tr_0 tr_510000 tr_510900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510921, '蓬溪县', 'P', '105.71344605411', '30.763751441791', 510900, 3, 'tr_0 tr_510000 tr_510900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510922, '射洪县', 'S', '105.39450950992', '30.877138522337', 510900, 3, 'tr_0 tr_510000 tr_510900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(510923, '大英县', 'D', '105.24340392313', '30.600810129921', 510900, 3, 'tr_0 tr_510000 tr_510900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511002, '市中区', 'S', '105.07457421786', '29.592710148736', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511011, '东兴区', 'D', '105.08254748773', '29.598485728583', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511024, '威远县', 'W', '104.6744982286', '29.533634931412', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511025, '资中县', 'Z', '104.85849482242', '29.770234032565', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511071, '内江经济开发区', 'N', '105.064588025', '29.58588653832', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511083, '隆昌市', 'L', '105.29457175243', '29.345244662083', 511000, 3, 'tr_0 tr_510000 tr_511000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511102, '市中区', 'S', '103.76755865552', '29.561363941633', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511111, '沙湾区', 'S', '103.55643566073', '29.419272499245', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511112, '五通桥区', 'W', '103.82445508074', '29.413185014439', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511113, '金口河区', 'J', '103.08539389554', '29.250803570124', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511123, '犍为县', '', '', '', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511124, '井研县', 'J', '104.07651071353', '29.65730305908', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511126, '夹江县', 'J', '103.57841009994', '29.743846302985', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511129, '沐川县', 'M', '103.90846703743', '28.962888278216', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511132, '峨边彝族自治县', 'E', '103.26857725338', '29.236089109563', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511133, '马边彝族自治县', 'M', '103.55245419105', '28.841736014812', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511181, '峨眉山市', 'E', '103.4915455741', '29.606975527462', 511100, 3, 'tr_0 tr_510000 tr_511100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511302, '顺庆区', 'S', '106.09841065838', '30.802753098595', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511303, '高坪区', 'G', '106.12554047291', '30.787254931592', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511304, '嘉陵区', 'J', '106.07843297265', '30.764895560139', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511321, '南部县', 'N', '106.04357826971', '31.353705301526', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511322, '营山县', 'Y', '106.57240802852', '31.083002970199', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511323, '蓬安县', 'P', '106.41848194209', '31.034630778271', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511324, '仪陇县', 'Y', '106.30943016844', '31.277597359981', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511325, '西充县', 'X', '105.90761137653', '31.000688020792', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511381, '阆中市', 'L', '106.01156526642', '31.56407455364', 511300, 3, 'tr_0 tr_510000 tr_511300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511402, '东坡区', 'D', '103.83852480217', '30.048272134435', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511403, '彭山区', 'P', '103.87955823007', '30.19885441686', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511421, '仁寿县', 'R', '104.14047690443', '30.001663984301', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511423, '洪雅县', 'H', '103.37960224488', '29.910615837469', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511424, '丹棱县', 'D', '103.51958331729', '30.020362794872', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511425, '青神县', 'Q', '103.85355883179', '29.837054743717', 511400, 3, 'tr_0 tr_510000 tr_511400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511502, '翠屏区', 'C', '104.62643798553', '28.772051773027', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511503, '南溪区', 'N', '104.97651330198', '28.851503648027', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511504, '叙州区', 'X', '104.53944275624', '28.696246394752', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511523, '江安县', 'J', '105.07359488519', '28.729609721855', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511524, '长宁县', 'Z', '104.92756445509', '28.588133452699', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511525, '高县', 'G', '104.52441132032', '28.442510804102', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511526, '珙县', 'G', '104.71557459549', '28.444319765248', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511527, '筠连县', 'Y', '104.51740642378', '28.170174457648', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511528, '兴文县', 'X', '105.24240230064', '28.309904884117', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511529, '屏山县', 'P', '104.35267533908', '28.834274966477', 511500, 3, 'tr_0 tr_510000 tr_511500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511602, '广安区', 'G', '106.64853115608', '30.479768100142', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511603, '前锋区', 'Q', '106.90447959588', '30.506435157767', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511621, '岳池县', 'Y', '106.44641061972', '30.54411986458', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511622, '武胜县', 'W', '106.3024617431', '30.355495660378', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511623, '邻水县', 'L', '106.93640258896', '30.341072518332', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511681, '华蓥市', 'H', '106.78946181601', '30.396307084289', 511600, 3, 'tr_0 tr_510000 tr_511600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511702, '通川区', 'T', '107.51144711201', '31.220931804105', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511703, '达川区', 'D', '107.51841059667', '31.202393360554', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511722, '宣汉县', 'X', '107.7335335663', '31.359754823662', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511723, '开江县', 'K', '107.87542487414', '31.089372149066', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511724, '大竹县', 'D', '107.21157970735', '30.74207661791', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511725, '渠县', 'Q', '106.97958296702', '30.842299283481', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511771, '达州经济开发区', 'D', '107.47459385898', '31.214307723927', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511781, '万源市', 'W', '108.04154069684', '32.087420847789', 511700, 3, 'tr_0 tr_510000 tr_511700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511802, '雨城区', 'Y', '103.03957520533', '30.011061644393', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511803, '名山区', 'M', '103.1154857938', '30.075913663382', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511822, '荥经县', 'X', '102.85343551293', '29.799193512656', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511823, '汉源县', 'H', '102.65857589024', '29.350217385987', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511824, '石棉县', 'S', '102.36640453848', '29.23430487759', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511825, '天全县', 'T', '102.76453022767', '30.072472953275', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511826, '芦山县', 'L', '102.93452771831', '30.149873189563', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511827, '宝兴县', 'B', '102.82148423429', '30.374082112445', 511800, 3, 'tr_0 tr_510000 tr_511800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511902, '巴州区', 'B', '106.77551310771', '31.857685602645', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511903, '恩阳区', 'E', '106.63558190249', '31.802614044176', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511921, '通江县', 'T', '107.25151684321', '31.917714346881', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511922, '南江县', 'N', '106.83448345088', '32.352531654165', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511923, '平昌县', 'P', '107.11059310023', '31.566185810095', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(511971, '巴中经济开发区', 'B', '106.75158530316', '31.872888585957', 511900, 3, 'tr_0 tr_510000 tr_511900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(512002, '雁江区', 'Y', '104.65842441063', '30.123753456785', 512000, 3, 'tr_0 tr_510000 tr_512000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(512021, '安岳县', 'A', '105.34245423273', '30.103392734494', 512000, 3, 'tr_0 tr_510000 tr_512000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(512022, '乐至县', 'L', '105.02747697007', '30.282348346', 512000, 3, 'tr_0 tr_510000 tr_512000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513201, '马尔康市', 'M', '102.21350208208', '31.911747955648', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513221, '汶川县', 'W', '103.59651788422', '31.483005320468', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513222, '理县', 'L', '102.23141546175', '31.905511577267', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513223, '茂县', 'M', '102.23141546175', '31.905511577267', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513224, '松潘县', 'S', '103.61057968918', '32.661796559853', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513225, '九寨沟县', 'J', '104.24954673403', '33.257591509496', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513226, '金川县', 'J', '102.07061042122', '31.482005950337', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513227, '小金县', 'X', '102.36942635928', '31.002208697062', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513228, '黑水县', 'H', '102.99651735613', '32.067805449368', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513230, '壤塘县', 'R', '100.98558348726', '32.271093316269', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513231, '阿坝县', 'A', '101.71360970816', '32.908220918625', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513232, '若尔盖县', 'R', '102.97439065413', '33.584376654702', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513233, '红原县', 'H', '102.55061520946', '32.796605278762', 513200, 3, 'tr_0 tr_510000 tr_513200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513301, '康定市', 'K', '101.96355522139', '30.004407384262', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513322, '泸定县', 'L', '102.24143209631', '29.920401664951', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513323, '丹巴县', 'D', '101.89643706759', '30.88476979933', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513324, '九龙县', 'J', '101.51341566718', '29.006431902925', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513325, '雅江县', 'Y', '101.02050035294', '30.037568967864', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513326, '道孚县', 'D', '101.13154034619', '30.985326277402', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513327, '炉霍县', 'L', '100.68239693357', '31.397991882882', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513328, '甘孜县', 'G', '99.999210350851', '31.628956694034', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513329, '新龙县', 'X', '100.31839824093', '30.945469525266', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513330, '德格县', 'D', '98.587401611354', '31.812106494713', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513331, '白玉县', 'B', '98.83110021824', '31.215314448788', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513332, '石渠县', 'S', '98.109480622408', '32.984003420478', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513333, '色达县', 'S', '100.33941364918', '32.274330413227', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513334, '理塘县', 'L', '100.27557457998', '30.000030621751', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513335, '巴塘县', 'B', '99.11672669582', '30.011661707376', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513336, '乡城县', 'X', '99.805059570922', '28.936733475224', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513337, '稻城县', 'D', '100.3044615597', '29.043121558126', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513338, '得荣县', 'D', '99.292984198181', '28.718780051461', 513300, 3, 'tr_0 tr_510000 tr_513300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513401, '西昌市', 'X', '102.27148382917', '27.900580896264', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513422, '木里藏族自治县', 'M', '101.28639697674', '27.93459855924', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513423, '盐源县', 'Y', '101.51542912915', '27.428154867741', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513424, '德昌县', 'D', '102.18259551085', '27.408504192994', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513425, '会理县', 'H', '102.25143634511', '26.661199778427', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513426, '会东县', 'H', '102.5844621823', '26.640823775829', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513427, '宁南县', 'N', '102.76252636654', '27.064605070116', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513428, '普格县', 'P', '102.54659671863', '27.381996213807', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513429, '布拖县', 'B', '102.818478493', '27.7121287338', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513430, '金阳县', 'J', '103.25454895521', '27.702144511749', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513431, '昭觉县', 'Z', '102.84942278222', '28.020506268006', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513432, '喜德县', 'X', '102.41956715684', '28.312709832521', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513433, '冕宁县', 'M', '102.18357457402', '28.55529444536', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513434, '越西县', 'Y', '102.5144744814', '28.645827564326', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513435, '甘洛县', 'G', '102.77859651312', '28.9648231905', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513436, '美姑县', 'M', '103.13858579866', '28.33401962389', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(513437, '雷波县', 'L', '103.57842869486', '28.268950617624', 513400, 3, 'tr_0 tr_510000 tr_513400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520102, '南明区', 'N', '106.72052763544', '26.574336181539', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520103, '云岩区', 'Y', '106.73053475882', '26.610381076426', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520111, '花溪区', 'H', '106.6764407773', '26.41587945643', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520112, '乌当区', 'W', '106.75755803432', '26.636529135598', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520113, '白云区', 'B', '106.62959683989', '26.683588499124', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520115, '观山湖区', 'G', '106.60953255751', '26.623894296899', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520121, '开阳县', 'K', '106.97155955928', '27.063673573951', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520122, '息烽县', 'X', '106.74756178044', '27.096475267062', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520123, '修文县', 'X', '106.59849220314', '26.844862447594', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520181, '清镇市', 'Q', '106.47752261032', '26.561987898479', 520100, 3, 'tr_0 tr_520000 tr_520100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520201, '钟山区', 'Z', '104.85052981696', '26.580704079622', 520200, 3, 'tr_0 tr_520000 tr_520200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520203, '六枝特区', 'L', '105.48342934686', '26.219214290638', 520200, 3, 'tr_0 tr_520000 tr_520200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520221, '水城县', 'S', '104.96456610819', '26.553719763692', 520200, 3, 'tr_0 tr_520000 tr_520200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520281, '盘州市', 'P', '104.47858183932', '25.715651258076', 520200, 3, 'tr_0 tr_520000 tr_520200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520302, '红花岗区', 'H', '106.90049658668', '27.650870260732', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520303, '汇川区', 'H', '106.94045752761', '27.756343380087', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520304, '播州区', 'B', '106.83650354793', '27.542500878', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520322, '桐梓县', 'T', '106.83248902061', '28.139468384162', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520323, '绥阳县', 'S', '107.19749228819', '27.953080005876', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520324, '正安县', 'Z', '107.4605748906', '28.55909172878', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520325, '道真仡佬族苗族自治县', 'D', '107.61948378781', '28.86864981438', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520326, '务川仡佬族苗族自治县', 'W', '107.90545629257', '28.569077110562', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520327, '凤冈县', 'F', '107.72354763025', '27.960695338965', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520328, '湄潭县', 'M', '107.47259853019', '27.75449836496', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520329, '余庆县', 'Y', '107.91146020728', '27.221379027997', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520330, '习水县', 'X', '106.20342803999', '28.339117886481', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520381, '赤水市', 'C', '105.70348859502', '28.596118908733', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520382, '仁怀市', 'R', '106.40752655518', '27.797752158543', 520300, 3, 'tr_0 tr_520000 tr_520300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450702, '钦南区', 'Q', '108.66454861267', '21.945972440989', 450700, 3, 'tr_0 tr_450000 tr_450700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450703, '钦北区', 'Q', '108.63851257493', '22.020367050196', 450700, 3, 'tr_0 tr_450000 tr_450700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450721, '灵山县', 'L', '109.29747796631', '22.422413326701', 450700, 3, 'tr_0 tr_450000 tr_450700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(450722, '浦北县', 'P', '109.5634229294', '22.277822326937', 450700, 3, 'tr_0 tr_450000 tr_450700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520402, '西秀区', 'X', '105.97240632053', '26.251497663244', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520403, '平坝区', 'P', '106.26358378709', '26.411186471257', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520422, '普定县', 'P', '105.74848570614', '26.308233451347', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520423, '镇宁布依族苗族自治县', 'Z', '105.77658344485', '26.063829083032', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520424, '关岭布依族苗族自治县', 'G', '105.62547597168', '25.949877045969', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520425, '紫云苗族布依族自治县', 'Z', '106.09041375093', '25.757408728958', 520400, 3, 'tr_0 tr_520000 tr_520400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520502, '七星关区', 'Q', '105.31158071811', '27.304095223427', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520521, '大方县', 'D', '105.61845131242', '27.147060750626', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520522, '黔西县', 'Q', '106.03857397726', '27.014344747084', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520523, '金沙县', 'J', '106.22644163901', '27.465354872614', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520524, '织金县', 'Z', '105.77758954702', '26.669221885659', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520525, '纳雍县', 'N', '105.38948662276', '26.783717229132', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520526, '威宁彝族回族苗族自治县', 'W', '104.25948063398', '26.879247190553', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520527, '赫章县', 'H', '104.73351582262', '27.129051675142', 520500, 3, 'tr_0 tr_520000 tr_520500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520602, '碧江区', 'B', '109.18743536171', '27.696773471802', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520603, '万山区', 'W', '109.22045617394', '27.524647851983', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520621, '江口县', 'J', '108.84540005924', '27.705921695043', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520622, '玉屏侗族自治县', 'Y', '108.920563527', '27.248557881456', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520623, '石阡县', 'S', '108.23046385479', '27.519722059758', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520624, '思南县', 'S', '108.25941731933', '27.944547877977', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520625, '印江土家族苗族自治县', 'Y', '108.41659167843', '27.999823251993', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520626, '德江县', 'D', '108.1264110615', '28.270423278494', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520627, '沿河土家族自治县', 'Y', '108.51047753979', '28.570101680095', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(520628, '松桃苗族自治县', 'S', '109.20940351278', '28.160420179011', 520600, 3, 'tr_0 tr_520000 tr_520600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522301, '兴义市', 'X', '104.9024609483', '25.098113310297', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522302, '兴仁市', 'X', '105.19256772452', '25.440898753576', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522323, '普安县', 'P', '104.95954583802', '25.789951769129', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522324, '晴隆县', 'Q', '105.22548361467', '25.841047900453', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522325, '贞丰县', 'Z', '105.65655958807', '25.392123965341', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522326, '望谟县', 'W', '106.10644455174', '25.18435492392', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522327, '册亨县', 'C', '105.81851050706', '24.989637494252', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522328, '安龙县', 'A', '105.44954274777', '25.103990431232', 522300, 3, 'tr_0 tr_520000 tr_522300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522601, '凯里市', 'K', '107.98944624078', '26.589702969826', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522622, '黄平县', 'H', '107.92354780622', '26.911288643101', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522623, '施秉县', 'S', '108.13043978205', '27.039822051733', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522624, '三穗县', 'S', '108.68154500207', '26.958666465246', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522625, '镇远县', 'Z', '108.43658077263', '27.054820913901', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522626, '岑巩县', 'C', '108.82248096196', '27.179902417394', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522627, '天柱县', 'T', '109.21444570161', '26.915804084012', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522628, '锦屏县', 'J', '109.20743846948', '26.682631631865', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522629, '剑河县', 'J', '108.44751710323', '26.734047558881', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522630, '台江县', 'T', '108.32855163', '26.672372539643', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522631, '黎平县', 'L', '109.14356697147', '26.236874050192', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522632, '榕江县', 'R', '108.52755369872', '25.93772537325', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522633, '从江县', 'C', '108.91156142782', '25.759881327892', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522634, '雷山县', 'L', '108.08452891457', '26.384205121689', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522635, '麻江县', 'M', '107.59555140191', '26.496807595584', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522636, '丹寨县', 'D', '107.79551348972', '26.204421169869', 522600, 3, 'tr_0 tr_520000 tr_522600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522701, '都匀市', 'D', '107.52540443144', '26.266117957789', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522702, '福泉市', 'F', '107.52643281158', '26.692525700784', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522722, '荔波县', 'L', '107.89340938687', '25.417097566273', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522723, '贵定县', 'G', '107.2405543594', '26.590659655039', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522725, '瓮安县', 'W', '107.47755223592', '27.084125602602', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522726, '独山县', 'D', '107.55149778107', '25.828287807074', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522727, '平塘县', 'P', '107.32956664388', '25.828201706902', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522728, '罗甸县', 'L', '106.75854805682', '25.430837682972', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522729, '长顺县', 'Z', '106.45842122163', '26.028454545714', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522730, '龙里县', 'L', '106.98658596469', '26.459080630642', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522731, '惠水县', 'H', '106.66345262709', '26.138209889396', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(522732, '三都水族自治县', 'S', '107.84263500353', '26.096765617985', 522700, 3, 'tr_0 tr_520000 tr_522700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530102, '五华区', 'W', '102.7134232806', '25.049834961981', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530103, '盘龙区', 'P', '102.7585262121', '25.12237227983', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530111, '官渡区', 'G', '102.7504817066', '25.021196423859', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530112, '西山区', 'X', '102.6715571235', '25.043198760947', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530113, '东川区', 'D', '103.19445186746', '26.089054237623', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530114, '呈贡区', 'C', '102.82747259726', '24.891871210947', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530115, '晋宁区', 'J', '102.60241805181', '24.676098812517', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530124, '富民县', 'F', '102.50447319701', '25.228085092195', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530125, '宜良县', 'Y', '103.14755798426', '24.925286989652', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530126, '石林彝族自治县', 'S', '103.29650817676', '24.77770196132', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530127, '嵩明县', 'S', '103.04356394016', '25.344409459135', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530128, '禄劝彝族苗族自治县', 'L', '102.47742324184', '25.55767180024', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530129, '寻甸回族彝族自治县', 'X', '103.26357387135', '25.563893580433', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530181, '安宁市', 'A', '102.48440918413', '24.925601726344', 530100, 3, 'tr_0 tr_530000 tr_530100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530302, '麒麟区', 'Q', '103.81143036949', '25.502101828437', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530303, '沾益区', 'Z', '103.82848532841', '25.606630798868', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530304, '马龙区', 'M', '103.58544688632', '25.433966374816', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530322, '陆良县', 'L', '103.67343249743', '25.035639470439', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530323, '师宗县', 'S', '103.99155634453', '24.827994969501', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530324, '罗平县', 'L', '104.31551019438', '24.890519724895', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530325, '富源县', 'F', '104.2614742434', '25.680279502133', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530326, '会泽县', 'H', '103.30348729192', '26.424215045561', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530381, '宣威市', 'X', '104.1115760691', '26.225598378324', 530300, 3, 'tr_0 tr_530000 tr_530300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530402, '红塔区', 'H', '102.55156461759', '24.359801443673', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530403, '江川区', 'J', '102.76052700796', '24.293438700984', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530422, '澄江县', 'C', '102.91455487235', '24.679414908816', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530423, '通海县', 'T', '102.73242289128', '24.117891201574', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530424, '华宁县', 'H', '102.93549185853', '24.198581027163', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530425, '易门县', 'Y', '102.1695354962', '24.677404477592', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530426, '峨山彝族自治县', 'E', '102.41256450607', '24.174774239093', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530427, '新平彝族傣族自治县', 'X', '101.99642771261', '24.076262705278', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530428, '元江哈尼族彝族傣族自治县', 'Y', '102.00441463673', '23.603000905475', 530400, 3, 'tr_0 tr_530000 tr_530400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530502, '隆阳区', 'L', '99.172070839289', '25.12688832219', 530500, 3, 'tr_0 tr_530000 tr_530500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530521, '施甸县', 'S', '99.195469362222', '24.728835000146', 530500, 3, 'tr_0 tr_530000 tr_530500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530523, '龙陵县', 'L', '98.695749912275', '24.592546947017', 530500, 3, 'tr_0 tr_530000 tr_530500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530524, '昌宁县', 'C', '99.611616576026', '24.833984919853', 530500, 3, 'tr_0 tr_530000 tr_530500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530581, '腾冲市', 'T', '98.497595035489', '25.026616860346', 530500, 3, 'tr_0 tr_530000 tr_530500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530602, '昭阳区', 'Z', '103.71347042315', '27.326144206053', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530621, '鲁甸县', 'L', '103.5644121645', '27.193107219133', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530622, '巧家县', 'Q', '102.93651934037', '26.914705038577', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530623, '盐津县', 'Y', '104.24157884246', '28.114384038516', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530624, '大关县', 'D', '103.89751489665', '27.754021401911', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530625, '永善县', 'Y', '103.6445690431', '28.234722481383', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530626, '绥江县', 'S', '103.9645523826', '28.604277931727', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530627, '镇雄县', 'Z', '104.88040422431', '27.447794634649', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530628, '彝良县', 'Y', '104.05444303021', '27.631690165547', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530629, '威信县', 'W', '105.05557676311', '27.85253746404', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530681, '水富市', 'S', '104.42243298394', '28.636106975262', 530600, 3, 'tr_0 tr_530000 tr_530600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530702, '古城区', 'G', '100.23248033921', '26.883161684001', 530700, 3, 'tr_0 tr_530000 tr_530700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530721, '玉龙纳西族自治县', 'Y', '100.24352734105', '26.827391803625', 530700, 3, 'tr_0 tr_530000 tr_530700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530722, '永胜县', 'Y', '100.75758141133', '26.689950245419', 530700, 3, 'tr_0 tr_530000 tr_530700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530723, '华坪县', 'H', '101.27243012268', '26.635223014622', 530700, 3, 'tr_0 tr_530000 tr_530700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530724, '宁蒗彝族自治县', 'N', '100.85859038623', '27.287727826052', 530700, 3, 'tr_0 tr_530000 tr_530700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530802, '思茅区', 'S', '100.98355510298', '22.79249798436', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530821, '宁洱哈尼族彝族自治县', 'N', '101.05244246946', '23.054590179481', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530822, '墨江哈尼族自治县', 'M', '101.69858356155', '23.437725772256', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530823, '景东彝族自治县', 'J', '100.83848864452', '24.451863775495', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530824, '景谷傣族彝族自治县', 'J', '100.7094565801', '23.503204071241', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530825, '镇沅彝族哈尼族拉祜族自治县', 'Z', '101.11556882305', '24.010330833613', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530826, '江城哈尼族彝族自治县', 'J', '101.86847918429', '22.59168385943', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530827, '孟连傣族拉祜族佤族自治县', 'M', '99.590962825578', '22.335307615556', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530828, '澜沧拉祜族自治县', 'L', '99.938588283239', '22.561831918087', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530829, '西盟佤族自治县', 'X', '99.596622150289', '22.650656010974', 530800, 3, 'tr_0 tr_530000 tr_530800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530902, '临翔区', 'L', '100.0884425304', '23.901401938645', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530921, '凤庆县', 'F', '99.934989222215', '24.586472458274', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530922, '云县', 'Y', '100.12953102441', '24.442807275329', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530923, '永德县', 'Y', '99.265075642606', '24.024871282777', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530924, '镇康县', 'Z', '98.831871224123', '23.768315480096', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530925, '双江拉祜族佤族布朗族傣族自治县', 'S', '99.834130982979', '23.479836504614', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530926, '耿马傣族佤族自治县', 'G', '99.403942176092', '23.543490995101', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(530927, '沧源佤族自治县', 'C', '99.252721696084', '23.152878733913', 530900, 3, 'tr_0 tr_530000 tr_530900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532301, '楚雄市', 'C', '101.55247228396', '25.038860388323', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532322, '双柏县', 'S', '101.64840700053', '24.694898530382', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532323, '牟定县', 'M', '101.55348099122', '25.318845903714', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532324, '南华县', 'N', '101.28042055018', '25.198587071156', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532325, '姚安县', 'Y', '101.2485272012', '25.509775443473', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532326, '大姚县', 'D', '101.33056746713', '25.727600600572', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532327, '永仁县', 'Y', '101.67249299667', '26.055565754521', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532328, '元谋县', 'Y', '101.8804452425', '25.710895319939', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532329, '武定县', 'W', '102.41053182037', '25.536089587807', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532331, '禄丰县', 'L', '102.08553135476', '25.155830804806', 532300, 3, 'tr_0 tr_530000 tr_532300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532501, '个旧市', 'G', '103.16651860849', '23.364941534583', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532502, '开远市', 'K', '103.27355323709', '23.719907796912', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532503, '蒙自市', 'M', '103.37154588175', '23.402079885198', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532504, '弥勒市', 'M', '103.421489063', '24.417982225357', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532523, '屏边苗族自治县', 'P', '103.69343183232', '22.989989585513', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532524, '建水县', 'J', '102.83343959161', '23.640938563461', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532525, '石屏县', 'S', '102.50244661978', '23.712004452449', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532527, '泸西县', 'L', '103.77252314092', '24.53803716745', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532528, '元阳县', 'Y', '102.84143280386', '23.226198051926', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532529, '红河县', 'H', '102.42755057757', '23.374488738365', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532530, '金平苗族瑶族傣族自治县', 'J', '103.23246860579', '22.785560606183', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532531, '绿春县', 'L', '102.39849398755', '23.000164936586', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532532, '河口瑶族自治县', 'H', '103.9454436278', '22.535465602947', 532500, 3, 'tr_0 tr_530000 tr_532500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532601, '文山市', 'W', '104.23854382746', '23.391944131908', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532622, '砚山县', 'Y', '104.3435508907', '23.6114865767', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532623, '西畴县', 'X', '104.67852542203', '23.443271275283', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532624, '麻栗坡县', 'M', '104.70954948078', '23.13158558356', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532625, '马关县', 'M', '104.40041497692', '23.018993577166', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532626, '丘北县', 'Q', '104.17344174074', '24.056993896218', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532627, '广南县', 'G', '105.06158238459', '24.052198510921', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532628, '富宁县', 'F', '105.63749017905', '23.63138040952', 532600, 3, 'tr_0 tr_530000 tr_532600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532801, '景洪市', 'J', '100.80644312258', '22.017004423119', 532800, 3, 'tr_0 tr_530000 tr_532800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532822, '勐海县', 'M', '100.4594459398', '21.963433596681', 532800, 3, 'tr_0 tr_530000 tr_532800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532823, '勐腊县', 'M', '101.57152830823', '21.465280880862', 532800, 3, 'tr_0 tr_530000 tr_532800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532901, '大理市', 'D', '100.23651930044', '25.597604905452', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532922, '漾濞彝族自治县', 'Y', '99.964413758168', '25.676295762972', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532923, '祥云县', 'X', '100.55744657937', '25.489872506242', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532924, '宾川县', 'B', '100.57845668762', '25.835249028198', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532925, '弥渡县', 'M', '100.49758601546', '25.349336028746', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532926, '南涧彝族自治县', 'N', '100.51554862227', '25.049426762094', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532927, '巍山彝族回族自治县', 'W', '100.31346033515', '25.233438729799', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532928, '永平县', 'Y', '99.547494899931', '25.4702064833', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532929, '云龙县', 'Y', '99.377416022867', '25.891945073902', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532930, '洱源县', 'E', '99.969209721453', '26.120093341888', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532931, '剑川县', 'J', '99.912091235112', '26.542516534181', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(532932, '鹤庆县', 'H', '100.18249206302', '26.566197313345', 532900, 3, 'tr_0 tr_530000 tr_532900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533102, '瑞丽市', 'R', '97.862485584208', '24.022816893105', 533100, 3, 'tr_0 tr_530000 tr_533100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533103, '芒市', 'M', '98.591359356114', '24.438010702758', 533100, 3, 'tr_0 tr_530000 tr_533100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533122, '梁河县', 'L', '98.303133631636', '24.810784458257', 533100, 3, 'tr_0 tr_530000 tr_533100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533123, '盈江县', 'Y', '97.938426535386', '24.711534266143', 533100, 3, 'tr_0 tr_530000 tr_533100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533124, '陇川县', 'L', '97.798530364124', '24.189467890549', 533100, 3, 'tr_0 tr_530000 tr_533100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533301, '泸水市', 'L', '98.864586163328', '25.829026769972', 533300, 3, 'tr_0 tr_530000 tr_533300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533323, '福贡县', 'F', '98.875649424493', '26.908055208498', 533300, 3, 'tr_0 tr_530000 tr_533300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533324, '贡山独龙族怒族自治县', 'G', '98.672399448687', '27.747067875272', 533300, 3, 'tr_0 tr_530000 tr_533300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533325, '兰坪白族普米族自治县', 'L', '99.423284669988', '26.459207904688', 533300, 3, 'tr_0 tr_530000 tr_533300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533401, '香格里拉市', 'X', '99.707444573899', '27.835760125321', 533400, 3, 'tr_0 tr_530000 tr_533400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533422, '德钦县', 'D', '98.924452656054', '28.470086006822', 533400, 3, 'tr_0 tr_530000 tr_533400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(533423, '维西傈僳族自治县', 'W', '99.293465689934', '27.183170204022', 533400, 3, 'tr_0 tr_530000 tr_533400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540102, '城关区', 'C', '91.145100352371', '29.658331252915', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540103, '堆龙德庆区', 'D', '91.009963134209', '29.651625675009', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540104, '达孜区', 'D', '91.356318118388', '29.675409063815', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540121, '林周县', 'L', '91.26950057393', '29.898733205887', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540122, '当雄县', 'D', '91.107451746831', '30.479221726942', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540123, '尼木县', 'N', '90.171180066243', '29.437518981255', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540124, '曲水县', 'Q', '90.749958665453', '29.358987058337', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540127, '墨竹工卡县', 'M', '91.737266398592', '29.839752605055', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540171, '格尔木藏青工业园区', 'G', '91.120823915464', '29.650040274768', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540172, '拉萨经济技术开发区', 'L', '91.120823915464', '29.650040274768', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540173, '西藏文化旅游创意园区', 'X', '91.120823915464', '29.650040274768', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540174, '达孜工业园区', 'D', '91.356318118388', '29.675409063815', 540100, 3, 'tr_0 tr_540000 tr_540100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540202, '桑珠孜区', 'S', '88.902951718862', '29.255582814198', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540221, '南木林县', 'N', '89.105704213077', '29.687938036552', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540222, '江孜县', 'J', '89.612012194954', '28.917634684239', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540223, '定日县', 'D', '87.129597739314', '28.663951983289', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540224, '萨迦县', 'S', '88.028269488152', '28.90493151262', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540225, '拉孜县', 'L', '87.643647318074', '29.087509679995', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540226, '昂仁县', 'A', '87.242427336755', '29.301060484014', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540227, '谢通门县', 'X', '88.268206799957', '29.438142414132', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540228, '白朗县', 'B', '89.268741991895', '29.111858951918', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540229, '仁布县', 'R', '89.848624967899', '29.236788327037', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540230, '康马县', 'K', '89.688244915761', '28.561443952501', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540231, '定结县', 'D', '87.772376743375', '28.369910769393', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540232, '仲巴县', 'Z', '84.038116876917', '29.775982232026', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540233, '亚东县', 'Y', '88.913440783145', '27.491108780091', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540234, '吉隆县', 'J', '85.304073768987', '28.858501664955', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540235, '聂拉木县', 'N', '85.988770403046', '28.160839360543', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540236, '萨嘎县', 'S', '85.239825701307', '29.334659688784', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540237, '岗巴县', 'G', '88.526529281476', '28.28036304226', 540200, 3, 'tr_0 tr_540000 tr_540200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540302, '卡若区', 'K', '97.186654336416', '31.144248893947', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540321, '江达县', 'J', '98.224594520968', '31.50520701798', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540322, '贡觉县', 'G', '98.277334127289', '30.865966958412', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540323, '类乌齐县', 'L', '96.606717192399', '31.217793112281', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540324, '丁青县', 'D', '95.602643844218', '31.418402964614', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540325, '察雅县', 'C', '97.575123679628', '30.659864699371', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540326, '八宿县', 'B', '96.924360446152', '30.059028991399', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540327, '左贡县', 'Z', '97.847366832989', '29.676848537197', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540328, '芒康县', 'M', '98.599685480392', '29.685776117713', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540329, '洛隆县', 'L', '95.831306613477', '30.747126507478', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540330, '边坝县', 'B', '94.714371149159', '30.939624927347', 540300, 3, 'tr_0 tr_540000 tr_540300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540402, '巴宜区', 'B', '94.36754427672', '29.641644546372', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540421, '工布江达县', 'G', '93.252419796678', '29.891367616241', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540422, '米林县', 'M', '94.219938578083', '29.220916541197', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540423, '墨脱县', 'M', '95.33949529751', '29.330937701878', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540424, '波密县', 'B', '95.773900121645', '29.865060090549', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540425, '察隅县', 'C', '97.473269749246', '28.667444137201', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540426, '朗县', 'L', '93.081368234407', '29.051902419086', 540400, 3, 'tr_0 tr_540000 tr_540400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540602, '色尼区', 'S', '92.05984683665', '31.476117292678', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540621, '嘉黎县', 'J', '93.23873151504', '30.647062455597', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540622, '比如县', 'B', '93.685965938612', '31.48635726205', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540623, '聂荣县', 'N', '92.308654466293', '32.113707483115', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540624, '安多县', 'A', '91.688890677999', '32.271268023108', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540625, '申扎县', 'S', '88.716481108234', '30.936393285832', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540626, '索县', 'S', '93.792172958379', '31.892424309227', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540627, '班戈县', 'B', '90.016707727114', '31.398727622963', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540628, '巴青县', 'B', '94.059881564766', '31.924549424276', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540629, '尼玛县', 'N', '87.243292410868', '31.790953326638', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540630, '双湖县', 'S', '88.843427936123', '33.193503165809', 540600, 3, 'tr_0 tr_540000 tr_540600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542521, '普兰县', 'P', '81.183094731974', '30.300162591078', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542522, '札达县', 'Z', '79.809323212178', '31.485343070014', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542523, '噶尔县', 'G', '80.102877146054', '32.497156823602', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542524, '日土县', 'R', '79.739109138263', '33.387186043872', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542525, '革吉县', 'G', '81.151664369638', '32.393356020044', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542526, '改则县', 'G', '84.06911336254', '32.308356643244', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(542527, '措勤县', 'C', '85.165952205481', '31.022666379273', 542500, 3, 'tr_0 tr_540000 tr_542500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610102, '新城区', 'X', '108.9673910385', '34.272724469533', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610103, '碑林区', 'B', '108.94049774781', '34.236473940412', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610104, '莲湖区', 'L', '108.95042644912', '34.271017203053', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610111, '灞桥区', 'B', '109.07141535554', '34.279127674951', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610112, '未央区', 'W', '108.95340118781', '34.299148106589', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610113, '雁塔区', 'Y', '108.95144045638', '34.220635239986', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610114, '阎良区', 'Y', '109.23246311822', '34.668363274699', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610115, '临潼区', 'L', '109.22043579558', '34.372747432848', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610116, '长安区', 'Z', '108.91358047235', '34.163290267305', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610117, '高陵区', 'G', '109.09438691387', '34.541093106058', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610118, '鄠邑区', 'H', '108.61142023271', '34.115020711599', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610122, '蓝田县', 'L', '109.32938812681', '34.157620654732', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610124, '周至县', 'Z', '108.22842183954', '34.169385269616', 610100, 3, 'tr_0 tr_610000 tr_610100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610202, '王益区', 'W', '109.08141735858', '35.075322096471', 610200, 3, 'tr_0 tr_610000 tr_610200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610203, '印台区', 'Y', '109.10643408907', '35.120859282945', 610200, 3, 'tr_0 tr_610000 tr_610200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610204, '耀州区', 'Y', '108.98643790006', '34.91596030911', 610200, 3, 'tr_0 tr_610000 tr_610200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610222, '宜君县', 'Y', '109.12353674801', '35.404582194219', 610200, 3, 'tr_0 tr_610000 tr_610200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610302, '渭滨区', 'W', '107.15641916768', '34.377481132682', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610303, '金台区', 'J', '107.15342367813', '34.382351084696', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610304, '陈仓区', 'C', '107.39343842395', '34.360756335457', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610322, '凤翔县', 'F', '107.40737949665', '34.527616279899', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610323, '岐山县', 'Q', '107.62744727879', '34.449776962387', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610324, '扶风县', 'F', '107.9064530651', '34.381463351226', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610326, '眉县', 'M', '107.75639813644', '34.280375863086', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610327, '陇县', 'L', '106.87058365441', '34.898780253107', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610328, '千阳县', 'Q', '107.13946616644', '34.648544600794', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610329, '麟游县', 'L', '107.799514106', '34.683748667164', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610330, '凤县', 'F', '106.52255782187', '33.916583016343', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610331, '太白县', 'T', '107.32552913248', '34.064248441153', 610300, 3, 'tr_0 tr_610000 tr_610300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610402, '秦都区', 'Q', '108.71243199239', '34.3351451161', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610403, '杨陵区', 'Y', '108.09151531881', '34.278012507654', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610404, '渭城区', 'W', '108.74345057148', '34.368110229368', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610422, '三原县', 'S', '108.94744650025', '34.623078955252', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610423, '泾阳县', 'J', '108.84937884705', '34.533316532768', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610424, '乾县', 'G', '108.24537762554', '34.534018266142', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610425, '礼泉县', 'L', '108.43161549166', '34.487390768504', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610426, '永寿县', 'Y', '108.14846878644', '34.698035535617', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610428, '长武县', 'Z', '107.80556078005', '35.211657338715', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610429, '旬邑县', 'X', '108.34046703665', '35.117963919719', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610430, '淳化县', 'C', '108.58744176373', '34.804776911295', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610431, '武功县', 'W', '108.20655106479', '34.266137667633', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610481, '兴平市', 'X', '108.49639400877', '34.305476520292', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610482, '彬州市', 'B', '108.08456557823', '35.049610571828', 610400, 3, 'tr_0 tr_610000 tr_610400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610502, '临渭区', 'L', '109.4985962764', '34.504000470428', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610503, '华州区', 'H', '109.7784773716', '34.5187307401', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610522, '潼关县', 'T', '110.25250761972', '34.550326848532', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610523, '大荔县', 'D', '109.94845330291', '34.801832760484', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610524, '合阳县', 'H', '110.15539621274', '35.243872196866', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610525, '澄城县', 'C', '109.93843360325', '35.196572815551', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610526, '蒲城县', 'P', '109.59249651068', '34.961274128783', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610527, '白水县', 'B', '109.59752055374', '35.183287514613', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610528, '富平县', 'F', '109.18643744728', '34.757260440256', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610581, '韩城市', 'H', '110.44955264012', '35.482086787313', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610582, '华阴市', 'H', '110.09860075704', '34.571800158753', 610500, 3, 'tr_0 tr_610000 tr_610500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610602, '宝塔区', 'B', '109.49959402433', '36.596890441313', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610603, '安塞区', 'A', '109.33541943984', '36.870098259307', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610621, '延长县', 'Y', '110.01847172589', '36.585328801705', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610622, '延川县', 'Y', '110.20054028665', '36.884136960993', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610623, '子长县', 'Z', '109.68138985954', '37.148816918367', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610625, '志丹县', 'Z', '108.77557747991', '36.828021135864', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610626, '吴起县', 'W', '108.18258966361', '36.932576099483', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610627, '甘泉县', 'G', '109.35752350454', '36.282688619053', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610628, '富县', 'F', '109.38659653355', '35.993367977969', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610629, '洛川县', 'L', '109.43840396825', '35.768300429421', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610630, '宜川县', 'Y', '110.17541306458', '36.056397437854', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610631, '黄龙县', 'H', '109.84654907671', '35.590233768069', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610632, '黄陵县', 'H', '109.26960598495', '35.585076348969', 610600, 3, 'tr_0 tr_610000 tr_610600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610702, '汉台区', 'H', '107.03840167622', '33.074191093099', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610703, '南郑区', 'N', '106.94243318334', '33.005614599734', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610722, '城固县', 'C', '107.3406125803', '33.162399385178', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610723, '洋县', 'Y', '107.55246428058', '33.228862589315', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610724, '西乡县', 'X', '107.77339281906', '32.989397441895', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610725, '勉县', 'M', '106.67942594867', '33.159804746955', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610726, '宁强县', 'N', '106.26458864382', '32.835380199209', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610727, '略阳县', 'L', '106.16354400616', '33.333193777733', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610728, '镇巴县', 'Z', '107.9014456407', '32.54283336567', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610729, '留坝县', 'L', '106.92741441352', '33.623825216737', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610730, '佛坪县', 'F', '107.99742428443', '33.530693101588', 610700, 3, 'tr_0 tr_610000 tr_610700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610802, '榆阳区', 'Y', '109.72755916953', '38.28241962673', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610803, '横山区', 'H', '109.30049134534', '37.968573394166', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610822, '府谷县', 'F', '111.0736281152', '39.03379562985', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610824, '靖边县', 'J', '108.80060049853', '37.605063193955', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610825, '定边县', 'D', '107.60756957446', '37.600459865341', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610826, '绥德县', 'S', '110.26942648536', '37.508907288933', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610827, '米脂县', 'M', '110.19045141747', '37.761397514329', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610828, '佳县', 'J', '110.49747741874', '38.025611678572', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610829, '吴堡县', 'W', '110.74645500778', '37.458269874078', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610830, '清涧县', 'Q', '110.12755916227', '37.094852887828', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610831, '子洲县', 'Z', '110.04239845247', '37.617025887547', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610881, '神木市', 'S', '110.50542966826', '38.848544495221', 610800, 3, 'tr_0 tr_610000 tr_610800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610902, '汉滨区', 'H', '109.03359606476', '32.701196105738', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610921, '汉阴县', 'H', '108.51550698561', '32.899120857292', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610922, '石泉县', 'S', '108.25442679592', '33.044602110263', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610923, '宁陕县', 'N', '108.32056400011', '33.316555486503', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610924, '紫阳县', 'Z', '108.54159431661', '32.525785619364', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610925, '岚皋县', 'L', '108.90861535814', '32.312880776501', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610926, '平利县', 'P', '109.36854670128', '32.394804123185', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610927, '镇坪县', 'Z', '109.53349679292', '31.889643295791', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610928, '旬阳县', 'X', '109.37155674338', '32.839864221772', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(610929, '白河县', 'B', '110.11958688053', '32.814846485284', 610900, 3, 'tr_0 tr_610000 tr_610900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611002, '商州区', 'S', '109.94747163465', '33.86885529308', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611021, '洛南县', 'L', '110.15442748007', '34.097070538846', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611022, '丹凤县', 'D', '110.3335602886', '33.701537322921', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611023, '商南县', 'S', '110.88840847837', '33.537533476707', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611024, '山阳县', 'S', '109.88854863218', '33.537968382769', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611025, '镇安县', 'Z', '109.15957460914', '33.429044650147', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(611026, '柞水县', 'Z', '109.120502272', '33.692026241945', 611000, 3, 'tr_0 tr_610000 tr_611000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620102, '城关区', 'C', '103.83147490053', '36.063181475369', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620103, '七里河区', 'Q', '103.79241388204', '36.07212925843', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620104, '西固区', 'X', '103.63458007682', '36.094109365757', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620105, '安宁区', 'A', '103.72553503682', '36.109753754973', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620111, '红古区', 'H', '102.86542781272', '36.351863423179', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620121, '永登县', 'Y', '103.26662443823', '36.74209521344', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620122, '皋兰县', 'G', '103.95346415997', '36.338142148673', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620123, '榆中县', 'Y', '104.11956587928', '35.848851048242', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620171, '兰州新区', 'L', '103.76383312444', '36.082833434467', 620100, 3, 'tr_0 tr_620000 tr_620100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620201, '市辖区', 'S', '98.208045429791', '39.821463455258', 620200, 3, 'tr_0 tr_620000 tr_620200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620302, '金川区', 'J', '102.20058588614', '38.525772245594', 620300, 3, 'tr_0 tr_620000 tr_620300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620321, '永昌县', 'Y', '101.97946358316', '38.252940956889', 620300, 3, 'tr_0 tr_620000 tr_620300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620402, '白银区', 'B', '104.15541276065', '36.541463568069', 620400, 3, 'tr_0 tr_620000 tr_620400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620403, '平川区', 'P', '104.83161394007', '36.733498751869', 620400, 3, 'tr_0 tr_620000 tr_620400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620421, '靖远县', 'J', '104.68251507796', '36.577096288837', 620400, 3, 'tr_0 tr_620000 tr_620400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620422, '会宁县', 'H', '105.05960693274', '35.698508053094', 620400, 3, 'tr_0 tr_620000 tr_620400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620423, '景泰县', 'J', '104.06944438436', '37.187406260097', 620400, 3, 'tr_0 tr_620000 tr_620400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620502, '秦州区', 'Q', '105.73041549435', '34.587315743121', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620503, '麦积区', 'M', '105.89559698949', '34.576336861448', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620521, '清水县', 'Q', '106.14359506621', '34.753882906363', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620522, '秦安县', 'Q', '105.68157480343', '34.864876111568', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620523, '甘谷县', 'G', '105.34247534291', '34.738300137398', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620524, '武山县', 'W', '104.89742838309', '34.727669101635', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620525, '张家川回族自治县', 'Z', '106.21139036271', '34.99490501302', 620500, 3, 'tr_0 tr_620000 tr_620500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620602, '凉州区', 'L', '102.64857479651', '37.934121948376', 620600, 3, 'tr_0 tr_620000 tr_620600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620621, '民勤县', 'M', '103.10040027988', '38.630624826433', 620600, 3, 'tr_0 tr_620000 tr_620600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620622, '古浪县', 'G', '102.90362978165', '37.475801906601', 620600, 3, 'tr_0 tr_620000 tr_620600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620623, '天祝藏族自治县', 'T', '103.14862131966', '36.97759617654', 620600, 3, 'tr_0 tr_620000 tr_620600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620702, '甘州区', 'G', '100.48455772128', '38.934781471785', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620721, '肃南裕固族自治县', 'S', '99.621905418008', '38.843100205023', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620722, '民乐县', 'M', '100.81942903742', '38.436842233981', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620723, '临泽县', 'L', '100.17055476077', '39.158514444726', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620724, '高台县', 'G', '99.825759504337', '39.383646046807', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620725, '山丹县', 'S', '101.09561558172', '38.790452663306', 620700, 3, 'tr_0 tr_620000 tr_620700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620802, '崆峒区', 'K', '106.68141452757', '35.548814892232', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620821, '泾川县', 'J', '107.37451813364', '35.338668597821', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620822, '灵台县', 'L', '107.62746120252', '35.07158181696', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620823, '崇信县', 'C', '107.04141513189', '35.308615839828', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620825, '庄浪县', 'Z', '106.04258582178', '35.208192125804', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620826, '静宁县', 'J', '105.73841580322', '35.528257189136', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620881, '华亭市', 'H', '106.65948599177', '35.223550762897', 620800, 3, 'tr_0 tr_620000 tr_620800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620902, '肃州区', 'S', '98.514321853032', '39.751245509963', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620921, '金塔县', 'J', '98.908368236172', '39.990029254093', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620922, '瓜州县', 'G', '95.788736364512', '40.52610597895', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620923, '肃北蒙古族自治县', 'S', '94.883692395412', '39.518329738436', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620924, '阿克塞哈萨克族自治县', 'A', '94.346760190396', '39.640045316917', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620981, '玉门市', 'Y', '97.051711691182', '40.297620020884', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(620982, '敦煌市', 'D', '94.668527025762', '40.147867484244', 620900, 3, 'tr_0 tr_620000 tr_620900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621002, '西峰区', 'X', '107.65739112517', '35.736864475978', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621021, '庆城县', 'Q', '107.88840619724', '36.021726360644', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621022, '环县', 'H', '107.31446964419', '36.574427108907', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621023, '华池县', 'H', '107.99638952632', '36.467575129884', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621024, '合水县', 'H', '108.026447188', '35.8252622164', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621025, '正宁县', 'Z', '108.36637461671', '35.498218780898', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621026, '宁县', 'N', '107.93457092587', '35.507932974537', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621027, '镇原县', 'Z', '107.20757586986', '35.683230586316', 621000, 3, 'tr_0 tr_620000 tr_621000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621102, '安定区', 'A', '104.61650040265', '35.585600016725', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621121, '通渭县', 'T', '105.24840362211', '35.217216821266', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621122, '陇西县', 'L', '104.64138059069', '35.010197162318', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621123, '渭源县', 'W', '104.22158401062', '35.142391958021', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621124, '临洮县', 'L', '103.8656010777', '35.400587040258', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621125, '漳县', 'Z', '104.4785953255', '34.854249981778', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621126, '岷县', 'M', '104.04339603983', '34.44440764065', 621100, 3, 'tr_0 tr_620000 tr_621100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621202, '武都区', 'W', '104.93259336075', '33.398072188089', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621221, '成县', 'C', '105.7484779029', '33.756635187351', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621222, '文县', 'W', '104.68955842198', '32.949601280768', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621223, '宕昌县', 'D', '104.39938579987', '34.053486291359', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621224, '康县', 'K', '105.61539187549', '33.335376401996', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621225, '西和县', 'X', '105.30761048912', '34.016787358437', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621226, '礼县', 'L', '105.1835909694', '34.194685061207', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621227, '徽县', 'H', '106.09441787005', '33.77519418709', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(621228, '两当县', 'L', '106.31141946599', '33.915122835173', 621200, 3, 'tr_0 tr_620000 tr_621200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622901, '临夏市', 'L', '103.2495491776', '35.609898772689', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622921, '临夏县', 'L', '103.00251408439', '35.497397958837', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622922, '康乐县', 'K', '103.71547554223', '35.376109760702', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622923, '永靖县', 'Y', '103.29250749455', '35.963330304471', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622924, '广河县', 'G', '103.58240999619', '35.494101361696', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622925, '和政县', 'H', '103.35752370329', '35.430589904166', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622926, '东乡族自治县', 'D', '103.39561320437', '35.669329728624', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(622927, '积石山保安族东乡族撒拉族自治县', 'J', '102.88251807505', '35.72349932364', 622900, 3, 'tr_0 tr_620000 tr_622900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623001, '合作市', 'H', '102.917571573', '35.005935428196', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623021, '临潭县', 'L', '103.36053329624', '34.698639411522', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623022, '卓尼县', 'Z', '103.51361578396', '34.594916432804', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623023, '舟曲县', 'Z', '104.37748996239', '33.790814973644', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623024, '迭部县', 'D', '103.22844034558', '34.062020054097', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623025, '玛曲县', 'M', '102.07860004026', '34.003358168342', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623026, '碌曲县', 'L', '102.49442413371', '34.597087271566', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(623027, '夏河县', 'X', '102.52857708038', '35.208324325541', 623000, 3, 'tr_0 tr_620000 tr_623000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630102, '城东区', 'C', '101.80956903833', '36.605707645661', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630103, '城中区', 'C', '101.79048354964', '36.628800570589', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630104, '城西区', 'C', '101.77241422413', '36.634496979524', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630105, '城北区', 'C', '101.77240488176', '36.656293630837', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630121, '大通回族土族自治县', 'D', '101.69256375752', '36.932666463407', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630122, '湟中县', 'H', '101.57861675782', '36.506627546281', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630123, '湟源县', 'H', '101.26244861154', '36.688587514903', 630100, 3, 'tr_0 tr_630000 tr_630100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630202, '乐都区', 'L', '102.40856633883', '36.487820051522', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630203, '平安区', 'P', '102.11442787756', '36.506553573162', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630222, '民和回族土族自治县', 'M', '102.11044407228', '36.508511080941', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630223, '互助土族自治县', 'H', '101.96456904899', '36.850021613826', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630224, '化隆回族自治县', 'H', '102.27044827345', '36.100988250893', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(630225, '循化撒拉族自治县', 'X', '102.4953853206', '35.856667223862', 630200, 3, 'tr_0 tr_630000 tr_630200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632221, '门源回族自治县', 'M', '101.62843803903', '37.382180626313', 632200, 3, 'tr_0 tr_630000 tr_632200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632222, '祁连县', 'Q', '100.25962157243', '38.182924871569', 632200, 3, 'tr_0 tr_630000 tr_632200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632223, '海晏县', 'H', '101.0005855486', '36.902376022515', 632200, 3, 'tr_0 tr_630000 tr_632200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632224, '刚察县', 'G', '100.15360607139', '37.327320072254', 632200, 3, 'tr_0 tr_630000 tr_632200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632321, '同仁县', 'T', '102.0254377812', '35.521865150524', 632300, 3, 'tr_0 tr_630000 tr_632300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632322, '尖扎县', 'J', '102.0375073242', '35.944284459868', 632300, 3, 'tr_0 tr_630000 tr_632300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632323, '泽库县', 'Z', '101.47359451319', '35.0420144951', 632300, 3, 'tr_0 tr_630000 tr_632300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632324, '河南蒙古族自治县', 'H', '101.62247338027', '34.740396071091', 632300, 3, 'tr_0 tr_630000 tr_632300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632521, '共和县', 'G', '100.62662348005', '36.288703317865', 632500, 3, 'tr_0 tr_630000 tr_632500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632522, '同德县', 'T', '100.58542386564', '35.259857775817', 632500, 3, 'tr_0 tr_630000 tr_632500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632523, '贵德县', 'G', '101.43953310384', '36.046158080751', 632500, 3, 'tr_0 tr_630000 tr_632500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632524, '兴海县', 'X', '99.994380072293', '35.594629879949', 632500, 3, 'tr_0 tr_630000 tr_632500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632525, '贵南县', 'G', '100.75359321473', '35.592415454611', 632500, 3, 'tr_0 tr_630000 tr_632500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632621, '玛沁县', 'M', '100.24556434882', '34.483569486002', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632622, '班玛县', 'B', '100.74360459645', '32.93850392747', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632623, '甘德县', 'G', '99.907510695578', '33.975003677602', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632624, '达日县', 'D', '99.658010113065', '33.754937373991', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632625, '久治县', 'J', '101.48853225585', '33.434773499408', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632626, '玛多县', 'M', '98.215883832099', '34.920748646186', 632600, 3, 'tr_0 tr_630000 tr_632600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632701, '玉树市', 'Y', '97.015376401101', '32.999555650886', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632722, '杂多县', 'Z', '95.306964878828', '32.89924067586', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632723, '称多县', 'C', '97.115000009277', '33.374225698944', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632724, '治多县', 'Z', '95.61979357437', '33.857953267719', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632725, '囊谦县', 'N', '96.486918271283', '32.209194368698', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632726, '曲麻莱县', 'Q', '95.803750013992', '34.132298666997', 632700, 3, 'tr_0 tr_630000 tr_632700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632801, '格尔木市', 'G', '94.933310210425', '36.412371046954', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632802, '德令哈市', 'D', '97.367470299975', '37.375345907463', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632803, '茫崖市', 'M', '90.87951750334', '38.261902814972', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632821, '乌兰县', 'W', '98.486735699295', '36.935747859032', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632822, '都兰县', 'D', '98.102704793777', '36.307611028682', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632823, '天峻县', 'T', '99.029242967967', '37.306903395111', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(632857, '大柴旦行政委员会', 'D', '95.371722465415', '37.857987655919', 632800, 3, 'tr_0 tr_630000 tr_632800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640104, '兴庆区', 'X', '106.29549376692', '38.479578929456', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640105, '西夏区', 'X', '106.15658124015', '38.496817469604', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640106, '金凤区', 'J', '106.24956089094', '38.478695238722', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640121, '永宁县', 'Y', '106.25960457536', '38.283001541521', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640122, '贺兰县', 'H', '106.3565182653', '38.560406689579', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640181, '灵武市', 'L', '106.34644035545', '38.108658666793', 640100, 3, 'tr_0 tr_640000 tr_640100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540502, '乃东区', 'N', '91.778681965641', '29.234229154985', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540521, '扎囊县', 'Z', '91.343627127639', '29.251164315795', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540522, '贡嘎县', 'G', '90.990582372498', '29.295585920341', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540523, '桑日县', 'S', '92.022157253696', '29.265175836421', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540524, '琼结县', 'Q', '91.690100777976', '29.030865581933', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540525, '曲松县', 'Q', '92.210174662975', '29.068424815624', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540526, '措美县', 'C', '91.439917573188', '28.444257990161', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540527, '洛扎县', 'L', '90.866452001915', '28.391634617398', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540528, '加查县', 'J', '92.600448881489', '29.146087474784', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540529, '隆子县', 'L', '92.468965520987', '28.414018998419', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540530, '错那县', 'C', '91.96375005827', '27.997004265923', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(540531, '浪卡子县', 'L', '90.404646883462', '28.973992017804', 540500, 3, 'tr_0 tr_540000 tr_540500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640302, '利通区', 'L', '106.21940702074', '37.990746080857', 640300, 3, 'tr_0 tr_640000 tr_640300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640303, '红寺堡区', 'H', '106.06842117808', '37.431882454446', 640300, 3, 'tr_0 tr_640000 tr_640300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640323, '盐池县', 'Y', '107.41337954864', '37.789295649909', 640300, 3, 'tr_0 tr_640000 tr_640300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640324, '同心县', 'T', '105.9205990776', '36.986269629165', 640300, 3, 'tr_0 tr_640000 tr_640300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640381, '青铜峡市', 'Q', '106.08537031661', '38.027412223967', 640300, 3, 'tr_0 tr_640000 tr_640300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640402, '原州区', 'Y', '106.29451461392', '36.009367675763', 640400, 3, 'tr_0 tr_640000 tr_640400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640422, '西吉县', 'X', '105.73538590857', '35.97007642089', 640400, 3, 'tr_0 tr_640000 tr_640400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640423, '隆德县', 'L', '106.1184982967', '35.631762315094', 640400, 3, 'tr_0 tr_640000 tr_640400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640424, '泾源县', 'J', '106.33739343083', '35.504361637679', 640400, 3, 'tr_0 tr_640000 tr_640400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640425, '彭阳县', 'P', '106.64454429656', '35.85540546349', 640400, 3, 'tr_0 tr_640000 tr_640400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640502, '沙坡头区', 'S', '105.20357090089', '37.505701418703', 640500, 3, 'tr_0 tr_640000 tr_640500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640521, '中宁县', 'Z', '105.6915371912', '37.497420805579', 640500, 3, 'tr_0 tr_640000 tr_640500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640522, '海原县', 'H', '105.65055514638', '36.570781489719', 640500, 3, 'tr_0 tr_640000 tr_640500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650102, '天山区', 'T', '87.638407777566', '43.800271358313', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650103, '沙依巴克区', 'S', '87.604670027697', '43.807262352761', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650104, '新市区', 'X', '87.575908441201', '43.861394002748', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650105, '水磨沟区', 'S', '87.648896662192', '43.838251163831', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650106, '头屯河区', 'T', '87.434506709858', '43.882653022602', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650107, '达坂城区', 'D', '88.317397656607', '43.36994274634', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650109, '米东区', 'M', '87.662134271848', '43.979247426398', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650121, '乌鲁木齐县', 'W', '87.416028745179', '43.477086065793', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650171, '乌鲁木齐经济技术开发区', 'W', '87.523118529771', '43.868981036009', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650172, '乌鲁木齐高新技术产业开发区', 'W', '87.58408445863', '43.87767236981', 650100, 3, 'tr_0 tr_650000 tr_650100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650202, '独山子区', 'D', '84.893613283343', '44.334407392365', 650200, 3, 'tr_0 tr_650000 tr_650200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650203, '克拉玛依区', 'K', '84.866221962114', '45.596624206981', 650200, 3, 'tr_0 tr_650000 tr_650200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650204, '白碱滩区', 'B', '85.139510123686', '45.693951629764', 650200, 3, 'tr_0 tr_650000 tr_650200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650205, '乌尔禾区', 'W', '85.700304826442', '46.095295184689', 650200, 3, 'tr_0 tr_650000 tr_650200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650402, '高昌区', 'G', '89.192458882701', '42.948548691684', 650400, 3, 'tr_0 tr_650000 tr_650400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650421, '鄯善县', 'S', '90.220093886103', '42.874759228479', 650400, 3, 'tr_0 tr_650000 tr_650400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650422, '托克逊县', 'T', '88.660164359541', '42.798545831023', 650400, 3, 'tr_0 tr_650000 tr_650400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650502, '伊州区', 'Y', '93.521320462369', '42.832824924721', 650500, 3, 'tr_0 tr_650000 tr_650500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650521, '巴里坤哈萨克自治县', 'B', '93.022930953564', '43.605688770787', 650500, 3, 'tr_0 tr_650000 tr_650500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(650522, '伊吾县', 'Y', '94.703825671285', '43.260676527466', 650500, 3, 'tr_0 tr_650000 tr_650500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652301, '昌吉市', 'C', '87.27386462195', '44.020126845939', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652302, '阜康市', 'F', '87.993677905062', '44.163137321346', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652323, '呼图壁县', 'H', '86.905143806731', '44.197654596132', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652324, '玛纳斯县', 'M', '86.220643452199', '44.3100628588', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652325, '奇台县', 'Q', '89.601080811724', '44.026897819018', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652327, '吉木萨尔县', 'J', '89.187122858141', '44.005717795203', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652328, '木垒哈萨克自治县', 'M', '90.292514737334', '43.840308302807', 652300, 3, 'tr_0 tr_650000 tr_652300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652701, '博乐市', 'B', '82.057972254591', '44.860009784639', 652700, 3, 'tr_0 tr_650000 tr_652700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652702, '阿拉山口市', 'A', '82.560725272438', '45.179670079921', 652700, 3, 'tr_0 tr_650000 tr_652700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652722, '精河县', 'J', '82.900655316205', '44.606645943492', 652700, 3, 'tr_0 tr_650000 tr_652700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652723, '温泉县', 'W', '81.031145546486', '44.974856638705', 652700, 3, 'tr_0 tr_650000 tr_652700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652801, '库尔勒市', 'K', '86.181494309938', '41.732373221412', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652822, '轮台县', 'L', '84.258212152054', '41.783813000515', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652823, '尉犁县', 'W', '86.266036536399', '41.350122782054', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652824, '若羌县', 'R', '88.175324441896', '39.028991037175', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652825, '且末县', 'Q', '85.535990385731', '38.15138769413', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652826, '焉耆回族自治县', 'Y', '86.581222026277', '42.064850858728', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652827, '和静县', 'H', '86.390398220692', '42.329365035879', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652828, '和硕县', 'H', '86.883689037252', '42.288065062428', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652829, '博湖县', 'B', '86.638469149986', '41.986430356829', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652871, '库尔勒经济技术开发区', 'K', '86.229512961483', '41.71760888729', 652800, 3, 'tr_0 tr_650000 tr_652800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652901, '阿克苏市', 'A', '80.269926757334', '41.173859926953', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652922, '温宿县', 'W', '80.245564352581', '41.282567249887', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652923, '库车县', 'K', '82.968458787284', '41.723447514833', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652924, '沙雅县', 'S', '82.788823736148', '41.227749329027', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652925, '新和县', 'X', '82.615823030526', '41.553999628477', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652926, '拜城县', 'B', '81.858516272038', '41.800706601984', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652927, '乌什县', 'W', '79.230868990897', '41.220871106999', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652928, '阿瓦提县', 'A', '80.381849245908', '40.649358802911', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(652929, '柯坪县', 'K', '79.053213535614', '40.514055520966', 652900, 3, 'tr_0 tr_650000 tr_652900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653001, '阿图什市', 'A', '76.174906408698', '39.722079128589', 653000, 3, 'tr_0 tr_650000 tr_653000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653022, '阿克陶县', 'A', '75.953725266709', '39.153888517642', 653000, 3, 'tr_0 tr_650000 tr_653000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653023, '阿合奇县', 'A', '78.45253927839', '40.942958224222', 653000, 3, 'tr_0 tr_650000 tr_653000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653024, '乌恰县', 'W', '75.26533363237', '39.725123590953', 653000, 3, 'tr_0 tr_650000 tr_653000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653101, '喀什市', 'K', '76.000312737915', '39.473649532912', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653121, '疏附县', 'S', '75.869168667361', '39.381291555212', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653122, '疏勒县', 'S', '76.056614395075', '39.406709108732', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653123, '英吉沙县', 'Y', '76.182075425651', '38.935670863521', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653124, '泽普县', 'Z', '77.266559423761', '38.190725516333', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653125, '莎车县', 'S', '77.252436713686', '38.420156752419', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653126, '叶城县', 'Y', '77.420097621865', '37.889166844427', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653127, '麦盖提县', 'M', '77.658824287414', '38.911194315553', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653128, '岳普湖县', 'Y', '76.78414771574', '39.239387333945', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653129, '伽师县', 'J', '76.730385568257', '39.493851605868', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653130, '巴楚县', 'B', '78.5557014018', '39.79078837708', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653131, '塔什库尔干塔吉克自治县', 'T', '75.230804744838', '37.779045640763', 653100, 3, 'tr_0 tr_650000 tr_653100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653201, '和田市', 'H', '79.920212469755', '37.118335544466', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653221, '和田县', 'H', '79.866215595042', '37.090362410221', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653222, '墨玉县', 'M', '79.735479265358', '37.282993446907', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653223, '皮山县', 'P', '78.289871062405', '37.627248714375', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653224, '洛浦县', 'L', '80.195387611879', '37.079611030988', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653225, '策勒县', 'C', '80.813201268742', '37.004122359371', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653226, '于田县', 'Y', '81.683782914748', '36.86295413611', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(653227, '民丰县', 'M', '82.702713427589', '37.070256968231', 653200, 3, 'tr_0 tr_650000 tr_653200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654002, '伊宁市', 'Y', '81.284242405278', '43.915299436243', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654003, '奎屯市', 'K', '84.909449241687', '44.432057210004', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654004, '霍尔果斯市', 'H', '80.427129772427', '44.235308556093', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654021, '伊宁县', 'Y', '81.533906479394', '43.982909125124', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654022, '察布查尔锡伯自治县', 'C', '81.157924570907', '43.846690330452', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654023, '霍城县', 'H', '80.885281123201', '44.062249507399', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654024, '巩留县', 'G', '82.238225609409', '43.488485559536', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654025, '新源县', 'X', '83.267022301497', '43.435927002185', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654026, '昭苏县', 'Z', '81.137377539147', '43.163496741509', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654027, '特克斯县', 'T', '81.842587249244', '43.224248213467', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654028, '尼勒克县', 'N', '82.51800753168', '43.804594836238', 654000, 3, 'tr_0 tr_650000 tr_654000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654201, '塔城市', 'T', '82.987235518406', '46.750948254373', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654202, '乌苏市', 'W', '84.720088146964', '44.424048034452', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654221, '额敏县', 'E', '83.633374454783', '46.531884861309', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654223, '沙湾县', 'S', '85.626144686035', '44.331949461741', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654224, '托里县', 'T', '83.612909438315', '45.94274280505', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654225, '裕民县', 'Y', '82.9894387025', '46.207453546928', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654226, '和布克赛尔蒙古自治县', 'H', '85.735008883548', '46.798685112637', 654200, 3, 'tr_0 tr_650000 tr_654200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654301, '阿勒泰市', 'A', '88.139226564024', '47.832752648475', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654321, '布尔津县', 'B', '86.881360170273', '47.707951723888', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654322, '富蕴县', 'F', '89.531953408055', '46.999951053055', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654323, '福海县', 'F', '87.493157246325', '47.118140737535', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654324, '哈巴河县', 'H', '86.424817684664', '48.066148902458', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654325, '青河县', 'Q', '90.389444407193', '46.68019396705', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(654326, '吉木乃县', 'J', '85.880818240706', '47.449018413257', 654300, 3, 'tr_0 tr_650000 tr_654300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(659001, '石河子市', 'S', '114.5163190347', '36.772534944449', 659000, 3, 'tr_0 tr_650000 tr_659000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(659002, '阿拉尔市', 'A', '81.287354225395', '40.553263894706', 659000, 3, 'tr_0 tr_650000 tr_659000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(659003, '图木舒克市', 'T', '79.075616286896', '39.871209077425', 659000, 3, 'tr_0 tr_650000 tr_659000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(659004, '五家渠市', 'W', '87.549936632296', '44.172444518901', 659000, 3, 'tr_0 tr_650000 tr_659000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(659006, '铁门关市', 'T', '85.686857831724', '41.863648697693', 659000, 3, 'tr_0 tr_650000 tr_659000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130102, '长安区', 'Z', '114.54561160958', '38.043256136498', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130104, '桥西区', 'Q', '114.46741977426', '38.010381080199', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130105, '新华区', 'X', '114.46943844641', '38.057119539196', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130107, '井陉矿区', 'J', '114.06863186515', '38.070565834517', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130108, '裕华区', 'Y', '114.53758291426', '38.012087686284', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130109, '藁城区', 'G', '114.85337790442', '38.027816555321', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130110, '鹿泉区', 'L', '114.32059757764', '38.09174945759', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130111, '栾城区', 'L', '114.65457561879', '37.905816364165', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130121, '井陉县', 'J', '114.15146299928', '38.038386214927', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130123, '正定县', 'Z', '114.57748106365', '38.151713727954', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130125, '行唐县', 'X', '114.55960676028', '38.444238747676', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130126, '灵寿县', 'L', '114.38947775771', '38.314629370046', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130127, '高邑县', 'G', '114.61841307286', '37.621879561553', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130128, '深泽县', 'S', '115.20740369913', '38.190451203069', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130129, '赞皇县', 'Z', '114.39246354556', '37.671667061291', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130130, '无极县', 'W', '114.98243934348', '38.18543617028', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130131, '平山县', 'P', '113.98543503085', '38.271951013311', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130132, '元氏县', 'Y', '114.53256551866', '37.772338553855', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130133, '赵县', 'Z', '114.78259655058', '37.761858522888', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130171, '石家庄高新技术产业开发区', 'S', '114.47561896798', '38.014375062684', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130172, '石家庄循环化工园区', 'S', '114.69991493042', '38.002797025837', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130181, '辛集市', 'X', '115.22445084279', '37.949309043173', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130183, '晋州市', 'J', '115.0505290147', '38.039491309736', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130184, '新乐市', 'X', '114.69053218327', '38.349292647959', 130100, 3, 'tr_0 tr_130000 tr_130100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130202, '路南区', 'L', '118.20604028639', '39.612986996735', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130203, '路北区', 'L', '118.2239040796', '39.673985965975', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130204, '古冶区', 'G', '118.45340092552', '39.739735914766', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130205, '开平区', 'K', '118.26860762449', '39.677143635862', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130207, '丰南区', 'F', '118.0903655757', '39.581540485109', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130208, '丰润区', 'F', '118.16854133135', '39.838353430851', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130209, '曹妃甸区', 'C', '118.46645986221', '39.279283996335', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130224, '滦南县', 'L', '118.68040524315', '39.510044702469', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130225, '乐亭县', 'L', '118.91938406305', '39.431931320096', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130227, '迁西县', 'Q', '118.32038397781', '40.147837151362', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130229, '玉田县', 'Y', '117.74543440564', '39.906592348189', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130271, '唐山市芦台经济技术开发区', 'T', '117.83195389236', '39.334328330689', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130272, '唐山市汉沽管理区', 'T', '117.88832858176', '39.367125548614', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130273, '唐山高新技术产业开发区', 'T', '118.18645947204', '39.636583724147', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130274, '河北唐山海港经济开发区', 'H', '119.00992050252', '39.237818631017', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130281, '遵化市', 'Z', '117.97237521307', '40.195533204033', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130283, '迁安市', 'Q', '118.70645736056', '40.004183924931', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130284, '滦州市', 'L', '118.71048006247', '39.747115765489', 130200, 3, 'tr_0 tr_130000 tr_130200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130302, '海港区', 'H', '119.61747524097', '39.940412688357', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130303, '山海关区', 'S', '119.78243521397', '39.984445641831', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130304, '北戴河区', 'B', '119.49152607118', '39.841005667936', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130306, '抚宁区', 'F', '119.25154914402', '39.88141356935', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130321, '青龙满族自治县', 'Q', '118.95648129587', '40.412793702313', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130322, '昌黎县', 'C', '119.16937521021', '39.71905083388', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130324, '卢龙县', 'L', '118.89948911126', '39.897958466103', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130371, '秦皇岛市经济技术开发区', 'Q', '119.48439783729', '39.943641230776', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130372, '北戴河新区', 'B', '119.47981001139', '39.831809170026', 130300, 3, 'tr_0 tr_130000 tr_130300 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130402, '邯山区', 'H', '114.49638868967', '36.586692191979', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130403, '丛台区', 'C', '114.49943259789', '36.642672565982', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130404, '复兴区', 'F', '114.44809470749', '36.610368592227', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130406, '峰峰矿区', 'F', '114.21948332131', '36.425653614399', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130407, '肥乡区', 'F', '114.80654708226', '36.55382525367', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130408, '永年区', 'Y', '114.55062514246', '36.747569389575', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130423, '临漳县', 'L', '114.62642694614', '36.340765980595', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130424, '成安县', 'C', '114.67657655802', '36.449796208953', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130425, '大名县', 'D', '115.15461253007', '36.291288466231', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130426, '涉县', 'S', '113.69758434883', '36.590691663211', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130427, '磁县', 'C', '114.38043173139', '36.380358940947', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130430, '邱县', 'Q', '115.19339516368', '36.817362417143', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130431, '鸡泽县', 'J', '114.89658577064', '36.916398206414', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130432, '广平县', 'G', '114.95441490649', '36.489779995612', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130433, '馆陶县', 'G', '115.28853676635', '36.553956728653', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130434, '魏县', 'W', '114.94545044631', '36.366156454371', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130435, '曲周县', 'Q', '114.96340442939', '36.771544831336', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130471, '邯郸经济技术开发区', 'H', '114.54562822824', '36.631262731204', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130473, '邯郸冀南新区', 'H', '114.54562822824', '36.631262731204', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130481, '武安市', 'W', '114.21051607638', '36.70248828628', 130400, 3, 'tr_0 tr_130000 tr_130400 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130502, '桥东区', 'Q', '114.51347113674', '37.073749959651', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130503, '桥西区', 'Q', '114.4743934996', '37.066172415704', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130521, '邢台县', 'X', '114.14341085818', '37.17710928752', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130522, '临城县', 'L', '114.50544333972', '37.450788548442', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130523, '内丘县', 'N', '114.51849293403', '37.292857912047', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130524, '柏乡县', 'B', '114.69949736209', '37.488758727152', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130525, '隆尧县', 'L', '114.77661608165', '37.355908006295', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130526, '任县', 'R', '114.67860600983', '37.126726783523', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130527, '南和县', 'N', '114.69054772395', '37.01099797056', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130528, '宁晋县', 'N', '114.92556169283', '37.625612279932', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130529, '巨鹿县', 'J', '115.04358735887', '37.227088328938', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130530, '新河县', 'X', '115.24854716945', '37.534590601536', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130531, '广宗县', 'G', '115.14960474634', '37.080457122162', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130532, '平乡县', 'P', '115.03658174369', '37.069096393044', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130533, '威县', 'W', '115.27361761861', '36.981581608663', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130534, '清河县', 'Q', '115.67439356765', '37.046375401617', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130535, '临西县', 'L', '115.50762943786', '36.87675996654', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130571, '河北邢台经济开发区', 'H', '114.51146225613', '37.076685950966', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130581, '南宫市', 'N', '115.4145290548', '37.364069402723', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130582, '沙河市', 'S', '114.50947385688', '36.861127341145', 130500, 3, 'tr_0 tr_130000 tr_130500 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130602, '竞秀区', 'J', '115.46543414161', '38.883787961691', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130606, '莲池区', 'L', '115.53548768833', '38.860675807041', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130607, '满城区', 'M', '115.3283750886', '38.955441208686', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130608, '清苑区', 'Q', '115.49660588179', '38.771001774749', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130609, '徐水区', 'X', '115.66247952133', '39.024712583834', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130623, '涞水县', 'L', '115.72054302508', '39.400334198489', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130624, '阜平县', 'F', '114.20156347384', '38.855351444796', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130626, '定兴县', 'D', '115.81441011189', '39.269423528527', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130627, '唐县', 'T', '114.9894471146', '38.754019925125', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130628, '高阳县', 'G', '115.78544721513', '38.706257734087', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130629, '容城县', 'R', '115.86863129349', '39.048559435416', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130630, '涞源县', 'L', '114.70047561679', '39.366271691524', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130631, '望都县', 'W', '115.16158760286', '38.700157645549', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130632, '安新县', 'A', '115.94242628266', '38.941734298593', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130633, '易县', 'Y', '115.50360664612', '39.355054469981', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130634, '曲阳县', 'Q', '114.7514548138', '38.628384104122', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130635, '蠡县', 'L', '115.59044548045', '38.494200963238', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130636, '顺平县', 'S', '115.14159743069', '38.843261370364', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130637, '博野县', 'B', '115.47046698806', '38.463408004952', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130638, '雄县', 'X', '116.11460144552', '39.000180119499', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130671, '保定高新技术产业开发区', 'B', '115.47146383769', '38.879987768455', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130672, '保定白沟新城', 'B', '116.06423983354', '39.145149134834', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130681, '涿州市', 'Z', '115.98161971138', '39.491065832', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130682, '定州市', 'D', '114.99649620776', '38.522198840134', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130683, '安国市', 'A', '115.33340802488', '38.424828318687', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130684, '高碑店市', 'G', '115.88056905507', '39.332335447462', 130600, 3, 'tr_0 tr_130000 tr_130600 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130702, '桥东区', 'Q', '114.90060577763', '40.794268437423', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130703, '桥西区', 'Q', '114.87651609843', '40.825605695041', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130705, '宣化区', 'X', '115.1054444068', '40.614591888266', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130706, '下花园区', 'X', '115.29351688226', '40.508145182672', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130708, '万全区', 'W', '114.74742582376', '40.773149648997', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130709, '崇礼区', 'C', '115.28954933632', '40.98047788587', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130722, '张北县', 'Z', '114.7263751121', '41.164943620015', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130723, '康保县', 'K', '114.60635583664', '41.858636884497', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130724, '沽源县', 'G', '115.69540744878', '41.676015876097', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130725, '尚义县', 'S', '113.97552438548', '41.081888482486', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130726, '蔚县', 'W', '114.5954005518', '39.847088636366', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130727, '阳原县', 'Y', '114.15752413604', '40.109588388731', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130728, '怀安县', 'H', '114.39246911506', '40.680369343116', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130730, '怀来县', 'H', '115.52455288485', '40.420289890382', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130731, '涿鹿县', 'Z', '115.21138346203', '40.385834075003', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130732, '赤城县', 'C', '115.83850589957', '40.918761216841', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130771, '张家口市高新技术产业开发区', 'Z', '114.89257223145', '40.773237202691', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130772, '张家口市察北管理区', 'Z', '115.13535097349', '41.463489368202', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130773, '张家口市塞北管理区', 'Z', '115.80931788745', '41.877919284073', 130700, 3, 'tr_0 tr_130000 tr_130700 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130802, '双桥区', 'S', '117.94942790899', '40.980824477401', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130803, '双滦区', 'S', '117.80657828883', '40.964729148178', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130804, '鹰手营子矿区', 'Y', '117.66560909159', '40.552043233623', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130821, '承德县', 'C', '118.18045573699', '40.774367194936', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130822, '兴隆县', 'X', '117.50742737264', '40.423454029635', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130824, '滦平县', 'L', '117.33949787111', '40.94756096291', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130825, '隆化县', 'L', '117.7454510243', '41.319898805021', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130826, '丰宁满族自治县', 'F', '116.65239270009', '41.215336380004', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130827, '宽城满族自治县', 'K', '118.49159436055', '40.617151507814', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130828, '围场满族蒙古族自治县', 'W', '117.76656434785', '41.944323773611', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130871, '承德高新技术产业开发区', 'C', '117.96939750997', '40.957856012338', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130881, '平泉市', 'P', '118.70742672204', '41.023755625929', 130800, 3, 'tr_0 tr_130000 tr_130800 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130902, '新华区', 'X', '116.87243317375', '38.320366719478', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130903, '运河区', 'Y', '116.8386119713', '38.316522737476', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130921, '沧县', 'C', '116.88439779466', '38.299452743407', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130922, '青县', 'Q', '116.81057477836', '38.58846475864', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130923, '东光县', 'D', '116.54340955698', '37.894513906653', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130924, '海兴县', 'H', '117.50441804918', '38.149402516518', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130925, '盐山县', 'Y', '117.23741362448', '38.064318399559', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130926, '肃宁县', 'S', '115.83651767998', '38.428905919718', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130927, '南皮县', 'N', '116.71560115883', '38.045187886965', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130928, '吴桥县', 'W', '116.39739206243', '37.633908755554', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130929, '献县', 'X', '116.12956002887', '38.195981438007', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130930, '孟村回族自治县', 'M', '117.11043607455', '38.059839127888', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130971, '河北沧州经济开发区', 'H', '116.84558075595', '38.310215141107', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130972, '沧州高新技术产业开发区', 'C', '116.81727200975', '38.34342368505', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130973, '沧州渤海新区', 'C', '117.7623777537', '38.282913560669', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130981, '泊头市', 'P', '116.58462803581', '38.089256915446', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130982, '任丘市', 'R', '116.1056050955', '38.717348630775', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130983, '黄骅市', 'H', '117.33648109172', '38.377493900735', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(130984, '河间市', 'H', '116.10562809212', '38.451356515106', 130900, 3, 'tr_0 tr_130000 tr_130900 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131002, '安次区', 'A', '116.70963326617', '39.526159764041', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131003, '广阳区', 'G', '116.71761426148', '39.528611447334', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131022, '固安县', 'G', '116.30542004093', '39.444484855304', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131023, '永清县', 'Y', '116.50542928985', '39.327852998574', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131024, '香河县', 'X', '117.0124021078', '39.767939188546', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131025, '大城县', 'D', '116.66040917846', '38.710858640026', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131026, '文安县', 'W', '116.464609479', '38.87895049307', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131028, '大厂回族自治县', 'D', '116.99640912565', '39.892208394086', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131071, '廊坊经济技术开发区', 'L', '116.76777922809', '39.587610159458', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131081, '霸州市', 'B', '116.3983972663', '39.130920596981', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131082, '三河市', 'S', '117.08458787248', '39.988099552443', 131000, 3, 'tr_0 tr_130000 tr_131000 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131102, '桃城区', 'T', '115.68139532011', '37.741636751694', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131103, '冀州区', 'J', '115.58542988146', '37.557086025833', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131121, '枣强县', 'Z', '115.7305629044', '37.519363689764', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131122, '武邑县', 'W', '115.89451363117', '37.807764276867', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131123, '武强县', 'W', '115.98961391178', '38.046856805237', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131124, '饶阳县', 'R', '115.73257160535', '38.241037525428', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131125, '安平县', 'A', '115.52554928532', '38.240506922191', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131126, '故城县', 'G', '115.97260216135', '37.353347552477', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131127, '景县', 'J', '116.2774107853', '37.698814551395', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131128, '阜城县', 'F', '116.18242153525', '37.868732457906', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131171, '河北衡水高新技术产业开发区', 'H', '115.73456139967', '37.807821775773', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131172, '衡水滨湖新区', 'H', '115.70627999969', '37.701616037093', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(131182, '深州市', 'S', '115.56636927583', '38.006941234922', 131100, 3, 'tr_0 tr_130000 tr_131100 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640202, '大武口区', '', '', '', 640200, 3, 'tr_0 tr_640000 tr_640200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640205, '惠农区', '', '', '', 640200, 3, 'tr_0 tr_640000 tr_640200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'), +(640221, '平罗县', '', '', '', 640200, 3, 'tr_0 tr_640000 tr_640200 ', 0, 1, '2022-10-07 20:42:26', '2022-11-01 00:00:00'); + +INSERT INTO `hg_sys_serve_license` (`id`, `group`, `name`, `appid`, `secret_key`, `remote_addr`, `online_limit`, `login_times`, `last_login_at`, `last_active_at`, `routes`, `allowed_ips`, `end_at`, `remark`, `status`, `created_at`, `updated_at`) VALUES +(1, 'cron', '定时任务', '1002', 'hotgo', '127.0.0.1:55606', 1, 1, '2024-04-21 22:52:03', '2024-04-21 22:56:17', NULL, '127.0.0.1', '2033-03-09 00:00:00', '这是默认的定时任务TCP客户端授权凭证。', 1, '2023-03-11 00:00:00', '2024-04-21 22:56:17'), +(2, 'auth', '授权服务', 'mengshuai', '123456', '127.0.0.1:50640', 1, 3, '2023-07-26 17:05:30', '2023-07-26 17:07:01', '[\"ExampleRPCHelloReq\", \"ExampleHelloReq\", \"AuthSummaryReq\"]', '127.0.0.1', '2033-03-09 00:00:00', '这是一个测试的授权服务,可以为第三方平台提供授权支持。', 1, '2023-03-11 00:00:00', '2023-07-26 17:07:01'); + + +INSERT INTO `hg_sys_sms_log` (`id`, `event`, `mobile`, `code`, `times`, `ip`, `status`, `created_at`, `updated_at`) VALUES +(1, 'code', '1530380571', '1234', 1, '39.165.245.100', 1, '2022-12-16 16:01:30', '2022-01-24 11:33:16'); + +INSERT INTO `hg_test_category` (`id`, `name`, `short_name`, `description`, `sort`, `remark`, `status`, `created_at`, `updated_at`, `deleted_at`) VALUES +(1, '官方新闻', 'G', '用于演示关联表和字典选项生成和使用。', 10, '', 1, '2023-01-03 00:00:00', '2023-01-03 00:00:00', NULL), +(2, '移动应用', 'Y', '', 20, '', 1, '2023-01-03 00:00:00', '2023-01-03 00:00:00', NULL), +(3, '微信公众号', 'W', '', 30, '', 1, '2023-01-03 00:00:00', '2023-01-03 00:00:00', NULL), +(4, '系统搭建', 'X', '', 40, '', 1, '2023-01-03 00:00:00', '2023-01-03 00:00:00', NULL); + +-- 2024-05-13 02:00:07 diff --git a/server/storage/data/sqlite/tables.sql b/server/storage/data/sqlite/tables.sql new file mode 100644 index 0000000..e8bfff1 --- /dev/null +++ b/server/storage/data/sqlite/tables.sql @@ -0,0 +1,656 @@ +CREATE TABLE `hg_addon_hgexample_table` ( -- 插件_案例_表格 +`id` INTEGER NOT NULL , -- ID +`category_id` INTEGER NOT NULL , -- 分类ID +`flag` TEXT DEFAULT NULL , -- 标签 +`title` TEXT NOT NULL , -- 标题 +`description` TEXT NOT NULL , -- 描述 +`content` TEXT DEFAULT NULL , -- 内容 +`image` TEXT DEFAULT NULL , -- 单图 +`images` TEXT DEFAULT NULL , -- 多图 +`attachfile` TEXT DEFAULT NULL , -- 附件 +`attachfiles` TEXT DEFAULT NULL , -- 多附件 +`map` TEXT DEFAULT NULL , -- 动态键值对 +`star` decimal(5,1) DEFAULT 0.0 , -- 推荐星 +`price` decimal(10,2) NOT NULL DEFAULT 0.00 , -- 价格 +`views` INTEGER DEFAULT NULL , -- 浏览次数 +`activity_at` date DEFAULT NULL , -- 活动时间 +`start_at` datetime DEFAULT NULL , -- 开启时间 +`end_at` datetime DEFAULT NULL , -- 结束时间 +`switch` INTEGER DEFAULT NULL , -- 开关 +`sort` INTEGER DEFAULT NULL , -- 排序 +`avatar` TEXT DEFAULT '' , -- 头像 +`sex` INTEGER DEFAULT NULL , -- 性别 +`qq` TEXT DEFAULT '' , -- QQ +`email` TEXT DEFAULT '' , -- 邮箱 +`mobile` TEXT DEFAULT '' , -- 手机号码 +`hobby` TEXT DEFAULT NULL , -- 爱好 +`channel` INTEGER DEFAULT 1 , -- 渠道 +`city_id` INTEGER DEFAULT 0 , -- 所在城市 +`pid` INTEGER NOT NULL , -- 上级ID +`level` INTEGER DEFAULT 1 , -- 树等级 +`tree` TEXT DEFAULT NULL , -- 关系树 +`remark` TEXT DEFAULT NULL , -- 备注 +`status` INTEGER DEFAULT 1 , -- 状态 +`created_by` INTEGER DEFAULT 0 , -- 创建者 +`updated_by` INTEGER DEFAULT 0 , -- 更新者 +`created_at` datetime DEFAULT NULL , -- 创建时间 +`updated_at` datetime DEFAULT NULL , -- 修改时间 +`deleted_at` datetime DEFAULT NULL , -- 删除时间 +PRIMARY KEY (`id`) +); +CREATE TABLE `hg_addon_hgexample_tenant_order` ( -- 多租户_充值订单 + `id` INTEGER NOT NULL , -- ID + `tenant_id` INTEGER DEFAULT NULL, -- 租户ID + `merchant_id` INTEGER NOT NULL, -- 商户ID + `user_id` INTEGER NOT NULL, -- 用户ID + `product_name` TEXT DEFAULT NULL, -- 购买产品 + `order_sn` TEXT DEFAULT NULL, -- 订单号 + `money` decimal(10,2) NOT NULL, -- 充值金额 + `remark` TEXT DEFAULT NULL, -- 备注 + `status` INTEGER DEFAULT 1, -- 订单状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL, -- 修改时间 + PRIMARY KEY (`id`) +); +CREATE TABLE `hg_admin_cash` ( -- 管理员_提现记录表 +`id` INTEGER NOT NULL , -- ID +`member_id` INTEGER NOT NULL , -- 管理员ID +`money` decimal(10,2) NOT NULL , -- 提现金额 +`fee` decimal(10,2) NOT NULL , -- 手续费 +`last_money` decimal(10,2) NOT NULL , -- 最终到账金额 +`ip` TEXT NOT NULL , -- 申请人IP +`status` INTEGER NOT NULL , -- 状态 +`msg` TEXT NOT NULL , -- 处理结果 +`handle_at` datetime DEFAULT NULL , -- 处理时间 +`created_at` datetime NOT NULL , -- 申请时间 +PRIMARY KEY (`id`) +); +CREATE TABLE `hg_admin_credits_log` ( -- 管理员_资产变动表 + `id` INTEGER NOT NULL PRIMARY KEY, -- 变动ID + `member_id` INTEGER DEFAULT 0, -- 管理员ID + `app_id` TEXT DEFAULT NULL, -- 应用id + `addons_name` TEXT NOT NULL DEFAULT '', -- 插件名称 + `credit_type` TEXT NOT NULL DEFAULT '', -- 变动类型 + `credit_group` TEXT DEFAULT NULL, -- 变动组别 + `before_num` decimal(10,2) DEFAULT 0.00, -- 变动前 + `num` decimal(10,2) DEFAULT 0.00, -- 变动数据 + `after_num` decimal(10,2) DEFAULT 0.00, -- 变动后 + `remark` TEXT DEFAULT NULL, -- 备注 + `ip` TEXT DEFAULT NULL, -- 操作人IP + `map_id` INTEGER DEFAULT 0, -- 关联ID + `status` INTEGER DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 修改时间 +); +CREATE TABLE `hg_admin_dept` ( -- 管理员_部门 + `id` INTEGER NOT NULL PRIMARY KEY, -- 部门ID + `pid` INTEGER DEFAULT 0, -- 父部门ID + `name` TEXT DEFAULT NULL, -- 部门名称 + `code` TEXT DEFAULT NULL, -- 部门编码 + `type` TEXT DEFAULT NULL, -- 部门类型 + `leader` TEXT DEFAULT NULL, -- 负责人 + `phone` TEXT DEFAULT NULL, -- 联系电话 + `email` TEXT DEFAULT NULL, -- 邮箱 + `level` INTEGER NOT NULL, -- 关系树等级 + `tree` TEXT DEFAULT NULL, -- 关系树 + `sort` INTEGER DEFAULT 0, -- 排序 + `status` INTEGER DEFAULT 1, -- 部门状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_admin_member` ( -- 管理员_用户表 + `id` INTEGER NOT NULL PRIMARY KEY, -- 管理员ID + `dept_id` INTEGER DEFAULT 0, -- 部门ID + `role_id` INTEGER DEFAULT 10, -- 角色ID + `real_name` TEXT DEFAULT '', -- 真实姓名 + `username` TEXT NOT NULL DEFAULT '', -- 帐号 + `password_hash` char(32) NOT NULL DEFAULT '', -- 密码 + `salt` char(16) NOT NULL, -- 密码盐 + `password_reset_token` TEXT DEFAULT '', -- 密码重置令牌 + `integral` decimal(10,2) DEFAULT 0.00, -- 积分 + `balance` decimal(10,2) DEFAULT 0.00, -- 余额 + `avatar` char(150) DEFAULT '', -- 头像 + `sex` INTEGER DEFAULT 1, -- 性别 + `qq` TEXT DEFAULT '', -- qq + `email` TEXT DEFAULT '', -- 邮箱 + `mobile` TEXT DEFAULT '', -- 手机号码 + `birthday` date DEFAULT NULL, -- 生日 + `city_id` INTEGER DEFAULT 0, -- 城市编码 + `address` TEXT DEFAULT '', -- 联系地址 + `pid` INTEGER NOT NULL, -- 上级管理员ID + `level` INTEGER DEFAULT 1, -- 关系树等级 + `tree` TEXT NOT NULL, -- 关系树 + `invite_code` TEXT DEFAULT NULL, -- 邀请码 + `cash` TEXT DEFAULT NULL, -- 提现配置 + `last_active_at` datetime DEFAULT NULL, -- 最后活跃时间 + `remark` TEXT DEFAULT NULL, -- 备注 + `status` INTEGER DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 修改时间 +); +CREATE TABLE `hg_admin_member_post` ( -- 管理员_用户岗位关联 + `member_id` INTEGER NOT NULL, -- 管理员ID + `post_id` INTEGER NOT NULL, -- 岗位ID + PRIMARY KEY (`member_id`, `post_id`) +); +CREATE TABLE `hg_admin_member_role` ( -- 管理员_用户角色关联 + `member_id` INTEGER NOT NULL, -- 管理员ID + `role_id` INTEGER NOT NULL, -- 角色ID + PRIMARY KEY (`member_id`, `role_id`) +); +CREATE TABLE `hg_admin_menu` ( -- 管理员_菜单权限 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 菜单ID + `pid` INTEGER DEFAULT 0, -- 父菜单ID + `level` INTEGER NOT NULL DEFAULT 1, -- 关系树等级 + `tree` TEXT NOT NULL, -- 关系树 + `title` TEXT NOT NULL, -- 菜单名称 + `name` TEXT NOT NULL, -- 名称编码 + `path` TEXT DEFAULT NULL, -- 路由地址 + `icon` TEXT DEFAULT NULL, -- 菜单图标 + `type` INTEGER NOT NULL DEFAULT 1, -- 菜单类型(1目录 2菜单 3按钮) + `redirect` TEXT DEFAULT NULL, -- 重定向地址 + `permissions` TEXT DEFAULT NULL, -- 菜单包含权限集合 + `permission_name` TEXT DEFAULT NULL, -- 权限名称 + `component` TEXT NOT NULL, -- 组件路径 + `always_show` INTEGER DEFAULT 0, -- 取消自动计算根路由模式 + `active_menu` TEXT DEFAULT NULL, -- 高亮菜单编码 + `is_root` INTEGER DEFAULT 0, -- 是否跟路由 + `is_frame` INTEGER DEFAULT 1, -- 是否内嵌 + `frame_src` TEXT DEFAULT NULL, -- 内联外部地址 + `keep_alive` INTEGER DEFAULT 0, -- 缓存该路由 + `hidden` INTEGER DEFAULT 0, -- 是否隐藏 + `affix` INTEGER DEFAULT 0, -- 是否固定 + `sort` INTEGER DEFAULT 0, -- 排序 + `remark` TEXT DEFAULT NULL, -- 备注 + `status` INTEGER DEFAULT 1, -- 菜单状态 + `updated_at` datetime DEFAULT NULL, -- 更新时间 + `created_at` datetime DEFAULT NULL -- 创建时间 +); +CREATE TABLE `hg_admin_notice` ( -- 管理员_通知公告 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 公告ID + `title` TEXT NOT NULL, -- 公告标题 + `type` INTEGER NOT NULL, -- 公告类型 + `tag` INTEGER DEFAULT NULL, -- 标签 + `content` TEXT NOT NULL, -- 公告内容 + `receiver` TEXT DEFAULT NULL, -- 接收者 + `remark` TEXT DEFAULT NULL, -- 备注 + `sort` INTEGER NOT NULL DEFAULT 0, -- 排序 + `status` INTEGER DEFAULT 1, -- 公告状态 + `created_by` INTEGER DEFAULT NULL, -- 发送人 + `updated_by` INTEGER DEFAULT 0, -- 修改人 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL, -- 更新时间 + `deleted_at` datetime DEFAULT NULL -- 删除时间 +); +CREATE TABLE `hg_admin_notice_read` ( -- 管理员_公告已读记录 + `id` INTEGER NOT NULL , -- 记录ID + `notice_id` INTEGER NOT NULL, -- 公告ID + `member_id` INTEGER NOT NULL, -- 会员ID + `clicks` INTEGER DEFAULT 1, -- 已读次数 + `updated_at` datetime DEFAULT NULL, -- 更新时间 + `created_at` datetime DEFAULT NULL, -- 阅读时间 +PRIMARY KEY (`id`) +); +CREATE TABLE `hg_admin_oauth` ( -- 管理员_第三方登录 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 主键 + `member_id` INTEGER DEFAULT 0, -- 用户ID + `unionid` TEXT DEFAULT '', -- 唯一ID + `oauth_client` TEXT DEFAULT NULL, -- 授权组别 + `oauth_openid` TEXT DEFAULT NULL, -- 授权开放ID + `sex` INTEGER DEFAULT 1, -- 性别 + `nickname` TEXT DEFAULT NULL, -- 昵称 + `head_portrait` TEXT DEFAULT NULL, -- 头像 + `birthday` date DEFAULT NULL, -- 生日 + `country` TEXT DEFAULT '', -- 国家 + `province` TEXT DEFAULT '', -- 省 + `city` TEXT DEFAULT '', -- 市 + `status` INTEGER DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 修改时间 +); +CREATE TABLE `hg_admin_order` ( -- 管理员_充值订单 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 主键 + `member_id` INTEGER DEFAULT 0, -- 管理员id + `order_type` TEXT NOT NULL, -- 订单类型 + `product_id` INTEGER DEFAULT NULL, -- 产品id + `order_sn` TEXT DEFAULT '', -- 关联订单号 + `money` decimal(10,2) NOT NULL, -- 充值金额 + `remark` TEXT DEFAULT NULL, -- 备注 + `refund_reason` TEXT DEFAULT NULL, -- 退款原因 + `reject_refund_reason` TEXT DEFAULT NULL, -- 拒绝退款原因 + `status` INTEGER DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 修改时间 +); +CREATE TABLE `hg_admin_post` ( -- 管理员_岗位 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 岗位ID + `code` TEXT NOT NULL, -- 岗位编码 + `name` TEXT NOT NULL, -- 岗位名称 + `remark` TEXT DEFAULT NULL, -- 备注 + `sort` INTEGER NOT NULL, -- 排序 + `status` INTEGER NOT NULL, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_admin_role` ( -- 管理员_角色信息 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 角色ID + `name` TEXT NOT NULL, -- 角色名称 + `key` TEXT NOT NULL, -- 角色权限字符串 + `data_scope` INTEGER DEFAULT 1, -- 数据范围 + `custom_dept` TEXT DEFAULT NULL, -- 自定义部门权限 + `pid` INTEGER DEFAULT 0, -- 上级角色ID + `level` INTEGER NOT NULL DEFAULT 1, -- 关系树等级 + `tree` TEXT DEFAULT NULL, -- 关系树 + `remark` TEXT DEFAULT NULL, -- 备注 + `sort` INTEGER NOT NULL DEFAULT 0, -- 排序 + `status` INTEGER NOT NULL DEFAULT 1, -- 角色状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_admin_role_casbin` ( +`id` INTEGER NOT NULL , +`p_type` TEXT DEFAULT NULL, +`v0` TEXT DEFAULT NULL, +`v1` TEXT DEFAULT NULL, +`v2` TEXT DEFAULT NULL, +`v3` TEXT DEFAULT NULL, +`v4` TEXT DEFAULT NULL, +`v5` TEXT DEFAULT NULL, +PRIMARY KEY (`id`) +); +CREATE TABLE `hg_admin_role_menu` ( -- 管理员_角色菜单关联 + `role_id` INTEGER NOT NULL, -- 角色ID + `menu_id` INTEGER NOT NULL, -- 菜单ID + PRIMARY KEY (`role_id`, `menu_id`) +); +CREATE TABLE `hg_pay_log` ( -- 支付_支付日志 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 主键 + `member_id` INTEGER DEFAULT 0, -- 会员ID + `app_id` TEXT DEFAULT NULL, -- 应用ID + `addons_name` TEXT DEFAULT '', -- 插件名称 + `order_sn` TEXT DEFAULT '', -- 关联订单号 + `order_group` TEXT DEFAULT '', -- 组别[默认统一支付类型] + `openid` TEXT DEFAULT '', -- openid + `mch_id` TEXT DEFAULT '', -- 商户支付账户 + `subject` TEXT DEFAULT NULL, -- 订单标题 + `detail` TEXT DEFAULT NULL, -- 支付商品详情 + `auth_code` TEXT DEFAULT '', -- 刷卡码 + `out_trade_no` TEXT DEFAULT '', -- 商户订单号 + `transaction_id` TEXT DEFAULT NULL, -- 交易号 + `pay_type` TEXT NOT NULL, -- 支付类型 + `pay_amount` decimal(10,2) NOT NULL DEFAULT 0.00, -- 支付金额 + `actual_amount` decimal(10,2) DEFAULT NULL, -- 实付金额 + `pay_status` INTEGER DEFAULT 0, -- 支付状态 + `pay_at` datetime DEFAULT NULL, -- 支付时间 + `trade_type` TEXT DEFAULT '', -- 交易类型 + `refund_sn` TEXT DEFAULT NULL, -- 退款单号 + `is_refund` INTEGER DEFAULT 0, -- 是否退款 + `custom` text DEFAULT NULL, -- 自定义参数 + `create_ip` TEXT DEFAULT NULL, -- 创建者IP + `pay_ip` TEXT DEFAULT NULL, -- 支付者IP + `notify_url` TEXT DEFAULT NULL, -- 支付通知回调地址 + `return_url` TEXT DEFAULT NULL, -- 买家付款成功跳转地址 + `trace_ids` TEXT DEFAULT NULL, -- 链路ID集合 + `status` INTEGER DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 修改时间 +); +CREATE TABLE `hg_pay_refund` ( -- 支付_退款记录 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 主键ID + `member_id` INTEGER DEFAULT 0, -- 会员ID + `app_id` TEXT DEFAULT NULL, -- 应用ID + `order_sn` TEXT DEFAULT NULL, -- 业务订单号 + `refund_trade_no` TEXT DEFAULT NULL, -- 退款交易号 + `refund_money` decimal(10,2) DEFAULT NULL, -- 退款金额 + `refund_way` INTEGER DEFAULT 1, -- 退款方式 + `ip` TEXT DEFAULT NULL, -- 申请者IP + `reason` TEXT DEFAULT NULL, -- 申请退款原因 + `remark` TEXT DEFAULT NULL, -- 退款备注 + `status` INTEGER DEFAULT 1, -- 退款状态 + `created_at` datetime DEFAULT NULL, -- 申请时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_sys_addons_config` ( -- 系统_插件配置 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 配置ID + `addon_name` TEXT NOT NULL, -- 插件名称 + `group` TEXT NOT NULL, -- 分组 + `name` TEXT DEFAULT '', -- 参数名称 + `type` TEXT NOT NULL, -- 键值类型:string,int,uint,bool,datetime,date + `key` TEXT DEFAULT '', -- 参数键名 + `value` TEXT DEFAULT '', -- 参数键值 + `default_value` TEXT NOT NULL, -- 默认值 + `sort` INTEGER NOT NULL DEFAULT 0, -- 排序 + `tip` TEXT DEFAULT NULL, -- 变量描述 + `is_default` INTEGER DEFAULT 0, -- 是否为系统默认 + `status` INTEGER DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_sys_addons_install` ( -- 系统_插件安装记录 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 主键 + `name` TEXT NOT NULL, -- 插件名称 + `version` TEXT NOT NULL DEFAULT '', -- 版本号 + `status` INTEGER DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_sys_attachment` ( -- 系统_附件管理 + `id` INTEGER NOT NULL PRIMARY KEY , -- 文件ID + `app_id` TEXT NOT NULL, -- 应用ID + `member_id` INTEGER DEFAULT 0, -- 管理员ID + `cate_id` INTEGER DEFAULT 0, -- 上传分类 + `drive` TEXT DEFAULT NULL, -- 上传驱动 + `name` TEXT DEFAULT NULL, -- 文件原始名 + `kind` TEXT DEFAULT NULL, -- 上传类型 + `mime_type` TEXT NOT NULL DEFAULT '', -- 扩展类型 + `naive_type` TEXT NOT NULL, -- NaiveUI类型 + `path` TEXT DEFAULT NULL, -- 本地路径 + `file_url` TEXT DEFAULT NULL, -- url + `size` INTEGER DEFAULT 0, -- 文件大小 + `ext` TEXT DEFAULT NULL, -- 扩展名 + `md5` TEXT DEFAULT NULL, -- md5校验码 + `status` INTEGER NOT NULL DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 修改时间 +); +CREATE TABLE `hg_sys_blacklist` ( -- 系统_访问黑名单 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 黑名单ID + `ip` TEXT DEFAULT '', -- IP地址 + `remark` TEXT DEFAULT NULL, -- 备注 + `status` INTEGER DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_sys_config` ( -- 系统_配置 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 配置ID + `group` TEXT NOT NULL, -- 配置分组 + `name` TEXT DEFAULT '', -- 参数名称 + `type` TEXT NOT NULL, -- 键值类型:string,int,uint,bool,datetime,date + `key` TEXT DEFAULT '', -- 参数键名 + `value` TEXT DEFAULT NULL, -- 参数键值 + `default_value` TEXT NOT NULL, -- 默认值 + `sort` INTEGER NOT NULL DEFAULT 0, -- 排序 + `tip` TEXT DEFAULT NULL, -- 变量描述 + `is_default` INTEGER DEFAULT 0, -- 是否为系统默认 + `status` INTEGER DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_sys_cron` ( -- 系统_定时任务 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 任务ID + `group_id` INTEGER NOT NULL, -- 分组ID + `title` TEXT NOT NULL, -- 任务标题 + `name` TEXT DEFAULT NULL, -- 任务方法 + `params` TEXT DEFAULT NULL, -- 函数参数 + `pattern` TEXT NOT NULL, -- 表达式 + `policy` INTEGER NOT NULL DEFAULT 1, -- 策略 + `count` INTEGER NOT NULL DEFAULT 0, -- 执行次数 + `sort` INTEGER DEFAULT 0, -- 排序 + `remark` TEXT DEFAULT NULL, -- 备注 + `status` INTEGER DEFAULT 1, -- 任务状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_sys_cron_group` ( -- 系统_定时任务分组 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 任务分组ID + `pid` INTEGER NOT NULL, -- 父类任务分组ID + `name` TEXT DEFAULT '', -- 分组名称 + `is_default` INTEGER DEFAULT 0, -- 是否默认 + `sort` INTEGER DEFAULT 0, -- 排序 + `remark` TEXT DEFAULT NULL, -- 备注 + `status` INTEGER DEFAULT 1, -- 分组状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_sys_dict_data` ( -- 系统_字典数据 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 字典数据ID + `label` TEXT DEFAULT NULL, -- 字典标签 + `value` TEXT DEFAULT NULL, -- 字典键值 + `value_type` TEXT NOT NULL DEFAULT 'string', -- 键值数据类型:string,int,uint,bool,datetime,date + `type` TEXT DEFAULT NULL, -- 字典类型 + `list_class` TEXT DEFAULT NULL, -- 表格回显样式 + `is_default` INTEGER DEFAULT 2, -- 是否为系统默认 + `sort` INTEGER DEFAULT 0, -- 字典排序 + `remark` TEXT DEFAULT NULL, -- 备注 + `status` INTEGER DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_sys_dict_type` ( -- 系统_字典类型 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 字典类型ID + `pid` INTEGER NOT NULL, -- 父类字典类型ID + `name` TEXT DEFAULT '', -- 字典类型名称 + `type` TEXT DEFAULT '', -- 字典类型 + `sort` INTEGER DEFAULT 0, -- 排序 + `remark` TEXT DEFAULT NULL, -- 备注 + `status` INTEGER DEFAULT 1, -- 字典类型状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_sys_ems_log` ( -- 系统_邮件发送记录 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 主键 + `event` TEXT NOT NULL, -- 事件 + `email` TEXT NOT NULL, -- 邮箱地址,多个用;隔开 + `code` TEXT DEFAULT '', -- 验证码 + `times` INTEGER NOT NULL, -- 验证次数 + `content` TEXT DEFAULT NULL, -- 邮件内容 + `ip` TEXT DEFAULT NULL, -- ip地址 + `status` INTEGER DEFAULT 1, -- 状态(1未验证,2已验证) + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_sys_gen_codes` ( -- 系统_代码生成记录 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 生成ID + `gen_type` INTEGER UNSIGNED NOT NULL, -- 生成类型 + `gen_template` INTEGER DEFAULT 0, -- 生成模板 + `var_name` TEXT NOT NULL, -- 实体命名 + `options` TEXT DEFAULT NULL, -- 配置选项 + `db_name` TEXT DEFAULT NULL, -- 数据库名称 + `table_name` TEXT NOT NULL, -- 主表名称 + `table_comment` TEXT DEFAULT NULL, -- 主表注释 + `dao_name` TEXT DEFAULT NULL, -- 主表dao模型 + `master_columns` TEXT DEFAULT NULL, -- 主表字段 + `addon_name` TEXT DEFAULT NULL, -- 插件名称 + `status` INTEGER DEFAULT 1, -- 生成状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_sys_gen_curd_demo` ( -- 系统_生成curd演示 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- ID + `category_id` INTEGER DEFAULT 0, -- 分类ID + `title` TEXT NOT NULL, -- 标题 + `description` TEXT DEFAULT '', -- 描述 + `content` text DEFAULT NULL, -- 内容 + `image` TEXT DEFAULT NULL, -- 单图 + `attachfile` TEXT DEFAULT NULL, -- 附件 + `city_id` INTEGER DEFAULT 0, -- 所在城市 + `switch` INTEGER DEFAULT 1, -- 显示开关 + `sort` INTEGER DEFAULT NULL, -- 排序 + `status` INTEGER DEFAULT 1, -- 状态 + `created_by` INTEGER DEFAULT 0, -- 创建者 + `updated_by` INTEGER DEFAULT 0, -- 更新者 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL, -- 修改时间 + `deleted_at` datetime DEFAULT NULL -- 删除时间 +); +CREATE TABLE `hg_sys_gen_tree_demo` ( -- 系统_生成树演示 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- ID + `pid` INTEGER DEFAULT NULL, -- 上级ID + `level` INTEGER DEFAULT 1, -- 关系树级别 + `tree` TEXT DEFAULT NULL, -- 关系树 + `category_id` INTEGER DEFAULT 0, -- 分类ID + `title` TEXT NOT NULL, -- 标题 + `description` TEXT DEFAULT NULL, -- 描述 + `sort` INTEGER DEFAULT NULL, -- 排序 + `status` INTEGER DEFAULT 1, -- 状态 + `created_by` INTEGER DEFAULT 0, -- 创建者 + `updated_by` INTEGER DEFAULT 0, -- 更新者 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL, -- 修改时间 + `deleted_at` datetime DEFAULT NULL -- 删除时间 +); +CREATE TABLE `hg_sys_log` ( -- 系统_全局日志 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 日志ID + `req_id` TEXT DEFAULT NULL, -- 对外ID + `app_id` TEXT DEFAULT '', -- 应用ID + `merchant_id` INTEGER DEFAULT 0, -- 商户ID + `member_id` INTEGER DEFAULT 0, -- 用户ID + `method` TEXT DEFAULT NULL, -- 提交类型 + `module` TEXT DEFAULT NULL, -- 访问模块 + `url` TEXT DEFAULT NULL, -- 提交url + `get_data` TEXT, -- get数据 + `post_data` TEXT, -- post数据 + `header_data` TEXT, -- header数据 + `ip` TEXT DEFAULT NULL, -- IP地址 + `province_id` INTEGER NOT NULL DEFAULT 0, -- 省编码 + `city_id` INTEGER NOT NULL DEFAULT 0, -- 市编码 + `error_code` INTEGER DEFAULT 0, -- 报错code + `error_msg` TEXT DEFAULT NULL, -- 对外错误提示 + `error_data` TEXT, -- 报错日志 + `user_agent` TEXT DEFAULT NULL, -- UA信息 + `take_up_time` INTEGER DEFAULT 0, -- 请求耗时 + `timestamp` INTEGER DEFAULT 0, -- 响应时间 + `status` INTEGER NOT NULL DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 修改时间 +); +CREATE TABLE IF NOT EXISTS "hg_sys_login_log" ( -- 系统_登录日志 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 日志ID + `req_id` TEXT DEFAULT NULL, -- 请求ID + `member_id` INTEGER DEFAULT 0, -- 用户ID + `username` TEXT DEFAULT NULL, -- 用户名 + `response` TEXT, -- 响应数据 + `login_at` datetime DEFAULT NULL, -- 登录时间 + `login_ip` TEXT DEFAULT NULL, -- 登录IP + `province_id` INTEGER DEFAULT NULL, -- 省编码 + `city_id` INTEGER DEFAULT NULL, -- 市编码 + `user_agent` TEXT DEFAULT NULL, -- UA信息 + `err_msg` TEXT DEFAULT NULL, -- 错误提示 + `status` INTEGER NOT NULL DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 修改时间 +); +CREATE TABLE `hg_sys_serve_license` ( -- 系统_服务许可证 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 许可ID + `group` TEXT NOT NULL, -- 分组 + `name` TEXT NOT NULL, -- 许可名称 + `appid` TEXT NOT NULL, -- 应用ID + `secret_key` TEXT DEFAULT NULL, -- 应用秘钥 + `remote_addr` TEXT DEFAULT NULL, -- 最后连接地址 + `online_limit` INTEGER DEFAULT 1, -- 在线限制 + `login_times` INTEGER DEFAULT NULL, -- 登录次数 + `last_login_at` datetime DEFAULT NULL, -- 最后登录时间 + `last_active_at` datetime DEFAULT NULL, -- 最后心跳 + `routes` TEXT, -- 路由表,空使用默认分组路由 + `allowed_ips` TEXT DEFAULT NULL, -- IP白名单 + `end_at` datetime NOT NULL, -- 授权有效期 + `remark` TEXT DEFAULT NULL, -- 备注 + `status` INTEGER DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 修改时间 +); +CREATE TABLE `hg_sys_serve_log` ( -- 系统_服务日志 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 日志ID + `trace_id` TEXT DEFAULT NULL, -- 链路ID + `level_format` TEXT DEFAULT NULL, -- 日志级别 + `content` text DEFAULT NULL, -- 日志内容 + `stack` TEXT, -- 打印堆栈 + `line` TEXT NOT NULL, -- 调用行 + `trigger_ns` INTEGER DEFAULT NULL, -- 触发时间(ns) + `status` INTEGER NOT NULL DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 修改时间 +); +CREATE TABLE `hg_sys_sms_log` ( -- 系统_短信发送记录 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 主键 + `event` TEXT NOT NULL, -- 事件 + `mobile` TEXT NOT NULL DEFAULT '', -- 手机号 + `code` TEXT DEFAULT '', -- 验证码或短信内容 + `times` INTEGER NOT NULL, -- 验证次数 + `ip` TEXT DEFAULT NULL, -- ip地址 + `status` INTEGER DEFAULT 1, -- 状态(1未验证,2已验证) + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_test_category` ( -- 测试分类 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- 分类ID + `name` TEXT NOT NULL, -- 分类名称 + `short_name` TEXT DEFAULT NULL, -- 简称 + `description` TEXT DEFAULT NULL, -- 描述 + `sort` INTEGER NOT NULL, -- 排序 + `remark` TEXT DEFAULT NULL, -- 备注 + `status` INTEGER DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL, -- 修改时间 + `deleted_at` datetime DEFAULT NULL -- 删除时间 +); +CREATE TABLE `hg_sys_provinces` ( -- 系统_省市区编码 + `id` INTEGER NOT NULL PRIMARY KEY, -- 省市区ID + `title` TEXT NOT NULL DEFAULT '', -- 栏目名称 + `pinyin` TEXT DEFAULT '', -- 拼音 + `lng` TEXT DEFAULT '', -- 经度 + `lat` TEXT DEFAULT '', -- 纬度 + `pid` INTEGER NOT NULL DEFAULT 0, -- 父栏目 + `level` INTEGER NOT NULL DEFAULT 1, -- 关系树等级 + `tree` TEXT NOT NULL, -- 关系 + `sort` INTEGER DEFAULT 0, -- 排序 + `status` INTEGER NOT NULL DEFAULT 1, -- 状态 + `created_at` datetime DEFAULT NULL, -- 创建时间 + `updated_at` datetime DEFAULT NULL -- 更新时间 +); +CREATE TABLE `hg_gen_curd_test` ( -- 测试_代码生成 + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, -- ID + "name" VARCHAR(50), -- 姓名 + "email" VARCHAR(255), -- 邮箱 + "address" TEXT, -- 地址 + "salt" VARCHAR(50), -- 密码盐 + "password" VARCHAR(50), -- 密码 + "mark" VARCHAR(255), -- 备注 + "permission" TEXT, -- 权限 + "created_user_id" INTEGER, -- 创建人 + "created_at" DATETIME, -- 创建时间 + "updated_at" DATETIME, -- 更新时间 + "deleted_at" DATETIME -- 删除时间 +); + +CREATE INDEX `hg_addon_hgexample_tenant_order_order_sn` ON `hg_addon_hgexample_tenant_order` (`order_sn`); +CREATE INDEX `hg_addon_hgexample_tenant_order_member_id` ON `hg_addon_hgexample_tenant_order` (`user_id`); +CREATE INDEX `hg_addon_hgexample_tenant_order_merchant_id` ON `hg_addon_hgexample_tenant_order` (`merchant_id`); +CREATE INDEX `hg_addon_hgexample_tenant_order_agent_id` ON `hg_addon_hgexample_tenant_order` (`tenant_id`); +CREATE INDEX `hg_admin_cash_admin_id` ON `hg_admin_cash` (`member_id`); +CREATE INDEX `hg_admin_credits_log_member_id` ON `hg_admin_credits_log` (`member_id`); +CREATE INDEX `hg_admin_dept_pid` ON `hg_admin_dept` (`pid`); +CREATE UNIQUE INDEX `hg_admin_member_invite_code` ON `hg_admin_member` (`invite_code`); +CREATE INDEX `hg_admin_member_dept_id` ON `hg_admin_member` (`dept_id`); +CREATE INDEX `hg_admin_member_pid` ON `hg_admin_member` (`pid`); +CREATE UNIQUE INDEX `hg_admin_menu_name` ON `hg_admin_menu` (`name`); +CREATE INDEX `hg_admin_menu_pid` ON `hg_admin_menu` (`pid`); +CREATE INDEX `hg_admin_menu_status` ON `hg_admin_menu` (`status`); +CREATE INDEX `hg_admin_menu_type` ON `hg_admin_menu` (`type`); +CREATE INDEX `hg_admin_oauth_oauth_client` ON `hg_admin_oauth` (`oauth_client`); +CREATE INDEX `hg_admin_oauth_member_id` ON `hg_admin_oauth` (`member_id`); +CREATE INDEX `hg_admin_order_order_sn` ON `hg_admin_order` (`order_sn`); +CREATE INDEX `hg_admin_order_member_id` ON `hg_admin_order` (`member_id`); +CREATE UNIQUE INDEX `hg_pay_log_order_sn` ON `hg_pay_log` (`order_sn`); +CREATE INDEX `hg_pay_log_member_id` ON `hg_pay_log` (`member_id`); +CREATE INDEX `hg_pay_refund_order_sn` ON `hg_pay_refund` (`order_sn`); +CREATE UNIQUE INDEX `hg_sys_addons_config_addon_name_2` ON `hg_sys_addons_config` (`addon_name`); +CREATE INDEX `hg_addons_config_addon_name` ON `hg_sys_addons_config` (`addon_name`); +CREATE UNIQUE INDEX `hg_sys_addons_install_name` ON `hg_sys_addons_install` (`name`); +CREATE INDEX `hg_sys_attachment_md5` ON `hg_sys_attachment` (`md5`); +CREATE UNIQUE INDEX `hg_sys_blacklist_name` ON `hg_sys_blacklist` (`ip`); +CREATE INDEX `hg_sys_config_group` ON `hg_sys_config` (`group`); +CREATE INDEX `hg_sys_config_key` ON `hg_sys_config` (`key`); +CREATE INDEX `hg_sys_dict_data_dict_data_idx` ON `hg_sys_dict_data` (`type`); +CREATE UNIQUE INDEX `hg_sys_dict_type_dict_type` ON `hg_sys_dict_type` (`type`); +CREATE INDEX `hg_sys_ems_log_email` ON `hg_sys_ems_log` (`email`); +CREATE INDEX `hg_sys_log_error_code` ON `hg_sys_log` (`error_code`); +CREATE INDEX `hg_sys_log_req_id` ON `hg_sys_log` (`req_id`); +CREATE INDEX `hg_sys_log_member_id` ON `hg_sys_log` (`member_id`); +CREATE INDEX `hg_sys_login_log_member_id` ON `hg_sys_login_log` (`member_id`); +CREATE INDEX `hg_sys_login_log_req_id` ON `hg_sys_login_log` (`req_id`); +CREATE INDEX `hg_sys_provinces_pid` ON `hg_sys_provinces` (`pid`); +CREATE UNIQUE INDEX `hg_sys_serve_license_appid` ON `hg_sys_serve_license` (`appid`); +CREATE INDEX `hg_sys_serve_log_member_id` ON `hg_sys_serve_log` (`level_format`); +CREATE INDEX `hg_sys_serve_log_traceid` ON `hg_sys_serve_log` (`trace_id`); +CREATE INDEX `hg_sys_sms_log_mobile` ON `hg_sys_sms_log` (`mobile`); \ No newline at end of file diff --git a/server/utility/.gitkeep b/server/utility/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/server/utility/charset/charset.go b/server/utility/charset/charset.go new file mode 100644 index 0000000..a9c5613 --- /dev/null +++ b/server/utility/charset/charset.go @@ -0,0 +1,74 @@ +// Package charset +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package charset + +import ( + "bytes" + "crypto/rand" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gutil" + r "math/rand" + "strings" + "time" +) + +// RandomCreateBytes 生成随机字串符 +func RandomCreateBytes(n int, alphabets ...byte) []byte { + if len(alphabets) == 0 { + alphabets = []byte(`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`) + } + var bytes = make([]byte, n) + var randBy bool + if num, err := rand.Read(bytes); num != n || err != nil { + randBy = true + } + for i, b := range bytes { + if randBy { + bytes[i] = alphabets[r.New(r.NewSource(time.Now().UnixNano())).Intn(len(alphabets))] + } else { + bytes[i] = alphabets[b%byte(len(alphabets))] + } + } + return bytes +} + +// ParseErrStack 解析错误的堆栈信息 +func ParseErrStack(err error) []string { + return ParseStack(gerror.Stack(err)) +} + +// ParseStack 解析堆栈信息 +func ParseStack(st string) []string { + stack := gstr.Split(st, "\n") + for i := 0; i < len(stack); i++ { + stack[i] = gstr.Replace(stack[i], "\t", "--> ") + } + return stack +} + +// SerializeStack 解析错误并序列化堆栈信息 +func SerializeStack(err error) string { + buffer := bytes.NewBuffer(nil) + gutil.DumpTo(buffer, ParseErrStack(err), gutil.DumpOption{ + WithType: false, + ExportedOnly: false, + }) + return buffer.String() +} + +// SubstrAfter 截取指定字符后的内容 +func SubstrAfter(str string, symbol string) string { + comma := strings.Index(str, symbol) + if comma < 0 { // -1 不存在 + return "" + } + pos := strings.Index(str[comma:], symbol) + if comma+pos+1 > len(str) { + return "" + } + return str[comma+pos+1:] +} diff --git a/server/utility/convert/convert.go b/server/utility/convert/convert.go new file mode 100644 index 0000000..dd9ae92 --- /dev/null +++ b/server/utility/convert/convert.go @@ -0,0 +1,166 @@ +// Package convert +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package convert + +import ( + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/text/gstr" + "hotgo/utility/validate" + "reflect" + "unicode" + "unsafe" +) + +var ( + descTags = []string{"description", "dc", "json"} // 实体描述标签 + fieldTags = []string{"json"} // 实体字段名称映射 +) + +// GetModelTable 获取模型中的表定义 +func GetModelTable(m *gdb.Model) (tablesInit, tables string) { + if m == nil { + return "", "" + } + + v := reflect.ValueOf(m).Elem() + t := reflect.TypeOf(m).Elem() + + for i := 0; i < t.NumField(); i++ { + field := t.Field(i) + val := v.Field(i) + + if field.Name == "tablesInit" { + tablesInit = reflect.NewAt(val.Type(), unsafe.Pointer(val.UnsafeAddr())).Elem().String() + tablesInit = gstr.Replace(tablesInit, "`", "") + continue + } + + if field.Name == "tables" { + tables = reflect.NewAt(val.Type(), unsafe.Pointer(val.UnsafeAddr())).Elem().String() + continue + } + } + return +} + +// EscapeFieldsToSlice 将转义过的字段转换为字段集切片 +func EscapeFieldsToSlice(s string) []string { + return gstr.Explode(",", gstr.Replace(gstr.Replace(s, "`,`", ","), "`", "")) +} + +// GetMapKeys 获取map的所有key +func GetMapKeys[K comparable](m map[K]any) []K { + j := 0 + keys := make([]K, len(m)) + for k := range m { + keys[j] = k + j++ + } + return keys +} + +// CamelCaseToUnderline 驼峰单词转下划线单词 +func CamelCaseToUnderline(s string) string { + var output []rune + for i, r := range s { + if i == 0 { + output = append(output, unicode.ToLower(r)) + } else { + if unicode.IsUpper(r) { + output = append(output, '_') + } + + output = append(output, unicode.ToLower(r)) + } + } + return string(output) +} + +// GetEntityFieldTags 获取实体中的字段名称 +func GetEntityFieldTags(entity interface{}) (tags []string, err error) { + var formRef = reflect.TypeOf(entity) + for i := 0; i < formRef.NumField(); i++ { + field := formRef.Field(i) + if field.Type.Kind() == reflect.Struct { + addTags, err := reflectTag(field.Type, fieldTags, []string{}) + if err != nil { + return nil, err + } + tags = append(tags, addTags...) + continue + } + tags = append(tags, reflectTagName(field, fieldTags, true)) + } + return +} + +// GetEntityDescTags 获取实体中的描述标签 +func GetEntityDescTags(entity interface{}) (tags []string, err error) { + var formRef = reflect.TypeOf(entity) + for i := 0; i < formRef.NumField(); i++ { + field := formRef.Field(i) + if field.Type.Kind() == reflect.Struct { + addTags, err := reflectTag(field.Type, descTags, []string{}) + if err != nil { + return nil, err + } + tags = append(tags, addTags...) + continue + } + tags = append(tags, reflectTagName(field, descTags, true)) + } + return +} + +// reflectTag 层级递增解析tag +func reflectTag(reflectType reflect.Type, filterTags []string, tags []string) ([]string, error) { + if reflectType.Kind() == reflect.Ptr { + return nil, gerror.Newf("reflect type do not support reflect.Ptr yet, reflectType:%+v", reflectType) + } + if reflectType.Kind() != reflect.Struct { + return nil, nil + } + for i := 0; i < reflectType.NumField(); i++ { + tag := reflectTagName(reflectType.Field(i), filterTags, false) + if tag == "" { + addTags, err := reflectTag(reflectType.Field(i).Type, filterTags, tags) + if err != nil { + return nil, err + } + tags = append(tags, addTags...) + continue + } + tags = append(tags, tag) + } + return tags, nil +} + +// reflectTagName 解析实体中的描述标签,优先级:description > dc > json > Name +func reflectTagName(field reflect.StructField, filterTags []string, isDef bool) string { + if validate.InSlice(filterTags, "description") { + if description, ok := field.Tag.Lookup("description"); ok && description != "" { + return description + } + } + + if validate.InSlice(filterTags, "dc") { + if dc, ok := field.Tag.Lookup("dc"); ok && dc != "" { + return dc + } + } + + if validate.InSlice(filterTags, "json") { + if jsonName, ok := field.Tag.Lookup("json"); ok && jsonName != "" { + return jsonName + } + } + + if !isDef { + return "" + } + return field.Name +} diff --git a/server/utility/convert/match.go b/server/utility/convert/match.go new file mode 100644 index 0000000..edb4bf0 --- /dev/null +++ b/server/utility/convert/match.go @@ -0,0 +1,115 @@ +// Package convert +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package convert + +import ( + "github.com/gogf/gf/v2/text/gstr" + "github.com/gogf/gf/v2/util/gconv" + "hotgo/utility/validate" +) + +// IpFilterStrategy ip过滤策略 +func IpFilterStrategy(originIp string) (list map[string]struct{}) { + list = make(map[string]struct{}) + + // 所有IP + if originIp == "*" { + list["*"] = struct{}{} + return + } + + // 多个IP + if gstr.Contains(originIp, ",") { + ips := gstr.Explode(",", originIp) + if len(ips) > 0 { + for _, ip := range ips { + if !validate.IsIp(ip) { + continue + } + list[ip] = struct{}{} + } + } + return + } + + // IP段 + if gstr.Contains(originIp, "/24") { + segment := gstr.Replace(originIp, "/24", "") + if !validate.IsIp(segment) { + return + } + + var ( + start = gstr.Explode(".", segment) + prefix = gstr.Implode(".", start[:len(start)-1]) + "." + index = gconv.Int(start[len(start)-1]) + ) + + if index < 1 { + index = 1 + } + + for i := index; i <= 254; i++ { + list[prefix+gconv.String(i)] = struct{}{} + } + return + } + + // IP范围 + if gstr.Contains(originIp, "-") { + originIps := gstr.Explode("-", originIp) + if len(originIps) != 2 { + return + } + + if !validate.IsIp(originIps[0]) || !validate.IsIp(originIps[1]) { + return + } + + var ( + start = gstr.Explode(".", originIps[0]) + prefix = gstr.Implode(".", start[:len(start)-1]) + "." + startIndex = gconv.Int(gstr.SubStrFromREx(originIps[0], ".")) + endIndex = gconv.Int(gstr.SubStrFromREx(originIps[1], ".")) + ) + + if startIndex >= endIndex { + list[originIps[0]] = struct{}{} + return + } + + if startIndex < 1 { + startIndex = 1 + } + + if endIndex > 254 { + endIndex = 254 + } + + for i := startIndex; i <= endIndex; i++ { + list[prefix+gconv.String(i)] = struct{}{} + } + return + } + + // 指定IP + if validate.IsIp(originIp) { + list[originIp] = struct{}{} + return + } + return list +} + +// MatchIpStrategy 匹配IP策略,输入ip如果在策略当中返回true +func MatchIpStrategy(rules, ip string) bool { + allowedIps := IpFilterStrategy(rules) + if _, ok := allowedIps["*"]; ok { + return true + } + + _, ok := allowedIps[ip] + return ok +} diff --git a/server/utility/convert/slice.go b/server/utility/convert/slice.go new file mode 100644 index 0000000..681c1da --- /dev/null +++ b/server/utility/convert/slice.go @@ -0,0 +1,59 @@ +// Package convert +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package convert + +// UniqueSlice 切片去重 +func UniqueSlice[K comparable](languages []K) []K { + result := make([]K, 0, len(languages)) + temp := map[K]struct{}{} + for _, item := range languages { + if _, ok := temp[item]; !ok { + temp[item] = struct{}{} + result = append(result, item) + } + } + return result +} + +func Remove(sl []interface{}, f func(v1 interface{}) bool) []interface{} { + for k, v := range sl { + if f(v) { + sl[k] = sl[len(sl)-1] + sl = sl[:len(sl)-1] + return sl + } + } + return sl +} + +func RemoveSlice[K comparable](src []K, sub K) []K { + for k, v := range src { + if v == sub { + copy(src[k:], src[k+1:]) + return src[:len(src)-1] + } + } + return src +} + +// DifferenceSlice 比较两个切片,返回他们的差集 +// slice1 := []int{1, 2, 3, 4, 5} +// slice2 := []int{4, 5, 6, 7, 8} +// fmt.Println(Difference(slice1, slice2)) // Output: [1 2 3] +func DifferenceSlice[T comparable](s1, s2 []T) []T { + m := make(map[T]bool) + for _, item := range s1 { + m[item] = true + } + + var diff []T + for _, item := range s2 { + if _, ok := m[item]; !ok { + diff = append(diff, item) + } + } + return diff +} diff --git a/server/utility/db/README.md b/server/utility/db/README.md new file mode 100644 index 0000000..0c10084 --- /dev/null +++ b/server/utility/db/README.md @@ -0,0 +1,11 @@ +# 数据库补丁支持 + +> 将用于抹平不同数据库的差异性,以支撑基于数据库的部分特性。 + +## 特性 + +- 增加对数据库表字段注释的支持,特别是 sqlite 的注释支持。 +- 增加对数据库表名注释的支持,特别是 sqlite 的注释支持。 + +> 注意以上支持中,由于 sqlite 的特殊性,对 sqlite 表创建的 sql 语句有所要求,具体示例请参考 [sqlite_example.sql](./sqlite_example.sql) + diff --git a/server/utility/db/db.go b/server/utility/db/db.go new file mode 100644 index 0000000..32a48c1 --- /dev/null +++ b/server/utility/db/db.go @@ -0,0 +1,54 @@ +package db + +import ( + "context" + "fmt" + + "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/frame/g" +) + +// 获取数据库表字段及注释 +// usage: +// +// fields, err := db.GetFieldsWithComment(ctx, in.Table, in.Name) +// if err != nil { +// return +// } +// for _, v := range fields {} +func GetFieldsWithComment(ctx context.Context, tableName, dbTag string) (fields map[string]*gdb.TableField, err error) { + db := g.DB(dbTag) + fields, err = db.TableFields(ctx, tableName) // 使用 goframe 框架本身已完美支持 mysql 获取表字段及注释 + dbConf := db.GetConfig() + switch dbConf.Type { + case "sqlite": + fields, err = fixSqliteFieldsComment(ctx, tableName, db, fields) + } + return +} + +type TableComment struct { + Name string `json:"name"` + Comment string `json:"comment"` +} + +// 获取数据库表字段及注释 +func GetTablesWithComment(ctx context.Context, dbTag string) (tables []*TableComment, err error) { + db := g.DB(dbTag) + dbConf := db.GetConfig() + switch dbConf.Type { + case "mysql": + sql := "SELECT TABLE_NAME as name, TABLE_COMMENT as comment FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = '%s'" + if err = db.Ctx(ctx).Raw(fmt.Sprintf(sql, dbConf.Name)).Scan(&tables); err != nil { + return + } + case "sqlite": + var tableNames []string + tableNames, err = db.Tables(ctx) + if err != nil { + return + } + tables, err = transSqliteTablesComment(ctx, tableNames, db) + } + return +} diff --git a/server/utility/db/sqlite_example.sql b/server/utility/db/sqlite_example.sql new file mode 100644 index 0000000..51b20f5 --- /dev/null +++ b/server/utility/db/sqlite_example.sql @@ -0,0 +1,45 @@ +CREATE TABLE IF NOT EXISTS `user1` ( -- 用户管理 + `id` INTEGER, -- 编号 + `name` VARCHAR(50), -- 名称 + `email` VARCHAR(255), -- 邮箱 + `address` TEXT, -- 地址 + `salt` VARCHAR(50), -- 盐 + `password` VARCHAR(50), -- 密码 + `mark` VARCHAR(255), -- 备注 + `permission` TEXT, -- 权限 + `created_user_id` INTEGER, -- 创建者编号 + `created_at` DATETIME, -- 创建时间 + `updated_at` DATETIME, -- 更新时间 + `deleted_at` DATETIME, -- 删除时间 + PRIMARY KEY(`id`) +); +CREATE TABLE "user2" ( -- 用户管理 + "id" INTEGER, -- 编号 + "name" VARCHAR(50), -- 名称 + "email" VARCHAR(255), -- 邮箱 + "address" TEXT, -- 地址 + "salt" VARCHAR(50), -- 盐 + "password" VARCHAR(50), -- 密码 + "mark" VARCHAR(255), -- 备注 + "permission" TEXT, -- 权限 + "created_user_id" INTEGER, -- 创建者编号 + "created_at" DATETIME, -- 创建时间 + "updated_at" DATETIME, -- 更新时间 + "deleted_at" DATETIME, -- 删除时间 + PRIMARY KEY("id") +); +CREATE TABLE IF NOT EXISTS user3 ( -- 用户管理 + id INTEGER, -- 编号 + name VARCHAR(50), -- 名称 + email VARCHAR(255), -- 邮箱 + address TEXT, -- 地址 + salt VARCHAR(50), -- 盐 + password VARCHAR(50), -- 密码 + mark VARCHAR(255), -- 备注 + permission TEXT, -- 权限 + created_user_id INTEGER, -- 创建者编号 + created_at DATETIME, -- 创建时间 + updated_at DATETIME, -- 更新时间 + deleted_at DATETIME, -- 删除时间 + PRIMARY KEY(id) +); \ No newline at end of file diff --git a/server/utility/db/sqlite_fields.go b/server/utility/db/sqlite_fields.go new file mode 100644 index 0000000..78081d3 --- /dev/null +++ b/server/utility/db/sqlite_fields.go @@ -0,0 +1,105 @@ +package db + +import ( + "context" + "fmt" + "strings" + + "github.com/gogf/gf/v2/container/gmap" + "github.com/gogf/gf/v2/database/gdb" +) + +// func getSQLiteSchemaByCli(tableName string, db gdb.DB) (string, error) { +// dbConf := db.GetConfig() +// cmd := exec.Command("sqlite3", dbConf.Name, fmt.Sprintf(".schema %s", tableName)) +// glog.Info(context.TODO(), "sqlite3", dbConf.Name, fmt.Sprintf("'.schema %s'", tableName)) +// output, err := cmd.CombinedOutput() +// if err != nil { +// return "", err +// } +// return strings.TrimSpace(string(output)), nil +// } + +func getSQLiteSchemaBySql(ctx context.Context, tableName string, db gdb.DB) (string, error) { + schemaRes, err := db.GetValue(ctx, fmt.Sprintf(`SELECT sql FROM sqlite_master WHERE type='table' AND name='%s';`, tableName)) + if err != nil { + return "", err + } + return schemaRes.String(), nil +} + +func getSQliteTableComments(createTableSql string) (tableComment, tableName string) { + // 按照换行符分割文本 + lines := strings.Split(createTableSql, "\n") + + // 循环输出每一行 + for _, line := range lines { + // 检查 createTableSql 是否包含 comment + if strings.Contains(line, "--") { + if strings.Contains(line, "CREATE TABLE") { + tableName = getLastWord(strings.Split(line, "(")[0]) + tableComment = strings.Split(line, "--")[1] + } + } + } + return +} + +func getSQliteFieldsComments(createTableSql string) (fieldCommentMap gmap.Map, tableComment, tableName string) { + // 按照换行符分割文本 + lines := strings.Split(createTableSql, "\n") + + // 循环输出每一行 + for _, line := range lines { + // 检查 createTableSql 是否包含 comment + if strings.Contains(line, "--") { + if strings.Contains(line, "CREATE TABLE") { + tableName = getLastWord(strings.Split(line, "(")[0]) + tableComment = strings.Split(line, "--")[1] + } else { + firstWord := getFirstWord(line) + lastWord := getLastWord(line) + fieldCommentMap.Set(firstWord, lastWord) + } + } + } + return +} + +func transSqliteTablesComment(ctx context.Context, tableNames []string, db gdb.DB) (tables []*TableComment, err error) { + schemaStr := "" + eleIgnore := "sqlite_sequence" + for _, v := range tableNames { + if v != eleIgnore { + schemaStr, err = getSQLiteSchemaBySql(ctx, v, db) + if err != nil { + return + } + comment, _ := getSQliteTableComments(schemaStr) + tables = append(tables, &TableComment{ + Name: v, + Comment: comment, + }) + } + } + return +} + +func fixSqliteFieldsComment(ctx context.Context, tableName string, db gdb.DB, fields map[string]*gdb.TableField) (map[string]*gdb.TableField, error) { + // 记录: db.DoSelect 无法执行 .开头的命令 + // schemaRes, err := db.DoSelect(ctx, dbConf.Link, fmt.Sprintf(`.schema %s`, d.QuoteWord(table))) + // 记录: 查询 sqlite_master 不响应任何结果 + // s, err := db.Query(ctx, `select * from sqlite_master WHERE name="%s";`, tableName) + // schemaStr, err := getSQLiteSchemaBySql(tableName, db) + schemaStr, err := getSQLiteSchemaBySql(ctx, tableName, db) + if err != nil { + return fields, err + } + comments, _, _ := getSQliteFieldsComments(schemaStr) + for i := range fields { + if comments.Contains(i) { + fields[i].Comment = comments.Get(i).(string) + } + } + return fields, nil +} diff --git a/server/utility/db/utils.go b/server/utility/db/utils.go new file mode 100644 index 0000000..d298873 --- /dev/null +++ b/server/utility/db/utils.go @@ -0,0 +1,74 @@ +package db + +import ( + "hotgo/internal/consts" + "strings" + "unicode" + + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/text/gstr" +) + +// 判断字符是否为字母、数字或下划线 +func isWordChar(r rune) bool { + return unicode.IsLetter(r) || unicode.IsDigit(r) || r == '_' +} + +// 获取一行文本中的第一个完整单词 +func getFirstWord(text string) string { + fields := strings.FieldsFunc(text, func(r rune) bool { return !isWordChar(r) }) + if len(fields) > 0 { + return fields[0] + } + return "" +} + +// 获取一行文本中的最后一个完整单词 +func getLastWord(text string) string { + fields := strings.FieldsFunc(text, func(r rune) bool { return !isWordChar(r) }) + if len(fields) > 0 { + return fields[len(fields)-1] + } + return "" +} + +// GetQuoteChar 获取数据库对应的引号字符 +// MySQL使用反引号 `,PostgreSQL使用双引号 " +func GetQuoteChar() string { + db := g.DB() + if db == nil { + return "`" // 默认MySQL + } + dbType := db.GetConfig().Type + if dbType == consts.DBPgsql { + return "\"" + } + return "`" +} + +// QuoteIdentifier 引用标识符(表名、字段名) +// 自动去除已有的引号,避免重复引用 +func QuoteIdentifier(identifier string) string { + identifier = gstr.Trim(identifier, "`\"") + q := GetQuoteChar() + return q + identifier + q +} + +// QuoteField 引用完整字段(表名.字段名) +// 自动去除表名和字段名中可能已有的引号 +func QuoteField(table, field string) string { + table = gstr.Trim(table, "`\"") + field = gstr.Trim(field, "`\"") + q := GetQuoteChar() + return q + table + q + "." + q + field + q +} + +// QuoteFieldAs 引用字段并添加别名(表名.字段名 as 别名) +// 自动去除表名、字段名、别名中可能已有的引号 +func QuoteFieldAs(table, field, alias string) string { + table = gstr.Trim(table, "`\"") + field = gstr.Trim(field, "`\"") + alias = gstr.Trim(alias, "`\"") + q := GetQuoteChar() + return q + table + q + "." + q + field + q + " as " + q + alias + q +} diff --git a/server/utility/encrypt/aes.go b/server/utility/encrypt/aes.go new file mode 100644 index 0000000..a38f4c8 --- /dev/null +++ b/server/utility/encrypt/aes.go @@ -0,0 +1,41 @@ +// Package encrypt +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package encrypt + +import ( + "encoding/base64" + "github.com/forgoer/openssl" +) + +// AesECBEncrypt 加密 +func AesECBEncrypt(src, key []byte) (dst []byte, err error) { + return openssl.AesECBEncrypt(src, key, openssl.PKCS7_PADDING) +} + +// AesECBDecrypt 解密 +func AesECBDecrypt(src, key []byte) (dst []byte, err error) { + return openssl.AesECBDecrypt(src, key, openssl.PKCS7_PADDING) +} + +// MustAesECBEncryptToString +// Return the encryption result directly. Panic error +func MustAesECBEncryptToString(bytCipher, key string) string { + dst, err := AesECBEncrypt([]byte(bytCipher), []byte(key)) + if err != nil { + panic(err) + } + return base64.StdEncoding.EncodeToString(dst) +} + +// MustAesECBDecryptToString +// Directly return decryption result, panic error +func MustAesECBDecryptToString(bytCipher, key string) string { + dst, err := AesECBDecrypt([]byte(bytCipher), []byte(key)) + if err != nil { + panic(err) + } + return string(dst) +} diff --git a/server/utility/encrypt/encrypt.go b/server/utility/encrypt/encrypt.go new file mode 100644 index 0000000..01667f5 --- /dev/null +++ b/server/utility/encrypt/encrypt.go @@ -0,0 +1,28 @@ +// Package encrypt +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package encrypt + +import ( + "crypto/md5" + "fmt" + "hash/fnv" +) + +// Md5ToString 生成md5 +func Md5ToString(str string) string { + return fmt.Sprintf("%x", md5.Sum([]byte(str))) +} + +// Md5 生成md5 +func Md5(b []byte) string { + return fmt.Sprintf("%x", md5.Sum(b)) +} + +func Hash32(b []byte) uint32 { + h := fnv.New32a() + h.Write(b) + return h.Sum32() +} diff --git a/server/utility/excel/excel.go b/server/utility/excel/excel.go new file mode 100644 index 0000000..e9d0cab --- /dev/null +++ b/server/utility/excel/excel.go @@ -0,0 +1,150 @@ +// Package excel +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package excel + +import ( + "context" + "fmt" + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/net/ghttp" + "github.com/gogf/gf/v2/os/gctx" + "github.com/gogf/gf/v2/util/gconv" + "github.com/xuri/excelize/v2" + "hotgo/internal/library/contexts" + "hotgo/internal/model" + "net/url" + "reflect" + "time" + "unicode" +) + +var ( + // 单元格表头 + char = []string{"", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"} + // 默认行样式 + defaultRowStyle = &excelize.Style{ + Font: &excelize.Font{ + Color: "#666666", + Size: 13, + Family: "Arial", + }, + Alignment: &excelize.Alignment{ + Horizontal: "center", + Vertical: "center", + }, + } +) + +// ExportByStructs 导出切片结构体到excel表格 +func ExportByStructs(ctx context.Context, tags []string, list interface{}, fileName string, sheetName string) (err error) { + f := excelize.NewFile() + f.SetSheetName("Sheet1", sheetName) + _ = f.SetRowHeight("Sheet1", 1, 30) + + rowStyleID, _ := f.NewStyle(defaultRowStyle) + if err != nil { + return + } + _ = f.SetSheetRow(sheetName, "A1", &tags) + + var ( + length = len(tags) + headStyle = letter(length) + lastRow string + widthRow string + ) + + for k, v := range headStyle { + if k == length-1 { + lastRow = fmt.Sprintf("%s1", v) + widthRow = v + } + } + + if err = f.SetColWidth(sheetName, "A", widthRow, 30); err != nil { + return err + } + + var rowNum = 1 + for _, v := range gconv.Interfaces(list) { + t := reflect.TypeOf(v) + value := reflect.ValueOf(v) + row := make([]interface{}, 0) + for l := 0; l < t.NumField(); l++ { + val := value.Field(l).Interface() + row = append(row, val) + } + rowNum++ + if err = f.SetSheetRow(sheetName, "A"+gconv.String(rowNum), &row); err != nil { + return + } + if err = f.SetCellStyle(sheetName, fmt.Sprintf("A%d", rowNum), lastRow, rowStyleID); err != nil { + return + } + } + + r := ghttp.RequestFromCtx(ctx) + if r == nil { + err = gerror.New("ctx not http request") + return + } + + writer := r.Response.Writer + writer.Header().Set("Content-Type", "application/octet-stream") + writer.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s.xlsx", url.QueryEscape(fileName))) + writer.Header().Set("Content-Transfer-Encoding", "binary") + writer.Header().Set("Access-Control-Expose-Headers", "Content-Disposition") + + if err = f.Write(writer); err != nil { + return + } + + // 加入到上下文 + contexts.SetResponse(ctx, &model.Response{ + Code: gcode.CodeOK.Code(), + Message: "export successfully!", + Timestamp: time.Now().Unix(), + TraceID: gctx.CtxId(ctx), + }) + return +} + +// letter 生成完整的表头 +func letter(length int) []string { + var str []string + for i := 1; i <= length; i++ { + str = append(str, numToChars(i)) + } + return str +} + +// numToChars 将数字转换为具体的表格表头名称 +func numToChars(num int) string { + var cols string + v := num + for v > 0 { + k := v % 26 + if k == 0 { + k = 26 + } + v = (v - k) / 26 + cols = char[k] + cols + } + return cols +} + +// NextLetter 传入一个字母,获取下一个字母 +func NextLetter(input string) string { + if len(input) == 0 { + return "" + } + upperInput := unicode.ToUpper(rune(input[0])) + if upperInput >= 'A' && upperInput < 'Z' { + return string(upperInput + 1) + } + return "A" +} diff --git a/server/utility/file/file.go b/server/utility/file/file.go new file mode 100644 index 0000000..ca70108 --- /dev/null +++ b/server/utility/file/file.go @@ -0,0 +1,103 @@ +// Package file +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package file + +import ( + "bytes" + "hotgo/utility/format" + "io" + "mime/multipart" + "os" + "path/filepath" + + "github.com/gogf/gf/v2/os/gfile" +) + +// 文件信息 +type fileInfo struct { + name string + size int64 +} + +// WalkDir 递归获取目录下文件的名称和大小 +func WalkDir(dirname string) (error, []fileInfo) { + op, err := filepath.Abs(dirname) // 获取目录的绝对路径 + if nil != err { + return err, nil + } + files, err := os.ReadDir(op) // 获取目录下所有文件的信息,包括文件和文件夹 + if nil != err { + return err, nil + } + + var fileInfos []fileInfo // 返回值,存储读取的文件信息 + for _, f := range files { + if f.IsDir() { // 如果是目录,那么就递归调用 + err, fs := WalkDir(op + `/` + f.Name()) // 路径分隔符,linux 和 windows 不同 + if nil != err { + return err, nil + } + fileInfos = append(fileInfos, fs...) // 将 slice 添加到 slice + } else { + info, err := f.Info() + if nil != err { + return err, nil + } + fi := fileInfo{op + `/` + f.Name(), info.Size()} + fileInfos = append(fileInfos, fi) // slice 中添加成员 + } + } + return nil, fileInfos +} + +// DirSize 获取目录下所有文件大小 +func DirSize(dirname string) string { + var ( + ss int64 + _, files = WalkDir(dirname) + ) + for _, n := range files { + ss += n.size + } + return format.FileSize(ss) +} + +func MergeAbs(path string, fileName ...string) string { + var paths = []string{gfile.RealPath(path)} + paths = append(paths, fileName...) + return gfile.Join(paths...) +} + +// NewMultipartFileHeader 创建一个MultipartFileHeader +func NewMultipartFileHeader(filename string, b []byte) (*multipart.FileHeader, error) { + body := &bytes.Buffer{} + writer := multipart.NewWriter(body) + + part, err := writer.CreateFormFile("file", filename) + if err != nil { + return nil, err + } + + if _, err = io.Copy(part, bytes.NewReader(b)); err != nil { + return nil, err + } + + if err = writer.Close(); err != nil { + return nil, err + } + + reader := multipart.NewReader(body, writer.Boundary()) + form, err := reader.ReadForm(int64(len(b)) + 1024) + if err != nil { + return nil, err + } + defer form.RemoveAll() + + if files, ok := form.File["file"]; ok && len(files) > 0 { + return files[0], nil + } + return nil, io.ErrUnexpectedEOF +} diff --git a/server/utility/format/format.go b/server/utility/format/format.go new file mode 100644 index 0000000..85e8139 --- /dev/null +++ b/server/utility/format/format.go @@ -0,0 +1,73 @@ +// Package format +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package format + +import ( + "fmt" + "github.com/gogf/gf/v2/os/gtime" + "github.com/gogf/gf/v2/util/gconv" + "strconv" +) + +// Round2String 四舍五入保留小数,默认2位 +func Round2String(value float64, args ...interface{}) string { + var places = 2 + if len(args) > 0 { + places = gconv.Int(args[0]) + } + return fmt.Sprintf("%0."+strconv.Itoa(places)+"f", value) +} + +// Round2Float64 四舍五入保留小数,默认2位 +func Round2Float64(value float64, args ...interface{}) float64 { + return gconv.Float64(Round2String(value, args...)) +} + +// FileSize 字节的单位转换 保留两位小数 +func FileSize(data int64) string { + var factor float64 = 1024 + res := float64(data) + for _, unit := range []string{"", "K", "M", "G", "T", "P"} { + if res < factor { + return fmt.Sprintf("%.2f%sB", res, unit) + } + res /= factor + } + return fmt.Sprintf("%.2f%sB", res, "P") +} + +// AgoTime 多久以前 +func AgoTime(gt *gtime.Time) string { + if gt == nil { + return "" + } + n := gtime.Now().Timestamp() + t := gt.Timestamp() + + var ys int64 = 31536000 + var ds int64 = 86400 + var hs int64 = 3600 + var ms int64 = 60 + var ss int64 = 1 + var rs string + + d := n - t + switch { + case d > ys: + rs = fmt.Sprintf("%d年前", int(d/ys)) + case d > ds: + rs = fmt.Sprintf("%d天前", int(d/ds)) + case d > hs: + rs = fmt.Sprintf("%d小时前", int(d/hs)) + case d > ms: + rs = fmt.Sprintf("%d分钟前", int(d/ms)) + case d > ss: + rs = fmt.Sprintf("%d秒前", int(d/ss)) + default: + rs = "刚刚" + } + return rs +} diff --git a/server/utility/simple/event.go b/server/utility/simple/event.go new file mode 100644 index 0000000..39d04ab --- /dev/null +++ b/server/utility/simple/event.go @@ -0,0 +1,56 @@ +// Package simple +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package simple + +import ( + "context" + "sync" +) + +type EventFunc func(ctx context.Context, args ...interface{}) + +type sEvent struct { + sync.Mutex + list map[string][]EventFunc // 所有事件的列表 +} + +var event *sEvent + +// Event 事件实例 +func Event() *sEvent { + if event == nil { + event = &sEvent{ + list: make(map[string][]EventFunc), + } + } + return event +} + +// Register 往一个分组中注册事件 +func (e *sEvent) Register(group string, callback EventFunc) { + e.Lock() + defer e.Unlock() + e.list[group] = append(e.list[group], callback) +} + +// Call 回调一个分组的事件 +func (e *sEvent) Call(group string, ctx context.Context, args ...interface{}) { + if events, ok := e.list[group]; ok { + for _, f := range events { + f(ctx, args...) + } + } +} + +// Remove 移动一个分组的事件 +func (e *sEvent) Remove(group string) { + delete(e.list, group) +} + +// Clear 清空事件列表 +func (e *sEvent) Clear() { + e.list = make(map[string][]EventFunc) +} diff --git a/server/utility/simple/simple.go b/server/utility/simple/simple.go new file mode 100644 index 0000000..2a12e00 --- /dev/null +++ b/server/utility/simple/simple.go @@ -0,0 +1,144 @@ +// Package simple +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2025 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package simple + +import ( + "context" + "github.com/gogf/gf/v2/crypto/gmd5" + "github.com/gogf/gf/v2/encoding/gbase64" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/net/ghttp" + "github.com/gogf/gf/v2/os/gfile" + "github.com/gogf/gf/v2/os/glog" + "hotgo/internal/consts" + "hotgo/utility/encrypt" +) + +// RouterPrefix 获取应用路由前缀 +func RouterPrefix(ctx context.Context, app string) string { + return g.Cfg().MustGet(ctx, "router."+app+".prefix", "/"+app+"").String() +} + +// FilterMaskDemo 过滤演示环境下的配置隐藏字段 +func FilterMaskDemo(ctx context.Context, src g.Map) g.Map { + if src == nil { + return nil + } + + if !IsDemo(ctx) { + return src + } + + for k := range src { + if _, ok := consts.ConfigMaskDemoField[k]; ok { + src[k] = consts.DemoTips + } + } + return src +} + +// DefaultErrorTplContent 获取默认的错误模板内容 +func DefaultErrorTplContent(ctx context.Context) string { + return gfile.GetContents(g.Cfg().MustGet(ctx, "viewer.paths").String() + "/error/default.html") +} + +// DecryptText 解密文本 +func DecryptText(text string) (string, error) { + str, err := gbase64.Decode([]byte(text)) + if err != nil { + return "", err + } + + str, err = encrypt.AesECBDecrypt(str, consts.RequestEncryptKey) + if err != nil { + return "", err + } + return string(str), nil +} + +// CheckPassword 检查密码 +func CheckPassword(input, salt, hash string) (err error) { + // 解密密码 + password, err := DecryptText(input) + if err != nil { + return err + } + + if hash != gmd5.MustEncryptString(password+salt) { + err = gerror.New("用户名或密码错误") + return + } + return +} + +// GetHeaderLocale 获取请求头语言设置 +// gf支持格式:en/ja/ru/zh-CN/zh-TW +func GetHeaderLocale(ctx context.Context) (lang string) { + lang = g.Cfg().MustGet(ctx, "system.i18n.defaultLanguage", consts.SysDefaultLanguage).String() + // 没有开启国际化,使用默认语言 + if !g.Cfg().MustGet(ctx, "system.i18n.switch", true).Bool() { + return + } + + r := ghttp.RequestFromCtx(ctx) + if r == nil { + return + } + locale := r.Header.Get("Locale") + // 简体中文 + if locale == "zh-CN" || locale == "zh-Hans" || locale == "zh" || locale == "ZH" { + lang = "zh-CN" + return + } + // 繁体 + if locale == "zh-TW" || locale == "zh-Hant" { + lang = "zh-TW" + return + } + // 英文 + if locale == "en" || locale == "EN" { + lang = "en" + return + } + // 更多语言 + // ... + return +} + +// SafeGo 安全的调用协程,遇到错误时输出错误日志而不是抛出panic +func SafeGo(ctx context.Context, f func(ctx context.Context), lv ...int) { + g.Go(ctx, f, func(ctx context.Context, err error) { + var level = glog.LEVEL_ERRO + if len(lv) > 0 { + level = lv[0] + } + Logf(level, ctx, "SafeGo exec failed:%+v", err) + }) +} + +func Logf(level int, ctx context.Context, format string, v ...interface{}) { + switch level { + case glog.LEVEL_DEBU: + g.Log().Debugf(ctx, format, v...) + case glog.LEVEL_INFO: + g.Log().Infof(ctx, format, v...) + case glog.LEVEL_NOTI: + g.Log().Noticef(ctx, format, v...) + case glog.LEVEL_WARN: + g.Log().Warningf(ctx, format, v...) + case glog.LEVEL_ERRO: + g.Log().Errorf(ctx, format, v...) + case glog.LEVEL_CRIT: + g.Log().Criticalf(ctx, format, v...) + case glog.LEVEL_PANI: + g.Log().Panicf(ctx, format, v...) + case glog.LEVEL_FATA: + g.Log().Fatalf(ctx, format, v...) + default: + g.Log().Errorf(ctx, format, v...) + } +} diff --git a/server/utility/simple/system_config.go b/server/utility/simple/system_config.go new file mode 100644 index 0000000..3c31d01 --- /dev/null +++ b/server/utility/simple/system_config.go @@ -0,0 +1,31 @@ +// Package simple +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2024 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package simple + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" +) + +// AppName 应用名称 +func AppName(ctx context.Context) string { + return g.Cfg().MustGet(ctx, "system.appName", "hotgo").String() +} + +// Debug debug +func Debug(ctx context.Context) bool { + return g.Cfg().MustGet(ctx, "system.debug", true).Bool() +} + +// IsDemo 是否为演示系统 +func IsDemo(ctx context.Context) bool { + return g.Cfg().MustGet(ctx, "system.isDemo", true).Bool() +} + +// IsCluster 是否为集群部署 +func IsCluster(ctx context.Context) bool { + return g.Cfg().MustGet(ctx, "system.isCluster", true).Bool() +} diff --git a/server/utility/tree/tree.go b/server/utility/tree/tree.go new file mode 100644 index 0000000..78d5938 --- /dev/null +++ b/server/utility/tree/tree.go @@ -0,0 +1,108 @@ +// Package tree +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package tree + +import ( + "fmt" + "github.com/gogf/gf/v2/util/gconv" + "strings" +) + +const ( + treeDefaultId = "id" // 树ID + treeDefaultPid = "pid" // 上级树ID + treeDefaultChildren = "children" // 下级属性 + treeBeginCut = "tr_" // 树标识开头 + treeEndCut = " " // 树标识结尾 +) + +// GenOption 生成选项 +type GenOption struct { + IdField string + PidField string + ChildrenField string +} + +// GenLabel 生成关系树标识 +func GenLabel(basic string, appendId int64) string { + return fmt.Sprintf("%v%v%v%v", basic, treeBeginCut, appendId, treeEndCut) +} + +// GetIdLabel 获取指定Id的树标签 +func GetIdLabel(id int64) string { + return fmt.Sprintf("%v%v%v", treeBeginCut, id, treeEndCut) +} + +// GetIds 获取上级ID集合 +func GetIds(tree string) (ids []int64) { + idsStr := strings.Split(tree, treeEndCut) + if len(idsStr) == 0 { + return + } + + for _, v := range idsStr { + newId := gconv.Int64(strings.ReplaceAll(v, treeBeginCut, "")) + if newId > 0 { + ids = append(ids, newId) + } + } + return +} + +// GenTree 生成关系树 +func GenTree(menus []map[string]interface{}) (realMenu []map[string]interface{}) { + return GenTreeWithField(menus, GenOption{ + IdField: treeDefaultId, + PidField: treeDefaultPid, + ChildrenField: treeDefaultChildren, + }) +} + +// GenTreeWithField 生成关系树 自定义生成属性 +func GenTreeWithField(menus []map[string]interface{}, op GenOption) (realMenu []map[string]interface{}) { + if len(menus) < 1 { + return + } + + minPid := GetMinPid(menus, op.PidField) + formatMenu := make(map[int]map[string]interface{}) + for _, m := range menus { + formatMenu[gconv.Int(m[op.IdField])] = m + if gconv.Int(m[op.PidField]) == minPid { + realMenu = append(realMenu, m) // 需要返回的顶级菜单 + } + } + // 得益于都是地址操作,可以直接往父级塞 + for _, m := range formatMenu { + if formatMenu[gconv.Int(m[op.PidField])] == nil { + continue + } + if formatMenu[gconv.Int(m[op.PidField])][op.ChildrenField] == nil { + formatMenu[gconv.Int(m[op.PidField])][op.ChildrenField] = []map[string]interface{}{} + } + + formatMenu[gconv.Int(m[op.PidField])][op.ChildrenField] = append(formatMenu[gconv.Int(m[op.PidField])][op.ChildrenField].([]map[string]interface{}), m) + } + return +} + +func GetMinPid(menus []map[string]interface{}, pidField string) int { + index := -1 + for _, m := range menus { + if index == -1 { + index = gconv.Int(m[pidField]) + continue + } + if gconv.Int(m[pidField]) < index { + index = gconv.Int(m[pidField]) + } + } + + if index == -1 { + return 0 + } + return index +} diff --git a/server/utility/tree/tree_list.go b/server/utility/tree/tree_list.go new file mode 100644 index 0000000..17c5ab2 --- /dev/null +++ b/server/utility/tree/tree_list.go @@ -0,0 +1,35 @@ +// Package tree +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2024 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package tree + +type Node interface { + ID() int64 // 获取节点ID + PID() int64 // 获取父级节点ID + SetChildren(children []Node) // 设置子节点数据 +} + +// ListToTree 根据上下级关系将列表数据转为树状数据 +func ListToTree(pid int64, nodes []Node) (list []Node, err error) { + if len(nodes) == 0 { + return nodes, nil + } + for _, v := range nodes { + if v.PID() == pid { + item := v + + // 递归添加子节点 + child, err := ListToTree(v.ID(), nodes) + if err != nil { + return nil, err + } + if len(child) > 0 { + item.SetChildren(child) + } + list = append(list, item) + } + } + return +} diff --git a/server/utility/url/url.go b/server/utility/url/url.go new file mode 100644 index 0000000..4d979e1 --- /dev/null +++ b/server/utility/url/url.go @@ -0,0 +1,74 @@ +// Package url +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package url + +import ( + "context" + "fmt" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/net/ghttp" + "github.com/gogf/gf/v2/text/gstr" + "hotgo/utility/validate" + "strings" +) + +// UriToMap 将URL参数转为map +func UriToMap(uri string) g.MapStrStr { + m := make(map[string]string) + if len(uri) < 1 { + return nil + } + if uri[0:1] == "?" { + uri = uri[1:] + } + pars := strings.Split(uri, "&") + for _, par := range pars { + kv := strings.Split(par, "=") + m[kv[0]] = kv[1] + } + return m +} + +// MapToUri 将map转为URL参数 +func MapToUri(params g.MapStrStr) string { + escape := "" + for k, v := range params { + if escape != "" { + escape = escape + "&" + } + escape = escape + k + "=" + v + } + return escape +} + +// GetAddr 获取请求中的请求地址,协议+域名/IP:端口 +func GetAddr(ctx context.Context) string { + r := ghttp.RequestFromCtx(ctx) + if r == nil { + return "" + } + var ( + scheme = "http" + proto = r.Header.Get("X-Forwarded-Proto") + ) + if r.TLS != nil || gstr.Equal(proto, "https") { + scheme = "https" + } + return fmt.Sprintf(`%s://%s`, scheme, r.Host) +} + +// GetDomain 获取请求中的域名,如果请求不是域名则返回空 +func GetDomain(ctx context.Context) string { + r := ghttp.RequestFromCtx(ctx) + if r == nil { + g.Log().Info(ctx, "GetDomain ctx not request") + return "" + } + if validate.IsDNSName(r.Host) { + return r.Host + } + return "" +} diff --git a/server/utility/useragent/useragent.go b/server/utility/useragent/useragent.go new file mode 100644 index 0000000..5c4a12b --- /dev/null +++ b/server/utility/useragent/useragent.go @@ -0,0 +1,129 @@ +// Package useragent +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package useragent + +import ( + "fmt" + "github.com/gogf/gf/v2/text/gstr" + "hotgo/internal/consts" + "regexp" + "strings" +) + +// GetOs 获取OS名称 +func GetOs(userAgent string) string { + osName := consts.Unknown + if userAgent == "" { + return osName + } + + var ( + strRe, _ = regexp.Compile(`(?i:\((.*?)\))`) + levelNames = ":micromessenger:dart:Windows NT:Windows Mobile:Windows Phone:Windows Phone OS:Macintosh|Macintosh:Mac OS:CrOS|CrOS:iPhone OS:iPad|iPad:OS:Android:Linux:blackberry:hpwOS:Series:Symbian:PalmOS:SymbianOS:J2ME:Sailfish:Bada:MeeGo:webOS|hpwOS:Maemo:" + namesArr = strings.Split(strings.Trim(levelNames, ":"), ":") + regStrArr = make([]string, len(namesArr)) + ) + + for k, name := range namesArr { + regStrArr[k] = fmt.Sprintf("(%s[\\s?\\/XxSs0-9_.]+)", name) + } + + userAgent = strRe.FindString(userAgent) + var ( + nameRe, _ = regexp.Compile(fmt.Sprintf("(?i:%s)", strings.Join(regStrArr, "|"))) + names = nameRe.FindAllString(userAgent, -1) + name = "" + ) + + for _, s := range names { + if len(name) == 0 { + name = strings.TrimSpace(s) + } else { + if strings.Contains(name, "Macintosh") && s != "" { + name = strings.TrimSpace(s) + } else if strings.Contains(name, s) { + name = strings.TrimSpace(s) + } else if !strings.Contains(s, name) { + if strings.Contains(name, "iPhone") || strings.Contains(name, "iPad") { + s = gstr.Trim(s, "Mac OS X") + } + + if s != "" { + name += " " + strings.TrimSpace(s) + } + } + break + } + + if strings.Contains(name, "Windows NT") { + name = getWinOsNameWithWinNT(name) + break + } + } + + if name != "" { + osName = name + } + return osName +} + +// GetBrowser 获取浏览器名称 +func GetBrowser(userAgent string) string { + var ( + deviceName = consts.Unknown + levelNames = ":VivoBrowser:QQDownload:QQBrowser:QQ:MQQBrowser:MicroMessenger:TencentTraveler:LBBROWSER:TaoBrowser:BrowserNG:UCWEB:TwonkyBeamBrowser:NokiaBrowser:OviBrowser:NF-Browser:OneBrowser:Obigo:DiigoBrowser:baidubrowser:baiduboxapp:xiaomi:Redmi:MI:Lumia:Micromax:MSIEMobile:IEMobile:EdgiOS:Yandex:Mercury:Openwave:TouchPad:UBrowser:Presto:Maxthon:MetaSr:Trident:Opera:IEMobile:Edge:Chrome:Chromium:OPR:CriOS:Firefox:FxiOS:fennec:CrMo:Safari:Nexus One:Nexus S:Nexus:Blazer:teashark:bolt:HTC:Dell:Motorola:Samsung:LG:Sony:SonyST:SonyLT:SonyEricsson:Asus:Palm:Vertu:Pantech:Fly:Wiko:i-mobile:Alcatel:Nintendo:Amoi:INQ:ONEPLUS:Tapatalk:PDA:Novarra-Vision:NetFront:Minimo:FlyFlow:Dolfin:Nokia:Series:AppleWebKit:Mobile:Mozilla:Version:" + namesArr = strings.Split(strings.Trim(levelNames, ":"), ":") + regStrArr []string + ) + + for _, name := range namesArr { + regStrArr = append(regStrArr, fmt.Sprintf("(%s[\\s?\\/0-9.]+)", name)) + } + + var ( + regexpStr = fmt.Sprintf("(?i:%s)", strings.Join(regStrArr, "|")) + nameRe, _ = regexp.Compile(regexpStr) + names = nameRe.FindAllString(userAgent, -1) + level = 0 + ) + + for _, name := range names { + replaceRe, _ := regexp.Compile(`(?i:[\s?\/0-9.]+)`) + l := strings.Index(levelNames, fmt.Sprintf(":%s:", replaceRe.ReplaceAllString(name, ""))) + if level == 0 { + deviceName = strings.TrimSpace(name) + } + + if l >= 0 && (level == 0 || level > l) { + level = l + deviceName = strings.TrimSpace(name) + } + } + return deviceName +} + +func getWinOsNameWithWinNT(sName string) string { + osName := "Windows" + types := map[string]string{ + "Windows NT 10": "Windows 10", + "Windows NT 6.3": "Windows 8", + "Windows NT 6.2": "Windows 8", + "Windows NT 6.1": "Windows 7", + "Windows NT 6.0": "Windows Vista/Server 2008", + "Windows NT 5.2": "Windows Server 2003", + "Windows NT 5.1": "Windows XP", + "Windows NT 5": "Windows 2000", + "Windows NT 4": "Windows NT4", + } + + for keyWord, name := range types { + if strings.Contains(sName, keyWord) { + osName = name + break + } + } + return osName +} diff --git a/server/utility/validate/filter.go b/server/utility/validate/filter.go new file mode 100644 index 0000000..265e568 --- /dev/null +++ b/server/utility/validate/filter.go @@ -0,0 +1,32 @@ +// Package validate +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package validate + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" +) + +// Filter 通用过滤器 + +// Filter 预处理和数据过滤接口,目前主要用于input层的输入过滤和内部效验。 +// 你可以在任意地方使用它,只要实现了Filter接口即可 +type Filter interface { + // Filter gf效验规则 https://goframe.org/pages/viewpage.action?pageId=1114367 + Filter(ctx context.Context) error +} + +// PreFilter 预过滤 +func PreFilter(ctx context.Context, in interface{}) error { + return g.Try(ctx, func(ctx context.Context) { + if c, ok := in.(Filter); ok { + if err := c.Filter(ctx); err != nil { + g.Throw(err) + } + return + } + }) +} diff --git a/server/utility/validate/filter_test.go b/server/utility/validate/filter_test.go new file mode 100644 index 0000000..95e4318 --- /dev/null +++ b/server/utility/validate/filter_test.go @@ -0,0 +1,72 @@ +// Package validate_test +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package validate_test + +import ( + "context" + "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/test/gtest" + "hotgo/utility/validate" + "testing" +) + +// MockFilter 是 Filter 接口的模拟实现。 +type MockFilter struct { + Foo string + Bar int +} + +func (f *MockFilter) Filter(ctx context.Context) error { + // 模拟过滤逻辑 + + // 过滤出错的例子 + if f.Foo == "" { + return gerror.New("Foo 字段是必需的") + } + + // 过滤操作的例子 + f.Bar += 10 + return nil +} + +func TestPreFilter(t *testing.T) { + ctx := context.Background() + input := &MockFilter{ + Foo: "test", + Bar: 5, + } + + err := validate.PreFilter(ctx, input) + gtest.C(t, func(t *gtest.T) { + t.AssertNil(err) + }) + + t.Logf("input:%+v", input) + + // 验证过滤结果 + expectedBar := 15 + gtest.C(t, func(t *gtest.T) { + t.Assert(input.Bar, expectedBar) + }) +} + +func TestPreFilter_Error(t *testing.T) { + ctx := context.Background() + input := &MockFilter{ + Foo: "", + Bar: 5, + } + + err := validate.PreFilter(ctx, input) + gtest.C(t, func(t *gtest.T) { + t.AssertNE(err, nil) + }) + + expectedError := "Foo 字段是必需的" + gtest.C(t, func(t *gtest.T) { + t.Assert(err.Error(), expectedError) + }) +} diff --git a/server/utility/validate/include.go b/server/utility/validate/include.go new file mode 100644 index 0000000..7b445a4 --- /dev/null +++ b/server/utility/validate/include.go @@ -0,0 +1,38 @@ +// Package validate +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package validate + +import ( + "github.com/gogf/gf/v2/util/gconv" +) + +// 包含判断 + +// InSliceExistStr 判断字符或切片字符是否存在指定字符 +func InSliceExistStr(elems any, search string) bool { + switch elems.(type) { + case []string: + elem := gconv.Strings(elems) + for i := 0; i < len(elem); i++ { + if gconv.String(elem[i]) == search { + return true + } + } + default: + return gconv.String(elems) == search + } + return false +} + +// InSlice 元素是否存在于切片中 +func InSlice[K comparable](slice []K, key K) bool { + for _, v := range slice { + if v == key { + return true + } + } + return false +} diff --git a/server/utility/validate/validate.go b/server/utility/validate/validate.go new file mode 100644 index 0000000..532c354 --- /dev/null +++ b/server/utility/validate/validate.go @@ -0,0 +1,192 @@ +// Package validate +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package validate + +import ( + "context" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/net/ghttp" + "github.com/gogf/gf/v2/text/gstr" + "net" + "net/url" + "regexp" + "strings" + "time" +) + +// 是否判断 + +// IsDNSName 是否是域名地址 +func IsDNSName(s string) bool { + DNSName := `^([a-zA-Z0-9_]{1}[a-zA-Z0-9_-]{0,62}){1}(\.[a-zA-Z0-9_]{1}[a-zA-Z0-9_-]{0,62})*[\._]?$` + rxDNSName := regexp.MustCompile(DNSName) + return s != "" && rxDNSName.MatchString(s) +} + +// IsHTTPS 是否是https请求 +func IsHTTPS(ctx context.Context) bool { + r := ghttp.RequestFromCtx(ctx) + if r == nil { + g.Log().Info(ctx, "IsHTTPS ctx not request") + return false + } + return r.TLS != nil || gstr.Equal(r.Header.Get("X-Forwarded-Proto"), "https") +} + +// IsIp 是否为ipv4 +func IsIp(ip string) bool { + return net.ParseIP(ip) != nil +} + +// IsPublicIp 是否是公网IP +func IsPublicIp(ip string) bool { + i := net.ParseIP(ip) + + if i.IsLoopback() || i.IsPrivate() || i.IsMulticast() || i.IsUnspecified() || i.IsLinkLocalUnicast() || i.IsLinkLocalMulticast() { + return false + } + + if ip4 := i.To4(); ip4 != nil { + return !i.Equal(net.IPv4bcast) + } + return true +} + +// IsLocalIPAddr 检测 IP 地址字符串是否是内网地址 +func IsLocalIPAddr(ip string) bool { + if "localhost" == ip { + return true + } + return HasLocalIP(net.ParseIP(ip)) +} + +// HasLocalIP 检测 IP 地址是否是内网地址 +func HasLocalIP(ip net.IP) bool { + if ip.IsLoopback() { + return true + } + + ip4 := ip.To4() + if ip4 == nil { + return false + } + + return ip4[0] == 10 || // 10.0.0.0/8 + (ip4[0] == 172 && ip4[1] >= 16 && ip4[1] <= 31) || // 172.16.0.0/12 + (ip4[0] == 169 && ip4[1] == 254) || // 169.254.0.0/16 + (ip4[0] == 192 && ip4[1] == 168) // 192.168.0.0/16 +} + +// IsMobile 是否为手机号码 +func IsMobile(mobile string) bool { + pattern := `^(1[2|3|4|5|6|7|8|9][0-9]\d{4,8})$` + reg := regexp.MustCompile(pattern) + return reg.MatchString(mobile) +} + +// IsEmail 是否为邮箱地址 +func IsEmail(email string) bool { + // pattern := `^[0-9a-z][_.0-9a-z-]{0,31}@([0-9a-z][0-9a-z-]{0,30}[0-9a-z].){1,4}[a-z]{2,4}$` //匹配电子邮箱 + pattern := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$` + reg := regexp.MustCompile(pattern) + return reg.MatchString(email) +} + +// IsURL 是否是url地址 +func IsURL(u string) bool { + _, err := url.ParseRequestURI(u) + if err != nil { + return false + } + URL, err := url.Parse(u) + if err != nil || URL.Scheme == "" || URL.Host == "" { + return false + } + return true +} + +// IsIDCard 是否为身份证 +func IsIDCard(idCard string) bool { + sz := len(idCard) + if sz != 18 { + return false + } + weight := []int{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2} + validate := []byte{'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'} + sum := 0 + for i := 0; i < len(weight); i++ { + sum += weight[i] * int(byte(idCard[i])-'0') + } + m := sum % 11 + return validate[m] == idCard[sz-1] +} + +// IsSameDay 是否为同一天 +func IsSameDay(t1, t2 int64) bool { + y1, m1, d1 := time.Unix(t1, 0).Date() + y2, m2, d2 := time.Unix(t2, 0).Date() + return y1 == y2 && m1 == m2 && d1 == d2 +} + +// IsSameMinute 是否为同一分钟 +func IsSameMinute(t1, t2 int64) bool { + d1 := time.Unix(t1, 0).Format("2006-01-02 15:04") + d2 := time.Unix(t2, 0).Format("2006-01-02 15:04") + return d1 == d2 +} + +// IsMobileVisit 是否为移动端访问 +func IsMobileVisit(userAgent string) bool { + if len(userAgent) == 0 { + return false + } + + is := false + mobileKeywords := []string{"Mobile", "Android", "Silk/", "Kindle", "BlackBerry", "Opera Mini", "Opera Mobi"} + for i := 0; i < len(mobileKeywords); i++ { + if strings.Contains(userAgent, mobileKeywords[i]) { + is = true + break + } + } + return is +} + +// IsWxBrowserVisit 是否为微信访问 +func IsWxBrowserVisit(userAgent string) bool { + if len(userAgent) == 0 { + return false + } + + is := false + userAgent = strings.ToLower(userAgent) + mobileKeywords := []string{"MicroMessenger"} + for i := 0; i < len(mobileKeywords); i++ { + if strings.Contains(userAgent, strings.ToLower(mobileKeywords[i])) { + is = true + break + } + } + return is +} + +// IsWxMiniProgramVisit 是否为微信小程序访问 +func IsWxMiniProgramVisit(userAgent string) bool { + if len(userAgent) == 0 { + return false + } + + is := false + userAgent = strings.ToLower(userAgent) + mobileKeywords := []string{"miniProgram"} + for i := 0; i < len(mobileKeywords); i++ { + if strings.Contains(userAgent, strings.ToLower(mobileKeywords[i])) { + is = true + break + } + } + return is +} diff --git a/server/utility/validate/validate_test.go b/server/utility/validate/validate_test.go new file mode 100644 index 0000000..0fa3ceb --- /dev/null +++ b/server/utility/validate/validate_test.go @@ -0,0 +1,17 @@ +// Package validate_test +// @Link https://github.com/bufanyun/hotgo +// @Copyright Copyright (c) 2023 HotGo CLI +// @Author Ms <133814250@qq.com> +// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE +package validate_test + +import ( + "github.com/gogf/gf/v2/test/gtest" + "hotgo/utility/validate" + "testing" +) + +func TestIsEmail(t *testing.T) { + b := validate.IsEmail("QTT123456@163.com") + gtest.Assert(true, b) +} diff --git a/sidebar.md b/sidebar.md new file mode 100644 index 0000000..e3e9b8d --- /dev/null +++ b/sidebar.md @@ -0,0 +1,58 @@ +- 介绍安装 + + - [系统介绍](../../README.md) + - [环境搭建](/docs/guide-zh-CN/start-environment.md) + - [系统安装](/docs/guide-zh-CN/start-installation.md) + - [生产部署](/docs/guide-zh-CN/start-deploy.md) + - [如何提问](/docs/guide-zh-CN/start-questions.md) + - [常见问题](/docs/guide-zh-CN/start-issue.md) + - [更新历史](/docs/guide-zh-CN/start-update-log.md) + + +- 系统开发 + + - [目录结构](/docs/guide-zh-CN/sys-catalog.md) + - [开发规范](/docs/guide-zh-CN/sys-exploit.md) + - [控制台](/docs/guide-zh-CN/sys-console.md) + - [中间件/拦截器](/docs/guide-zh-CN/sys-middleware.md) + - [WebHook](/docs/guide-zh-CN/sys-webhook.md) + - [权限控制](/docs/guide-zh-CN/sys-auth.md) + - [支付网关](/docs/guide-zh-CN/sys-payment.md) + - [定时任务](/docs/guide-zh-CN/sys-cron.md) + - [消息队列](/docs/guide-zh-CN/sys-queue.md) + - [功能扩展库](/docs/guide-zh-CN/sys-library.md) + - [工具方法](/docs/guide-zh-CN/sys-utility.md) + - [WebSocket服务器](/docs/guide-zh-CN/sys-websocket-server.md) + - [TCP服务器](/docs/guide-zh-CN/sys-tcp-server.md) + - [SaaS多租户](/docs/guide-zh-CN/sys-tenant.md) + - [国际化](/docs/guide-zh-CN/sys-i18n.md) + - [单元测试](/docs/guide-zh-CN/sys-test.md) + + +- 插件模块开发 + + - [模块介绍及目录](/docs/guide-zh-CN/addon-introduce-catalog.md) + - [模块开发流程](/docs/guide-zh-CN/addon-flow.md) + - [模块辅助说明](/docs/guide-zh-CN/addon-helper.md) + + +- 生成代码 + - [使用前提](/docs/guide-zh-CN/code-start.md) + - [数据库](/docs/guide-zh-CN/sys-db.md) + - [生成配置](/docs/guide-zh-CN/code-config.md) + - [生成CURD](/docs/guide-zh-CN/code-curd.md) + - [生成关联表CURD](/docs/guide-zh-CN/code-curd-join.md) + - [生成树型CURD](/docs/guide-zh-CN/code-tree.md) + - [生成业务模板](/docs/guide-zh-CN/code-business.md) + - [生成模板开发](/docs/guide-zh-CN/code-template-dev.md) + - [生成常见问题](/docs/guide-zh-CN/code-help.md) + + +- 前端开发 + - [表单组件](/docs/guide-zh-CN/web-form.md) + - [WebSocket客户端](/docs/guide-zh-CN/sys-websocket-client.md) + - [独立部署](/docs/guide-zh-CN/web-deploy.md) + + +- 附录 + - [网址收录](/docs/guide-zh-CN/append-website.md) \ No newline at end of file diff --git a/web/.editorconfig b/web/.editorconfig new file mode 100644 index 0000000..d92c3ed --- /dev/null +++ b/web/.editorconfig @@ -0,0 +1,19 @@ +root = true + +[*] +charset=utf-8 +end_of_line=LF +insert_final_newline=true +indent_style=space +indent_size=2 +max_line_length = 100 + +[*.{yml,yaml,json}] +indent_style = space +indent_size = 2 + +[*.md] +trim_trailing_whitespace = false + +[Makefile] +indent_style = tab \ No newline at end of file diff --git a/web/.env.development b/web/.env.development new file mode 100644 index 0000000..d618ebf --- /dev/null +++ b/web/.env.development @@ -0,0 +1,34 @@ +# 只在开发模式中被载入 + +# 网站根目录 +VITE_PUBLIC_PATH=/ + +# 网站前缀 +VITE_BASE_URL=/ + +# 是否删除console +VITE_DROP_CONSOLE=true + +# 跨域代理,可以配置多个,请注意不要换行,如果是公网运行,请改成公网IP:服务端运行端口 +#VITE_PROXY = [["/appApi","http://localhost:8001"],["/upload","http://localhost:8001/upload"]] +VITE_PROXY=[["/admin","http://localhost:8000/admin"]] + + +# API 接口地址 +VITE_GLOB_API_URL= + +# 图片上传地址 +VITE_GLOB_UPLOAD_URL= + +# 图片前缀地址 +VITE_GLOB_IMG_URL= + +# 接口前缀 +VITE_GLOB_API_URL_PREFIX=/admin + +# 快速登录账号密码配置,没有配置则不开启快速登录 +## 格式为 [["账号名称","账号密码","角色名称"],["账号名称","账号密码"],["账号名称"]] +## 帐号名称不能为空,密码为空则和帐号名称相同 +## 角色名称可选,如果不填写则默认使用账号名称作为角色名称 +## 账号名称和角色名称可以重复,账号名称和密码可以重复 +VITE_APP_DEMO_ACCOUNT=[["admin","123456","超管"],["test","123456","管理员"],["ameng","123456","租户"],["abai","123456","商户"],["asong","123456","用户"]] \ No newline at end of file diff --git a/web/.env.production b/web/.env.production new file mode 100644 index 0000000..7a6c774 --- /dev/null +++ b/web/.env.production @@ -0,0 +1,30 @@ +# 只在生产模式中被载入 + +# 网站根目录 +VITE_PUBLIC_PATH=/admin + +# 网站前缀 +VITE_BASE_URL=/ + +# 是否删除console +VITE_DROP_CONSOLE=true + +# API +VITE_GLOB_API_URL= + +# 图片上传地址 +VITE_GLOB_UPLOAD_URL= + +# 图片前缀地址 +VITE_GLOB_IMG_URL= + +# 接口前缀 +VITE_GLOB_API_URL_PREFIX=/admin + +# 是否启用gzip压缩或brotli压缩 +# 可选: gzip | brotli | none +# 如果你需要多种形式,你可以用','来分隔 +VITE_BUILD_COMPRESS='none' + +# 使用压缩时是否删除原始文件,默认为false +VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE=false diff --git a/web/.gitignore b/web/.gitignore new file mode 100644 index 0000000..18a53b5 --- /dev/null +++ b/web/.gitignore @@ -0,0 +1,29 @@ +.DS_Store +node_modules +/screenshots +/dist +dist.zip +dist_electron +package-lock.json +yarn.lock + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +/components.d.ts + diff --git a/web/.prettierignore b/web/.prettierignore new file mode 100644 index 0000000..f7e39e6 --- /dev/null +++ b/web/.prettierignore @@ -0,0 +1,9 @@ +/dist/* +.local +.output.js +/node_modules/** + +**/*.svg +**/*.sh + +/public/* diff --git a/web/.stylelintignore b/web/.stylelintignore new file mode 100644 index 0000000..0517076 --- /dev/null +++ b/web/.stylelintignore @@ -0,0 +1,3 @@ +/dist/* +/public/* +public/* diff --git a/web/LICENSE b/web/LICENSE new file mode 100644 index 0000000..d012d2a --- /dev/null +++ b/web/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-present Naive Ui Admin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/web/README.md b/web/README.md new file mode 100644 index 0000000..e260b18 --- /dev/null +++ b/web/README.md @@ -0,0 +1 @@ +## HotGo 管理web前端 diff --git a/web/auto-imports.d.ts b/web/auto-imports.d.ts new file mode 100644 index 0000000..0fc6e25 --- /dev/null +++ b/web/auto-imports.d.ts @@ -0,0 +1,79 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +// biome-ignore lint: disable +export {} +declare global { + const EffectScope: typeof import('vue').EffectScope + const computed: typeof import('vue').computed + const createApp: typeof import('vue').createApp + const customRef: typeof import('vue').customRef + const defineAsyncComponent: typeof import('vue').defineAsyncComponent + const defineComponent: typeof import('vue').defineComponent + const effectScope: typeof import('vue').effectScope + const getCurrentInstance: typeof import('vue').getCurrentInstance + const getCurrentScope: typeof import('vue').getCurrentScope + const getCurrentWatcher: typeof import('vue').getCurrentWatcher + const h: typeof import('vue').h + const inject: typeof import('vue').inject + const isProxy: typeof import('vue').isProxy + const isReactive: typeof import('vue').isReactive + const isReadonly: typeof import('vue').isReadonly + const isRef: typeof import('vue').isRef + const isShallow: typeof import('vue').isShallow + const markRaw: typeof import('vue').markRaw + const nextTick: typeof import('vue').nextTick + const onActivated: typeof import('vue').onActivated + const onBeforeMount: typeof import('vue').onBeforeMount + const onBeforeRouteLeave: typeof import('vue-router').onBeforeRouteLeave + const onBeforeRouteUpdate: typeof import('vue-router').onBeforeRouteUpdate + const onBeforeUnmount: typeof import('vue').onBeforeUnmount + const onBeforeUpdate: typeof import('vue').onBeforeUpdate + const onDeactivated: typeof import('vue').onDeactivated + const onErrorCaptured: typeof import('vue').onErrorCaptured + const onMounted: typeof import('vue').onMounted + const onRenderTracked: typeof import('vue').onRenderTracked + const onRenderTriggered: typeof import('vue').onRenderTriggered + const onScopeDispose: typeof import('vue').onScopeDispose + const onServerPrefetch: typeof import('vue').onServerPrefetch + const onUnmounted: typeof import('vue').onUnmounted + const onUpdated: typeof import('vue').onUpdated + const onWatcherCleanup: typeof import('vue').onWatcherCleanup + const provide: typeof import('vue').provide + const reactive: typeof import('vue').reactive + const readonly: typeof import('vue').readonly + const ref: typeof import('vue').ref + const resolveComponent: typeof import('vue').resolveComponent + const shallowReactive: typeof import('vue').shallowReactive + const shallowReadonly: typeof import('vue').shallowReadonly + const shallowRef: typeof import('vue').shallowRef + const t: typeof import('@/locale/index').t + const toRaw: typeof import('vue').toRaw + const toRef: typeof import('vue').toRef + const toRefs: typeof import('vue').toRefs + const toValue: typeof import('vue').toValue + const triggerRef: typeof import('vue').triggerRef + const unref: typeof import('vue').unref + const useAttrs: typeof import('vue').useAttrs + const useCssModule: typeof import('vue').useCssModule + const useCssVars: typeof import('vue').useCssVars + const useId: typeof import('vue').useId + const useLink: typeof import('vue-router').useLink + const useModel: typeof import('vue').useModel + const useRoute: typeof import('vue-router').useRoute + const useRouter: typeof import('vue-router').useRouter + const useSlots: typeof import('vue').useSlots + const useTemplateRef: typeof import('vue').useTemplateRef + const watch: typeof import('vue').watch + const watchEffect: typeof import('vue').watchEffect + const watchPostEffect: typeof import('vue').watchPostEffect + const watchSyncEffect: typeof import('vue').watchSyncEffect +} +// for type re-export +declare global { + // @ts-ignore + export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, ShallowRef, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' + import('vue') +} diff --git a/web/build/constant.ts b/web/build/constant.ts new file mode 100644 index 0000000..cbcc5f3 --- /dev/null +++ b/web/build/constant.ts @@ -0,0 +1,6 @@ +/** + * The name of the configuration file entered in the production environment + */ +export const GLOB_CONFIG_FILE_NAME = 'app.config.js'; + +export const OUTPUT_DIR = 'dist'; diff --git a/web/build/getConfigFileName.ts b/web/build/getConfigFileName.ts new file mode 100644 index 0000000..d61cd41 --- /dev/null +++ b/web/build/getConfigFileName.ts @@ -0,0 +1,9 @@ +/** + * Get the configuration file variable name + * @param env + */ +export const getConfigFileName = (env: Record) => { + return `__PRODUCTION__${env.VITE_GLOB_APP_SHORT_NAME || '__APP'}__CONF__` + .toUpperCase() + .replace(/\s/g, ''); +}; diff --git a/web/build/script/buildConf.ts b/web/build/script/buildConf.ts new file mode 100644 index 0000000..c3071a8 --- /dev/null +++ b/web/build/script/buildConf.ts @@ -0,0 +1,44 @@ +/** + * Generate additional configuration files when used for packaging. The file can be configured with some global variables, so that it can be changed directly externally without repackaging + */ +import { GLOB_CONFIG_FILE_NAME, OUTPUT_DIR } from '../constant'; +import fs from 'fs-extra'; +import chalk from 'chalk'; + +import { getRootPath, getEnvConfig } from '../utils'; +import { getConfigFileName } from '../getConfigFileName'; + +import pkg from '../../package.json'; + +async function createConfig( + { + configName, + config, + configFileName = GLOB_CONFIG_FILE_NAME, + }: { configName: string; config: any; configFileName?: string } = { configName: '', config: {} } +) { + try { + const windowConf = `window.${configName}`; + // Ensure that the variable will not be modified + const configStr = `${windowConf}=${JSON.stringify(config)}; + Object.freeze(${windowConf}); + Object.defineProperty(window, "${configName}", { + configurable: false, + writable: false, + }); + `.replace(/\s/g, ''); + await fs.mkdirp(getRootPath(OUTPUT_DIR)); + fs.writeFileSync(getRootPath(`${OUTPUT_DIR}/${configFileName}`), configStr); + + console.log(chalk.cyan(`✨ [${pkg.name}]`) + ` - configuration file is build successfully:`); + console.log(chalk.gray(OUTPUT_DIR + '/' + chalk.green(configFileName)) + '\n'); + } catch (error) { + console.log(chalk.red('configuration file configuration file failed to package:\n' + error)); + } +} + +export async function runBuildConfig() { + const config = getEnvConfig(); + const configFileName = getConfigFileName(config); + await createConfig({ config, configName: configFileName }); +} diff --git a/web/build/script/postBuild.ts b/web/build/script/postBuild.ts new file mode 100644 index 0000000..441a09a --- /dev/null +++ b/web/build/script/postBuild.ts @@ -0,0 +1,23 @@ +// #!/usr/bin/env node + +import { runBuildConfig } from './buildConf'; +import chalk from 'chalk'; +import process from 'node:process' +import pkg from '../../package.json'; + +export const runBuild = async () => { + try { + const argvList = process.argv.splice(2); + + // Generate configuration file + if (!argvList.includes('disabled-config')) { + await runBuildConfig(); + } + + console.log(`✨ ${chalk.cyan(`[${pkg.name}]`)}` + ' - build successfully!'); + } catch (error) { + console.log(chalk.red('vite build error:\n' + error)); + process.exit(1); + } +}; +runBuild().then(); diff --git a/web/build/utils.ts b/web/build/utils.ts new file mode 100644 index 0000000..9653cea --- /dev/null +++ b/web/build/utils.ts @@ -0,0 +1,71 @@ +import fs from 'fs'; +import path from 'path'; +import dotenv from 'dotenv'; + +export function isDevFn(mode: string): boolean { + return mode === 'development'; +} + +export function isProdFn(mode: string): boolean { + return mode === 'production'; +} + +/** + * Whether to generate package preview + */ +export function isReportMode(): boolean { + return process.env.REPORT === 'true'; +} + +// Read all environment variable configuration files to process.env +export function wrapperEnv(envConf: Recordable): ViteEnv { + const ret: any = {}; + + for (const envName of Object.keys(envConf)) { + let realName = envConf[envName].replace(/\\n/g, '\n'); + realName = realName === 'true' ? true : realName === 'false' ? false : realName; + + if (envName === 'VITE_PORT') { + realName = Number(realName); + } + if (envName === 'VITE_PROXY') { + try { + realName = JSON.parse(realName); + } catch (error) {} + } + ret[envName] = realName; + // process.env[envName] = realName; + } + return ret; +} + +/** + * Get the environment variables starting with the specified prefix + * @param match prefix + * @param confFiles ext + */ +export function getEnvConfig(match = 'VITE_GLOB_', confFiles = ['.env', '.env.production']) { + let envConfig = {}; + confFiles.forEach((item) => { + try { + const env = dotenv.parse(fs.readFileSync(path.resolve(process.cwd(), item))); + envConfig = { ...envConfig, ...env }; + } catch (error) {} + }); + + Object.keys(envConfig).forEach((key) => { + const reg = new RegExp(`^(${match})`); + if (!reg.test(key)) { + Reflect.deleteProperty(envConfig, key); + } + }); + return envConfig; +} + +/** + * Get member root directory + * @param dir file path + */ +export function getRootPath(...dir: string[]) { + return path.resolve(process.cwd(), ...dir); +} diff --git a/web/build/vite/plugin/compress.ts b/web/build/vite/plugin/compress.ts new file mode 100644 index 0000000..9563679 --- /dev/null +++ b/web/build/vite/plugin/compress.ts @@ -0,0 +1,35 @@ +/** + * Used to package and output gzip. Note that this does not work properly in Vite, the specific reason is still being investigated + * https://github.com/anncwb/vite-plugin-compression + */ +import type { Plugin } from 'vite'; + +import compressPlugin from 'vite-plugin-compression'; + +export function configCompressPlugin( + compress: 'gzip' | 'brotli' | 'none', + deleteOriginFile = false +): Plugin | Plugin[] { + const compressList = compress.split(','); + + const plugins: Plugin[] = []; + + if (compressList.includes('gzip')) { + plugins.push( + compressPlugin({ + ext: '.gz', + deleteOriginFile, + }) + ); + } + if (compressList.includes('brotli')) { + plugins.push( + compressPlugin({ + ext: '.br', + algorithm: 'brotliCompress', + deleteOriginFile, + }) + ); + } + return plugins; +} diff --git a/web/build/vite/plugin/html.ts b/web/build/vite/plugin/html.ts new file mode 100644 index 0000000..ef744d8 --- /dev/null +++ b/web/build/vite/plugin/html.ts @@ -0,0 +1,38 @@ +/** + * Plugin to minimize and use ejs template syntax in index.html. + * https://github.com/anncwb/vite-plugin-html + */ +import { createHtmlPlugin } from 'vite-plugin-html'; +import pkg from '../../../package.json'; +import { GLOB_CONFIG_FILE_NAME } from '../../constant'; + +export function configHtmlPlugin(env: ViteEnv, isBuild: boolean) { + const { VITE_GLOB_APP_TITLE, VITE_PUBLIC_PATH } = env; + + const path = VITE_PUBLIC_PATH.endsWith('/') ? VITE_PUBLIC_PATH : `${VITE_PUBLIC_PATH}/`; + + const getAppConfigSrc = () => { + return `${path || '/'}${GLOB_CONFIG_FILE_NAME}?v=${pkg.version}-${new Date().getTime()}`; + }; + + return createHtmlPlugin({ + minify: isBuild, + inject: { + // Inject data into ejs template + data: { + title: VITE_GLOB_APP_TITLE, + }, + // Embed the generated app.config.js file + tags: isBuild + ? [ + { + tag: 'script', + attrs: { + src: getAppConfigSrc(), + }, + }, + ] + : [], + }, + }); +} diff --git a/web/build/vite/plugin/index.ts b/web/build/vite/plugin/index.ts new file mode 100644 index 0000000..a28d808 --- /dev/null +++ b/web/build/vite/plugin/index.ts @@ -0,0 +1,61 @@ +import type { Plugin } from 'vite'; +import Components from 'unplugin-vue-components/vite'; +import { NaiveUiResolver } from 'unplugin-vue-components/resolvers'; +import AutoImport from 'unplugin-auto-import/vite'; +import topLevelAwait from 'vite-plugin-top-level-await'; +import setupExtend from 'vite-plugin-vue-setup-extend'; +import vue from '@vitejs/plugin-vue'; +import vueJsx from '@vitejs/plugin-vue-jsx'; +import { configHtmlPlugin } from './html'; +import { configCompressPlugin } from './compress'; + +export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) { + const { VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE } = viteEnv; + + const vitePlugins: (Plugin | Plugin[])[] = [ + // have to + vue(), + // have to + vueJsx(), + + // 按需引入NaiveUi且自动创建组件声明 + Components({ + dts: true, + resolvers: [NaiveUiResolver()], + }), + + // 自动引入API + AutoImport({ + imports: [ + 'vue', + 'vue-router', + { + '@/locale/index': ['t'], + }, + ], + dts: 'auto-imports.d.ts', + }), + + // 支持顶级wait + topLevelAwait({ + // The export name of top-level await promise for each chunk module + promiseExportName: '__tla', + // The function to generate import names of top-level await promise in each chunk module + promiseImportName: (i) => `__tla_${i}`, + }), + ]; + + // vite-plugin-html + vitePlugins.push(configHtmlPlugin(viteEnv, isBuild)); + + if (isBuild) { + // rollup-plugin-gzip + vitePlugins.push( + configCompressPlugin(VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE) + ); + } + + vitePlugins.push(setupExtend()); + + return vitePlugins; +} diff --git a/web/build/vite/plugin/styleImport.ts b/web/build/vite/plugin/styleImport.ts new file mode 100644 index 0000000..f09d35d --- /dev/null +++ b/web/build/vite/plugin/styleImport.ts @@ -0,0 +1,22 @@ +/** + * Introduces component library styles on demand. + * https://github.com/anncwb/vite-plugin-style-import + */ + +import styleImport from 'vite-plugin-style-import'; + +export function configStyleImportPlugin(isBuild: boolean) { + if (!isBuild) return []; + const styleImportPlugin = styleImport({ + libs: [ + { + libraryName: 'ant-design-vue', + esModule: true, + resolveStyle: (name) => { + return `ant-design-vue/es/${name}/style/index`; + }, + }, + ], + }); + return styleImportPlugin; +} diff --git a/web/build/vite/proxy.ts b/web/build/vite/proxy.ts new file mode 100644 index 0000000..dc23646 --- /dev/null +++ b/web/build/vite/proxy.ts @@ -0,0 +1,34 @@ +/** + * Used to parse the .env.development proxy configuration + */ +import type { ProxyOptions } from 'vite'; + +type ProxyItem = [string, string]; + +type ProxyList = ProxyItem[]; + +type ProxyTargetList = Record string }>; + +const httpsRE = /^https:\/\//; + +/** + * Generate proxy + * @param list + */ +export function createProxy(list: ProxyList = []) { + const ret: ProxyTargetList = {}; + for (const [prefix, target] of list) { + const isHttps = httpsRE.test(target); + + // https://github.com/http-party/node-http-proxy#options + ret[prefix] = { + target: target, + changeOrigin: true, + ws: true, + rewrite: (path) => path.replace(new RegExp(`^${prefix}`), ''), + // https is require secure=false + ...(isHttps ? { secure: false } : {}), + }; + } + return ret; +} diff --git a/web/commitlint.config.js b/web/commitlint.config.js new file mode 100644 index 0000000..7189e8f --- /dev/null +++ b/web/commitlint.config.js @@ -0,0 +1,57 @@ +module.exports = { + ignores: [(commit) => commit.includes('init')], + extends: ['@commitlint/config-conventional'], + parserPreset: { + parserOpts: { + headerPattern: /^(\w*|[\u4e00-\u9fa5]*)(?:[\(\(](.*)[\)\)])?[\:\:] (.*)/, + headerCorrespondence: ['type', 'scope', 'subject'], + referenceActions: [ + 'close', + 'closes', + 'closed', + 'fix', + 'fixes', + 'fixed', + 'resolve', + 'resolves', + 'resolved', + ], + issuePrefixes: ['#'], + noteKeywords: ['BREAKING CHANGE'], + fieldPattern: /^-(.*?)-$/, + revertPattern: /^Revert\s"([\s\S]*)"\s*This reverts commit (\w*)\./, + revertCorrespondence: ['header', 'hash'], + warn() {}, + mergePattern: null, + mergeCorrespondence: null, + }, + }, + rules: { + 'body-leading-blank': [2, 'always'], + 'footer-leading-blank': [1, 'always'], + 'header-max-length': [2, 'always', 108], + 'subject-empty': [2, 'never'], + 'type-empty': [2, 'never'], + 'type-enum': [ + 2, + 'always', + [ + 'feat', + 'fix', + 'perf', + 'style', + 'docs', + 'test', + 'refactor', + 'build', + 'ci', + 'chore', + 'revert', + 'wip', + 'workflow', + 'types', + 'release', + ], + ], + }, +}; diff --git a/web/eslint.config.js b/web/eslint.config.js new file mode 100644 index 0000000..a4eb964 --- /dev/null +++ b/web/eslint.config.js @@ -0,0 +1,104 @@ +import parser from 'vue-eslint-parser'; +import { FlatCompat } from '@eslint/eslintrc'; + +const compat = new FlatCompat(); + +export default [ + { + ignores: [ + '**/*.sh', + '**/node_modules', + '**/*.md', + '**/*.woff', + '**/*.ttf', + '**/.vscode', + '**/.idea', + '**/dist', + 'public', + 'docs', + '**/.husky', + '**/.local', + 'bin', + '**/Dockerfile', + '**/components.d.ts', + ], + }, + ...compat.extends( + 'plugin:vue/vue3-recommended', + 'plugin:@typescript-eslint/recommended', + 'prettier', + 'plugin:prettier/recommended' + ), + { + languageOptions: { + parser: parser, + ecmaVersion: 2020, + sourceType: 'module', + parserOptions: { + parser: '@typescript-eslint/parser', + jsxPragma: 'React', + ecmaFeatures: { + jsx: true, + }, + }, + }, + rules: { + 'vue/script-setup-uses-vars': 'error', + '@typescript-eslint/ban-ts-ignore': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/no-empty-function': 'off', + 'vue/custom-event-name-casing': 'off', + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + varsIgnorePattern: '.*', + args: 'none', + }, + ], + 'no-unused-vars': [ + 'error', + { + varsIgnorePattern: '.*', + args: 'none', + }, + ], + 'space-before-function-paren': 'off', + 'vue/multi-word-component-names': 'off', + 'vue/attributes-order': 'off', + 'vue/one-component-per-file': 'off', + 'vue/html-closing-bracket-newline': 'off', + 'vue/max-attributes-per-line': 'off', + 'vue/multiline-html-element-content-newline': 'off', + 'vue/singleline-html-element-content-newline': 'off', + 'vue/attribute-hyphenation': 'off', + 'vue/require-default-prop': 'off', + 'vue/html-self-closing': [ + 'error', + { + html: { + void: 'always', + normal: 'never', + component: 'always', + }, + svg: 'always', + math: 'always', + }, + ], + '@typescript-eslint/no-this-alias': [ + 'error', + { + allowDestructuring: false, + allowedNames: ['that'], + }, + ], + }, + }, +]; diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..a838df0 --- /dev/null +++ b/web/index.html @@ -0,0 +1,123 @@ + + + + + + + + + <%= title %> + + + +
+ +
+
+ +
+
+
+ + + + + diff --git a/web/package.json b/web/package.json new file mode 100644 index 0000000..d583959 --- /dev/null +++ b/web/package.json @@ -0,0 +1,171 @@ +{ + "name": "hotgo", + "type": "module", + "version": "2.18.9", + "author": { + "name": "MengShuai", + "email": "133814250@qq.com", + "url": "https://github.com/bufanyun/hotgo" + }, + "private": true, + "scripts": { + "bootstrap": "pnpm install", + "serve": "pnpm run dev", + "dev": "vite", + "build": "vite build && esno ./build/script/postBuild.ts", + "build:no-cache": "pnpm clean:cache && pnpm run build", + "report": "cross-env REPORT=true pnpm run build", + "preview": "pnpm run build && vite preview", + "preview:dist": "vite preview", + "clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite", + "clean:lib": "rimraf node_modules", + "deploy": "gh-pages -d dist", + "lint:eslint": "eslint \"{src,mock}/**/*.{vue,ts,tsx}\" --fix", + "lint:prettier": "prettier --write --loglevel warn \"src/**/*.{js,json,tsx,css,less,scss,vue,html,md}\"", + "lint:stylelint": "stylelint --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/", + "lint:lint-staged": "lint-staged -c ./.husky/lintstagedrc.js", + "lint:pretty": "pretty-quick --staged", + "build typecheck": "vuedx-typecheck . && vite build", + "test prod gzip": "http-server dist --cors --gzip -c-1" + }, + "dependencies": { + "@codemirror/basic-setup": "^0.20.0", + "@codemirror/lang-yaml": "^6.1.2", + "@codemirror/state": "^6.5.2", + "@codemirror/theme-one-dark": "^6.1.3", + "@codemirror/view": "^6.38.2", + "@vicons/antd": "^0.12.0", + "@vicons/ionicons5": "^0.12.0", + "@vue/runtime-core": "^3.4.38", + "@vueup/vue-quill": "^1.2.0", + "@vueuse/core": "^11.0.3", + "axios": "^1.7.7", + "blueimp-md5": "^2.19.0", + "codemirror": "^6.0.2", + "date-fns": "^3.6.0", + "echarts": "^5.5.1", + "element-resize-detector": "^1.2.4", + "fingerprintjs2": "^2.1.4", + "highlight.js": "^11.10.0", + "js-yaml": "^4.1.0", + "lodash-es": "^4.17.21", + "mint-filter": "^4.0.3", + "mitt": "^3.0.1", + "naive-ui": "^2.44.1", + "pinia": "^2.2.2", + "pinyin-pro": "^3.24.2", + "print-js": "^1.6.0", + "qrcode.vue": "3.4.1", + "qs": "^6.13.0", + "quill-image-uploader": "^1.3.0", + "quill-magic-url": "^4.2.0", + "spark-md5": "^3.0.2", + "throttle-debounce": "^5.0.2", + "vfonts": "^0.0.3", + "vue": "^3.4.38", + "vue-i18n": "^11.1.11", + "vue-router": "^4.4.3", + "vue-types": "^5.1.3", + "vue-waterfall-plugin-next": "^2.6.0", + "vue3-json-viewer": "^2.4.1", + "vuedraggable": "^4.1.0", + "weixin-js-sdk": "^1.6.5" + }, + "devDependencies": { + "@commitlint/cli": "^19.4.1", + "@commitlint/config-conventional": "^19.4.1", + "@eslint/eslintrc": "^3.1.0", + "@types/fs-extra": "^11.0.4", + "@types/js-yaml": "^4.0.9", + "@types/lodash-es": "^4.17.12", + "@types/node": "^22.5.2", + "@typescript-eslint/eslint-plugin": "^8.4.0", + "@typescript-eslint/parser": "^8.4.0", + "@vitejs/plugin-vue": "^5.1.3", + "@vitejs/plugin-vue-jsx": "^4.0.1", + "@vue/compiler-sfc": "^3.4.38", + "@vue/eslint-config-typescript": "^13.0.0", + "autoprefixer": "^10.4.20", + "chalk": "^5.3.0", + "commitizen": "^4.3.0", + "core-js": "^3.38.1", + "cross-env": "^7.0.3", + "crypto-js": "^4.2.0", + "dotenv": "^16.4.5", + "eslint": "^9.9.1", + "eslint-config-prettier": "^9.1.0", + "eslint-define-config": "2.1.0", + "eslint-plugin-jest": "^28.8.2", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-vue": "^9.28.0", + "esno": "^4.7.0", + "fs-extra": "^11.2.0", + "gh-pages": "^6.1.1", + "husky": "^9.1.5", + "jest": "^29.7.0", + "less": "^4.2.0", + "less-loader": "^12.2.0", + "lint-staged": "^15.2.10", + "mockjs": "^1.1.0", + "npm-check-updates": "^17.1.1", + "postcss": "^8.4.44", + "prettier": "^3.3.3", + "pretty-quick": "^4.0.0", + "rimraf": "^6.0.1", + "stylelint": "^16.9.0", + "stylelint-config-prettier": "^9.0.5", + "stylelint-config-standard": "^36.0.1", + "stylelint-order": "^6.0.4", + "stylelint-scss": "^6.5.1", + "tailwindcss": "^3.4.10", + "typescript": "^5.5.4", + "unplugin-auto-import": "^20.2.0", + "unplugin-vue-components": "^0.27.4", + "vite": "^5.4.2", + "vite-plugin-compression": "^0.5.1", + "vite-plugin-html": "^3.2.2", + "vite-plugin-mock": "^3.0.2", + "vite-plugin-require-transform": "^1.0.21", + "vite-plugin-style-import": "^2.0.0", + "vite-plugin-top-level-await": "^1.4.4", + "vite-plugin-vue-setup-extend": "^0.4.0", + "vue-demi": "^0.14.10", + "vue-draggable-next": "^2.2.1", + "vue-eslint-parser": "^9.4.3", + "vuedraggable": "^4.1.0" + }, + "lint-staged": { + "*.{vue,js,ts,tsx}": "eslint --fix" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-customizable" + } + }, + "keywords": [ + "hotgo", + "hg", + "gf", + "goframe", + "vue", + "naive-ui", + "naive-ui-admin", + "vue3", + "ts", + "tsx", + "admin", + "typescript" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/bufanyun/hotgo.git" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/bufanyun/hotgo/issues" + }, + "homepage": "https://github.com/bufanyun/hotgo", + "engines": { + "node": ">=16" + } +} diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml new file mode 100644 index 0000000..ec069a7 --- /dev/null +++ b/web/pnpm-lock.yaml @@ -0,0 +1,9803 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@codemirror/basic-setup': + specifier: ^0.20.0 + version: 0.20.0 + '@codemirror/lang-yaml': + specifier: ^6.1.2 + version: 6.1.2 + '@codemirror/state': + specifier: ^6.5.2 + version: 6.5.2 + '@codemirror/theme-one-dark': + specifier: ^6.1.3 + version: 6.1.3 + '@codemirror/view': + specifier: ^6.38.2 + version: 6.38.2 + '@vicons/antd': + specifier: ^0.12.0 + version: 0.12.0 + '@vicons/ionicons5': + specifier: ^0.12.0 + version: 0.12.0 + '@vue/runtime-core': + specifier: ^3.4.38 + version: 3.4.38 + '@vueup/vue-quill': + specifier: ^1.2.0 + version: 1.2.0(vue@3.4.38(typescript@5.5.4)) + '@vueuse/core': + specifier: ^11.0.3 + version: 11.0.3(vue@3.4.38(typescript@5.5.4)) + axios: + specifier: ^1.7.7 + version: 1.7.7 + blueimp-md5: + specifier: ^2.19.0 + version: 2.19.0 + codemirror: + specifier: ^6.0.2 + version: 6.0.2 + date-fns: + specifier: ^3.6.0 + version: 3.6.0 + echarts: + specifier: ^5.5.1 + version: 5.5.1 + element-resize-detector: + specifier: ^1.2.4 + version: 1.2.4 + fingerprintjs2: + specifier: ^2.1.4 + version: 2.1.4 + highlight.js: + specifier: ^11.10.0 + version: 11.10.0 + js-yaml: + specifier: ^4.1.0 + version: 4.1.0 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + mint-filter: + specifier: ^4.0.3 + version: 4.0.3 + mitt: + specifier: ^3.0.1 + version: 3.0.1 + naive-ui: + specifier: ^2.41.0 + version: 2.42.0(vue@3.4.38(typescript@5.5.4)) + pinia: + specifier: ^2.2.2 + version: 2.2.2(typescript@5.5.4)(vue@3.4.38(typescript@5.5.4)) + pinyin-pro: + specifier: ^3.24.2 + version: 3.24.2 + print-js: + specifier: ^1.6.0 + version: 1.6.0 + qrcode.vue: + specifier: 3.4.1 + version: 3.4.1(vue@3.4.38(typescript@5.5.4)) + qs: + specifier: ^6.13.0 + version: 6.13.0 + quill-image-uploader: + specifier: ^1.3.0 + version: 1.3.0(quill@1.3.7) + quill-magic-url: + specifier: ^4.2.0 + version: 4.2.0 + spark-md5: + specifier: ^3.0.2 + version: 3.0.2 + throttle-debounce: + specifier: ^5.0.2 + version: 5.0.2 + vfonts: + specifier: ^0.0.3 + version: 0.0.3 + vue: + specifier: ^3.4.38 + version: 3.4.38(typescript@5.5.4) + vue-router: + specifier: ^4.4.3 + version: 4.4.3(vue@3.4.38(typescript@5.5.4)) + vue-types: + specifier: ^5.1.3 + version: 5.1.3(vue@3.4.38(typescript@5.5.4)) + vue-waterfall-plugin-next: + specifier: ^2.6.0 + version: 2.6.0 + vue3-json-viewer: + specifier: ^2.2.2 + version: 2.2.2(vue@3.4.38(typescript@5.5.4)) + vuedraggable: + specifier: ^4.1.0 + version: 4.1.0(vue@3.4.38(typescript@5.5.4)) + weixin-js-sdk: + specifier: ^1.6.5 + version: 1.6.5 + devDependencies: + '@commitlint/cli': + specifier: ^19.4.1 + version: 19.4.1(@types/node@22.5.2)(typescript@5.5.4) + '@commitlint/config-conventional': + specifier: ^19.4.1 + version: 19.4.1 + '@eslint/eslintrc': + specifier: ^3.1.0 + version: 3.1.0 + '@types/fs-extra': + specifier: ^11.0.4 + version: 11.0.4 + '@types/js-yaml': + specifier: ^4.0.9 + version: 4.0.9 + '@types/lodash-es': + specifier: ^4.17.12 + version: 4.17.12 + '@types/node': + specifier: ^22.5.2 + version: 22.5.2 + '@typescript-eslint/eslint-plugin': + specifier: ^8.4.0 + version: 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/parser': + specifier: ^8.4.0 + version: 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@vitejs/plugin-vue': + specifier: ^5.1.3 + version: 5.1.3(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) + '@vitejs/plugin-vue-jsx': + specifier: ^4.0.1 + version: 4.0.1(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)) + '@vue/compiler-sfc': + specifier: ^3.4.38 + version: 3.4.38 + '@vue/eslint-config-typescript': + specifier: ^13.0.0 + version: 13.0.0(eslint-plugin-vue@9.28.0(eslint@9.9.1(jiti@1.21.6)))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.44) + chalk: + specifier: ^5.3.0 + version: 5.3.0 + commitizen: + specifier: ^4.3.0 + version: 4.3.0(@types/node@22.5.2)(typescript@5.5.4) + core-js: + specifier: ^3.38.1 + version: 3.38.1 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + crypto-js: + specifier: ^4.2.0 + version: 4.2.0 + dotenv: + specifier: ^16.4.5 + version: 16.4.5 + eslint: + specifier: ^9.9.1 + version: 9.9.1(jiti@1.21.6) + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@9.9.1(jiti@1.21.6)) + eslint-define-config: + specifier: 2.1.0 + version: 2.1.0 + eslint-plugin-jest: + specifier: ^28.8.2 + version: 28.8.2(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)))(typescript@5.5.4) + eslint-plugin-prettier: + specifier: ^5.2.1 + version: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.9.1(jiti@1.21.6)))(eslint@9.9.1(jiti@1.21.6))(prettier@3.3.3) + eslint-plugin-vue: + specifier: ^9.28.0 + version: 9.28.0(eslint@9.9.1(jiti@1.21.6)) + esno: + specifier: ^4.7.0 + version: 4.7.0 + fs-extra: + specifier: ^11.2.0 + version: 11.2.0 + gh-pages: + specifier: ^6.1.1 + version: 6.1.1 + husky: + specifier: ^9.1.5 + version: 9.1.5 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)) + less: + specifier: ^4.2.0 + version: 4.2.0 + less-loader: + specifier: ^12.2.0 + version: 12.2.0(less@4.2.0)(webpack@5.94.0(@swc/core@1.7.23)(esbuild@0.23.1)) + lint-staged: + specifier: ^15.2.10 + version: 15.2.10 + mockjs: + specifier: ^1.1.0 + version: 1.1.0 + npm-check-updates: + specifier: ^17.1.1 + version: 17.1.1 + postcss: + specifier: ^8.4.44 + version: 8.4.44 + prettier: + specifier: ^3.3.3 + version: 3.3.3 + pretty-quick: + specifier: ^4.0.0 + version: 4.0.0(prettier@3.3.3) + rimraf: + specifier: ^6.0.1 + version: 6.0.1 + stylelint: + specifier: ^16.9.0 + version: 16.9.0(typescript@5.5.4) + stylelint-config-prettier: + specifier: ^9.0.5 + version: 9.0.5(stylelint@16.9.0(typescript@5.5.4)) + stylelint-config-standard: + specifier: ^36.0.1 + version: 36.0.1(stylelint@16.9.0(typescript@5.5.4)) + stylelint-order: + specifier: ^6.0.4 + version: 6.0.4(stylelint@16.9.0(typescript@5.5.4)) + stylelint-scss: + specifier: ^6.5.1 + version: 6.5.1(stylelint@16.9.0(typescript@5.5.4)) + tailwindcss: + specifier: ^3.4.10 + version: 3.4.10(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)) + typescript: + specifier: ^5.5.4 + version: 5.5.4 + unplugin-vue-components: + specifier: ^0.27.4 + version: 0.27.4(@babel/parser@7.25.6)(rollup@4.21.2)(vue@3.4.38(typescript@5.5.4)) + vite: + specifier: ^5.4.2 + version: 5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6) + vite-plugin-compression: + specifier: ^0.5.1 + version: 0.5.1(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6)) + vite-plugin-html: + specifier: ^3.2.2 + version: 3.2.2(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6)) + vite-plugin-mock: + specifier: ^3.0.2 + version: 3.0.2(esbuild@0.23.1)(mockjs@1.1.0)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6)) + vite-plugin-require-transform: + specifier: ^1.0.21 + version: 1.0.21 + vite-plugin-style-import: + specifier: ^2.0.0 + version: 2.0.0(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6)) + vite-plugin-top-level-await: + specifier: ^1.4.4 + version: 1.4.4(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6)) + vite-plugin-vue-setup-extend: + specifier: ^0.4.0 + version: 0.4.0(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6)) + vue-demi: + specifier: ^0.14.10 + version: 0.14.10(vue@3.4.38(typescript@5.5.4)) + vue-draggable-next: + specifier: ^2.2.1 + version: 2.2.1(sortablejs@1.14.0)(vue@3.4.38(typescript@5.5.4)) + vue-eslint-parser: + specifier: ^9.4.3 + version: 9.4.3(eslint@9.9.1(jiti@1.21.6)) + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.25.4': + resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.25.2': + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.6': + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.24.7': + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.2': + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.25.4': + resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-member-expression-to-functions@7.24.8': + resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.22.15': + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.24.7': + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.24.8': + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.25.0': + resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.8': + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.25.6': + resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.25.6': + resolution: {integrity: sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.25.4': + resolution: {integrity: sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.25.2': + resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.6': + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.6': + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@codemirror/autocomplete@0.20.3': + resolution: {integrity: sha512-lYB+NPGP+LEzAudkWhLfMxhTrxtLILGl938w+RcFrGdrIc54A+UgmCoz+McE3IYRFp4xyQcL4uFJwo+93YdgHw==} + + '@codemirror/autocomplete@6.18.7': + resolution: {integrity: sha512-8EzdeIoWPJDsMBwz3zdzwXnUpCzMiCyz5/A3FIPpriaclFCGDkAzK13sMcnsu5rowqiyeQN2Vs2TsOcoDPZirQ==} + + '@codemirror/basic-setup@0.20.0': + resolution: {integrity: sha512-W/ERKMLErWkrVLyP5I8Yh8PXl4r+WFNkdYVSzkXYPQv2RMPSkWpr2BgggiSJ8AHF/q3GuApncDD8I4BZz65fyg==} + deprecated: In version 6.0, this package has been renamed to just 'codemirror' + + '@codemirror/commands@0.20.0': + resolution: {integrity: sha512-v9L5NNVA+A9R6zaFvaTbxs30kc69F6BkOoiEbeFw4m4I0exmDEKBILN6mK+GksJtvTzGBxvhAPlVFTdQW8GB7Q==} + + '@codemirror/commands@6.8.1': + resolution: {integrity: sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==} + + '@codemirror/lang-yaml@6.1.2': + resolution: {integrity: sha512-dxrfG8w5Ce/QbT7YID7mWZFKhdhsaTNOYjOkSIMt1qmC4VQnXSDSYVHHHn8k6kJUfIhtLo8t1JJgltlxWdsITw==} + + '@codemirror/language@0.20.2': + resolution: {integrity: sha512-WB3Bnuusw0xhVvhBocieYKwJm04SOk5bPoOEYksVHKHcGHFOaYaw+eZVxR4gIqMMcGzOIUil0FsCmFk8yrhHpw==} + + '@codemirror/language@6.11.3': + resolution: {integrity: sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA==} + + '@codemirror/lint@0.20.3': + resolution: {integrity: sha512-06xUScbbspZ8mKoODQCEx6hz1bjaq9m8W8DxdycWARMiiX1wMtfCh/MoHpaL7ws/KUMwlsFFfp2qhm32oaCvVA==} + + '@codemirror/lint@6.8.5': + resolution: {integrity: sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==} + + '@codemirror/search@0.20.1': + resolution: {integrity: sha512-ROe6gRboQU5E4z6GAkNa2kxhXqsGNbeLEisbvzbOeB7nuDYXUZ70vGIgmqPu0tB+1M3F9yWk6W8k2vrFpJaD4Q==} + + '@codemirror/search@6.5.11': + resolution: {integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==} + + '@codemirror/state@0.20.1': + resolution: {integrity: sha512-ms0tlV5A02OK0pFvTtSUGMLkoarzh1F8mr6jy1cD7ucSC2X/VLHtQCxfhdSEGqTYlQF2hoZtmLv+amqhdgbwjQ==} + + '@codemirror/state@6.5.2': + resolution: {integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==} + + '@codemirror/theme-one-dark@6.1.3': + resolution: {integrity: sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==} + + '@codemirror/view@0.20.7': + resolution: {integrity: sha512-pqEPCb9QFTOtHgAH5XU/oVy9UR/Anj6r+tG5CRmkNVcqSKEPmBU05WtN/jxJCFZBXf6HumzWC9ydE4qstO3TxQ==} + + '@codemirror/view@6.38.2': + resolution: {integrity: sha512-bTWAJxL6EOFLPzTx+O5P5xAO3gTqpatQ2b/ARQ8itfU/v2LlpS3pH2fkL0A3E/Fx8Y2St2KES7ZEV0sHTsSW/A==} + + '@commitlint/cli@19.4.1': + resolution: {integrity: sha512-EerFVII3ZcnhXsDT9VePyIdCJoh3jEzygN1L37MjQXgPfGS6fJTWL/KHClVMod1d8w94lFC3l4Vh/y5ysVAz2A==} + engines: {node: '>=v18'} + hasBin: true + + '@commitlint/config-conventional@19.4.1': + resolution: {integrity: sha512-D5S5T7ilI5roybWGc8X35OBlRXLAwuTseH1ro0XgqkOWrhZU8yOwBOslrNmSDlTXhXLq8cnfhQyC42qaUCzlXA==} + engines: {node: '>=v18'} + + '@commitlint/config-validator@19.0.3': + resolution: {integrity: sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==} + engines: {node: '>=v18'} + + '@commitlint/ensure@19.0.3': + resolution: {integrity: sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ==} + engines: {node: '>=v18'} + + '@commitlint/execute-rule@19.0.0': + resolution: {integrity: sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==} + engines: {node: '>=v18'} + + '@commitlint/format@19.3.0': + resolution: {integrity: sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg==} + engines: {node: '>=v18'} + + '@commitlint/is-ignored@19.2.2': + resolution: {integrity: sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g==} + engines: {node: '>=v18'} + + '@commitlint/lint@19.4.1': + resolution: {integrity: sha512-Ws4YVAZ0jACTv6VThumITC1I5AG0UyXMGua3qcf55JmXIXm/ejfaVKykrqx7RyZOACKVAs8uDRIsEsi87JZ3+Q==} + engines: {node: '>=v18'} + + '@commitlint/load@19.4.0': + resolution: {integrity: sha512-I4lCWaEZYQJ1y+Y+gdvbGAx9pYPavqZAZ3/7/8BpWh+QjscAn8AjsUpLV2PycBsEx7gupq5gM4BViV9xwTIJuw==} + engines: {node: '>=v18'} + + '@commitlint/message@19.0.0': + resolution: {integrity: sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw==} + engines: {node: '>=v18'} + + '@commitlint/parse@19.0.3': + resolution: {integrity: sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==} + engines: {node: '>=v18'} + + '@commitlint/read@19.4.0': + resolution: {integrity: sha512-r95jLOEZzKDakXtnQub+zR3xjdnrl2XzerPwm7ch1/cc5JGq04tyaNpa6ty0CRCWdVrk4CZHhqHozb8yZwy2+g==} + engines: {node: '>=v18'} + + '@commitlint/resolve-extends@19.1.0': + resolution: {integrity: sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg==} + engines: {node: '>=v18'} + + '@commitlint/rules@19.4.1': + resolution: {integrity: sha512-AgctfzAONoVxmxOXRyxXIq7xEPrd7lK/60h2egp9bgGUMZK9v0+YqLOA+TH+KqCa63ZoCr8owP2YxoSSu7IgnQ==} + engines: {node: '>=v18'} + + '@commitlint/to-lines@19.0.0': + resolution: {integrity: sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw==} + engines: {node: '>=v18'} + + '@commitlint/top-level@19.0.0': + resolution: {integrity: sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ==} + engines: {node: '>=v18'} + + '@commitlint/types@19.0.3': + resolution: {integrity: sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==} + engines: {node: '>=v18'} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@css-render/plugin-bem@0.15.14': + resolution: {integrity: sha512-QK513CJ7yEQxm/P3EwsI+d+ha8kSOcjGvD6SevM41neEMxdULE+18iuQK6tEChAWMOQNQPLG/Rw3Khb69r5neg==} + peerDependencies: + css-render: ~0.15.14 + + '@css-render/vue3-ssr@0.15.14': + resolution: {integrity: sha512-//8027GSbxE9n3QlD73xFY6z4ZbHbvrOVB7AO6hsmrEzGbg+h2A09HboUyDgu+xsmj7JnvJD39Irt+2D0+iV8g==} + peerDependencies: + vue: ^3.0.11 + + '@csstools/css-parser-algorithms@3.0.1': + resolution: {integrity: sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.1 + + '@csstools/css-tokenizer@3.0.1': + resolution: {integrity: sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==} + engines: {node: '>=18'} + + '@csstools/media-query-list-parser@3.0.1': + resolution: {integrity: sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.1 + '@csstools/css-tokenizer': ^3.0.1 + + '@csstools/selector-specificity@4.0.0': + resolution: {integrity: sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^6.1.0 + + '@dual-bundle/import-meta-resolve@4.1.0': + resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} + + '@emotion/hash@0.8.0': + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.9.1': + resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.0': + resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + engines: {node: '>=18.18'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@juggle/resize-observer@3.4.0': + resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} + + '@lezer/common@0.16.1': + resolution: {integrity: sha512-qPmG7YTZ6lATyTOAWf8vXE+iRrt1NJd4cm2nJHK+v7X9TsOF6+HtuU/ctaZy2RCrluxDb89hI6KWQ5LfQGQWuA==} + + '@lezer/common@1.2.3': + resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} + + '@lezer/highlight@0.16.0': + resolution: {integrity: sha512-iE5f4flHlJ1g1clOStvXNLbORJoiW4Kytso6ubfYzHnaNo/eo5SKhxs4wv/rtvwZQeZrK3we8S9SyA7OGOoRKQ==} + + '@lezer/highlight@1.2.1': + resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==} + + '@lezer/lr@0.16.3': + resolution: {integrity: sha512-pau7um4eAw94BEuuShUIeQDTf3k4Wt6oIUOYxMmkZgDHdqtIcxWND4LRxi8nI9KuT4I1bXQv67BCapkxt7Ywqw==} + + '@lezer/lr@1.4.2': + resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} + + '@lezer/yaml@1.0.3': + resolution: {integrity: sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA==} + + '@marijn/find-cluster-break@1.0.2': + resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@rollup/plugin-virtual@3.0.2': + resolution: {integrity: sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@4.2.1': + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.21.2': + resolution: {integrity: sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.21.2': + resolution: {integrity: sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.21.2': + resolution: {integrity: sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.21.2': + resolution: {integrity: sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.21.2': + resolution: {integrity: sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.21.2': + resolution: {integrity: sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.21.2': + resolution: {integrity: sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.21.2': + resolution: {integrity: sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': + resolution: {integrity: sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.21.2': + resolution: {integrity: sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.21.2': + resolution: {integrity: sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.21.2': + resolution: {integrity: sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.21.2': + resolution: {integrity: sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.21.2': + resolution: {integrity: sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.21.2': + resolution: {integrity: sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.21.2': + resolution: {integrity: sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==} + cpu: [x64] + os: [win32] + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@swc/core-darwin-arm64@1.7.23': + resolution: {integrity: sha512-yyOHPfti6yKlQulfVWMt7BVKst+SyEZYCWuQSGMn1KgmNCH/bYufRWfQXIhkGSj44ZkEepJmsJ8tDyIb4k5WyA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.7.23': + resolution: {integrity: sha512-GzqHwQ0Y1VyjdI/bBKFX2GKm5HD3PIB6OhuAQtWZMTtEr2yIrlT0YK2T+XKh7oIg31JwxGBeQdBk3KTI7DARmQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.7.23': + resolution: {integrity: sha512-qwX4gB41OS6/OZkHcpTqLFGsdmvoZyffnJIlgB/kZKwH3lfeJWzv6vx57zXtNpM/t7GoQEe0VZUVdmNjxSxBZw==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.7.23': + resolution: {integrity: sha512-TsrbUZdMaUwzI7+g/8rHPLWbntMKYSu5Bn5IBSqVKPeyqaXxNnlIUnWXgXcUcRAc+T+Y8ADfr7EiFz9iz5DuSA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.7.23': + resolution: {integrity: sha512-JEdtwdthazKq4PBz53KSubwwK8MvqODAihGSAzc8u3Unq4ojcvaS8b0CwLBeD+kTQ78HpxOXTt3DsFIxpgaCAA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.7.23': + resolution: {integrity: sha512-V51gFPWaVAHbI1yg9ahsoya3aB4uawye3SZ5uQWgcP7wdCdiv60dw4F5nuPJf5Z1oXD3U/BslXuamv8Oh9vXqQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.7.23': + resolution: {integrity: sha512-BBqQi4+UdeRqag3yM4IJjaHG4yc1o3l9ksENHToE0o/u2DT0FY5+K/DiYGZLC1JHbSFzNqRCYsa7DIzRtZ0A1A==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.7.23': + resolution: {integrity: sha512-JPk6pvCKncL6bXG7p+NLZf8PWx4FakVvKNdwGeMrYunb+yk1IZf7qf9LJk8+GDGF5QviDXPs8opZrTrfsW80fA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.7.23': + resolution: {integrity: sha512-2Whxi8d+bLQBzJcQ5qYPHlk02YYVGsMVav0fWk+FnX2z1QRREIu1L1xvrpi7gBpjXp6BIU40ya8GiKeekNT2bg==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.7.23': + resolution: {integrity: sha512-82fARk4/yJ40kwWKY/gdKDisPdtgJE9jgpl/vkNG3alyJxrCzuNM7+CtiKoYbXLeqM8GQTS3wlvCaJu9oQ8dag==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.7.23': + resolution: {integrity: sha512-VDNkpDvDlreGh2E3tlDj8B3piiuLhhQA/7rIVZpiLUvG1YpucAa6N7iDXA7Gc/+Hah8spaCg/qvEaBkCmcIYCQ==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.12': + resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/conventional-commits-parser@5.0.0': + resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/fs-extra@11.0.4': + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/js-yaml@4.0.9': + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/jsonfile@6.1.4': + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + + '@types/katex@0.16.7': + resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} + + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + + '@types/lodash@4.17.7': + resolution: {integrity: sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==} + + '@types/node@22.5.2': + resolution: {integrity: sha512-acJsPTEqYqulZS/Yp/S3GgeE6GZ0qYODUR8aVr/DkhHQ8l9nd4j5x1/ZJy9/gHrRlFMqkO6i0I3E27Alu4jjPg==} + + '@types/quill@2.0.14': + resolution: {integrity: sha512-zvoXCRnc2Dl8g+7/9VSAmRWPN6oH+MVhTPizmCR+GJCITplZ5VRVzMs4+a/nOE3yzNwEZqylJJrMB07bwbM1/g==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/web-bluetooth@0.0.20': + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/eslint-plugin@8.4.0': + resolution: {integrity: sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@8.4.0': + resolution: {integrity: sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/scope-manager@8.4.0': + resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/type-utils@8.4.0': + resolution: {integrity: sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/types@8.4.0': + resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@8.4.0': + resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/utils@8.4.0': + resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/visitor-keys@8.4.0': + resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vicons/antd@0.12.0': + resolution: {integrity: sha512-C0p6aO1EmGG1QHrqgUWQS1No20934OdWSRQshM5NIDK5H1On6tC26U0hT6Rmp40KfUsvhvX5YW8BoWJdNFifPg==} + + '@vicons/ionicons5@0.12.0': + resolution: {integrity: sha512-Iy1EUVRpX0WWxeu1VIReR1zsZLMc4fqpt223czR+Rpnrwu7pt46nbnC2ycO7ItI/uqDLJxnbcMC7FujKs9IfFA==} + + '@vitejs/plugin-vue-jsx@4.0.1': + resolution: {integrity: sha512-7mg9HFGnFHMEwCdB6AY83cVK4A6sCqnrjFYF4WIlebYAQVVJ/sC/CiTruVdrRlhrFoeZ8rlMxY9wYpPTIRhhAg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.0.0 + + '@vitejs/plugin-vue@5.1.3': + resolution: {integrity: sha512-3xbWsKEKXYlmX82aOHufFQVnkbMC/v8fLpWwh6hWOUrK5fbbtBh9Q/WWse27BFgSy2/e2c0fz5Scgya9h2GLhw==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + + '@vue/babel-helper-vue-transform-on@1.2.2': + resolution: {integrity: sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==} + + '@vue/babel-plugin-jsx@1.2.2': + resolution: {integrity: sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.2.2': + resolution: {integrity: sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.4.38': + resolution: {integrity: sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==} + + '@vue/compiler-dom@3.4.38': + resolution: {integrity: sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==} + + '@vue/compiler-sfc@3.4.38': + resolution: {integrity: sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==} + + '@vue/compiler-ssr@3.4.38': + resolution: {integrity: sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==} + + '@vue/devtools-api@6.6.3': + resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==} + + '@vue/eslint-config-typescript@13.0.0': + resolution: {integrity: sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + eslint-plugin-vue: ^9.0.0 + typescript: '>=4.7.4' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/reactivity@3.4.38': + resolution: {integrity: sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==} + + '@vue/runtime-core@3.4.38': + resolution: {integrity: sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==} + + '@vue/runtime-dom@3.4.38': + resolution: {integrity: sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==} + + '@vue/server-renderer@3.4.38': + resolution: {integrity: sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==} + peerDependencies: + vue: 3.4.38 + + '@vue/shared@3.4.38': + resolution: {integrity: sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==} + + '@vueup/vue-quill@1.2.0': + resolution: {integrity: sha512-kd5QPSHMDpycklojPXno2Kw2JSiKMYduKYQckTm1RJoVDA557MnyUXgcuuDpry4HY/Rny9nGNcK+m3AHk94wag==} + peerDependencies: + vue: ^3.2.41 + + '@vueuse/core@11.0.3': + resolution: {integrity: sha512-RENlh64+SYA9XMExmmH1a3TPqeIuJBNNB/63GT35MZI+zpru3oMRUA6cEFr9HmGqEgUisurwGwnIieF6qu3aXw==} + + '@vueuse/metadata@11.0.3': + resolution: {integrity: sha512-+FtbO4SD5WpsOcQTcC0hAhNlOid6QNLzqedtquTtQ+CRNBoAt9GuV07c6KNHK1wCmlq8DFPwgiLF2rXwgSHX5Q==} + + '@vueuse/shared@11.0.3': + resolution: {integrity: sha512-0rY2m6HS5t27n/Vp5cTDsKTlNnimCqsbh/fmT2LgE+aaU42EMfXo8+bNX91W9I7DDmxfuACXMmrd7d79JxkqWA==} + + '@webassemblyjs/ast@1.12.1': + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + + '@webassemblyjs/floating-point-hex-parser@1.11.6': + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + '@webassemblyjs/helper-api-error@1.11.6': + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + '@webassemblyjs/helper-buffer@1.12.1': + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + + '@webassemblyjs/helper-numbers@1.11.6': + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + '@webassemblyjs/helper-wasm-section@1.12.1': + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + + '@webassemblyjs/ieee754@1.11.6': + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + + '@webassemblyjs/leb128@1.11.6': + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + + '@webassemblyjs/utf8@1.11.6': + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + '@webassemblyjs/wasm-edit@1.12.1': + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + + '@webassemblyjs/wasm-gen@1.12.1': + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + + '@webassemblyjs/wasm-opt@1.12.1': + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + + '@webassemblyjs/wasm-parser@1.12.1': + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + + '@webassemblyjs/wast-printer@1.12.1': + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} + engines: {node: '>=0.4.0'} + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + array-union@1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + batch-processor@1.0.0: + resolution: {integrity: sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + blueimp-md5@2.19.0: + resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + bundle-require@4.2.1: + resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' + + cachedir@2.3.0: + resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} + engines: {node: '>=6'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001655: + resolution: {integrity: sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==} + + capital-case@1.0.4: + resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + change-case@4.1.2: + resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.4.0: + resolution: {integrity: sha512-N1NGmowPlGBLsOZLPvm48StN04V4YvQRL0i6b7ctrVY3epjP/ct7hFLOItz6pDIvRjwpfPxi52a2UWV2ziir8g==} + + clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + clipboard@2.0.11: + resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + codemirror@6.0.2: + resolution: {integrity: sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + engines: {node: '>=16'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + commitizen@4.3.0: + resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==} + engines: {node: '>= 12'} + hasBin: true + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + + connect-history-api-fallback@1.6.0: + resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} + engines: {node: '>=0.8'} + + connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + + consola@2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + + console@0.7.2: + resolution: {integrity: sha512-+JSDwGunA4MTEgAV/4VBKwUHonP8CzJ/6GIuwPi6acKFqFfHUdSGCm89ZxZ5FfGWdZfkdgAroy5bJ5FSeN/t4g==} + + constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + + conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + + conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} + + conventional-commit-types@3.0.0: + resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==} + + conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} + hasBin: true + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + + core-js@3.38.1: + resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==} + + cosmiconfig-typescript-loader@5.0.0: + resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} + engines: {node: '>=v16'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=8.2' + typescript: '>=4' + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + + css-functions-list@3.2.2: + resolution: {integrity: sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==} + engines: {node: '>=12 || >=16'} + + css-render@0.15.14: + resolution: {integrity: sha512-9nF4PdUle+5ta4W5SyZdLCCmFd37uVimSjg1evcTqKJCyvCEEj12WKzOSBNak6r4im4J4iYXKH1OWpUV5LBYFg==} + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.0.11: + resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + cz-conventional-changelog@3.3.0: + resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} + engines: {node: '>= 10'} + + dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} + + date-fns-tz@3.2.0: + resolution: {integrity: sha512-sg8HqoTEulcbbbVXeg84u5UnlsQa8GS5QXMqjjYIhS4abEVVKIUwe0/l/UhrZdKaL/W5eWZNlbTeEIiOXTcsBQ==} + peerDependencies: + date-fns: ^3.0.0 || ^4.0.0 + + date-fns@3.6.0: + resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-equal@1.1.2: + resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==} + engines: {node: '>= 0.4'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegate@3.2.0: + resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==} + + detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + dotenv-expand@8.0.3: + resolution: {integrity: sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==} + engines: {node: '>=12'} + + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + echarts@5.5.1: + resolution: {integrity: sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.13: + resolution: {integrity: sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==} + + element-resize-detector@1.2.4: + resolution: {integrity: sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==} + + email-addresses@5.0.0: + resolution: {integrity: sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@0.9.3: + resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} + + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-prettier@9.1.0: + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-define-config@2.1.0: + resolution: {integrity: sha512-QUp6pM9pjKEVannNAbSJNeRuYwW3LshejfyBBpjeMGaJjaDUpVps4C6KVR8R7dWZnD3i0synmrE36znjTkJvdQ==} + engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>=8.6.0'} + + eslint-plugin-jest@28.8.2: + resolution: {integrity: sha512-mC3OyklHmS5i7wYU1rGId9EnxRI8TVlnFG56AE+8U9iRy6zwaNygZR+DsdZuCL0gRG0wVeyzq+uWcPt6yJrrMA==} + engines: {node: ^16.10.0 || ^18.12.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + + eslint-plugin-prettier@5.2.1: + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-vue@9.28.0: + resolution: {integrity: sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-scope@8.0.2: + resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.9.1: + resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + esno@4.7.0: + resolution: {integrity: sha512-81owrjxIxOwqcABt20U09Wn8lpBo9K6ttqbGvQcB3VYNLJyaV1fvKkDtpZd3Rj5BX3WXiGiJCjUevKQGNICzJg==} + hasBin: true + + espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eventemitter3@2.0.3: + resolution: {integrity: sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + evtd@0.2.4: + resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.1.2: + resolution: {integrity: sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==} + + fast-diff@1.2.0: + resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.1: + resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-entry-cache@9.1.0: + resolution: {integrity: sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==} + engines: {node: '>=18'} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + filename-reserved-regex@2.0.0: + resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} + engines: {node: '>=4'} + + filenamify@4.3.0: + resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==} + engines: {node: '>=8'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + + find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + + find-node-modules@2.1.3: + resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + + findup-sync@4.0.0: + resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==} + engines: {node: '>= 8'} + + fingerprintjs2@2.1.4: + resolution: {integrity: sha512-veP2yVsnYvjDVkzZMyIEwpqCAQfsBLH+U4PK5MlFAnLjZrttbdRqEArE1fPcnJFz5oS5CrdONbsV7J6FGpIJEQ==} + deprecated: Package has been renamed to @fingerprintjs/fingerprintjs. Install @fingerprintjs/fingerprintjs to get updates. + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flat-cache@5.0.0: + resolution: {integrity: sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==} + engines: {node: '>=18'} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-tsconfig@4.8.0: + resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==} + + gh-pages@6.1.1: + resolution: {integrity: sha512-upnohfjBwN5hBP9w2dPE7HO5JJTHzSGMV1JrLrHvNuqmjoYHg6TBrCcnEoorjG/e0ejbuvnwyKMdTyM40PEByw==} + engines: {node: '>=10'} + hasBin: true + + git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} + hasBin: true + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@11.0.0: + resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + engines: {node: 20 || >=22} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globby@6.1.0: + resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} + engines: {node: '>=0.10.0'} + + globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + + good-listener@1.2.2: + resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + header-case@2.0.4: + resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + + highlight.js@11.10.0: + resolution: {integrity: sha512-SYVnVFswQER+zu1laSya563s+F8VDGt7o35d4utbamowvUNLLMovFqwCLSocpZTz3MgaSRA1IbqRWZv97dtErQ==} + engines: {node: '>=12.0.0'} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + husky@9.1.5: + resolution: {integrity: sha512-rowAVRUBfI0b4+niA4SJMhfQwc107VLkBUgEYYAOQAbqDCnra1nYh83hF/MDmhYs9t9n1E3DuKOrs2LYNC+0Ag==} + engines: {node: '>=18'} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + inquirer@8.2.5: + resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} + engines: {node: '>=12.0.0'} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jackspeak@4.0.1: + resolution: {integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==} + engines: {node: 20 || >=22} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + known-css-properties@0.34.0: + resolution: {integrity: sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==} + + less-loader@12.2.0: + resolution: {integrity: sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + less@4.2.0: + resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} + engines: {node: '>=6'} + hasBin: true + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@15.2.10: + resolution: {integrity: sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@8.2.4: + resolution: {integrity: sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==} + engines: {node: '>=18.0.0'} + + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.map@4.6.0: + resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + longest@2.0.1: + resolution: {integrity: sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==} + engines: {node: '>=0.10.0'} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.0.0: + resolution: {integrity: sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + mathml-tag-names@2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + merge@2.1.1: + resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mint-filter@4.0.3: + resolution: {integrity: sha512-CKh2zKv9oFHEmYCXFk5REG2480FBNYixK+hw0mlRd/TgDJVhPpRhHPNhWa3Q6zF1tpE2q7w7y+Ylu1YJusXDpA==} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + + mockjs@1.1.0: + resolution: {integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==} + hasBin: true + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + naive-ui@2.42.0: + resolution: {integrity: sha512-c7cXR2YgOjgtBadXHwiWL4Y0tpGLAI5W5QzzHksOi22iuHXoSGMAzdkVTGVPE/PM0MSGQ/JtUIzCx2Y0hU0vTQ==} + peerDependencies: + vue: ^3.0.0 + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-html-parser@5.4.2: + resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + normalize-url@4.5.1: + resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} + engines: {node: '>=8'} + + npm-check-updates@17.1.1: + resolution: {integrity: sha512-2aqIzGAEWB7xPf0hKHTkNmUM5jHbn2S5r2/z/7dA5Ij2h/sVYAg9R/uVkaUC3VORPAfBm7pKkCWo6E9clEVQ9A==} + engines: {node: ^18.18.0 || >=20.0.0, npm: '>=8.12.1'} + hasBin: true + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parchment@1.1.4: + resolution: {integrity: sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + path-case@3.0.4: + resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + + path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@0.2.0: + resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@3.0.1: + resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} + engines: {node: '>=10'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pinia@2.2.2: + resolution: {integrity: sha512-ja2XqFWZC36mupU4z1ZzxeTApV7DOw44cV4dhQ9sGwun+N89v/XP7+j7q6TanS1u1tdbK4r+1BUx7heMaIdagA==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.3.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + + pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + + pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + + pinyin-pro@3.24.2: + resolution: {integrity: sha512-5tPyLhxT4CZ9dWqQRqm3X5ADdS18Sb2w0ranNBgr6jCrqO4O8gtfuyqG7Y6+1Mre+0n2VlhKDz+3P5oqSLrkOw==} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@1.2.0: + resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-resolve-nested-selector@0.1.6: + resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} + + postcss-safe-parser@7.0.0: + resolution: {integrity: sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-sorting@8.0.2: + resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==} + peerDependencies: + postcss: ^8.4.20 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.44: + resolution: {integrity: sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + pretty-quick@4.0.0: + resolution: {integrity: sha512-M+2MmeufXb/M7Xw3Afh1gxcYpj+sK0AxEfnfF958ktFeAyi5MsKY5brymVURQLgPLV1QaF5P4pb2oFJ54H3yzQ==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + prettier: ^3.0.0 + + print-js@1.6.0: + resolution: {integrity: sha512-BfnOIzSKbqGRtO4o0rnj/K3681BSd2QUrsIZy/+WdCIugjIswjmx3lDEZpXB2ruGf9d4b3YNINri81+J0FsBWg==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + qrcode.vue@3.4.1: + resolution: {integrity: sha512-wq/zHsifH4FJ1GXQi8/wNxD1KfQkckIpjK1KPTc/qwYU5/Bkd4me0w4xZSg6EXk6xLBkVDE0zxVagewv5EMAVA==} + peerDependencies: + vue: ^3.0.0 + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quill-delta@3.6.3: + resolution: {integrity: sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==} + engines: {node: '>=0.10'} + + quill-delta@4.2.2: + resolution: {integrity: sha512-qjbn82b/yJzOjstBgkhtBjN2TNK+ZHP/BgUQO+j6bRhWQQdmj2lH6hXG7+nwwLF41Xgn//7/83lxs9n2BkTtTg==} + + quill-delta@5.1.0: + resolution: {integrity: sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==} + engines: {node: '>= 12.0.0'} + + quill-image-uploader@1.3.0: + resolution: {integrity: sha512-vO43GEn93rGThje/MlotkQE9OV5nOKBZ4oKhn71L/EjrM/J2P/8iDDVd9GEwlsGsbskeJqPLopsSQ4HlVVIn6A==} + peerDependencies: + quill: ^1.3.7 + + quill-magic-url@4.2.0: + resolution: {integrity: sha512-u1tHwsQjrTczhECNtXK5EUkWwAMb8raLpsU3llqiLu344kPlA9ldoenHvY3XW+yI+2IZ9WgKgRmcy+cKGN3gnQ==} + + quill@1.3.7: + resolution: {integrity: sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@6.0.1: + resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + engines: {node: 20 || >=22} + hasBin: true + + rollup@4.21.2: + resolution: {integrity: sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + seemly@0.3.8: + resolution: {integrity: sha512-MW8Qs6vbzo0pHmDpFSYPna+lwpZ6Zk1ancbajw/7E8TKtHdV+1DfZZD+kKJEhG/cAoB/i+LiT+5msZOqj0DwRA==} + + select@1.1.2: + resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + sentence-case@3.0.4: + resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + + sortablejs@1.14.0: + resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==} + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + spark-md5@3.0.2: + resolution: {integrity: sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-outer@1.0.1: + resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} + engines: {node: '>=0.10.0'} + + style-mod@4.1.2: + resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} + + stylelint-config-prettier@9.0.5: + resolution: {integrity: sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==} + engines: {node: '>= 12'} + hasBin: true + peerDependencies: + stylelint: '>= 11.x < 15' + + stylelint-config-recommended@14.0.1: + resolution: {integrity: sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.1.0 + + stylelint-config-standard@36.0.1: + resolution: {integrity: sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.1.0 + + stylelint-order@6.0.4: + resolution: {integrity: sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==} + peerDependencies: + stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 + + stylelint-scss@6.5.1: + resolution: {integrity: sha512-ZLqdqihm6uDYkrsOeD6YWb+stZI8Wn92kUNDhE4M+g9g1aCnRv0JlOrttFiAJJwaNzpdQgX3YJb5vDQXVuO9Ww==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.0.2 + + stylelint@16.9.0: + resolution: {integrity: sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==} + engines: {node: '>=18.12.0'} + hasBin: true + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-hyperlinks@3.1.0: + resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} + engines: {node: '>=14.18'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + synckit@0.9.1: + resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} + engines: {node: ^14.18.0 || >=16.0.0} + + table@6.8.2: + resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} + engines: {node: '>=10.0.0'} + + tailwindcss@3.4.10: + resolution: {integrity: sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==} + engines: {node: '>=14.0.0'} + hasBin: true + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + terser-webpack-plugin@5.3.10: + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.31.6: + resolution: {integrity: sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + throttle-debounce@5.0.2: + resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} + engines: {node: '>=12.22'} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tiny-emitter@2.1.0: + resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + treemate@0.3.11: + resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==} + + trim-repeated@1.0.0: + resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} + engines: {node: '>=0.10.0'} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + + tsx@4.19.0: + resolution: {integrity: sha512-bV30kM7bsLZKZIOCHeMNVMJ32/LuJzLVajkQI/qf92J2Qr08ueLQvW00PUZGiuLPP760UINwupgUj8qrSCPUKg==} + engines: {node: '>=18.0.0'} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin-vue-components@0.27.4: + resolution: {integrity: sha512-1XVl5iXG7P1UrOMnaj2ogYa5YTq8aoh5jwDPQhemwO/OrXW+lPQKDXd1hMz15qxQPxgb/XXlbgo3HQ2rLEbmXQ==} + engines: {node: '>=14'} + peerDependencies: + '@babel/parser': ^7.15.8 + '@nuxt/kit': ^3.2.2 + vue: 2 || 3 + peerDependenciesMeta: + '@babel/parser': + optional: true + '@nuxt/kit': + optional: true + + unplugin@1.12.3: + resolution: {integrity: sha512-my8DH0/T/Kx33KO+6QXAqdeMYgyy0GktlOpdQjpagfHKw5DrD0ctPr7SHUyOT3g4ZVpzCQGt/qcpuoKJ/pniHA==} + engines: {node: '>=14.0.0'} + + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + upper-case-first@2.0.2: + resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + + upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + + vdirs@0.1.8: + resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==} + peerDependencies: + vue: ^3.0.11 + + vfonts@0.0.3: + resolution: {integrity: sha512-nguyw8L6Un8eelg1vQ31vIU2ESxqid7EYmy8V+MDeMaHBqaRSkg3dTBToC1PR00D89UzS/SLkfYPnx0Wf23IQQ==} + + vite-plugin-compression@0.5.1: + resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} + peerDependencies: + vite: '>=2.0.0' + + vite-plugin-html@3.2.2: + resolution: {integrity: sha512-vb9C9kcdzcIo/Oc3CLZVS03dL5pDlOFuhGlZYDCJ840BhWl/0nGeZWf3Qy7NlOayscY4Cm/QRgULCQkEZige5Q==} + peerDependencies: + vite: '>=2.0.0' + + vite-plugin-mock@3.0.2: + resolution: {integrity: sha512-bD//HvkTygGmk+LsIAdf0jGNlCv4iWv0kZlH9UEgWT6QYoUwfjQAE4SKxHRw2tfLgVhbPQVv/+X3YlNWvueGUA==} + engines: {node: '>=16.0.0'} + peerDependencies: + esbuild: '>=0.17' + mockjs: '>=1.1.0' + vite: '>=4.0.0' + + vite-plugin-require-transform@1.0.21: + resolution: {integrity: sha512-A3SrHhVg9tCW35O7E8kcuB71YTEdVd3EaM1zh6gbH4zxy4WzXSfcNf0UiWmaHHhr6wdFhiiAGdpR6S0SUxXkGQ==} + + vite-plugin-style-import@2.0.0: + resolution: {integrity: sha512-qtoHQae5dSUQPo/rYz/8p190VU5y19rtBaeV7ryLa/AYAU/e9CG89NrN/3+k7MR8mJy/GPIu91iJ3zk9foUOSA==} + peerDependencies: + vite: '>=2.0.0' + + vite-plugin-top-level-await@1.4.4: + resolution: {integrity: sha512-QyxQbvcMkgt+kDb12m2P8Ed35Sp6nXP+l8ptGrnHV9zgYDUpraO0CPdlqLSeBqvY2DToR52nutDG7mIHuysdiw==} + peerDependencies: + vite: '>=2.8' + + vite-plugin-vue-setup-extend@0.4.0: + resolution: {integrity: sha512-WMbjPCui75fboFoUTHhdbXzu4Y/bJMv5N9QT9a7do3wNMNHHqrk+Tn2jrSJU0LS5fGl/EG+FEDBYVUeWIkDqXQ==} + peerDependencies: + vite: '>=2.0.0' + + vite@5.4.2: + resolution: {integrity: sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vooks@0.2.12: + resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==} + peerDependencies: + vue: ^3.0.0 + + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-draggable-next@2.2.1: + resolution: {integrity: sha512-EAMS1IRHF0kZO0o5PMOinsQsXIqsrKT1hKmbICxG3UEtn7zLFkLxlAtajcCcUTisNvQ6TtCB5COjD9a1raNADw==} + peerDependencies: + sortablejs: ^1.14.0 + vue: ^3.2.2 + + vue-eslint-parser@9.4.3: + resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + vue-router@4.4.3: + resolution: {integrity: sha512-sv6wmNKx2j3aqJQDMxLFzs/u/mjA9Z5LCgy6BE0f7yFWMjrPLnS/sPNn8ARY/FXw6byV18EFutn5lTO6+UsV5A==} + peerDependencies: + vue: ^3.2.0 + + vue-types@5.1.3: + resolution: {integrity: sha512-3Wy6QcZl0VusCCHX3vYrWSILFlrOB2EQDoySnuYmASM5cUp1FivJGfkS5lp1CutDgyRb41g32r/1QCmiBj5i1Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + vue: ^2.0.0 || ^3.0.0 + peerDependenciesMeta: + vue: + optional: true + + vue-waterfall-plugin-next@2.6.0: + resolution: {integrity: sha512-GgovHXWkEP0flI/60GPeTC9vQAnYXLfhohAe8BudIljlcpBS+UCFXOS+S7FCsoujhvdcUY1heKxZglf13KGl9g==} + + vue3-json-viewer@2.2.2: + resolution: {integrity: sha512-56l3XDGggnpwEqZieXsSMhNT4NhtO6d7zuSAxHo4i0UVxymyY2jRb7UMQOU1ztChKALZCAzX7DlgrsnEhxu77A==} + peerDependencies: + vue: ^3.2.0 + + vue@3.4.38: + resolution: {integrity: sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + vuedraggable@4.1.0: + resolution: {integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==} + peerDependencies: + vue: ^3.0.1 + + vueuc@0.4.64: + resolution: {integrity: sha512-wlJQj7fIwKK2pOEoOq4Aro8JdPOGpX8aWQhV8YkTW9OgWD2uj2O8ANzvSsIGjx7LTOc7QbS7sXdxHi6XvRnHPA==} + peerDependencies: + vue: ^3.0.11 + + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + engines: {node: '>=10.13.0'} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + webpack@5.94.0: + resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + weixin-js-sdk@1.6.5: + resolution: {integrity: sha512-Gph1WAWB2YN/lMOFB/ymb+hbU/wYazzJgu6PMMktCy9cSCeW5wA6Zwt0dpahJbJ+RJEwtTv2x9iIu0U4enuVSQ==} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@2.5.0: + resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + + zrender@5.6.0: + resolution: {integrity: sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@antfu/utils@0.7.10': {} + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.1.0 + + '@babel/compat-data@7.25.4': {} + + '@babel/core@7.25.2': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + convert-source-map: 2.0.0 + debug: 4.3.6 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.25.6': + dependencies: + '@babel/types': 7.25.6 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-annotate-as-pure@7.24.7': + dependencies: + '@babel/types': 7.25.6 + + '@babel/helper-compilation-targets@7.25.2': + dependencies: + '@babel/compat-data': 7.25.4 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/traverse': 7.25.6 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.24.8': + dependencies: + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.22.15': + dependencies: + '@babel/types': 7.25.6 + + '@babel/helper-module-imports@7.24.7': + dependencies: + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.24.7': + dependencies: + '@babel/types': 7.25.6 + + '@babel/helper-plugin-utils@7.24.8': {} + + '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-simple-access@7.24.7': + dependencies: + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + dependencies: + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.24.8': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/helper-validator-option@7.24.8': {} + + '@babel/helpers@7.25.6': + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.0 + + '@babel/parser@7.25.6': + dependencies: + '@babel/types': 7.25.6 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-import-attributes@7.25.6(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-typescript@7.25.4(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/template@7.25.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + + '@babel/traverse@7.25.6': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + debug: 4.3.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.25.6': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@bcoe/v8-coverage@0.2.3': {} + + '@codemirror/autocomplete@0.20.3': + dependencies: + '@codemirror/language': 0.20.2 + '@codemirror/state': 0.20.1 + '@codemirror/view': 0.20.7 + '@lezer/common': 0.16.1 + + '@codemirror/autocomplete@6.18.7': + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.2 + '@lezer/common': 1.2.3 + + '@codemirror/basic-setup@0.20.0': + dependencies: + '@codemirror/autocomplete': 0.20.3 + '@codemirror/commands': 0.20.0 + '@codemirror/language': 0.20.2 + '@codemirror/lint': 0.20.3 + '@codemirror/search': 0.20.1 + '@codemirror/state': 0.20.1 + '@codemirror/view': 0.20.7 + + '@codemirror/commands@0.20.0': + dependencies: + '@codemirror/language': 0.20.2 + '@codemirror/state': 0.20.1 + '@codemirror/view': 0.20.7 + '@lezer/common': 0.16.1 + + '@codemirror/commands@6.8.1': + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.2 + '@lezer/common': 1.2.3 + + '@codemirror/lang-yaml@6.1.2': + dependencies: + '@codemirror/autocomplete': 6.18.7 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + '@lezer/yaml': 1.0.3 + + '@codemirror/language@0.20.2': + dependencies: + '@codemirror/state': 0.20.1 + '@codemirror/view': 0.20.7 + '@lezer/common': 0.16.1 + '@lezer/highlight': 0.16.0 + '@lezer/lr': 0.16.3 + style-mod: 4.1.2 + + '@codemirror/language@6.11.3': + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.2 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + style-mod: 4.1.2 + + '@codemirror/lint@0.20.3': + dependencies: + '@codemirror/state': 0.20.1 + '@codemirror/view': 0.20.7 + crelt: 1.0.6 + + '@codemirror/lint@6.8.5': + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.2 + crelt: 1.0.6 + + '@codemirror/search@0.20.1': + dependencies: + '@codemirror/state': 0.20.1 + '@codemirror/view': 0.20.7 + crelt: 1.0.6 + + '@codemirror/search@6.5.11': + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.2 + crelt: 1.0.6 + + '@codemirror/state@0.20.1': {} + + '@codemirror/state@6.5.2': + dependencies: + '@marijn/find-cluster-break': 1.0.2 + + '@codemirror/theme-one-dark@6.1.3': + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.2 + '@lezer/highlight': 1.2.1 + + '@codemirror/view@0.20.7': + dependencies: + '@codemirror/state': 0.20.1 + style-mod: 4.1.2 + w3c-keyname: 2.2.8 + + '@codemirror/view@6.38.2': + dependencies: + '@codemirror/state': 6.5.2 + crelt: 1.0.6 + style-mod: 4.1.2 + w3c-keyname: 2.2.8 + + '@commitlint/cli@19.4.1(@types/node@22.5.2)(typescript@5.5.4)': + dependencies: + '@commitlint/format': 19.3.0 + '@commitlint/lint': 19.4.1 + '@commitlint/load': 19.4.0(@types/node@22.5.2)(typescript@5.5.4) + '@commitlint/read': 19.4.0 + '@commitlint/types': 19.0.3 + execa: 8.0.1 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/config-conventional@19.4.1': + dependencies: + '@commitlint/types': 19.0.3 + conventional-changelog-conventionalcommits: 7.0.2 + + '@commitlint/config-validator@19.0.3': + dependencies: + '@commitlint/types': 19.0.3 + ajv: 8.17.1 + + '@commitlint/ensure@19.0.3': + dependencies: + '@commitlint/types': 19.0.3 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@19.0.0': {} + + '@commitlint/format@19.3.0': + dependencies: + '@commitlint/types': 19.0.3 + chalk: 5.3.0 + + '@commitlint/is-ignored@19.2.2': + dependencies: + '@commitlint/types': 19.0.3 + semver: 7.6.3 + + '@commitlint/lint@19.4.1': + dependencies: + '@commitlint/is-ignored': 19.2.2 + '@commitlint/parse': 19.0.3 + '@commitlint/rules': 19.4.1 + '@commitlint/types': 19.0.3 + + '@commitlint/load@19.4.0(@types/node@22.5.2)(typescript@5.5.4)': + dependencies: + '@commitlint/config-validator': 19.0.3 + '@commitlint/execute-rule': 19.0.0 + '@commitlint/resolve-extends': 19.1.0 + '@commitlint/types': 19.0.3 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.5.4) + cosmiconfig-typescript-loader: 5.0.0(@types/node@22.5.2)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/message@19.0.0': {} + + '@commitlint/parse@19.0.3': + dependencies: + '@commitlint/types': 19.0.3 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 + + '@commitlint/read@19.4.0': + dependencies: + '@commitlint/top-level': 19.0.0 + '@commitlint/types': 19.0.3 + execa: 8.0.1 + git-raw-commits: 4.0.0 + minimist: 1.2.8 + + '@commitlint/resolve-extends@19.1.0': + dependencies: + '@commitlint/config-validator': 19.0.3 + '@commitlint/types': 19.0.3 + global-directory: 4.0.1 + import-meta-resolve: 4.1.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + + '@commitlint/rules@19.4.1': + dependencies: + '@commitlint/ensure': 19.0.3 + '@commitlint/message': 19.0.0 + '@commitlint/to-lines': 19.0.0 + '@commitlint/types': 19.0.3 + execa: 8.0.1 + + '@commitlint/to-lines@19.0.0': {} + + '@commitlint/top-level@19.0.0': + dependencies: + find-up: 7.0.0 + + '@commitlint/types@19.0.3': + dependencies: + '@types/conventional-commits-parser': 5.0.0 + chalk: 5.3.0 + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + optional: true + + '@css-render/plugin-bem@0.15.14(css-render@0.15.14)': + dependencies: + css-render: 0.15.14 + + '@css-render/vue3-ssr@0.15.14(vue@3.4.38(typescript@5.5.4))': + dependencies: + vue: 3.4.38(typescript@5.5.4) + + '@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1)': + dependencies: + '@csstools/css-tokenizer': 3.0.1 + + '@csstools/css-tokenizer@3.0.1': {} + + '@csstools/media-query-list-parser@3.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) + '@csstools/css-tokenizer': 3.0.1 + + '@csstools/selector-specificity@4.0.0(postcss-selector-parser@6.1.2)': + dependencies: + postcss-selector-parser: 6.1.2 + + '@dual-bundle/import-meta-resolve@4.1.0': {} + + '@emotion/hash@0.8.0': {} + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1(jiti@1.21.6))': + dependencies: + eslint: 9.9.1(jiti@1.21.6) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.0': {} + + '@eslint/config-array@0.18.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.6 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/eslintrc@3.1.0': + dependencies: + ajv: 6.12.6 + debug: 4.3.6 + espree: 10.1.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.9.1': {} + + '@eslint/object-schema@2.1.4': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.0': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.5.2 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.5.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.5.2 + jest-mock: 29.7.0 + + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 22.5.2 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@29.7.0': + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/reporters@29.7.0': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 22.5.2 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/source-map@29.6.3': + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/test-result@29.7.0': + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@29.7.0': + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.25.2 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.5.2 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + optional: true + + '@juggle/resize-observer@3.4.0': {} + + '@lezer/common@0.16.1': {} + + '@lezer/common@1.2.3': {} + + '@lezer/highlight@0.16.0': + dependencies: + '@lezer/common': 0.16.1 + + '@lezer/highlight@1.2.1': + dependencies: + '@lezer/common': 1.2.3 + + '@lezer/lr@0.16.3': + dependencies: + '@lezer/common': 0.16.1 + + '@lezer/lr@1.4.2': + dependencies: + '@lezer/common': 1.2.3 + + '@lezer/yaml@1.0.3': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@marijn/find-cluster-break@1.0.2': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} + + '@rollup/plugin-virtual@3.0.2(rollup@4.21.2)': + optionalDependencies: + rollup: 4.21.2 + + '@rollup/pluginutils@4.2.1': + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + + '@rollup/pluginutils@5.1.0(rollup@4.21.2)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.21.2 + + '@rollup/rollup-android-arm-eabi@4.21.2': + optional: true + + '@rollup/rollup-android-arm64@4.21.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.21.2': + optional: true + + '@rollup/rollup-darwin-x64@4.21.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.21.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.21.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.21.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.21.2': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.21.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.21.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.21.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.21.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.21.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.21.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.21.2': + optional: true + + '@sinclair/typebox@0.27.8': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@swc/core-darwin-arm64@1.7.23': + optional: true + + '@swc/core-darwin-x64@1.7.23': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.7.23': + optional: true + + '@swc/core-linux-arm64-gnu@1.7.23': + optional: true + + '@swc/core-linux-arm64-musl@1.7.23': + optional: true + + '@swc/core-linux-x64-gnu@1.7.23': + optional: true + + '@swc/core-linux-x64-musl@1.7.23': + optional: true + + '@swc/core-win32-arm64-msvc@1.7.23': + optional: true + + '@swc/core-win32-ia32-msvc@1.7.23': + optional: true + + '@swc/core-win32-x64-msvc@1.7.23': + optional: true + + '@swc/core@1.7.23': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.12 + optionalDependencies: + '@swc/core-darwin-arm64': 1.7.23 + '@swc/core-darwin-x64': 1.7.23 + '@swc/core-linux-arm-gnueabihf': 1.7.23 + '@swc/core-linux-arm64-gnu': 1.7.23 + '@swc/core-linux-arm64-musl': 1.7.23 + '@swc/core-linux-x64-gnu': 1.7.23 + '@swc/core-linux-x64-musl': 1.7.23 + '@swc/core-win32-arm64-msvc': 1.7.23 + '@swc/core-win32-ia32-msvc': 1.7.23 + '@swc/core-win32-x64-msvc': 1.7.23 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.12': + dependencies: + '@swc/counter': 0.1.3 + + '@tsconfig/node10@1.0.11': + optional: true + + '@tsconfig/node12@1.0.11': + optional: true + + '@tsconfig/node14@1.0.3': + optional: true + + '@tsconfig/node16@1.0.4': + optional: true + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.25.6 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.25.6 + + '@types/conventional-commits-parser@5.0.0': + dependencies: + '@types/node': 22.5.2 + + '@types/estree@1.0.5': {} + + '@types/fs-extra@11.0.4': + dependencies: + '@types/jsonfile': 6.1.4 + '@types/node': 22.5.2 + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 22.5.2 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/js-yaml@4.0.9': {} + + '@types/json-schema@7.0.15': + optional: true + + '@types/jsonfile@6.1.4': + dependencies: + '@types/node': 22.5.2 + + '@types/katex@0.16.7': {} + + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.7 + + '@types/lodash@4.17.7': {} + + '@types/node@22.5.2': + dependencies: + undici-types: 6.19.8 + + '@types/quill@2.0.14': + dependencies: + parchment: 1.1.4 + quill-delta: 5.1.0 + + '@types/stack-utils@2.0.3': {} + + '@types/web-bluetooth@0.0.20': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 7.18.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 9.9.1(jiti@1.21.6) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.4.0 + eslint: 9.9.1(jiti@1.21.6) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.18.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.6 + eslint: 9.9.1(jiti@1.21.6) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.4.0 + debug: 4.3.6 + eslint: 9.9.1(jiti@1.21.6) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + + '@typescript-eslint/scope-manager@8.4.0': + dependencies: + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/visitor-keys': 8.4.0 + + '@typescript-eslint/type-utils@7.18.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + debug: 4.3.6 + eslint: 9.9.1(jiti@1.21.6) + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/type-utils@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + debug: 4.3.6 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - eslint + - supports-color + + '@typescript-eslint/types@7.18.0': {} + + '@typescript-eslint/types@8.4.0': {} + + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.6 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.4.0(typescript@5.5.4)': + dependencies: + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/visitor-keys': 8.4.0 + debug: 4.3.6 + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.18.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + eslint: 9.9.1(jiti@1.21.6) + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) + '@typescript-eslint/scope-manager': 8.4.0 + '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) + eslint: 9.9.1(jiti@1.21.6) + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@8.4.0': + dependencies: + '@typescript-eslint/types': 8.4.0 + eslint-visitor-keys: 3.4.3 + + '@vicons/antd@0.12.0': {} + + '@vicons/ionicons5@0.12.0': {} + + '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) + '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.25.2) + vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6) + vue: 3.4.38(typescript@5.5.4) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@5.1.3(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))': + dependencies: + vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6) + vue: 3.4.38(typescript@5.5.4) + + '@vue/babel-helper-vue-transform-on@1.2.2': {} + + '@vue/babel-plugin-jsx@1.2.2(@babel/core@7.25.2)': + dependencies: + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + '@vue/babel-helper-vue-transform-on': 1.2.2 + '@vue/babel-plugin-resolve-type': 1.2.2(@babel/core@7.25.2) + camelcase: 6.3.0 + html-tags: 3.3.1 + svg-tags: 1.0.0 + optionalDependencies: + '@babel/core': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.2.2(@babel/core@7.25.2)': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/parser': 7.25.6 + '@vue/compiler-sfc': 3.4.38 + + '@vue/compiler-core@3.4.38': + dependencies: + '@babel/parser': 7.25.6 + '@vue/shared': 3.4.38 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + + '@vue/compiler-dom@3.4.38': + dependencies: + '@vue/compiler-core': 3.4.38 + '@vue/shared': 3.4.38 + + '@vue/compiler-sfc@3.4.38': + dependencies: + '@babel/parser': 7.25.6 + '@vue/compiler-core': 3.4.38 + '@vue/compiler-dom': 3.4.38 + '@vue/compiler-ssr': 3.4.38 + '@vue/shared': 3.4.38 + estree-walker: 2.0.2 + magic-string: 0.30.11 + postcss: 8.4.44 + source-map-js: 1.2.0 + + '@vue/compiler-ssr@3.4.38': + dependencies: + '@vue/compiler-dom': 3.4.38 + '@vue/shared': 3.4.38 + + '@vue/devtools-api@6.6.3': {} + + '@vue/eslint-config-typescript@13.0.0(eslint-plugin-vue@9.28.0(eslint@9.9.1(jiti@1.21.6)))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)': + dependencies: + '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + '@typescript-eslint/parser': 7.18.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.9.1(jiti@1.21.6) + eslint-plugin-vue: 9.28.0(eslint@9.9.1(jiti@1.21.6)) + vue-eslint-parser: 9.4.3(eslint@9.9.1(jiti@1.21.6)) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@vue/reactivity@3.4.38': + dependencies: + '@vue/shared': 3.4.38 + + '@vue/runtime-core@3.4.38': + dependencies: + '@vue/reactivity': 3.4.38 + '@vue/shared': 3.4.38 + + '@vue/runtime-dom@3.4.38': + dependencies: + '@vue/reactivity': 3.4.38 + '@vue/runtime-core': 3.4.38 + '@vue/shared': 3.4.38 + csstype: 3.1.3 + + '@vue/server-renderer@3.4.38(vue@3.4.38(typescript@5.5.4))': + dependencies: + '@vue/compiler-ssr': 3.4.38 + '@vue/shared': 3.4.38 + vue: 3.4.38(typescript@5.5.4) + + '@vue/shared@3.4.38': {} + + '@vueup/vue-quill@1.2.0(vue@3.4.38(typescript@5.5.4))': + dependencies: + quill: 1.3.7 + quill-delta: 4.2.2 + vue: 3.4.38(typescript@5.5.4) + + '@vueuse/core@11.0.3(vue@3.4.38(typescript@5.5.4))': + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 11.0.3 + '@vueuse/shared': 11.0.3(vue@3.4.38(typescript@5.5.4)) + vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@11.0.3': {} + + '@vueuse/shared@11.0.3(vue@3.4.38(typescript@5.5.4))': + dependencies: + vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@webassemblyjs/ast@1.12.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + optional: true + + '@webassemblyjs/floating-point-hex-parser@1.11.6': + optional: true + + '@webassemblyjs/helper-api-error@1.11.6': + optional: true + + '@webassemblyjs/helper-buffer@1.12.1': + optional: true + + '@webassemblyjs/helper-numbers@1.11.6': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + optional: true + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + optional: true + + '@webassemblyjs/helper-wasm-section@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 + optional: true + + '@webassemblyjs/ieee754@1.11.6': + dependencies: + '@xtuc/ieee754': 1.2.0 + optional: true + + '@webassemblyjs/leb128@1.11.6': + dependencies: + '@xtuc/long': 4.2.2 + optional: true + + '@webassemblyjs/utf8@1.11.6': + optional: true + + '@webassemblyjs/wasm-edit@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 + optional: true + + '@webassemblyjs/wasm-gen@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + optional: true + + '@webassemblyjs/wasm-opt@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + optional: true + + '@webassemblyjs/wasm-parser@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + optional: true + + '@webassemblyjs/wast-printer@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@xtuc/long': 4.2.2 + optional: true + + '@xtuc/ieee754@1.2.0': + optional: true + + '@xtuc/long@4.2.2': + optional: true + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + acorn-import-attributes@1.9.5(acorn@8.12.1): + dependencies: + acorn: 8.12.1 + optional: true + + acorn-jsx@5.3.2(acorn@8.12.1): + dependencies: + acorn: 8.12.1 + + acorn-walk@8.3.3: + dependencies: + acorn: 8.12.1 + optional: true + + acorn@8.12.1: {} + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + optional: true + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.1 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@4.1.3: + optional: true + + arg@5.0.2: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-ify@1.0.0: {} + + array-union@1.0.2: + dependencies: + array-uniq: 1.0.3 + + array-union@2.1.0: {} + + array-uniq@1.0.3: {} + + astral-regex@2.0.0: {} + + async-validator@4.2.5: {} + + async@3.2.6: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + autoprefixer@10.4.20(postcss@8.4.44): + dependencies: + browserslist: 4.23.3 + caniuse-lite: 1.0.30001655 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.0 + postcss: 8.4.44 + postcss-value-parser: 4.2.0 + + axios@1.7.7: + dependencies: + follow-redirects: 1.15.6 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + babel-jest@29.7.0(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.25.2) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.24.8 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.6 + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-import-attributes': 7.25.6(@babel/core@7.25.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) + + babel-preset-jest@29.6.3(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2) + + balanced-match@1.0.2: {} + + balanced-match@2.0.0: {} + + base64-js@1.5.1: {} + + batch-processor@1.0.0: {} + + binary-extensions@2.3.0: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + blueimp-md5@2.19.0: {} + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.23.3: + dependencies: + caniuse-lite: 1.0.30001655 + electron-to-chromium: 1.5.13 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-require@4.2.1(esbuild@0.23.1): + dependencies: + esbuild: 0.23.1 + load-tsconfig: 0.2.5 + + cachedir@2.3.0: {} + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + callsites@3.1.0: {} + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.7.0 + + camelcase-css@2.0.1: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001655: {} + + capital-case@1.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.7.0 + upper-case-first: 2.0.2 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + change-case@4.1.2: + dependencies: + camel-case: 4.1.2 + capital-case: 1.0.4 + constant-case: 3.0.4 + dot-case: 3.0.4 + header-case: 2.0.4 + no-case: 3.0.4 + param-case: 3.0.4 + pascal-case: 3.1.2 + path-case: 3.0.4 + sentence-case: 3.0.4 + snake-case: 3.0.4 + tslib: 2.7.0 + + char-regex@1.0.2: {} + + chardet@0.7.0: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chrome-trace-event@1.0.4: + optional: true + + ci-info@3.9.0: {} + + cjs-module-lexer@1.4.0: {} + + clean-css@5.3.3: + dependencies: + source-map: 0.6.1 + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@2.9.2: {} + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + + cli-width@3.0.0: {} + + clipboard@2.0.11: + dependencies: + good-listener: 1.2.2 + select: 1.1.2 + tiny-emitter: 2.1.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone@1.0.4: {} + + clone@2.1.2: {} + + co@4.6.0: {} + + codemirror@6.0.2: + dependencies: + '@codemirror/autocomplete': 6.18.7 + '@codemirror/commands': 6.8.1 + '@codemirror/language': 6.11.3 + '@codemirror/lint': 6.8.5 + '@codemirror/search': 6.5.11 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.2 + + collect-v8-coverage@1.0.2: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colord@2.9.3: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@11.0.0: {} + + commander@12.1.0: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + commander@8.3.0: {} + + commitizen@4.3.0(@types/node@22.5.2)(typescript@5.5.4): + dependencies: + cachedir: 2.3.0 + cz-conventional-changelog: 3.3.0(@types/node@22.5.2)(typescript@5.5.4) + dedent: 0.7.0 + detect-indent: 6.1.0 + find-node-modules: 2.1.3 + find-root: 1.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + inquirer: 8.2.5 + is-utf8: 0.2.1 + lodash: 4.17.21 + minimist: 1.2.7 + strip-bom: 4.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - '@types/node' + - typescript + + commondir@1.0.1: {} + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + concat-map@0.0.1: {} + + confbox@0.1.7: {} + + connect-history-api-fallback@1.6.0: {} + + connect@3.7.0: + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + + consola@2.15.3: {} + + console@0.7.2: {} + + constant-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.7.0 + upper-case: 2.0.2 + + conventional-changelog-angular@7.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@7.0.2: + dependencies: + compare-func: 2.0.0 + + conventional-commit-types@3.0.0: {} + + conventional-commits-parser@5.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + + convert-source-map@2.0.0: {} + + copy-anything@2.0.6: + dependencies: + is-what: 3.14.1 + + core-js@3.38.1: {} + + cosmiconfig-typescript-loader@5.0.0(@types/node@22.5.2)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4): + dependencies: + '@types/node': 22.5.2 + cosmiconfig: 9.0.0(typescript@5.5.4) + jiti: 1.21.6 + typescript: 5.5.4 + + cosmiconfig@9.0.0(typescript@5.5.4): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.5.4 + + create-jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-require@1.1.1: + optional: true + + crelt@1.0.6: {} + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.3 + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-js@4.2.0: {} + + css-functions-list@3.2.2: {} + + css-render@0.15.14: + dependencies: + '@emotion/hash': 0.8.0 + csstype: 3.0.11 + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.0 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + csstype@3.0.11: {} + + csstype@3.1.3: {} + + cz-conventional-changelog@3.3.0(@types/node@22.5.2)(typescript@5.5.4): + dependencies: + chalk: 2.4.2 + commitizen: 4.3.0(@types/node@22.5.2)(typescript@5.5.4) + conventional-commit-types: 3.0.0 + lodash.map: 4.6.0 + longest: 2.0.1 + word-wrap: 1.2.5 + optionalDependencies: + '@commitlint/load': 19.4.0(@types/node@22.5.2)(typescript@5.5.4) + transitivePeerDependencies: + - '@types/node' + - typescript + + dargs@8.1.0: {} + + date-fns-tz@3.2.0(date-fns@3.6.0): + dependencies: + date-fns: 3.6.0 + + date-fns@3.6.0: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.3.6: + dependencies: + ms: 2.1.2 + + dedent@0.7.0: {} + + dedent@1.5.3: {} + + deep-equal@1.1.2: + dependencies: + is-arguments: 1.1.1 + is-date-object: 1.0.5 + is-regex: 1.1.4 + object-is: 1.1.6 + object-keys: 1.1.1 + regexp.prototype.flags: 1.5.2 + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + delayed-stream@1.0.0: {} + + delegate@3.2.0: {} + + detect-file@1.0.0: {} + + detect-indent@6.1.0: {} + + detect-newline@3.1.0: {} + + didyoumean@1.2.2: {} + + diff-sequences@29.6.3: {} + + diff@4.0.2: + optional: true + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dlv@1.1.3: {} + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + domelementtype@2.3.0: {} + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.7.0 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dotenv-expand@8.0.3: {} + + dotenv@16.4.5: {} + + eastasianwidth@0.2.0: {} + + echarts@5.5.1: + dependencies: + tslib: 2.3.0 + zrender: 5.6.0 + + ee-first@1.1.1: {} + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-to-chromium@1.5.13: {} + + element-resize-detector@1.2.4: + dependencies: + batch-processor: 1.0.0 + + email-addresses@5.0.0: {} + + emittery@0.13.1: {} + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@1.0.2: {} + + enhanced-resolve@5.17.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + optional: true + + entities@2.2.0: {} + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + environment@1.1.0: {} + + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-module-lexer@0.9.3: {} + + es-module-lexer@1.5.4: + optional: true + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-prettier@9.1.0(eslint@9.9.1(jiti@1.21.6)): + dependencies: + eslint: 9.9.1(jiti@1.21.6) + + eslint-define-config@2.1.0: {} + + eslint-plugin-jest@28.8.2(@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)))(typescript@5.5.4): + dependencies: + '@typescript-eslint/utils': 8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + eslint: 9.9.1(jiti@1.21.6) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4) + jest: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)) + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.9.1(jiti@1.21.6)))(eslint@9.9.1(jiti@1.21.6))(prettier@3.3.3): + dependencies: + eslint: 9.9.1(jiti@1.21.6) + prettier: 3.3.3 + prettier-linter-helpers: 1.0.0 + synckit: 0.9.1 + optionalDependencies: + eslint-config-prettier: 9.1.0(eslint@9.9.1(jiti@1.21.6)) + + eslint-plugin-vue@9.28.0(eslint@9.9.1(jiti@1.21.6)): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) + eslint: 9.9.1(jiti@1.21.6) + globals: 13.24.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.2 + semver: 7.6.3 + vue-eslint-parser: 9.4.3(eslint@9.9.1(jiti@1.21.6)) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + optional: true + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-scope@8.0.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.0.0: {} + + eslint@9.9.1(jiti@1.21.6): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1(jiti@1.21.6)) + '@eslint-community/regexpp': 4.11.0 + '@eslint/config-array': 0.18.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.9.1 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.0 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.6 + escape-string-regexp: 4.0.0 + eslint-scope: 8.0.2 + eslint-visitor-keys: 4.0.0 + espree: 10.1.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + optionalDependencies: + jiti: 1.21.6 + transitivePeerDependencies: + - supports-color + + esno@4.7.0: + dependencies: + tsx: 4.19.0 + + espree@10.1.0: + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 4.0.0 + + espree@9.6.1: + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: + optional: true + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + eventemitter3@2.0.3: {} + + eventemitter3@5.0.1: {} + + events@3.3.0: + optional: true + + evtd@0.2.4: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + exit@0.1.2: {} + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + expect@29.7.0: + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + + extend@3.0.2: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + fast-deep-equal@3.1.3: {} + + fast-diff@1.1.2: {} + + fast-diff@1.2.0: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.1: {} + + fastest-levenshtein@1.0.16: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-entry-cache@9.1.0: + dependencies: + flat-cache: 5.0.0 + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + filename-reserved-regex@2.0.0: {} + + filenamify@4.3.0: + dependencies: + filename-reserved-regex: 2.0.0 + strip-outer: 1.0.1 + trim-repeated: 1.0.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.1.2: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-cache-dir@3.3.2: + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + + find-node-modules@2.1.3: + dependencies: + findup-sync: 4.0.0 + merge: 2.1.1 + + find-root@1.1.0: {} + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + + findup-sync@4.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 4.0.8 + resolve-dir: 1.0.1 + + fingerprintjs2@2.1.4: {} + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + + flat-cache@5.0.0: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + + flatted@3.3.1: {} + + follow-redirects@1.15.6: {} + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + fraction.js@4.3.7: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + functions-have-names@1.2.3: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.2.0: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-package-type@0.1.0: {} + + get-stream@6.0.1: {} + + get-stream@8.0.1: {} + + get-tsconfig@4.8.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + gh-pages@6.1.1: + dependencies: + async: 3.2.6 + commander: 11.0.0 + email-addresses: 5.0.0 + filenamify: 4.3.0 + find-cache-dir: 3.3.2 + fs-extra: 11.2.0 + globby: 6.1.0 + + git-raw-commits@4.0.0: + dependencies: + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: + optional: true + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + + glob@11.0.0: + dependencies: + foreground-child: 3.3.0 + jackspeak: 4.0.1 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 2.0.0 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globals@14.0.0: {} + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globby@6.1.0: + dependencies: + array-union: 1.0.2 + glob: 7.2.3 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + + globjoin@0.1.4: {} + + good-listener@1.2.2: + dependencies: + delegate: 3.2.0 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + header-case@2.0.4: + dependencies: + capital-case: 1.0.4 + tslib: 2.7.0 + + highlight.js@11.10.0: {} + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + html-escaper@2.0.2: {} + + html-minifier-terser@6.1.0: + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.31.6 + + html-tags@3.3.1: {} + + human-signals@2.1.0: {} + + human-signals@5.0.0: {} + + husky@9.1.5: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + image-size@0.5.5: + optional: true + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + import-meta-resolve@4.1.0: {} + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@4.1.1: {} + + inquirer@8.2.5: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + + is-arguments@1.1.1: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.15.1: + dependencies: + hasown: 2.0.2 + + is-date-object@1.0.5: + dependencies: + has-tostringtag: 1.0.2 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.2.0 + + is-generator-fn@2.1.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-interactive@1.0.0: {} + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-object@5.0.0: {} + + is-regex@1.1.4: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-text-path@2.0.0: + dependencies: + text-extensions: 2.4.0 + + is-unicode-supported@0.1.0: {} + + is-utf8@0.2.1: {} + + is-what@3.14.1: {} + + is-windows@1.0.2: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.25.2 + '@babel/parser': 7.25.6 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.25.2 + '@babel/parser': 7.25.6 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.3.6 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jackspeak@4.0.1: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + jest-changed-files@29.7.0: + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + + jest-circus@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.5.2 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.3 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-cli@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-config@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)): + dependencies: + '@babel/core': 7.25.2 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.25.2) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 22.5.2 + ts-node: 10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-diff@29.7.0: + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-docblock@29.7.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@29.7.0: + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.5.2 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 22.5.2 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-leak-detector@29.7.0: + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-matcher-utils@29.7.0: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.24.7 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.5.2 + jest-util: 29.7.0 + + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: + jest-resolve: 29.7.0 + + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@29.7.0: + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + jest-resolve@29.7.0: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.8 + resolve.exports: 2.0.2 + slash: 3.0.0 + + jest-runner@29.7.0: + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.5.2 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + + jest-runtime@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.5.2 + chalk: 4.1.2 + cjs-module-lexer: 1.4.0 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.25.2 + '@babel/generator': 7.25.6 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.25.2) + '@babel/types': 7.25.6 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.5.2 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-watcher@29.7.0: + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.5.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 22.5.2 + merge-stream: 2.0.0 + supports-color: 8.1.1 + optional: true + + jest-worker@29.7.0: + dependencies: + '@types/node': 22.5.2 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@22.5.2)(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jiti@1.21.6: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@2.5.2: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + known-css-properties@0.34.0: {} + + less-loader@12.2.0(less@4.2.0)(webpack@5.94.0(@swc/core@1.7.23)(esbuild@0.23.1)): + dependencies: + less: 4.2.0 + optionalDependencies: + webpack: 5.94.0(@swc/core@1.7.23)(esbuild@0.23.1) + + less@4.2.0: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.7.0 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lilconfig@2.1.0: {} + + lilconfig@3.1.2: {} + + lines-and-columns@1.2.4: {} + + lint-staged@15.2.10: + dependencies: + chalk: 5.3.0 + commander: 12.1.0 + debug: 4.3.6 + execa: 8.0.1 + lilconfig: 3.1.2 + listr2: 8.2.4 + micromatch: 4.0.8 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.5.0 + transitivePeerDependencies: + - supports-color + + listr2@8.2.4: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + + load-tsconfig@0.2.5: {} + + loader-runner@4.3.0: + optional: true + + local-pkg@0.5.0: + dependencies: + mlly: 1.7.1 + pkg-types: 1.2.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash-es@4.17.21: {} + + lodash.camelcase@4.3.0: {} + + lodash.clonedeep@4.5.0: {} + + lodash.isequal@4.5.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.kebabcase@4.1.1: {} + + lodash.map@4.6.0: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.truncate@4.4.2: {} + + lodash.uniq@4.5.0: {} + + lodash.upperfirst@4.3.1: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + + longest@2.0.1: {} + + lower-case@2.0.2: + dependencies: + tslib: 2.7.0 + + lru-cache@10.4.3: {} + + lru-cache@11.0.0: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.25.9: + dependencies: + sourcemap-codec: 1.4.8 + + magic-string@0.30.11: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + optional: true + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + make-dir@4.0.0: + dependencies: + semver: 7.6.3 + + make-error@1.3.6: + optional: true + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + mathml-tag-names@2.1.3: {} + + mdn-data@2.0.30: {} + + meow@12.1.1: {} + + meow@13.2.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + merge@2.1.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: + optional: true + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + mimic-function@5.0.1: {} + + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.7: {} + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + mint-filter@4.0.3: {} + + mitt@3.0.1: {} + + mlly@1.7.1: + dependencies: + acorn: 8.12.1 + pathe: 1.1.2 + pkg-types: 1.2.0 + ufo: 1.5.4 + + mockjs@1.1.0: + dependencies: + commander: 12.1.0 + + mri@1.2.0: {} + + ms@2.0.0: {} + + ms@2.1.2: {} + + mute-stream@0.0.8: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + naive-ui@2.42.0(vue@3.4.38(typescript@5.5.4)): + dependencies: + '@css-render/plugin-bem': 0.15.14(css-render@0.15.14) + '@css-render/vue3-ssr': 0.15.14(vue@3.4.38(typescript@5.5.4)) + '@types/katex': 0.16.7 + '@types/lodash': 4.17.7 + '@types/lodash-es': 4.17.12 + async-validator: 4.2.5 + css-render: 0.15.14 + csstype: 3.1.3 + date-fns: 3.6.0 + date-fns-tz: 3.2.0(date-fns@3.6.0) + evtd: 0.2.4 + highlight.js: 11.10.0 + lodash: 4.17.21 + lodash-es: 4.17.21 + seemly: 0.3.8 + treemate: 0.3.11 + vdirs: 0.1.8(vue@3.4.38(typescript@5.5.4)) + vooks: 0.2.12(vue@3.4.38(typescript@5.5.4)) + vue: 3.4.38(typescript@5.5.4) + vueuc: 0.4.64(vue@3.4.38(typescript@5.5.4)) + + nanoid@3.3.7: {} + + natural-compare@1.4.0: {} + + needle@3.3.1: + dependencies: + iconv-lite: 0.6.3 + sax: 1.4.1 + optional: true + + neo-async@2.6.2: + optional: true + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.7.0 + + node-html-parser@5.4.2: + dependencies: + css-select: 4.3.0 + he: 1.2.0 + + node-int64@0.4.0: {} + + node-releases@2.0.18: {} + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + normalize-url@4.5.1: {} + + npm-check-updates@17.1.1: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + object-inspect@1.13.2: {} + + object-is@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + + object-keys@1.1.1: {} + + on-finished@2.3.0: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + os-tmpdir@1.0.2: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.1.1 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.0: {} + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.7.0 + + parchment@1.1.4: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.24.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-node-version@1.0.1: {} + + parse-passwd@1.0.0: {} + + parseurl@1.3.3: {} + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.7.0 + + path-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.7.0 + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.0 + minipass: 7.1.2 + + path-to-regexp@6.2.2: {} + + path-type@4.0.0: {} + + pathe@0.2.0: {} + + pathe@1.1.2: {} + + picocolors@1.1.0: {} + + picomatch@2.3.1: {} + + picomatch@3.0.1: {} + + pidtree@0.6.0: {} + + pify@2.3.0: {} + + pify@4.0.1: + optional: true + + pinia@2.2.2(typescript@5.5.4)(vue@3.4.38(typescript@5.5.4)): + dependencies: + '@vue/devtools-api': 6.6.3 + vue: 3.4.38(typescript@5.5.4) + vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) + optionalDependencies: + typescript: 5.5.4 + + pinkie-promise@2.0.1: + dependencies: + pinkie: 2.0.4 + + pinkie@2.0.4: {} + + pinyin-pro@3.24.2: {} + + pirates@4.0.6: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-types@1.2.0: + dependencies: + confbox: 0.1.7 + mlly: 1.7.1 + pathe: 1.1.2 + + postcss-import@15.1.0(postcss@8.4.44): + dependencies: + postcss: 8.4.44 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-js@4.0.1(postcss@8.4.44): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.44 + + postcss-load-config@4.0.2(postcss@8.4.44)(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)): + dependencies: + lilconfig: 3.1.2 + yaml: 2.5.0 + optionalDependencies: + postcss: 8.4.44 + ts-node: 10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4) + + postcss-media-query-parser@0.2.3: {} + + postcss-nested@6.2.0(postcss@8.4.44): + dependencies: + postcss: 8.4.44 + postcss-selector-parser: 6.1.2 + + postcss-resolve-nested-selector@0.1.6: {} + + postcss-safe-parser@7.0.0(postcss@8.4.44): + dependencies: + postcss: 8.4.44 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-sorting@8.0.2(postcss@8.4.44): + dependencies: + postcss: 8.4.44 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.44: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.0 + source-map-js: 1.2.0 + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier@3.3.3: {} + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + pretty-quick@4.0.0(prettier@3.3.3): + dependencies: + execa: 5.1.1 + find-up: 5.0.0 + ignore: 5.3.2 + mri: 1.2.0 + picocolors: 1.1.0 + picomatch: 3.0.1 + prettier: 3.3.3 + tslib: 2.7.0 + + print-js@1.6.0: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + proxy-from-env@1.1.0: {} + + prr@1.0.1: + optional: true + + punycode@2.3.1: {} + + pure-rand@6.1.0: {} + + qrcode.vue@3.4.1(vue@3.4.38(typescript@5.5.4)): + dependencies: + vue: 3.4.38(typescript@5.5.4) + + qs@6.13.0: + dependencies: + side-channel: 1.0.6 + + queue-microtask@1.2.3: {} + + quill-delta@3.6.3: + dependencies: + deep-equal: 1.1.2 + extend: 3.0.2 + fast-diff: 1.1.2 + + quill-delta@4.2.2: + dependencies: + fast-diff: 1.2.0 + lodash.clonedeep: 4.5.0 + lodash.isequal: 4.5.0 + + quill-delta@5.1.0: + dependencies: + fast-diff: 1.3.0 + lodash.clonedeep: 4.5.0 + lodash.isequal: 4.5.0 + + quill-image-uploader@1.3.0(quill@1.3.7): + dependencies: + quill: 1.3.7 + + quill-magic-url@4.2.0: + dependencies: + '@types/quill': 2.0.14 + normalize-url: 4.5.1 + quill-delta: 3.6.3 + + quill@1.3.7: + dependencies: + clone: 2.1.2 + deep-equal: 1.1.2 + eventemitter3: 2.0.3 + extend: 3.0.2 + parchment: 1.1.4 + quill-delta: 3.6.3 + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + optional: true + + react-is@18.3.1: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + regexp.prototype.flags@1.5.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + + relateurl@0.2.7: {} + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve.exports@2.0.2: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + reusify@1.0.4: {} + + rfdc@1.4.1: {} + + rimraf@6.0.1: + dependencies: + glob: 11.0.0 + package-json-from-dist: 1.0.0 + + rollup@4.21.2: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.21.2 + '@rollup/rollup-android-arm64': 4.21.2 + '@rollup/rollup-darwin-arm64': 4.21.2 + '@rollup/rollup-darwin-x64': 4.21.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.21.2 + '@rollup/rollup-linux-arm-musleabihf': 4.21.2 + '@rollup/rollup-linux-arm64-gnu': 4.21.2 + '@rollup/rollup-linux-arm64-musl': 4.21.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.21.2 + '@rollup/rollup-linux-riscv64-gnu': 4.21.2 + '@rollup/rollup-linux-s390x-gnu': 4.21.2 + '@rollup/rollup-linux-x64-gnu': 4.21.2 + '@rollup/rollup-linux-x64-musl': 4.21.2 + '@rollup/rollup-win32-arm64-msvc': 4.21.2 + '@rollup/rollup-win32-ia32-msvc': 4.21.2 + '@rollup/rollup-win32-x64-msvc': 4.21.2 + fsevents: 2.3.3 + + run-async@2.4.1: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.1: + dependencies: + tslib: 2.7.0 + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sax@1.4.1: + optional: true + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + optional: true + + seemly@0.3.8: {} + + select@1.1.2: {} + + semver@5.7.2: + optional: true + + semver@6.3.1: {} + + semver@7.6.3: {} + + sentence-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.7.0 + upper-case-first: 2.0.2 + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + optional: true + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.7.0 + + sortablejs@1.14.0: {} + + source-map-js@1.2.0: {} + + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + sourcemap-codec@1.4.8: {} + + spark-md5@3.0.2: {} + + split2@4.2.0: {} + + sprintf-js@1.0.3: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + statuses@1.5.0: {} + + string-argv@0.3.2: {} + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.0.1 + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-json-comments@3.1.1: {} + + strip-outer@1.0.1: + dependencies: + escape-string-regexp: 1.0.5 + + style-mod@4.1.2: {} + + stylelint-config-prettier@9.0.5(stylelint@16.9.0(typescript@5.5.4)): + dependencies: + stylelint: 16.9.0(typescript@5.5.4) + + stylelint-config-recommended@14.0.1(stylelint@16.9.0(typescript@5.5.4)): + dependencies: + stylelint: 16.9.0(typescript@5.5.4) + + stylelint-config-standard@36.0.1(stylelint@16.9.0(typescript@5.5.4)): + dependencies: + stylelint: 16.9.0(typescript@5.5.4) + stylelint-config-recommended: 14.0.1(stylelint@16.9.0(typescript@5.5.4)) + + stylelint-order@6.0.4(stylelint@16.9.0(typescript@5.5.4)): + dependencies: + postcss: 8.4.44 + postcss-sorting: 8.0.2(postcss@8.4.44) + stylelint: 16.9.0(typescript@5.5.4) + + stylelint-scss@6.5.1(stylelint@16.9.0(typescript@5.5.4)): + dependencies: + css-tree: 2.3.1 + is-plain-object: 5.0.0 + known-css-properties: 0.34.0 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.6 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + stylelint: 16.9.0(typescript@5.5.4) + + stylelint@16.9.0(typescript@5.5.4): + dependencies: + '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) + '@csstools/css-tokenizer': 3.0.1 + '@csstools/media-query-list-parser': 3.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1) + '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.2) + '@dual-bundle/import-meta-resolve': 4.1.0 + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 9.0.0(typescript@5.5.4) + css-functions-list: 3.2.2 + css-tree: 2.3.1 + debug: 4.3.6 + fast-glob: 3.3.2 + fastest-levenshtein: 1.0.16 + file-entry-cache: 9.1.0 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.3.1 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.34.0 + mathml-tag-names: 2.1.3 + meow: 13.2.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + picocolors: 1.1.0 + postcss: 8.4.44 + postcss-resolve-nested-selector: 0.1.6 + postcss-safe-parser: 7.0.0(postcss@8.4.44) + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + string-width: 4.2.3 + strip-ansi: 7.1.0 + supports-hyperlinks: 3.1.0 + svg-tags: 1.0.0 + table: 6.8.2 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + - typescript + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@3.1.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-tags@1.0.0: {} + + synckit@0.9.1: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.7.0 + + table@6.8.2: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.0 + postcss: 8.4.44 + postcss-import: 15.1.0(postcss@8.4.44) + postcss-js: 4.0.1(postcss@8.4.44) + postcss-load-config: 4.0.2(postcss@8.4.44)(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4)) + postcss-nested: 6.2.0(postcss@8.4.44) + postcss-selector-parser: 6.1.2 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tapable@2.2.1: + optional: true + + terser-webpack-plugin@5.3.10(@swc/core@1.7.23)(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.23)(esbuild@0.23.1)): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.31.6 + webpack: 5.94.0(@swc/core@1.7.23)(esbuild@0.23.1) + optionalDependencies: + '@swc/core': 1.7.23 + esbuild: 0.23.1 + optional: true + + terser@5.31.6: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.12.1 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + text-extensions@2.4.0: {} + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + throttle-debounce@5.0.2: {} + + through@2.3.8: {} + + tiny-emitter@2.1.0: {} + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + tmpl@1.0.5: {} + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + treemate@0.3.11: {} + + trim-repeated@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 + + ts-api-utils@1.3.0(typescript@5.5.4): + dependencies: + typescript: 5.5.4 + + ts-interface-checker@0.1.13: {} + + ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.5.2)(typescript@5.5.4): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.5.2 + acorn: 8.12.1 + acorn-walk: 8.3.3 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.5.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.7.23 + optional: true + + tslib@2.3.0: {} + + tslib@2.7.0: {} + + tsx@4.19.0: + dependencies: + esbuild: 0.23.1 + get-tsconfig: 4.8.0 + optionalDependencies: + fsevents: 2.3.3 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + typescript@5.5.4: {} + + ufo@1.5.4: {} + + undici-types@6.19.8: {} + + unicorn-magic@0.1.0: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + unplugin-vue-components@0.27.4(@babel/parser@7.25.6)(rollup@4.21.2)(vue@3.4.38(typescript@5.5.4)): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + chokidar: 3.6.0 + debug: 4.3.6 + fast-glob: 3.3.2 + local-pkg: 0.5.0 + magic-string: 0.30.11 + minimatch: 9.0.5 + mlly: 1.7.1 + unplugin: 1.12.3 + vue: 3.4.38(typescript@5.5.4) + optionalDependencies: + '@babel/parser': 7.25.6 + transitivePeerDependencies: + - rollup + - supports-color + + unplugin@1.12.3: + dependencies: + acorn: 8.12.1 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.2 + + update-browserslist-db@1.1.0(browserslist@4.23.3): + dependencies: + browserslist: 4.23.3 + escalade: 3.2.0 + picocolors: 1.1.0 + + upper-case-first@2.0.2: + dependencies: + tslib: 2.7.0 + + upper-case@2.0.2: + dependencies: + tslib: 2.7.0 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + utils-merge@1.0.1: {} + + uuid@10.0.0: {} + + v8-compile-cache-lib@3.0.1: + optional: true + + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + + vdirs@0.1.8(vue@3.4.38(typescript@5.5.4)): + dependencies: + evtd: 0.2.4 + vue: 3.4.38(typescript@5.5.4) + + vfonts@0.0.3: {} + + vite-plugin-compression@0.5.1(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6)): + dependencies: + chalk: 4.1.2 + debug: 4.3.6 + fs-extra: 10.1.0 + vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6) + transitivePeerDependencies: + - supports-color + + vite-plugin-html@3.2.2(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6)): + dependencies: + '@rollup/pluginutils': 4.2.1 + colorette: 2.0.20 + connect-history-api-fallback: 1.6.0 + consola: 2.15.3 + dotenv: 16.4.5 + dotenv-expand: 8.0.3 + ejs: 3.1.10 + fast-glob: 3.3.2 + fs-extra: 10.1.0 + html-minifier-terser: 6.1.0 + node-html-parser: 5.4.2 + pathe: 0.2.0 + vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6) + + vite-plugin-mock@3.0.2(esbuild@0.23.1)(mockjs@1.1.0)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6)): + dependencies: + bundle-require: 4.2.1(esbuild@0.23.1) + chokidar: 3.6.0 + connect: 3.7.0 + debug: 4.3.6 + esbuild: 0.23.1 + fast-glob: 3.3.2 + mockjs: 1.1.0 + path-to-regexp: 6.2.2 + picocolors: 1.1.0 + vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6) + transitivePeerDependencies: + - supports-color + + vite-plugin-require-transform@1.0.21: + dependencies: + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + + vite-plugin-style-import@2.0.0(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6)): + dependencies: + '@rollup/pluginutils': 4.2.1 + change-case: 4.1.2 + console: 0.7.2 + es-module-lexer: 0.9.3 + fs-extra: 10.1.0 + magic-string: 0.25.9 + pathe: 0.2.0 + vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6) + + vite-plugin-top-level-await@1.4.4(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6)): + dependencies: + '@rollup/plugin-virtual': 3.0.2(rollup@4.21.2) + '@swc/core': 1.7.23 + uuid: 10.0.0 + vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6) + transitivePeerDependencies: + - '@swc/helpers' + - rollup + + vite-plugin-vue-setup-extend@0.4.0(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6)): + dependencies: + '@vue/compiler-sfc': 3.4.38 + magic-string: 0.25.9 + vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6) + + vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(terser@5.31.6): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.44 + rollup: 4.21.2 + optionalDependencies: + '@types/node': 22.5.2 + fsevents: 2.3.3 + less: 4.2.0 + terser: 5.31.6 + + vooks@0.2.12(vue@3.4.38(typescript@5.5.4)): + dependencies: + evtd: 0.2.4 + vue: 3.4.38(typescript@5.5.4) + + vue-demi@0.14.10(vue@3.4.38(typescript@5.5.4)): + dependencies: + vue: 3.4.38(typescript@5.5.4) + + vue-draggable-next@2.2.1(sortablejs@1.14.0)(vue@3.4.38(typescript@5.5.4)): + dependencies: + sortablejs: 1.14.0 + vue: 3.4.38(typescript@5.5.4) + + vue-eslint-parser@9.4.3(eslint@9.9.1(jiti@1.21.6)): + dependencies: + debug: 4.3.6 + eslint: 9.9.1(jiti@1.21.6) + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + lodash: 4.17.21 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + + vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)): + dependencies: + '@vue/devtools-api': 6.6.3 + vue: 3.4.38(typescript@5.5.4) + + vue-types@5.1.3(vue@3.4.38(typescript@5.5.4)): + dependencies: + is-plain-object: 5.0.0 + optionalDependencies: + vue: 3.4.38(typescript@5.5.4) + + vue-waterfall-plugin-next@2.6.0: {} + + vue3-json-viewer@2.2.2(vue@3.4.38(typescript@5.5.4)): + dependencies: + clipboard: 2.0.11 + vue: 3.4.38(typescript@5.5.4) + + vue@3.4.38(typescript@5.5.4): + dependencies: + '@vue/compiler-dom': 3.4.38 + '@vue/compiler-sfc': 3.4.38 + '@vue/runtime-dom': 3.4.38 + '@vue/server-renderer': 3.4.38(vue@3.4.38(typescript@5.5.4)) + '@vue/shared': 3.4.38 + optionalDependencies: + typescript: 5.5.4 + + vuedraggable@4.1.0(vue@3.4.38(typescript@5.5.4)): + dependencies: + sortablejs: 1.14.0 + vue: 3.4.38(typescript@5.5.4) + + vueuc@0.4.64(vue@3.4.38(typescript@5.5.4)): + dependencies: + '@css-render/vue3-ssr': 0.15.14(vue@3.4.38(typescript@5.5.4)) + '@juggle/resize-observer': 3.4.0 + css-render: 0.15.14 + evtd: 0.2.4 + seemly: 0.3.8 + vdirs: 0.1.8(vue@3.4.38(typescript@5.5.4)) + vooks: 0.2.12(vue@3.4.38(typescript@5.5.4)) + vue: 3.4.38(typescript@5.5.4) + + w3c-keyname@2.2.8: {} + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + watchpack@2.4.2: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + optional: true + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + webpack-sources@3.2.3: {} + + webpack-virtual-modules@0.6.2: {} + + webpack@5.94.0(@swc/core@1.7.23)(esbuild@0.23.1): + dependencies: + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.12.1 + acorn-import-attributes: 1.9.5(acorn@8.12.1) + browserslist: 4.23.3 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.1 + es-module-lexer: 1.5.4 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(@swc/core@1.7.23)(esbuild@0.23.1)(webpack@5.94.0(@swc/core@1.7.23)(esbuild@0.23.1)) + watchpack: 2.4.2 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + optional: true + + weixin-js-sdk@1.6.5: {} + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + + xml-name-validator@4.0.0: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yaml@2.5.0: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yn@3.1.1: + optional: true + + yocto-queue@0.1.0: {} + + yocto-queue@1.1.1: {} + + zrender@5.6.0: + dependencies: + tslib: 2.3.0 diff --git a/web/postcss.config.cjs b/web/postcss.config.cjs new file mode 100644 index 0000000..12a703d --- /dev/null +++ b/web/postcss.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/web/prettier.config.cjs b/web/prettier.config.cjs new file mode 100644 index 0000000..b4e993a --- /dev/null +++ b/web/prettier.config.cjs @@ -0,0 +1,20 @@ +module.exports = { + printWidth: 100, + tabWidth: 2, + useTabs: false, + semi: true, + vueIndentScriptAndStyle: true, + singleQuote: true, + quoteProps: 'as-needed', + bracketSpacing: true, + trailingComma: 'es5', + jsxBracketSameLine: false, + jsxSingleQuote: false, + arrowParens: 'always', + insertPragma: false, + requirePragma: false, + proseWrap: 'never', + htmlWhitespaceSensitivity: 'strict', + endOfLine: 'auto', + rangeStart: 0, +}; diff --git a/web/public/favicon.ico b/web/public/favicon.ico new file mode 100644 index 0000000..96de823 Binary files /dev/null and b/web/public/favicon.ico differ diff --git a/web/src/App.vue b/web/src/App.vue new file mode 100644 index 0000000..d8e9d32 --- /dev/null +++ b/web/src/App.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/web/src/api/addons/.gitkeep b/web/src/api/addons/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/web/src/api/addons/hgexample/comp/index.ts b/web/src/api/addons/hgexample/comp/index.ts new file mode 100644 index 0000000..f76dfdd --- /dev/null +++ b/web/src/api/addons/hgexample/comp/index.ts @@ -0,0 +1,13 @@ +import { http } from '@/utils/http/axios'; +import type { UploadFileParams } from '@/utils/http/axios/types'; + +// 导入Excel +export function ImportExcel(params: UploadFileParams) { + return http.uploadFile( + { + url: '/hgexample/comp/importExcel', + method: 'post', + }, + params + ); +} diff --git a/web/src/api/addons/hgexample/config/index.ts b/web/src/api/addons/hgexample/config/index.ts new file mode 100644 index 0000000..1a75e20 --- /dev/null +++ b/web/src/api/addons/hgexample/config/index.ts @@ -0,0 +1,17 @@ +import { http } from '@/utils/http/axios'; + +export function getConfig(params) { + return http.request({ + url: '/hgexample/config/get', + method: 'get', + params, + }); +} + +export function updateConfig(params) { + return http.request({ + url: '/hgexample/config/update', + method: 'post', + params, + }); +} diff --git a/web/src/api/addons/hgexample/table/index.ts b/web/src/api/addons/hgexample/table/index.ts new file mode 100644 index 0000000..2234f50 --- /dev/null +++ b/web/src/api/addons/hgexample/table/index.ts @@ -0,0 +1,68 @@ +import { http, jumpExport } from '@/utils/http/axios'; + +// 列表 +export function List(params) { + return http.request({ + url: '/hgexample/table/list', + method: 'get', + params, + }); +} + +// 删除/批量删除 +export function Delete(params) { + return http.request({ + url: '/hgexample/table/delete', + method: 'POST', + params, + }); +} + +// 添加/编辑 +export function Edit(params) { + return http.request({ + url: '/hgexample/table/edit', + method: 'POST', + params, + }); +} + +// 修改状态 +export function Status(params) { + return http.request({ + url: '/hgexample/table/status', + method: 'POST', + params, + }); +} + +// 操作开关 +export function Switch(params) { + return http.request({ + url: '/hgexample/table/switch', + method: 'POST', + params, + }); +} + +// 详情 +export function View(params) { + return http.request({ + url: '/hgexample/table/view', + method: 'GET', + params, + }); +} + +// 获取最大排序 +export function MaxSort() { + return http.request({ + url: '/hgexample/table/maxSort', + method: 'GET', + }); +} + +// 导出 +export function Export(params) { + jumpExport('/hgexample/table/export', params); +} diff --git a/web/src/api/addons/hgexample/tenantOrder/index.ts b/web/src/api/addons/hgexample/tenantOrder/index.ts new file mode 100644 index 0000000..4499ef3 --- /dev/null +++ b/web/src/api/addons/hgexample/tenantOrder/index.ts @@ -0,0 +1,42 @@ +import { http, jumpExport } from '@/utils/http/axios'; + +// 获取多租户功能演示列表 +export function List(params) { + return http.request({ + url: '/hgexample/tenantOrder/list', + method: 'get', + params, + }); +} + +// 删除/批量删除多租户功能演示 +export function Delete(params) { + return http.request({ + url: '/hgexample/tenantOrder/delete', + method: 'POST', + params, + }); +} + +// 添加/编辑多租户功能演示 +export function Edit(params) { + return http.request({ + url: '/hgexample/tenantOrder/edit', + method: 'POST', + params, + }); +} + +// 获取多租户功能演示指定详情 +export function View(params) { + return http.request({ + url: '/hgexample/tenantOrder/view', + method: 'GET', + params, + }); +} + +// 导出多租户功能演示 +export function Export(params) { + jumpExport('/hgexample/tenantOrder/export', params); +} \ No newline at end of file diff --git a/web/src/api/addons/hgexample/treeTable/index.ts b/web/src/api/addons/hgexample/treeTable/index.ts new file mode 100644 index 0000000..cd3e226 --- /dev/null +++ b/web/src/api/addons/hgexample/treeTable/index.ts @@ -0,0 +1,76 @@ +import { http, jumpExport } from '@/utils/http/axios'; + +// 列表 +export function List(params) { + return http.request({ + url: '/hgexample/treeTable/list', + method: 'get', + params, + }); +} + +// 删除/批量删除 +export function Delete(params) { + return http.request({ + url: '/hgexample/treeTable/delete', + method: 'POST', + params, + }); +} + +// 添加/编辑 +export function Edit(params) { + return http.request({ + url: '/hgexample/treeTable/edit', + method: 'POST', + params, + }); +} + +// 修改状态 +export function Status(params) { + return http.request({ + url: '/hgexample/treeTable/status', + method: 'POST', + params, + }); +} + +// 操作开关 +export function Switch(params) { + return http.request({ + url: '/hgexample/treeTable/switch', + method: 'POST', + params, + }); +} + +// 详情 +export function View(params) { + return http.request({ + url: '/hgexample/treeTable/view', + method: 'GET', + params, + }); +} + +// 获取最大排序 +export function MaxSort() { + return http.request({ + url: '/hgexample/treeTable/maxSort', + method: 'GET', + }); +} + +// 树形选项 +export function Select() { + return http.request({ + url: '/hgexample/treeTable/select', + method: 'get', + }); +} + +// 导出 +export function Export(params) { + jumpExport('/hgexample/treeTable/export', params); +} diff --git a/web/src/api/apply/attachment.ts b/web/src/api/apply/attachment.ts new file mode 100644 index 0000000..7a21eef --- /dev/null +++ b/web/src/api/apply/attachment.ts @@ -0,0 +1,58 @@ +import { http } from '@/utils/http/axios'; + +export function List(params) { + return http.request({ + url: '/attachment/list', + method: 'get', + params, + }); +} + +export function Delete(params) { + return http.request({ + url: '/attachment/delete', + method: 'POST', + params, + }); +} + +export function Edit(params) { + return http.request({ + url: '/attachment/edit', + method: 'POST', + params, + }); +} + +export function Status(params) { + return http.request({ + url: '/attachment/status', + method: 'POST', + params, + }); +} + +export function View(params) { + return http.request({ + url: '/attachment/view', + method: 'GET', + params, + }); +} + +export function ClearKind(params) { + return http.request({ + url: '/attachment/clearKind', + method: 'POST', + params, + }); +} + +// 链接图片转存 +export function ImageTransferStorage(params) { + return http.request({ + url: '/upload/imageTransferStorage', + method: 'POST', + params, + }); +} diff --git a/web/src/api/apply/notice.ts b/web/src/api/apply/notice.ts new file mode 100644 index 0000000..dc7851c --- /dev/null +++ b/web/src/api/apply/notice.ts @@ -0,0 +1,104 @@ +import { http } from '@/utils/http/axios'; + +export function List(params) { + return http.request({ + url: '/notice/list', + method: 'get', + params, + }); +} + +export function Delete(params) { + return http.request({ + url: '/notice/delete', + method: 'POST', + params, + }); +} + +export function Edit(params) { + return http.request({ + url: '/notice/edit', + method: 'POST', + params, + }); +} + +export function Status(params) { + return http.request({ + url: '/notice/status', + method: 'POST', + params, + }); +} + +export function View(params) { + return http.request({ + url: '/notice/view', + method: 'GET', + params, + }); +} + +// 获取最大排序 +export function MaxSort() { + return http.request({ + url: '/notice/maxSort', + method: 'GET', + }); +} + +export function EditNotify(params) { + return http.request({ + url: '/notice/editNotify', + method: 'POST', + params, + }); +} + +export function EditNotice(params) { + return http.request({ + url: '/notice/editNotice', + method: 'POST', + params, + }); +} + +export function EditLetter(params) { + return http.request({ + url: '/notice/editLetter', + method: 'POST', + params, + }); +} + +export function ReadAll(params) { + return http.request({ + url: '/notice/readAll', + method: 'POST', + params, + }); +} + +export function PullMessages() { + return http.request({ + url: '/notice/pullMessages', + method: 'get', + }); +} + +export function UpRead(params) { + return http.request({ + url: '/notice/upRead', + method: 'POST', + params, + }); +} + +export function MessageList(params) { + return http.request({ + url: '/notice/messageList', + method: 'get', + params, + }); +} diff --git a/web/src/api/apply/provinces.ts b/web/src/api/apply/provinces.ts new file mode 100644 index 0000000..8a710a0 --- /dev/null +++ b/web/src/api/apply/provinces.ts @@ -0,0 +1,103 @@ +import { http } from '@/utils/http/axios'; + +export function List(params) { + return http.request({ + url: '/provinces/list', + method: 'get', + params, + }); +} + +export function Delete(params) { + return http.request({ + url: '/provinces/delete', + method: 'POST', + params, + }); +} + +export function Edit(params) { + return http.request({ + url: '/provinces/edit', + method: 'POST', + params, + }); +} + +export function Status(params) { + return http.request({ + url: '/provinces/status', + method: 'POST', + params, + }); +} + +export function View(params) { + return http.request({ + url: '/provinces/view', + method: 'GET', + params, + }); +} + +// 获取最大排序 +export function MaxSort() { + return http.request({ + url: '/provinces/maxSort', + method: 'GET', + }); +} + +/** + * 获取省市区关系树选项列表 + */ +export function getProvincesTree() { + return http.request({ + url: '/provinces/tree', + method: 'GET', + }); +} + +/** + * 获取省市区下级列表 + */ +export function getProvincesChildrenList(params) { + return http.request({ + url: '/provinces/childrenList', + method: 'GET', + params, + }); +} + +/** + * 唯一省市区ID + */ +export function CheckProvincesUniqueId(params) { + return http.request({ + url: '/provinces/uniqueId', + method: 'GET', + params, + }); +} + +/** + * 省市区选项 + */ +export function ProvincesSelect(params) { + return http.request({ + url: '/provinces/select', + method: 'GET', + params, + }); +} + +/** + * 获取指定城市标签 + */ +export function GetCityLabel(params) { + return http.request({ + url: '/provinces/cityLabel', + method: 'GET', + params, + }); +} diff --git a/web/src/api/base/index.ts b/web/src/api/base/index.ts new file mode 100644 index 0000000..c1f2982 --- /dev/null +++ b/web/src/api/base/index.ts @@ -0,0 +1,47 @@ +import { http } from '@/utils/http/axios'; +import { useUserStoreWidthOut } from '@/store/modules/user'; +import type { UploadFileParams } from '@/utils/http/axios/types'; + +// 获取验证码 +export function GetCaptcha() { + return http.request({ + url: '/site/captcha', + method: 'get', + }); +} + +// 上传图片 +export function UploadImage(params) { + const useUserStore = useUserStoreWidthOut(); + const headers = { + Authorization: useUserStore.token, + uploadType: 'default', + 'Content-Type': 'multipart/form-data', + }; + return http.request({ + url: '/upload/file', + method: 'post', + params, + headers, + }); +} + +// 检查文件分片 +export function CheckMultipart(params) { + return http.request({ + url: '/upload/checkMultipart', + method: 'post', + params, + }); +} + +// 分片上传 +export function UploadPart(params: UploadFileParams) { + return http.uploadFile( + { + url: '/upload/uploadPart', + method: 'post', + }, + params + ); +} diff --git a/web/src/api/cash/index.ts b/web/src/api/cash/index.ts new file mode 100644 index 0000000..7c45fa4 --- /dev/null +++ b/web/src/api/cash/index.ts @@ -0,0 +1,41 @@ +import { http } from '@/utils/http/axios'; + +export function List(params) { + return http.request({ + url: '/cash/list', + method: 'get', + params, + }); +} + +export function Edit(params) { + return http.request({ + url: '/cash/edit', + method: 'POST', + params, + }); +} + +export function View(params) { + return http.request({ + url: '/cash/view', + method: 'GET', + params, + }); +} + +export function Apply(params) { + return http.request({ + url: '/cash/apply', + method: 'POST', + params, + }); +} + +export function Payment(params) { + return http.request({ + url: '/cash/payment', + method: 'POST', + params, + }); +} diff --git a/web/src/api/creditsLog/index.ts b/web/src/api/creditsLog/index.ts new file mode 100644 index 0000000..5333e6a --- /dev/null +++ b/web/src/api/creditsLog/index.ts @@ -0,0 +1,23 @@ +import { http, jumpExport } from '@/utils/http/axios'; + +// 获取资产变动列表 +export function List(params) { + return http.request({ + url: '/creditsLog/list', + method: 'get', + params, + }); +} + +// 导出资产变动 +export function Export(params) { + jumpExport('/creditsLog/export', params); +} + +// 获取变动状态选项 +export function Option() { + return http.request({ + url: '/creditsLog/option', + method: 'GET', + }); +} diff --git a/web/src/api/curdDemo/index.ts b/web/src/api/curdDemo/index.ts new file mode 100644 index 0000000..7ef3e2d --- /dev/null +++ b/web/src/api/curdDemo/index.ts @@ -0,0 +1,68 @@ +import { http, jumpExport } from '@/utils/http/axios'; + +// 获取CURD列表列表 +export function List(params) { + return http.request({ + url: '/curdDemo/list', + method: 'get', + params, + }); +} + +// 删除/批量删除CURD列表 +export function Delete(params) { + return http.request({ + url: '/curdDemo/delete', + method: 'POST', + params, + }); +} + +// 添加/编辑CURD列表 +export function Edit(params) { + return http.request({ + url: '/curdDemo/edit', + method: 'POST', + params, + }); +} + +// 修改CURD列表状态 +export function Status(params) { + return http.request({ + url: '/curdDemo/status', + method: 'POST', + params, + }); +} + +// 操作CURD列表开关 +export function Switch(params) { + return http.request({ + url: '/curdDemo/switch', + method: 'POST', + params, + }); +} + +// 获取CURD列表指定详情 +export function View(params) { + return http.request({ + url: '/curdDemo/view', + method: 'GET', + params, + }); +} + +// 获取CURD列表最大排序 +export function MaxSort() { + return http.request({ + url: '/curdDemo/maxSort', + method: 'GET', + }); +} + +// 导出CURD列表 +export function Export(params) { + jumpExport('/curdDemo/export', params); +} \ No newline at end of file diff --git a/web/src/api/dashboard/console.ts b/web/src/api/dashboard/console.ts new file mode 100644 index 0000000..dedbdd3 --- /dev/null +++ b/web/src/api/dashboard/console.ts @@ -0,0 +1,9 @@ +import { http } from '@/utils/http/axios'; + +//获取主控台信息 +export function getConsoleInfo() { + return http.request({ + url: '/console/stat', + method: 'get', + }); +} diff --git a/web/src/api/develop/addons.ts b/web/src/api/develop/addons.ts new file mode 100644 index 0000000..e78d8bd --- /dev/null +++ b/web/src/api/develop/addons.ts @@ -0,0 +1,57 @@ +import { http } from '@/utils/http/axios'; + +export function List(params) { + return http.request({ + url: '/addons/list', + method: 'get', + params, + }); +} + +export function View(params) { + return http.request({ + url: '/addons/view', + method: 'GET', + params, + }); +} + +export function Status(params) { + return http.request({ + url: '/addons/status', + method: 'POST', + params, + }); +} + +export function Build(params) { + return http.request({ + url: '/addons/build', + method: 'post', + params, + }); +} + +export function Install(params) { + return http.request({ + url: '/addons/install', + method: 'post', + params, + }); +} + +export function Upgrade(params) { + return http.request({ + url: '/addons/upgrade', + method: 'post', + params, + }); +} + +export function UnInstall(params) { + return http.request({ + url: '/addons/uninstall', + method: 'post', + params, + }); +} diff --git a/web/src/api/develop/code.ts b/web/src/api/develop/code.ts new file mode 100644 index 0000000..e6d5e93 --- /dev/null +++ b/web/src/api/develop/code.ts @@ -0,0 +1,87 @@ +import { http } from '@/utils/http/axios'; + +export function List(params) { + return http.request({ + url: '/genCodes/list', + method: 'get', + params, + }); +} +export function Delete(params) { + return http.request({ + url: '/genCodes/delete', + method: 'POST', + params, + }); +} + +export function View(params) { + return http.request({ + url: '/genCodes/view', + method: 'GET', + params, + }); +} + +export function Edit(params) { + return http.request({ + url: '/genCodes/edit', + method: 'POST', + params, + }); +} + +export function Status(params) { + return http.request({ + url: '/genCodes/status', + method: 'POST', + params, + }); +} +export function Selects(params) { + return http.request({ + url: '/genCodes/selects', + method: 'get', + params, + }); +} + +export function TableSelect(params) { + return http.request({ + url: '/genCodes/tableSelect', + method: 'get', + params, + }); +} + +export function ColumnSelect(params) { + return http.request({ + url: '/genCodes/columnSelect', + method: 'get', + params, + }); +} + +export function ColumnList(params) { + return http.request({ + url: '/genCodes/columnList', + method: 'get', + params, + }); +} + +export function Preview(params) { + return http.request({ + url: '/genCodes/preview', + method: 'post', + params, + }); +} + +export function Build(params) { + return http.request({ + url: '/genCodes/build', + method: 'post', + params, + }); +} diff --git a/web/src/api/dict/dict.ts b/web/src/api/dict/dict.ts new file mode 100644 index 0000000..9f5e1da --- /dev/null +++ b/web/src/api/dict/dict.ts @@ -0,0 +1,110 @@ +import { http } from '@/utils/http/axios'; + +/** + * 获取字典类型tree + * @param params + */ +export function getDictTree(params?) { + return http.request({ + url: '/dictType/tree', + method: 'GET', + params, + }); +} + +/** + * 编辑字典类型 + * @param params + * @constructor + */ +export function EditDict(params?) { + return http.request({ + url: '/dictType/edit', + method: 'POST', + params, + }); +} + +/** + * 删除字典类型 + * @param params + * @constructor + */ +export function DeleteDict(params?) { + return http.request({ + url: '/dictType/delete', + method: 'POST', + params, + }); +} + +/** + * 获取字典类型选项 + * @param params + */ +export function getDictSelect(params?) { + return http.request({ + url: '/dictType/tree', + method: 'GET', + params, + }); +} + +/** + * 编辑字典数据 + * @param params + * @constructor + */ +export function EditData(params?) { + return http.request({ + url: '/dictData/edit', + method: 'POST', + params, + }); +} + +/** + * 删除字典数据 + * @param params + * @constructor + */ +export function DeleteData(params?) { + return http.request({ + url: '/dictData/delete', + method: 'POST', + params, + }); +} + +/** + * 获取字典数据列表 + * @param params + */ +export function getDataList(params?) { + return http.request({ + url: '/dictData/list', + method: 'GET', + params, + }); +} + +/** + * 获取字典数据列表 + */ +export function Dict(type) { + return http.request({ + url: '/dictData/option/' + type, + method: 'GET', + }); +} + +/** + * 获取字典数据列表 + */ +export function Dicts(params) { + return http.request({ + url: '/dictData/options', + method: 'GET', + params, + }); +} diff --git a/web/src/api/log/log.ts b/web/src/api/log/log.ts new file mode 100644 index 0000000..8a15260 --- /dev/null +++ b/web/src/api/log/log.ts @@ -0,0 +1,24 @@ +import { http } from '@/utils/http/axios'; + +export function getLogList(params) { + return http.request({ + url: '/log/list', + method: 'get', + params, + }); +} +export function Delete(params) { + return http.request({ + url: '/log/delete', + method: 'POST', + params, + }); +} + +export function View(params) { + return http.request({ + url: '/log/view', + method: 'GET', + params, + }); +} diff --git a/web/src/api/log/smslog.ts b/web/src/api/log/smslog.ts new file mode 100644 index 0000000..e2ab979 --- /dev/null +++ b/web/src/api/log/smslog.ts @@ -0,0 +1,24 @@ +import { http } from '@/utils/http/axios'; + +export function getLogList(params) { + return http.request({ + url: '/smsLog/list', + method: 'get', + params, + }); +} +export function Delete(params) { + return http.request({ + url: '/smsLog/delete', + method: 'POST', + params, + }); +} + +export function View(params) { + return http.request({ + url: '/smsLog/view', + method: 'GET', + params, + }); +} diff --git a/web/src/api/loginLog/index.ts b/web/src/api/loginLog/index.ts new file mode 100644 index 0000000..3f50101 --- /dev/null +++ b/web/src/api/loginLog/index.ts @@ -0,0 +1,24 @@ +import { http, jumpExport } from '@/utils/http/axios'; + +// 获取登录日志列表 +export function List(params) { + return http.request({ + url: '/loginLog/list', + method: 'get', + params, + }); +} + +// 删除/批量删除登录日志 +export function Delete(params) { + return http.request({ + url: '/loginLog/delete', + method: 'POST', + params, + }); +} + +// 导出登录日志 +export function Export(params) { + jumpExport('/loginLog/export', params); +} diff --git a/web/src/api/monitor/monitor.ts b/web/src/api/monitor/monitor.ts new file mode 100644 index 0000000..d9333f8 --- /dev/null +++ b/web/src/api/monitor/monitor.ts @@ -0,0 +1,40 @@ +import { http } from '@/utils/http/axios'; + +export function OnlineList(params) { + return http.request({ + url: '/monitor/userOnlineList', + method: 'get', + params, + }); +} + +export function Offline(params) { + return http.request({ + url: '/monitor/userOffline', + method: 'POST', + params, + }); +} + +export function NetOnlineList(params) { + return http.request({ + url: '/monitor/netOnlineList', + method: 'get', + params, + }); +} + +export function NetOffline(params) { + return http.request({ + url: '/monitor/netOffline', + method: 'POST', + params, + }); +} + +export function NetOption() { + return http.request({ + url: '/monitor/netOption', + method: 'get', + }); +} diff --git a/web/src/api/normalTreeDemo/index.ts b/web/src/api/normalTreeDemo/index.ts new file mode 100644 index 0000000..7ed7da8 --- /dev/null +++ b/web/src/api/normalTreeDemo/index.ts @@ -0,0 +1,53 @@ +import { http, jumpExport } from '@/utils/http/axios'; + +// 获取普通树表列表 +export function List(params) { + return http.request({ + url: '/normalTreeDemo/list', + method: 'get', + params, + }); +} + +// 删除/批量删除普通树表 +export function Delete(params) { + return http.request({ + url: '/normalTreeDemo/delete', + method: 'POST', + params, + }); +} + +// 添加/编辑普通树表 +export function Edit(params) { + return http.request({ + url: '/normalTreeDemo/edit', + method: 'POST', + params, + }); +} + +// 获取普通树表指定详情 +export function View(params) { + return http.request({ + url: '/normalTreeDemo/view', + method: 'GET', + params, + }); +} + +// 获取普通树表最大排序 +export function MaxSort() { + return http.request({ + url: '/normalTreeDemo/maxSort', + method: 'GET', + }); +} + +// 获取普通树表关系树选项 +export function TreeOption() { + return http.request({ + url: '/normalTreeDemo/treeOption', + method: 'GET', + }); +} \ No newline at end of file diff --git a/web/src/api/optionTreeDemo/index.ts b/web/src/api/optionTreeDemo/index.ts new file mode 100644 index 0000000..22209fc --- /dev/null +++ b/web/src/api/optionTreeDemo/index.ts @@ -0,0 +1,53 @@ +import { http, jumpExport } from '@/utils/http/axios'; + +// 获取选项树表列表 +export function List(params) { + return http.request({ + url: '/optionTreeDemo/list', + method: 'get', + params, + }); +} + +// 删除/批量删除选项树表 +export function Delete(params) { + return http.request({ + url: '/optionTreeDemo/delete', + method: 'POST', + params, + }); +} + +// 添加/编辑选项树表 +export function Edit(params) { + return http.request({ + url: '/optionTreeDemo/edit', + method: 'POST', + params, + }); +} + +// 获取选项树表指定详情 +export function View(params) { + return http.request({ + url: '/optionTreeDemo/view', + method: 'GET', + params, + }); +} + +// 获取选项树表最大排序 +export function MaxSort() { + return http.request({ + url: '/optionTreeDemo/maxSort', + method: 'GET', + }); +} + +// 获取选项树表关系树选项 +export function TreeOption() { + return http.request({ + url: '/optionTreeDemo/treeOption', + method: 'GET', + }); +} \ No newline at end of file diff --git a/web/src/api/order/index.ts b/web/src/api/order/index.ts new file mode 100644 index 0000000..d5a0d5a --- /dev/null +++ b/web/src/api/order/index.ts @@ -0,0 +1,103 @@ +import { http, jumpExport } from '@/utils/http/axios'; + +// 创建充值订单 +export function Create(params) { + return http.request({ + url: '/order/create', + method: 'post', + params, + }); +} + +// 获取充值订单列表 +export function List(params) { + return http.request({ + url: '/order/list', + method: 'get', + params, + }); +} + +// 删除/批量删除充值订单 +export function Delete(params) { + return http.request({ + url: '/order/delete', + method: 'POST', + params, + }); +} + +// 添加/编辑充值订单 +export function Edit(params) { + return http.request({ + url: '/order/edit', + method: 'POST', + params, + }); +} + +// 修改充值订单状态 +export function Status(params) { + return http.request({ + url: '/order/status', + method: 'POST', + params, + }); +} + +// 操作充值订单开关 +export function Switch(params) { + return http.request({ + url: '/order/switch', + method: 'POST', + params, + }); +} + +// 获取充值订单指定详情 +export function View(params) { + return http.request({ + url: '/order/view', + method: 'GET', + params, + }); +} + +// 获取充值订单最大排序 +export function MaxSort() { + return http.request({ + url: '/order/maxSort', + method: 'GET', + }); +} + +// 获取订单状态选项 +export function Option() { + return http.request({ + url: '/order/option', + method: 'GET', + }); +} + +// 申请订单退款 +export function ApplyRefund(params) { + return http.request({ + url: '/order/applyRefund', + method: 'post', + params, + }); +} + +// 受理订单退款 +export function AcceptRefund(params) { + return http.request({ + url: '/order/acceptRefund', + method: 'post', + params, + }); +} + +// 导出充值订单 +export function Export(params) { + jumpExport('/order/export', params); +} diff --git a/web/src/api/org/dept.ts b/web/src/api/org/dept.ts new file mode 100644 index 0000000..25ed820 --- /dev/null +++ b/web/src/api/org/dept.ts @@ -0,0 +1,68 @@ +import { http } from '@/utils/http/axios'; + +export function getDeptList(params?) { + return http.request({ + url: '/dept/list', + method: 'GET', + params, + }); +} + +export function Edit(params) { + return http.request({ + url: '/dept/edit', + method: 'POST', + params, + }); +} + +// 部门状态 +export function Status(params) { + return http.request({ + url: '/dept/status', + method: 'POST', + params, + }); +} + +// 获取管理员_部门指定详情 +export function View(params) { + return http.request({ + url: '/dept/view', + method: 'GET', + params, + }); +} + +// 获取管理员_部门最大排序 +export function MaxSort() { + return http.request({ + url: '/dept/maxSort', + method: 'GET', + }); +} + +export function Delete(params) { + return http.request({ + url: '/dept/delete', + method: 'POST', + params, + }); +} + +export function getDeptOption() { + const params = { pageSize: 100 }; + return http.request({ + url: '/dept/option', + method: 'GET', + params, + }); +} + +// 部门关系树选项 +export function TreeOption() { + return http.request({ + url: '/dept/treeOption', + method: 'GET', + }); +} diff --git a/web/src/api/org/post.ts b/web/src/api/org/post.ts new file mode 100644 index 0000000..872ccf5 --- /dev/null +++ b/web/src/api/org/post.ts @@ -0,0 +1,29 @@ +import { http } from '@/utils/http/axios'; + +export function getPostList(params?) { + return http.request({ + url: '/post/list', + method: 'GET', + params, + }); +} + +export function getPostOption(params?) { + return getPostList(params); +} + +export function Edit(params) { + return http.request({ + url: '/post/edit', + method: 'POST', + params, + }); +} + +export function Delete(params) { + return http.request({ + url: '/post/delete', + method: 'POST', + params, + }); +} diff --git a/web/src/api/org/user.ts b/web/src/api/org/user.ts new file mode 100644 index 0000000..36aa5c7 --- /dev/null +++ b/web/src/api/org/user.ts @@ -0,0 +1,73 @@ +import { http } from '@/utils/http/axios'; + +export function List(params?) { + return http.request({ + url: '/member/list', + method: 'GET', + params, + }); +} + +export function Edit(params) { + return http.request({ + url: '/member/edit', + method: 'POST', + params, + }); +} + +export function Status(params) { + return http.request({ + url: '/member/status', + method: 'POST', + params, + }); +} + +export function Delete(params) { + return http.request({ + url: '/member/delete', + method: 'POST', + params, + }); +} + +export function ResetPwd(params) { + return http.request({ + url: '/member/resetPwd', + method: 'POST', + params, + }); +} + +// 获取可选的后台用户选项 +export function GetMemberOption() { + return http.request({ + url: '/member/option', + method: 'GET', + }); +} + +export function GetMemberView(params) { + return http.request({ + url: '/member/view', + method: 'GET', + params, + }); +} + +export function AddMemberBalance(params) { + return http.request({ + url: '/member/addBalance', + method: 'POST', + params, + }); +} + +export function AddMemberIntegral(params) { + return http.request({ + url: '/member/addIntegral', + method: 'POST', + params, + }); +} diff --git a/web/src/api/pay/refund.ts b/web/src/api/pay/refund.ts new file mode 100644 index 0000000..b11c8a6 --- /dev/null +++ b/web/src/api/pay/refund.ts @@ -0,0 +1,15 @@ +import { http, jumpExport } from '@/utils/http/axios'; + +// 获取交易退款列表 +export function List(params) { + return http.request({ + url: '/payRefund/list', + method: 'get', + params, + }); +} + +// 导出交易退款 +export function Export(params) { + jumpExport('/payRefund/export', params); +} diff --git a/web/src/api/serveLicense/index.ts b/web/src/api/serveLicense/index.ts new file mode 100644 index 0000000..63f7351 --- /dev/null +++ b/web/src/api/serveLicense/index.ts @@ -0,0 +1,60 @@ +import { http, jumpExport } from '@/utils/http/axios'; + +// 获取服务许可证列表 +export function List(params) { + return http.request({ + url: '/serveLicense/list', + method: 'get', + params, + }); +} + +// 删除/批量删除服务许可证 +export function Delete(params) { + return http.request({ + url: '/serveLicense/delete', + method: 'POST', + params, + }); +} + +// 添加/编辑服务许可证 +export function Edit(params) { + return http.request({ + url: '/serveLicense/edit', + method: 'POST', + params, + }); +} + +// 修改服务许可证状态 +export function Status(params) { + return http.request({ + url: '/serveLicense/status', + method: 'POST', + params, + }); +} + +// 获取服务许可证指定详情 +export function View(params) { + return http.request({ + url: '/serveLicense/view', + method: 'GET', + params, + }); +} + +// 分配服务许可证路由 +export function AssignRouter(params) { + return http.request({ + url: '/serveLicense/assignRouter', + method: 'POST', + params, + }); +} + +// 导出服务许可证 +export function Export(params) { + jumpExport('/serveLicense/export', params); +} diff --git a/web/src/api/serveLog/index.ts b/web/src/api/serveLog/index.ts new file mode 100644 index 0000000..7b3c4fe --- /dev/null +++ b/web/src/api/serveLog/index.ts @@ -0,0 +1,33 @@ +import { http, jumpExport } from '@/utils/http/axios'; + +// 获取服务日志列表 +export function List(params) { + return http.request({ + url: '/serveLog/list', + method: 'get', + params, + }); +} + +// 删除/批量删除服务日志 +export function Delete(params) { + return http.request({ + url: '/serveLog/delete', + method: 'POST', + params, + }); +} + +// 获取服务日志指定详情 +export function View(params) { + return http.request({ + url: '/serveLog/view', + method: 'GET', + params, + }); +} + +// 导出服务日志 +export function Export(params) { + jumpExport('/serveLog/export', params); +} diff --git a/web/src/api/sys/blacklist.ts b/web/src/api/sys/blacklist.ts new file mode 100644 index 0000000..b8250f7 --- /dev/null +++ b/web/src/api/sys/blacklist.ts @@ -0,0 +1,41 @@ +import { http } from '@/utils/http/axios'; + +export function List(params) { + return http.request({ + url: '/blacklist/list', + method: 'get', + params, + }); +} + +export function Delete(params) { + return http.request({ + url: '/blacklist/delete', + method: 'POST', + params, + }); +} + +export function Edit(params) { + return http.request({ + url: '/blacklist/edit', + method: 'POST', + params, + }); +} + +export function Status(params) { + return http.request({ + url: '/blacklist/status', + method: 'POST', + params, + }); +} + +export function View(params) { + return http.request({ + url: '/blacklist/view', + method: 'GET', + params, + }); +} diff --git a/web/src/api/sys/config.ts b/web/src/api/sys/config.ts new file mode 100644 index 0000000..4bbbdbc --- /dev/null +++ b/web/src/api/sys/config.ts @@ -0,0 +1,46 @@ +import { http } from '@/utils/http/axios'; + +export function getConfig(params) { + return http.request({ + url: '/config/get', + method: 'get', + params, + }); +} +export function updateConfig(params) { + return http.request({ + url: '/config/update', + method: 'post', + params, + }); +} + +export function TypeSelect() { + return http.request({ + url: '/config/typeSelect', + method: 'get', + }); +} + +export function sendTestEmail(params) { + return http.request({ + url: '/ems/sendTest', + method: 'post', + params, + }); +} + +export function sendTestSms(params) { + return http.request({ + url: '/sms/sendTest', + method: 'post', + params, + }); +} + +export function getCashConfig() { + return http.request({ + url: '/config/getCash', + method: 'get', + }); +} diff --git a/web/src/api/sys/cron.ts b/web/src/api/sys/cron.ts new file mode 100644 index 0000000..6a8fd9a --- /dev/null +++ b/web/src/api/sys/cron.ts @@ -0,0 +1,105 @@ +import { http } from '@/utils/http/axios'; + +export function List(params) { + return http.request({ + url: '/cron/list', + method: 'get', + params, + }); +} + +export function Delete(params) { + return http.request({ + url: '/cron/delete', + method: 'POST', + params, + }); +} + +export function Edit(params) { + return http.request({ + url: '/cron/edit', + method: 'POST', + params, + }); +} + +export function Status(params) { + return http.request({ + url: '/cron/status', + method: 'POST', + params, + }); +} + +export function View(params) { + return http.request({ + url: '/cron/view', + method: 'GET', + params, + }); +} + +export function GroupList(params) { + return http.request({ + url: '/cronGroup/list', + method: 'get', + params, + }); +} + +export function GroupDelete(params) { + return http.request({ + url: '/cronGroup/delete', + method: 'POST', + params, + }); +} + +export function GroupEdit(params) { + return http.request({ + url: '/cronGroup/edit', + method: 'POST', + params, + }); +} + +export function GroupStatus(params) { + return http.request({ + url: '/cronGroup/status', + method: 'POST', + params, + }); +} + +export function GroupView(params) { + return http.request({ + url: '/cronGroup/view', + method: 'GET', + params, + }); +} + +export function getSelect(params) { + return http.request({ + url: '/cronGroup/select', + method: 'GET', + params, + }); +} + +export function OnlineExec(params) { + return http.request({ + url: '/cron/onlineExec', + method: 'POST', + params, + }); +} + +export function DispatchLog(params) { + return http.request({ + url: '/cron/dispatchLog', + method: 'POST', + params, + }); +} diff --git a/web/src/api/system/menu.ts b/web/src/api/system/menu.ts new file mode 100644 index 0000000..9ac9bc9 --- /dev/null +++ b/web/src/api/system/menu.ts @@ -0,0 +1,40 @@ +import { http } from '@/utils/http/axios'; +import { ApiEnum } from '@/enums/apiEnum'; + +/** + * @description: 根据用户id获取用户菜单 + */ +export function adminMenus() { + return http.request({ + url: ApiEnum.RoleDynamic, + method: 'GET', + }); +} + +/** + * 获取tree菜单列表 + * @param params + */ +export function getMenuList(params?) { + return http.request({ + url: '/menu/list', + method: 'GET', + params, + }); +} + +export function EditMenu(params?) { + return http.request({ + url: '/menu/edit', + method: 'POST', + params, + }); +} + +export function DeleteMenu(params?) { + return http.request({ + url: '/menu/delete', + method: 'POST', + params, + }); +} diff --git a/web/src/api/system/role.ts b/web/src/api/system/role.ts new file mode 100644 index 0000000..e94966a --- /dev/null +++ b/web/src/api/system/role.ts @@ -0,0 +1,64 @@ +import { http } from '@/utils/http/axios'; + +/** + * @description: 角色列表 + */ +export function getRoleList(params) { + return http.request({ + url: '/role/list', + method: 'GET', + params, + }); +} + +export function getRoleOption() { + const params = { pageSize: 100 }; + return getRoleList(params); +} + +export function Edit(params) { + return http.request({ + url: '/role/edit', + method: 'POST', + params, + }); +} + +export function Delete(params) { + return http.request({ + url: '/role/delete', + method: 'POST', + params, + }); +} + +export function UpdatePermissions(params) { + return http.request({ + url: '/role/updatePermissions', + method: 'POST', + params, + }); +} + +export function GetPermissions(params) { + return http.request({ + url: '/role/getPermissions', + method: 'GET', + params, + }); +} + +export function DataScopeSelect() { + return http.request({ + url: '/role/dataScope/select', + method: 'GET', + }); +} + +export function DataScopeEdit(params) { + return http.request({ + url: '/role/dataScope/edit', + method: 'POST', + params, + }); +} diff --git a/web/src/api/system/user.ts b/web/src/api/system/user.ts new file mode 100644 index 0000000..d26c176 --- /dev/null +++ b/web/src/api/system/user.ts @@ -0,0 +1,183 @@ +import { http } from '@/utils/http/axios'; +import { ApiEnum } from '@/enums/apiEnum'; + +export interface BasicResponseModel { + code: number; + message: string; + data: T; +} + +export interface BasicPageParams { + pageNumber: number; + pageSize: number; + total: number; +} + +export function getConfig() { + return http.request({ + url: ApiEnum.SiteConfig, + method: 'get', + headers: { hostname: location.hostname }, + }); +} + +/** + * @description: 获取用户信息 + */ +export function getUserInfo() { + return http.request({ + url: ApiEnum.MemberInfo, + method: 'get', + }); +} + +export function updateMemberProfile(params) { + return http.request({ + url: '/member/updateProfile', + method: 'post', + params, + }); +} + +export function updateMemberPwd(params) { + return http.request({ + url: '/member/updatePwd', + method: 'post', + params, + }); +} + +export function updateMemberMobile(params) { + return http.request({ + url: '/member/updateMobile', + method: 'post', + params, + }); +} + +export function updateMemberEmail(params) { + return http.request({ + url: '/member/updateEmail', + method: 'post', + params, + }); +} + +export function SendBindEmail() { + return http.request({ + url: '/ems/sendBind', + method: 'post', + }); +} + +export function SendBindSms() { + return http.request({ + url: '/sms/sendBind', + method: 'post', + }); +} + +export function SendSms(params) { + return http.request({ + url: '/sms/send', + method: 'post', + params, + }); +} + +export function updateMemberCash(params) { + return http.request({ + url: '/member/updateCash', + method: 'post', + params, + }); +} + +/** + * @description: 用户登录配置 + */ +export function getLoginConfig() { + return http.request({ + url: ApiEnum.SiteLoginConfig, + method: 'get', + }); +} + +/** + * @description: 用户注册 + */ +export function register(params) { + return http.request( + { + url: ApiEnum.SiteRegister, + method: 'POST', + params, + }, + { + isTransformResponse: false, + } + ); +} + +/** + * @description: 用户登录 + */ +export function login(params) { + return http.request( + { + url: ApiEnum.SiteAccountLogin, + method: 'POST', + params, + }, + { + isTransformResponse: false, + } + ); +} + +/** + * @description: 手机号登录 + */ +export function mobileLogin(params) { + return http.request( + { + url: ApiEnum.SiteMobileLogin, + method: 'POST', + params, + }, + { + isTransformResponse: false, + } + ); +} + +/** + * @description: 用户注销 + */ +export function logout() { + return http.request( + { + url: ApiEnum.SiteLogout, + method: 'POST', + }, + { + isTransformResponse: false, + } + ); +} + +/** + * @description: 用户修改密码 + */ +export function changePassword(params, uid) { + return http.request( + { + url: `/user/u${uid}/changepw`, + method: 'POST', + params, + }, + { + isTransformResponse: false, + } + ); +} diff --git a/web/src/api/testCategory/index.ts b/web/src/api/testCategory/index.ts new file mode 100644 index 0000000..5971a48 --- /dev/null +++ b/web/src/api/testCategory/index.ts @@ -0,0 +1,54 @@ +import { http, jumpExport } from '@/utils/http/axios'; + +// 获取测试分类列表 +export function List(params) { + return http.request({ + url: '/testCategory/list', + method: 'get', + params, + }); +} + +// 删除/批量删除测试分类 +export function Delete(params) { + return http.request({ + url: '/testCategory/delete', + method: 'POST', + params, + }); +} + +// 添加/编辑测试分类 +export function Edit(params) { + return http.request({ + url: '/testCategory/edit', + method: 'POST', + params, + }); +} + +// 修改测试分类状态 +export function Status(params) { + return http.request({ + url: '/testCategory/status', + method: 'POST', + params, + }); +} + +// 获取测试分类指定详情 +export function View(params) { + return http.request({ + url: '/testCategory/view', + method: 'GET', + params, + }); +} + +// 获取测试分类最大排序 +export function MaxSort() { + return http.request({ + url: '/testCategory/maxSort', + method: 'GET', + }); +} \ No newline at end of file diff --git a/web/src/assets/icons/login.svg b/web/src/assets/icons/login.svg new file mode 100644 index 0000000..2490aa7 --- /dev/null +++ b/web/src/assets/icons/login.svg @@ -0,0 +1,127 @@ + + + Group 21 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +